Jag utpressningstrojan

Viktigt

Den förbättrade Microsoft 365 Defender-portalen är nu tillgänglig. Med den här nya upplevelsen kommer Defender för Endpoint, Defender för Office 365, 365 Microsoft 365 Defender och annat till Microsoft Defender for Cloud Apps. Läs om de senaste.

Gäller för:

  • Microsoft 365 Defender

Utpressningstrojaner har snabbt utvecklats från att vara enkla varor som skadlig programvara påverkar enskilda datoranvändare till ett företagshot som allvarligt påverkar branscher och myndigheter. Även Microsoft 365 Defender många funktioner för att identifiera och blockera utpressningstrojaner och associerade intrångsaktiviteter, kan proaktiva kontroller för intrångstecken skydda nätverket.

Läs mer om utpressningstrojaner som drivs av människor

Med avancerad sökning i Microsoft 365 Defender kan du skapa frågor som hittar enskilda artefakter som är kopplade till utpressningstrojaner. Du kan också köra mer avancerade frågor som kan leta efter tecken på aktivitet och väga dessa tecken för att hitta enheter som kräver omedelbar uppmärksamhet.

Tecken på utpressningstrojaner

Microsoft-säkerhetsvakter har observerat flera vanliga men diskreta artefakter i många utpressningstrojaner som startats av avancerade utpressningspersoner. Dessa skyltar innebär oftast användning av systemverktyg för att förbereda kryptering, förhindra identifiering och tydliga bevis för bevis.

Utpressningstrojaner Vanliga verktyg Avsikter
Stoppa processer taskkill.exe, nettostopp Se till att filer som är riktade för kryptering inte är låsta av olika program.
Inaktivera tjänster sc.exe – se till att filer som är riktade för kryptering inte är låsta av olika program.
– förhindra att säkerhetsprogramvara stör kryptering och annan utpressningstrojaner.
- Stoppa säkerhetskopiering av programvara från att skapa återställningsbara kopior.
Ta bort loggar och filer cipher.exe, wevtutil, fsutil.exe Ta bort tekniska bevis.
Ta bort skuggkopior vsadmin.exe, wmic.exe Ta bort skuggkopior på enheten som kan användas för att återställa krypterade filer.
Ta bort och stoppa säkerhetskopior wbadmin.exe Ta bort befintliga säkerhetskopior och stoppa schemalagda säkerhetskopieringsuppgifter, vilket förhindrar återställning efter kryptering.
Ändra startinställningar bcdedit.exe Stäng av varningar och automatiska reparationer efter fel i starten som kan orsakas av krypteringsprocessen.
Inaktivera återställningsverktyg schtasks.exe, regedit.exe, Inaktivera Systemåterställning och andra systemåterställningsalternativ.

Kontrollera enskilda tecken på utpressningstrojaner

Många aktiviteter som utgör utpressningstrojaner, inklusive de aktiviteter som beskrivs i föregående avsnitt, kan vara från fall till fall. När du använder följande frågor för att hitta utpressningstrojaner kör du fler än en fråga för att kontrollera om samma enhet har olika tecken på möjlig utpressningstrojanaktivitet.

Stoppa flera processer med taskkill.exe

Den här frågan söker efter försök att stoppa minst 10 olika processer med hjälptaskkill.exe verktyg. Kör fråga

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

Stoppa processer med hjälp av nettostopp

Den här frågan söker efter försök att stoppa minst 10 olika processer med hjälp av kommandot för nettostopp. Kör fråga

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

Borttagning av data på flera enheter med cipher.exe

Den här frågan söker efter försök att ta bort data på flera enheter med hjälp avcipher.exe. Den här aktiviteten utförs vanligtvis av utpressningstrojaner för att förhindra återställning av data efter kryptering. Kör fråga

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

Avröjning av bevis från händelseloggar med wevtutil

Den här frågan söker efter försök att rensa minst 10 loggposter från händelseloggar med wevtutil. Kör fråga

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

Inaktivera tjänster med sc.exe

Den här frågan söker efter försök att inaktivera minst 10 befintliga tjänster med hjälp avsc.exe. Kör fråga

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

Inaktivera Systemåterställning

Den här frågan identifierar försök att stoppa Systemåterställning och förhindra att systemet skapar återställningspunkter, som kan användas för att återställa data som krypteras med utpressningstrojaner. Kör fråga

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'

Säkerhetskopiera borttagning

Den här frågan identifierar hur du wmic.exe ta bort ögonblicksbilder av skuggkopior innan krypteringen. Kör fråga

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

Kontrollera om det finns flera tecken på utpressningstrojaner

I stället för att köra flera frågor separat kan du också använda en omfattande fråga som söker efter flera tecken på utpressningstrojaner för att identifiera påverkade enheter. Följande konsoliderade fråga:

  • Letar efter både relativt betong- och diskreta tecken på utpressningstrojaner
  • Väga förekomsten av dessa tecken
  • Identifierar enheter som har större chans att bli utpressningstrojaner

När den här konsoliderade frågan körs returneras en lista över enheter som har flera attacktecken. Antalet av varje typ av utpressningstrojaner visas också. Om du vill köra den här konsoliderade frågan kopierar du den direkt till den avancerade frågeredigeraren för sökning.

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

Förstå och modifiera frågeresultaten

Den konsoliderade frågan returnerar följande resultat:

  • DeviceId– identifierar den enhet som påverkas
  • TimeStamp– första gången ett tecken på utpressningstrojaner observerades på enheten
  • Specifika tecken på aktivitet – antalet för varje tecken som visas i flera kolumner, till exempel BcdEdit eller FsUtil
  • TotalEvidenceCount– antal observerade tecken
  • UniqueEvidenceCount– antal typer av observerade tecken

Ett exempel på en konsoliderad fråga för en utpressningstrojanaktivitet i Microsoft 365 Defender portalen

Frågeresultat som visar påverkade enheter och antal olika tecken på utpressningstrojaner

Som standard visas endast enheter som har fler än två typer av utpressningstrojaner i frågeresultatet. Om du vill se alla enheter med tecken på utpressningstrojaner ändrar du följande operator och where anger siffran noll (0). Ange ett högre antal om du vill se färre enheter.

| where UniqueEvidenceCount > 2

Ytterligare resurser för utpressningstrojaner

Viktig information från Microsoft:

Microsoft 365:

Microsoft Azure:

Microsoft Defender for Cloud Apps:

Blogginlägg för Microsoft Security-teamet: