Investigadores de ESET han descubierto y analizado un backdoor previamente indocumentado que se implementa como una extensión para Internet Information Services (IIS), el software del servidor web de Microsoft. Este backdoor, al cual hemos llamado IISpy, utiliza una variedad de trucos para interferir con el registro de los servidores y evadir la detección, con el fin de realizar tareas de espionaje durante largo plazo. Las soluciones de seguridad de ESET detectan IISpy como Win Win{32,64}/BadIIS.

Esta publicación es la segunda entrega de una serie en la que los investigadores de ESET analizan detenidamente una serie de amenazas dirigidas al servidor web IIS. En la entrega anterior analizamos las características de un malware para IIS utilizado para el ciberdelito. 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, en el cual IISpy aparece como una de las familias analizadas (Grupo 7).

Resumen del ataque

Según la telemetría de ESET, este backdoor ha estado activo al menos desde julio de 2020 y se ha utilizado con Juicy Potato (detectado como Win64/HackTool.JuicyPotato por las soluciones de seguridad de ESET), que es una herramienta de escalación de privilegios. Sospechamos que los atacantes primero obtienen acceso inicial al servidor IIS a través de la explotación de alguna vulnerabilidad, y luego utilizan Juicy Potato para obtener los privilegios de administrador necesarios para instalar IISpy como una extensión nativa para IIS.

Por otra pare, según nuestra telemetría IISpy afecta a una pequeña cantidad de servidores IIS ubicados en Canadá, EE. UU. y los Países Bajos, pero es probable que esta no sea la imagen completa, ya que todavía es común que los administradores no utilicen ningún software de seguridad en los servidores y, por lo tanto, nuestra visibilidad de los servidores IIS es limitada.

Debido a que está configurado como una extensión para IIS, IISpy puede ver todas las solicitudes HTTP recibidas por el servidor IIS comprometido y dar forma a la respuesta HTTP con la que responderá el servidor. IISpy utiliza este canal para implementar su comunicación con el C&C, lo que le permite operar como un “implante de red pasivo”. Como se muestra en la Imagen 1, el operador (no el backdoor) inicia la conexión enviando una solicitud HTTP especial al servidor comprometido. El backdoor reconoce la solicitud del atacante, extrae y ejecuta los comandos de backdoor embebidos y modifica la respuesta HTTP para incluir la salida del comando.

Los siguientes comandos de backdoor son los que soporta:

  • Obtener información del sistema
  • Cargar/descargar archivos
  • Ejecutar archivos o comandos de la shell
  • Crear un reverse shell
  • Crear/listar/mover/renombrar/eliminar archivos y carpetas
  • Crear un mapeo entre una unidad local y una remota
  • Exfiltrar los datos recopilados

IISpy ignora todas las demás solicitudes HTTP enviadas al servidor IIS comprometido por sus visitantes legítimos, las cuales aún son manejadas por los módulos benignos del servidor.

Figure 1. IISpy backdoor control mechanism

Imagen 1. Mecanismo de control de backdoor de IISpy

Comunicación de red

Las solicitudes de control de los operadores de IISpy tienen una estructura predefinida, con una relación específica (oculta) entre los encabezados de Cookie y de Host, y la URL. Para identificar dichas solicitudes, IISpy primero calcula el hash MD5 de la URL y del encabezado del Host de una solicitud HTTP entrante y divide cada MD5 en cuatro palabras dobles:

  • <h0><h1><h2><h3> = md5(Host Header value)
  • <r0><r1><r2><r3> = md5(Raw URL value)

Luego, verifica si el encabezado de Cookie contiene una substring creada a partir de estos valores:

  • <r1><h2>=<h3><r2><r3><r0><h0><h1>

La Imagen 2 ilustra cómo se ensambla esta substring. Los comandos de backdoor están integrados en el cuerpo HTTP, cifrados mediante AES-CBC y codificados en base64.

Figure 2. IISpy control HTTP request format

Imagen 2. Formato de solicitud HTTP de control de IISpy

