Los investigadores de ESET han descubierto y analizado un troyano previamente indocumentado que roba información de pago de los clientes de sitios web que se dedican al comercio electrónico. El troyano, al que hemos llamado IIStealer, es detectado por las soluciones de seguridad de ESET como Win64/BadIIS.

Esta publicación es la primera entrega de una serie en la que los investigadores de ESET analizan distintas amenazas que apuntan al servidor web IIS. Para obtener una guía completa sobre cómo detectar, analizar y eliminar el malware para IIS, consulte nuestro whitepaper Anatomy of native IIS malware, donde IIStealer aparece como una de las familias de malware analizadas (Grupo 5).

Resumen del ataque

IIStealer se implementa como una extensión maliciosa para Internet Information Services (IIS), el software del servidor web de Microsoft. Al ser parte del servidor, IIStealer es capaz de acceder a toda la comunicación de red que fluye a través del servidor y robar datos de interés para los atacantes; como son, por ejemplo, los datos de pago de transacciones que se realizan en sitios web de ecommerce.

Como se observa en la Imagen 1, IIStealer opera interceptando el tráfico regular entre el servidor comprometido y sus clientes (el vendedor y los compradores), apuntando a las solicitudes HTTP POST realizadas a rutas URI específicas:/checkout/checkout.aspx o checkout/Payment.aspx.

Siempre que un visitante legítimo de un sitio web realiza una solicitud en las páginas de pago (1), IIStealer registra el cuerpo de la solicitud HTTP en un archivo de registro (2), sin interferir de ninguna manera con la respuesta HTTP generada por los componentes del sitio web legítimo (3).

Los atacantes pueden entonces exfiltrar los datos recopilados haciendo una solicitud HTTP especial al servidor IIS comprometido: una vez que IIStealer detecta una solicitud realizada a un URI específico (/privacy.aspx) con una contraseña del atacante incluida en el encabezado X-IIS-Data (4), embebe los datos recopilados en la respuesta HTTP para esa solicitud (5,6).

Figure 1. IIStealer collection and exfiltration mechanisms

Imagen 1. IIStealer: mecanismos de recolección y exfiltración de datos de los visitantes

Con estas capacidades, IIStealer puede robar los datos de las tarjetas de crédito introducidas en sitios web de comercio electrónico que no utilizan pasarelas de pago de terceros. Tenga en cuenta que SSL/TLS y los canales de comunicación cifrados no protegen estas transacciones contra IIStealer, ya que el malware puede acceder a toda la información que maneja servidor, que es donde se procesa la información de la tarjeta de crédito en su estado no cifrado.

Las muestras que analizamos de este malware parecen estar diseñadas para sitios de ecommerce específicos (con la URI de páginas de pago hardcodeada). Según nuestra telemetría, entre septiembre de 2020 y enero de 2021, el objetivo fue una pequeña cantidad de servidores IIS en los EE. UU. Sin embargo, considerando que todavía es común que los administradores no usen ningún software de seguridad en estos servidores, esto probablemente sea solo el reflejo de nuestra visión limitada sobre los servidores IIS.

Análisis técnico

IIStealer se implementa como un módulo nativo malicioso para IIS: una DLL en C ++ droppeada en la carpeta %windir%\system32\inetsrv\ del servidor IIS comprometido y se configura en el archivo %windir%\system32\inetsrv\config\ApplicationHost.config. En algunos casos, IIStealer se implementa con el nombre dir.dll y, como se observa en la Imagen 2, utiliza un recurso VERSIONINFO falsificado para imitar un módulo de IIS legítimo llamado dirlist.dll.

Figure 2. IIStealer’s VERSIONINFO resource (left) mimics legitimate dirlist.dll module (right)

Imagen 2. Recurso VERSIONINFO en IIStealer (izquierda) imita el módulo legítimo dirlist.dll (derecha).

Debido a que es un módulo de IIS, IIStealer se carga automáticamente mediante el proceso de trabajo de IIS (w3wp.exe), que maneja las solicitudes enviadas al servidor web IIS. Así es como IIStealer logra la persistencia y cómo puede afectar el procesamiento de las solicitudes entrantes.

