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
8521397há 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 →
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
Compartilhar

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