Sysmon v13.30

Av Mark Russinovich och ThomasTakier

Publicerad: 26 oktober 2021

Laddaned Sysmon(2,9 MB)

Introduktion

System Monitor(Sysmon)är en Windows-systemtjänst och enhetsdrivrutin som när den har installerats på ett system förblir kvar vid systemstarter för att övervaka och logga systemaktivitet till Windows-händelseloggen. Den innehåller detaljerad information om skapande av processer, nätverksanslutningar och ändringar av tiden för filskapande. Genom att samla in 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 angripare och skadlig kod fungerar i nätverket.

Observera att Sysmon inte tillhandahåller analys av de händelser som den genererar och inte heller försöker skydda eller dölja sig själv från angripare.

Översikt över Sysmon-funktioner

Sysmon innehåller följande funktioner:

  • Loggar skapande av processer med fullständig kommandorad för både aktuella och överordnade processer.
  • Registrerar hash för processavbildningsfiler med SHA1 (standard), MD5, SHA256 eller IASHASH.
  • Flera hash-värden kan användas samtidigt.
  • Innehåller ett process-GUID under process 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 deras signaturer och hash-vä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 filskapande för att förstå när en fil verkligen skapades. Ändring av tidsstämplar för fil skapa är en teknik som ofta används av skadlig kod för att täcka sina spår.
  • Läs in konfigurationen på nytt automatiskt om den ändras i registret.
  • Regelfiltrering för att inkludera eller exkludera vissa händelser dynamiskt.
  • Genererar händelser tidigt i startprocessen för att samla in aktivitet som görs 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>]
Uppdatera konfigurationen: sysmon64 -c [<configfile>]
Installera händelsemanifest: sysmon64 -m
Utskriftsschema: sysmon64 -s
Avinstallera: sysmon64 -u [force]

Parameter Beskrivning
-i Installera tjänst och drivrutin. Du kan också ta en konfigurationsfil.
-c Uppdatera konfigurationen för en installerad Sysmon-drivrutin eller dumpa den aktuella konfigurationen om inget annat argument har angetts. Du kan också ta en konfigurationsfil.
-m Installera händelsemanifestet (utförs implicit även vid tjänstinstallation).
-s Schemadefinition för utskriftskonfiguration.
-u Avinstallera tjänst och drivrutin. Om -u force du använder avinstalleras även om 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 tidigt i starten som tjänsten skriver till händelseloggen när den startar.

I Vista och senare lagras händelser i Applications and Services Logs/Microsoft/Windows/Sysmon/Operational . På äldre system skrivs händelser till System händelseloggen.

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 interaktivt att godkänna det.

Varken installation eller avinstallation kräver en omstart.

Exempel

