Stub detectado cambiando offset Entrypoint

Iniciado por Don_K, 23 Mayo 2012, 13:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Don_K

Buenas, tras estar intentando indetectar durante un buen tiempo un stub de un crypter, sencillamente porque me aburria e intentaba aplicar lo que habia aprendido hacia un tiempo... pues consegui que un stub al final solo lo detectara el Bitdefender (de todos los AVirus que hay famosos) al hacer ciertos metodos para sacar la offset que detectaba me di cuenta de que solo era una... estaba en el Entrypoint....
Cambie el entrypoint de lado y le puse un jump  a esa parte... y tambien sin el JMP pero cambiando desde LordPe el Entrypoint... de ninguna de las dos formas lo conseguia hacer indetectable...
Con los mismos metodos de sacar las offsets conseguia detectar que otra vez habia alertado el AVirus por la offset del EntryPoint....
En ultima instancia le puse en vez de JMP a la parte primera del EntryPoint un JE que saltaba, en ese caso, siempre.... pero sin ningun resultado.

Como es posible que cambiando el Entrypoint de lugar, metiendole un JMP o un JE/JNZ me siga alertando por el mismo offset donde esta el Entrypoint?


Muchas gracias por leerlo, sino ha quedado muy claro puedo subir un video a Youtube de como lo hago... 
:huh:

apuromafo CLS

pues digamos que puedes agregar una nueva sección con topo (es una herramienta que agrega una sección llena de ceros), luego le das un jmp al lugar lleno de ceros y luego buscar
pero el tema de inmunizar algo no es solo por su entrypoint, aveces van varias cosas:
1) dlls que carga
2) sectores donde el codigo realmente es la rutina
3) accesos de memoria donde escribe y es detectado
4) presion indirecta de estar mirando algo
5)md5 de la muestra o de las secciones

existen cosas asi aun, es mas normalmente en mi pc esta todo unpacked , pillar algo empacado es sinonimo de troyano o virus(pero no ha pasado en mas de 4 años) asi que por mi lado estoy tranquilo con el tema de troyanos
alguna vez pase por aqui mirando si desempacaba algunos troyanos, que estaban infectados (posiblemente a propósito)
digamos que un salto corto necesita 2 bytes
eb +lugar en 2 bytes
pero el de mas largo..
para cambiar el entrypoint de una aplicacion solo necesitas saber la direccion y restarle la imagebase  y conocer bien que tipo de stub realmente usas

si no quieres hacer jmp puedes cambiar como
push lugar
ret
tambien funcionará como salto

si sabes mas de registros, puedes intentar cosas un poco mas movidas como

mov esi,lugardestino
jmp esi
tools existen , aun mas, los packers suelen intentar cambiar todos los entrypoint a su stub...asi que porque no podras?

Don_K

Cita de: apuromafo en 23 Mayo 2012, 15:57 PM
pues digamos que puedes agregar una nueva sección con topo (es una herramienta que agrega una sección llena de ceros), luego le das un jmp al lugar lleno de ceros y luego buscar

siep, eso ya lo hice, de hecho intente primero hacerlo sin agregar mas bytes... pero me lo detectaba, y luego agregandole mas bytes pues lo mismo... me detectaba el offset donde lo habia puesto el Entrypoint... solo ese.


Cita de: apuromafo en 23 Mayo 2012, 15:57 PM
pero el tema de inmunizar algo no es solo por su entrypoint, aveces van varias cosas:
1) dlls que carga
2) sectores donde el codigo realmente es la rutina
3) accesos de memoria donde escribe y es detectado
4) presion indirecta de estar mirando algo
5)md5 de la muestra o de las secciones

Efectivamente, pero a mi me alertaba todo el rato en el Entrypoint aunque lo cambiase.
Pero tengo unas dudas sobre eso:
2) sectores donde el codigo es la rutina? no entiendo :O
5) md5 de las secciones? el md5 que cogen no es el del archivo entero? :O


Cita de: apuromafo en 23 Mayo 2012, 15:57 PM
para cambiar el entrypoint de una aplicacion solo necesitas saber la direccion y restarle la imagebase  y conocer bien que tipo de stub realmente usas

Tenia en cuenta lo de sacar el Entrypoint.. pero a que te refieres con "conocer el tipo de stub que uso"?  De hecho ahora mismo no lo estoy probando con un Stub (no se porque puse eso en el titulo, supongo que para relacionarlo de alguna forma), sino con el Crypter en si, el que hace uso del Stub para cifrar el archivo que le metas... y claro, he conseguido quitar la firma del Bitdefender del Stub pero al no conseguir quitar la firma que es detectada en el Cliente.... pues lo que cifro me sale detectado por Bitdefender debido a este... (pero no se supone que el cliente no tiene nada que ver con el archivo ya una vez cifrado?)

Cita de: apuromafo en 23 Mayo 2012, 15:57 PM
si no quieres hacer jmp puedes cambiar como
push lugar
ret
tambien funcionará como salto

si sabes mas de registros, puedes intentar cosas un poco mas movidas como

mov esi,lugardestino
jmp esi
tools existen , aun mas, los packers suelen intentar cambiar todos los entrypoint a su stub...asi que porque no podras?
mmm... pues habia pensado en intentar poner otra instruccion que no fuese un JMP o un JE/JNZ... pero al no tener muy clara la razon por la que me detectaba siempre el Entrypoint, preferi no gastar tiempo tontamente.
Ademas, no se porque me detecta el offset del Entrypoint... ahi solo ha una llamada de las que hay en VB al principio. Es decir, porque me detecta ese Entrypoint y no el de otro archivo en VB que tambien lo tiene? :S

Muchas gracias Apuromafo :)