viernes, 5 de abril de 2024

Detectar y responder al ransomware Phobos usando Wazuh

El ransomware Phobos se ha convertido en una preocupación creciente debido a sus tácticas dirigidas a gobiernos estatales y territoriales. El grupo de ransomware compromete los puntos finales de Windows utilizando el phishing como método principal para obtener la entrada inicial, implementando cargas útiles encubiertas como SmokeLoader y Cobalt Strike. Además, los atacantes explotan las redes vulnerables mediante el escaneo y la fuerza bruta de los servicios abiertos de Protocolo de escritorio remoto (RDP) para implementar el ransomware Phobos. 

Phobos ransomware opera estableciendo persistencia en los sistemas, aprovechando técnicas de inyección de procesos para ejecutar código malicioso y evadir la detección. También modifica el Registro de Windows para mantener la persistencia dentro de entornos comprometidos.

Esta publicación de blog explora cómo usar Wazuh para detectar y responder a los ataques de ransomware Phobos en terminales de Windows.

Comportamiento del ransomware Phobos

Phobos ransomware muestra varios comportamientos cuando infecta un terminal de Windows. Estos comportamientos incluyen lo siguiente:

  • Se replica a sí mismo en una ubicación oculta del sistema en el %AppData%directorio C:\Users\*\AppData\Local\phobos.exe.
  • Phobos ransomware se coloca en la carpeta Inicio y agrega claves de registro para persistencia.
  • El ransomware desactiva el firewall del sistema mediante el netshsímbolo del sistema:
netsh advfirewall desactiva el estado del perfil actual
firewall netsh configurado en modo opmode=deshabilitar
  • Utiliza los vssadmincomandos wmic, y wbadminpara eliminar instantáneas de volumen y catálogos, evitando así que sus víctimas recuperen sus archivos cifrados.
vssadmin eliminar sombras/todo/silencio
eliminación de instantáneas de wmic
wbadmin eliminar catálogo -silencioso
  • Modifica el registro de arranque e impide la capacidad de recuperación del sistema mediante el bcdeditcomando.
bcdedit /set {predeterminado} bootstatuspolicy ignorar todos los fallos
bcdedit /set {predeterminado} recuperación habilitada no
  • Utiliza el binario nativo de Windows mshta.exepara mostrar la nota de rescate a las víctimas.
mshta C:\%PERFIL DE USUARIO%\Desktop\info.hta
mshta C:\%PUBLIC%\Desktop\info.hta
mshta C:\info.hta

Archivo IoC analizado

tipo de hashValor
MD52809e15a3a54484e042fe65fffd17409
SHA256518544e56e8ccee401ffa1b0a01a10ce23e49ec21ec441c6c7c3951b01c1b19c

Infraestructura

Utilizamos la siguiente infraestructura para demostrar la detección del ransomware Phobos con Wazuh,

  • Un Wazuh OVA 4.7.3 prediseñado y listo para usar. Siga esta guía para descargar la máquina virtual.
  • Un punto final de víctima de Windows 11 con el agente Wazuh 4.7.3 instalado e inscrito en el servidor Wazuh. Consulte la guía de instalación para instalar el agente Wazuh. 

Detección con Wazuh

Utilizamos las siguientes técnicas para detectar el ransomware Phobos en el punto final de Windows infectado:

Reglas de detección

Usamos Sysmon para monitorear varios eventos del sistema en el punto final de Windows y crear reglas en el servidor Wazuh para detectar las actividades maliciosas del ransomware Phobos.

Punto final de Windows

Realice los siguientes pasos para configurar el agente Wazuh para capturar y enviar registros de Sysmon al servidor Wazuh para su análisis.

1. Descargue Sysmon desde la página de Microsoft Sysinternals .

2. Usando Powershell con privilegios de administrador, cree una Sysmoncarpeta en la C:\carpeta del punto final:

> Nuevo elemento -Directorio de tipo de elemento -Ruta C:\Sysmon

3. Extraiga el archivo Sysmon comprimido a la carpeta creada anteriormente C:\Sysmon.

> Expandir-Archivo -Path "<PATH>\Sysmon.zip" -DestinationPath "C:\Sysmon"

Reemplace <PATH>con la ruta donde Sysmon.zipse descargó.

