Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/mandiant/silketw
DefensivwerkzeugeSpeicherforensikForensikMalware-AnalyseDigitale ForensikBedrohungsanalyseEinbruchserkennungLernen & BildungIncident ResponseAnomalieerkennungLog-AnalyseArchived
8521396vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
GitHub
mandiant/silketw

SilkETW

C#-Wrapper für ETW, der Kernel- und Benutzermodus-Ereignisdaten in JSON serialisiert für Bedrohungsjagd, Malware-Analyse und Incident Response, mit Yara-Integration und Elasticsearch-Versand.

Repository anzeigen
Teilen

SilkETW & SilkService

SilkETW & SilkService sind flexible C#-Wrapper für ETW. Sie sollen die Komplexität von ETW abstrahieren und den Leuten eine einfache Schnittstelle bieten, um Forschung und Introspektion durchzuführen. Obwohl beide Projekte offensichtliche defensive (und offensive) Anwendungen haben, sollten sie in erster Linie als Forschungswerkzeuge betrachtet werden.

Zur einfachen Verwendung werden Ausgabedaten in JSON serialisiert. Die JSON-Daten können entweder in eine Datei geschrieben und lokal mit PowerShell analysiert, im Windows-Ereignisprotokoll gespeichert oder an eine Drittanbieter-Infrastruktur wie Elasticsearch gesendet werden.

Weitere Informationen zur Zukunft von SilkETW & SilkService finden Sie im Abschnitt Fahrplan.

Medien

Weitere Hintergrundinformationen zu SilkETW und SilkService finden Sie in den folgenden Ressourcen.

  • SilkETW: Weil kostenlose Telemetrie … kostenlos ist! - hier
  • SilkETW & SilkService BlackHat Arsenal 2019 - hier
  • Bedrohungsjagd mit ETW-Ereignissen und HELK — Teil 1: Installation von SilkETW (von @Cyb3rWard0g) - hier
  • Bedrohungsjagd mit ETW-Ereignissen und HELK — Teil 2: Versand von ETW-Ereignissen an HELK (von @Cyb3rWard0g) - hier
  • Ereignisse aller manifest- und mof-basierten ETW-Anbieter über Windows 10-Versionen hinweg (von ) -
