Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SilkETW — Обёртка на C# для ETW, которая сериализует данные событий режима ядра и пользовательского режима в JSON для охоты за угрозами, анализа вредоносных программ и реагирования на инциденты, с интеграцией Yara и отправкой в Elasticsearch. | Kitploit
Инструменты/GitHubGitHub/mandiant/silketw
Оборонительные ИнструментыКриминалистика памятиФорензикаАнализ вредоносных программЦифровая криминалистикаРазведка угрозОбнаружение ВторженийОбучение и ОбразованиеРеагирование на ИнцидентыОбнаружение АномалийАнализ ЖурналовArchived
852139283 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
GitHubmandiant/silketw

SilkETW

Обёртка на C# для ETW, которая сериализует данные событий режима ядра и пользовательского режима в JSON для охоты за угрозами, анализа вредоносных программ и реагирования на инциденты, с интеграцией Yara и отправкой в Elasticsearch.

Репозиторий
Поделиться

SilkETW и SilkService

SilkETW и SilkService — это гибкие обёртки на C# для ETW, предназначенные для абстрагирования сложностей ETW и предоставления простого интерфейса для исследований и анализа. Хотя оба проекта имеют очевидные защитные (и атакующие) применения, их следует рассматривать в первую очередь как исследовательские инструменты.

Для удобства использования выходные данные сериализуются в JSON. JSON-данные могут быть записаны в файл и проанализированы локально с помощью PowerShell, сохранены в журнале событий Windows или отправлены во внешнюю инфраструктуру, например Elasticsearch.

Дополнительную информацию о будущем SilkETW и SilkService см. в разделе Планы развития.

Материалы

Для получения дополнительной информации о SilkETW и SilkService обратитесь к следующим ресурсам.

  • SilkETW: Потому что бесплатная телеметрия — это… бесплатно! - здесь
  • SilkETW и SilkService на BlackHat Arsenal 2019 - здесь
  • Охота за угрозами с помощью событий ETW и HELK — Часть 1: Установка SilkETW (автор @Cyb3rWard0g) - здесь
  • Охота за угрозами с помощью событий ETW и HELK — Часть 2: Отправка событий ETW в HELK (автор @Cyb3rWard0g) - здесь
  • События всех поставщиков ETW на основе манифестов и MOF в различных версиях Windows 10 (автор @jdu2600) - здесь
  • Охота за подозрительной активностью LDAP с помощью SilkETW и Yara - здесь

Детали реализации

Библиотеки

SilkETW построен на .Net v4.5 и использует ряд сторонних библиотек, как показано ниже. Подробнее см. в LICENSE-3RD-PARTY.

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

Параметры командной строки

Использование командной строки довольно прямолинейно, и ввод пользователя проверяется в прологе выполнения. Подробнее см. на изображении ниже.

Help

SilkService

Предупреждение

SilkService был создан, потому что большое количество людей хотели запускать SilkETW в фоновом режиме и одновременно собирать данные ETW из нескольких источников. Хотя это очевидно привлекательно, следует учитывать следующие моменты.

  • SilkETW и SilkService были созданы одним разработчиком (@FuzzySec), они не поддерживаются командой разработчиков и поэтому могут содержать ошибки. Если вы обнаружите ошибки или увидите способы улучшить эти проекты, настоятельно рекомендуем создавать тикеты и/или отправлять pull request.
  • Сбор данных ETW может требовать много ресурсов. Не разворачивайте SilkService на большом количестве хостов без тщательного тестирования производительности. Убедитесь, что конфигурация стабильно работает на ваших самых слабых машинах.

Установка

После компиляции или загрузки пакета релиза вы можете установить службу, выполнив следующую команду из повышенной командной строки.

sc create SilkService binPath= "C:\Path\To\SilkService.exe" start= demand

Конфигурация

SilkService использует XML-файл конфигурации "SilkServiceConfig.xml", который должен находиться в том же каталоге, что и бинарник службы. Пример файла конфигурации приведён ниже.

<SilkServiceConfig>
	<!--
		Это пользовательский сборщик
		-> Microsoft-Windows-DotNETRuntime
		-> Имя на основе GUID или строки
	-->
	<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>
	<!--
		Это пользовательский сборщик
	-->
	<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>
	<!--
		Это сборщик ядра
	-->
	<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>

Обратите внимание, что каждый элемент ETWCollector должен иметь случайный GUID, который используется для внутреннего отслеживания и ведения журнала. Вы можете сгенерировать GUID в PowerShell с помощью следующей команды:

PS C:\> [guid]::NewGuid()

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

Аудит

Во время выполнения SilkService создаёт подпапку "Logs" для записи информации о работе службы. Это бесценный ресурс для проверки состояния службы, проверки валидации параметров и просмотра информации об ошибках. SilkService предпочитает корректно завершать работу при возникновении любой ошибки, даже если такая ошибка не требует обязательного завершения. Это решение было принято осознанно, так как наличие «висящих» сборщиков или частичная работоспособность являются небезопасной стратегией.

Всегда обращайтесь к журналу службы, если она самопроизвольно завершила работу!

Что-то пошло не так?

Всегда есть вероятность, что что-то пойдёт не так. Обратитесь к журналу службы для получения подробной информации. Хотя SilkService настроен на завершение работы и очистку сборщиков ETW при ошибке, может случиться так, что после завершения процесса останется зарегистрированный «устаревший» сборщик. Для просмотра активных сборщиков используйте следующую команду.

logman -ets

Если будут обнаружены устаревшие сборщики, их можно удалить, выполнив следующие команды из повышенной командной строки.

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

Формат вывода

Структура JSON-вывода

JSON-вывод до сериализации форматируется в соответствии со следующей структурой C#.

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;
}
Скачать инструмент