No tenemos ninguna información sobre cómo se propaga el malware, pero sabemos que se requieren permisos de administrador para instalarlo como un módulo nativo para IIS, lo que reduce las opciones de compromiso inicial. Una vulnerabilidad o fallo de configuración en una aplicación web o en el propio servidor probablemente sean los culpables del compromiso.

En cuanto a sus características técnicas, IIStealer implementa una clase Core heredada de CHttpModule (clase de módulo) y anula el método CHttpModule::OnPostBeginRequest con su código malicioso. Al igual que con todos los módulos nativos para IIS, IIStealer exporta una función denominada RegisterModule (ver Imagen 3), donde crea una instancia de la clase del módulo y registra sus métodos para los eventos del servidor. Más específicamente, se registra para la notificación posterior al evento RQ_BEGIN_REQUEST que se genera cada vez que el servidor comienza a procesar una solicitud HTTP entrante. Como resultado, el método OnPostBeginRequest es llamado con cada solicitud nueva, lo que permite que IIStealer afecte el procesamiento de la solicitud.

Figure 3. IIStealer’s RegisterModule entry point

Imagen 3. Punto de entrada del RegisterModule de IIStealer

En el controlador OnPostBeginRequest, IIStealer filtra las solicitudes HTTP mediante solicitud de URI. Todas las solicitudes POST realizadas a OnPostBeginRequest o /checkout/Payment.aspx se registran, junto con sus cuerpos HTTP completos, en un archivo llamado C:\Windows\Temp\cache.txt. Estas solicitudes las realizan visitantes legítimos de los sitios web de comercio electrónico comprometidos y pueden contener información confidencial, como datos personales y números de tarjetas de crédito.

Los datos recopilados se pueden filtrar a través de una solicitud HTTP diseñada específicamente por el atacante. Esta solicitud debe tener un encabezado X-IIS-Data configurado con una contraseña alfanumérica codificada de 32 bytes (que hemos elegido no revelar), y debe enviarse a una ruta especificada en la muestra de malware:

  • /privacy.aspx
  • /checkout/Payment.aspx

Una vez que el módulo malicioso detecta dicha solicitud, utiliza el método IHttpResponse::Clear para eliminar cualquier respuesta HTTP preparada por el servidor IIS y copia el contenido no cifrado del archivo de registro en el cuerpo de la respuesta HTTP mediante la función del API IHttpResponse::WriteEntityChunks, como se ve en la Imagen 4.

Figure 4. IIStealer replaces the HTTP response body with its own data

Imagen 4. IIStealer reemplaza el cuerpo de la respuesta HTTP con sus propios datos

Esto permite a los operadores de IIStealer acceder y filtrar los datos recopilados simplemente enviando una solicitud especial al servidor IIS comprometido; no es necesario que el malware implemente canales de C&C adicionales o embeba dominios de servidor C&C en su configuración.

Mitigación

IIStealer es una amenaza del lado del servidor que escucha a escondidas las comunicaciones entre un sitio de comercio electrónico comprometido y sus clientes con el objetivo de robar información de pago confidencial, pero por supuesto, los módulos para IIS maliciosos también pueden apuntar a credenciales y otra información. Aunque SSL/TLS es vital para asegurar la transmisión de datos entre el cliente y el servidor, no evita este escenario de ataque ya que IIStealer es parte del servidor. Esto debería ser inquietante para todos los portales web serios que se interesen por proteger los datos de sus visitantes, incluidos los datos de autenticación y la información de pago.

La mejor manera de fortalecer un servidor IIS contra IIStealer y otras amenazas es:

  • Utilice cuentas dedicadas con contraseñas únicas y seguras para la administración del servidor IIS.
  • Instale periódicamente las actualizaciones de seguridad para su sistema operativo y revise cuidadosamente qué servicios están expuestos a Internet para reducir el riesgo de explotación del servidor.
  • Instale únicamente módulos nativos para IIS de fuentes confiables.
  • Considere usar un firewall de aplicaciones web y/o una solución de seguridad para endpoints en su servidor IIS.
  • Verifique regularmente el archivo de configuración %windir%\system32\inetsrv\config\ApplicationHost.config, así como las carpetas %windir%\system32\inetsrv\ y %windir%\SysWOW64\inetsrv para corroborar que todos los módulos nativos instalados son legítimos (firmados por un proveedor de confianza o instalado a propósito).