Installera med standardinställningar (bearbeta avbildningar hash-kodade 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ällningarna

sysmon -c --

Visa konfigurationsschemat

sysmon -s

Händelser

På Vista och senare lagras händelser i Applications and Services Logs/Microsoft/Windows/Sysmon/Operational , och på äldre systemhändelser skrivs till systemhändelseloggen. 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 processer innehåller utökad information om en process som skapats nyligen. Den fullständiga kommandoraden ger 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 underlätta händelsekorrelation. Hashen är en fullständig hash för filen med algoritmerna i fältet HashType.

Händelse-ID 2: En process ändrade tiden för filskapande

Tidshändelsen för skapande av ändringsfil registreras när en tidpunkt för filskapande uttryckligen ändras av en process. Den här händelsen hjälper till att spåra filens verkliga skapandetid. Angripare kan ändra tiden för filskapande 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 länkas till en process via fälten ProcessId och ProcessGUID. Händelsen innehåller också källans och målets värdnamns IP-adresser, portnummer och IPv6-status.

Händelse-ID 4: Sysmon-tjänstens tillstånd har ändrats

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

Händelse-ID 5: Processen avslutades

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

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

De inlästa händelserna i drivrutinen innehåller information om en drivrutin som läses in i systemet. De konfigurerade hash-koderna tillhandahålls samt signaturinformation. Signaturen skapas asynkront av prestandaskäl och anger om filen har tagits bort efter inläsningen.

Händelse-ID 7: Avbildningen har lästs in

Avbildningen har lästs in händelseloggar när en modul läses in i en viss process. Den här händelsen är inaktiverad som standard och måste konfigureras med alternativet –l. Det anger processen där modulen läses in, hash-värden och signaturinformation. Signaturen skapas asynkront av prestandaskäl och anger om filen har tagits bort efter inläsningen. Den här händelsen bör konfigureras noggrant eftersom övervakning av alla händelser för bildbelastning genererar ett stort antal händelser.

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 ger information om koden som ska köras i den nya tråden: StartAddress, StartModule och StartFunction. Observera att fälten StartModule och StartFunction härleder, de kan vara tomma om startadressen är utanför inlästa moduler eller kända exporterade funktioner.

Händelse-ID 9: RawAccessRead

RawAccessRead-händelsen identifierar när en process utför läsåtgärder från enheten med \\.\ hjälp av denoteringen. Den här tekniken används ofta av skadlig kod för data exfiltrering 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

Händelserapporter som används i processen när en process öppnar en annan process, en åtgärd som ofta följs av informationsfrågor eller läsning och skrivning av målprocessens adressutrymme. Detta möjliggör identifiering av hackningsverktyg som läser minnesinnehållet i processer som lokal säkerhetsutfärdare (Lsass.exe) för att stjäla autentiseringsuppgifter för användning i Pass-the-Hash-attacker. Om du aktiverar den kan du generera stora mängder loggning om det finns aktiva diagnostikverktyg som upprepade gånger öppnar processer för att fråga efter 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

Filskapningsåtgärder loggas när en fil skapas eller skrivs över. Den här händelsen är användbar för övervakning av platser för automatisk start, t.ex. startmappen, samt tillfälliga kataloger och nedladdningskataloger, som är vanliga platser där skadlig kod minskar under den första infektionen.

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

Registernyckel och värde 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 autostartplatser eller specifika ändringar i 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 det värde som skrivits för registervärden av typen DWORD och QWORD.

Händelse-ID 14: RegistryEvent (namnbyte av nyckel och värde)

Åtgärder för registernyckel och värdebyte 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: FilSkapaStreamHash

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 dataströmmen är tilldelad (den namnlösa dataströmmen) samt innehållet i den namngivna dataströ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 är avsedd att samla in den baserat på att webbläsaren bifogar Zone.Identifier en "webbströ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 genereras när en namngiven pipe skapas. Skadlig kod använder ofta namngivna pipes för interprocess communication.

Händelse-ID 18: PipeEvent (ansluten pipe)

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 har identifierats)

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-namnrymden, filternamnet och filteruttrycket.

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

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

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

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, om resultatet lyckas eller misslyckas, cachelagras eller inte. Telemetrin för den här händelsen lades till för Windows 8.1 så den är inte tillgänglig på Windows 7 och tidigare.

