Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
SilkETW — Wrapper C# per ETW che serializza i dati degli eventi in modalità kernel e utente in JSON per la caccia alle minacce, l'analisi malware e la risposta agli incidenti, con integrazione Yara e invio a Elasticsearch. | Kitploit
Strumenti/GitHubGitHub/mandiant/silketw
Strumenti DifensiviMemory ForensicsInformatica ForenseAnalisi MalwareDigital ForensicsThreat IntelligenceRilevamento IntrusioniApprendimento e FormazioneRisposta agli IncidentiRilevamento di AnomalieAnalisi dei LogArchived
8521393 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHubmandiant/silketw

SilkETW

Wrapper C# per ETW che serializza i dati degli eventi in modalità kernel e utente in JSON per la caccia alle minacce, l'analisi malware e la risposta agli incidenti, con integrazione Yara e invio a Elasticsearch.

Vedi Repository

SilkETW & SilkService

SilkETW e SilkService sono wrapper flessibili in C# per ETW, progettati per astrarre le complessità di ETW e fornire alle persone un'interfaccia semplice per effettuare ricerca e introspezione. Sebbene entrambi i progetti abbiano ovvie applicazioni difensive (e offensive), dovrebbero essere considerati principalmente come strumenti di ricerca.

Per un consumo facile, i dati di output sono serializzati in JSON. I dati JSON possono essere scritti su file e analizzati localmente usando PowerShell, archiviati nel registro eventi di Windows o inviati a infrastrutture di terze parti come Elasticsearch.

Per maggiori informazioni sul futuro di SilkETW e SilkService, consulta la sezione Roadmap.

Media

Per ulteriori informazioni su SilkETW e SilkService, consulta le seguenti risorse.

  • SilkETW: Because Free Telemetry is … Free! - here
  • SilkETW & SilkService BlackHat Arsenal 2019 - here
  • Threat Hunting with ETW events and HELK — Part 1: Installing SilkETW (by @Cyb3rWard0g) - here
  • Threat Hunting with ETW events and HELK — Part 2: Shipping ETW events to HELK (by @Cyb3rWard0g) - here
  • Events from all manifest-based and mof-based ETW providers across Windows 10 versions (by @jdu2600) - here
  • Hunting for Suspicious LDAP Activity with SilkETW and Yara - here

Implementation Details

Libraries

SilkETW è costruito su .Net v4.5 e utilizza diverse librerie di terze parti, come mostrato sotto. Consulta LICENSE-3RD-PARTY per ulteriori dettagli.

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

Command Line Options

L'utilizzo da riga di comando è abbastanza semplice e l'input utente viene validato nel prologo di esecuzione. Vedi l'immagine sotto per ulteriori dettagli.

Help

SilkService

Caveat

SilkService è stato creato perché molte persone volevano eseguire SilkETW in modalità headless e raccogliere ETW da più fonti contemporaneamente. Sebbene ciò sia ovviamente interessante, i seguenti punti dovrebbero essere tenuti a mente.

  • SilkETW e SilkService sono stati creati da un esercito di ingegneria composto da una sola persona, (@FuzzySec), non sono supportati da un dipartimento di sviluppatori e pertanto potrebbero contenere bug. Se incontri bug o vedi modi per migliorare questi progetti, sei fortemente incoraggiato ad aprire ticket e/o inviare pull request.
  • La raccolta ETW può essere intensiva in termini di risorse. Non distribuire SilkService su un'ampia gamma di host senza test di performance approfonditi. Assicurati che la configurazione possa funzionare stabilmente sulle tue macchine meno potenti.

Setup

Dopo aver compilato o scaricato il pacchetto di rilascio, puoi installare il servizio eseguendo il seguente comando da un prompt dei comandi elevato.

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

Configuration

SilkService legge un file di configurazione XML, "SilkServiceConfig.xml", che dovrebbe essere posizionato nella stessa directory del binario del servizio. Un esempio di file di configurazione è mostrato sotto.

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>

