domingo, 4 de febrero de 2018

Revelaciones desde una suite (LV - VIII)


Una madrugada Svetlana y David continuaban trabajando en el caso. Habían llegado por separado a la suite que el CNI tenía reservada para casos de necesidad en el hotel Meliá Castilla, en la calle Capitán Haya al norte de Madrid. Sveta llegó primero a pesar de que tuvo que hacerlo después del trabajo. Allí abrió su MacBook Pro e inició una máquina virtual con Kali Linux, en cuyo sistema de archivos cifrado había copiado los documentos que necesitaba comentar con David. Cuando llegó éste, ella llevaba más de una hora trabajando teniendo cuidado de usar sus copias offline y no conectarse en ningún momento con la base de datos del CNI. Él insistió en besarla a pesar de que no había nadie que pudiera verlos, por lo que no había necesidad de aparentar. De hecho era la primera ocasión, desde que empezara todo, en que tenían intimidad. Ella respondió al beso con más intensidad de la acostumbrada, lo que incendió el deseo de David y digamos que la cosa se fue calentado y acabaron en la cama. Durante el acto hablaron de cosas triviales y fue solo cuando los jadeos hubieron amainado, que Sveta empezó a hablar del tema que les había traído allí en primer lugar.

—¿Sigue sin haber suerte?— preguntó trémula.
—Nada. No sé por qué, pero me da a mi que el autor no está en tu lista.
—No nos hagamos ilusiones, pero es posible que haya dado con él.
—¿En serio? ¿Cómo?
—Desde el día que me metiste en esto he tratado en vano de encontrar una firma en el malware.
—¿Y qué? Eso ya lo sé— se impacientó David.
—Será mejor que no me interrumpas. Necesito poner mis ideas en orden— pidió Sveta.
—De acuerdo— aceptó él.
—Parece ser que los árboles no me dejaban ver el bosque. Intenté encontrar la firma en el binario sin tratar. Es lo que se hace para detectar los virus. Se busca una cadena consecutiva de 39 bytes que permanezca invariable en todas las copias del virus. Eso me cegó y me impidió avanzar...
—¿Por qué? Es decir, la forma en que resulta rentable la detección de virus es siendo rápida. Si hubiese que tratar cada archivo de un sistema para poder detectar un virus, entonces sería tremendamente lento. Nadie querría usar ese antivirus aunque fuera muy bueno. Además, imagina que cada virus, como suele ocurrir, tenga un método de polimorfismo basado en un algoritmo diferente. Entonces el antivirus tendría que probar a procesar cada archivo con cientos o miles de algoritmos antes de poder decir si está infectado. Eso haría al antivirus inútil.
—¡Exacto! Así es. Eso me tuvo probando multitud de variaciones del binario en la búsqueda de una clave de identificación válida. Tal curso de acción demostró ser inútil. Cada muestra del binario no tenía nada en común con las demás. Ni siquiera encontré el típico fragmento responsable de la decodificación que aparece sin codificar y habitualmente sirve como identificación para virus polimórficos.
—¿Y¿
—Nada.
—¿Entonces, qué has descubierto? ¿Y cómo?— se exasperó David.
—He infectado una máquina virtual y he ejecutado el binario paso a paso con ayuda de un depurador— Sveta se sentó en la cama. —Realmente el decodificador es distinto en cada copia porque se ha empleado un generador de algoritmos inteligente que no solo cambia determinadas partes del algoritmo de decodificación, sino que crea versiones nuevas con procedimientos aleatorios. Es mucho más complicado que eso, pero créeme, ¡es brillante! Y no sólo eso. Cada algoritmo resultante lleva protecciones anti-depuración que dificultan enormemente su seguimiento. En algunas ejecuciones el binario se autodestruyó como resultado de mis intentos. Entonces fue cuando decidí depurar la máquina virtual en lugar de hacerlo con el binario directamente. Como utilizar un guante. Y claro, los sistemas de protección no detectaron nada anómalo y así es como obtuve una copia del malware completamente decodificada en memoria. La desensamblé y la estudié.
—Eres increíble, Sveta— la felicitó David.
—Sí. Lo soy. Pero espera que ahora viene lo mejor. Y por favor no me vuelvas a interrumpir.
—Si te interrumpo es por tus pausas dramáticas.
—Silencio o te dejo en ascuas otro día más.
—Está bien, de acuerdo. Tú ganas.
—Una vez conseguí abrir el desensamblado con W64dasm, pedí un listado de cadenas y me sorprendió no encontrar nada en absoluto. Normalmente los que alcanzan este nivel de conocimientos están deseosos de que todo el mundo lo sepa y suelen firmar todos sus trabajos. Pues bien, en lo que a este malware respecta, la única firma es la imagen de la llama verde. No hay nada más. Y antes de que digas nada, y me vuelvas a interrumpir; todavía hay más. Me puse a buscar fragmentos de código característicos. Todo programador los tiene. Y me puse a compararlos con la base de muestras del CNI. Encontré varias coincidencias exactas. Ya sabes, de elementos que no generaría un compilador. Por lo que sé, el autor escribió el malware directamente en assembly. Se trata de alguien con conocimientos increíbles. Por lo tanto su orgullo debe de ser sólo cuantificable con unidades de medida astronómicas. Y sé eso porque absolutamente todas las muestras coincidentes tenían idéntica firma— Sveta se mantuvo en silencio más de lo que David pudo soportar y este estuvo a punto de abrir la boca impaciente. Fue solo entonces cuando acabó:

