En julio de 2015 el hacker Phineas Fisher volcó unos 400 GB de datos del proveedor italiano de vigilancia Hacking Team, incluidos correos internos. Entre ellos, Costin Raiu, de Kaspersky Lab, encontró una negociación de 2013 en la que el vendedor de exploits Vitaliy Toropov ofrecía a Hacking Team un zero-day de Silverlight «escrito hace 2,5 años» con «todas las posibilidades de sobrevivir en los próximos años»: prueba de que un exploit sin parche y sin detalles públicos podría seguir infectando sistemas, si Kaspersky lograba encontrarlo.

Los zero-days suelen encontrarse por accidente, en la investigación forense posterior a una brecha. Raiu probó lo contrario: perfilar al autor. Reunió los exploits de prueba de concepto que Toropov había publicado en programas de bug bounty entre 2011 y 2013, antes de que sus divulgaciones públicas se agotaran, y notó tres cadenas de depuración que se repetían en los archivos: restos que los desarrolladores suelen incluir sin querer en el código compilado. En julio las escribió en una regla YARA y la difundió por la herramienta de prevención automática de exploits de Kaspersky y su red de telemetría compartida con clientes, y luego esperó.

Pasaron meses sin nada. Luego, el 25 de noviembre de 2015, una máquina de un cliente en Oriente Medio coincidió: un exploit de ejecución remota de código en Silverlight construido sobre código del PoC de calculadora publicado por Toropov. Horas después apareció una segunda muestra en VirusTotal, subida desde Laos y compilada el 21 de julio, dos semanas después de que los correos filtrados se publicaran en línea. Kaspersky reportó la vulnerabilidad y Microsoft publicó un parche «crítico» para el fallo de Silverlight BinaryReader en enero de 2016.

Se puede cazar un exploit que nunca se ha visto: tomar la huella del autor, no de la muestra; sus pruebas de concepto publicadas llevan cadenas de depuración que el trabajo privado puede heredar.

La filtración se reutilizó como sistema de alerta temprana: un folleto de ventas robado indicó a los defensores qué exploit no visto existía, aproximadamente qué antigüedad tenía y quién lo había construido.

La autoría es una firma: los autores de exploits reutilizan sus bibliotecas, y el código de depuración tiende a sobrevivir en los binarios compilados, por lo que los PoC publicados pueden servir de huella para trabajos privados posteriores.

La red de sensores ya existía: una regla YARA en la telemetría opcional de Kaspersky convirtió miles de máquinas de clientes en trampas sin desplegar nada nuevo.

La etiqueta defensiva dejó el rastro: los años que Toropov pasó divulgando fallos de forma responsable en programas de bounty, con PoC publicados, se convirtieron en la huella de sus exploits no divulgados.

La atribución de ataques también funciona a la inversa: los hábitos de un autor son una firma. Cuando no se puede encontrar el artefacto, hay que modelar a su creador a partir de lo que ha publicado y dejar que los sensores esperen la coincidencia.

Kaspersky no encontró más muestras, lo que sugiere que el comprador usó el exploit de forma quirúrgica; Raiu estimó que valía entre 20.000 y 40.000 dólares en el mercado de zero-days. Toropov dijo a WIRED que el exploit «no es mío» tras examinar el código, aunque confirmó que las partes del PoC eran suyas. Raiu lo calificó como la primera vez que su equipo lograba atrapar algo que se había propuesto cazar, y señaló que la técnica podría aplicarse ahora al código público de otros vendedores. El parche de Microsoft eliminó la amenaza concreta; el método —tomar la huella del autor y luego esperar— se quedó en la caja de herramientas.

CONSULTA LAS PRUEBAS

Las fuentes

  1. Hacking Team's Leak Helped Researchers Hunt Down a Zero-Day WIRED · wired.com ·