attribution.id: Actores de amenazas acechantes y objetivos con VT

attribution.id: Actores de amenazas acechantes y objetivos con VT

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.

FechaNombre de archivoFuentePaís
2019-03-28 06:28:516700138a1a85c39 (api)US
2019-03-29,10:35:10malwarefa8be158 (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.

Histograma

La mayoría de las presentaciones que capturé son archivos PE, x86 usando diferentes tipos de enlazadores, pero principalmente Visual Studio.

EstadísticasEstáticas

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:

TiempoMD5Nombre
21 de febrero de 2019, 00:01:46.000345e2e55f48b64d697e3dfee8b9a2fe4mypc2.exe
20 de febrero de 2019, 23:37:58.000beeaecf669e7f8e7e5a7094c0fbe1da3mypc.exe
20 de febrero de 2019, 23:15:32.0005b8dfc5e482d6816cdd6a5d024b92fadmalware_dd_imp2_pad_04res.exe
20 de febrero de 2019, 21:31:37.000a7a5046c5c36f4648e8b432009d8717amalware_dd_imp2_pad_06
20 de febrero de 2019, 21:21:41.0005d8f025d942dbe92ae905a65fac75125malware_dd_imp2_04
20 de febrero de 2019, 06:35:14.0002c6187ca6d158fc77eb72db29c8558dcmalware_dd.exe
19 de febrero de 2019, 23:01:01.000b390cb55e962296d128572a1c3acbc91osk_dd2.exe
19 de febrero de 2019, 22:39:57.000a4aba6a64d09c7002147c4489cd08852osk_pad_fi_2.exe
19 de febrero de 2019, 22:09:59.00000700a525d1dcdffd7aac5cbf82467ccosk_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!

HoraPunto de entradaMD5Primer nombre
20 de febrero de 2019, 10:44:14.0000x8b56b337842ac26256c9c922c8446392833eInsaneHackerGame.exe
16 de febrero de 2019, 14:49:13.0000x8b5608c84376698550e736308e9b8b21e0e1ServerSecurityActiveLogin.exe
15 de febrero de 2019, 12:18:57.0000x8b56a0e2d1a90871c4656adf2ee79a5aa0e6lol.exe
15 de febrero de 2019, 03:52:22.0000x8b56e99d2f626d1494a88d5f74535c38c6c9ServerDataUltraSecurity.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”:

TiempoPunto de entradaMD5Nombre
4 de febrero de 2019, 13:44:17.0000x4a0c0ffe83c8f462d6d3a752689ff19b1a873rentacert.exe
31 de enero de 2019, 22:52:13.0000x1596f63f0dbf5b590dd95056da010d638214fC:\Users\director1\rentacert(4).exe
29 de enero de 2019, 19:00:10.0000x1596fa53d1c26ce6529829580b0e75097ba07avanzada.exe
21 de enero de 2019, 20:17:05.0000x1596fff4da2037b978b50408d36eab57c608cavanzada.exe
18 de diciembre de 2018, 12:07:52.0000x1596f8344bdee57110fe259729fe3a49036e9avanzada.exe
17 de diciembre de 2018, 00:13:47.0000x1596f0415275894d2141fab0a3aaebd6c300favant.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.

Fuentes

Categorías

Mapa

Conclusión

VT es una herramienta fantástica para rastrear malware dirigido desde ambas perspectivas, actor y objetivo.

Recursos