—Vale, vale, ya te lo digo. Su firma utiliza florituras varias en latín, pero hay algo que siempre se repite como una letanía: la palabra L0pthR— hizo una nueva pausa.
—Joder, suena como un pedo: lofdr.
—Creo que es su handle. El apodo por el que se da a conocer en la scene hacker. Hace años hubo un hacker conocidísimo que se hacía llamar L0pth. Nuestro elemento debe de admirarlo mucho.
—Ya ya lo pillo. Pero si solo tenemos eso, no nos sirve de nada. Necesitamos un nombre para ir a por él.
—Lo sé. Me ha costado un poco juntar todas las piezas. Lo he confirmado hace solo unas horas. Normalmente cuando uno empieza a utilizar nicks o apodos, estos suelen aparecer al principio asociados con su identidad real. Casi todos los hackers acaban pasando por varias épocas, cada una de ellas caracterizada por el uso de un handle en concreto. Estos apodos a veces se yuxtaponen con el anterior y en general, nadie es perfecto. Todo el mundo comete algún descuido.
—¿No me digas que has empleado tu super-técnica de «lurking»?
—Pues sí. Y gracias a eso y a un poco de «combing», bueno, en realidad gracias a mi oscuro pasado; ahora puedo revelarte el nombre de L0pthR: se llama Guillermo Sprenger.
—Qué es, ¿alemán?
—Holandés. En realidad su padre es de origen holandés, pero su madre española. Nacido y criado aquí, en Madrid. Tengo su dirección en mi portátil.
—Espera un momento— cortó David pensativo. Se levantó y fue a buscar el periódico que había traído consigo.
—¿Qué tienes?— rió Sveta.
—Mira esto— dijo señalando un artículo de la página de sucesos de El País. —Aquí. Lee en voz alta.

Svetlana entrecerró los ojos para ver mejor.
—Hallan muerto en un hotel colombiano a un hombre de 29 años, de nacionalidad española, llamado Guillermo Sprenger. Interrogado su padre, español de origen holandés, ha reconocido a este reportero que este se hallaba en viaje de negocios. Guillermo recibió dos disparos en pecho y cráneo, muriendo al instante. La policía de la localidad colombiana de Apartadós, el escenario de los hechos, cree que es el trabajo de un profesional y que con toda seguridad el infortunado muchacho se había visto mezclado con un cártel local y blah blah blah...—se interrumpió— aquí no dice cuándo.
—Sí— le indicó David, —ahí debajo lo pone. Fue hace tres noches.
—Ah, sí. Cierto— permaneció callada unos segundos. —También da a entender que la familia no se traga que su hijo tuviera nada que ver con el mundo de la droga. Juran y perjuran que era informático free-lance. ¿Crees que es nuestro hombre?
—¿No te parece demasiada casualidad?— la interrogó David.
—No sé. Tenemos que averiguarlo.
—Lo investigaré, pero te aseguro que no habrá muchos Guillermo Sprenger que tengan que ver con el mundo de la informática.


No hay comentarios:

Publicar un comentario