Detección de malware con Microsoft Sentinel para Azure Firewall

Un malware es cualquier software diseñado para causar daño, interrupciones o poner en peligro la seguridad y la funcionalidad de los sistemas informáticos, las redes o los dispositivos. Incluye diversos tipos de amenazas, como virus, gusanos, troyanos, ransomware, spyware, adware, rootkits, etc. El malware puede tener varios efectos negativos, como robar datos confidenciales, cifrar o eliminar archivos, mostrar anuncios no deseados, ralentizar el rendimiento o incluso tomar el control del dispositivo.

Identificar y eliminar el malware de un sistema o una red es importante, y existen varias técnicas de detección, que se pueden basar en firmas, comportamientos, heurística o aprendizaje automático. La detección de malware es fundamental para proteger la seguridad y la privacidad de los usuarios, así como la integridad y disponibilidad de sistemas y redes.

La característica IDPS de Azure Firewall detecta y deniega automáticamente el malware de forma predeterminada y puede impedir que las cargas de trabajo en la nube se infecten. Puede mejorar aún más esta funcionalidad si usa la detección y respuesta automatizadas con consultas de detección precompiladas y Microsoft Sentinel. En este artículo, explorará cómo detectar algún malware común que se encuentra en los registros de Azure Firewall, como Coinminer, Cl0p y Sunburst mediante consultas de detección de KQL predefinidas para Azure Firewall.

Estas detecciones permiten a los equipos de seguridad recibir alertas de Sentinel cuando las máquinas de la red interna solicitan conexiones a nombres de dominio o direcciones IP en Internet vinculados a indicadores conocidos de peligro (IOC), tal como se define en la consulta de reglas de detección. Las detecciones de tipo verdadero positivo deben considerarse indicadores de riesgo (IOC). Entonces, los equipos de respuesta a incidentes de seguridad pueden iniciar una respuesta e implementar acciones de corrección personalizadas adecuadas en función de estas señales de detección.

Si desea obtener instrucciones para implementar las reglas analíticas mediante las siguientes consultas, consulte Detección de nuevas amenazas mediante Microsoft Sentinel con Azure Web Application Firewall.

Vulnerabilidades de seguridad comunes de malware

Las siguientes vulnerabilidades de seguridad de malware son habituales en las redes actuales.

Coinminer

Debido al aumento reciente de la minería de criptomoneda, se usan cada vez más unidades de procesamiento de red de alto rendimiento. La informática distribuida se está expandiendo y el uso de software de minería de datos se ha generalizado, tanto en contextos legales como ilegales.

Coinminer representa un tipo de malware que mina criptomonedas con los recursos de hardware de una víctima que no sospecha nada. La unidad de procesamiento de gráficos (GPU) del equipo de la víctima se usa para ejecutar varios scripts destinados a la minería de criptomonedas y a calcular hashes de bloques de transacciones.

Para mitigar el riesgo de estas amenazas, se deben implementar medidas activas en los puntos de entrada típicos. Esto incluye garantizar que el software de Jupyter se implemente con la autenticación, configuración y actualización de aplicaciones web adecuadas para minimizar las vulnerabilidades, controlar el acceso externo a Docker y seguir los principios adicionales de Confianza cero.

La siguiente consulta de detección se puede usar para crear una regla de análisis en Sentinel para detectar y responder automáticamente a este malware mediante registros de Azure Firewall.

// Coinminer Detection Rule
// Detects suspicious traffic patterns associated with coinmining activity in Azure Firewall logs for Sentinel

let coinminerPorts = dynamic(["2375", "2376", "2377", "4243", "4244"]); // List of known coinminer ports  
//Assign the known domains to a variable
let coinminerdomains = dynamic(["teamtnt.red", "kaiserfranz.cc", "45.9.148.123"]); // List of known coinminer domains  