Para desarrolladores web: incluso si no tiene control sobre el servidor IIS donde está alojado su servicio web, aún puede tomar medidas para reducir el impacto en los usuarios de su servicio web en el caso de un compromiso, especialmente:

  • No envíe la contraseña al servidor (ni siquiera a través de SSL/TLS); use un protocolo como Secure Remote Password (SRP) para autenticar a los usuarios sin la necesidad de que la contraseña sin cifrar se transmita al servidor, ni datos que puedan usarse para volver a autenticarse. Los infostealers para IIS son un buen ejemplo de por qué el hash del lado del servidor no es lo suficientemente bueno.
  • Evite el envío innecesario de información sensible desde la aplicación web. Utilice pasarelas de pago.
  • Si identifica un compromiso exitoso: notifique a todas las partes involucradas en cualquier brecha de seguridad para que puedan tomar medidas rápidas.

Para los consumidores: desde la perspectiva del visitante, es imposible saber si un servidor IIS está comprometido, pero estos consejos lo ayudarán a reducir el riesgo:

  • Tenga cuidado dónde ingresa los datos de su tarjeta de crédito. Considere utilizar pasarelas de pago de proveedores externos confiables en sitios de comercio electrónico cuya reputación desconozca: el uso de pasarelas de pago de terceros quiere decir que dichos sitios no manejarán la información de pago confidencial.
  • Esté atento a su estado de cuenta por si aparecen pagos pequeños o inusuales: a menudo se procesan pequeñas cantidades para probar si las tarjetas son válidas.
  • Si detecta algo inusual, notifique a su banco de inmediato.

En nuestro white paper y en GitHub se pueden encontrar detalles técnicos adicionales sobre el malware, los indicadores de compromiso y las reglas de YARA. Por cualquier consulta o para el envío de muestras relacionadas con este tema, escríbanos a: threatintel@eset.com.

Esté atento a los próximos artículos de esta serie en la que cubriremos otras extensiones maliciosas para IIS utilizadas para el ciberespionaje y el fraude SEO.

Indicadores de Compromiso (IoCs)

Nombres de detección de ESET

Win64/BadIIS.F
Win64/BadIIS.O

SHA-1

706EAB59C20FCC9FBC82C41BF955B5C49C644B38
7A2FA07A7DC05D50FE8E201A750A3DC7F22D6549
A1C5E7424E7C4C4C9902A5A1D97F708C6BB2F53A

Nombres de archivo y rutas

dir.dll
isapicache___.dll
isapicache_.dll_
C:\Windows\Temp\cache.txt

Indicadores de red

URI apuntadas

/checkout/checkout.aspx
/checkout/Payment.aspx
/privacy.aspx

Encabezado HTTP

X-IIS-Data

Técnicas de MITRE ATT&CK

Nota: esta tabla fue creada utilizando la versión 9 del framework MITRE ATT&CK.

Tactic ID Name Description
Resource Development T1587.001 Develop Capabilities: Malware IIStealer is a custom-made malware family.
Execution T1569.002 System Services: Service Execution IIS server (and by extension, IIStealer) persists as a Windows service.
Persistence T1546 Event Triggered Execution IIStealer is loaded by IIS Worker Process (w3wp.exe) when the IIS server receives an inbound HTTP request.
Defense Evasion T1036.005 Masquerading: Match Legitimate Name or Location IIStealer has been deployed under the name dir.dll, in an attempt to mimic a legitimate Microsoft IIS module called dirlist.dll.
T1027 Obfuscated Files or Information IIStealer uses string stacking in an attempt to avoid some string-based detection.
Credential Access T1056 Input Capture IIStealer intercepts network traffic between the IIS server and its clients to collect sensitive information such as credit card details.
Collection T1119 Automated Collection IIStealer automatically collects information from inbound HTTP requests, such as credit card details.
T1074.001 Data Staged: Local Data Staging IIStealer uses a local file to stage collected information.
Command and Control T1071.001 Application Layer Protocol: Web Protocols Adversaries send HTTP requests to the compromised IIS server to control IIStealer.
Exfiltration T1041 Exfiltration Over C2 Channel IIStealer uses its C&C channel to exfiltrate collected data: HTTP requests are sent by the adversary to the compromised IIS server.