4. Descargue el archivo de configuración de Sysmon – sysmonconfig.xml para C:\Sysmonusar el siguiente comando de Powershell:

> wget -Uri https://wazuh.com/resources/blog/emulación-de-tecnicas-de-ataque-y-deteccion-con-wazuh/sysmonconfig.xml -OutFile C:\Sysmon\sysmonconfig.xml

5. Cambie al directorio con el ejecutable de Sysmon y ejecute el siguiente comando para instalar e iniciar Sysmon usando PowerShell con privilegios de administrador:

> disco compacto C:\Sysmon
> .\Sysmon64.exe -accepteula -i sysmonconfig.xml

6. Agregue la siguiente configuración dentro del <ossec_config>bloque del C:\Program Files (x86)\ossec-agent\ossec.confarchivo:

< archivo local >
< ubicación > Microsoft-Windows-Sysmon/Operacional </ ubicación >
< log_format > canal de eventos </log_format>
</ archivo local >

7. Reinicie el agente Wazuh para aplicar los cambios de configuración ejecutando el siguiente comando de PowerShell como administrador:

> Reiniciar-Servicio -Nombre wazuh

servidor wazuh

Creamos reglas personalizadas para generar alertas cuando se detectan actividades de ransomware Phobos en el punto final de Windows. Realice los siguientes pasos para crear reglas de detección en el servidor Wazuh.

1. Cree un archivo de reglas personalizado phobos_ransomware_rules.xmlen /var/ossec/etc/rules/ directory:

# toque /var/ossec/etc/rules/phobos_ransomware_rules.xml

2. Agregue las reglas personalizadas para el ransomware Phobos a continuación a /var/ossec/etc/rules/phobos_ransomware_rules.xml:

