IISpy: una puerta trasera compleja del lado del servidor con funciones anti-forenses


El segundo de nuestra serie sobre amenazas de IIS analiza una extensión de IIS maliciosa que emplea ingeniosos trucos en un intento de proteger el espionaje a largo plazo en los servidores comprometidos.

Los investigadores de ESET han descubierto y analizado una puerta trasera previamente indocumentada, implementada como una extensión para Internet Servicios de información (IIS), el software de servidor web de Microsoft. La puerta trasera, que llamamos IISpy, utiliza una variedad de trucos para interferir con el registro del servidor y evadir la detección, con el fin de realizar un espionaje a largo plazo. Las soluciones de seguridad de ESET detectan IISpy como Win 32,64 / BadIIS.

Esta entrada de blog es la segunda entrega de nuestra serie en la que los investigadores de ESET ponen bajo el microscopio las amenazas del servidor web IIS: el parte anterior analiza el malware IIS utilizado para el ciberdelito. Para obtener una guía completa sobre cómo detectar, analizar y eliminar el malware IIS, consulte nuestro informe técnico Anatomía del malware IIS nativo, donde IISpy aparece como una de las familias estudiadas (Grupo 7).

Resumen del ataque

Según la telemetría de ESET, esta puerta trasera ha estado activa desde al menos julio de 2020 y se ha utilizado con Papa jugosa (detectado como Win64 / HackTool.JuicyPotato por las soluciones de seguridad de ESET), que es una herramienta de escalada de privilegios. Sospechamos que los atacantes primero obtienen acceso inicial al servidor IIS a través de alguna vulnerabilidad y luego usan Papa jugosa para obtener los privilegios administrativos que son requerido para instalar IISpy como extensión nativa de IIS.

Según nuestra telemetría, IISpy afecta a una pequeña cantidad de servidores IIS ubicados en Canadá, los 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 IISpy está configurado como una extensión de IIS, 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 C&C, lo que le permite operar como un implante de red pasiva. Como se muestra en la Figura 1, el operador (no la puerta trasera) inicia la conexión enviando una solicitud HTTP especial al servidor comprometido. La puerta trasera reconoce la solicitud del atacante, extrae y ejecuta los comandos integrados de la puerta trasera y modifica la respuesta HTTP para incluir la salida del comando.

Se admiten los siguientes comandos de puerta trasera:

  • Obtener información del sistema
  • Cargar / descargar archivos
  • Ejecutar archivos o comandos de shell
  • Crea un caparazón inverso
  • Crear / listar / mover / renombrar / borrar archivos y carpetas
  • Cree un mapeo entre una unidad local y una remota
  • Extraer los datos recopilados

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

Figura 1. Mecanismo de control de puerta trasera de IISpy

Figura 1. Mecanismo de control de puerta trasera de IISpy

Red de comunicacion

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


  • = md5 (valor del encabezado del host)

  • = md5 (valor de URL sin procesar)

Luego, verifica que el encabezado de Cookie contiene una subcadena construida a partir de estos valores:


  • =

La Figura 2 ilustra cómo se ensambla esta subcadena. Los comandos de puerta trasera están integrados en el cuerpo HTTP, cifrados AES-CBC y codificados en base64.

Figura 2. Formato de solicitud HTTP de control de IISpy

Figura 2. Formato de solicitud HTTP de control de IISpy

Tenga en cuenta que esta estructura de solicitudes de control es exclusiva de IISpy: todas las demás puertas traseras de IIS conocidas (que hemos documentado en nuestro documento técnico Anatomía del malware nativo de IIS) se controlan mediante contraseñas codificadas, URI específicos o encabezados HTTP personalizados. A diferencia de esos "secretos", las solicitudes de control de IISpy son más difíciles de identificar y encontrar en los registros, lo que es un intento de que su comunicación C&C pase desapercibida.

Otro truco de este tipo se utiliza para el otro lado de la comunicación: IISpy incrusta su respuesta cifrada y codificada dentro de una imagen PNG falsa, entre los encabezados del archivo PNG como un TEXTO o GOTA pedazo. Para responder a una solicitud HTTP de control, IISpy reemplaza el cuerpo de respuesta HTTP original (enviado por el servidor IIS) con el archivo PNG falso y establece el Tipo de contenido encabezado a imagen / png para darle más credibilidad a esta farsa.

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

  • Clave de encriptación: DA1F8BE19D9122F6499D72B90299CAB080E9D599C57E802CD667BF53CCC9EAB2
  • IV: 668EDC2D7ED614BF8F69FF614957EF83EE

Análisis técnico

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

