Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
SilkETW — Wrapper em C# para ETW que serializa dados de eventos do kernel e modo de usuário para JSON para caça a ameaças, análise de malware e resposta a incidentes, com integração Yara e envio para Elasticsearch. | Kitploit
Ferramentas/GitHubGitHub/mandiant/silketw
Ferramentas DefensivasForensia de MemóriaAnálise ForenseAnálise de MalwareForensia DigitalInteligência de AmeaçasDetecção de IntrusãoAprendizado e EducaçãoResposta a IncidentesDetecção de AnomaliasAnálise de LogsArchived
852139há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubmandiant/silketw

SilkETW

Wrapper em C# para ETW que serializa dados de eventos do kernel e modo de usuário para JSON para caça a ameaças, análise de malware e resposta a incidentes, com integração Yara e envio para Elasticsearch.

Ver Repositório

SilkETW & SilkService

SilkETW & SilkService são wrappers flexíveis em C# para ETW, criados para abstrair as complexidades do ETW e fornecer uma interface simples para pesquisa e introspecção. Embora ambos os projetos tenham aplicações defensivas (e ofensivas) óbvias, devem ser considerados principalmente como ferramentas de pesquisa.

Para facilitar o consumo, os dados de saída são serializados em JSON. Os dados JSON podem ser gravados em arquivo e analisados localmente usando PowerShell, armazenados no log de eventos do Windows ou enviados para infraestrutura de terceiros, como Elasticsearch.

Para mais informações sobre o futuro do SilkETW & SilkService, consulte a seção Roadmap.

Mídia

Para mais contexto sobre o SilkETW e o SilkService, consulte os seguintes recursos.

  • SilkETW: Porque Telemetria Gratuita é... Grátis! - aqui
  • SilkETW & SilkService BlackHat Arsenal 2019 - aqui
  • Caça a Ameaças com Eventos ETW e HELK — Parte 1: Instalando o SilkETW (por @Cyb3rWard0g) - aqui
  • Caça a Ameaças com Eventos ETW e HELK — Parte 2: Enviando Eventos ETW para o HELK (por @Cyb3rWard0g) - aqui
  • Eventos de todos os provedores ETW baseados em manifest e mof nas versões do Windows 10 (por @jdu2600) - aqui
  • Caçando Atividades Suspeitas de LDAP com SilkETW e Yara - aqui

Detalhes da Implementação

Bibliotecas

SilkETW é construído em .Net v4.5 e utiliza várias bibliotecas de terceiros, conforme mostrado abaixo. Consulte LICENSE-3RD-PARTY para mais detalhes.

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

Opções de Linha de Comando

O uso da linha de comando é bastante direto e a entrada do usuário é validada no prólogo de execução. Veja a imagem abaixo para mais detalhes.

Ajuda

SilkService

Advertência

O SilkService foi criado porque muitas pessoas queriam executar o SilkETW sem interface gráfica e realizar a coleta de ETW de várias fontes simultaneamente. Embora isso tenha um apelo óbvio, os seguintes pontos devem ser considerados.

  • SilkETW & SilkService foram criados por um exército de engenharia de um homem só, (@FuzzySec), eles não são apoiados por um departamento de desenvolvedores e, portanto, podem conter bugs. Se você encontrar bugs ou ver maneiras de melhorar esses projetos, é fortemente encorajado a abrir tickets e/ou enviar pull requests.
  • A coleta de ETW pode consumir muitos recursos. Não implante o SilkService em uma ampla gama de hosts sem testes de desempenho completos. Certifique-se de que a configuração possa rodar de forma estável em suas máquinas menos potentes.

Configuração

Após compilar ou baixar o pacote de release, você pode instalar o serviço emitindo o seguinte comando de um prompt elevado.

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

Configuração

SilkService ingere um arquivo de configuração XML, "SilkServiceConfig.xml", que deve ser colocado no mesmo diretório do binário do serviço. Um exemplo de arquivo de configuração pode ser visto abaixo.

