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
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. | Kitploit
Tools/GitHubGitHub/mandiant/silketw
DefensivwerkzeugeSpeicherforensikForensikMalware-AnalyseDigitale ForensikBedrohungsanalyseEinbruchserkennungLernen & BildungIncident ResponseAnomalieerkennungLog-AnalyseArchived
852139vor 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 →
Teilen
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

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