Sysmon v15.14

Efter Mark Russinovich och Thomas Garnier

Publicerad: 13 februari 2024

DownloadLadda ned Sysmon(4,6 MB)

Ladda ned Sysmon för Linux (GitHub)

Introduktion

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.

Översikt över Sysmon-funktioner

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.

Skärmbilder

EventViewer

Användning

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.

Exempel

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

Event

På Vista och senare lagras händelser i Applications and Services Logs/Microsoft/Windows/Sysmon/Operationaloch 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ändelse-ID 1: Skapa process

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 .

Händelse-ID 2: En process ändrade en tid för att skapa en fil

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.

Händelse-ID 3: Nätverksanslutning

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.

Händelse-ID 4: Sysmon-tjänsttillståndet har ändrats

Ändringshändelsen för tjänsttillstånd rapporterar tillståndet för Sysmon-tjänsten (startad eller stoppad).

Händelse-ID 5: Processen avslutades

Processen avslutar händelserapporter när en process avslutas. Den innehåller UtcTimeProcessGuid , och ProcessId för processen.

Händelse-ID 6: Drivrutinen har lästs in

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.

Händelse-ID 7: Avbildningen läses in

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ändelse-ID 8: CreateRemoteThread

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ändelse-ID 9: RawAccessRead

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.

Händelse-ID 10: ProcessAccess

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.

Händelse-ID 11: FilSkapa

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.

Händelse-ID 12: RegistryEvent (skapa och ta bort objekt)

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

Händelse-ID 13: RegistryEvent (värdeuppsättning)

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.

Händelse-ID 14: RegistryEvent (nyckel- och värdebyte)

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.

Händelse-ID 15: FileCreateStreamHash

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.

Händelse-ID 16: ServiceConfigurationChange

Den här händelsen loggar ändringar i Sysmon-konfigurationen , till exempel när filtreringsreglerna uppdateras.

Händelse-ID 17: PipeEvent (pipe created)

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.

Händelse-ID 18: PipeEvent (pipe Anslut ed)

Den här händelsen loggar när en namngiven pipe-anslutning görs mellan en klient och en server.

Händelse-ID 19: WmiEvent (WmiEventFilter-aktivitet identifierad)

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.

Händelse-ID 20: WmiEvent (WmiEventConsumer-aktivitet identifierad)

Den här händelsen loggar registreringen av WMI-konsumenter och registrerar konsumentnamnet, loggen och målet.

Händelse-ID 21: WmiEvent (WmiEventConsumerToFilter-aktivitet identifierad)

När en konsument binder till ett filter loggar den här händelsen konsumentnamnet och filtersökvägen.

Händelse-ID 22: DNSEvent (DNS-fråga)

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.

Händelse-ID 23: FileDelete (Arkivborttagning arkiverad)

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.

Händelse-ID 24: UrklippÄndra (nytt innehåll i Urklipp)

Den här händelsen genereras när systemets Urklippsinnehåll ändras.

Händelse-ID 25: ProcessTampering (Ändring av processavbildning)

Den här händelsen genereras när processgömningstekniker som "ihålig" eller "herpaderp" identifieras.

Händelse-ID 26: FileDeleteDetected (Filborttagning loggad)

En fil har tagits bort.

Händelse-ID 27: FileBlockExecutable

Den här händelsen genereras när Sysmon identifierar och blockerar skapandet av körbara filer (PE-format).

Händelse-ID 28: FileBlockShredding

Den här händelsen genereras när Sysmon identifierar och blockerar filstrimlande från verktyg som SDelete.

Händelse-ID 29: FileExecutableDetected

Den här händelsen genereras när Sysmon identifierar skapandet av en ny körbar fil (PE-format).

Händelse-ID 255: Fel

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

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

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>  

Händelsefiltreringsposter

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 Nätverk Anslut 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
Är 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
mer än 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>

DownloadLadda ned Sysmon(4,6 MB)

Körs på:

  • Klient: Windows 10 och senare.
  • Server: Windows Server 2016 och senare.