Stuxnet - Análisis de malware
En este artículo se va a analizar un volcado de memoria RAM de un equipo infectado por Stuxnet, y para ello se hará uso de la herramienta Volatility.
Stuxnet
Disponemos del volcado de la memoria RAM situado en el archivo stuxnet.vmem.
Sacamos la información del perfil del sistema:
Podemos comprobar que el perfil que estamos analizando pertenece a WinXPSP3x86 y el huso horario es de -0400.
Ahora observamos los procesos activos:
A simple vista no hay nada que llame notablemente la atención. Así que pasamos a analizar las conexiones de red:
Parece que tampoco hay nada por esta parte. Así que vamos a utilizar la funcionalidad malfind de Volatility la cual busca código malicioso dentro de los procesos:
De aquí obtenemos un listado de procesos con contenido detectado como malicioso, que son csrss.exe, services.exe, svchost.exe, explorer.exe y dos procesos de lsass.exe, tanto el 868 como el 1928, aunque este último aparece en más ocasiones. También nos devuelve los correspondientes volcados de memoria, que podemos analizar con el comando file:
Podemos ver que algunos ficheros mencionan UPX compressed, una técnica habitual de empaquetado de malware. Ahora habría que analizar a través de VirusTotal la información obtenida. Por ejemplo, vamos a sacar el MD5 de uno de los volcados qué “file” nos indica que ha sido comprimido con UPX:
Podemos observar que al meter el MD5 en VirusTotal este nos lo detecta como malware en 59 de las 71 herramientas, y muchas de ellas nos informa de que se trata del Stuxnet.
Ahora ya conocemos los procesos implicados. Podemos volver a ver la lista de procesos para analizar por otro camino alguno de estos procesos. Usamos pstree:
Vamos a analizar, por ejemplo, el proceso lsass.exe que ya nos informó el malfind sobre él. El pid del lsass que vamos a analizar es 1928 y su proceso padre es el 668 services.exe, que también fue notificado por malfind.
Lo primero que vamos a hacer es un dlllist sobre ambos procesos:
Lo que más llama la atención es el “command line” del proceso lsass.exe, el cual está entre comillas y la ruta utiliza doble barra vertical en lugar un una barra simple como suele ser lo habitual.
Ahora entramos en los handles de este proceso:
Vemos que cuenta con secciones críticas y zonas de exclusión mutua. También nos fijamos en algunos eventos, como WkssvcShutdownEvent2, y en los múltiples ficheros relacionados que tiene.
Lo siguiente que podemos hacer, por ejemplo, es un filescan buscando ficheros lsass:
De aquí tenemos dos .exe que podemos seleccionar, por lo que le hacemos a uno de ellos un dumpfiles lo cual nos genera un par de archivos, uno img y otro dat:
Le calculamos el MD5:
Y comprobamos qué ocurre en VirusTotal al subir el archivo .img:
Podemos ver que este archivo es detectado como malware por 4 de 68 herramientas.
Otra tarea que podemos realizar es hacer un memdump de este proceso y de su proceso padre:
Ambos procesos podríamos analizarlo con strings, por ejemplo si analizamos el lsass.exe podemos encontrar una línea que parece una consulta en las que incluye un uid (WinCCConnect) y un pwd (2WSXcder):
Pero vamos a sacar los MD5 de cada volcado:
Y comprobar los resultados que nos devuelve VirusTotal:
El proceso lsass.exe es detectado como malware por 2 herramientas (Avast y AVG).
Y exactamente lo mismo ocurre con el proceso padre, el services.exe.
Y para finalizar vamos a sacar la línea temporal de procesos. Para ello sacamos con el Volatility el timeliner, el mftparser y el shellbags. Y posteriormente unimos todo en un único fichero:
Y por último, conociendo el huso horario, podemos hacer uso de mactime y more para ir viendo la información de la línea temporal:
De la cual podríamos filtrar con grep o egrep para buscar información más concreta en la que queramos profundizar.