Nota che ogni elemento ETWCollector dovrebbe avere un GUID casuale, utilizzato per monitoraggio e registrazione interni. Puoi generare GUID in PowerShell usando il seguente comando:

root@kitploit:~
PS C:\> [guid]::NewGuid()

Guid
----
eee52b87-3f32-4651-b0c3-e7bb9af334aa

Auditing

Durante l'esecuzione, SilkService creerà una sottocartella "Logs" per registrare le informazioni di runtime del servizio. Questa è una risorsa inestimabile per interrogare lo stato del servizio, verificare la validazione dei parametri e rivedere le informazioni sugli errori. SilkService preferisce arrestarsi in modo pulito se incontra qualsiasi tipo di errore, anche se tale errore non richiede strettamente la terminazione. Questa decisione di design è stata presa intenzionalmente poiché non è una strategia valida avere collector pendenti o operatività parziale.

Consulta sempre il log del servizio se il servizio si arresta da solo!

Something went wrong?

È sempre possibile che qualcosa vada storto. Consulta il log del servizio per maggiori dettagli. Sebbene SilkService sia configurato per terminare e pulire i collector ETW in caso di errore, è possibile che un collector obsoleto rimanga registrato dopo la terminazione del processo. Per elencare i collector in esecuzione, puoi usare il seguente comando.

root@kitploit:~
logman -ets

Se vengono identificati collector obsoleti, possono essere rimossi eseguendo i seguenti comandi da un prompt elevato.

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

Output Format

JSON Output Structure

L'output JSON, prima della serializzazione, è formattato secondo la seguente struct C#.

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;
}

Nota che, a seconda del provider e del tipo di evento, avrai dati variabili nella tabella hash XmlEventData. Un esempio di output JSON è mostrato sotto per "Microsoft-Windows-Kernel-Process" -> "ThreadStop/Stop".

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"
   }
}

Post-Collection

Filter data in PowerShell

Puoi importare l'output JSON di SilkETW in PowerShell usando la seguente semplice funzione.

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

Nell'esempio seguente raccoglieremo dati sugli eventi di processo dal provider Kernel e useremo i caricamenti di immagini per identificare l'esecuzione di Mimikatz. Possiamo raccogliere i dati richiesti con il seguente comando.

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

Con i dati in mano è facile ordinare, cercare e filtrare per le proprietà che ci interessano.

Mimikatz

Yara

SilkETW include funzionalità Yara per filtrare o etichettare i dati degli eventi. Anche questo ha ovvie capacità difensive, ma può essere facilmente utilizzato per potenziare la tua ricerca ETW.

In questo esempio utilizzeremo la seguente regola Yara per rilevare l'esecuzione di Seatbelt in memoria tramite execute-assembly di Cobalt Strike.

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*)
}

Possiamo iniziare a raccogliere dati ETW .Net con il seguente comando. L'opzione "-yo" qui indica che dovremmo scrivere solo i match Yara su disco!

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

Possiamo vedere in esecuzione che la nostra regola Yara è stata attivata.

Seatbelt

Nota anche che stiamo catturando solo un sottoinsieme degli eventi "Microsoft-Windows-DotNETRuntime" (0x2038), in particolare: JitKeyword, InteropKeyword, LoaderKeyword e NGenKeyword.

How to get SilkETW & SilkService?

Puoi scaricare il codice sorgente e compilarlo in Visual Studio. Nota che puoi ottenere la versione Community di Visual Studio gratuitamente. Oppure puoi scaricare l'ultima versione precompilata dai releases.

Future Work

Changelog

Per dettagli sulle modifiche specifiche delle versioni, consulta il Changelog.

RoadMap

  • Offrire agli utenti l'opzione di scrivere i dati di traccia su disco come file *.etl.
  • Offrire agli utenti l'opzione di scrivere i dati di traccia nel registro eventi di Windows. (v0.5+)
  • Offrire agli utenti rilasci precompilati. (v0.6+)
  • Creare un'istanza separata (SilkService) che può essere distribuita come servizio con un file di configurazione. (v0.7+)
  • Suggerimenti benvenuti!
Scarica lo strumento