(union isfuzzy=true 

(AzureDiagnostics  
| where ResourceType == "AZUREFIREWALLS"  
| where Category == "AzureFirewallApplicationRule" 
| parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' DestinationPort '. Action:' Action 
| extend action_s = column_ifexists("action_s", ""), transactionId_g = column_ifexists("transactionId_g", "")  
| where DestinationPort in (coinminerPorts) // Filter traffic on known coinminer ports  
| summarize CoinminerAttempts = count() by DestinationHost, DestinationPort  
| where CoinminerAttempts > 10 // Adjust threshold as needed  
), 

(AZFWIdpsSignature 
| where DestinationPort in (coinminerPorts) 
| summarize CoinminerAttempts = count() by DestinationIp, DestinationPort 
| where CoinminerAttempts > 10 // Adjust threshold as needed   

), 

(AzureDiagnostics  
| where ResourceType == "AZUREFIREWALLS"  
| where Category == "AzureFirewallDnsProxy"  
| parse msg_s with "DNS Request: " ClientIP ":" ClientPort " - " QueryID " " Request_Type " " Request_Class " " Request_Name ". " Request_Protocol " " Request_Size " " EDNSO_DO " " EDNS0_Buffersize " " Response_Code " " Response_Flags " " Response_Size " " Response_Duration  
| where Request_Name has_any(coinminerdomains)  
| extend DNSName = Request_Name  
| extend IPCustomEntity = ClientIP  

),  

(AzureDiagnostics  
| where ResourceType == "AZUREFIREWALLS"  
| where Category == "AzureFirewallApplicationRule"  
| parse msg_s with Protocol ' request from ' SourceHost ':' SourcePort 'to' DestinationHost ':' DestinationPort '. Action:' Action  
| where isnotempty(DestinationHost)  
| where DestinationHost has_any(coinminerdomains)  
| extend DNSName = DestinationHost  
| extend IPCustomEntity = SourceHost), 

(AZFWApplicationRule 
| where isnotempty(Fqdn) 
| where Fqdn has_any (coinminerdomains)   
| extend DNSName = Fqdn  
| extend IPCustomEntity = SourceIp), 

(AZFWDnsQuery 
| where isnotempty(QueryName) 
| where QueryName has_any (coinminerdomains) 
| extend DNSName = QueryName 
| extend IPCustomEntity = SourceIp 

), 

(AZFWIdpsSignature 
| where DestinationIp has_any (coinminerdomains) 
| extend DNSName = DestinationIp 
| extend IPCustomEntity = SourceIp 

), 

(AZFWIdpsSignature 
| where Description contains "coinminer" 
| extend DNSName = DestinationIp 
| extend IPCustomEntity = SourceIp 
) 

)

Cl0p

Cl0p es un ransomware que aplica claves de cifrado distintivas a los archivos de la víctima y luego le pide un rescate a cambio de descifrar sus archivos. Usa una vulnerabilidad en el software de transferencia de datos MOVEit y envía correos electrónicos de suplantación de identidad a numerosos empleados, con el fin de enviarles una versión de cl0p. A continuación, usa herramientas como truebot y dewmode para moverse lateralmente dentro de la red y filtrar datos. El ransomware cifra los archivos mediante el algoritmo de cifrado AES-256.

Las vulnerabilidades Cl0p incluyen CVE-2023-35036, CVE-2023-34362 y CVE-2023-35708. En junio de 2023, el FBI y la CISA publicaron un comunicado de prensa sobre esta explotación. Varias organizaciones gubernamentales y universidades del Medio Oeste de EE. UU. han recibido ataques por cl0p. Aerolíneas, cadenas de TV y tiendas minoristas basadas en el Reino Unido son las víctimas más recientes de los criminales que usan ransomware cl0p.

La siguiente consulta de detección se puede usar para crear una regla de análisis en Sentinel para detectar y responder automáticamente a este malware mediante registros de Azure Firewall.

Consulta de detección para Cl0p: Detecciones de malware de firewall para Sentinel/Detección: consulta de reglas analíticas para Cl0p.json

Sunburst

Este malware ataca a las víctimas con cadenas del algoritmo de generación de dominios (DGA) para eludir la detección y establecer un ataque por puerta trasera de mando y control. Las herramientas de seguridad tienen dificultades a veces a la hora de encontrar cadenas DGA para identificar los dominios usados por el malware, debido al patrón usado en la sintaxis y al constante cambio de la información del dominio.

La siguiente consulta de detección se puede usar para crear una regla de análisis en Sentinel para detectar y responder automáticamente a este malware mediante registros de Azure Firewall.

Consulta de detección de malware Sunburst: detecciones de malware de firewall para Sentinel/Detección: consulta de reglas analíticas para Sunburst.json