@jdu2600
hier
  • Jagd auf verdächtige LDAP-Aktivitäten mit SilkETW und Yara - hier
  • Implementierungsdetails

    Bibliotheken

    SilkETW basiert auf .Net v4.5 und verwendet eine Reihe von Drittanbieter-Bibliotheken, wie unten gezeigt. Weitere Einzelheiten finden Sie in LICENSE-3RD-PARTY.

    root@kitploit:~
    ModuleId                                 Version LicenseUrl                                                   
    --------                                 ------- ----------                                                   
    McMaster.Extensions.CommandLineUtils     2.3.2   https://licenses.nuget.org/Apache-2.0                        
    Microsoft.Diagnostics.Tracing.TraceEvent 2.0.36  https://github.com/Microsoft/perfview/blob/master/LICENSE.TXT
    Newtonsoft.Json                          12.0.1  https://licenses.nuget.org/MIT                               
    System.ValueTuple                        4.4.0   https://github.com/dotnet/corefx/blob/master/LICENSE.TXT     
    YaraSharp                                1.3.1   https://github.com/stellarbear/YaraSharp/blob/master/LICENSE
    

    SilkETW

    Befehlszeilenoptionen

    Die Verwendung der Befehlszeile ist recht einfach und die Benutzereingaben werden im Ausführungsprolog validiert. Siehe das Bild unten für weitere Details.

    Help

    SilkService

    Hinweis

    SilkService wurde erstellt, weil viele Leute SilkETW kopflos ausführen und ETW-Sammlung für mehrere Quellen gleichzeitig durchführen wollten. Obwohl dies offensichtlich attraktiv ist, sollten die folgenden Punkte beachtet werden.

    • SilkETW & SilkService wurden von einer Ein-Mann-Engineering-Armee (@FuzzySec) erstellt, sie werden nicht von einer Abteilung von Entwicklern unterstützt und können daher Fehler enthalten. Wenn Sie Fehler finden oder Verbesserungsmöglichkeiten für diese Projekte sehen, werden Sie dringend gebeten, Tickets zu erstellen und/oder Pull-Requests einzureichen.
    • Die ETW-Sammlung kann ressourcenintensiv sein. Rollen Sie SilkService nicht ohne gründliche Leistungstests auf einer großen Anzahl von Hosts aus. Stellen Sie sicher, dass die Konfiguration auf Ihren leistungsschwächsten Maschinen stabil läuft.

    Einrichtung

    Nach dem Kompilieren oder Herunterladen des Release-Pakets können Sie den Dienst installieren, indem Sie den folgenden Befehl in einer erhöhten Eingabeaufforderung ausführen.

    root@kitploit:~
    sc create SillkService binPath= "C:\Path\To\SilkService.exe" start= demand
    

    Konfiguration

    SilkService verwendet eine XML-Konfigurationsdatei, "SilkServiceConfig.xml", die im selben Verzeichnis wie die Dienstbinärdatei abgelegt werden sollte. Eine Beispielkonfigurationsdatei ist unten zu sehen.

    root@kitploit:~
    <SilkServiceConfig>
    	<!--
    		This is a user collector
    		-> Microsoft-Windows-DotNETRuntime
    		-> GUID or string based name
    	-->
    	<ETWCollector>
    		<Guid>45c82358-c52d-4892-8237-ba001d396fb4</Guid>
    		<CollectorType>user</CollectorType>
    		<ProviderName>e13c0d23-ccbc-4e12-931b-d9cc2eee27e4</ProviderName>
    		<UserKeywords>0x2038</UserKeywords>
    		<OutputType>url</OutputType>
    		<Path>https://some.elk:9200/NetETW/_doc/</Path>
    	</ETWCollector>
    	<!--
    		This is a user collector
    	-->
    	<ETWCollector>
    		<Guid>6720babc-dedc-4906-86b9-d0bc0089ec50</Guid>
    		<CollectorType>user</CollectorType>
    		<ProviderName>Microsoft-Windows-DNS-Client</ProviderName>
    		<OutputType>eventlog</OutputType>
    		<YaraScan>C:\Some\Path\RuleFolder</YaraScan>
    		<YaraOptions>Matches</YaraOptions>
    	</ETWCollector>
    	<!--
    		This is a kernel collector
    	-->
    	<ETWCollector>
    		<Guid>21ac2393-3bbb-4702-a01c-b593e21913dc</Guid>
    		<CollectorType>kernel</CollectorType>
    		<KernelKeywords>Process</KernelKeywords>
    		<OutputType>file</OutputType>
    		<Path>C:\Users\b33f\Desktop\kproc.json</Path>
    	</ETWCollector>
    </SilkServiceConfig>
    

    Beachten Sie, dass jedes ETWCollector-Element eine zufällige GUID haben sollte, die für die interne Verfolgung und Protokollierung verwendet wird. Sie können GUIDs in PowerShell mit dem folgenden Befehl generieren:

    root@kitploit:~
    PS C:\> [guid]::NewGuid()
    
    Guid
    ----
    eee52b87-3f32-4651-b0c3-e7bb9af334aa
    

    Überwachung

    Zur Laufzeit erstellt SilkService einen Unterordner "Logs", um Laufzeitinformationen des Dienstes aufzuzeichnen. Dies ist eine unschätzbare Ressource, um den Dienstzustand abzufragen, die Parameterüberprüfung des Dienstes zu verifizieren und Fehlerinformationen zu überprüfen. SilkService hat die Präferenz, sich ordnungsgemäß herunterzufahren, wenn es auf einen Fehler stößt, selbst wenn ein solcher Fehler nicht unbedingt eine Beendigung erfordert. Diese Designentscheidung wurde bewusst getroffen, da es keine gute Strategie ist, lose Sammler oder partielle Betriebsfähigkeit zu haben.

    Konsultieren Sie immer das Dienstprotokoll, wenn der Dienst sich selbst herunterfährt!

    Ist etwas schiefgelaufen?

    Es ist immer möglich, dass etwas schief geht. Konsultieren Sie das Dienstprotokoll für weitere Details. Während SilkService so konfiguriert ist, dass es ETW-Sammler bei Fehlern beendet und bereinigt, kann es vorkommen, dass nach der Prozessbeendigung ein veralteter Sammler registriert bleibt. Um laufende Sammler aufzulisten, können Sie den folgenden Befehl verwenden.

    root@kitploit:~
    logman -ets
    

    Wenn veraltete Sammler identifiziert werden, können sie durch Ausführen der folgenden Befehle in einer erhöhten Eingabeaufforderung entfernt werden.

    root@kitploit:~
    Get-EtwTraceProvider |Where-Object {$.SessionName -like "SilkService*"} |ForEach-Object {Stop-EtwTraceSession -Name $.SessionName}
    Get-EtwTraceProvider |Where-Object {$_.SessionName -like "SilkService*"} |Remove-EtwTraceProvider
    

    Ausgabeformat

    JSON-Ausgabestruktur

    Die JSON-Ausgabe wird vor der Serialisierung gemäß der folgenden C#-Struktur formatiert.

    root@kitploit:~
    public struct EventRecordStruct
    {
        public Guid ProviderGuid;
        public List<String> YaraMatch;
        public string ProviderName;
        public string EventName;
        public TraceEventOpcode Opcode;
        public string OpcodeName;
        public DateTime TimeStamp;
        public int ThreadID;
        public int ProcessID;
        public string ProcessName;
        public int PointerSize;
        public int EventDataLength;
        public Hashtable XmlEventData;
    }
    

    Beachten Sie, dass Sie je nach Anbieter und Ereignistyp variable Daten in der XmlEventData-Hashtabelle haben. Beispiel-JSON-Ausgabe für "Microsoft-Windows-Kernel-Process" -> "ThreadStop/Stop" ist unten zu sehen.

    root@kitploit:~
    {
       "ProviderGuid":"22fb2cd6-0e7b-422b-a0c7-2fad1fd0e716",
       "YaraMatch":[
    
       ],
       "ProviderName":"Microsoft-Windows-Kernel-Process",
       "EventName":"ThreadStop/Stop",
       "Opcode":2,
       "OpcodeName":"Stop",
       "TimeStamp":"2019-03-03T17:58:14.2862348+00:00",
       "ThreadID":11996,
       "ProcessID":8416,
       "ProcessName":"N/A",
       "PointerSize":8,
       "EventDataLength":76,
       "XmlEventData":{
          "FormattedMessage":"Thread 11,996 (in Process 8,416) stopped. ",
          "StartAddr":"0x7fffe299a110",
          "ThreadID":"11,996",
          "UserStackLimit":"0x3d632000",
          "StackLimit":"0xfffff38632d39000",
          "MSec":"560.5709",
          "TebBase":"0x91c000",
          "CycleTime":"4,266,270",
          "ProcessID":"8,416",
          "PID":"8416",
          "StackBase":"0xfffff38632d40000",
          "SubProcessTag":"0",
          "TID":"11996",
          "ProviderName":"Microsoft-Windows-Kernel-Process",
          "PName":"",
          "UserStackBase":"0x3d640000",
          "EventName":"ThreadStop/Stop",
          "Win32StartAddr":"0x7fffe299a110"
       }
    }
    

    Nach der Sammlung

    Daten in PowerShell filtern

    Sie können JSON-Ausgabe von SilkETW in PowerShell mit der folgenden einfachen Funktion importieren.

    root@kitploit:~
    function Get-SilkData {
    	param($Path)
    	$JSONObject = @()
    	Get-Content $Path | ForEach-Object {
    		$JSONObject += $_ | ConvertFrom-Json
    	}
    	$JSONObject
    }
    

    Im folgenden Beispiel sammeln wir Prozessereignisdaten vom Kernel-Anbieter und verwenden Image-Ladungen, um die Mimikatz-Ausführung zu identifizieren. Wir können die erforderlichen Daten mit dem folgenden Befehl sammeln.

    root@kitploit:~
    SilkETW.exe -t kernel -kk ImageLoad -ot file -p C:\Users\b33f\Desktop\mimikatz.json
    

    Mit den vorliegenden Daten ist es einfach, die Eigenschaften, die uns interessieren, zu sortieren, zu grep und zu filtern.

    Mimikatz

    Yara

    SilkETW enthält Yara-Funktionen zum Filtern oder Markieren von Ereignisdaten. Auch dies hat offensichtliche defensive Fähigkeiten, kann aber genauso gut verwendet werden, um Ihre ETW-Forschung zu erweitern.

    In diesem Beispiel verwenden wir die folgende Yara-Regel, um die Seatbelt-Ausführung im Speicher durch Cobalt Strike's execute-assembly zu erkennen.

    root@kitploit:~
    rule Seatbelt_GetTokenInformation
    {
    	strings:
    		$s1 = "ManagedInteropMethodName=GetTokenInformation" ascii wide nocase
    		$s2 = "TOKEN_INFORMATION_CLASS" ascii wide nocase
    		$s3 = /bool\(native int,valuetype \w+\.\w+\/\w+,native int,int32,int32&/
    		$s4 = "locals (int32,int64,int64,int64,int64,int32& pinned,bool,int32)" ascii wide nocase
    	
    	condition:
    		all of ($s*)
    }
    

    Wir können mit dem folgenden Befehl mit der Sammlung von .Net-ETW-Daten beginnen. Die Option "-yo" gibt hier an, dass wir nur Yara-Übereinstimmungen auf die Festplatte schreiben sollen!

    root@kitploit:~
    SilkETW.exe -t user -pn Microsoft-Windows-DotNETRuntime -uk 0x2038 -l verbose -y C:\Users\b33f\Desktop\yara -yo matches -ot file -p C:\Users\b33f\Desktop\yara.json
    

    Wir können zur Laufzeit sehen, dass unsere Yara-Regel getroffen wurde.

    Seatbelt

    Beachten Sie auch, dass wir nur eine Teilmenge der "Microsoft-Windows-DotNETRuntime"-Ereignisse (0x2038) erfassen, nämlich: JitKeyword, InteropKeyword, LoaderKeyword und NGenKeyword.

    Wie erhalte ich SilkETW & SilkService?

    Sie können entweder die Quelle herunterladen und in Visual Studio kompilieren. Beachten Sie, dass Sie die Community Edition von Visual Studio kostenlos erhalten können. Oder Sie können die neueste vorgebaute Version von Releases herunterladen.

    Zukünftige Arbeiten

    Änderungsprotokoll

    Einzelheiten zu versionsspezifischen Änderungen finden Sie im Änderungsprotokoll.

    Fahrplan

    • Den Benutzern die Option anbieten, Ablaufverfolgungsdaten als *.etl-Dateien auf die Festplatte zu schreiben.
    • Den Benutzern die Option anbieten, Ablaufverfolgungsdaten in das Windows-Ereignisprotokoll zu schreiben. (v0.5+)
    • Den Benutzern vorgebaute Releases anbieten. (v0.6+)
    • Eine separate Instanz (SilkService) erstellen, die als Dienst mit einer Konfigurationsdatei bereitgestellt werden kann. (v0.7+)
    • Vorschläge willkommen!
    Tool herunterladen