Händelse-ID 23: FilTa bort (fil bort 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 orimlig storlek – se händelse-ID 26: för liknande beteende men utan att FileDeleteDetected 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 (processavbildningsändring)

Den här händelsen genereras när process för att dölja tekniker som "tomrum" eller "herpaderp" identifieras.

Händelse-ID 26: FileDeleteDetected (Fil bortloggad)

En fil har tagits bort.

Händelse-ID 255: Fel

Den här händelsen genereras när ett fel uppstod 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. Du kan rapportera eventuella buggar i 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 avbildade händelser.

En enkel XML-konfigurationsfil ser ut så här:

Konfigurationsfil

Konfigurationsfilen innehåller ett schemaversionsattribut på Sysmon-taggen. Den här versionen är oberoende av den binära Sysmon-versionen och tillåter parsning av äldre konfigurationsfiler. Du kan hämta den aktuella schemaversionen med hjälp av "-? config" kommandorad. Konfigurationsposter finns direkt under sysmon-taggen och filtren finns under taggen EventFiltering.

Konfigurationsposter

Konfigurationsposter liknar kommandoradsväxlar och innehåller följande

Konfigurationsposter omfattar följande:

Post Värde Beskrivning
ArchiveDirectory Sträng Namnet på katalogerna vid volymrötter till vilka copy-on-delete-filer flyttas. Katalogen skyddas med en system-ACL (du kan använda PsExec från Sysinternals för att komma åt katalogen med hjälp av psexec -sid cmd ). Standard: Sysmon
CheckRevocation Boolesk Styr kontroll av återkallade signaturer. Standard: Sant
CopyOnDeletePE Boolesk Bevarar borttagna körbara bildfiler. Standard: Falskt
CopyOnDeleteSIDs Strängar Kommaavgränsad lista över konto-SID:er som fil borttagningar kommer att bevaras för.
CopyOnDeleteExtensions Strängar Tillägg för filer som bevaras vid borttagning.
CopyOnDeleteProcesses Strängar Processnamn som fil borttagningar kommer att bevaras för.
DnsLookup Boolesk Styr omvänd DNS-sökning. Standard: Sant
DriverName Sträng Använder det specifikationen namnet för drivrutins- och tjänstavbildningar.
HashAlgorithms Strängar Hash-algoritm(er) som ska användas för hashing. Algoritmer som stöds är MD5, SHA1, SHA256, IASH och * (alla). Standard: Inga

Kommandoradsväxlar har sin 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>  

Poster för händelsefiltrering

Med händelsefiltrering kan du filtrera genererade händelser. I många fall kan händelser vara högljudda och det går inte att samla in allt. 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 Händelse
1 ProcessSkapa Process Create
2 FileCreateTime Tid då filen skapades
3 NetworkConnect Nätverksanslutning har identifierats
4 n/a Ändring av sysmon-tjänstens tillstå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 nås
11-filSkapa Filen har skapats
12 RegistryEvent Registerobjekt har lagts till eller tagits bort
13 RegistryEvent Registervärdeuppsättning
14 RegistryEvent Registerobjektet har bytt namn
15-filSkapaStreamHash Filström som skapats
16 n/a Sysmon-konfigurationsändring (kan inte filtreras)
17 PipeEvent Namngiven pipe har skapats
18 PipeEvent Ansluten namngiven pipe
19 WmiEvent WMI-filter
20 WmiEvent WMI-konsument
21 WmiEvent WMI-konsumentfilter
22 DNSQuery DNS-fråga
23 FilTa bort Fil ta bort arkiverad
24 UrklippÄndra Nytt innehåll i Urklipp
25 ProcessTampering Bearbeta bildändring
26 FileDeleteDetected Fil ta bort loggad

Du kan också hitta taggarna i loggboken i uppgiftsnamnet.

Filtret onmatch tillämpas om händelser matchas. Den 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 "exclude" på inkluderas händelsen förutom om en regelmatchning. Du kan ange både en inkluderad filteruppsättning och en exkluderfilteruppsättning för varje händelse-ID, där exkludingsmatchningar 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 fungerar som OR-villkor, och regler som anger olika 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 okänsliga):

Condition Beskrivning
är Standard, värden är lika med
är vilken som helst Fältet är ett av ; de avgränsade värdena
är inte Värdena skiljer sig åt
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 något av ; de avgränsade värdena
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
avsluta 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 Lexikografisk jämförelse är mindre än noll
mer än Lexikografisk jämförelse är mer än noll
Bild Matcha en bildsökväg (fullständig sökväg eller endast avbildningens namn). 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 sökvägen:

<NetworkConnect onmatch="exclude">
  <Image condition="contains">iexplore.exe</Image>
</NetworkConnect>

Om du vill att Sysmon ska rapportera vilken regelmatchning som 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 exkludera regler åsidosätter inkludera regler. I en regel har filtervillkor OR-beteende.

I exempelkonfigurationen som visades tidigare använder nätverksfiltret både en inkluderings- och exkluderingsregel för att avbilda aktivitet till port 80 och 443 av alla processer utom de som har i iexplore.exe sina namn.

Det är också möjligt att åsidosätta hur regler kombineras med hjälp av en regelgrupp som tillåter att regelns kombinationstyp för en eller flera händelser uttryckligen anges till AND eller OR.

I följande exempel visas den här användningen. I den första regelgruppen genereras en process create-händelse när körs endast med kommandoradsargumentet , men en processavslutshändelse genereras för timeout.exe100 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>

Laddaned Ladda ned Sysmon(2,9 MB)

Körs på:

  • Klient: Windows 7 och högre.
  • Server: Windows Server 2008 R2 och senare.