< nombre del grupo = "fobos, ransomware" >
<!-- Creación de archivo sospechoso -->
< ID de regla = "100201" nivel = "12" >
< si_sid > 61613 </if_sid>
< nombre de campo = "win.eventdata.image" tipo = "pcre2" > \.exe </ campo >
< nombre de campo = "win.eventdata.targetFilename" tipo = "pcre2" > (?i)[cz]:\\\\Users\\\\.+\\\\AppData\\\\Local\\\\ . * exe </campo>
< descripción > El ejecutable $(win.eventdata.image) creó una copia de sí mismo $(win.eventdata.targetFilename) en una carpeta del sistema. </ descripción >
< mitra >
< identificación > T1059 </ identificación >
</ mitra >
</regla>
<!-- Detección de persistencia -->
< ID de regla = "100202" nivel = "15" >
<si_sid> 92300 </if_sid>
< nombre de campo = "win.eventdata.image" tipo = "pcre2" > (?i)\.exe </ campo >
< nombre de campo = "win.eventdata.eventType" tipo = "pcre2" > (?i)SetValue </ campo >
< nombre de campo = "win.eventdata.targetObject" tipo = "pcre2" > (?i)HKLM\\\\SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run\\\ \[A-Za-z0-9]+ </ campo >
< descripción > Nueva clave de ejecución agregada al registro por $(win.eventdata.image). </ descripción >
< mitra >
< identificación > T1547.001 </ identificación >
</ mitra >
</regla>
< id de regla = "100203" nivel = "12" >
< si_sid > 61613 </if_sid>
< nombre de campo = "win.eventdata.image" tipo = "pcre2" > \.exe </ campo >
< nombre de campo = "win.eventdata.targetFilename" tipo = "pcre2" > (?i)ProgramData\\\\Microsoft\\\\Windows\\\\Menú Inicio\\\\Programas\\\\Inicio\\ \\.+\.exe </ campo >
< descripción > $(win.eventdata.targetFilename) agregado a los programas de inicio por $(win.eventdata.image). </ descripción >
< mitra >
< identificación > T1547.001 </ identificación >
</ mitra >
</regla>
<!-- Deteriorar las defensas -->
< id de regla = "100204" nivel = "12" >
< si_sid > 92042 </if_sid>
< nombre de campo = "win.eventdata.CommandLine" tipo = "pcre2" > netsh advfirewall desactiva el estado del perfil actual </ campo >
< descripción > Firewall de Windows deshabilitado. </ descripción >
< mitra >
< identificación > T1562 </ identificación >
</ mitra >
</regla>
<!-- Inhibición de recuperación del sistema -->
< id de regla = "100205" nivel = "12" >
< si_sid > 61603 </if_sid>
< nombre de campo = "win.eventdata.CommandLine" tipo = "pcre2" > (?i)vssadmin\s\sdelete\sshadows\s\/all\s\/quiet </ campo >
< descripción > Instantánea de volumen eliminada usando $(win.eventdata.originalFileName). Se detectó posible actividad de ransomware. </ descripción >
< mitra >
< identificación > T1490 </ identificación >
< identificación > T1059.003 </ identificación >
</ mitra >
</regla>
< id de regla = "100206" nivel = "12" >
< si_sid > 61603 </if_sid>
< nombre de campo = "win.eventdata.CommandLine" tipo = "pcre2" > eliminación de instantáneas de wmic </ campo >
< descripción > $(win.eventdata.originalFileName) invocado para eliminar instantáneas. Se detectó posible actividad de ransomware. </ descripción >
< mitra >
< identificación > T1490 </ identificación >
< identificación > T1059.003 </ identificación >
</ mitra >
</regla>
< id de regla = "100207" nivel = "12" >
< si_sid > 61603 </if_sid>
< nombre de campo = "win.eventdata.CommandLine" tipo = "pcre2" > (?i)bcdedit\s\s\/set\s{default}\sbootstatuspolicy\signoreallfailures </ campo >
< descripción > Datos de configuración de arranque editados. </ descripción >
< mitra >
< identificación > T1059 </ identificación >
</ mitra >
</regla>
< id de regla = "100208" nivel = "12" >
< si_sid > 61603 </if_sid>
< nombre de campo = "win.eventdata.CommandLine" tipo = "pcre2" > (?i)bcdedit\s\s\/set\s{default}\srecoveryenabled\sNo </ campo >
< descripción > Recuperación del sistema deshabilitada. Posible actividad de ransomware detectada. </ descripción >
< mitra >
< identificación > T1059 </ identificación >
</ mitra >
</regla>
< id de regla = "100209" nivel = "12" >
< si_sid > 61603 </if_sid>
< nombre de campo = "win.eventdata.CommandLine" tipo = "pcre2" > (?i)wbadmin\s\sdelete\scatalog\s-quiet </ campo >
< descripción > Catálogo del sistema eliminado. Posible actividad de ransomware detectada. </ descripción >
< mitra >
< identificación > T1059 </ identificación >
</ mitra >
</regla>
<!-- Creación del archivo de nota de rescate -->
< ID de regla = "100210" nivel = "12" período de tiempo = "100" frecuencia = "2" >
< si_sid > 61613 </if_sid>
< nombre de campo = "win.eventdata.image" tipo = "pcre2" > \.exe </ campo >
< nombre de campo = "win.eventdata.targetFilename" tipo = "pcre2" > (?i)[cz]:\\\\.*8base </ campo >
< descripción > El archivo $(win.eventdata.targetFilename) se ha creado en varios directorios. Se detectó actividad del ransomware Phobos. </ descripción >
< mitra >
< identificación > T1059 </ identificación >
</ mitra >
</regla>
</ grupo >

A continuación se muestra la lista de ID de reglas que se activan cuando se detecta actividad asociada con el ransomware Phobos:

  • El ID de regla 100201se activa cuando el ransomware crea una copia de sí mismo en el %APPDATA%directorio.
  • El ID de regla 100202se activa cuando se agrega una nueva clave de ejecución al registro.
  • El ID de regla 100203se activa cuando se agrega un archivo ejecutable a la carpeta de inicio.
  • La ID de regla 100204se activa cuando el ransomware desactiva el firewall de Windows.
  • Los ID de las reglas 100205se 100206activan cuando las instantáneas se eliminan en el punto final de la víctima.
  • El ID de regla 100207se activa cuando se modifica la política de estado de inicio.
  • El ID de regla 100208se activa cuando la recuperación del sistema en el endpoint está deshabilitada.
  • El ID de regla 100209se activa cuando se elimina el catálogo de copias de seguridad del sistema.
  • El ID de regla 100210se activa cuando hay cambios en la extensión del archivo en el punto final de Windows después del cifrado.

