Hoy nos vamos a enfocar en lo mismo , pero cuando no contamos con el source.
Pero antes una pequeña introducción.
Teoria:
¿Que es una libreria dll)?
Es un Archivo, con estructura Pe, en el cual tenemos funciones exportadas.
que podemos usar en los demas programas.
ejemplos de dll: Kernel32.dll, ntdll.dll, user32.dll
¿y las Apis?
son esas funciones exportadas, las mas usadas son las del kernell.dll.
por ejemplo en la mayoria de los Crypters, para inyectar en memoria usamos
Writeprocessmemory.
Un Exe, esta formado , por instrucciones y por llamadas a funciones locales y externas.
para las externas, el Exe cuenta con una estructura, IAT, donde contiene las direcciones
de todas estas funciones externas(estas direcciones cambian de Windows en Windows).
Entonces que Hace la heuristica de un AV
1-Busca Offset
2- si no, busca patrones generales ,como por ejemplo:
a) tiene en la IAT un writeprocessmemory? --> b)
b) es Consola, y ademas invisible? --> c)
c) tiene Resourse o Eof? = Heur.injector o algun nombre asi :P
bien, ahora , que podemos hacer:
destruir la IAT o Sacar todos los "intermodulars calls externos" que sean posibles.
y de donde saco las direcciones de esas funciones?
con 2 Apis
Kernel32.LoadLibraryA
Kernel32.GetProcAddress
LoadlibraryA : pongo como parametro un ASCII por ejemplo 'kernel32.dll'.
y nos devuelve , la direccion al mismo.
GetProcAddress: pongo como parametro , la direccion de lo que cargue en LoadLibrary , y ademas le paso el nombre de la funcion.
****************************************************************************************************
Práctico:
Bueno , vamos a trabajar con un holamundo.exe que compilé.
el cual usa WriteConsoleA, para escribir en la consola el mensaje que yo quiero.
Veamos el Hello original
vemos que en 4050B0 , esta la direccion del WriteConsoleA
entonces ese 4050B0 lo vamos a reemplazar por el lugar donde pongamos nosotros , la direccion del WriteConsoleA, llamando a GetProcAddress,
y no de la IAT.
entonces yo le agregue este codigo.
se preguntaran de donde saque el 405074
bien, si el exe que estamos trabajando no cuenta con LoadlibraryA ni GetProcAddress . las tenemos que agregar a mano.
eso se puede hacer con el LordPe o con el StudPe. es agregar imports.(no me voy a meter con eso ahora, lo añadire luego)
buenos veamos que hace este Code, va primero veamos como se llama a las funciones.
Si yo tengo una función para llamarla en ASM tengo q apilar los datos primero. con la instruccion PUSH
entonces
Código: Seleccionar todo
PUSH hello.00404DFF ; /FileName = "kernel32.dll"
CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar>; \LoadLibraryA
luego el turno del GetProcAddress
Código: Seleccionar todo
MOV EDI,EAX ; el loadlibraryA me devuelve la direccion en EAX, la mando a EDI
PUSH hello.00404E0D ; APILO EL ASCII "WriteConsoleA"
PUSH EDI ; | APILO LO QUE DEVOLVIO LA FUNCION ANTERIOR
CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; \GetProcAddress
y por ultimo
Código: Seleccionar todo
MOV DWORD PTR DS:[404E20],EAX ;pongo la direccion en 404E20
JMP hello.00401061
Atencion , se acuerdan en la priemr imagen que les dije
"vemos que en 4050B0 , esta la direccion del WriteConsoleA"
bueno en vez de 4050B0, ahora tiene que decir 404E20 :)
porq es donde con nuestro codigo, pusimos la direccion de la funcion.
el loadlibrary una vez q la pusimos en EDI, ya queda ahi , osea podemos repetir el GetProcAddress dentro de la misma Dll, las veces que necesitemos.
DESCARGA:
hello.exe (con api en runtime)
hello_or.exe (hello original)
[Enlace externo eliminado para invitados]
Aclaraciones finales:
Este es un metodo algo viejo y clasico ya, existen otras formas de no usar ninguna api, pero eso es algo mas avanzado.
por ahora esto les vendra bien. espero que les sirva y cualquier duda, consulta o critica, sera bienvenida.
La reproducción de este manual , total o parcial debe llevar su fuente. y ni Leos_79 ni indetectables.net
avalan el uso de técnicas o manuales para indetectar programas con el fin de introducirse en Pcs Ajenas
sin el consentimiento del Propietario de la misma.
descarga Video tutorial >>
Enlace roto[Enlace externo eliminado para invitados]
Enlace nuevo (gracias m4rtyr) :[Enlace externo eliminado para invitados]
Leos