Multigrain es un malware de Terminal de Punto de Venta (PoS) especializado en el robo de información de tarjetas de crédito y débito mediante técnicas de “RAM scraping” (traducido: acceder directamente a la memoria RAM de procesos determinados para obtener de ahí la información de las tarjetas a robar). Este es un método bastante popular, ya que las normativas internacionales prohíben que esta información sea almacenada en disco, ni siquiera de forma temporal.
TPVs: Vorus Malware Multigrain
Otra característica de Multigrain es que para comunicarse con el exterior (y poder así enviar la información robada) utiliza peticiones DNS. En este artículo vamos a analizar tanto el malware en sí mismo como sus comunicaciones.
Desde FireEye publicaron un análisis de estas comunicaciones en abril de 2016, ya que parece que era la primera vez que se encontraban con una variante de Multigrain. En este caso el análisis pertenece a una muestra que detectamos en noviembre de 2015 (MD5 A0973ADAF99975C1EB12CC1E333D302F), desde entonces hemos detectado nuevas variantes o actualizaciones de este malware, pero en lo esencial funcionan de la misma forma.
Multigrain, virus en detalle: análisis técnico
Empecemos analizando cómo el código analizado posee características de RAM-Scraping, tipico de Malware de TPV. Esto lo podemos apreciar claramente en la rutina 00405A10 mostrada a continuación.
Dentro de esta rutina nos encontramos con las llamadas típicas de un proceso que realiza RAM-Scraping de la memoria de los procesos en ejecución:
CreateToolhelp32Snapshot para obtener un puntero al listado de procesos
Process32FirstW y Process32NextW para obtener un snapshot de los mismos despues de llamar a la API anterior.
OpenProcess para obtener, posteriormente, un listado de sus páginas en memoria con VirtualQueryEx.
Finalmente, con ReadProcessMemory, se leería el contenido de las páginas anteriores.
Una vez obtenido el buffer con el contenido de cada página, se realiza el “scraping” propiamente dicho. Para ello se utiliza (dentro de esta la misma rutina) el siguiente pseudocódigo:
Si se detectasen posibles secuencias de TRACKS1/2 correspondientes a códigos de bandas magnéticas de tarjetas bancarias en los “buffers” de memoria analizados, se procederá a llamar a las funciones sub_406100 y sub_405D10, encargadas de preparar los datos para ser exfiltrados posteriormente
Este Malware de POS se interesa -únicamente- por dos procesos, denominados “spcwin.exe” y “brain.exe” respectivamente; en el caso de que no se detecte ninguno de éstos el “scraping” no se realizará.
Exfiltración de datos
La exflitración se realiza mediante peticiones DNS (UDP, puerto 53) desde la rutina 00402C40, tal y como se muestra en el siguiente pseudocódigo:
Aparentemente, el “leaking” de información vía DNS se realiza en 3 puntos diferentes (2 rutinas) del programa:
En la primera rutina (dirección 00401DA0) , se antepone el subdominio “install.” a la información a exfiltrar. En la segunda rutina (dirección 00402580) se antepone el subdominio “log.” a la información a exfiltrar.
Dentro de estas rutinas de exfiltración, encontramos diversas referencias a funciones que codifican la información utilizando “base32”. Esto es debido a que para exfiltrar la información de las tarjetas de bancarías, ésta se codifica mediante “base32” y se realizan posteriormente peticiones DNS cuyo formato es: install.<base32_CCs>.dominio
Información de red
El dominio aparentemente para esta muestra es: dojfgj.com
Información Whois:
Domain Name: DOJFGJ.COM
Registry Domain ID: 1979271903_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.enom.com
Registrar URL: www.enom.com
Updated Date: 2015-11-13T07:16:58.00Z
Creation Date: 2015-11-13T15:16:00.00Z
Registrar Registration Expiration Date: 2016-11-13T15:16:00.00Z
Registrar: ENOM, INC.
Registrar IANA ID: 48
Reseller: NAMECHEAP.COM
Domain Status: ok https://www.icann.org/epp#ok
Registry Registrant ID:
Registrant Name: WHOISGUARD PROTECTED
Registrant Organization: WHOISGUARD, INC.
Registrant Street: P.O. BOX 0823-03411
Registrant City: PANAMA
Registrant State/Province: PANAMA
Registrant Postal Code: 00000
Registrant Country: PA
Registrant Phone: +507.8365503
Registrant Phone Ext:
Registrant Fax: +51.17057182
Registrant Fax Ext:
Registrant Email: CC7F8D40E4FA4188AE5EA89A35925E6B.PROTECT@WHOISGUARD.COM
Registry Admin ID:
Admin Name: WHOISGUARD PROTECTED
Admin Organization: WHOISGUARD, INC.
Admin Street: P.O. BOX 0823-03411
Admin City: PANAMA
Admin State/Province: PANAMA
Admin Postal Code: 00000
Admin Country: PA
Admin Phone: +507.8365503
Admin Phone Ext:
Admin Fax: +51.17057182
Admin Fax Ext:
Admin Email: CC7F8D40E4FA4188AE5EA89A35925E6B.PROTECT@WHOISGUARD.COM
Registry Tech ID:
Tech Name: WHOISGUARD PROTECTED
Tech Organization: WHOISGUARD, INC.
Tech Street: P.O. BOX 0823-03411
Tech City: PANAMA
Tech State/Province: PANAMA
Tech Postal Code: 00000
Tech Country: PA
Tech Phone: +507.8365503
Tech Phone Ext:
Tech Fax: +51.17057182
Tech Fax Ext:
Tech Email: CC7F8D40E4FA4188AE5EA89A35925E6B.PROTECT@WHOISGUARD.COM
Name Server: NS1.DOJFGJ.COM
Name Server: NS2.DOJFGJ.COM
Si resolvemos este dominio, podemos ver que apunta a la dirección IP interna “192.168.0.3”. El dominio tiene asociados 2 servidores DNS, que en principio se resuelven a si mismos. Para obtener sus direcciones reales debemos hacer un “whois” a éstos:
$ whois ns2.dojfgj.com
Server Name: NS1.DOJFGJ.COM
IP Address: 104.156.246.159
Un “traceroute” sobre esta IP nos muestra el origen de esta IP:
$ traceroute 104.156.246.159
traceroute to 104.156.246.159 (104.156.246.159), 30 hops max, 60 byte packets
1 104.131.0.253 (104.131.0.253) 0.423 ms 104.131.0.254 (104.131.0.254) 0.404 ms 0.437 ms
2 162.243.188.229 (162.243.188.229) 0.422 ms 0.394 ms 162.243.188.241 (162.243.188.241) 0.293 ms
3 xe-0-9-0-17.r08.nycmny01.us.bb.gin.ntt.net (129.250.204.113) 3.503 ms 4.078 ms 4.102 ms
4 ae-2.r25.nycmny01.us.bb.gin.ntt.net (129.250.3.97) 1.160 ms ae-3.r25.nycmny01.us.bb.gin.ntt.net (129.250.6.208) 1.226 ms 1.171 ms
5 ae-9.r22.asbnva02.us.bb.gin.ntt.net (129.250.2.149) 6.985 ms 6.926 ms 7.013 ms
6 ae-0.r23.asbnva02.us.bb.gin.ntt.net (129.250.3.85) 6.952 ms 7.091 ms 7.057 ms
7 ae-1.r20.miamfl02.us.bb.gin.ntt.net (129.250.2.87) 42.672 ms 33.314 ms 33.257 ms
8 ae-1.r05.miamfl02.us.bb.gin.ntt.net (129.250.2.185) 35.530 ms 35.327 ms 38.280 ms
9 xe-0-6-0-0.r05.miamfl02.us.ce.gin.ntt.net (129.250.207.174) 32.063 ms 31.912 ms 31.755 ms
10 * * *
11 104.156.246.159.vultr.com (104.156.246.159) 33.398 ms 31.757 ms 32.283 ms
Como vemos, corresponde a un ISP de Miami que gestiona multitud de direcciones IP:
NetRange: 104.156.244.0 – 104.156.247.255
CIDR: 104.156.244.0/22
NetName: NET-104-156-244-0-22
NetHandle: NET-104-156-244-0-1
Parent: CHOOPA (NET-104-156-224-0-1)
NetType: Reassigned
OriginAS:
Organization: Vultr Holdings, LLC (VHL-57)
Persistencia
Para mantener su persistencia en el sistema (TPVs Windows) el malware analizado se instala automáticamente como servicio, eligiendo como nombre “Windows Module Extension”, tal y como puede verse en la siguiente captura de pantalla (rutina 00406C20):
Los atacantes pueden realizar exclusiones a la hora de registrarse como servicio, ya que se consulta a “ipinfo.io” la región actual y, dependiendo de la respuesta, el registro como servicio se realizará o no. Especialmente útil si el atacante quiere evitar atacar TPVs en determinados países, por ejemplo.
El Malware acepta como parámetro “i” (de “instalar”), y si esto es así se instalará el servicio de “scraping” de procesos y envío de la información robada.
Si no se especifica este parámetro (“i”), en el caso de que no se cuentran los procesos “spcwin.exe” o “brain.exe” en ejecución, no se instalará el servicio, además el malware se autoeliminará. Ambos procesos pertenecen a software de TPV.