Análisis Dinámico Spy-Net

Iniciado por Muppet, Enero 06, 2015, 11:38:38 PM

Tema anterior - Siguiente tema

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

Enero 06, 2015, 11:38:38 PM Ultima modificación: Enero 06, 2015, 11:47:29 PM por hdbreaker
Análisis Dinámico Spy-Net


Continuando con el post Anterior:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Voy a realizar el Análisis Dinámico de la Infección, para los que no recuerden el escenario es el siguiente:

La victima ejecuta un binario de Spy-Net que prometía ser un juego en su pc, este no nota nada inusual nisiquiera una ventana de instalación en su pc,intenta nuevamente la ejecución pero nuevamente nada sucede y antes de decidirse a borrar el archivo se pregunta, estaré siendo victima de un malware... La diferencia radica que esta vez realizaremos un Análisis Dinámico, para identificar el Agresor y desinfectarnos exitosamente...

Los Datos Recopilados con el Análisis Estático fueron los siguientes:

Troyano: Spy-Net

Registros de Autoinicio:
"Software\Microsoft\Windows\CurrentVersion\Run"
"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run"

Ubicación del Malware: C:\Windows\EIS\update.exe
Rutas de Configuracion MSConfig:
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupfolder"
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg"

Espectativas: Lograr identificar host y puerto donde se conecta el malware, obtener credenciales necesarias para entrar al panel y de existir, obtener las credenciales asociadas a la recopilación de logs.


Primero usaremos Process Monitor para identificar los nuevos procesos que se general al ejecutar el Malware:


Como podemos apreciar en la imagen, al ejecutar Juego.exe tambien podemos apreciar que aparece en ejecución el proceso update.exe
si vemos la ruta de su ejecución podemos apreciar su dirección de destino:

"C:\Windows\EIS\update.exe" (La misma que encontramos con nuestro Análisis Estático)

Ya con esta información, cerramos Process Monitor, abrimos Process Explorer y ejecutamos nuevamente el Juego.exe:


Luego de algunos intentos (ya que el proceso se cierra para ocultarse del análisis) logramos ingresar a sus propiedades.
Al Analizar las mismas no notamos nada extraño.

La pregunta ahora es, que hace "C:\Windows\EIS\update.exe", asi que vamos hacia la dirección ejecutamos el binario y volvemos
a analizar con Process Explorer:


Podemos ver que update.exe tiene una ruta de AutoStart:
"HKLM\Software\Microsoft\Windows\CurrentVersion\Run\HKLM"

Entonces procedemos a ejecutar CurrPorts para ver si el malware esta realizando algun tipo de conexión hacia el exterior:


En este apartado podemos notar muy claramente que hay una conexión hacia el host remoto 181.23.131.19 en el puerto 9667
pero para nuestra sorpresa notamos que el proceso que realiza la conexión es "Explorer.EXE" y no "Juego.exe" o "update.exe" como esperábamos. Podemos deducir que el Malware migra intentando ocultarse hacia el Proceso Explorer.EXE

En este punto se presenta la duda... ¿Podre capturar el trafico que realiza mi pc hacia el host remoto? ¿Podre obtener las credenciales para validar el malware? ¿Enviara logs a algun dominio, podre obtener sus credenciales?

Nos ponemos manos a la obra, e iniciamos Wireshark:
En este paso vamos a realizar algo importante, primero vamos a apagar la maquina Victima, en ese momento iniciaremos Wireshark y aplicaremos el siguiente filtro:

"ip.dst==181.23.131.19 && tcp.port==9667"

Luego volveremos a iniciar la pc Victima.
Esto nos permitirá capturar desde la primer conexión que realice el Troyano al host 181.23.131.19:9667 y con un poco de suerte capturaremos las credenciales para validarnos posteriormente


Luego de Analizar algunos paquetes, llegamos a la conclusión obvia, de que la comunicación viaja codificada con un cifrado que no logramos reconocer, luego de pensar un poco y sacar mis propias hipótesis bajo mis propios desarrollos de Malware y Crypters, llego a la pregunta:

