Gå på jagt efter ransomware
Gælder for:
- Microsoft Defender XDR
Ransomware udviklede sig hurtigt fra at være simpel vare malware, der påvirker individuelle computerbrugere, til en virksomhedstrussel, der er alvorligt påvirkende industrier og offentlige institutioner. Selvom Microsoft Defender XDR giver mange funktioner, der registrerer og blokerer ransomware og tilknyttede indtrængensaktiviteter, kan udførelse af proaktive kontroller for tegn på kompromis hjælpe med at holde dit netværk beskyttet.
Med avanceret jagt i Microsoft Defender XDR kan du oprette forespørgsler, der finder individuelle artefakter, der er knyttet til ransomware-aktivitet. Du kan også køre mere avancerede forespørgsler, der kan søge efter tegn på aktivitet og veje disse tegn for at finde enheder, der kræver øjeblikkelig opmærksomhed.
Tegn på ransomware aktivitet
Microsoft-sikkerhedsforskere har observeret forskellige fælles, men subtile artefakter i mange ransomware-kampagner lanceret af sofistikerede ubudne gæster. Disse tegn involverer hovedsageligt brug af systemværktøjer til at forberede kryptering, forhindre opdagelse og klar kriminaltekniske beviser.
Ransomware-aktivitet | Almindelige værktøjer | Hensigt |
---|---|---|
Stop processer | taskkill.exe, net stop | Sørg for, at filer, der er målrettet til kryptering, ikke låses af forskellige programmer. |
Deaktiver tjenester | sc.exe | – Sørg for, at filer, der er målrettet til kryptering, ikke låses af forskellige programmer. - Undgå, at sikkerhedssoftware forstyrrer kryptering og anden ransomware-aktivitet. - Forhindre sikkerhedskopiering af software i at oprette kopier, der kan gendannes. |
Slet logge og filer | cipher.exe, wevtutilfsutil.exe | Fjern retsmedicinske beviser. |
Slet øjebliksbilleder | vsadmin.exe, wmic.exe | Fjern øjebliksbilleder af drev, der kan bruges til at gendanne krypterede filer. |
Slet og stop sikkerhedskopieringer | wbadmin.exe | Slet eksisterende sikkerhedskopier, og stop planlagte sikkerhedskopieringsopgaver, hvilket forhindrer gendannelse efter kryptering. |
Rediger startindstillinger | bcdedit.exe | Deaktiver advarsler og automatiske reparationer efter startfejl, der kan skyldes krypteringsprocessen. |
Slå genoprettelsesværktøjer fra | schtasks.exe, regedit.exe, | Deaktiver Systemgendannelse og andre indstillinger for systemgendannelse. |
Tjek for individuelle tegn på ransomware aktivitet
Mange aktiviteter, der udgør ransomware adfærd, herunder de aktiviteter, der er beskrevet i foregående afsnit, kan være godartede. Når du bruger følgende forespørgsler til at finde ransomware, skal du køre mere end én forespørgsel for at kontrollere, om de samme enheder udviser forskellige tegn på mulig ransomware-aktivitet.
Stop af flere processer ved hjælp af taskkill.exe
Denne forespørgsel søger efter forsøg på at stoppe mindst 10 separate processer ved hjælp af værktøjettaskkill.exe . Kør forespørgsel
// 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
Stop af processer ved hjælp af net stop
Denne forespørgsel søger efter forsøg på at stoppe mindst 10 separate processer ved hjælp af kommandoen net stop . Kør forespørgsel
// 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
Sletning af data på flere drev ved hjælp af cipher.exe
Denne forespørgsel søger efter forsøg på at slette data på flere drev ved hjælp af cipher.exe. Denne aktivitet udføres typisk af ransomware for at forhindre gendannelse af data efter kryptering. Kør forespørgsel
// 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
Rydning af retsmedicinske beviser fra hændelseslogge ved hjælp af wevtutil
Denne forespørgsel søger efter forsøg på at rydde mindst 10 logposter fra hændelseslogfiler ved hjælp af wevtutil. Kør forespørgsel
// 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
Deaktivering af tjenester ved hjælp af sc.exe
Denne forespørgsel søger efter forsøg på at deaktivere mindst 10 eksisterende tjenester ved hjælp af sc.exe. Kør forespørgsel
// 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
Deaktiver systemgendannelse
Denne forespørgsel identificerer forsøg på at stoppe Systemgendannelse og forhindre systemet i at oprette gendannelsespunkter, som kan bruges til at gendanne data, der er krypteret af ransomware. Kør forespørgsel
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'
Sikkerhedskopieringssletning
Denne forespørgsel identificerer brugen af wmic.exe til at slette øjebliksbilleder af øjebliksbilleder før kryptering. Kør forespørgsel
DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName
Kontrollér, om der er flere tegn på ransomware-aktivitet
I stedet for at køre flere forespørgsler separat, kan du også bruge en omfattende forespørgsel, der kontrollerer, om der er flere tegn på ransomware-aktivitet for at identificere berørte enheder. Følgende konsoliderede forespørgsel:
- Leder efter både relativt konkrete og subtile tegn på ransomware aktivitet
- Vejer tilstedeværelsen af disse tegn
- Identificerer enheder med en højere chance for at være mål for ransomware
Når denne konsoliderede forespørgsel køres, returnerer den en liste over enheder, der har udvist flere tegn på angreb. Antallet af hver type ransomware-aktivitet vises også. Hvis du vil køre denne sammenflettede forespørgsel, skal du kopiere den direkte til den avancerede forespørgselseditor til jagt.
// 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
Forstå og finjustere forespørgselsresultaterne
Den konsoliderede forespørgsel returnerer følgende resultater:
DeviceId – identificerer den berørte enhed
TimeStamp – første gang et tegn på ransomware-aktivitet blev observeret på enheden
Specifikke tegn på aktivitet – antallet for hvert tegn, der vises i flere kolonner, f.eks . BcdEdit eller FsUtil
TotalEvidenceCount – antallet af observerede tegn
UniqueEvidenceCount – antallet af typer observerede tegn
Forespørgselsresultater, der viser berørte enheder og antallet af forskellige tegn på ransomware-aktivitet
Som standard viser forespørgselsresultatet kun enheder, der har mere end to typer ransomware-aktivitet. Hvis du vil se alle enheder med et tegn på ransomware-aktivitet, skal du ændre følgende where
operatør og indstille tallet til nul (0). Hvis du vil se færre enheder, skal du angive et højere tal.
| where UniqueEvidenceCount > 2
Flere ransomware-ressourcer
Nøgleoplysninger fra Microsoft:
- Den voksende trussel om ransomware, Microsoft On the Issues blogindlæg den 20. juli 2021
- Menneskedrevet ransomware
- Udrul ransomware-forebyggelse hurtigt
- 2021 Microsoft-rapport over digitalt forsvar (se side 10-19)
- Ransomware: En gennemtrængende og løbende rapport over trusselsanalyser på Microsoft Defender-portalen
Microsoft 365:
- Udrul ransomware-beskyttelse til din Microsoft 365 lejer
- Maksimer ransomware robusthed med Azure og Microsoft 365
- Playbooks om ransomware-hændelsessvar
- Beskyttelse mod malware og ransomware
- Beskyt din Windows-pc mod ransomware
- Håndtering af ransomware i SharePoint Online
- Trusselsanalyserapporter for ransomware på Microsoft Defender-portalen
Microsoft Azure:
- Azure Defenses for Ransomware Attack
- Maksimer ransomware robusthed med Azure og Microsoft 365
- Sikkerhedskopierings- og gendannelsesplan for beskyttelse mod ransomware
- Hjælp med at beskytte mod ransomware med Microsoft Azure Backup (26-minutters video)
- Gendannelse efter kompromitteret systemisk identitet
- Avanceret registrering af angreb i fleretages i Microsoft Sentinel
- Fusion Detection for Ransomware i Microsoft Sentinel
Microsoft Defender for Cloud Apps:
Blogindlæg om Microsoft Security-teamet:
Tre trin til at forhindre og komme sig efter ransomware (september 2021)
En guide til bekæmpelse af menneskeligt drevet ransomware: Del 1 (september 2021)
Vigtige trin til, hvordan Microsofts detection and Response Team (DART) udfører ransomware-hændelsesundersøgelser.
En guide til bekæmpelse af menneskeligt drevet ransomware: Del 2 (september 2021)
Anbefalinger og bedste praksis.
-
Se afsnittet Ransomware .
Menneskedrevne ransomware-angreb: En forebyggelig katastrofe (marts 2020)
Indeholder analyser af angrebskæder af faktiske angreb.
Ransomware-svar – at betale eller ikke at betale? (december 2019)
Norsk Hydro reagerer på ransomware-angreb med gennemsigtighed (december 2019)
Tip
Vil du vide mere? Kontakt Microsoft Security-community'et i vores Tech Community: Microsoft Defender XDR Tech Community.