Kiristysohjelmien etsiminen
Koskee seuraavia:
- Microsoft Defender XDR
Kiristyshaittaohjelmat kehittyivät nopeasti yksinkertaisesta hyödykeohjelmistosta, joka vaikuttaa yksittäisiin tietokoneen käyttäjiin, yritysuhaksi, joka vaikuttaa vakavasti teollisuudenaloihin ja valtion laitoksiin. Vaikka Microsoft Defender XDR tarjoaa monia ominaisuuksia, jotka havaitsevat ja estävät kiristysohjelmia ja niihin liittyviä tunkeilutoimintoja, ennakoivat tarkistukset kompromissien merkeistä voivat auttaa pitämään verkkosi suojattuna.
Kehittyneen metsästyksen Microsoft Defender XDR avulla voit luoda kyselyitä, jotka paikantavat kiristyshaittaohjelmatoimintaan liittyviä yksittäisiä artefakteja. Voit myös suorittaa kehittyneempiä kyselyitä, jotka voivat etsiä toiminnan merkkejä ja punnita näitä merkkejä löytääkseen laitteita, jotka vaativat välitöntä huomiota.
Kiristyshaittaohjelmatoiminnan merkit
Microsoftin tietoturvatutkijat ovat havainneet erilaisia yleisiä mutta hienovaraisia artefakteja monissa kehittyneiden tunkeilijoiden käynnistäissä kiristyshaittaohjelmakampanjoissa. Näihin etumerkkeihin liittyy enimmäkseen järjestelmätyökalujen käyttö salaukseen valmistautumiseen, tunnistamisen estämiseen ja rikosteknisten todisteiden selvittämiseen.
Kiristyshaittaohjelmatoiminta | Yleiset työkalut | Tarkoitus |
---|---|---|
Pysäytä prosessit | taskkill.exe, verkon pysäytys | Varmista, että eri sovellukset eivät ole lukinneet salaukseen liittyviä tiedostoja. |
Palveluiden poistaminen käytöstä | sc.exe | - Varmista, että eri sovellukset eivät ole lukinneet salaukseen liittyviä tiedostoja. - Estä suojausohjelmistoa häiritsemästä salausta ja muuta kiristyshaittaohjelmatoimintaa. - Lopeta varmuuskopio-ohjelmiston luominen palautettavia kopioita. |
Lokien ja tiedostojen poistaminen | cipher.exe, wevtutil, fsutil.exe | Poista rikostekniset todisteet. |
Poista tilannevedokset | vsadmin.exe, wmic.exe | Poista aseman tilannevedokset, joita voidaan käyttää salattujen tiedostojen palauttamiseen. |
Poista ja pysäytä varmuuskopiot | wbadmin.exe | Poista olemassa olevat varmuuskopiot ja pysäytä ajoitetut varmuuskopiointitehtävät estäen palautuksen salauksen jälkeen. |
Muokkaa käynnistysasetuksia | bcdedit.exe | Poista käytöstä varoitukset ja automaattiset korjaukset salausprosessin aiheuttamien käynnistysvirheiden jälkeen. |
Poista palautustyökalut käytöstä | schtasks.exe, regedit.exe, | Poista käytöstä järjestelmän palautus ja muut järjestelmän palautusasetukset. |
Tarkista yksittäiset kiristyshaittaohjelmatoiminnan merkit
Monet toiminnot, jotka ovat kiristyshaittaohjelmakäyttäytymistä, mukaan lukien edellisessä osiossa kuvatut toimet, voivat olla hyvänlaatuisia. Kun käytät seuraavia kyselyitä kiristyshaittaohjelman paikantamiseen, suorita useampi kuin yksi kysely tarkistaaksesi, onko samoissa laitteissa erilaisia merkkejä mahdollisesta kiristyshaittaohjelmatoiminnasta.
Useiden prosessien lopettaminen taskkill.exe avulla
Tämä kysely tarkistaa yritykset pysäyttää vähintään 10 erillistä prosessia taskkill.exe apuohjelmalla. Suorita kysely
// 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
Pysäytetään prosessit verkon pysäytyksen avulla
Tämä kysely tarkistaa yritykset pysäyttää vähintään 10 erillistä prosessia käyttämällä net stop -komentoa. Suorita kysely
// 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
Useiden asemien tietojen poistaminen cipher.exe
Tämä kysely tarkistaa yritykset poistaa tietoja useista asemista käyttämällä cipher.exe. Tämän toiminnan suorittaa yleensä kiristyshaittaohjelma tietojen palauttamisen estämiseksi salauksen jälkeen. Suorita kysely
// 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
Rikosteknisten todisteiden tyhjentäminen tapahtumalokeista wevtutilia käyttämällä
Tämä kysely tarkistaa yritykset tyhjentää vähintään 10 lokimerkintää tapahtumalokeista käyttämällä wevtutilia. Suorita kysely
// 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
Palveluiden poistaminen käytöstä sc.exe avulla
Tämä kysely tarkistaa yritykset poistaa käytöstä vähintään 10 aiemmin luotua palveluasc.exeavulla . Suorita kysely
// 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
Järjestelmän palauttamisen poistaminen käytöstä
Tämä kysely tunnistaa yritykset pysäyttää järjestelmän palautus ja estää järjestelmää luomasta palautuspisteitä, joita voidaan käyttää kiristyshaittaohjelman salaamien tietojen palauttamiseen. Suorita kysely
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'
Varmuuskopioinnin poistaminen
Tässä kyselyssä tunnistetaan tilannevedoksen tilannevedosten poistaminen wmic.exe avulla ennen salausta. Suorita kysely
DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName
Tarkista useita merkkejä kiristyshaittaohjelmatoiminnasta
Sen sijaan, että suoritit useita kyselyitä erikseen, voit myös käyttää kattavaa kyselyä, joka tarkistaa useita kiristyshaittaohjelman toiminnan merkkejä tunnistaaksesi kyseiset laitteet. Seuraava yhdistetty kysely:
- Etsii sekä suhteellisen konkreettisia että hienovaraisia merkkejä kiristyshaittaohjelmatoiminnasta
- Punnitsi näiden merkkien esiintymistä
- Tunnistaa laitteet, joilla on suurempi mahdollisuus olla kiristyshaittaohjelman kohteena
Kun tämä yhdistetty kysely suoritetaan, se palauttaa luettelon laitteista, joissa on ollut useita merkkejä hyökkäyksestä. Näytetään myös kunkin tyyppisten kiristyshaittaohjelmatoimintojen määrä. Jos haluat suorittaa tämän yhdistetyn kyselyn, kopioi se suoraan kehittyneeseen metsästyskyselyeditoriin.
// 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
Kyselyn tulosten ymmärtäminen ja muokkaaminen
Yhdistetty kysely palauttaa seuraavat tulokset:
- DeviceId – tunnistaa kyseessä olevan laitteen
- TimeStamp – ensimmäinen kerta, kun laitteessa havaittiin merkkejä kiristyshaittaohjelmasta
- Tietyt toiminnan merkit – jokaisen useassa sarakkeessa näkyvän merkin määrä, kuten BcdEdit tai FsUtil
- TotalEvidenceCount – havaittujen merkkien määrä
- UniqueEvidenceCount – havaittujen merkkityyppien määrä
Kyselytulokset, jotka näyttävät kyseiset laitteet ja useita merkkejä kiristyshaittaohjelmatoiminnasta
Oletusarvoisesti kyselyn tuloksessa luetellaan vain laitteet, joissa on yli kaksi kiristyshaittaohjelmatoimintaa. Jos haluat nähdä kaikki laitteet, joilla on merkkejä kiristyshaittaohjelmatoiminnasta, muokkaa seuraavaa where
operaattoria ja määritä numeroksi nolla (0). Jos haluat nähdä vähemmän laitteita, määritä suurempi luku.
| where UniqueEvidenceCount > 2
Lisää kiristysohjelmaresursseja
Tärkeimmät tiedot Microsoftilta:
- Kiristyshaittaohjelman kasvava uhka, Microsoft On the Issues -blogikirjoitus 20.7.2021
- Ihmisen operoimat kiristyshaittaohjelmat
- Ota kiristyshaittaohjelmien estot nopeasti käyttöön
- 2021 Microsoftin digitaalisen suojauksen raportti (katso sivut 10-19)
- Kiristyshaittaohjelma: laajalle levinnyt ja jatkuva uhkauhka-analytiikkaraportti Microsoft Defender-portaalissa
Microsoft 365:
- Kiristysohjelmien suojauksen käyttöönotto Microsoft 365 vuokraajassa
- Maximize Ransomware Resiliency with Azure and Microsoft 365
- Ransomware-tapausten käsittelyn pelikirjat
- Haittaohjelmien ja kiristyshaittaohjelmien suojaus
- Windows-tietokoneen suojaaminen kiristyshaittaohjelmilta
- Kiristysohjelman käsittely SharePoint Onlinessa
- Uhka-analytiikkaraportit kiristyshaittaohjelmista Microsoft Defender-portaalissa
Microsoft Azure:
- Azure-puolustukset kiristyshaittaohjelmahyökkäykselle
- Maximize Ransomware Resiliency with Azure and Microsoft 365
- Varmuuskopioinnin ja palautuksen suunnitelma suojautua kiristyshaittaohjelmilta
- Suojaa kiristysohjelmilta Microsoft Azure-varmuuskopiointi avulla (26 minuutin video)
- Palautuminen järjestelmän identiteetin kompromissista
- Edistynyt monivaihehyökkäysten tunnistaminen Microsoft Sentinelissä
- Kiristyshaittaohjelmien fuusion havaitseminen Microsoft Sentinelissä
Microsoft Defender for Cloud Apps:
Microsoftin tietoturvatiimin blogikirjoituksia:
Kolme vaihetta kiristyshaittaohjelmien ehkäisemiseksi ja palauttamiseksi (syyskuu 2021)
Opas ihmisen ylläpitämän kiristyshaittaohjelman torjuntaan: Osa 1 (syyskuu 2021)
Tärkeimmät vaiheet siihen, miten Microsoftin tunnistamis- ja reagointiryhmä (DART) suorittaa kiristyshaittaohjelmatapausten tutkimuksia.
Opas ihmisen ylläpitämän kiristyshaittaohjelman torjuntaan: Osa 2 (syyskuu 2021)
Suositukset ja parhaat käytännöt.
-
Katso Ransomware-osio .
Ihmisen operoimat kiristyshaittaohjelmahyökkäykset: Ehkäistävissä oleva katastrofi (maaliskuu 2020)
Sisältää hyökkäysketjun analyysit todellisista hyökkäyksistä.
Ransomware-vastaus – maksaa vai olla maksamatta? (joulukuu 2019)
Norsk Hydro vastaa kiristyshaittaohjelmahyökkäykseen avoimuudella (joulukuu 2019)
Vihje
Haluatko tietää lisää? Ota yhteyttä Microsoft Security -yhteisöön Tech Community -yhteisössä: Microsoft Defender XDR Tech Community.