3. Reinicie el servidor Wazuh para que los cambios surtan efecto:

# systemctl reiniciar wazuh-manager

Resultados de la detección

La siguiente captura de pantalla muestra las alertas generadas en el panel de Wazuh cuando se ejecuta el ransomware Phobos en el punto final de Windows de la víctima. Desde la pestaña Módulos en su panel de Wazuh, haga clic en Agentes para seleccionar el punto final de Windows, luego seleccione la pestaña Eventos de seguridad para ver las alertas generadas.

Alertas de Phobos Ransomware
Figura 1: Alertas de ransomware Phobos en el panel de Wazuh

Detectar y eliminar Phobos ransomware con VirusTotal y Active Response

VirusTotal es una plataforma que proporciona una API que puede detectar amenazas a la seguridad consultándola con URL, direcciones IP, dominios o hashes de archivos. Puede configurar Wazuh para enviar automáticamente solicitudes a la API de VirusTotal con los hashes de los archivos creados o modificados en el punto final monitoreado.

Configuramos el módulo de monitoreo de integridad de archivos Wazuh y VirusTotal para detectar y escanear archivos que se agregan o modifican en directorios específicos en el endpoint de Windows. Además, configuramos el módulo de respuesta activa de Wazuh para eliminar cualquier archivo que VirusTotal haya identificado como malicioso.

Punto final de Windows

Configure el módulo Wazuh FIM y cree un script de respuesta activa siguiendo los pasos a continuación.

Configurando el módulo FIM

1. Para monitorear la intrusión del archivo de ransomware Phobos, agregue la siguiente configuración al C:\Program Files (x86)\ossec-agent\ossec.confarchivo. En nuestro caso configuramos el módulo FIM para monitorear la Downloadscarpeta:

<ossec_config>
< comprobación del sistema >
< directorios check_all = "yes" realtime = "yes" > C:\Users\*\Downloads </ directorios >
</syscheck>
</ossec_config>

2. Reinicie el agente Wazuh para aplicar los cambios ejecutando el siguiente comando de PowerShell como administrador:

> Reiniciar-Servicio -Nombre wazuh

Configuración del script Python de respuesta activa

Creamos un script de respuesta activa para eliminar el ransomware Phobos cuando VirusTotal lo identifica como una amenaza.

1. Descargue la última versión de Python y ejecute el instalador. Seleccione las casillas de verificación Usar privilegios de administrador al instalar py.exe y Agregar Python.exe a la RUTA en el cuadro de diálogo del instalador.

2. Ejecute el siguiente comando con privilegios administrativos para instalar Pyinstaller a través del símbolo del sistema:

> instalación de pip -U pyinstaller

3. Cree un script de respuesta activo remove-threat.pyen el terminal de Windows con el siguiente contenido:

