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.
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
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:
- De groeiende bedreiging van ransomware, Microsoft On the Issues blogpost op 20 juli 2021
- Door mensen uitgevoerde ransomware
- Snel ransomware-preventies implementeren
- 2021 Microsoft Digital Defense Report (zie pagina's 10-19)
- Ransomware: een algemeen en doorlopend bedreigingsanalyserapport in de Microsoft Defender-portal
Microsoft 365:
- Ransomwarebeveiliging implementeren voor uw Microsoft 365-tenant
- Ransomware Resiliency maximaliseren met Azure en Microsoft 365
- Playbooks voor reactie op ransomware-incidenten
- Malware en bescherming tegen ransomware
- Uw Windows-pc beschermen tegen ransomware
- Omgaan met ransomware in SharePoint Online
- Bedreigingsanalyserapporten voor ransomware in de Microsoft Defender-portal
Microsoft Azure:
- Azure Defenses voor ransomware-aanvallen
- Ransomware Resiliency maximaliseren met Azure en Microsoft 365
- Back-up- en herstelplan ter bescherming tegen ransomware
- Help te beschermen tegen ransomware met Microsoft Azure Backup (video van 26 minuten)
- Herstel van systematische identiteitsinbreuk
- Geavanceerde meervoudige detectie van aanvallen in Microsoft Sentinel
- Detectie van fusies voor ransomware in Microsoft Sentinel
Microsoft Defender voor Cloud-apps:
Blogberichten van het Microsoft Security-team:
Drie stappen om ransomware te voorkomen en te herstellen (september 2021)
Een handleiding voor het bestrijden van door mensen uitgevoerde ransomware: deel 1 (september 2021)
Belangrijke stappen voor de manier waarop het Microsoft Detection and Response Team (DART) onderzoek naar ransomware-incidenten voert.
Een handleiding voor het bestrijden van door mensen uitgevoerde ransomware: deel 2 (september 2021)
Aanbevelingen en best practices.
-
Zie de sectie Ransomware.
Door de mens uitgevoerde ransomware-aanvallen: een verhinderbare ramp (maart 2020)
Omvat analyses van aanvalsketens van daadwerkelijke aanvallen.
Norsk Hydro reageert op ransomware-aanval met transparantie (december 2019)
Tip
Wil je meer weten? Engage met de Microsoft Security-community in onze Tech Community: Microsoft Defender XDR Tech Community.