Delen via


Ransomware opsporen

Van toepassing op:

  • Microsoft Defender XDR

Ransomware ontwikkelde zich snel van eenvoudige basismalware die individuele computergebruikers beïnvloedt tot een ondernemingsbedreiging die ernstige gevolgen heeft voor industrieën en overheidsinstellingen. Hoewel Microsoft Defender XDR veel mogelijkheden biedt die ransomware en bijbehorende inbraakactiviteiten detecteren en blokkeren, kan het uitvoeren van proactieve controles op tekenen van inbreuk uw netwerk helpen beschermen.

Lees meer over door mensen beheerde ransomware

Met geavanceerde opsporing in Microsoft Defender XDR kunt u query's maken die afzonderlijke artefacten vinden die zijn gekoppeld aan ransomware-activiteit. U kunt ook geavanceerdere query's uitvoeren die kunnen zoeken naar tekenen van activiteit en die tekens kunnen wegen om apparaten te vinden die onmiddellijke aandacht vereisen.

Tekenen van ransomware-activiteit

Microsoft-beveiligingsonderzoekers hebben verschillende veelvoorkomende maar subtiele artefacten waargenomen in veel ransomware-campagnes die door geavanceerde indringers zijn gestart. Deze tekens omvatten meestal het gebruik van systeemhulpprogramma's om versleuteling voor te bereiden, detectie te voorkomen en forensisch bewijs te wissen.

Ransomware-activiteit Algemene hulpprogramma's Bedoeling
Processen stoppen taskkill.exe, netstop Zorg ervoor dat bestanden die zijn gericht op versleuteling niet worden vergrendeld door verschillende toepassingen.
Services uitschakelen sc.exe - Zorg ervoor dat bestanden die zijn gericht op versleuteling niet worden vergrendeld door verschillende toepassingen.
- Voorkomen dat beveiligingssoftware versleuteling en andere ransomware-activiteiten verstoort.
- Voorkomen dat back-upsoftware herstelbare kopieën maakt.
Logboeken en bestanden verwijderen cipher.exe, wevtutil, fsutil.exe Forensisch bewijs verwijderen.
Schaduwkopieën verwijderen vsadmin.exe, wmic.exe Verwijder schijfschaduwkopieën die kunnen worden gebruikt om versleutelde bestanden te herstellen.
Back-ups verwijderen en stoppen wbadmin.exe Verwijder bestaande back-ups en stop geplande back-uptaken, waardoor herstel na versleuteling wordt voorkomen.
Opstartinstellingen wijzigen bcdedit.exe Schakel waarschuwingen en automatische reparaties uit na opstartfouten die kunnen worden veroorzaakt door het versleutelingsproces.
Herstelhulpprogramma's uitschakelen schtasks.exe, regedit.exe, Schakel Systeemherstel en andere opties voor systeemherstel uit.

Controleren op afzonderlijke tekenen van ransomware-activiteit

Veel activiteiten die ransomware-gedrag vormen, met inbegrip van de activiteiten die in de vorige sectie worden beschreven, kunnen goedaardig zijn. Wanneer u de volgende query's gebruikt om ransomware te vinden, voert u meer dan één query uit om te controleren of dezelfde apparaten verschillende tekenen van mogelijke ransomware-activiteit vertonen.

Meerdere processen stoppen met taskkill.exe

Met deze query wordt gecontroleerd op pogingen om ten minste 10 afzonderlijke processen te stoppen met behulp van het hulpprogrammataskkill.exe . Query uitvoeren

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

Processen stoppen met nettostop

Met deze query wordt gecontroleerd op pogingen om ten minste 10 afzonderlijke processen te stoppen met behulp van de opdracht net stop . Query uitvoeren

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

Verwijderen van gegevens op meerdere stations met behulp van cipher.exe

Met deze query wordt gecontroleerd op pogingen om gegevens op meerdere stations te verwijderen met behulp van cipher.exe. Deze activiteit wordt meestal uitgevoerd door ransomware om herstel van gegevens na versleuteling te voorkomen. Query uitvoeren

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

Forensisch bewijs uit gebeurtenislogboeken wissen met behulp van wevtutil

Met deze query wordt gecontroleerd op pogingen om ten minste 10 logboekvermeldingen uit gebeurtenislogboeken te wissen met behulp van wevtutil. Query uitvoeren

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

Services uitschakelen met behulp vansc.exe

Met deze query wordt gecontroleerd op pogingen om ten minste 10 bestaande services uit te schakelen met behulp vansc.exe. Query uitvoeren

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

Systeemherstel uitschakelen

Deze query identificeert pogingen om systeemherstel te stoppen en te voorkomen dat het systeem herstelpunten maakt, die kunnen worden gebruikt om gegevens te herstellen die zijn versleuteld door ransomware. Query uitvoeren

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'

Back-up verwijderen

Deze query identificeert het gebruik van wmic.exe om momentopnamen van schaduwkopieën te verwijderen voorafgaand aan versleuteling. Query uitvoeren

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

Controleren op meerdere tekenen van ransomware-activiteit

In plaats van meerdere query's afzonderlijk uit te voeren, kunt u ook een uitgebreide query gebruiken die controleert op meerdere tekenen van ransomware-activiteit om getroffen apparaten te identificeren. De volgende geconsolideerde query:

  • Zoekt naar zowel relatief concrete als subtiele tekenen van ransomware-activiteit
  • Weegt de aanwezigheid van deze tekens af
  • Identificeert apparaten met een hogere kans om doelwit van ransomware te zijn

Wanneer deze geconsolideerde query wordt uitgevoerd, wordt een lijst geretourneerd met apparaten die meerdere tekenen van aanval hebben vertoond. Het aantal ransomware-activiteiten wordt ook weergegeven. Als u deze geconsolideerde query wilt uitvoeren, kopieert u deze rechtstreeks naar de geavanceerde opsporingsquery-editor.

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

De queryresultaten begrijpen en aanpassen

De geconsolideerde query retourneert de volgende resultaten:

  • DeviceId: identificeert het betrokken apparaat

  • TimeStamp: de eerste keer dat een teken van ransomware-activiteit op het apparaat werd waargenomen

  • Specifieke tekenen van activiteit: het aantal voor elk teken dat wordt weergegeven in meerdere kolommen, zoals BcdEdit of FsUtil

  • TotalEvidenceCount: aantal waargenomen tekens

  • UniqueEvidenceCount: aantal soorten waargenomen tekens

    Een voorbeeld van een geconsolideerde query voor een ransomware-activiteit in de Microsoft Defender-portal

Queryresultaten met beïnvloede apparaten en het aantal verschillende tekenen van ransomware-activiteit

Standaard worden in het queryresultaat alleen apparaten weergegeven met meer dan twee typen ransomware-activiteiten. Als u alle apparaten met een teken van ransomware-activiteit wilt zien, wijzigt u de volgende where operator en stelt u het getal in op nul (0). Als u minder apparaten wilt zien, stelt u een hoger getal in.

| where UniqueEvidenceCount > 2

Meer ransomware-resources

Belangrijke informatie van Microsoft:

Microsoft 365:

Microsoft Azure:

Microsoft Defender voor Cloud-apps:

Blogberichten van het Microsoft Security-team:

Tip

Wil je meer weten? Engage met de Microsoft Security-community in onze Tech Community: Microsoft Defender XDR Tech Community.