Actores de amenazas latentes y objetivos con VT
Rastrear actores de malware y objetivos no es una tarea fácil, así que si tienes una cuenta de VirusTotal con capacidades de API privada, te proporcionaré algunos consejos y trucos para configurar tu panel de control. Usaremos la pila ELK, algo de Python y muchas reglas Yara.
Ensúciate las manos con Nutella
Primero, necesitarás escribir algunas reglas Yara para alimentar nuestro sistema, te mostraré algunos ejemplos:
rule new_suspicious
{
condition:
new_file and file_type contains "pe" and positives < 8 and positives > 3
}
Este ejemplo rastreará:
- Nuevas presentaciones (así evitaremos muestras repetidas y aseguraremos frescura)
- Archivos PE
- Con detecciones entre 4 y 7 (así no será muy detectado pero suficiente para evitar muchos FP)
En realidad, podemos optimizar mucho más esta regla para centrarnos en amenazas específicas.
regla mail_es
{
cadenas:
$a = "Para: " nocase ascii wide
$b = ".es" nocase ascii wide
$c = "Asunto: " nocase ascii wide
condición:
nuevo_archivo y tipo_de_archivo contiene "correo electrónico" y @a < @b y @b < @c
}
Este segundo ejemplo es bastante simple, rastrearás:
- Nuevas presentaciones
- Correos electrónicos
- Contiene un dominio .es entre “Para” y “Asunto”
importar requests
url = "https://www.virustotal.com/api/v3/intelligence/hunting_notifications"
params = {'apikey': '<apikey>'}
response = requests.request("GET", url, params=params)
Recibiremos los detalles relacionados con las muestras; necesitaremos usar el parámetro cursor para iterar todas las notificaciones.
"attributes": {
"body": "",
"date": 1553732253,
"subject": "mail_es",
"tags": [
"feed",
"mail_es",
"1245d5d1454ab86f35b1019ee9cd6b6d2aa028d1400e3353305b1a1dc638ad25"
]
}
Obtenemos el hash de las etiquetas para realizar una segunda consulta a VT, para esto es importante que tu clave API permita obtener todos los campos que son interesantes para nosotros.
- source_id
- first_seen
- first_name
¿Qué es el ID de fuente? Si estás familiarizado con VT, te darás cuenta de que en cada informe encontrarás una pestaña de ‘Submissions’. Esta pestaña muestra información sobre cuándo y desde dónde se subió la muestra.
Fecha | Nombre de archivo | Fuente | País |
---|---|---|---|
2019-03-28 06:28:51 | 6700138 | a1a85c39 (api) | US |
2019-03-29,10:35:10 | malware | fa8be158 (web) | UK |
En esta tabla podemos ver que el archivo “6700138” fue subido vía API (también puede ser posible por correo electrónico, web o comunidad) el 2019-03-28 por un usuario ubicado en EE.UU. (o usando una dirección IP de EE.UU.).
Pero, ¿cuál es esa fuente? Bien, esto se está poniendo interesante. VT no quiere guardar la dirección IP de un remitente, pero al mismo tiempo esta atribución es muy interesante para los investigadores, así que VT asigna un id a cada usuario que pueden reconocer como el mismo remitente y lo llaman fuente.
Si tenemos los permisos adecuados, podremos consultar todos estos datos a VT a través de la API, lo que significa que recopilaremos no solo los archivos que coincidan con nuestras reglas Yara, sino también algunos metadatos relacionados con el origen/destino de las muestras de malware.
Hablemos del origen. Los actores avanzados pueden nunca subir las muestras directamente a VT, porque podrían exponer demasiado sus muestras y los motores de AV podrían detectarlas antes de que se propaguen el binario final. Sin embargo, he encontrado que algunos actores están subiendo muestras de malware a VT y ajustando sus muestras para disminuir las detecciones, en algunos casos hasta que se vuelven casi indetectables.
Si podemos recopilar varios source_ids y almacenarlos en nuestra base de datos, podremos:
- Identificar la ubicación de un actor
- Ver la evolución de una muestra de malware: podemos descargar la muestra y analizar la funcionalidad y capacidades de evasión
- Asociar diferentes muestras al mismo actor
- Analizar los períodos de actividad en un calendario
- Identificar rutas o incluso nombres de usuario basados en el nombre del archivo de la primera presentación
¿Qué hay del objetivo? La segunda regla verifica nuevos correos electrónicos subidos a VT recibidos por usuarios bajo un dominio .es, lo que podría permitirnos:
- Identificar la organización bajo el source_id basado en el dominio de la dirección de correo electrónico
- Identificar malware dirigido a la organización, buscando archivos PE con el mismo source_id
- Monitorear las técnicas utilizadas contra una organización específica o un sector.
Sin embargo, el source_id puede cambiar dentro del período de tiempo que estamos investigando. Con las reglas de Yara basadas en correos electrónicos no es un problema, porque cada correo tiene la dirección de destino, pero en el caso de los binarios puede ser complicado rastrear a los autores a lo largo del tiempo. Afortunadamente, podemos reutilizar la información que recopilamos del actor, y en algunos casos, podremos extraer características como imphash, dirección de punto de entrada, versión del enlazador, … que nos ayudarán a rastrear nuevos source_ids relacionados con el actor.
He estado usando Yara para rastrear algunas presentaciones interesantes desde septiembre de 2018, pero configuré mi nuevo entorno en diciembre de 2018, así que hoy he recopilado cerca de 300k presentaciones con metadatos muy interesantes.
La mayoría de las presentaciones que capturé son archivos PE, x86 usando diferentes tipos de enlazadores, pero principalmente Visual Studio.
Revisemos algunos ejemplos simples de muestras basadas en mis reglas de Yara.
Después de jugar y pivotar con mis datos, encontré un source_id en EE.UU. que envió los siguientes archivos entre el 19 de febrero y el 21 de febrero:
Tiempo | MD5 | Nombre |
---|---|---|
21 de febrero de 2019, 00:01:46.000 | 345e2e55f48b64d697e3dfee8b9a2fe4 | mypc2.exe |
20 de febrero de 2019, 23:37:58.000 | beeaecf669e7f8e7e5a7094c0fbe1da3 | mypc.exe |
20 de febrero de 2019, 23:15:32.000 | 5b8dfc5e482d6816cdd6a5d024b92fad | malware_dd_imp2_pad_04res.exe |
20 de febrero de 2019, 21:31:37.000 | a7a5046c5c36f4648e8b432009d8717a | malware_dd_imp2_pad_06 |
20 de febrero de 2019, 21:21:41.000 | 5d8f025d942dbe92ae905a65fac75125 | malware_dd_imp2_04 |
20 de febrero de 2019, 06:35:14.000 | 2c6187ca6d158fc77eb72db29c8558dc | malware_dd.exe |
19 de febrero de 2019, 23:01:01.000 | b390cb55e962296d128572a1c3acbc91 | osk_dd2.exe |
19 de febrero de 2019, 22:39:57.000 | a4aba6a64d09c7002147c4489cd08852 | osk_pad_fi_2.exe |
19 de febrero de 2019, 22:09:59.000 | 00700a525d1dcdffd7aac5cbf82467cc | osk_pad_fi.exe |
Es obvio que esto no es un usuario o una organización tratando de obtener resultados para un archivo sospechoso, puede ser un actor o un investigador tratando de evitar detecciones de AV.
Aquí tenemos otro ejemplo de Filipinas, este se está divirtiendo… ¡LOL!
Hora | Punto de entrada | MD5 | Primer nombre |
---|---|---|---|
20 de febrero de 2019, 10:44:14.000 | 0x8b56 | b337842ac26256c9c922c8446392833e | InsaneHackerGame.exe |
16 de febrero de 2019, 14:49:13.000 | 0x8b56 | 08c84376698550e736308e9b8b21e0e1 | ServerSecurityActiveLogin.exe |
15 de febrero de 2019, 12:18:57.000 | 0x8b56 | a0e2d1a90871c4656adf2ee79a5aa0e6 | lol.exe |
15 de febrero de 2019, 03:52:22.000 | 0x8b56 | e99d2f626d1494a88d5f74535c38c6c9 | ServerDataUltraSecurity.exe |
Revisemos un source_id de España que está enviando archivos, en la última versión podemos ver los cambios de EntryPoint respecto a las versiones anteriores. En una de las presentaciones podemos apreciar el nombre de usuario “director1”:
Tiempo | Punto de entrada | MD5 | Nombre |
---|---|---|---|
4 de febrero de 2019, 13:44:17.000 | 0x4a0c0 | ffe83c8f462d6d3a752689ff19b1a873 | rentacert.exe |
31 de enero de 2019, 22:52:13.000 | 0x1596f | 63f0dbf5b590dd95056da010d638214f | C:\Users\director1\rentacert(4).exe |
29 de enero de 2019, 19:00:10.000 | 0x1596f | a53d1c26ce6529829580b0e75097ba07 | avanzada.exe |
21 de enero de 2019, 20:17:05.000 | 0x1596f | ff4da2037b978b50408d36eab57c608c | avanzada.exe |
18 de diciembre de 2018, 12:07:52.000 | 0x1596f | 8344bdee57110fe259729fe3a49036e9 | avanzada.exe |
17 de diciembre de 2018, 00:13:47.000 | 0x1596f | 0415275894d2141fab0a3aaebd6c300f | avant.exe |
Volviendo a las reglas de Yara basadas en correos electrónicos, con mis reglas recibí archivos de diferentes fuentes: API, correo electrónico y web, principalmente relacionados con exploits y la mayoría de ellos enviados por usuarios de Alemania.
Conclusión
VT es una herramienta fantástica para rastrear malware dirigido desde ambas perspectivas, actor y objetivo.
Recursos
- VirusTotal: https://virustotal.com/
- Yara: https://virustotal.github.io/yara/
- ELK: https://www.elastic.co/elk-stack