Vyhledávání ransomwaru
Platí pro:
- Microsoft Defender XDR
Ransomware se rychle vyvinul z jednoduchého komoditní malwaru ovlivňujícího jednotlivé uživatele počítačů k podnikové hrozbě, která má vážný dopad na odvětví a vládní instituce. I když Microsoft Defender XDR poskytuje mnoho funkcí, které detekují a blokují ransomware a související aktivity vniknutí, provádění proaktivních kontrol na známky ohrožení zabezpečení může pomoct udržet vaši síť chráněnou.
S pokročilým vyhledáváním v Microsoft Defender XDR můžete vytvářet dotazy, které vyhledá jednotlivé artefakty spojené s aktivitou ransomwaru. Můžete také spouštět sofistikovanější dotazy, které můžou vyhledávat známky aktivity a vážit tyto příznaky a najít zařízení, která vyžadují okamžitou pozornost.
Známky aktivity ransomwaru
Výzkumníci z Microsoftu v oblasti zabezpečení zaznamenali různé běžné, ale jemné artefakty v mnoha ransomwarových kampaních, které spustili sofistikovaní vetřelci. Tyto příznaky většinou zahrnují použití systémových nástrojů k přípravě na šifrování, prevenci detekce a jasné forenzní důkazy.
Aktivita ransomware | Běžné nástroje | Záměr |
---|---|---|
Zastavení procesů | taskkill.exe, net stop | Zajistěte, aby soubory určené pro šifrování nebyly uzamčeny různými aplikacemi. |
Vypnutí služeb | sc.exe | – Zajistěte, aby soubory určené pro šifrování nebyly uzamčeny různými aplikacemi. – Zabraňte bezpečnostnímu softwaru, aby narušil šifrování a další aktivity ransomwaru. - Zastavte zálohovací software ve vytváření obnovitelných kopií. |
Odstranění protokolů a souborů | cipher.exe, wevtutil,fsutil.exe | Odeberte forenzní důkazy. |
Odstranění stínových kopií | vsadmin.exe, wmic.exe | Odeberte stínové kopie jednotky, které lze použít k obnovení šifrovaných souborů. |
Odstranění a zastavení zálohování | wbadmin.exe | Odstraňte existující zálohy a zastavte naplánované úlohy zálohování, aby se zabránilo obnovení po šifrování. |
Úprava nastavení spouštění | bcdedit.exe | Vypněte upozornění a automatické opravy po selháních spuštění, které můžou být způsobeny procesem šifrování. |
Vypnutí nástrojů pro obnovení | schtasks.exe, regedit.exe, | Vypněte obnovení systému a další možnosti obnovení systému. |
Kontrola jednotlivých příznaků aktivity ransomwaru
Mnoho aktivit, které představují chování ransomwaru, včetně aktivit popsaných v předchozí části, může být neškodných. Při použití následujících dotazů k vyhledání ransomwaru spusťte více než jeden dotaz a zkontrolujte, jestli stejná zařízení nevykazují různé známky možné aktivity ransomware.
Zastavení více procesů pomocí taskkill.exe
Tento dotaz zkontroluje pokusy o zastavení alespoň 10 samostatných procesů pomocí nástrojetaskkill.exe . Spustit dotaz
// 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
Zastavování procesů pomocí net stop
Tento dotaz kontroluje pokusy o zastavení alespoň 10 samostatných procesů pomocí příkazu net stop . Spustit dotaz
// 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
Odstranění dat na více jednotkách pomocí cipher.exe
Tento dotaz kontroluje pokusy o odstranění dat na více jednotkách pomocí cipher.exe. Tuto aktivitu obvykle provádí ransomware, aby se zabránilo obnovení dat po šifrování. Spustit dotaz
// 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
Vymazání forenzních důkazů z protokolů událostí pomocí nástroje wevtutil
Tento dotaz kontroluje pokusy o vymazání alespoň 10 položek protokolu z protokolů událostí pomocí nástroje wevtutil. Spustit dotaz
// 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
Vypnutí služeb pomocí sc.exe
Tento dotaz zkontroluje pokusy o vypnutí alespoň 10 existujících služeb pomocí sc.exe. Spustit dotaz
// 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
Vypnutí nástroje Obnovení systému
Tento dotaz identifikuje pokusy o zastavení obnovení systému a zabrání systému ve vytváření bodů obnovení, které lze použít k obnovení dat šifrovaných ransomwarem. Spustit dotaz
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'
Odstranění zálohy
Tento dotaz identifikuje použití wmic.exe k odstranění snímků stínové kopie před šifrováním. Spustit dotaz
DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName
Kontrola více známek aktivity ransomwaru
Místo samostatného spouštění několika dotazů můžete také použít komplexní dotaz, který kontroluje, jestli se na ovlivněných zařízeních nevykazuje několik příznaků aktivity ransomware. Následující konsolidovaný dotaz:
- Hledá relativně konkrétní i drobné známky aktivity ransomwaru.
- Zváží přítomnost těchto znaků.
- Identifikuje zařízení s vyšší pravděpodobností, že se budou stát terčem ransomwaru.
Při spuštění vrátí tento konsolidovaný dotaz seznam zařízení, u kterých se projevovalo několik příznaků útoku. Zobrazí se také počet jednotlivých typů aktivit ransomwaru. Pokud chcete tento konsolidovaný dotaz spustit, zkopírujte ho přímo do editoru dotazů rozšířeného proaktivního vyhledávání.
// 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
Vysvětlení a úprava výsledků dotazu
Konsolidovaný dotaz vrátí následující výsledky:
DeviceId – identifikuje ovlivněné zařízení.
TimeStamp – první výskyt jakýchkoli známek aktivity ransomware na zařízení.
Konkrétní znaky aktivity – počet pro každé znaménko zobrazené ve více sloupcích, například BcdEdit nebo FsUtil
TotalEvidenceCount – počet pozorovaných příznaků.
UniqueEvidenceCount – počet typů pozorovaných znaků.
Výsledky dotazu ukazující ovlivněná zařízení a počty různých příznaků aktivity ransomware
Ve výchozím nastavení se ve výsledku dotazu zobrazí jenom zařízení, která mají více než dva typy aktivit ransomwaru. Pokud chcete zobrazit všechna zařízení s jakýmkoli příznakem aktivity ransomware, upravte následující where
operátor a nastavte číslo na nulu (0). Pokud chcete zobrazit méně zařízení, nastavte vyšší číslo.
| where UniqueEvidenceCount > 2
Další zdroje informací o ransomwaru
Klíčové informace od Microsoftu:
- Rostoucí hrozba ransomwaru, blogový příspěvek Microsoft On the Issues z 20. července 2021
- Ransomware ovládaný člověkem
- Rychlé nasazení prevence ransomwaru
- 2021 Microsoft Digital Defense Report (viz str. 10-19)
- Ransomware: Rozšířená a průběžná sestava analýzy hrozeb na portálu Microsoft Defender
Microsoft 365:
- Nasadit ochranu proti ransomwaru pro vašeho Microsoft 365 tenanta
- Maximalizace odolnosti proti ransomwaru s využitím Azure a Microsoftu 365
- Playbooky reakcí na incidenty ransomwaru
- Ochrana proti malwaru a ransomwaru
- Ochrana počítače s Windows před ransomwarem
- Zpracování ransomwaru v SharePointu Online
- Sestavy analýzy hrozeb pro ransomware na portálu Microsoft Defender
Microsoft Azure:
- Azure Defenses for Ransomware Attack
- Maximalizace odolnosti proti ransomwaru s využitím Azure a Microsoftu 365
- Plán zálohování a obnovení pro ochranu před ransomwarem
- Pomoc s ochranou před ransomwarem pomocí Microsoft Azure Backup (26minutové video)
- Zotavení po ohrožení systémové identity
- Pokročilá detekce vícestupňových útoků ve službě Microsoft Sentinel
- Detekce fúze pro ransomware ve službě Microsoft Sentinel
Microsoft Defender for Cloud Apps:
Příspěvky na blogu týmu Microsoft Security:
Průvodce bojem proti ransomwaru provozovanému člověkem: Část 1 (září 2021)
Klíčové kroky týkající se toho, jak tým microsoftu pro detekci a odezvu (DART) provádí šetření incidentů ransomwaru.
Průvodce bojem proti ransomwaru provozovanému člověkem: Část 2 (září 2021)
Doporučení a osvědčené postupy
-
Viz část Ransomware .
Útoky ransomware provozované lidmi: Katastrofa, které lze zabránit (březen 2020)
Zahrnuje analýzy řetězců útoků skutečných útoků.
Odpověď ransomwaru – zaplatit, nebo neplatit? (prosinec 2019)
Norsk Hydro reaguje na útok ransomwarem transparentně (prosinec 2019)
Tip
Chcete se dozvědět více? Spojte se s komunitou zabezpečení společnosti Microsoft v naší technické komunitě: Technická komunita Microsoft Defender XDR.