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.

Leer sobre ransomware operado por humanos

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

Ejemplo de una consulta consolidada para una actividad de ransomware en el portal de Microsoft Defender

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:

Microsoft 365:

Microsoft Azure:

Microsoft Defender for Cloud Apps:

Entradas de blog del equipo de Seguridad de Microsoft:

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.