Sysmon v15.15
Efter Mark Russinovich och Thomas Garnier
Publicerad: 23 juli 2024
Ladda ned Sysmon (4,6 MB)
Ladda ned Sysmon för Linux (GitHub)
System Monitor (Sysmon) är en Windows-systemtjänst och enhetsdrivrutin som, när den är installerad på ett system, förblir bosatt i systemomstarter för att övervaka och logga systemaktivitet till Windows-händelseloggen. Den innehåller detaljerad information om processskapanden, nätverksanslutningar och ändringar i tiden för att skapa filer. Genom att samla in de händelser som genereras med hjälp av Windows Event Collection eller SIEM-agenter och därefter analysera dem, kan du identifiera skadlig eller avvikande aktivitet och förstå hur inkräktare och skadlig kod fungerar i nätverket. Tjänsten körs som en skyddad process och tillåter därför inte en mängd olika användarlägesinteraktioner.
Observera att Sysmon inte tillhandahåller någon analys av de händelser som genereras och inte heller försöker dölja sig för angripare.
Sysmon innehåller följande funktioner:
- Loggar bearbetar skapande med fullständig kommandorad för både aktuella och överordnade processer.
- Registrerar hashen för processbildfiler med SHA1 (standard), MD5, SHA256 eller IMPHASH.
- Flera hashar kan användas samtidigt.
- Innehåller ett process-GUID i processen för att skapa händelser som möjliggör korrelation av händelser även när Windows återanvänder process-ID:er.
- Innehåller ett sessions-GUID i varje händelse för att tillåta korrelation av händelser vid samma inloggningssession.
- Loggar inläsning av drivrutiner eller DLL:er med sina signaturer och hashvärden.
- Loggar öppnas för rå läsåtkomst för diskar och volymer.
- Du kan också logga nätverksanslutningar, inklusive varje anslutnings källprocess, IP-adresser, portnummer, värdnamn och portnamn.
- Identifierar ändringar i tiden för att skapa filer för att förstå när en fil verkligen skapades. Ändring av tidsstämplar för filskapande är en teknik som ofta används av skadlig kod för att täcka dess spår.
- Läs in konfigurationen automatiskt om den ändras i registret.
- Regelfiltrering för att inkludera eller exkludera vissa händelser dynamiskt.
- Genererar händelser från början av startprocessen för att samla in aktivitet som gjorts av även avancerad skadlig kod i kernelläge.
Vanlig användning med enkla kommandoradsalternativ för att installera och avinstallera Sysmon, samt för att kontrollera och ändra dess konfiguration:
Installera: sysmon64 -i [<configfile>]
Uppdateringskonfiguration: sysmon64 -c [<configfile>]
Installera händelsemanifest: sysmon64 -m
Utskriftsschema: sysmon64 -s
Avinstallera: sysmon64 -u [force]
Parameter | Description |
---|---|
-i | Installera tjänsten och drivrutinen. Du kan också ta en konfigurationsfil. |
-c | Uppdatera konfigurationen av en installerad Sysmon-drivrutin eller dumpa den aktuella konfigurationen om inget annat argument anges. Du kan också ta en konfigurationsfil. |
-m | Installera händelsemanifestet (även implicit gjort vid tjänstinstallation). |
-s | Skriv ut schemadefinition för utskrift. |
-u | Avinstallera tjänsten och drivrutinen. Med hjälp av -u force orsaker avinstallera att fortsätta även när vissa komponenter inte är installerade. |
Tjänsten loggar händelser omedelbart och drivrutinen installeras som en startdrivrutin för att samla in aktivitet från början av starten som tjänsten kommer att skriva till händelseloggen när den startar.
På Vista och senare lagras händelser i Applications and Services Logs/Microsoft/Windows/Sysmon/Operational
.
I äldre system skrivs händelser till händelseloggen System
.
Om du behöver mer information om konfigurationsfiler använder du -? config
kommandot .
Ange -accepteula
för att automatiskt godkänna licensavtalet vid installationen, annars uppmanas du att acceptera det interaktivt.
Varken installation eller avinstallation kräver en omstart.
Installera med standardinställningar (processbilder hashas med SHA1 och ingen nätverksövervakning)
sysmon -accepteula -i
Installera Sysmon med en konfigurationsfil (enligt beskrivningen nedan)
sysmon -accepteula -i c:\windows\config.xml
Avinstallera
sysmon -u
Dumpa den aktuella konfigurationen
sysmon -c
Konfigurera om en aktiv Sysmon med en konfigurationsfil (enligt beskrivningen nedan)
sysmon -c c:\windows\config.xml
Ändra konfigurationen till standardinställningar
sysmon -c --
Visa konfigurationsschemat
sysmon -s
På Vista och senare lagras händelser i Applications and Services Logs/Microsoft/Windows/Sysmon/Operational
och på äldre systemhändelser skrivs till händelseloggen System
.
Händelsetidsstämplar är i UTC-standardtid.
Följande är exempel på varje händelsetyp som Sysmon genererar.
Händelsen för att skapa processen ger utökad information om en nyskapade process. Den fullständiga kommandoraden innehåller kontext för processkörningen. Fältet ProcessGUID
är ett unikt värde för den här processen i en domän för att göra händelsekorrelation enklare. Hashen är en fullständig hash för filen med algoritmerna i fältet HashType
.
Tidshändelsen för ändringsfilens skapande registreras när en tid för att skapa en fil uttryckligen ändras av en process. Den här händelsen hjälper till att spåra den verkliga skapandetiden för en fil. Angripare kan ändra filskapandetiden för en bakdörr så att den ser ut som om den installerades med operativsystemet. Observera att många processer på ett legitimt sätt ändrar skapandetiden för en fil. Det indikerar inte nödvändigtvis skadlig aktivitet.
Nätverksanslutningshändelsen loggar TCP/UDP-anslutningar på datorn. Det är inaktiverat som standard. Varje anslutning är länkad till en process via fälten ProcessId
och ProcessGuid
. Händelsen innehåller även IP-adresser, portnummer och IPv6-status för käll- och målvärdnamnen.
Ändringshändelsen för tjänsttillstånd rapporterar tillståndet för Sysmon-tjänsten (startad eller stoppad).
Processen avslutar händelserapporter när en process avslutas. Den innehåller UtcTime
ProcessGuid
, och ProcessId
för processen.
Drivrutinsinlästa händelser innehåller information om en drivrutin som läses in i systemet. De konfigurerade hashvärdena tillhandahålls samt signaturinformation. Signaturen skapas asynkront av prestandaskäl och anger om filen togs bort efter inläsningen.
Avbildningen läste in händelseloggar när en modul läses in i en specifik process. Den här händelsen är inaktiverad som standard och måste konfigureras med alternativet "–l
". Den anger i vilken process modulen läses in, hashvärden och signaturinformation. Signaturen skapas asynkront av prestandaskäl och anger om filen togs bort efter inläsningen. Den här händelsen bör konfigureras noggrant eftersom övervakning av alla avbildningsbelastningshändelser genererar en betydande mängd loggning.
Händelsen CreateRemoteThread
identifierar när en process skapar en tråd i en annan process. Den här tekniken används av skadlig kod för att mata in kod och dölja i andra processer. Händelsen anger käll- och målprocessen. Den innehåller information om koden som ska köras i den nya tråden: StartAddress
, StartModule
och StartFunction
. Observera att StartModule
fälten och StartFunction
härleds kan vara tomma om startadressen ligger utanför inlästa moduler eller kända exporterade funktioner.
Händelsen RawAccessRead
identifierar när en process utför läsåtgärder från enheten med hjälp av tilldelningen \\.\
. Den här tekniken används ofta av skadlig kod för dataexfiltrering av filer som är låsta för läsning, samt för att undvika verktyg för filåtkomstgranskning. Händelsen anger källprocessen och målenheten.
Processen som används för händelserapporter när en process öppnar en annan process, en åtgärd som ofta följs av informationsfrågor eller läser och skriver adressutrymmet för målprocessen. Detta möjliggör identifiering av hackningsverktyg som läser minnesinnehållet i processer som Lokal säkerhetsmyndighet (Lsass.exe) för att stjäla autentiseringsuppgifter för användning i Pass-the-Hash-attacker. Aktivering av den kan generera betydande mängder loggning om det finns diagnostikverktyg aktiva som upprepade gånger öppnar processer för att fråga deras tillstånd, så det bör vanligtvis bara göras med filter som tar bort förväntade åtkomster.
Filskapandeåtgärder loggas när en fil skapas eller skrivs över. Den här händelsen är användbar för att övervaka platser för automatisk start, till exempel startmappen, samt tillfälliga kataloger och nedladdningskataloger, som är vanliga platser där skadlig kod sjunker under den första infektionen.
Registernyckeln och värdet för att skapa och ta bort åtgärder mappas till den här händelsetypen, vilket kan vara användbart för övervakning av ändringar i registrets automatiska startplatser eller specifika ändringar av registret för skadlig kod.
Sysmon använder förkortade versioner av registerrotnyckelnamn med följande mappningar:
Nyckelnamn | Förkortning |
---|---|
HKEY_LOCAL_MACHINE |
HKLM |
HKEY_USERS |
HKU |
HKEY_LOCAL_MACHINE\System\ControlSet00x |
HKLM\System\CurrentControlSet |
HKEY_LOCAL_MACHINE\Classes |
HKCR |
Den här registerhändelsetypen identifierar ändringar av registervärdet. Händelsen registrerar värdet som skrivits för registervärden av typen DWORD
och QWORD
.
Registernyckeln och värdebytet mappas till den här händelsetypen och registrerar det nya namnet på nyckeln eller värdet som har bytt namn.
Den här händelsen loggar när en namngiven filström skapas och genererar händelser som loggar hashen för innehållet i filen som strömmen har tilldelats (den namnlösa strömmen) samt innehållet i den namngivna strömmen. Det finns varianter av skadlig kod som släpper sina körbara filer eller konfigurationsinställningar via webbläsarnedladdningar, och den här händelsen syftar till att samla in den baserat på att webbläsaren bifogar en Zone.Identifier
"webbmarkering"-ström.
Den här händelsen loggar ändringar i Sysmon-konfigurationen , till exempel när filtreringsreglerna uppdateras.
Den här händelsen genererar när en namngiven pipe skapas. Skadlig kod använder ofta namngivna rör för kommunikation mellan processer.
Den här händelsen loggar när en namngiven pipe-anslutning görs mellan en klient och en server.
När ett WMI-händelsefilter registreras, vilket är en metod som används av skadlig kod för att köra, loggar den här händelsen WMI-namnområdet, filternamnet och filteruttrycket.
Den här händelsen loggar registreringen av WMI-konsumenter och registrerar konsumentnamnet, loggen och målet.
När en konsument binder till ett filter loggar den här händelsen konsumentnamnet och filtersökvägen.
Den här händelsen genereras när en process kör en DNS-fråga, oavsett om resultatet lyckas eller misslyckas, cachelagras eller inte. Telemetrin för den här händelsen lades till för Windows 8.1 så att den inte är tillgänglig i Windows 7 och tidigare.
En fil har tagits bort. För att logga händelsen sparas även den borttagna filen i ArchiveDirectory
(vilket är C:\Sysmon
som standard). Under normala driftsförhållanden kan den här katalogen växa till en orimlig storlek – se händelse-ID 26: FileDeleteDetected
för liknande beteende men utan att spara de borttagna filerna.
Den här händelsen genereras när systemets Urklippsinnehåll ändras.
Den här händelsen genereras när processgömningstekniker som "ihålig" eller "herpaderp" identifieras.
En fil har tagits bort.
Den här händelsen genereras när Sysmon identifierar och blockerar skapandet av körbara filer (PE-format).
Den här händelsen genereras när Sysmon identifierar och blockerar filstrimlande från verktyg som SDelete.
Den här händelsen genereras när Sysmon identifierar skapandet av en ny körbar fil (PE-format).
Den här händelsen genereras när ett fel inträffade i Sysmon. De kan inträffa om systemet är hårt belastat och vissa uppgifter inte kunde utföras eller om det finns ett fel i Sysmon-tjänsten, eller även om vissa säkerhets- och integritetsvillkor inte uppfylls. Du kan rapportera eventuella buggar på Sysinternals-forumet eller via Twitter (@markrussinovich).
Konfigurationsfiler kan anges efter konfigurationsväxlarna -i (installation) eller -c (installation). De gör det enklare att distribuera en förinställd konfiguration och filtrera insamlade händelser.
En enkel XML-konfigurationsfil ser ut så här:
<Sysmon schemaversion="4.82">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>
<!-- Do not log process termination -->
<ProcessTerminate onmatch="include" />
<!-- Log network connection if the destination port equal 443 -->
<!-- or 80, and process isn't InternetExplorer -->
<NetworkConnect onmatch="include">
<DestinationPort>443</DestinationPort>
<DestinationPort>80</DestinationPort>
</NetworkConnect>
<NetworkConnect onmatch="exclude">
<Image condition="end with">iexplore.exe</Image>
</NetworkConnect>
</EventFiltering>
</Sysmon>
Konfigurationsfilen innehåller ett schemaversionsattribut på Sysmon-taggen. Den här versionen är oberoende av sysmon-binärversionen och tillåter parsning av äldre konfigurationsfiler. Du kan hämta den aktuella schemaversionen med hjälp av kommandoraden "-? config
". Konfigurationsposterna finns direkt under taggen Sysmon
och filtren finns under taggen EventFiltering
.
Konfigurationsposter liknar kommandoradsväxlar och innehåller följande
Bland konfigurationsposterna finns följande:
Format | Värde | beskrivning |
---|---|---|
ArchiveDirectory | String | Namn på kataloger vid volymrötter till vilka kopiera-vid-ta bort-filer flyttas. Katalogen skyddas med en system-ACL (du kan använda PsExec från Sysinternals för att komma åt katalogen med ).psexec -sid cmd Standard: Sysmon |
CheckRevocation | Booleskt | Kontrollerar kontroller av återkallning av signaturer. Standard: True |
CopyOnDeletePE | Booleskt | Bevarar borttagna körbara bildfiler. Standard: False |
CopyOnDeleteSIDs | Strängar | Kommaavgränsad lista över konto-SID:er för vilka filborttagningar ska bevaras. |
CopyOnDeleteExtensions | Strängar | Tillägg för filer som bevaras vid borttagning. |
CopyOnDeleteProcesses | Strängar | Processnamn för vilka filborttagningar ska bevaras. |
DnsLookup | Booleskt | Styr omvänd DNS-sökning. Standard: True |
DriverName | String | Använder angivet namn för drivrutins- och tjänstbilder. |
HashAlgorithms | Strängar | Hash-algoritmer för att ansöka om hashning. Algoritmer som stöds är MD5, SHA1, SHA256, IMPHASH och * (alla). Standard: None |
Kommandoradsväxlar har en konfigurationspost som beskrivs i Sysmon-användningsutdata. Parametrar är valfria baserat på taggen. Om en kommandoradsväxel också aktiverar en händelse måste den konfigureras genom dess filtertagg. Du kan ange växeln -s
så att Sysmon skriver ut det fullständiga konfigurationsschemat, inklusive händelsetaggar samt fältnamn och typer för varje händelse. Här är till exempel schemat för RawAccessRead
händelsetypen:
<event name="SYSMON_RAWACCESS_READ" value="9" level="Informational "template="RawAccessRead detected" rulename="RawAccessRead" version="2">
<data name="UtcTime" inType="win:UnicodeString" outType="xs:string"/>
<data name="ProcessGuid" inType="win:GUID"/>
<data name="ProcessId" inType="win:UInt32" outType="win:PID"/>
<data name="Image" inType="win:UnicodeString" outType="xs:string"/>
<data name="Device" inType="win:UnicodeString" outType="xs:string"/>
</event>
Med händelsefiltrering kan du filtrera genererade händelser. I många fall kan händelser vara bullriga och samla allt är inte möjligt. Du kanske till exempel bara är intresserad av nätverksanslutningar för en viss process, men inte alla. Du kan filtrera utdata på värden och minska mängden data som ska samlas in.
Varje händelse har en egen filtertagg under noden EventFiltering i en konfigurationsfil:
ID | Tagg | Event |
---|---|---|
1 | ProcessSkapa | Process skapa |
2 | FileCreateTime | Tiden då filen skapades |
3 | NetworkConnect | Nätverksanslutning har identifierats |
4 | saknas | Ändring av sysmon-tjänsttillstånd (kan inte filtreras) |
5 | ProcessTerminate | Processen avslutades |
6 | DriverLoad | Drivrutinen har lästs in |
7 | ImageLoad | Avbildningen har lästs in |
8 | CreateRemoteThread | CreateRemoteThread har identifierats |
9 | RawAccessRead | RawAccessRead har identifierats |
10 | ProcessAccess | Process som används |
11 | FilSkapa | Fil som skapats |
12 | RegistryEvent | Registerobjektet har lagts till eller tagits bort |
13 | RegistryEvent | Registervärdeuppsättning |
14 | RegistryEvent | Registerobjektet har bytt namn |
15 | FileCreateStreamHash | Filström som skapats |
16 | saknas | Konfigurationsändring för Sysmon (kan inte filtreras) |
17 | PipeEvent | Namngivet rör har skapats |
18 | PipeEvent | Namngivet rör anslutet |
19 | WmiEvent | WMI-filter |
20 | WmiEvent | WMI-konsument |
21 | WmiEvent | WMI-konsumentfilter |
22 | DNSQuery | DNS-fråga |
23 | FileDelete | Arkivborttagning arkiverad |
24 | ClipboardChange | Nytt innehåll i Urklipp |
25 | ProcessTampering | Bearbeta bildändring |
26 | FileDeleteDetected | Filborttagning loggad |
27 | FileBlockExecutable | Filblock körbar fil |
28 | FileBlockShredding | Filblocksutstrimning |
29 | FileExecutableDetected | Fil som kan köras har identifierats |
Du kan också hitta dessa taggar i loggboken i aktivitetsnamnet.
onmatch
Filtret tillämpas om händelser matchas. Det kan ändras med onmatch
attributet för filtertaggen. Om värdet är "include"
innebär det att endast matchade händelser inkluderas. Om den är inställd på "exclude"
inkluderas händelsen förutom om en regel matchar. Du kan ange både en inkluderad filteruppsättning och en exkluderingsfilteruppsättning för varje händelse-ID, där exkluderingsmatchningar har företräde.
Varje filter kan innehålla noll eller fler regler. Varje tagg under filtertaggen är ett fältnamn från händelsen. Regler som anger ett villkor för samma fältnamn beter sig som OR-villkor, och de som anger ett annat fältnamn fungerar som AND-villkor. Fältregler kan också använda villkor för att matcha ett värde. Villkoren är följande (alla är skiftlägesokänsliga):
Condition | Beskrivning |
---|---|
vara | Standardvärden är lika med |
är något | Fältet är ett av de ; avgränsade värdena |
är inte | Värden skiljer sig |
Innehåller | Fältet innehåller det här värdet |
innehåller alla | Fältet innehåller något av de ; avgränsade värdena |
innehåller alla | Fältet innehåller alla ; avgränsade värden |
Utesluter | Fältet innehåller inte det här värdet |
exkluderar alla | Fältet innehåller inte ett eller flera av de ; avgränsade värdena |
exkluderar alla | Fältet innehåller inte något av de ; avgränsade värdena |
börja med | Fältet börjar med det här värdet |
avslutas med | Fältet slutar med det här värdet |
börjar inte med | Fältet börjar inte med det här värdet |
slutar inte med | Fältet slutar inte med det här värdet |
mindre än | Lexicographical jämförelse är mindre än noll |
över | Lexicographical jämförelse är mer än noll |
bild | Matcha en bildsökväg (fullständig sökväg eller endast bildnamn). Till exempel: lsass.exe matchar c:\windows\system32\lsass.exe |
Du kan använda ett annat villkor genom att ange det som ett attribut. Detta utesluter nätverksaktivitet från processer med iexplore.exe i deras sökväg:
<NetworkConnect onmatch="exclude">
<Image condition="contains">iexplore.exe</Image>
</NetworkConnect>
Om du vill ha En Sysmon-rapport som regelmatchning resulterade i att en händelse loggades lägger du till namn i regler:
<NetworkConnect onmatch="exclude">
<Image name="network iexplore" condition="contains">iexplore.exe</Image>
</NetworkConnect>
Du kan använda både inkludera och exkludera regler för samma tagg, där exkluderingsregler åsidosätter inkludera regler. I en regel har filtervillkoren OR-beteende.
I exempelkonfigurationen som visades tidigare använder nätverksfiltret både en inkluderings- och exkluderingsregel för att samla in aktivitet till port 80 och 443 av alla processer utom de som har iexplore.exe
i deras namn.
Det går också att åsidosätta det sätt på vilket regler kombineras med hjälp av en regelgrupp som gör att regelkombinationstypen för en eller flera händelser uttryckligen kan anges till AND eller OR.
I följande exempel visas den här användningen. I den första regelgruppen genereras en processskapandehändelse när timeout.exe
endast körs med kommandoradsargumentet 100
, men en processavslutshändelse genereras för avslutningen av ping.exe
och timeout.exe
.
<EventFiltering>
<RuleGroup name="group 1" groupRelation="and">
<ProcessCreate onmatch="include">
<Image condition="contains">timeout.exe</Image>
<CommandLine condition="contains">100</CommandLine>
</ProcessCreate>
</RuleGroup>
<RuleGroup groupRelation="or">
<ProcessTerminate onmatch="include">
<Image condition="contains">timeout.exe</Image>
<Image condition="contains">ping.exe</Image>
</ProcessTerminate>
</RuleGroup>
<ImageLoad onmatch="include"/>
</EventFiltering>
Ladda ned Sysmon (4,6 MB)
Körs på:
- Klient: Windows 10 och senare.
- Server: Windows Server 2016 och senare.