IISpy está configurado como una extensión de IIS en el % windir% system32 inetsrv config ApplicationHost.config archivo de configuración, por lo que el proceso de trabajo de IIS lo carga automáticamente (w3wp.exe), que maneja todas las solicitudes enviadas al servidor web IIS. En lo que respecta a la ejecución y la persistencia, configurar IISpy como un módulo IIS en sí mismo marca todas las casillas; todo lo que queda por implementar dentro del módulo malicioso es el procesamiento de la solicitud real (y como beneficio adicional, algunos trucos anti-detección y anti-forense ). Cubrimos ambos en esta sección.

Diseño de módulo

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

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

Figura 3. Exportación de RegisterModule de IISpy

Figura 3. Exportación de RegisterModule de IISpy

La clase principal de IISpy se hereda de CHttpModule y, como se ve en la Figura 4, anula tres de sus métodos: controladores de eventos para los eventos del servidor:

  • OnBeginRequest se llama cada vez que el servidor comienza a procesar una nueva solicitud HTTP, e IISpy usa este controlador para analizarlo en busca de solicitudes de atacantes
  • OnEndRequest, llamado con el último paso dentro de HTTP canalización de procesamiento de solicitudes, implementa el intérprete de puerta trasera de 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 controladores con la máxima prioridad (a través del IHttpModuleRegistrationInfo :: SetPriorityForRequestNotification API). Dado que se pueden registrar varios módulos IIS (maliciosos y regulares) para el mismo evento, esto asegura que el controlador de IISpy se ejecutará antes que cualquier otro controlador registrado para el mismo evento.

Figura 4. La clase principal de IISpy implementa tres controladores de eventos

Figura 4. La clase principal de IISpy implementa tres controladores de eventos

Comandos de puerta trasera

En su OnEndRequest controlador, 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

Clave Valor
/modo Tipo de comando
/acción Mando
/sendero
/binario
/datos
Argumentos de comando (consulte la Tabla 2 para obtener una lista completa)
/ credencial / nombre de usuario Nombre de usuario de usuario local, utilizado para la suplantación de identidad
/ credencial / contraseña Contraseña de usuario local, utilizada para la suplantación

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 puerta trasera en el contexto del usuario. Los comandos y argumentos de puerta trasera también se organizan como pares clave-valor anidados, como se enumera en la Tabla 2.

Tabla 2. Argumentos y comandos de puerta trasera de IISpy

Tipo de comando (/modo valor) Comando (/acción valor) Argumentos (nombres clave) Descripción del comando Datos devueltos (estructura o descripción del mapa)
en eso N / A N / A Recopila información básica del sistema: nombre y dominio de la computadora, nombre de usuario y dominio, información de unidades lógicas. / computadora / dominio
/nombre del ordenador
/ usuario / dominio
/nombre de usuario
/ –
/nombre
/escribe
expediente lista /sendero Recopila información sobre los archivos de la carpeta especificada. / –
/nombre
/ attr
/Talla
/crear
/acceso
/escribir
obtener /sendero
/binario
Descarga el archivo con el nombre especificado del servidor IIS comprometido. El contenido del archivo, cifrado e incrustado en una imagen PNG falsa (un encabezado PNG seguido de datos que no son imágenes).
crear /sendero
/directorio
/datos
Crea un nuevo archivo o directorio en la ruta especificada. Opcional /datos El argumento puede contener el contenido del archivo. / –
/expediente
/ attr
/Talla
/crear
/acceso
/escribir
subir /sendero
/datos
Carga un archivo con el nombre especificado al servidor comprometido. El /datos La entrada contiene contenido de archivo codificado en base64. / –
/expediente
/ attr
/Talla
/crear
/acceso
/escribir
Eliminar /sendero
/ archivos
/nombre
/ attr
Elimina la lista de archivos / directorios en la ruta dada. / archivos
/código
/nombre
moverse /sendero
/ dest
/Copiar
/ archivos
/nombre
/nuevo
Copia o cambia el nombre de los archivos de la lista, desde el directorio de origen al directorio de destino. / archivos
/código
/nombre
tiempo /sendero
/crear
/acceso
/escribir
Modifica las marcas de tiempo de los archivos N / A
conducir mapa /carta
/Cuota
/nombre de usuario
/clave
Crea una asignación entre una unidad local y una remota, utilizando las credenciales especificadas para el recurso de red. N / A
retirar /carta Elimina una asignación de unidad existente N / A
cmd ejecutivo / cmd Ejecuta el comando especificado, ya sea en el contexto del usuario actual o el usuario proporcionado en los argumentos. Devuelve la salida del comando. /producción

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

  • /código de error
  • /mensaje de error

Función anti-registro

