Sysmon v15.15
Podle Mark Russinovich a Thomas Garnier
Publikováno: 23. července 2024
Stáhnout Sysmon (4,6 MB)
Stáhnout Sysmon pro Linux (GitHub)
System Monitor (Sysmon) je systémová služba systému Windows a ovladač zařízení, který po instalaci v systému zůstává rezidentem při restartování systému, aby monitoroval a protokoloval systémovou aktivitu do protokolu událostí Systému Windows. Poskytuje podrobné informace o vytváření procesů, síťových připojeních a změnách času vytváření souborů. Shromažďováním událostí generovaných pomocí kolekce událostí systému Windows nebo agentů SIEM a následnou analýzou událostí můžete identifikovat škodlivou nebo neobvyklou aktivitu a porozumět tomu, jak ve vaší síti fungují útočníky a malware. Služba běží jako chráněný proces, takže nepovoluje širokou škálu interakcí v uživatelském režimu.
Všimněte si, že Sysmon neposkytuje analýzu událostí, které generuje, ani se nepokoušá se skrýt před útočníky.
Sysmon zahrnuje následující funkce:
- Zaznamenává vytváření procesů pomocí úplného příkazového řádku pro aktuální i nadřazené procesy.
- Zaznamenává hodnotu hash procesních souborů obrázků pomocí SHA1 (výchozí), MD5, SHA256 nebo IMPHASH.
- Současně lze použít více hodnot hash.
- Zahrnuje identifikátor GUID procesu v procesu vytváření událostí, které umožňují korelaci událostí i v případě, že Systém Windows znovu používá ID procesů.
- Obsahuje identifikátor GUID relace v každé události, který umožňuje korelaci událostí ve stejné přihlašovací relaci.
- Zaznamenává načítání ovladačů nebo knihoven DLL s jejich podpisy a hodnotami hash.
- Otevře se protokoly pro nezpracovaný přístup ke čtení disků a svazků.
- Volitelně protokoluje síťová připojení, včetně zdrojového procesu každého připojení, IP adres, čísel portů, názvů hostitelů a názvů portů.
- Detekuje změny v době vytvoření souboru, aby porozuměla tomu, kdy byl soubor skutečně vytvořen. Úprava časových razítek vytvoření souboru je technika, kterou malware běžně používá k pokrytí jeho stop.
- Automaticky znovu načtěte konfiguraci, pokud se změnila v registru.
- Filtrování pravidel pro dynamické zahrnutí nebo vyloučení určitých událostí
- Generuje události z počátku procesu spouštění za účelem zachycení aktivity vytvořené dokonce sofistikovaným malwarem v režimu jádra.
Běžné použití s jednoduchými možnostmi příkazového řádku k instalaci a odinstalaci nástroje Sysmon a také ke kontrole a úpravě konfigurace:
Nainstalovat: sysmon64 -i [<configfile>]
Konfigurace aktualizace: sysmon64 -c [<configfile>]
Instalace manifestu události: sysmon64 -m
Schéma tisku: sysmon64 -s
Odinstalovat: sysmon64 -u [force]
Parametr | Popis |
---|---|
-i | Nainstalujte službu a ovladač. Volitelně můžete provést konfigurační soubor. |
-c | Aktualizace konfigurace nainstalovaného ovladače Sysmon nebo výpis aktuální konfigurace, pokud není k dispozici žádný jiný argument. Volitelně se používá konfigurační soubor. |
-m | Nainstalujte manifest události (implicitně se provádí také při instalaci služby). |
-s | Vytiskněte definici schématu konfigurace. |
-u | Odinstalujte službu a ovladač. Použití -u force odinstalace způsobí pokračování i v případě, že některé součásti nejsou nainstalovány. |
Služba protokoluje události okamžitě a ovladač se nainstaluje jako spouštěcí ovladač pro zaznamenání aktivity z počátku spuštění, které služba při spuštění zapíše do protokolu událostí.
V systému Vista a vyšších jsou události uloženy v Applications and Services Logs/Microsoft/Windows/Sysmon/Operational
.
Ve starších systémech se události zapisují do System
protokolu událostí.
Pokud potřebujete další informace o konfiguračních souborech, použijte -? config
příkaz.
Zadejte -accepteula
, aby automaticky přijímala smlouvu EULA při instalaci, jinak budete interaktivně vyzváni k jeho přijetí.
Instalace ani odinstalace nevyžaduje restartování.
Instalace s výchozím nastavením (zpracování obrázků hashovaných pomocí SHA1 a bez monitorování sítě)
sysmon -accepteula -i
Nainstalujte sysmon s konfiguračním souborem (jak je popsáno níže).
sysmon -accepteula -i c:\windows\config.xml
Odinstalace produktu
sysmon -u
Výpis aktuální konfigurace
sysmon -c
Změna konfigurace aktivního sysmonu pomocí konfiguračního souboru (jak je popsáno níže)
sysmon -c c:\windows\config.xml
Změna konfigurace na výchozí nastavení
sysmon -c --
Zobrazení schématu konfigurace
sysmon -s
V systému Vista a vyšších jsou události uloženy v Applications and Services Logs/Microsoft/Windows/Sysmon/Operational
a ve starších systémech události se zapisují do System
protokolu událostí.
Časová razítka událostí jsou ve standardním čase UTC.
Následují příklady jednotlivých typů událostí, které Sysmon generuje.
Událost vytvoření procesu poskytuje rozšířené informace o nově vytvořeném procesu. Úplný příkazový řádek poskytuje kontext při provádění procesu. Pole ProcessGUID
je jedinečná hodnota pro tento proces v rámci domény, aby byla korelace událostí jednodušší. Hodnota hash je úplná hodnota hash souboru s algoritmy v HashType
poli.
Událost čas vytvoření souboru změn se zaregistruje, když proces explicitně upraví čas vytvoření souboru. Tato událost pomáhá sledovat čas vytvoření souboru v reálném čase. Útočníci můžou změnit čas vytvoření souboru backdooru tak, aby vypadal jako nainstalovaný v operačním systému. Všimněte si, že mnoho procesů oprávněně mění čas vytvoření souboru; nemusí nutně znamenat škodlivou aktivitu.
Událost síťového připojení protokoluje připojení TCP/UDP na počítači. Ve výchozím nastavení je zakázaná. Každé připojení je propojeno s procesem prostřednictvím ProcessId
polí a ProcessGuid
polí. Událost obsahuje také ip adresy IP adres zdrojového a cílového hostitele, čísla portů a stav protokolu IPv6.
Událost změny stavu služby hlásí stav služby Sysmon (spuštěno nebo zastaveno).
Proces ukončí sestavy událostí při ukončení procesu. Poskytuje a UtcTime
ProcessGuid
ProcessId
proces.
Události načtení ovladače poskytují informace o ovladači, který se načítá v systému. Nakonfigurované hodnoty hash jsou k dispozici i informace o podpisu. Podpis se vytváří asynchronně z důvodů výkonu a označuje, jestli byl soubor po načtení odebrán.
Image načtená událost protokoluje při načtení modulu do určitého procesu. Tato událost je ve výchozím nastavení zakázaná a je potřeba ji nakonfigurovat pomocí možnosti "–l
". Označuje proces, ve kterém je modul načten, hodnoty hash a informace o podpisu. Podpis se vytváří asynchronně z důvodů výkonu a označuje, jestli byl soubor po načtení odebrán. Tato událost by se měla nakonfigurovat pečlivě, protože monitorování všech událostí načítání obrázků vygeneruje značné množství protokolování.
Událost CreateRemoteThread
zjistí, kdy proces vytvoří vlákno v jiném procesu. Tuto techniku používá malware k vložení kódu a skrytí v jiných procesech. Událost označuje zdrojový a cílový proces. Poskytuje informace o kódu, který bude spuštěn v novém vlákně: StartAddress
StartModule
a StartFunction
. Všimněte si, že StartModule
pole jsou StartFunction
odvozena, mohou být prázdná, pokud je počáteční adresa mimo načtené moduly nebo známé exportované funkce.
Událost RawAccessRead
zjistí, kdy proces provádí operace čtení z jednotky pomocí \\.\
poznámek. Tato technika se často používá malwarem pro exfiltraci dat souborů, které jsou uzamčeny pro čtení, a také k zabránění nástrojům pro auditování přístupu k souborům. Událost označuje zdrojový proces a cílové zařízení.
Proces přistupuje k událostem sestavy, když proces otevře jiný proces, operaci, která často následuje dotazy na informace nebo čtení a zápis adresního prostoru cílového procesu. To umožňuje detekci hackingových nástrojů, které čtou obsah paměti procesů, jako je místní bezpečnostní autorita (Lsass.exe), aby ukradly přihlašovací údaje pro použití v útokůch Pass-the-Hash. Povolení může generovat značné množství protokolování, pokud jsou aktivní diagnostické nástroje, které opakovaně otevírají procesy pro dotazování jejich stavu, takže obecně by se mělo provádět pouze s filtry, které odeberou očekávané přístupy.
Operace vytváření souborů se protokolují při vytvoření nebo přepsání souboru. Tato událost je užitečná pro monitorování umístění automatického startu, jako je složka Po spuštění, a také dočasných a stažených adresářů, což jsou běžná místa poklesu malwaru během počáteční infekce.
Klíč registru a hodnota vytvoření a odstranění operací mapuje na tento typ události, což může být užitečné pro monitorování změn v umístěních automatického spuštění registru nebo konkrétních úprav registru malwaru.
Sysmon používá zkrácené verze názvů kořenových klíčů registru s následujícími mapováními:
Název klíče | Zkratka |
---|---|
HKEY_LOCAL_MACHINE |
HKLM |
HKEY_USERS |
HKU |
HKEY_LOCAL_MACHINE\System\ControlSet00x |
HKLM\System\CurrentControlSet |
HKEY_LOCAL_MACHINE\Classes |
HKCR |
Tento typ události registru identifikuje úpravy hodnot registru. Událost zaznamenává hodnotu zapsanou pro hodnoty registru typu DWORD
a QWORD
.
Operace přejmenování klíče registru a hodnoty se mapuje na tento typ události a zaznamenávají nový název klíče nebo hodnoty, které byly přejmenovány.
Tato událost zaznamená, když se vytvoří pojmenovaný datový proud souboru, a vygeneruje události, které protokolují hodnotu hash obsahu souboru, ke kterému je datový proud přiřazen (nepojmenovaný datový proud), a také obsah pojmenovaného streamu. Existují varianty malwaru, které odstraňují jejich spustitelné soubory nebo nastavení konfigurace prostřednictvím stahování prohlížeče, a tato událost je zaměřena na zachycení toho, že na základě prohlížeče připojí Zone.Identifier
"značku webového" datového proudu.
Tato událost zaznamenává změny v konfiguraci sysmonu – například při aktualizaci pravidel filtrování.
Tato událost generuje při vytvoření pojmenovaného kanálu. Malware často používá pojmenované kanály pro komunikaci mezi procesy.
Tato událost protokoluje, když se vytvoří připojení pojmenovaného kanálu mezi klientem a serverem.
Při registraci filtru událostí rozhraní WMI, což je metoda používaná malwarem ke spuštění, tato událost zaznamená obor názvů rozhraní WMI, název filtru a výraz filtru.
Tato událost zaznamená registraci příjemců rozhraní WMI, zaznamenává název příjemce, protokol a cíl.
Když příjemce vytvoří vazbu na filtr, tato událost zaznamená název příjemce a cestu filtru.
Tato událost se vygeneruje, když proces spustí dotaz DNS, ať už je výsledek úspěšný nebo neúspěšný, uložený v mezipaměti nebo ne. Telemetrie pro tuto událost byla přidána pro Windows 8.1, takže není k dispozici ve Windows 7 a starších verzích.
Soubor byl odstraněn. Kromě protokolování události se odstraněný soubor uloží také do ArchiveDirectory
souboru (který je C:\Sysmon
ve výchozím nastavení). Za normálních provozních podmínek se tento adresář může zvětšit na nepřiměřenou velikost – viz ID události 26: podobné chování, FileDeleteDetected
ale bez uložení odstraněných souborů.
Tato událost se vygeneruje při změně obsahu schránky systému.
Tato událost se vygeneruje, když se zjistí techniky skrytí procesů, jako je "duté" nebo "herpaderp".
Soubor byl odstraněn.
Tato událost se vygeneruje, když Sysmon zjistí a blokuje vytváření spustitelných souborů (formát PE).
Tato událost se vygeneruje, když Sysmon zjistí a zablokuje shredding souborů z nástrojů, jako je SDelete.
Tato událost se vygeneruje, když Sysmon zjistí vytvoření nového spustitelného souboru (formát PE).
Tato událost se vygeneruje, když došlo k chybě v nástroji Sysmon. K nim může dojít v případě, že je systém zatížený a některé úlohy nelze provést nebo ve službě Sysmon existuje chyba nebo i v případě, že nejsou splněny určité podmínky zabezpečení a integrity. Jakékoli chyby můžete nahlásit na fóru Sysinternals nebo přes Twitter (@markrussinovich).
Konfigurační soubory lze zadat po přepínačích konfigurace -i (instalace) nebo -c (instalace). Usnadňují nasazení přednastavené konfigurace a filtrování zachycených událostí.
Jednoduchý konfigurační soubor XML vypadá takto:
<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>
Konfigurační soubor obsahuje atribut schemaversion na značce Sysmon. Tato verze je nezávislá na binární verzi Sysmon a umožňuje parsování starších konfiguračních souborů. Aktuální verzi schématu můžete získat pomocí příkazového řádku "-? config
". Položky konfigurace jsou přímo pod značkou Sysmon
a filtry jsou pod značkou EventFiltering
.
Položky konfigurace jsou podobné přepínačům příkazového řádku a zahrnují následující:
Položky konfigurace zahrnují následující položky:
Položka | Hodnota | Popis |
---|---|---|
ArchiveDirectory | String | Název adresářů v kořenech svazku, do kterých se přesunou soubory copy-on-delete. Adresář je chráněný systémovým seznamem ACL (k přístupu k adresáři můžete použít PsExec ze služby Sysinternals pomocí psexec -sid cmd ). Výchozí: Sysmon |
CheckRevocation | Logická hodnota | Řídí kontroly odvolání podpisu. Výchozí: True |
CopyOnDeletePE | Logická hodnota | Zachová odstraněné spustitelné soubory obrázků. Výchozí: False |
Identifikátory CopyOnDeleteSID | Řetězce | Čárkami oddělený seznam identifikátorů SID účtu, pro které se zachovají odstranění souboru. |
CopyOnDeleteExtensions | Řetězce | Rozšíření pro soubory, které se při odstranění zachovají. |
CopyOnDeleteProcesses | Řetězce | Názvy procesů, pro které se odstraní soubor, se zachovají. |
DnsLookup | Logická hodnota | Řídí reverzní vyhledávání DNS. Výchozí: True |
DriverName | String | Používá zadaný název pro image ovladačů a služeb. |
HashAlgorithms | Řetězce | Hashovací algoritmy, které se mají použít pro hashování Mezi podporované algoritmy patří MD5, SHA1, SHA256, IMPHASH a * (vše). Výchozí: None |
Přepínače příkazového řádku mají svoji položku konfigurace popsanou ve výstupu použití sysmonu. Parametry jsou volitelné na základě značky. Pokud přepínač příkazového řádku také povolí událost, musí být nakonfigurovaný, i když má značku filtru. Přepínač můžete určit -s
, aby sysmon vytiskl úplné schéma konfigurace, včetně značek událostí a názvů polí a typů pro každou událost. Tady je například schéma pro RawAccessRead
typ události:
<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>
Filtrování událostí umožňuje filtrovat vygenerované události. V mnoha případech můžou být události hlučné a shromažďování všeho není možné. Například můžete mít zájem o síťová připojení jenom pro určitý proces, ale ne všechny. Výstup na hostiteli můžete filtrovat a snížit tak shromažďování dat.
Každá událost má v konfiguračním souboru vlastní značku filtru v uzlu EventFiltering:
ID | Značka | Událost |
---|---|---|
1 | ProcessCreate | Vytvoření procesu |
2 | FileCreateTime | Čas vytvoření souboru |
3 | NetworkConnect | Zjistilo se síťové připojení |
4 | Není k dispozici | Změna stavu služby Sysmon (nelze filtrovat) |
5 | ProcessTerminate | Proces byl ukončen. |
6 | DriverLoad | Načtený ovladač |
7 | ImageLoad | Obrázek načtený |
8 | CreateRemoteThread | Byl zjištěn createRemoteThread. |
9 | RawAccessRead | Byla zjištěna funkce RawAccessRead. |
10 | ProcessAccess | Přístup k procesu |
11 | Vytvoření souboru | Vytvořený soubor |
12 | RegistryEvent | Přidání nebo odstranění objektu registru |
13 | RegistryEvent | Sada hodnot registru |
14 | RegistryEvent | Přejmenování objektu registru |
15 | FileCreateStreamHash | Vytvořený datový proud souborů |
16 | Není k dispozici | Změna konfigurace sysmonu (nelze filtrovat) |
17 | PipeEvent | Vytvoření pojmenovaného kanálu |
18 | PipeEvent | Pojmenovaná trubka připojená |
19 | WmiEvent | Filtr rozhraní WMI |
20 | WmiEvent | Příjemce rozhraní WMI |
21 | WmiEvent | Filtr příjemce rozhraní WMI |
22 | DNSQuery | Dotaz DNS |
23 | FileDelete | Archivované odstranění souboru |
24 | SchránkaChange | Nový obsah ve schránce |
25 | Zpracování | Změna obrázku procesu |
26 | FileDeleteDeteDeteCted | Zaprotokolované odstranění souboru |
27 | FileBlockExecutable | Spustitelný soubor bloku souboru |
28 | FileBlockShredding | Shredding bloku souboru |
29 | FileExecutableDetected | Zjištěný spustitelný soubor |
Tyto značky můžete najít také v prohlížeči událostí v názvu úkolu.
Filtr onmatch
se použije, pokud se události shodují. Dá se změnit pomocí atributu onmatch
pro značku filtru. Pokud je "include"
hodnota , znamená to, že se zahrnou pouze odpovídající události. Pokud je nastavená na "exclude"
, událost bude zahrnuta s výjimkou případu, kdy se pravidlo shoduje. Můžete zadat sadu filtrů zahrnutí i sadu filtrů vyloučení pro každé ID události, kde mají přednost vyloučení shody.
Každý filtr může obsahovat nula nebo více pravidel. Každá značka pod značkou filtru je název pole z události. Pravidla, která určují podmínku pro stejný název pole, se chovají jako podmínky OR a ty, které určují jiný název pole, se chovají jako podmínky AND. Pravidla polí můžou také použít podmínky, které odpovídají hodnotě. Podmínky jsou následující (nerozlišují velká a malá písmena):
Condition (Podmínka) | Popis |
---|---|
is | Výchozí hodnota je rovna hodnotám |
je libovolná | Pole je jednou z ; hodnot s oddělovači. |
není | Hodnoty se liší. |
obsahuje | Pole obsahuje tuto hodnotu. |
obsahuje všechny | Pole obsahuje některou ; z hodnot s oddělovači. |
obsahuje vše | Pole obsahuje všechny ; hodnoty s oddělovači. |
vylučuje | Pole neobsahuje tuto hodnotu. |
vyloučí všechny | Pole neobsahuje jednu nebo více ; hodnot s oddělovači. |
vyloučí všechny | Pole neobsahuje žádné hodnoty ; s oddělovači. |
začněte na | Pole začíná touto hodnotou. |
end with | Pole končí touto hodnotou. |
nezačíná na | Pole nezačíná touto hodnotou. |
nekončí na | Pole nekončí touto hodnotou. |
méně než | Lexikografické porovnání je menší než nula. |
víc než | Lexikografické porovnání je více než nula |
image | Porovná cestu k obrázku (úplná cesta nebo jenom název image). Příklad: bude odpovídat: lsass.exe c:\windows\system32\lsass.exe |
Jinou podmínku můžete použít tak, že ji zadáte jako atribut. Tím se vyloučí síťová aktivita z procesů s iexplore.exe v cestě:
<NetworkConnect onmatch="exclude">
<Image condition="contains">iexplore.exe</Image>
</NetworkConnect>
Pokud chcete mít sestavu Sysmon, která shoda pravidel způsobila protokolování události, přidejte do pravidel názvy:
<NetworkConnect onmatch="exclude">
<Image name="network iexplore" condition="contains">iexplore.exe</Image>
</NetworkConnect>
Pravidla zahrnutí i vyloučení můžete použít pro stejnou značku, kde pravidla vyloučení přepíší pravidla zahrnutí. V pravidle mají podmínky filtru chování OR.
V ukázkové konfiguraci uvedené výše používá síťový filtr pravidlo zahrnutí i vyloučení k zaznamenání aktivity na portu 80 a 443 všemi procesy s výjimkou těch, které mají iexplore.exe
ve svém názvu.
Je také možné přepsat způsob, jakým jsou pravidla kombinována pomocí skupiny pravidel, která umožňuje kombinovat typ pravidla pro jednu nebo více událostí explicitně nastavena na AND nebo OR.
Následující příklad ukazuje toto použití. V první skupině pravidel se vygeneruje událost vytvoření procesu při timeout.exe
spuštění pouze s argumentem příkazového 100
řádku , ale proces ukončení události se vygeneruje pro ukončení ping.exe
a 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>
Stáhnout Sysmon (4,6 MB)
Běží na:
- Klient: Windows 10 a vyšší.
- Server: Windows Server 2016 a novější.