root@kitploit:~
<SilkServiceConfig>
	<!--
		Este é um coletor de usuário
		-> Microsoft-Windows-DotNETRuntime
		-> Nome baseado em GUID ou string
	-->
	<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>
	<!--
		Este é um coletor de usuário
	-->
	<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>
	<!--
		Este é um coletor de kernel
	-->
	<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>

Observe que cada elemento ETWCollector deve ter um GUID aleatório, usado para rastreamento interno e fins de registro. Você pode gerar GUIDs no PowerShell usando o seguinte comando:

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

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

Auditoria

Em tempo de execução, o SilkService criará uma subpasta "Logs" para registrar informações de tempo de execução do serviço. Este é um recurso inestimável para consultar o estado do serviço, verificar a validação dos parâmetros do serviço e revisar informações de erro. O SilkService prefere desligar-se graciosamente se encontrar qualquer tipo de erro, mesmo que tal erro não exija estritamente a interrupção. Essa decisão de design foi tomada propositalmente, pois não é uma estratégia sólida ter coletores pendentes ou operacionalidade parcial.

Consulte sempre o log do serviço se o serviço desligar sozinho!

Algo deu errado?

É sempre possível que algo dê errado. Consulte o log do serviço para mais detalhes. Embora o SilkService seja configurado para encerrar e limpar coletores ETW em caso de erro, é possível que um coletor obsoleto permaneça registrado após o término do processo. Para listar os coletores em execução, você pode usar o seguinte comando.

root@kitploit:~
logman -ets

Se algum coletor obsoleto for identificado, eles podem ser removidos emitindo os seguintes comandos de um prompt elevado.

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

Formato de Saída

Estrutura de Saída JSON

A saída JSON, antes da serialização, é formatada de acordo com a seguinte 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;
}

Observe que, dependendo do provedor e do tipo de evento, você terá dados variáveis na tabela hash XmlEventData. Um exemplo de saída JSON pode ser visto abaixo para "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"
   }
}

Pós-Coleta

Filtrar dados no PowerShell

Você pode importar a saída JSON do SilkETW no PowerShell usando a seguinte função simples.

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

No exemplo abaixo, coletaremos dados de eventos de processo do provedor Kernel e usaremos carregamentos de imagem para identificar a execução do Mimikatz. Podemos coletar os dados necessários com o seguinte comando.

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

Com os dados em mãos, é fácil classificar, grep e filtrar as propriedades de interesse.

Mimikatz

Yara

SilkETW inclui funcionalidade Yara para filtrar ou marcar dados de eventos. Novamente, isso tem capacidades defensivas óbvias, mas também pode ser usado para aprimorar sua pesquisa em ETW.

Neste exemplo, usaremos a seguinte regra Yara para detectar a execução do Seatbelt na memória através do execute-assembly do 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*)
}

Podemos começar a coletar dados de ETW do .Net com o seguinte comando. A opção "-yo" aqui indica que devemos gravar apenas correspondências Yara no 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

Podemos ver em tempo de execução que nossa regra Yara foi acionada.

Seatbelt

Observe também que estamos capturando apenas um subconjunto dos eventos "Microsoft-Windows-DotNETRuntime" (0x2038), especificamente: JitKeyword, InteropKeyword, LoaderKeyword e NGenKeyword.

Como obter SilkETW & SilkService?

Você pode baixar o código-fonte e compilá-lo no Visual Studio. Observe que você pode obter a edição community do Visual Studio gratuitamente. Ou você pode pegar a versão pré-compilada mais recente em releases.

Trabalhos Futuros

Changelog

Para detalhes sobre mudanças específicas de versão, consulte o Changelog.

RoadMap

  • Oferecer aos usuários a opção de gravar dados de rastreamento em disco como arquivos *.etl.
  • Oferecer aos usuários a opção de gravar dados de rastreamento no log de eventos do Windows. (v0.5+)
  • Oferecer aos usuários releases pré-compilados. (v0.6+)
  • Criar uma instância separada (SilkService) que possa ser implantada como um serviço com um arquivo de configuração. (v0.7+)
  • Sugestões são bem-vindas!
Baixar ferramenta