Freigeben über


Suche nach Ransomware

Gilt für:

  • Microsoft Defender XDR

Ransomware entwickelte sich schnell von einfacher Schadsoftware, die einzelne Computerbenutzer betrifft, zu einer Unternehmensbedrohung, die sich stark auf Branchen und Regierungsinstitutionen auswirkt. Während Microsoft Defender XDR viele Funktionen bietet, die Ransomware und zugehörige Angriffsaktivitäten erkennen und blockieren, kann die Durchführung proaktiver Überprüfungen auf Anzeichen von Kompromittierung dazu beitragen, Ihr Netzwerk zu schützen.

Lesen Sie mehr über von Menschen betriebene Ransomware

Mit der erweiterten Suche in Microsoft Defender XDR können Sie Abfragen erstellen, die einzelne Artefakte im Zusammenhang mit Ransomware-Aktivitäten finden. Sie können auch komplexere Abfragen ausführen, die nach Anzeichen einer Aktivität suchen und diese Anzeichen abwägen können, um Geräte zu finden, die sofortige Aufmerksamkeit erfordern.

Anzeichen einer Ransomware-Aktivität

Microsoft-Sicherheitsforscher haben verschiedene gängige, aber subtile Artefakte in vielen Ransomware-Kampagnen beobachtet, die von anspruchsvollen Eindringlingen gestartet wurden. Diese Anzeichen umfassen hauptsächlich die Verwendung von Systemtools, um die Verschlüsselung vorzubereiten, die Erkennung zu verhindern und forensische Beweise zu klären.

Ransomware-Aktivität Allgemeine Tools Intent
Beenden von Prozessen taskkill.exe, net stop Stellen Sie sicher, dass Dateien, die für die Verschlüsselung vorgesehen sind, nicht von verschiedenen Anwendungen gesperrt werden.
Deaktivieren von Diensten sc.exe – Stellen Sie sicher, dass Dateien, die für die Verschlüsselung vorgesehen sind, nicht von verschiedenen Anwendungen gesperrt werden.
- Verhindern Sie, dass Sicherheitssoftware die Verschlüsselung und andere Ransomware-Aktivitäten unterbricht.
– Sicherungssoftware am Erstellen wiederherstellbarer Kopien hindern.
Löschen von Protokollen und Dateien cipher.exe, wevtutil, fsutil.exe Entfernen Sie forensische Beweise.
Schattenkopien löschen vsadmin.exe, wmic.exe Entfernen Sie Laufwerksschattenkopien, die zum Wiederherstellen verschlüsselter Dateien verwendet werden können.
Löschen und Beenden von Sicherungen wbadmin.exe Löschen Sie vorhandene Sicherungen, und beenden Sie geplante Sicherungstasks, um die Wiederherstellung nach der Verschlüsselung zu verhindern.
Ändern der Starteinstellungen bcdedit.exe Deaktivieren Sie Warnungen und automatische Reparaturen nach Startfehlern, die durch den Verschlüsselungsprozess verursacht werden können.
Deaktivieren von Wiederherstellungstools schtasks.exe, regedit.exe, Deaktivieren Sie die Systemwiederherstellung und andere Systemwiederherstellungsoptionen.

Überprüfen sie auf einzelne Anzeichen einer Ransomware-Aktivität

Viele Aktivitäten, die das Ransomware-Verhalten darstellen, einschließlich der im vorherigen Abschnitt beschriebenen Aktivitäten, können harmlos sein. Wenn Sie die folgenden Abfragen verwenden, um Ransomware zu finden, führen Sie mehrere Abfragen aus, um zu überprüfen, ob dieselben Geräte verschiedene Anzeichen für eine mögliche Ransomware-Aktivität aufweisen.

Beenden mehrerer Prozesse mithilfe vontaskkill.exe

Diese Abfrage überprüft mithilfe des Hilfsprogrammstaskkill.exe auf Versuche, mindestens 10 separate Prozesse zu beenden. Abfrage ausführen

// 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

Beenden von Prozessen mithilfe von net stop

Mit dieser Abfrage wird überprüft, ob versucht wird, mindestens 10 separate Prozesse mit dem Befehl net stop zu beenden. Abfrage ausführen

// 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

Löschen von Daten auf mehreren Laufwerken mithilfe voncipher.exe