¿En algún momento, el código encriptado se desencripta...? La respuesta es SI

Pequeña reseña de como funciona un Malware Encriptado (Crypter):

"Un Malware Encriptado es la unión de 2 programas, el Stub y el Malware Encriptado. El stub se encarga de leerse a el mismo buscando un delimitador que le indique que apartir de ese byte todo lo que sigue es el malware Encriptado cargado en memoria, lo desencripta completamente al finalizar OBTIENE UNA VERSIÓN LIMPIA, DESENCRIPTADA Y DESOFUSCADA DEL MALWARE, que luego envía hacia el RUNPE que se encarga de inyectar el codigo en memoria (String) dentro de un proceso (por ej notepad.exe) que inicia suspendido, una vez la inyección termina con éxito reactiva el proceso (notepad.exe) que realmente ejecuta el codigo inyectado de nuestro malware"

OBTIENE UNA VERSIÓN LIMPIA, DESENCRIPTADA Y DESOFUSCADA DEL MALWARE... Joder es el momento ideal para analizar las conexiones que realiza el troyano.

La pregunta ahora es... ¿Donde obtengo esa versión limpia? y la respuesta es DESDE LA MEMORIA RAM!!!

Con la ayuda de nuestro amigo DumpIT (un programa que permite volcar la memoria RAM a un archivo hexadecimal) volcaremos
la memoria de nuestra Victima para analizar sus Strings Completamente Desencriptados...

Acá existe un punto que aclarar, un volcado de memoria resulta ser bastante sucio ya que vuelca todo lo que este residente en RAM, eso involucra a todos los programas que no son nuestro malware y que estarán complicando nuestro Análisis, una recomendación es reiniciar la pc antes de realizar el volcado, con el fin de liberar la RAM de toda basura que haya quedado residente en memoria. Ademas mientras mayor sea nuestra cantidad de RAM mayor sera el tamaño del fichero de volcado, por lo que si es posible reducir la memoria lo mas que se pueda, en mi caso reduje la memoria de 1 GB a 256 mb para obtener un resultado mas pulcro


Luego de esto abrimos con nuestro editor hexadecimal favorito el archivo .raw que creo DumpIT, como les dije el resultado sera algo bastante sucio y complicado de leer, por el principio de como funciona la RAM y la MEMORY REALOCATION que se encarga de "desfragmentar" la memoria en tiempo real casi como si fuera el garbage colector de JAVA con el fin de liberar memoria q no se este utilizando, y puedo enviar hacia donde mejor considere partes del codigo que queremos analizar, ya que internamente el STACK siempre mantiene un puntero que entrelaza todas las direcciones de memoria que organizan el binario en ejecución. Pero gracias a la opción "SEARCH" podemos buscar Strings por medio de todo el volcado.

La pregunta que nace es... ¿Qué buscamos? y para responder esto debemos pensar QUE SABEMOS

Lo que sabemos:

Nombres de los binarios infectados:
update.exe
Juego.exe
explorer.exe

Troyano: Spy-Net
Probablemente utilice algun servicio de refresco automatico de ip:
no-ip, dyndns, ddns, etc

Claves del Registro:
"HKLM\Software\Microsoft\Windows\CurrentVersion\Run\HKLM"
"Software\Microsoft\Windows\CurrentVersion\Run"
"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run"

Utilicemos esta información para buscar sobre el volcado de memoria, con un poco de paciencia y arduo Análisis llegamos al siguiente resultado:


En este momento podemos estallar de alegría, ya que hemos obtenido información muy importante

Informacion Obtenida:

El Malware se conecta a 2 host distintos
Una posible contraseña de autentificación del Malware
Un servicio ftp con Usuario y Contraseña (Probablemente donde se guarden los logs del keyloger)

Una visita al ftp revela que hemos dado con el registro de logs del atacante, lo que basicamente significa que hemos obtenido lo mas importante de una botnet, todos los datos tipeados por las victimas (Usuarios, Contraseñas, CreditCards, HomeBanking, etc)