#!/usr/bin/python3
# Copyright (C) 2015-2022, Wazuh Inc.
# Reservados todos los derechos.
importar sistema operativo
sistema de importación
importar json
importar fecha y hora
si os.nombre == 'nt' :
LOG_FILE = "C:\\Archivos de programa (x86)\\ossec-agent\\active-response\\active-responses.log"
demás :
LOG_FILE = "/var/ossec/logs/active-responses.log"
AGREGAR_COMMAND = 0
BORRAR_COMMAND = 1
CONTINUE_COMMAND = 2
ABORTAR_COMMAND = 3
OS_SUCCESS = 0
SO_INVÁLIDO = -1
mensaje de clase :
def __init__ ( yo ) :
auto.alerta = ""
auto.comando = 0
def write_debug_file ( ar_name, msg ) :
con open ( LOG_FILE, mode= "a" ) como log_file:
archivo de registro. escribir ( str ( datetime.datetime. now () . strftime ( '%Y/%m/%d %H:%M:%S' )) + " " + ar_name + ": " + msg + "\n" )
def setup_and_check_message ( argv ) :
# recibir alerta de stdin
cadena_entrada = ""
para línea en sys.stdin:
cadena_entrada = línea
romper
intentar :
datos = json. cargas ( input_str )
excepto ValorError:
write_debug_file ( argv [ 0 ] , 'Error al decodificar JSON, formato de entrada no válido' )
mensaje.comando = OS_INVALID
mensaje de respuesta
mensaje.alerta = datos
comando = datos. obtener ( "comando" )
si comando == "agregar" :
mensaje.comando = ADD_COMMAND
comando elif == "eliminar" :
mensaje.comando = BORRAR_COMMAND
demás :
mensaje.comando = OS_INVALID
write_debug_file ( argv [ 0 ] , 'Comando no válido: ' + comando )
mensaje de respuesta
def enviar_claves_y_comprobar_mensaje ( argv, claves ) :
# construir y enviar mensaje con claves
claves_msg = json. volcados ({ "versión" : 1 , "origen" : { "nombre" : argv [ 0 ] , "módulo" : "respuesta activa" } , "comando" : "check_keys" , "parámetros" : { "claves" :llaves }})
write_debug_file ( argv [ 0 ] , claves_msg )
imprimir ( keys_msg )
sys.stdout. rubor ()
# leer la respuesta del mensaje anterior
cadena_entrada = ""
mientras que Verdadero :
línea = sys.stdin. línea de lectura ()
si línea:
cadena_entrada = línea
romper
# write_debug_file(argv[0], cadena_entrada)
intentar :
datos = json. cargas ( input_str )
excepto ValorError:
write_debug_file ( argv [ 0 ] , 'Error al decodificar JSON, formato de entrada no válido' )
mensaje de respuesta
acción = datos. obtener ( "comando" )
si "continuar" == acción:
ret = CONTINUE_COMMAND
elif "abortar" == acción:
ret = ABORT_COMMAND
demás :
ret = OS_INVALID
write_debug_file ( argv [ 0 ] , "Valor no válido de 'comando'" )
regresar
def principal ( argv ) :
write_debug_file ( argv [ 0 ] , "Iniciado" )
# validar json y obtener el comando
mensaje = setup_and_check_message ( argv )
si msg.command < 0 :
sistema. salir ( OS_INVALID )
si msg.command == ADD_COMMAND:
alerta = msg.alert [ "parámetros" ][ "alerta" ]
teclas = [ alerta [ "regla" ][ "id" ]]
acción = enviar_claves_y_comprobar_mensaje ( argv, claves )
# si es necesario, cancelar la ejecución
si acción! = CONTINUE_COMMAND:
si acción == ABORT_COMMAND:
write_debug_file ( argv [ 0 ] , "Abortado" )
sistema. salir ( OS_SUCCESS )
demás :
write_debug_file ( argv [ 0 ] , "comando no válido" )
sistema. salir ( OS_INVALID )
intentar :
os. eliminar ( msg.alert [ "parámetros" ][ "alerta" ][ "datos" ][ "virustotal" ][ "fuente" ][ "archivo" ])
write_debug_file ( argv [ 0 ] , json. dumps ( msg.alert ) + "Amenaza eliminada con éxito" )
excepto OSError como error:
write_debug_file ( argv [ 0 ] , json. dumps ( msg.alert ) + "Error al eliminar la amenaza" )
demás :
write_debug_file ( argv [ 0 ] , "comando no válido" )
write_debug_file ( argv [ 0 ] , "Finalizado" )
sistema. salir ( OS_SUCCESS )
si __nombre__ == "__principal__" :
principal ( sys.argv )

La os.remove()función en el script Python de respuesta activa maneja la eliminación del archivo malicioso:

os. eliminar ( msg.alert [ "parámetros" ][ "alerta" ][ "datos" ][ "virustotal" ][ "fuente" ][ "archivo" ])

4. Convierta el script de Python remove-threat.py  en un archivo ejecutable ejecutando el siguiente comando:

> pyinstaller -F eliminar-amenaza.py

5. Mueva el archivo ejecutable remove-threat.exede la \distcarpeta bajo su directorio de trabajo actual a C:\Program Files (x86)\ossec-agent\active-response\bin.

6. Reinicie el agente Wazuh para aplicar los cambios ejecutando el siguiente comando de PowerShell como administrador:

> Reiniciar-Servicio -Nombre wazuh

Servidor wazuh