Mit dieser Abfrage wird überprüft, ob versucht wird, Daten auf mehreren Laufwerken zu löschen , indemcipher.exeverwendet wird. Diese Aktivität wird in der Regel durch Ransomware durchgeführt, um die Wiederherstellung von Daten nach der Verschlüsselung zu verhindern. Abfrage ausführen

// 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

Löschen von forensischen Beweisen aus Ereignisprotokollen mithilfe von wevtutil

Diese Abfrage überprüft, ob versucht wird, mindestens 10 Protokolleinträge mithilfe von wevtutil aus Ereignisprotokollen zu löschen. Abfrage ausführen

// 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

Deaktivieren von Diensten mit sc.exe

Mit dieser Abfrage wird überprüft, ob versucht wird, mindestens 10 vorhandene Dienste mit sc.exezu deaktivieren. Abfrage ausführen

// 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

Deaktivieren der Systemwiederherstellung

Diese Abfrage identifiziert Versuche, die Systemwiederherstellung zu beenden und zu verhindern, dass das System Wiederherstellungspunkte erstellt, die verwendet werden können, um Daten wiederherzustellen, die durch Ransomware verschlüsselt wurden. Abfrage ausführen

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'

Löschen von Sicherungen

Diese Abfrage identifiziert die Verwendung von wmic.exe zum Löschen von Schattenkopiemomentaufnahmen vor der Verschlüsselung. Abfrage ausführen

DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName

Überprüfen Sie auf mehrere Anzeichen einer Ransomware-Aktivität

Anstatt mehrere Abfragen separat auszuführen, können Sie auch eine umfassende Abfrage verwenden, die auf mehrere Anzeichen von Ransomware-Aktivitäten überprüft, um betroffene Geräte zu identifizieren. Die folgende konsolidierte Abfrage:

  • Sucht nach relativ konkreten und subtilen Anzeichen von Ransomware-Aktivitäten
  • Wägt das Vorhandensein dieser Zeichen ab
  • Identifiziert Geräte mit einer höheren Wahrscheinlichkeit, Ziele von Ransomware zu werden

Bei der Ausführung gibt diese konsolidierte Abfrage eine Liste von Geräten zurück, die mehrere Anzeichen eines Angriffs aufweisen. Die Anzahl der einzelnen Arten von Ransomware-Aktivitäten wird ebenfalls angezeigt. Um diese konsolidierte Abfrage auszuführen, kopieren Sie sie direkt in den Editor für erweiterte Suchabfragen.

// 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

Verstehen und Optimieren der Abfrageergebnisse

Die konsolidierte Abfrage gibt die folgenden Ergebnisse zurück:

  • DeviceId – identifiziert das betroffene Gerät.

  • TimeStamp – zum ersten Mal wurde ein Anzeichen einer Ransomware-Aktivität auf dem Gerät beobachtet.

  • Spezifische Anzeichen einer Aktivität– die Anzahl für jedes in mehreren Spalten angezeigte Zeichen, z. B. BcdEdit oder FsUtil

  • TotalEvidenceCount – Anzahl der beobachteten Zeichen

  • UniqueEvidenceCount – Anzahl der Typen beobachteter Zeichen

    Beispiel für eine konsolidierte Abfrage für eine Ransomware-Aktivität im Microsoft Defender-Portal

Abfrageergebnisse mit den betroffenen Geräten und der Anzahl verschiedener Anzeichen einer Ransomware-Aktivität

Standardmäßig listet das Abfrageergebnis nur Geräte auf, die mehr als zwei Arten von Ransomware-Aktivitäten aufweisen. Um alle Geräte mit allen Anzeichen einer Ransomware-Aktivität anzuzeigen, ändern Sie den folgenden where Operator und legen die Zahl auf 0 (0) fest. Um weniger Geräte anzuzeigen, legen Sie eine höhere Zahl fest.

| where UniqueEvidenceCount > 2

Weitere Ransomware-Ressourcen

Wichtige Informationen von Microsoft:

Microsoft 365:

Microsoft Azure:

Microsoft Defender for Cloud Apps:

Blogbeiträge des Microsoft Security-Teams:

Tipp

Möchten Sie mehr erfahren? Engage mit der Microsoft-Sicherheitscommunity in unserer Tech Community: Microsoft Defender XDR Tech Community.