Microsoft firmó un rootkit malicioso de Netfilter

Lo que comenzó como una alerta de falso positivo para un archivo firmado por Microsoft resulta ser un controlador de llamada de aplicación de la capa de aplicación del WFP que redirige el tráfico a una IP china. ¿Cómo pasó esto?

La semana pasada, nuestro sistema de alerta nos notificó de un posible falso positivo porque detectamos un controlador [1] llamado «Netfilter» que estaba firmado por Microsoft. Desde Windows Vista, cualquier código que se ejecute en modo kernel debe probarse y firmarse antes del lanzamiento público para garantizar la estabilidad del sistema operativo. Los controladores sin un certificado de Microsoft no se pueden instalar de forma predeterminada.

En este caso, la detección fue un verdadero positivo, por lo que enviamos nuestros hallazgos a Microsoft, quien rápidamente agregó firmas de malware a Windows Defender y ahora está llevando a cabo una investigación interna. En el momento de redactar este documento, todavía se desconoce cómo el conductor podría pasar el proceso de firma.

Decodificación de cadenas

Lo primero que noté después de abrir la vista de cadenas son algunas cadenas que parecían codificadas o cifradas. Si bien esto no es necesariamente un signo de un archivo malicioso, es extraño que un controlador ofusque una parte de sus cadenas.

Decodifiqué las cadenas usando el siguiente fragmento de Python.

Muestras similares

Al buscar esta URL, así como la ruta PDB y la función de muestras similares en Virustotal, encontramos muestras más antiguas, así como el cuentagotas [2] del controlador netfilter. Las firmas de muestra más antiguas [3] se remontan a marzo de 2021. A continuación, se enumeran las consultas de Virustotal para encontrar muestras similares a través de la ruta de URL y PDB.

Además, la siguiente regla de Yara encontrará muestras mediante retrocaza.

Cuentagotas e instalación

El cuentagotas coloca el controlador en % APPDATA% \ netfilter.sys . Luego crea el archivo % TEMP% \ c.xalm con el siguiente contenido y emite el comando regini.exe x.calm para registrar el controlador.

Contenido de% TEMP% \ x.calm

Servidor de mando y control

La URL  hxxp: //110.42.4.180: 2081 / u en la lista de cadenas decodificadas es el servidor del rootkit. El controlador Netfilter [1] se conecta a él para obtener información de configuración.

Después de conectarse a la URL codificada hxxp: //110.42.4.180: 2081 / u, el servidor responde con la siguiente cadena.

Cada URL tiene un propósito específico.

URLPropósito
hxxp: //110.42.4.180: 2081 / pConfiguración de proxy
hxxp: //110.42.4.180: 2081 / sIP de redireccionamiento
hxxp: //110.42.4.180: 2081 / h?Hacer ping con CPU-ID
hxxp: //110.42.4.180: 2081 / cCertificado raíz
hxxp: //110.42.4.180: 2081 / v?Auto actualización

Redirección de IP

La funcionalidad principal del malware es su redirección de IP. Se redirige una lista de direcciones IP específicas a 45 (.) 248.10.244: 3000 . Estas direcciones IP, así como el destino de la redirección, se obtienen de hxxp: //110.42.4.180: 2081 / s .

El investigador @jaydinbas invirtió la configuración de redirección en este tweet y proporcionó la última configuración decodificada en un pastebin . El formato general observado por  @cci_forensics y  @jaydinbas es [<redirection_target> – <port_number>] {<ip_to_redirect1> | <ip_to_redirect2> | …}

Configuración de redirección codificada

Mecanismo de actualización

La muestra tiene una rutina de actualización automática que envía su propio hash MD5 al servidor a través de hxxp: //110.42.4.180: 2081 / v? V = 6 & m = <md5> . Una solicitud podría tener este aspecto: hxxp: //110.42.4.180: 2081 / v? V = 6 & m = 921fa8a5442e9bf3fe727e770cded4ab . A continuación, el servidor responde con la URL de la muestra más reciente, por ejemplo, hxxp: //110.42.4.180: 2081 / d6 o con OK si la muestra está actualizada. El malware reemplaza su propio archivo en consecuencia.

Código que comprueba si el controlador está actualizado y lo reemplaza por una versión más reciente.

Certificado raíz

El rootkit recibe un certificado raíz a través de hxxp: //110.42.4.180: 2081 / cy lo escribe en \ Registry \ Machine \ SOFTWARE \ Microsoft \ SystemCertificates \ ROOT \ Certificates \ . Los datos que se devuelven desde el servidor tienen el formato [<nombre del certificado>]: {<blob de datos del certificado>}

Datos del certificado raíz tal como los envía el servidor

Apoderado

En hxxp: //110.42.4.180: 2081 / p, el malware solicita el proxy que establece como AutoConfigURL en la clave de registro \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings . El valor devuelto en el momento de escribir este artículo es hxxp: //ptaohuawu.bagua.com.hgdjkgh.com: 2508 / baidu.txt

Hashes de muestra

DescripciónSHA256
[1] Controlador de Netfilter63d61549030fcf46ff1dc138122580b4364f0fe99e6b068bc6a3d6903656aff0
[2] Gotero de filtro de redd64f906376f21677d0585e93dae8b36248f94be7091b01fd1d4381916a326afe
[3] Controlador Netfilter, versión anterior firmada en marzo115034373fc0ec8f75fb075b7a7011b603259ecc0aca271445e559b5404a1406

Más hashes relacionados con el rootkit Netfilter se encuentran en esta hoja de cálculo creada por Florian Roth .

Contribuciones

Muchas gracias a todos los colaboradores a continuación.

Johann Aydinbas por el espléndido análisis en Twitter

Takahiro Haruyama por las adiciones al análisis anterior.

Florian Roth por la hoja de recolección de muestras y reglas adicionales de Yara

Enlace: https://www.gdatasoftware.com/blog/microsoft-signed-a-malicious-netfilter-rootkit Blog de G DATA Karsten Hahn