Finalmente, IISpy implementa la OnLogRequest controlador de eventos: se llama justo antes de que el servidor IIS registre una solicitud HTTP procesada. La puerta trasera usa este controlador para modificar las entradas de registro de las solicitudes que provienen de los atacantes para que parezcan solicitudes casuales. Como se muestra en la Figura 5, se siguen estos pasos:

  • Vuelva a escribir el método HTTP en la solicitud para OBTENER
  • Vuelva a escribir la URL de la solicitud a /
  • Elimina estos encabezados de la solicitud: Galleta, Origen, Referer, Modo de búsqueda secundaria, Sec-Fetch-Site, Tipo de contenido, Largancia de contenido, IP reenviado X, X-reenviado-para, X-reenviado por, Proto reenviado X

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

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

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

Conclusión

IISpy es una puerta trasera compleja del lado del servidor que utiliza indebidamente la extensibilidad del software del servidor web IIS para su persistencia, ejecución y mecanismos de C&C. Con sus trucos para integrarse con el tráfico regular de la red y para borrar los registros incriminatorios, está diseñado para el espionaje a largo plazo en servidores IIS comprometidos.

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.

Los detalles técnicos adicionales sobre el malware, los indicadores de compromiso y las reglas de YARA se pueden encontrar en nuestro completo papel blanco, y en GitHub. Para cualquier consulta o para hacer presentaciones de muestra relacionadas con el tema, contáctenos en: amenazaintel@eset.com.

Esté atento a la última entrega de esta serie, donde cubrimos las extensiones IIS maliciosas utilizadas para el fraude de SEO.

Indicadores de compromiso (IoC)

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 MITRE ATT & CK

Nota: esta tabla fue construida usando versión 9 del marco MITRE ATT & CK.

Táctica IDENTIFICACIÓN Nombre Descripción
Desarrollo de recursos T1587.001 Desarrollar capacidades: malware IISpy es una familia de malware a medida.
T1588.002 Obtenga capacidades: herramienta Los operadores de IISpy han utilizado Juicy Potato, una herramienta de escalada de privilegios local.
Acceso inicial T1190 Aprovechar la aplicación de cara al público Es probable que IISpy obtenga su acceso inicial al servidor IIS a través de alguna vulnerabilidad en la aplicación web o en el servidor, antes de utilizar la herramienta de escalado de privilegios Juicy Potato para obtener los privilegios administrativos necesarios para instalar un módulo IIS nativo.
Ejecución T1059.003 Intérprete de comandos y secuencias de comandos: Shell de comandos de Windows IISpy admite un comando de puerta trasera que utiliza el shell de comandos de Windows para ejecutar comandos de shell en el servidor IIS comprometido.
T1569.002 Servicios del sistema: ejecución de servicios El servidor IIS (y por extensión, IISpy) persiste como un servicio de Windows.
Persistencia T1546 Ejecución activada por evento IISpy es cargado por IIS Worker Process (w3wp.exe) cuando el servidor IIS recibe una solicitud HTTP entrante.
Escalada de privilegios T1068 Explotación para la intensificación de privilegios Los operadores de IISpy han utilizado una herramienta local de escalado de privilegios Juicy Potato para elevar los privilegios.
Evasión de defensa T1134.001 Manipulación de tokens de acceso: suplantación / robo de tokens IISpy tiene la capacidad de ejecutar comandos de puerta trasera en el contexto de otro usuario (a través de LogonUserW, ImpersonateLoggedOnUser).
T1070 Eliminación del indicador en el host IISpy tiene la capacidad de desinfectar el registro de solicitudes de atacantes en el servidor IIS.
T1070.006 Eliminación del indicador en el host: Timestomp IISpy admite un comando de puerta trasera para modificar las marcas de tiempo de los archivos.
Colección T1005 Datos del sistema local IISpy admite un comando de puerta trasera para recopilar y extraer archivos del servidor IIS comprometido.
Comando y control T1071.001 Protocolo de capa de aplicación: protocolos web IISpy es un implante de red pasivo: los adversarios envían solicitudes HTTP al servidor IIS comprometido para controlar la puerta trasera.
T1001 Ofuscación de datos Los operadores de IISpy envían comandos con una combinación especialmente construida de URL, encabezados de host y cookies.
IISpy extrae datos en un archivo PNG falso (un encabezado PNG seguido de datos que no son imágenes), en un intento de hacer que su tráfico de C&C parezca un tráfico de red normal.
T1132.001 Codificación de datos: codificación estándar IISpy codifica la comunicación C&C con codificación base64.
T1573.001 Canal cifrado: criptografía simétrica IISpy usa AES-CBC para cifrar la comunicación C&C.
T1105 Transferencia de herramientas de ingreso IISpy admite un comando de puerta trasera para cargar herramientas adicionales al servidor IIS comprometido.
Exfiltración T1041 Exfiltración sobre canal C2 IISpy admite un comando de puerta trasera para extraer datos y archivos del servidor IIS comprometido.



Enlace a la noticia original