Hola a tod@s!
Me he topado con esta DLL, que me ha resultado curiosa.
MD5
2821c0f5bbcf792352092815df29c715
SHA-1
98c345cfa1c608b9af94c497aff886522042d0f2
SHA-256
040ed019ca0b3dd06bb8b1bec13d2b591644c81a9ee669a24a3f8236f98bc2b0
Vhash
116056555d15656az41nz1ez1
Authentihash
8002193da29b80a2abe63f08a94f4cee6e1de087018f0003c7716e1c794acea2
Imphash
e16074196d80effb57a5d1cd03830f52
Rich PE header hash
a82c4fb6c132dddff81f74c9eb6330cd
SSDEEP
24576:yojJNxSwRQJEQltmEVRxfX7jf7o6S6jxz2Hx:djdQJEQlTBXHfE6Lo
TLSH
T17F256A4650B457F7CBE979F29F277EB066FAA273990F04C67B80163A0DCCD214909B29
File type
Win32 DLL
Magic
PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
En el comportamiento que muestra la sandbox que se ha utilizado en Virus Total, no se aprecia gran cosa, sin embargo, esconde algo en su interior.
Hablamos de una DLL compilada con Visual Studio 2017.
Tiene una función Export llamada Melon.
Por lo tanto, para poder ejecutar esta DLL con rundll32 habría que hacerlo de la siguiente manera, imaginemos que se llama “test.dll”, como se aprecia en la captura anterior:
> rundll32 test.dll,Melon
Para analizar esta dll podemos hacerlo cargando en nuestro debugger favorito rundll32.exe y pasarle como parámetro “test.dll,Melon” y ya la tendríamos lista para ser analizada.
Pero… vamos a hacerlo de otra manera. Vamos a convertir esa DLL en un EXE funcional. Para ello abrimos la DLL con CFF Explorer.
Y desmarcamos el check que indica que es una DLL.
El siguiente paso es cambiarle el EntryPoint. Si recordáis en el Export, se veía lo necesario para el siguiente cambio:
Necesitamos que cuando el EXE se ejecute, vaya directamente al contenido de Melon, así que tomamos esa dirección 0x17E3 como EntryPoint. Podéis usar cualquier programa de edición de PE, a mí me gusta este, Stud_PE:
Salvamos el fichero y ya estaría listo para ejecutarse como es debido. Si vamos al EntryPoint vemos una cadena grande una serie de operaciones con ella:
Esto se repite a lo largo del programa, necesita colocar todo en su sitio, para cuando llegue el momento hacer uso del contenido.
Ponemos un breakpoint en VirtualAllocy nos fijamos en el tamaño de la shellcode que lleva dentro.
Y además vemos que será código ejecutable, pero aún no sabemos donde estará esa zona. Pulsamos Ctrol+F9 y nos fijamos en el registro EAX, será ahí donde irá finalmente el shellcode.
Ahora mismo está vacío.
Después de unos cuantos F8 y bucles vemos lo siguiente:
Ponemos un Breakpoint en ese punto, ¿Por que? Para que pulsando F9 vayamos directos y ganemos mucho tiempo sin gastar mucho la tecla de F8 (es broma).
Si echamos un vistazo al registro ESI, vemos la shellcode de CobaltStrike lista para ser copiada a otro lugar y ser ejecutada más tarde.
Podemos extraerla ya para ganar tiempo y usar scDbg para ver hacia donde irá para continuar con el proceso de infección, troyanización, etc.
Con un par de F8 más, tendremos ubicada la shellcode en la zona de memoria que habíamos visto anteriormente.
Cuando renombráis la DLL a EXE, puede verse el icono que tiene:
¿Será que les gusta las aves exóticas?
Espero que os haya gustado y nos vemos en el siguiente post!