Tenga en cuenta que esta estructura de control de solicitudes es exclusiva de IISpy: todos los otros backdoors para IIS conocidos (que hemos documentado en nuestro whitepaper Anatomy of native IIS malware) están controladas por contraseñas hardcodeadas, URI específicas o encabezados HTTP personalizados. A diferencia de esos "secretos", las solicitudes de control de de IISpy son más difíciles de identificar y encontrar en los registros, lo cual es un intento de que la comunicación con su C&C pase desapercibida.

Otro truco de este estilo es utilizado para el otro lado de la comunicación: IISpy embebe su respuesta cifrada y codificada dentro de una imagen PNG falsa, entre los encabezados del archivo PNG como un chunk de TEXT o BLOB. Para responder a una solicitud HTTP de control, IISpy reemplaza el cuerpo de la respuesta HTTP original (enviada por el servidor IIS) con el archivo PNG falso y establece el encabezado Content-Type en image/png para darle más credibilidad.

Ambos lados de la comunicación con el C&C están cifradas con AES-CBC y codificados en base64, utilizando estos parámetros:

  • Encryption key: DA1F8BE19D9122F6499D72B90299CAB080E9D599C57E802CD667BF53CCC9EAB2
  • IV: 668EDC2D7ED614BF8F69FF614957EF83EE

Análisis técnico

Desde el punto de vista técnico, IISpy se implementa como un módulo nativo para IIS: una DLL en  C++ implementada en la carpeta %windir%\system32\inetsrv\ o %windir%\system32\inetsrv\ en el servidor IIS comprometido, bajo el nombre cache.dll o logging.dll.

IISpy está configurado como una extensión para IIS en el archivo de configuración %windir%\system32\inetsrv\config\ApplicationHost.config, por lo que es cargado automáticamente por el proceso de trabajo de IIS (w3wp.exe), el cual maneja todas las solicitudes enviadas al servidor web IIS. En lo que respecta a la ejecución y la persistencia, la configuración de IISpy como un módulo para IIS contempla todos los requerimientos; todo lo que queda por implementar dentro del módulo malicioso es la actual solicitud de procesamiento (y como bonus, algunos trucos anti detección y anti forense). Cubrimos ambos en esta sección.

Diseño del módulo

IISpy está escrito usando el API para IIS en C++ y usa instancias de las interfaces IHttpContext, IHttpRequest y IHttpResponse para analizar las solicitudes HTTP y manipular las respuestas HTTP.

Como lo requieren todos los módulos nativos para IIS, exporta una función llamada RegisterModule, donde crea una instancia de sus clases principales y registra sus métodos para eventos de servidor utilizando el método IHttpModuleRegistrationInfo::SetRequestNotifications, como se muestra en la Imagen 3.

Figure 3. IISpy's RegisterModule export

Imagen 3. Exportación de RegisterModule de IISpy

La clase principal de IISpy se heredada de CHttpModule y, como se observa en la Imagen 4, anula tres de sus métodos: controlares (handlers) de eventos para los eventos del servidor:

  • Se llama a OnBeginRequest cada vez que el servidor comienza a procesar una nueva solicitud HTTP, e IISpy usa este handler para analizarlo en busca de solicitudes de los atacantes.
  • OnEndRequest, llamado con el último paso dentro del pipeline de procesamiento de solicitudes HTTP, implementa el intérprete del backdoor para IISpy
  • OnLogRequest, llamado justo antes de que el servidor IIS registre una solicitud HTTP procesada, implementa la función anti registro de IISpy

IISpy registra estos handlers con la prioridad más alta (a través del API IHttpModuleRegistrationInfo::SetPriorityForRequestNotification). Dado que se pueden registrar varios módulos para IIS (maliciosos y regulares) para el mismo evento, esto asegura que el handler de IISpy se ejecutará antes que cualquier otro handler registrado para el mismo evento.

Figure 4. IISpy's core class implements three event handlers

Imagen 4. La clase principal de IISpy implementa tres handlers de eventos

Comandos de backdoor

En su controlador OnEndRequest, IISpy descifra el cuerpo HTTP de la solicitud de un atacante y extrae sus parámetros, que se organizan como pares clave-valor y se enumeran en la Tabla 1.

