Buscar ransomware
Se aplica a:
- Microsoft Defender XDR
Ransomware evolucionó rápidamente de ser un malware básico simple que afecta a usuarios de equipos individuales a una amenaza empresarial que está afectando gravemente a los sectores e instituciones gubernamentales. Aunque Microsoft Defender XDR proporciona muchas funcionalidades que detectan y bloquean el ransomware y las actividades de intrusiones asociadas, realizar comprobaciones proactivas para detectar signos de peligro puede ayudar a mantener la red protegida.
Con la búsqueda avanzada en Microsoft Defender XDR, puede crear consultas que busquen artefactos individuales asociados a la actividad de ransomware. También puede ejecutar consultas más sofisticadas que puedan buscar signos de actividad y sopesar esos signos para encontrar dispositivos que requieran atención inmediata.
Signos de actividad de ransomware
Los investigadores de seguridad de Microsoft han observado varios artefactos comunes pero sutiles en muchas campañas de ransomware lanzadas por intrusos sofisticados. Estos signos implican principalmente el uso de herramientas del sistema para prepararse para el cifrado, evitar la detección y evidencia forense clara.
Actividad de ransomware | Herramientas comunes | Intent |
---|---|---|
Detener procesos | taskkill.exe, net stop | Asegúrese de que las distintas aplicaciones no bloquean los archivos destinados al cifrado. |
Desactivar servicios | sc.exe | - Asegúrese de que las distintas aplicaciones no bloquean los archivos destinados al cifrado. - Impedir que el software de seguridad interrumpa el cifrado y otra actividad ransomware. - Impedir que el software de copia de seguridad cree copias recuperables. |
Eliminación de registros y archivos | cipher.exe, wevtutil,fsutil.exe | Quite las pruebas forenses. |
Eliminar instantáneas | vsadmin.exe, wmic.exe | Quite las instantáneas de unidad que se pueden usar para recuperar archivos cifrados. |
Eliminación y detención de copias de seguridad | wbadmin.exe | Elimine las copias de seguridad existentes y detenga las tareas de copia de seguridad programadas, lo que impide la recuperación después del cifrado. |
Modificación de la configuración de arranque | bcdedit.exe | Desactive las advertencias y las reparaciones automáticas después de errores de arranque que puedan deberse al proceso de cifrado. |
Desactivar las herramientas de recuperación | schtasks.exe, regedit.exe, | Desactive La restauración del sistema y otras opciones de recuperación del sistema. |
Comprobar si hay signos individuales de actividad de ransomware
Muchas actividades que constituyen un comportamiento ransomware, incluidas las actividades descritas en la sección anterior, pueden ser benignas. Al usar las siguientes consultas para localizar ransomware, ejecute más de una consulta para comprobar si los mismos dispositivos muestran varios signos de posible actividad de ransomware.
Detener varios procesos mediante taskkill.exe
Esta consulta comprueba si hay intentos de detener al menos 10 procesos independientes mediante la utilidad taskkill.exe . Ejecutar consulta
// Find attempts to stop processes using taskkill.exe
DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "taskkill.exe"
| summarize taskKillCount = dcount(ProcessCommandLine), TaskKillList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)
| where taskKillCount > 10
Detención de procesos mediante net stop
Esta consulta comprueba si hay intentos de detener al menos 10 procesos independientes mediante el comando net stop . Ejecutar consulta
// Find attempts to stop processes using net stop
DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "net.exe" and ProcessCommandLine has "stop"
| summarize netStopCount = dcount(ProcessCommandLine), NetStopList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)
| where netStopCount > 10
Eliminación de datos en varias unidades mediante cipher.exe
Esta consulta comprueba si hay intentos de eliminar datos en varias unidades mediante cipher.exe. Esta actividad se realiza normalmente mediante ransomware para evitar la recuperación de datos después del cifrado. Ejecutar consulta
// Look for cipher.exe deleting data from multiple drives
DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "cipher.exe"
// cipher.exe /w flag used for deleting data
| where ProcessCommandLine has "/w"
| summarize CipherCount = dcount(ProcessCommandLine),
CipherList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 1m)
// cipher.exe accessing multiple drives in a short timeframe
| where CipherCount > 1
Eliminación de pruebas forenses de registros de eventos mediante wevtutil
Esta consulta comprueba si hay intentos de borrar al menos 10 entradas de registro de registros de eventos mediante wevtutil. Ejecutar consulta
// Look for use of wevtutil to clear multiple logs
DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has "WEVTUTIL" and ProcessCommandLine has "CL"
| summarize LogClearCount = dcount(ProcessCommandLine), ClearedLogList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)
| where LogClearCount > 10
Desactivación de servicios mediante sc.exe
Esta consulta comprueba si hay intentos de desactivar al menos 10 servicios existentes mediante sc.exe. Ejecutar consulta
// Look for sc.exe disabling services
DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has "sc" and ProcessCommandLine has "config" and ProcessCommandLine has "disabled"
| summarize ScDisableCount = dcount(ProcessCommandLine), ScDisableList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)
| where ScDisableCount > 10
Desactivar la restauración del sistema
Esta consulta identifica los intentos de detener la restauración del sistema e impedir que el sistema cree puntos de restauración, que se pueden usar para recuperar datos cifrados por ransomware. Ejecutar consulta
DeviceProcessEvents
//Pivoting for rundll32
| where InitiatingProcessFileName =~ 'rundll32.exe'
//Looking for empty command line
and InitiatingProcessCommandLine !contains " " and InitiatingProcessCommandLine != ""
//Looking for schtasks.exe as the created process
and FileName in~ ('schtasks.exe')
//Disabling system restore
and ProcessCommandLine has 'Change' and ProcessCommandLine has 'SystemRestore'
and ProcessCommandLine has 'disable'
Eliminación de copia de seguridad
Esta consulta identifica el uso de wmic.exe para eliminar instantáneas antes del cifrado. Ejecutar consulta
DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName
Comprobar si hay varios signos de actividad de ransomware
En lugar de ejecutar varias consultas por separado, también puede usar una consulta completa que compruebe si hay varios signos de actividad de ransomware para identificar los dispositivos afectados. La siguiente consulta consolidada:
- Busca signos relativamente concretos y sutiles de actividad ransomware
- Sopesa la presencia de estos signos
- Identifica los dispositivos con una mayor probabilidad de ser destinos de ransomware
Cuando se ejecuta, esta consulta consolidada devuelve una lista de dispositivos que han mostrado varios signos de ataque. También se muestra el recuento de cada tipo de actividad de ransomware. Para ejecutar esta consulta consolidada, cópiela directamente en el editor de consultas de búsqueda avanzada.
// Find attempts to stop processes using taskkill.exe
let taskKill = DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "taskkill.exe"
| summarize taskKillCount = dcount(ProcessCommandLine), TaskKillList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)
| where taskKillCount > 10;
// Find attempts to stop processes using net stop
let netStop = DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "net.exe" and ProcessCommandLine has "stop"
| summarize netStopCount = dcount(ProcessCommandLine), NetStopList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)
| where netStopCount > 10;
// Look for cipher.exe deleting data from multiple drives
let cipher = DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "cipher.exe"
// cipher.exe /w flag used for deleting data
| where ProcessCommandLine has "/w"
| summarize CipherCount = dcount(ProcessCommandLine),
CipherList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 1m)
// cipher.exe accessing multiple drives in a short timeframe
| where CipherCount > 1;
// Look for use of wevtutil to clear multiple logs
let wevtutilClear = DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has "WEVTUTIL" and ProcessCommandLine has "CL"
| summarize LogClearCount = dcount(ProcessCommandLine), ClearedLogList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)
| where LogClearCount > 10;
// Look for sc.exe disabling services
let scDisable = DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has "sc" and ProcessCommandLine has "config" and ProcessCommandLine has "disabled"
| summarize ScDisableCount = dcount(ProcessCommandLine), ScDisableList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)
| where ScDisableCount > 10;
// Main query for counting and aggregating evidence
DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "vssadmin.exe" and ProcessCommandLine has_any("list shadows", "delete shadows")
or FileName =~ "fsutil.exe" and ProcessCommandLine has "usn" and ProcessCommandLine has "deletejournal"
or ProcessCommandLine has("bcdedit") and ProcessCommandLine has_any("recoveryenabled no", "bootstatuspolicy ignoreallfailures")
or ProcessCommandLine has "wbadmin" and ProcessCommandLine has "delete" and ProcessCommandLine has_any("backup", "catalog", "systemstatebackup")
or (ProcessCommandLine has "wevtutil" and ProcessCommandLine has "cl")
or (ProcessCommandLine has "wmic" and ProcessCommandLine has "shadowcopy delete")
or (ProcessCommandLine has "sc" and ProcessCommandLine has "config" and ProcessCommandLine has "disabled")
| extend Bcdedit = iff(ProcessCommandLine has "bcdedit" and ProcessCommandLine has_any("recoveryenabled no", "bootstatuspolicy ignoreallfailures"), 1, 0)
| extend ShadowCopyDelete = iff (ProcessCommandLine has "shadowcopy delete", 1, 0)
| extend VssAdminShadows = iff(ProcessCommandLine has "vssadmin" and ProcessCommandLine has_any("list shadows", "delete shadows"), 1, 0)
| extend Wbadmin = iff(ProcessCommandLine has "wbadmin" and ProcessCommandLine has "delete" and ProcessCommandLine has_any("backup", "catalog", "systemstatebackup"), 1,0)
| extend Fsutil = iff(ProcessCommandLine has "fsutil" and ProcessCommandLine has "usn" and ProcessCommandLine has "deletejournal", 1, 0)
| summarize FirstActivity = min(Timestamp), ReportId = any(ReportId), Commands = make_set(ProcessCommandLine) by DeviceId, Fsutil, Wbadmin, ShadowCopyDelete, Bcdedit, VssAdminShadows, bin(Timestamp, 6h)
// Joining extra evidence
| join kind=leftouter (wevtutilClear) on $left.DeviceId == $right.DeviceId
| join kind=leftouter (cipher) on $left.DeviceId == $right.DeviceId
| join kind=leftouter (netStop) on $left.DeviceId == $right.DeviceId
| join kind=leftouter (taskKill) on $left.DeviceId == $right.DeviceId
| join kind=leftouter (scDisable) on $left.DeviceId == $right.DeviceId
| extend WevtutilUse = iff(LogClearCount > 10, 1, 0)
| extend CipherUse = iff(CipherCount > 1, 1, 0)
| extend NetStopUse = iff(netStopCount > 10, 1, 0)
| extend TaskkillUse = iff(taskKillCount > 10, 1, 0)
| extend ScDisableUse = iff(ScDisableCount > 10, 1, 0)
// Adding up all evidence
| mv-expand CommandList = NetStopList, TaskKillList, ClearedLogList, CipherList, Commands, ScDisableList
// Format results
| summarize BcdEdit = iff(make_set(Bcdedit) contains "1" , 1, 0), NetStop10PlusCommands = iff(make_set(NetStopUse) contains "1", 1, 0), Wevtutil10PlusLogsCleared = iff(make_set(WevtutilUse) contains "1", 1, 0),
CipherMultipleDrives = iff(make_set(CipherUse) contains "1", 1, 0), Fsutil = iff(make_set(Fsutil) contains "1", 1, 0), ShadowCopyDelete = iff(make_set(ShadowCopyDelete) contains "1", 1, 0),
Wbadmin = iff(make_set(Wbadmin) contains "1", 1, 0), TaskKill10PlusCommand = iff(make_set(TaskkillUse) contains "1", 1, 0), VssAdminShadow = iff(make_set(VssAdminShadows) contains "1", 1, 0),
ScDisable = iff(make_set(ScDisableUse) contains "1", 1, 0), TotalEvidenceCount = count(CommandList), EvidenceList = make_set(Commands), StartofBehavior = min(FirstActivity) by DeviceId, bin(Timestamp, 1d)
| extend UniqueEvidenceCount = BcdEdit + NetStop10PlusCommands + Wevtutil10PlusLogsCleared + CipherMultipleDrives + Wbadmin + Fsutil + TaskKill10PlusCommand + VssAdminShadow + ScDisable + ShadowCopyDelete
| where UniqueEvidenceCount > 2
Descripción y ajuste de los resultados de la consulta
La consulta consolidada devuelve los resultados siguientes:
DeviceId: identifica el dispositivo afectado.
TimeStamp: la primera vez que se observó cualquier signo de actividad de ransomware en el dispositivo
Signos específicos de actividad: el recuento de cada signo que se muestra en varias columnas, como BcdEdit o FsUtil
TotalEvidenceCount: número de signos observados
UniqueEvidenceCount: número de tipos de signos observados
Resultados de la consulta que muestran los dispositivos afectados y recuentos de varios signos de actividad de ransomware
De forma predeterminada, el resultado de la consulta enumera solo los dispositivos que tienen más de dos tipos de actividad de ransomware. Para ver todos los dispositivos con cualquier signo de actividad de ransomware, modifique el siguiente where
operador y establezca el número en cero (0). Para ver menos dispositivos, establezca un número mayor.
| where UniqueEvidenceCount > 2
Más recursos de ransomware
Información clave de Microsoft:
- La creciente amenaza de ransomware, entrada de blog de Microsoft On the Issues del 20 de julio de 2021
- Ransomware operado por humanos
- Implementación rápida de prevención de ransomware
- Informe de Microsoft Digital Defense 2021 (vea las páginas 10-19)
- Ransomware: un informe general y continuo de análisis de amenazas en el portal de Microsoft Defender
Microsoft 365:
- Implementar la protección contra ransomware para el inquilino de Microsoft 365
- Maximizar la resistencia de ransomware con Azure y Microsoft 365
- Cuadernos de estrategias de respuesta a incidentes de ransomware
- Protección de malware y ransomware
- Proteger su PC Windows de ransomware
- Control de ransomware en SharePoint Online
- Informes de análisis de amenazas para ransomware en el portal de Microsoft Defender
Microsoft Azure:
- Defensas de Azure para los ataques de ransomware
- Maximizar la resistencia de ransomware con Azure y Microsoft 365
- Plan de restauración y copia de seguridad para la protección contra ransomware
- Ayuda para la protección contra ransomware con Microsoft Azure Backup (vídeo de 26 minutos)
- Recuperación de una identidad en peligro
- Detección avanzada de ataques de varias fases en Microsoft Sentinel
- Detección de difusión para ransomware en Microsoft Sentinel
Microsoft Defender for Cloud Apps:
Entradas de blog del equipo de Seguridad de Microsoft:
Tres pasos para prevenir y recuperarse del ransomware (septiembre de 2021)
Una guía para combatir el ransomware operado por personas: Parte 1 (septiembre de 2021)
Pasos clave sobre cómo el equipo de detección y respuesta de Microsoft (DART) lleva a cabo investigaciones de incidentes de ransomware.
Una guía para combatir el ransomware operado por personas: Parte 2 (septiembre de 2021)
Recomendaciones y procedimientos recomendados.
-
Consulte la sección Ransomware.
Ataques de ransomware operados por humanos: Un desastre evitable (marzo de 2020)
Incluye análisis de cadenas de ataques, de ataques reales.
Respuesta de ransomware: ¿pagar o no pagar? (diciembre de 2019)
Norsk Hydro responde ante ataques de ransomware con transparencia (diciembre de 2019)
Sugerencia
¿Desea obtener más información? Engage con la comunidad de seguridad de Microsoft en nuestra comunidad tecnológica: Microsoft Defender XDR Tech Community.