Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Borito30

#461
Foro Libre / Re: Ayuda. Me han estafado
26 Noviembre 2016, 22:41 PM
a mi tmb me estafaron te acompaño en el sentimiento :-[
#462
Programación General / Re: inyeccion dll c++ ayuda
26 Noviembre 2016, 20:08 PM
Cita de: MCKSys Argentina en 26 Noviembre 2016, 19:36 PM
Mirándolo muy por encima parece que hace lo correcto. En qué parte te da error?

Saludos!

Estos son:


Pienso que será porque me faltará alguna librería. Creo.
Perdona que no sabía poner la imagen!
#463
Programación General / inyeccion dll c++ ayuda
26 Noviembre 2016, 19:28 PM
Hola estoy intentando hacer un programita básico para inyectar en dll pero me da algunos errores el código es el siguiente:
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>

void error(char *err);

HANDLE myProc = NULL;

int main(int argc, char *argv[])
{
HANDLE processList = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pInfo;
BOOL st = TRUE;
pInfo.dwSize = sizeof(PROCESSENTRY32);
Process32First(processList, &pInfo);
int myPid = 0;
do
{
if (strcmp(pInfo.szExeFile, "test.exe") == 0)
{
myPid = pInfo.th32ProcessID;
break;
}
Process32Next(processList, &pInfo);
} while (st != FALSE);

// Abrir el proceso
printf("[+] Opening process %i\n", myPid);
myProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, myPid);
if (myProc == NULL) error("[-] Error abriendo proceso.\n");
else printf("[+] Proceso abierto.\n");

// Reservar memoria para el argumento (ruta de la DLL)
char thData[] = "dll.dll";
LPVOID dirToArg = VirtualAllocEx(myProc, NULL, strlen(thData), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (dirToArg == NULL)
error("[-] Error reservando memoria para argumento.\n");
else
printf("[+] Memoria reservada para argumento (%i bytes).\n", strlen(thData));
// Escribir la ruta de la DLL en la memoria reservada
SIZE_T written = 0;
if (WriteProcessMemory(myProc, dirToArg, (LPVOID)&thData, strlen(thData), &written) == 0)
error("[-] Error escribiendo memoria.\n");
else
printf("[+] Memoria escrita (arg %i bytes).\n", written);

// Lanzar un hilo con LoadLibrary
HANDLE rThread = CreateRemoteThread(myProc, NULL, 0,
(LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("Kernel32.dll"), "LoadLibraryA"),
dirToArg, 0, NULL);
if (rThread == NULL)
error("[-] Error creando el hilo.\n");
else printf("[+] Hilo creado.\n");

CloseHandle(myProc);
}

void error(char *err)
{
if (myProc != NULL) CloseHandle(myProc);
printf("%s", err);
exit(0);
}


Lo que estoy intentando es hacer un inyector que inyecte una dll y aqui donde esta la chica que busque por el proceso dado su nombre. Si alguien tiene un ejemplo mejor. En este caso lo extraí de otro sitio y por lo que parece el que lo hizo no sabía ni lo que hacia. Entonces si tienen un ejemplo sencillito para entenderlo en python es facil pero en c++ no consigo hacer ninguno en condiciones.

Fuente: https://blog.ka0labs.net/post/8/
#464
Ocultación de malware a traves del Registro de windows

Últimamente se ha vuelto común ver ocultar el malware en el registro de Windows ¿Por qué el registro de Windows? El registro de Windows es bastante grande, lo que significa que hay muchos lugares en los que el malware puede insertarse para lograr la persistencia. Un buen ejemplo de este comportamiento es Poweliks.
Poweliks establece una entrada nula de uno de las API de Windows, ZwSetValueKey, lo que le permite crear una clave de registro con datos codificados. La API de Windows permite una entrada nula. Esta es una de las muchas maneras en que el malware puede utilizar el registro de Windows para esconderse, arranque automático, y mantener la persistencia en muchos sistemas.


Proceso de inyección

El Proceso de inyección es exactamente lo que suena. Se está inyectando algunos trozos de código en un proceso en ejecución. El malware aprovecha las técnicas de inyección de proceso para ocultar la ejecución de código y evitar ser detectados mediante la utilización de procedimientos conocidos como svchost.exe o explorer.exe. Al inyectar en los procesos buenos conocidos. Uno es el establecimiento de depuración. Cuando un proceso de depuración establece, gana acceso a muchas de las llamadas a la API de depuración, tales como la instalación en otros procesos e instruir a ese proceso para asignar memoria adicional.
Después del proceso se asigna más memoria, el proceso malicioso puede inyectar cualquier código que se desea en ese proceso.
Un ejemplo de malware que utiliza el Proceso de inyección es Poison Ivy. El proceso de inyección de Poison Ivy es muy conocido, pero también como se utiliza en muchas campañas, y lo hace de forma ligeramente diferente a la norma. Cuando el malware asigna un trozo de memoria, normalmente la cantidad de memoria es "contiguo", por lo que al final de un bloque de memoria, se asignará otro bloque de memoria e inyectar código allí. Poison Ivy hace lo que llamamos "sharding." Así que en lugar de tener un bloque de memoria gigante, que tiene un montón de pequeños bloques de memoria divide todo el proceso y, a veces en varios procesos. Esto hace que el análisis de Poison Ivy sea más dificl y revertir la ingeniería es mas complicado y más largo. Los creadores de malware prestan atención a las técnicas que utilizan los investigadores de seguridad y están tratando de reducir la velocidad.


Proceso Hollowing

Otra técnica relacionada con el proceso de inyección es Proceso Hollowing. "Vaciamiento" de un proceso es cuando se toma un buen proceso conocido y lo inicia en un estado suspendido. Cuando se carga el código e ir a ejecutar, de modo que hay un espacio disponible donde los malos pueden colocar cualquier código que les gusta su interior y tal vez cambiar algunas cabeceras de la parte superior e inferior para hacer que todo parezca bien y luego reiniciar el proceso. Así que, que este proceso se ve como un proceso normal del sistema iniciado por Windows. Por lo tanto, es más difícil para los ingenieros detectar y realizar el análisis forense de memoria.
Dridex es un muy buen ejemplo de una familia de malware que utiliza a menudo el proceso Hollowing.

Desvinculación lista de procesos

Desvinculación lista de procesos es otro concepto clave. Un proceso es algo que se está ejecutando en el equipo, ya sea en el espacio de usuario o el espacio del núcleo. Lista Desvinculación proceso consiste en una lista doblemente enlazada que contiene todos los procesos "activos". Es importante porque la desvinculación resultará en el proceso que se oculta a todas las herramientas de "activos". Esto se puede hacer usando ZwSystemDebugControl() o por mapeo \Device\PhysicalMemory. Dentro de la lista de procesos es una lista en que cada proceso que se está ejecutando dentro del objeto de proceso es un delantero y un revés en el proceso frente a ella o el proceso detrás de lo que una lista de doble enlace.

Desvinculación Lista DLL

El malware también puede ocultar en la lista de DLL. Una lista de DLL es una biblioteca cargada dinámicamente, y el malware a menudo se disfraza como un archivo DLL. Al igual que un proceso, un DLL tiene una lista de doble vinculado que apunta a la DLL delante y detrás, y al igual que la lista de procesos son las API que pueden ser llamados para volver a escribir la lista de DLL, eliminar esa DLL y acabar con ese poco de memoria para ayudar a ocultar el malware de medicina forense de memoria o desde las herramientas de copia de seguridad. Esto se utiliza mucho en la actividad de rootkit.

Desvinculación Kernel lista de módulos

Los módulos del kernel son el siguiente nivel inferior. Un módulo del núcleo es cualquiera de los módulos que se cargan en el núcleo. Al igual que la lista de DLL y el proceso, los módulos del núcleo tienen su propia lista que se puede consultar con las API y volver cada módulo del kernel que se carga. También hay APIs de depuración que pueden eliminar un módulo de DLL de la lista y vaciarla. Esto es especialmente importante porque a nivel del kernel cuando algo se pone a cero que hace que sea mucho más difícil de encontrar este acceso es como el acceso anillo de cero, sin duda asociado con la actividad de rootkit.
En general, una pieza de malware se ejecutará en el espacio de usuario y luego probar un nivel de kernel exploit kernel para obtener acceso administrativo y luego dejar caer el rootkit principal, que haría a continuación cero a sí misma dentro de la lista de procesos lista de módulos del kernel. En este punto, el malware está muy bien escondido y que será muy difícil de encontrar.

Fuente: http://www.clasesordenador.com/sistemas-ocultacion-malware/index.html

#465
facil si no me equivoco
switch(evaluo){
case 1: cout << "lanza la pelota" <<endl;
case 2: cout << "me hago un selfi" <<endl;
case 3: cout << "ataco un toro" <<endl;
case 4: cout << "pesco en un monte" <<endl;
case 5: cout << "atrapo osos" <<endl;
// sino tengo ni idea de que opcion
default: cout << " haz lo que quieras" << endl;
}

algo así esto es un switch seguramente no es lo que buscas pero bueno.
#466
cual es la condicion, la condiciones es que haya dos enteros no pones ninguna restriccion luego te entrara ya que  no importa el valor de estos dos enteros ahora si le pones una condicion como que uno o ambos tengan un determinado valor puede que no entre
#467
hacker para mí que seguro no es para los demás es una persona que no se cansa de aprender y es curioso le gusta los retos. Digamos de una manera tu ves una moneda tirada en el suelo corriendo vas y la recoges te la llevas a tu casa y te emborrachas pero el hacker
aun sabiendo que puede coger la moneda llevarsela prefiere quedarse esperando a que venga alguien a quitarle la moneda y por mucho que intentes quitarsela es la conservará y al final decidirá si se la llevara o se la devolvera a su dueño.  :rolleyes: gracias mama por educarme a ser un buen hacker  :P
#468
Bueno de momento conozco estas técnicas:

1. cargar un driver con técnicas de rootkit para ocultar el proceso

usar hooks  Ejemplo:
hookear la API encargada de obtener la información del vizor de procesos

Pero no se si para estas cosas uno necesita permisos de administrador etc.

La ultima manera que no sé si sería posible sin ser administrador es:
inyectar en otro proceso, está es buena pero la mayoría de veces uno requiere de permisos de administrador para inyectar un proceso de sistema iniciado por el sistema y de esa manera siempre sea arrancado. Desventaja de la inyección que tienes que indicar si es de 64 o 32... no sé si habra algo para esto pero creo no sé.

Estas técnicas son antiguas y conocidas aunque yo nunca las he probado y no sé si habra otras. Mi pregunta es conocen algun tutorial para ponerlas en práctica¿? Y otra pregunta si conocen alguna técnica nueva gracias.
#469
creare un nuevo post preguntando sobre metodos tradicionales.
#470
supongo que si en mi caso intento con una aplicacion .net se me complica un poco pero bueno no es imposible ;) gracias!