Tabla 1. Parámetros de solicitud del atacante de IISpy

Key Value
/mode Command type
/action Command
/path
/binary
/data
Command arguments (see Table 2 for full list)
/credential/username Local user username, used for impersonation
/credential/password Local user password, used for impersonation

Si las credenciales están presentes, IISpy las usa para iniciar sesión como usuario (a través de LogonUserW, ImpersonateLoggedOnUser) para ejecutar los comandos de backdoor en el contexto del usuario. Los comandos y argumentos de backdoor también se organizan como pares clave-valor anidados, como se muestra en la Tabla 2.

Command type (/mode value) Command (/action value) Arguments (key names) Command description Returned data (map structure or description)
init N/A N/A Collects basic system information: computer name and domain, username and domain, logical drives information. /computer/domain
/computer/name
/user/domain
/user/name
/-
  /name
  /type
file list /path Collects information about the files in the specified folder. /-
  /name
  /attr
  /size
  /create
  /access
  /write
get /path
/binary
Downloads the file with the specified name from the compromised IIS server. The contents of the file, encrypted and embedded within a fake PNG image (a PNG header followed by non-image data).
create /path
/directory
/data
Creates a new file or directory in the specified path. Optional /data argument can hold the file content. /-
  /file
  /attr
  /size
  /create
  /access
  /write
upload /path
/data
Uploads a file with the specified name to the compromised server. The /data entry contains base64-encoded file content. /-
  /file
  /attr
  /size
  /create
  /access
  /write
delete /path
/files
  /name
  /attr
Deletes the list of files/directories in the given path. /files
  /code
  /name
move /path
/dest
/copy
/files
  /name
  /new
Copies or renames files from the list, from the source directory to the destination directory. /files
  /code
  /name
time /path
/create
/access
/write
Modifies file timestamps N/A
drive map /letter
/share
/username
/password
Creates a mapping between a local and a remote drive, using the specified credentials for the network resource. N/A
remove /letter Removes an existing drive mapping N/A
cmd exec /cmd Executes the specified command, either under the context of the current user, or the user provided in arguments. Returns the command output. /output

Tabla 2. Argumentos y comandos de backdoor de IISpy

Después de ejecutar el comando de backdoor, IISpy cifra y codifica los datos de retorno y los usa para modificar la respuesta HTTP a la solicitud del atacante. Los datos de retorno también se organizan como pares clave-valor, con las entradas enumeradas en la Tabla 2, más dos entradas adicionales basadas en el resultado de GetLastError (o mensajes de error personalizados):

  • /error/code
  • /error/message

Función antiregistro

Finalmente, IISpy implementa el handler de eventos OnLogRequest, llamado justo antes de que el servidor IIS registre una solicitud HTTP procesada. El backdoor utiliza este controlador para modificar las entradas de registro de las solicitudes que provienen de los atacantes para que parezcan solicitudes casuales. Como se observa en la Imagen 5, se siguen estos pasos:

  • Reescribe el método HTTP en la solicitud a GET
  • Vuelva a escribir la URL de la solicitud a /
  • Elimine estos encabezados de la solicitud: Cookie, Origin, Referer, Sec-Fetch-Mode, Sec-Fetch-Site, Content-Type, Content-Length, X-Forwarded-IP, X-Forwarded-For, X-Forwarded-By, X-Forwarded-Proto

Con las entradas de registro modificadas de esta manera, los atacantes intentan ocultar aún más los rastros de sus actividades maliciosas para dificultar el posible análisis forense.

Figure 5. IISpy modifies log entries for attacker requests

Imagen 5. IISpy modifica las entradas de registro para las solicitudes de los atacantes

Conclusión

IISpy es un complejo backdoor del lado del servidor que aprovecha la extensibilidad del software del servidor web IIS para su persistencia, ejecución y mecanismos de C&C. Diseñado para el espionaje a largo plazo en servidores IIS comprometidos, se vale de ciertos trucos para mezclarse con el tráfico regular de la red y para borrar los registros incriminatorios.

