pandasecurity-multigrainMultigrain 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.

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 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.

multigrain-1.jpg

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:

multigrain-2.jpg

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á.

multigrain-3.jpg

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:

multigran-missing

Aparentemente, el “leaking” de información vía DNS se realiza en 3 puntos diferentes (2 rutinas) del programa:

multigrain-6

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):

multigrain-4.jpg

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.

multigrain-5.jpg

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.