Jag utpressningstrojan
Gäller för:
- Microsoft Defender XDR
Utpressningstrojaner utvecklades snabbt från att vara enkel skadlig kod som påverkar enskilda datoranvändare till ett företagshot som allvarligt påverkar branscher och statliga institutioner. Även om Microsoft Defender XDR har många funktioner som identifierar och blockerar utpressningstrojaner och associerade intrångsaktiviteter, kan proaktiva kontroller av tecken på intrång hjälpa dig att hålla nätverket skyddat.
Med avancerad jakt i Microsoft Defender XDR kan du skapa frågor som hittar enskilda artefakter som är associerade med utpressningstrojaner. Du kan också köra mer avancerade frågor som kan söka efter tecken på aktivitet och väga dessa tecken för att hitta enheter som kräver omedelbar uppmärksamhet.
Tecken på utpressningstrojanaktivitet
Microsofts säkerhetsforskare har observerat olika vanliga men subtila artefakter i många utpressningstrojankampanjer som lanserats av sofistikerade inkräktare. Dessa tecken omfattar främst användning av systemverktyg för att förbereda för kryptering, förhindra identifiering och rensa kriminaltekniska bevis.
Utpressningstrojanaktivitet | Vanliga verktyg | Avsikt |
---|---|---|
Stoppa processer | taskkill.exe, net stop | Se till att filer som är avsedda för kryptering inte är låsta av olika program. |
Inaktivera tjänster | sc.exe | – Se till att filer som är avsedda för kryptering inte låses av olika program. – Förhindra att säkerhetsprogramvara stör kryptering och annan utpressningstrojanaktivitet. – Stoppa säkerhetskopieringsprogram från att skapa återställningsbara kopior. |
Ta bort loggar och filer | cipher.exe, wevtutil, fsutil.exe | Ta bort kriminaltekniska bevis. |
Ta bort skuggkopior | vsadmin.exe, wmic.exe | Ta bort skuggkopior av enheter som kan användas för att återställa krypterade filer. |
Ta bort och stoppa säkerhetskopior | wbadmin.exe | Ta bort befintliga säkerhetskopieringar och stoppa schemalagda säkerhetskopieringsuppgifter, vilket förhindrar återställning efter kryptering. |
Ändra startinställningar | bcdedit.exe | Inaktivera varningar och automatiska reparationer efter startfel som kan orsakas av krypteringsprocessen. |
Inaktivera återställningsverktyg | schtasks.exe, regedit.exe, | Inaktivera Systemåterställning och andra alternativ för systemåterställning. |
Sök efter enskilda tecken på utpressningstrojanaktivitet
Många aktiviteter som utgör utpressningstrojaner, inklusive de aktiviteter som beskrivs i föregående avsnitt, kan vara godartade. När du använder följande frågor för att hitta utpressningstrojaner kör du mer än en fråga för att kontrollera om samma enheter uppvisar olika tecken på möjlig utpressningstrojanaktivitet.
Stoppa flera processer med hjälp avtaskkill.exe
Den här frågan söker efter försök att stoppa minst 10 separata processer med hjälp av verktygettaskkill.exe . Köra 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 net stop
Den här frågan söker efter försök att stoppa minst 10 separata processer med hjälp av kommandot net stop . Köra 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 hjälp avcipher.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öra 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
Rensning av kriminaltekniska bevis från händelseloggar med hjälp av wevtutil
Den här frågan söker efter försök att rensa minst 10 loggposter från händelseloggar med hjälp av wevtutil. Köra 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
Stänga av tjänster med hjälp avsc.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öra 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 krypterats med utpressningstrojaner. Köra 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'
Borttagning av säkerhetskopia
Den här frågan identifierar användningen av wmic.exe för att ta bort ögonblicksbilder av skuggkopior före kryptering. Köra fråga
DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName
Sök efter flera tecken på utpressningstrojanaktivitet
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å utpressningstrojanaktivitet för att identifiera berörda enheter. Följande konsoliderade fråga:
- Letar efter både relativt konkreta och subtila tecken på utpressningstrojanaktivitet
- Väger förekomsten av dessa tecken
- Identifierar enheter med högre chans att bli mål för utpressningstrojaner
När den här konsoliderade frågan körs returneras en lista över enheter som har uppvisat flera tecken på angrepp. Antalet av varje typ av utpressningstrojanaktivitet visas också. Om du vill köra den här konsoliderade frågan kopierar du den direkt till frågeredigeraren för avancerad jakt.
// 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 justera frågeresultaten
Den konsoliderade frågan returnerar följande resultat:
DeviceId – identifierar den berörda enheten
TimeStamp – första gången några tecken på utpressningstrojanaktivitet observerades på enheten
Specifika tecken på aktivitet – antalet för varje tecken som visas i flera kolumner, till exempel BcdEdit eller FsUtil
TotalEvidenceCount – antalet observerade tecken
UniqueEvidenceCount – antal typer av observerade tecken
Frågeresultat som visar berörda enheter och antal olika tecken på utpressningstrojanaktivitet
Som standard visar frågeresultatet endast enheter som har fler än två typer av utpressningstrojaner. Om du vill se alla enheter med tecken på utpressningstrojanaktivitet ändrar du följande where
operator och anger talet till noll (0). Om du vill se färre enheter anger du ett högre tal.
| where UniqueEvidenceCount > 2
Fler resurser för utpressningstrojaner
Viktig information från Microsoft:
- Det växande hotet om utpressningstrojaner– Microsoft On the Issues-blogginlägget den 20 juli 2021
- Utpressningstrojaner som drivs av människor
- Distribuera snabbt förebyggande av utpressningstrojaner
- 2021 Microsoft Digital Defense Report (se sidorna 10–19)
- Utpressningstrojan: En genomgripande och pågående hotanalysrapport i Microsoft Defender-portalen
Microsoft 365:
- Använda skydd mot utpressningstrojaner för din Microsoft 365-klientorganisation
- Maximera återhämtning av utpressningstrojaner med Azure och Microsoft 365
- Spelböcker för utpressningstrojaner för incidenthantering
- Skydd mot skadlig kod och utpressningstrojan
- Skydda din Windows-dator från utpressningstrojaner
- Hantera utpressningstrojaner i SharePoint Online
- Hotanalysrapporter för utpressningstrojaner i Microsoft Defender-portalen
Microsoft Azure:
- Azure Defenses för attacker med utpressningstrojan
- Maximera återhämtning av utpressningstrojaner med Azure och Microsoft 365
- Plan för säkerhetskopiering och återställning för att skydda mot utpressningstrojaner
- Skydda mot utpressningstrojaner med Microsoft Azure Backup (26-minuters video)
- Återställa från identitetskompromettering
- Avancerad identifiering av flerstegsattack i Microsoft Sentinel
- Fusionidentifiering för utpressningstrojaner i Microsoft Sentinel
Microsoft Defender for Cloud Apps:
Blogginlägg för Microsoft Security-teamet:
Tre steg för att förhindra och återställa från utpressningstrojaner (september 2021)
En guide för att bekämpa mänskligt drivna utpressningstrojaner: Del 1 (september 2021)
Viktiga steg för hur Microsofts DART-team (Detection and Response Team) genomför undersökningar av utpressningstrojaner.
En guide för att bekämpa mänskligt drivna utpressningstrojaner: Del 2 (september 2021)
Rekommendationer och metodtips.
-
Se avsnittet Utpressningstrojaner.
Attacker med utpressningstrojan som drivs av människor: En katastrof som kan förhindras (mars 2020)
Innehåller attack kedjeanalyser av de faktiska attackerna.
Utpressningstrojansvar – för att betala eller inte betala? (december 2019)
Norsk Hydro svarar på utpressningstrojaner med transparens (december 2019)
Tips
Vill du veta mer? Engage med Microsofts säkerhetscommunity i vår Tech Community: Microsoft Defender XDR Tech Community.