IISpy: un backdoor del lado del servidor con funciones anti forenses

En el segundo artículo de nuestra serie sobre amenazas dirigidas a servidores IIS, analizamos una extensión maliciosa para IIS que emplea ingeniosos trucos para persistir durante largo tiempo dentro de los servidores comprometidos y realizar tareas de espionaje.

En el segundo artículo de nuestra serie sobre amenazas dirigidas a servidores IIS, analizamos una extensión maliciosa para IIS que emplea ingeniosos trucos para persistir durante largo tiempo dentro de los servidores comprometidos y realizar tareas de espionaje.

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

KeyValue
/modeCommand type
/actionCommand
/path
/binary
/data
Command arguments (see Table 2 for full list)
/credential/usernameLocal user username, used for impersonation
/credential/passwordLocal 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 descriptionReturned data (map structure or description)
initN/AN/ACollects basic system information: computer name and domain, username and domain, logical drives information./computer/domain
/computer/name
/user/domain
/user/name
/-
  /name
  /type
filelist/pathCollects 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 timestampsN/A
drivemap/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/letterRemoves an existing drive mappingN/A
cmdexec/cmdExecutes 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.

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.

TacticIDNameDescription
Resource DevelopmentT1587.001Develop Capabilities: MalwareIISpy is a custom-made malware family.
T1588.002Obtain Capabilities: ToolOperators of IISpy have used Juicy Potato , a local privilege escalation tool.
Initial AccessT1190Exploit Public-Facing ApplicationIISpy 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.
ExecutionT1059.003Command and Scripting Interpreter: Windows Command ShellIISpy supports a backdoor command that uses the Windows command shell to execute shell commands on the compromised IIS server.
T1569.002System Services: Service ExecutionIIS server (and by extension, IISpy) persists as a Windows service.
PersistenceT1546Event Triggered ExecutionIISpy is loaded by IIS Worker Process (w3wp.exe) when the IIS server receives an inbound HTTP request.
Privilege EscalationT1068Exploitation for Privilege EscalationOperators of IISpy have used a local privilege escalation tool Juicy Potato to elevate privileges.
Defense EvasionT1134.001Access Token Manipulation: Token Impersonation/TheftIISpy has the ability to execute backdoor commands in another user’s context (via LogonUserW, ImpersonateLoggedOnUser).
T1070Indicator Removal on HostIISpy has the ability to sanitize logging of attacker requests on the IIS server.
T1070.006Indicator Removal on Host: TimestompIISpy supports a backdoor command to modify file timestamps.
CollectionT1005Data from Local SystemIISpy supports a backdoor command to collect and exfiltrate files from the compromised IIS server.
Command and ControlT1071.001Application Layer Protocol: Web ProtocolsIISpy is a passive network implant: Adversaries send HTTP requests to the compromised IIS server to control the backdoor.
T1001Data ObfuscationIISpy 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.001Data Encoding: Standard EncodingIISpy encodes the C&C communication with base64 encoding.
T1573.001Encrypted Channel: Symmetric CryptographyIISpy uses AES-CBC to encrypt C&C communication.
T1105Ingress Tool TransferIISpy supports a backdoor command to upload additional tools to the compromised IIS server.
ExfiltrationT1041Exfiltration Over C2 ChannelIISpy supports a backdoor command to exfiltrate data and files from the compromised IIS server.

Newsletter

Discusión