Las organizaciones que manejan datos confidenciales en sus servidores deben estar atentas, como las organizaciones que tienen habilitado el servicio Outlook en la web (OWA) en sus servidores de correo electrónico de Exchange: OWA se implementa a través de IIS y es un objetivo interesante para el espionaje. En cualquier caso, la mejor manera de mantener IISpy fuera de sus servidores es mantenerlos actualizados y considerar cuidadosamente qué servicios están expuestos a Internet, para reducir el riesgo de explotación del servidor.

Detalles técnicos adicionales del malware, así como Indicadores de compromiso y reglas de YARA pueden encontrarse en nuestro whitepaper y en GitHub. Por cualquier consulta o para enviar muestras relacionadas con el tema, escríbanos a threatintel@eset.com.

Esté atento a la última entrega de esta serie en la cual analizamos extensiones maliciosas para IIS utilizadas para el fraude de SEO.

Lea también:
Anatomía del malware nativo para servidores web IIS
IIStealer: malware en servidores IIS que afecta a sitios web de comercio electrónico

Indicadores de Compromiso (IoCs)

Nombres de detección de ESET

Win32/BadIIS.F
Win64/BadIIS.U

SHA-1

22F8CA2EB3AF377E913B6D06B5A3618D294E4331
435E3795D934EA8C5C7F4BCFEF2BEEE0E3C76A54
CED7BC6E0F1A15465E61CFEC87AAEF98BD999E15

Nombres de archivo

cache.dll
logging.dll

Técnicas de MITRE ATT&CK

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

Tactic ID Name Description
Resource Development T1587.001 Develop Capabilities: Malware IISpy is a custom-made malware family.
T1588.002 Obtain Capabilities: Tool Operators of IISpy have used Juicy Potato , a local privilege escalation tool.
Initial Access T1190 Exploit Public-Facing Application IISpy likely obtains its initial access to the IIS server via some vulnerability in the web application or on the server, before it uses the privilege escalation tool Juicy Potato to obtain the administrative privileges that are required to install a native IIS module.
Execution T1059.003 Command and Scripting Interpreter: Windows Command Shell IISpy supports a backdoor command that uses the Windows command shell to execute shell commands on the compromised IIS server.
T1569.002 System Services: Service Execution IIS server (and by extension, IISpy) persists as a Windows service.
Persistence T1546 Event Triggered Execution IISpy is loaded by IIS Worker Process (w3wp.exe) when the IIS server receives an inbound HTTP request.
Privilege Escalation T1068 Exploitation for Privilege Escalation Operators of IISpy have used a local privilege escalation tool Juicy Potato to elevate privileges.
Defense Evasion T1134.001 Access Token Manipulation: Token Impersonation/Theft IISpy has the ability to execute backdoor commands in another user’s context (via LogonUserW, ImpersonateLoggedOnUser).
T1070 Indicator Removal on Host IISpy has the ability to sanitize logging of attacker requests on the IIS server.
T1070.006 Indicator Removal on Host: Timestomp IISpy supports a backdoor command to modify file timestamps.
Collection T1005 Data from Local System IISpy supports a backdoor command to collect and exfiltrate files from the compromised IIS server.
Command and Control T1071.001 Application Layer Protocol: Web Protocols IISpy is a passive network implant: Adversaries send HTTP requests to the compromised IIS server to control the backdoor.
T1001 Data Obfuscation IISpy operators send commands with a specially constructed combination of URLs, Host headers and cookies.
IISpy exfiltrates data in a fake PNG file (a PNG header followed by non-image data), in an attempt to make its C&C traffic look like regular network traffic.
T1132.001 Data Encoding: Standard Encoding IISpy encodes the C&C communication with base64 encoding.
T1573.001 Encrypted Channel: Symmetric Cryptography IISpy uses AES-CBC to encrypt C&C communication.
T1105 Ingress Tool Transfer IISpy supports a backdoor command to upload additional tools to the compromised IIS server.
Exfiltration T1041 Exfiltration Over C2 Channel IISpy supports a backdoor command to exfiltrate data and files from the compromised IIS server.