Jakten på løsepengevirus
Gjelder for:
- Microsoft Defender XDR
Ransomware utviklet seg raskt fra å være enkel vare malware påvirker individuelle databrukere til en virksomhet trussel som er alvorlig påvirker bransjer og offentlige institusjoner. Selv om Microsoft Defender XDR gir mange funksjoner som oppdager og blokkerer løsepengevirus og tilknyttede inntrengingsaktiviteter, kan det å utføre proaktive kontroller for tegn på kompromiss bidra til å holde nettverket beskyttet.
Med avansert jakt i Microsoft Defender XDR kan du opprette spørringer som finner individuelle artefakter knyttet til løsepengevirusaktivitet. Du kan også kjøre mer avanserte spørringer som kan se etter tegn på aktivitet og veie disse tegnene for å finne enheter som krever umiddelbar oppmerksomhet.
Tegn på løsepengevirusaktivitet
Microsofts sikkerhetsforskere har observert ulike vanlige, men subtile gjenstander i mange ransomware-kampanjer lansert av sofistikerte inntrengere. Disse tegnene involverer for det meste bruk av systemverktøy for å forberede kryptering, forhindre gjenkjenning og klare rettsmedisinske bevis.
Løsepengevirusaktivitet | Vanlige verktøy | Hensikt |
---|---|---|
Stopp prosesser | taskkill.exe, net stop | Sørg for at filer som er rettet mot kryptering, ikke er låst av ulike programmer. |
Deaktiver tjenester | sc.exe | – Sørg for at filer som er rettet mot kryptering, ikke er låst av ulike programmer. – Hindre at sikkerhetsprogramvaren forstyrrer kryptering og annen løsepengevirusaktivitet. – Stopp sikkerhetskopiering av programvare fra å opprette gjenopprettelige kopier. |
Slette logger og filer | cipher.exe, wevtutil, fsutil.exe | Fjern rettsmedisinske bevis. |
Slette skyggekopier | vsadmin.exe ,wmic.exe | Fjern kopier av stasjonsskygge som kan brukes til å gjenopprette krypterte filer. |
Slette og stoppe sikkerhetskopier | wbadmin.exe | Slett eksisterende sikkerhetskopier og stopp planlagte sikkerhetskopieringsoppgaver, og forhindre gjenoppretting etter kryptering. |
Endre oppstartsinnstillinger | bcdedit.exe | Slå av advarsler og automatiske reparasjoner etter oppstartsfeil som kan skyldes krypteringsprosessen. |
Deaktiver gjenopprettingsverktøy | schtasks.exe ,regedit.exe, | Deaktiver Systemgjenoppretting og andre alternativer for systemgjenoppretting. |
Se etter individuelle tegn på løsepengevirusaktivitet
Mange aktiviteter som utgjør løsepengevirusatferd, inkludert aktivitetene som er beskrevet i forrige avsnitt, kan være godartede. Når du bruker følgende spørringer til å finne løsepengevirus, kjører du mer enn én spørring for å kontrollere om de samme enhetene viser ulike tegn på mulig løsepengevirusaktivitet.
Stoppe flere prosesser ved hjelp av taskkill.exe
Denne spørringen søker etter forsøk på å stoppe minst 10 separate prosesser ved hjelp av taskkill.exe-verktøyet . Kjør spørring
// 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
Stoppe prosesser ved hjelp av net stop
Denne spørringen ser etter forsøk på å stoppe minst 10 separate prosesser ved hjelp av net stop-kommandoen . Kjør spørring
// 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
Sletting av data på flere stasjoner ved hjelp av cipher.exe
Denne spørringen ser etter forsøk på å slette data på flere stasjoner ved hjelp av cipher.exe. Denne aktiviteten utføres vanligvis av løsepengevirus for å hindre gjenoppretting av data etter kryptering. Kjør spørring
// 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
Fjerning av rettsmedisinske bevis fra hendelseslogger ved hjelp av wevtutil
Denne spørringen ser etter forsøk på å fjerne minst 10 loggoppføringer fra hendelseslogger ved hjelp av wevtutil. Kjør spørring
// 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
Deaktivere tjenester ved hjelp av sc.exe
Denne spørringen søker etter forsøk på å slå av minst 10 eksisterende tjenester ved hjelp av sc.exe. Kjør spørring
// 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
Deaktivere Systemgjenoppretting
Denne spørringen identifiserer forsøk på å stoppe systemgjenoppretting og hindre at systemet oppretter gjenopprettingspunkter, som kan brukes til å gjenopprette data som krypteres av løsepengevirus. Kjør spørring
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'
Sletting av sikkerhetskopiering
Denne spørringen identifiserer bruk av wmic.exe til å slette øyeblikksbilder av skyggekopier før kryptering. Kjør spørring
DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName
Se etter flere tegn på løsepengevirusaktivitet
I stedet for å kjøre flere spørringer separat, kan du også bruke en omfattende spørring som ser etter flere tegn på løsepengevirusaktivitet for å identifisere berørte enheter. Følgende konsoliderte spørring:
- Ser etter både relativt konkrete og subtile tegn på løsepengevirusaktivitet
- Veier tilstedeværelsen av disse tegnene
- Identifiserer enheter med større sjanse for å være mål for løsepengevirus
Når denne konsoliderte spørringen kjøres, returneres en liste over enheter som har vist flere tegn på angrep. Antallet for hver type løsepengevirusaktivitet vises også. Hvis du vil kjøre denne konsoliderte spørringen, kopierer du den direkte til redigeringsprogrammet for avansert jaktspørring.
// 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 justere spørringsresultatene
Den konsoliderte spørringen returnerer følgende resultater:
DeviceId – identifiserer den berørte enheten
TimeStamp – første gang noen tegn på løsepengevirusaktivitet ble observert på enheten
Bestemte tegn på aktivitet – antallet for hvert tegn som vises i flere kolonner, for eksempel BcdEdit eller FsUtil
TotalEvidenceCount – antall observerte tegn
UniqueEvidenceCount – antall typer observerte tegn
Spørringsresultater som viser berørte enheter og antall ulike tegn på løsepengevirusaktivitet
Som standard viser spørringsresultatet bare enheter som har mer enn to typer løsepengevirusaktivitet. Hvis du vil se alle enheter med noen tegn på løsepengevirusaktivitet, endrer du følgende where
operator og angir tallet til null (0). Hvis du vil se færre enheter, angir du et høyere tall.
| where UniqueEvidenceCount > 2
Flere ressurser for løsepengevirus
Viktig informasjon fra Microsoft:
- Den økende trusselen om ransomware, Microsoft On the Issues blogginnlegg på 20 juli 2021
- Menneskestyrt løsepengevirus
- Distribuere løsepengevirusforebygginger raskt
- 2021-Microsoft-rapport om digitalt forsvar (se side 10–19)
- Ransomware: En gjennomgripende og pågående trusselanalyserapport i Microsoft Defender-portalen
Microsoft 365:
- Distribuer beskyttelse mot løsepengevirus for Microsoft 365-leieren
- Maksimer ransomware-robusthet med Azure og Microsoft 365
- Ransomware hendelse respons playbooks
- Beskyttelse mot skadelig programvare og løsepengevirus
- Beskytt Windows-PC-en mot løsepengevirus
- Håndtere løsepengevirus i SharePoint Online
- Rapporter om trusselanalyse for løsepengevirus i Microsoft Defender-portalen
Microsoft Azure:
- Azure Defenses for Ransomware Attack
- Maksimer ransomware-robusthet med Azure og Microsoft 365
- Plan for sikkerhetskopiering og gjenoppretting for å beskytte mot løsepengevirus
- Bidra til å beskytte mot løsepengevirus med Microsoft Azure Backup (26-minutters video)
- Gjenopprette fra systemisk identitet kompromiss
- Avansert angrepsgjenkjenning i fleretrinn i Microsoft Sentinel
- Fusion Detection for Ransomware i Microsoft Sentinel
Microsoft Defender for Cloud Apps:
Blogginnlegg fra Microsoft Security-teamet:
Tre trinn for å forhindre og gjenopprette løsepengevirus (september 2021)
En guide til bekjempelse av menneskestyrt løsepengevirus: Del 1 (september 2021)
Viktige trinn for hvordan Microsofts gjenkjennings- og responsteam (DART) utfører hendelsesundersøkelser for løsepengevirus.
En guide til bekjempelse av menneskedrevet løsepengevirus: Del 2 (september 2021)
Anbefalinger og anbefalte fremgangsmåter.
Bli robust ved å forstå risiko for cybersikkerhet: Del 4 – navigering i aktuelle trusler (mai 2021)
Se delen om løsepengevirus .
Menneskestyrte ransomware-angrep: En forhindret katastrofe (mars 2020)
Inkluderer angrepskjedeanalyser av faktiske angrep.
Ransomware svar - å betale eller ikke å betale? (Desember 2019)
Norsk Hydro reagerer på løsepengevirusangrep med åpenhet (desember 2019)
Tips
Vil du lære mer? Kommuniser med Microsoft Sikkerhet-fellesskapet i det tekniske fellesskapet vårt: Microsoft Defender XDR Tech Community.