Desinfección:

En este paso nos haremos de la mano de Apate DNS, un Servidor DNS que nos permite redireccionar todo el trafico saliente hacia una dirección IP especifica, en nuestro caso nuestro "127.0.0.1" (No hay lugar como el hogar)


Luego de esto abrimos Spy-Net y configuramos el cliente con los datos que hemos obtenido

Puertos: 9667 y 5992
Pass: XXXXXX

y esperamos la conexión, en caso de que esta no se realice con exito antes de cuestionar la validez de la password, abrir CurrPorts, y cerrar las conexiónes establecidas por el rat para que este reconecte.


Desinstalamos el Malware de nuestra maquina, y ahora podemos dar caza al Atacante (robar o borrar sus logs y averiguar un poco mas de el)
para esto realizamos un ping para saber si alguno de los host isAlive:


El host esta activo realizamos un pequeño whois:


Vemos que el ISP que sirve esa dirección es Telefonica, ahora simplemente podemos llamar al ISP pedir junto con una denuncia la pc que estuvo ocupando ese ip por este periodo de tiempo, y asi poder llevar a la cárcel al dueño de esta botnet.

O... podemos indagar un poco mas con NMAP


Como podemos ver el atacante tiene varios servicios levantados, ahora toca buscar alguna vulnerabilidad en su sistema, adueñarse de su botnet y devolverle el favor de la infección. ¿Cual fue mi decisión....? Lo dejo a su imaginación ;)

Happy Hunting :)




Entonces él dijo, "cruzad con vuestras tropas y atacad porque es lo único que le queda a nuestro pueblo...".

Excelente! Como siempre, se aprende mucho de tus aportes hdbreaker!

Muchas gracias por compartir!

Saludos!
WhiZ


Muy bueno!

Un comando que a mi me sirve y es rápido a la hora de detectar que archivo exe esta haciendo una conexión afuera es netstat con el parametro -b (que indica el nombre del exe, de modo que lo puedas rastrear rapido) y no es necesario usar programas.

netstat -b

:)

Saludos!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Muy bueno!

Un comando que a mi me sirve y es rápido a la hora de detectar que archivo exe esta haciendo una conexión afuera es netstat con el parametro -b (que indica el nombre del exe, de modo que lo puedas rastrear rapido) y no es necesario usar programas.

netstat -b

:)

Saludos!

Exelente lo voy a probar, no suelo conocer esos trucos ya que no me despego de mi linux y hay variaciones especificas de los comandos entre linux y windows q no conozco!

Entonces él dijo, "cruzad con vuestras tropas y atacad porque es lo único que le queda a nuestro pueblo...".

Sí, yo siempre lo uso así:
Código: batch
netstat -bano


    - b: para ver el ejecutable que ha realizado la conexión

    - a: para ver las conexiones tcp y udp (muestra los puertos, incluso los q están en escucha)

    -n: tmb para ver los puertos

    - o: para ver el pid

En Linux se puede hacer algo similar con el siguiente comando:
Código: bash
netstat -pale


Saludos!
WhiZ


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Sí, yo siempre lo uso así:
Código: batch
netstat -bano


    - b: para ver el ejecutable que ha realizado la conexión

    - a: para ver las conexiones tcp y udp (muestra los puertos, incluso los q están en escucha)

    -n: tmb para ver los puertos

    - o: para ver el pid

En Linux se puede hacer algo similar con el siguiente comando:
Código: bash
netstat -pale


Saludos!
WhiZ

en linux utilizo nestat -natupd

Entonces él dijo, "cruzad con vuestras tropas y atacad porque es lo único que le queda a nuestro pueblo...".

Gran post! mejor explicado imposible.

Entiendo que esto seria aplicable a cualquier troyano no?
Si es así, ¿cualquiera que distribuya su server estaría expuesto a ser detectado no? es decir: el cazador cazado.

¿alguna forma de evitar o complicar este metodo? por ejemplo usando proxys.. o algun otro mecanismo?