Hola a tod@s!
El 10 de noviembre ESET publicó un tweet en que mencionaban que se había utilizado la herramienta de Ingeniería inversa IDA, para distribuir un troyano cuyo objetivo era atacar a los investigadores de Seguridad.
Se mencionan un par de ficheros (dll), de los cuáles uno de ellos (win_fw.dll A8EF73CC67C794D5AA860538D66898868EE0BEC0) ejecutaba una tarea durante su instalación y que llamaría al segundo, mientras que este otro (idahelper.dll DE0E23DB04A7A780A640C656293336F80040F3) descargaba la carga útil que finalmente compromete el equipo del analista.
Muestran donde está el código que realiza la descarga.
Nos centraremos en este idahelper.dll y veremos algunas cosas interesantes de este fichero.
Tenemos una DLL de 64 bits, compilada con Microsoft Visual C/C++ 2010. Su nombre al compilarlo podría haber sido WebLoader.dll.
Tiene una función Export (“cleanup_appcall”) para que pueda ser llamada por otras aplicaciones.
Precisamente es utilizada por la otra dll a modo de tarea programada (rundll32 <path_IDA>\plugins\idahelper.dll,cleanup_appcall). Podíamos verlo en el tweet:
Bien, pues vamos a esa función a ver qué hace. Primero obtenemos la dirección de esa función y nos posicionamos en ella a la vez que imprimimos el desensamblado.
Lo primero que nos llama la atención es una serie de valores en hexadecimal seguidos de un par de xor. Esto tiene pinta de algo que no quieren que sepamos a simple vista.
Reconozco que así no se ve tan bien como en la captura del twitt, la vuelvo a poner. ( El tweet de abajo es al que hago referencia )
Como se observa, es la url codificada y en la imagen podemos ver su valor, pero nosotros estamos usando radare2, así que vamos a ver cómo obtener ese resultado.
Utilizaremos ESIL ¿por qué?. Nos posicionamos al principio del array y ejecutamos la mv hasta después del salto, ya que justo después ya tendremos la url decodificada.
Aquí la tenemos, la url esperada, sin ejecutar la dll. Esa forma de descargar me sonaba, así que me puse a buscar binarios que utilizaran el mismo método, ¿quién sabe? Igual nos encontramos con el código de lo que podría ser lo mismo sin ofuscar.
Cuál fue mi sorpresa cuando me encuentro con estos binarios. Pongo los hashes sha256:
84478f51d8e7ae11f1343df78858d2eab680730d7c43bef97a2733c0703b941c
5c900b0f6123db4cc4cfcac7cd1a46aa5271acb6ad29eda46fc32f4e7205fa06
928e101e03ee4d60e5a4644fce510f9792a9a298f23d25574dc3117ffe167a20
8189fb002d222d73f882c337450ff621e45861eb2f853bec0755fd6d1689dfe3
42614586ba150cfd4680fe5e93a1b0abfb670834fc2bf9938beac501d27effaf
41b94ad8c43c1821440194f49fbd21005a7e662e1889cc1b3de451aa56773895
836f4cd6ad3275f631018b12e1ae88a2f064e2223bae4d599a2bc29723796be2
6a426067e92b9b4d82034af15574113c16f1ac6aba7f104a3226ee9ad346239f
104f941ecc691a3489fef47592c0afed16385b728b867f077f730b476a389f37
e70c4fa7e369d52318bfd63c77fad097c07d3339d60054cc568dd77890a46a77
b3c2838ad0c1b2cb8cab3138cf00504f3886dc62d74934c5f9f44705782356c2
e33d151753c4cbea27369dd7595b35ae685a9b67db584ada36a00951266d162a
7cffb29eff50a1e0e257790f3bb520f235f93f6d93a8de89049a79343a8983d0
708dbe0b7cf4fb008bbd98298196ebae4e5466b68dd1be042535d6ad164fdd91
738040669456e5a082232400b2d3858841d80c3e0a53510312136ca693e76fab
56a172563297fc22223ce7f9e72dae9184038a9868ce538e87c642e5db100e10
a5f5e7c14d4496bc01ae73d20b50a93d99bfe94d70b98978a600322d6b2e81e5
027797fc19a5b168590a1fdc66958170e90430b3cb097d59de95afd81158a1ba
c344213cb93d61a98368431fe2c7bbd45f046108919d183addf5b5d01f2df94c
7be4ec4d43cac3dd8444a6f107d2e146f4e38e79895253a94396b43ea14d6775
Esta vez son dll de 32 bits.
Cojo una al azar, ya que son (“casi”) todas iguales, salvo 1 (84478f51d8e7ae11f1343df78858d2eab680730d7c43bef97a2733c0703b941c).
Vemos como ese nombre nos es muy familiar, idahelper.dll. Este a diferencia del analizado, tiene 2. funciones Exports (LoadRun y UrlDownload). Iré mostrando las diferencias.
Salvando las diferencias, claro está, se parece bastante.
La url que aparece en todas esas dll no tienen nada que ver con la que se había visto y detectado ya, es una de test.
Y está tal cual, sin ofuscar.
Vamos a aquel que era diferente al resto.
En lugar de 2, este tiene solamente 1 función Export ( más parecido al reportado por ESET Research ).
Otro test. Parece que alguien está jugando con estas dll, ¿probando cuántos antivirus los detectan?
Está claro que antes de soltar una muestra hay que hacer tantas pruebas como sean necesarias, para identificar qué antivirus detectan las mismas y tocas y retocas el código hasta hacedlo FUD (File UnDetectable). No quiero decir que estas muestras sean las de partida, ni mucho menos, pero sí que son parecidas en el código de descarga a la reportada por ESET. Que se llamen igual puede ser ¿coincidencia? :D
Espero que os haya gustado y nos vemos en el próximo post!
Hasta otra!