Configuramos VirusTotal para escanear los archivos monitoreados por el punto final de Windows contra motores de malware públicos en busca de comportamiento malicioso. En consecuencia, configuramos el módulo de respuesta activa de Wazuh para ejecutar automáticamente el ejecutable de Python cuando VirusTotal marca los archivos escaneados como maliciosos.

Configuración de VirusTotal

1. Agregue la siguiente configuración al /var/ossec/etc/ossec.confarchivo para escanear los archivos con VirusTotal:

<ossec_config>
< integración >
< nombre > virustotal </ nombre >
< api _key > < API _KEY ></api_key> <!-- Reemplace con su clave API de VirusTotal -->
<regla_id> 554,550 </regla_id>
<alerta_formato> json </alerta_formato>
</ integración >
</ossec_config>

Nota: Reemplace <API_KEY>con su clave API de VirusTotal

Configuración de respuesta activa

1. Agregue la siguiente configuración al /var/ossec/etc/ossec.confarchivo:

<ossec_config>
<comando>
< nombre > eliminar amenaza </ nombre >
< ejecutable > remove-threat.exe </ ejecutable >
< tiempo de espera _permitido > no </timeout_allowed>
</comando>
<respuesta-activa>
< deshabilitado > no </ deshabilitado >
< comando > eliminar amenaza </ comando >
< ubicación > local </ ubicación >
<reglas_id> 87105 </rules_id>
</respuesta-activa>
</ossec_config>

2. Agregue las siguientes reglas al /var/ossec/etc/rules/local_rules.xmlarchivo para generar alertas cuando el módulo de respuesta activa elimine con éxito los archivos maliciosos o no.

< nombre del grupo = "virustotal", >
<!-- Reglas de detección de VirusTotal -->
< ID de regla = "200201" nivel = "12" >
< si_sid > 657 </if_sid>
< partido > Amenaza eliminada con éxito </ partido >
< descripción > $(parameters.program) eliminó la amenaza ubicada en $(parameters.alert.data.virustotal.source.file) </ descripción >
</regla>
< ID de regla = "200202" nivel = "12" >
< si_sid > 657 </if_sid>
< partido > Error al eliminar la amenaza </ partido >
< descripción > Error al eliminar la amenaza ubicada en $(parameters.alert.data.virustotal.source.file) </ descripción >
</regla>
</ grupo >

Dónde:

  • Rule ID 200201genera una alerta cuando el módulo de respuesta activo elimina con éxito la amenaza.
  • Rule ID 200202genera una alerta cuando el módulo de respuesta activo no logra eliminar la amenaza.

3. Reinicie el administrador de Wazuh para aplicar los cambios de configuración:

# systemctl reiniciar wazuh-manager

Resultado de respuesta activa

Se agrega una variante del ransomware Phobos a la Downloadcarpeta del terminal de Windows para probar la configuración. La siguiente captura de pantalla muestra el monitoreo de la integridad del archivo y las alertas de respuesta activa en el panel de Wazuh.

Alertas de Respuesta Activa de VirusTotal
Figura 2: Alertas de respuesta activa y VirusTotal en el panel de Wazuh

Conclusión

En esta publicación de blog, mostramos cómo detectar y responder al ransomware Phobos en un endpoint de Windows con Wazuh. Utilizamos la integración de Sysmon para enriquecer los registros de eventos de Windows desde el punto final de la víctima y luego creamos reglas para detectar actividades maliciosas asociadas con el ransomware Phobos. También combinamos VirusTotal con la respuesta Wazuh Active para escanear y eliminar el archivo del ransomware Phobos del punto final de la víctima.

Wazuh es una plataforma de seguridad empresarial gratuita y de código abierto para la detección de amenazas, respuesta a incidentes y cumplimiento. Wazuh se integra perfectamente con soluciones y tecnologías de terceros. Wazuh también tiene una comunidad en constante crecimiento donde se apoya a los usuarios. Para obtener más información sobre Wazuh, consulte nuestra documentación y publicaciones de blog .

Fuente: wazuh.com

No hay comentarios.:

Publicar un comentario

Las bandas de ransomware reclutan pentesters para mejorar la efectividad de sus ataques

 Estos grupos están contratando figuras de este tipo para probar si su software tendría la capacidad de penetrar en las organizaciones. Much...