Uhkien etsiminen laitteissa, sähköposteissa, sovelluksissa ja käyttäjällisyyksissä
Koskee seuraavia:
- Microsoft Defender XDR
Kehittynyt metsästys Microsoft Defender XDR mahdollistaa uhkien ennakoivan metsästyksen kaikissa:
- Microsoft Defender for Endpoint hallinnoimat laitteet
- Microsoft 365:n käsittelemiä sähköpostiviestejä
- Microsoft Defender for Cloud Apps ja Microsoft Defender for Identity jäljittämät pilvisovellusten toiminnot, todennustapahtumat ja toimialueen ohjauskoneiden toiminnot
Tämän näkyvyyden tason avulla voit nopeasti etsiä uhkia, jotka kulkevat verkon osien läpi, mukaan lukien kehittyneet tunkeutumiset, jotka saapuvat sähköpostiin tai verkkoon, nostaa paikallisia oikeuksia, hankkia etuoikeutetun toimialueen tunnistetiedot ja siirtyä sivuttain laitteissasi.
Seuraavassa on yleisiä tekniikoita ja esimerkkikyselyitä, jotka perustuvat erilaisiin metsästysskenaarioon, joiden avulla voit tutkia, miten voit luoda kyselyitä tällaisten kehittyneiden uhkien metsästyksessä.
Hae entiteetin tiedot
Näiden kyselyiden avulla saat tietoja käyttäjätileistä, laitteista ja tiedostoista nopeasti.
Käyttäjätilien hankkiminen sähköpostiosoitteista
Kun luot kyselyjä taulukoista, jotka kattavat laitteet ja sähköpostiviestit, sinun on todennäköisesti hankittava käyttäjätilien nimet lähettäjän tai vastaanottajan sähköpostiosoitteista. Voit yleensä tehdä tämän joko vastaanottajan tai lähettäjän osoitteen kohdalla käyttämällä sähköpostiosoitteen paikallista isäntää .
Alla olevassa katkelmassa käytetään tostring() Kusto-funktiota, joka poimii paikallisen isännän juuri ennen vastaanottajan @
sähköpostiosoitteita sarakkeessa RecipientEmailAddress
.
//Query snippet showing how to extract the account name from an email address
AccountName = tostring(split(RecipientEmailAddress, "@")[0])
Alla olevassa kyselyssä näytetään, miten tätä katkelmaa voidaan käyttää:
EmailEvents
| where Timestamp > ago(7d)
| project RecipientEmailAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]);
IdentityInfo-taulukon yhdistäminen
Voit hakea tilien nimiä ja muita tilitietoja yhdistämällä tai liittymällä IdentityInfo-taulukkoon. Alla oleva kysely noutaa tietojenkalastelu- ja haittaohjelmatunnistusluettelon EmailEvents-taulukosta ja liittää sitten nämä tiedot IdentityInfo
taulukkoon saadakseen yksityiskohtaisia tietoja kustakin vastaanottajasta.
EmailEvents
| where Timestamp > ago(7d)
//Get email processing events where the messages were identified as either phishing or malware
| where ThreatTypes has "Malware" or ThreatTypes has "Phish"
//Merge email events with identity info to get recipient details
| join (IdentityInfo | distinct AccountUpn, AccountDisplayName, JobTitle,
Department, City, Country) on $left.RecipientEmailAddress == $right.AccountUpn
//Show important message and recipient details
| project Timestamp, NetworkMessageId, Subject, ThreatTypes,
SenderFromAddress, RecipientEmailAddress, AccountDisplayName, JobTitle,
Department, City, Country
Katso tästä lyhyestä videosta , miten voit liittää taulukoita Kusto Query Languagen avulla.
Laitteen tietojen hankkiminen
Kehittynyt metsästysrakenne tarjoaa laajan laitetiedon eri taulukoissa. Esimerkiksi DeviceInfo-taulukko tarjoaa kattavia laitetietoja säännöllisesti koottujen tapahtumatietojen perusteella. Tämä kysely käyttää taulukkoa DeviceInfo
tarkistaakseen, onko mahdollisesti vaarantunut käyttäjä (<account-name>
) kirjautuneena mihin tahansa laitteeseen, ja luettelee sitten kyseisissä laitteissa käynnistetyt hälytykset.
Vihje
Tämän kyselyn avulla kind=inner
määritetään sisäliitos, joka estää vasemman puolen arvojen laajennuksen kohteelle DeviceId
.
DeviceInfo
//Query for devices that the potentially compromised account has logged onto
| where LoggedOnUsers contains '<account-name>'
| distinct DeviceId
//Crosscheck devices against alert records in AlertEvidence and AlertInfo tables
| join kind=inner AlertEvidence on DeviceId
| project AlertId
//List all alerts on devices that user has logged on to
| join AlertInfo on AlertId
| project AlertId, Timestamp, Title, Severity, Category
Hae tiedoston tapahtumatiedot
Seuraavan kyselyn avulla voit hakea tietoja tiedostoon liittyvistä tapahtumista.
DeviceInfo
| where Timestamp > ago(1d)
| where ClientVersion startswith "20.1"
| summarize by DeviceId
| join kind=inner (
DeviceFileEvents
| where Timestamp > ago(1d)
) on DeviceId
| take 10
Verkon tapahtumatietojen hankkiminen
Seuraavan kyselyn avulla voit hakea tietoja verkkoon liittyvistä tapahtumista.
DeviceInfo
| where Timestamp > ago(1d)
| where ClientVersion startswith "20.1"
| summarize by DeviceId
| join kind=inner (
DeviceNetworkEvents
| where Timestamp > ago(1d)
) on DeviceId
| take 10
Laiteagentin versiotietojen hankkiminen
Seuraavan kyselyn avulla saat agentin version laitteessa suoritettavaksi.
DeviceInfo
| where Timestamp > ago(1d)
| where ClientVersion startswith "20.1"
| summarize by DeviceId
| join kind=inner (
DeviceNetworkEvents
| where Timestamp > ago(1d)
) on DeviceId
| take 10
Esimerkkikysely macOS-laitteille
Seuraavan esimerkkikyselyn avulla voit tarkastella kaikkia laitteita, joiden macOS-versio on vanhempi kuin Catalina.
DeviceInfo
| where Timestamp > ago(1d)
| where OSPlatform == "macOS" and OSVersion !contains "10.15" and OSVersion !contains "11."
| summarize by DeviceId
| join kind=inner (
DeviceInfo
| where Timestamp > ago(1d)
) on DeviceId
| take 10
Hae laitteen tilatiedot
Hae laitteen tila seuraavan kyselyn avulla. Seuraavassa esimerkissä kysely tarkistaa, onko laite otettu käyttöön.
DeviceInfo
| where Timestamp > ago(1d)
| where OnboardingStatus != "Onboarded"
| summarize by DeviceId
| join kind=inner (
DeviceInfo
| where Timestamp > ago(1d)
) on DeviceId
| take 10
Metsästysskenaariot
Luettele niiden käyttäjien kirjautumistoiminnot, jotka ovat vastaanottaneet sähköpostiviestejä, joita ei ole lähetetty onnistuneesti
Nollatuntinen automaattinen puhdistus (ZAP) käsittelee haitallisia sähköpostiviestejä niiden vastaanottamisen jälkeen. Jos ZAP epäonnistuu, haitallinen koodi saattaa lopulta toimia laitteessa ja jättää tilit vaarantumaan. Tämä kysely tarkistaa niiden sähköpostiviestien vastaanottajien kirjautumistoiminnan, joita ZAP ei onnistunut korjaamaan.
EmailPostDeliveryEvents
| where Timestamp > ago(7d)
//List malicious emails that were not zapped successfully
| where ActionType has "ZAP" and ActionResult == "Error"
| project ZapTime = Timestamp, ActionType, NetworkMessageId , RecipientEmailAddress
//Get logon activity of recipients using RecipientEmailAddress and AccountUpn
| join kind=inner IdentityLogonEvents on $left.RecipientEmailAddress == $right.AccountUpn
| where Timestamp between ((ZapTime-24h) .. (ZapTime+24h))
//Show only pertinent info, such as account name, the app or service, protocol, the target device, and type of logon
| project ZapTime, ActionType, NetworkMessageId , RecipientEmailAddress, AccountUpn,
LogonTime = Timestamp, AccountDisplayName, Application, Protocol, DeviceName, LogonType
Tunnistetietovarkauden kohteeksi joutuneiden toimialuetilien kirjautumisyritysten hakeminen
Tämä kysely tunnistaa ensin kaikki taulukon tunnistetietojen käyttöilmoitukset AlertInfo
. Sen jälkeen se yhdistää tai liittää AlertEvidence
taulukon, jonka se jäsentää kohdistettujen tilien nimiä ja suodattimia vain toimialueeseen liitettyjen tilien osalta. Lopuksi se tarkistaa IdentityLogonEvents
taulukon saadakseen kaikki toimialueeseen liitettyjen kohdennettujen tilien kirjautumistoiminnot.
AlertInfo
| where Timestamp > ago(30d)
//Get all credential access alerts
| where Category == "CredentialAccess"
//Get more info from AlertEvidence table to get the SID of the target accounts
| join AlertEvidence on AlertId
| extend IsJoined=(parse_json(AdditionalFields).Account.IsDomainJoined)
| extend TargetAccountSid=tostring(parse_json(AdditionalFields).Account.Sid)
//Filter for domain-joined accounts only
| where IsJoined has "true"
//Merge with IdentityLogonEvents to get all logon attempts by the potentially compromised target accounts
| join kind=inner IdentityLogonEvents on $left.TargetAccountSid == $right.AccountSid
//Show only pertinent info, such as account name, the app or service, protocol, the accessed device, and type of logon
| project AccountDisplayName, TargetAccountSid, Application, Protocol, DeviceName, LogonType
Tarkista, ovatko tunnetun pahantahtoisen lähettäjän tiedostot laitteissasi
Olettaen, että tiedät, että sähköpostiosoite lähettää haitallisia tiedostoja (MaliciousSender@example.com
), voit suorittaa tämän kyselyn määrittääksesi, onko tämän lähettäjän tiedostoja laitteissasi. Tämän kyselyn avulla voit esimerkiksi tunnistaa laitteet, joihin haittaohjelmien jakelukampanja vaikuttaa.
EmailAttachmentInfo
| where SenderFromAddress =~ "MaliciousSender@example.com"
//Get emails with attachments identified by a SHA-256
| where isnotempty(SHA256)
| join (
//Check devices for any activity involving the attachments
DeviceFileEvents
| project FileName, SHA256, DeviceName, DeviceId
) on SHA256
| project Timestamp, FileName , SHA256, DeviceName, DeviceId, NetworkMessageId, SenderFromAddress, RecipientEmailAddress
Tarkista kirjautumisyritykset vahingollisten sähköpostiviestien vastaanottamisen jälkeen
Tämä kysely löytää 10 viimeisintä kirjautumista, jotka sähköpostin vastaanottajat suorittavat 30 minuutin kuluessa siitä, kun he ovat vastaanottaneet tunnettuja haitallisia sähköpostiviestejä. Tämän kyselyn avulla voit tarkistaa, ovatko sähköpostin vastaanottajien tilit vaarantuneet.
//Define new table for malicious emails
let MaliciousEmails=EmailEvents
//List emails detected as malware, getting only pertinent columns
| where ThreatTypes has "Malware"
| project TimeEmail = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]);
MaliciousEmails
| join (
//Merge malicious emails with logon events to find logons by recipients
IdentityLogonEvents
| project LogonTime = Timestamp, AccountName, DeviceName
) on AccountName
//Check only logons within 30 minutes of receipt of an email
| where (LogonTime - TimeEmail) between (0min.. 30min)
| take 10
Tarkista PowerShell-toimet, kun olet vastaanottanut sähköpostiviestejä tunnetulta pahantahtoiselta lähettäjältä
Pahantahtoiset sähköpostiviestit sisältävät usein asiakirjoja ja muita erityisesti muotoiltuja liitteitä, jotka suorittavat PowerShell-komentoja lisätietojen toimittamiseksi. Jos olet tietoinen tunnetulta pahantahtoiselta lähettäjältä (MaliciousSender@example.com
) tulevista sähköposteista, voit tämän kyselyn avulla luetella ja tarkastella PowerShell-toimintoja, jotka tapahtuivat 30 minuutin kuluessa siitä, kun lähettäjältä vastaanotettiin sähköpostiviesti.
//Define new table for emails from specific sender
let EmailsFromBadSender=EmailEvents
| where SenderFromAddress =~ "MaliciousSender@example.com"
| project TimeEmail = Timestamp, Subject, SenderFromAddress, AccountName = tostring(split(RecipientEmailAddress, "@")[0]);
//Merge emails from sender with process-related events on devices
EmailsFromBadSender
| join (
DeviceProcessEvents
//Look for PowerShell activity
| where FileName =~ "powershell.exe"
//Add line below to check only events initiated by Outlook
//| where InitiatingProcessParentFileName =~ "outlook.exe"
| project TimeProc = Timestamp, AccountName, DeviceName, InitiatingProcessParentFileName, InitiatingProcessFileName, FileName, ProcessCommandLine
) on AccountName
//Check only PowerShell activities within 30 minutes of receipt of an email
| where (TimeProc - TimeEmail) between (0min.. 30min)
Aiheeseen liittyvät artikkelit
- Tarkennetun etsinnän yleiskatsaus
- Opi kyselyn kieli
- Kyselytulosten käsitteleminen
- Jaettujen kyselyjen käyttäminen
- Rakenteen ymmärtäminen
- Käytä kyselyn parhaita käytäntöjä
Vihje
Haluatko tietää lisää? Ota yhteyttä Microsoft Security -yhteisöön Tech Community -yhteisössä: Microsoft Defender XDR Tech Community.