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

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

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

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

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

Категории

Все категории
Loading categories
ThreatHunting-Keywords — Отличный список ключевых слов и артефактов для сессий Threat Hunting | Kitploit
Инструменты/GitHubGitHub/mthcht/threathunting-keywords
Оборонительные ИнструментыЦифровая криминалистикаРазведка угрозРеагирование на ИнцидентыПодобранные РесурсыАнализ Журналов
GitHubmthcht/threathunting-keywords

ThreatHunting-Keywords

Отличный список ключевых слов и артефактов для сессий Threat Hunting

Репозиторий
669771 год назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Сайт

ThreatHunting-Keywords

🎯 Список ключевых слов для сессий ThreatHunting

image

Содержание

  • Что такое Threat Hunting
    • Преимущества Threat Hunting
    • Связь Threat Hunting с ключевыми сервисами
    • Уровень зрелости обнаружения
    • Ключевые направления сбора разведывательной информации
    • Пример методологии целевого Threat Hunting
  • Файлы
  • ThreatHunting-Keywords для blueteam
  • ThreatHunting-Keywords для redteam
  • Содержимое файла ключевых слов
  • Охота с SIEM
    • сырые журналы
    • конкретные поля
    • скорость
    • пример панели мониторинга
    • Splunk4DFIR
    • С ELK всё иначе
    • Другие списки для обнаружения
  • Охота без SIEM
    • Оптимизированная охота DFIR
    • Правила YARA
  • Веб-сайт
  • Ожидаемые ложные срабатывания
  • Правила SIGMA
  • внести вклад

Что такое Threat Hunting?

image

Threat hunting — это проактивный и итеративный подход к обнаружению вредоносной активности в сети или системах организации, которая могла обойти автоматизированные меры безопасности. В отличие от реактивных расследований, запускаемых срабатываниями сигналов безопасности, threat hunting опирается на проверки, управляемые данными об угрозах (TI), и гипотезы, выводимые из систематического и оппортунистического анализа. Эти гипотезы 💡 помогают охотникам выявлять неизвестные угрозы, потенциальные угрозы или известные угрозы, которые могли обойти средства обнаружения, а также уязвимости или индикаторы компрометации (IoC), которые автоматизированные системы могут пропустить или исключить. Процесс также направлен на выявление предвестников срабатываний/панелей мониторинга и улучшение рабочих процессов SOC/triage, а также вносит вклад в инвентаризацию теневых активов и эскалацию событий низкой/средней достоверности, требующих дальнейшего расследования. Основная цель — выявить тактики, техники и процедуры (TTP), используемые злоумышленниками, повышая способность организации упреждающе обнаруживать и смягчать потенциальные атаки.

Преимущества Threat Hunting:

  • 🔍 Выявление пробелов в видимости
    • Обнаруживает области, где мониторинг и обнаружение недостаточны, устраняя слепые зоны в сети или системах для смягчения скрытых угроз.
  • 🛠️ Заполнение пробелов в обнаружении
    • Упреждающий поиск аномалий, предвестников и TTP, которые могут не вызывать срабатывание сигналов
  • ⚙️ Повышение эффективности SOC
    • Интегрирует результаты threat hunting в рабочие процессы SOC для выявления событий, которые статические детекты могут пропускать. Снижая количество ложных срабатываний и эскалируя незамеченные события, это позволяет аналитикам SOC сосредоточиться на критических угрозах и улучшать логику обнаружения для будущего использования.
  • 🚀 Улучшение обнаружения угроз и поддержка непрерывного совершенствования
    • Выявляет продвинутые, неизвестные или скрытые угрозы, которые обходят автоматизированные системы обнаружения, и возвращает ценные данные в процессы SOC, улучшая инструменты, обучение и будущие возможности обнаружения
  • 🛡️ Сокращение поверхности атаки
    • Обнаруживает неуправляемые или неавторизованные системы, приложения и теневые ИТ в сети, позволяя организациям устранять слепые зоны безопасности и снижать подверженность потенциальным угрозам.

Связь Threat Hunting с ключевыми сервисами

image

Жизненный цикл Threat Hunting в операциях SOC

Моё предложение по организации частично автоматизированных сессий threat hunting для поддержания высококачественных правил обнаружения в SOC

SOC_Process_Threat_Hunting_to_detection

Уровень зрелости обнаружения

image Команды SOC сосредоточены на развёртывании высокоточных детектов на всех уровнях пирамиды зрелости обнаружения, нацеленных на известные угрозы с минимальным количеством ложных срабатываний. Threat hunting дополняет этот подход, охватывая неизвестные угрозы, продвинутые TTP и аномалии, подверженные высокому уровню ложных срабатываний, устраняя пробелы и расширяя покрытие обнаружения за пределы стандартных возможностей SOC.

Чек-лист Threat Hunting — ключевые направления сбора разведывательной информации

image

Пример методологии целевого Threat Hunting

image

В идеале каждая сессия threat hunting должна иметь чёткие цели. Эта блок-схема предлагает структурированный подход для руководства процессом — от подготовки и расследования до практических рекомендаций.


🎯 Список ключевых слов для сессий ThreatHunting

Файлы

  • ThreatHunting-Keywords
  • Ключевые слова инструментов Greyware
  • Ключевые слова наступательных инструментов
  • Ключевые слова сигнатур вендоров
  • Отдельные инструменты (по одному CSV-файлу на инструмент)
  • Только все ключевые слова
  • Только все ключевые слова regex
  • Только все ключевые слова regex (лучшая производительность)
  • PowerShell-скрипт для охоты в файлах
  • Правила YARA
  • Правила Sigma

Для blueteam:

Списки ThreatHunting-Keywords могут быть ценными для охотников за угрозами, команд SOC и CERT при статическом анализе в SIEM, поскольку они помогают выявлять злоумышленников (или редтимеров 😆), использующих конфигурации по умолчанию из известных инструментов эксплуатации, в журналах. Они отличаются от фидов IOC своей долговременной актуальностью: ключевые слова здесь не имеют «срока годности» и могут обнаруживать угрозы спустя годы после их добавления; они гибки, допускают подстановочные знаки и нечувствительны к регистру, а также ориентированы только на ключевые слова по умолчанию.

Список, предназначенный прежде всего для Threat Hunting, может быть полезен в сложных сценариях. Есть ли у вас доступ к SIEM, которым вы не управляете, с неразобранными данными, или вы часть команды SOC с хорошо управляемым SIEM — приведённые здесь примеры могут ускорить процесс обнаружения вредоносной активности без необходимости что-либо парсить. Если ваши журналы уже разобраны, этот список можно использовать для сопоставления полей в ваших данных, потенциально превращаясь в правило обнаружения на основе выбранной вами категории типа ключевого слова, при условии, что уровень ложных срабатываний достаточно низок.

⚠️ Не всё можно добавить в этот список: здесь мы не создаём сложные детекты поведения, только простые обнаружения ключевых слов в полях или сырых журналах, направленные на выявление конфигураций по умолчанию

⚠️ Для многих инструментов из списка существуют выделенные правила обнаружения, коррелирующие события с порогами и уникальными связями процессов... здесь мы не будем охватывать все возможные детекты для инструмента, только обнаружение по ключевым словам

Если вы часть Центра операций безопасности (SOC) и управляете сотнями правил обнаружения, которые полагаются исключительно на простые детекты по ключевым словам без какой-либо корреляции полей или событий, задумайтесь о пересмотре своего подхода. На мой взгляд, такие правила не должны быть отдельными правилами обнаружения. Вместо этого они лучше подходят для консолидированного списка, подобного этому, хотя реализация может быть более сложной, если вы не используете платформу вроде Splunk.

Такой подход поощряет создание высококачественных, целенаправленных правил, сохраняя при этом ваши простые детекты по ключевым словам в полях организованными и управляемыми в одном месте. Каков конечный результат? Одно комплексное правило обнаружения, которое покрывает их все. Это оптимизирует ваш процесс и расширяет ваши возможности обнаружения.

Специалисты по реагированию на инциденты могут использовать этот список во время расследования по сырым журналам или файлам для быстрой идентификации известных инструментов эксплуатации с помощью правил YARA Yara Rules, powershell-скрипта или быстрой загрузки журналов в Splunk с помощью Splunk4DFIR

Для redteam:

Чтобы избежать обнаружения простыми детектами по ключевым словам, крайне важно перекомпилировать и переименовать все пользовательские строки, имена классов или функций, имена переменных, имена аргументов, имена исполняемых файлов, стандартные user-agent'ы, сертификаты или любые другие строки, которые могут быть связаны с используемыми вами во время операции инструментами. Используйте самые распространённые имена для всего, чтобы слиться с обычным трафиком. Скрипты, расположенные здесь, могут помочь вам выявить некоторые из них.

Однако, если вы разрабатываете публичные «red team инструменты», подумайте о помощи синей команде, используя отличительные имена. Применяйте конфигурацию по умолчанию с экзотическим портом, пользовательскими сертификатами, уникальными user-agent'ами, специфическими именами функций и аргументов, которые не являются распространёнными. Это помогает создать чёткую сигнатуру, которую можно использовать для простых детектов по ключевым словам, чтобы blueteam могла хотя бы легко обнаруживать скрипткиди.

Содержимое файла Threat Hunting Keywords:

  • Заголовок: keyword,metadata_keyword_type,metadata_tool,metadata_description,metadata_tool_techniques,metadata_tool_tactics,metadata_malwares_name,metadata_groups_name,metadata_category,metadata_link,metadata_enable_endpoint_detection,metadata_enable_proxy_detection,metadata_tags,metadata_comment,metadata_severity_score,metadata_popularity_score,metadata_github_stars,metadata_github_forks,metadata_github_created_at,metadata_github_updated_at

  • keyword: Записи в этом столбце представляют ключевые слова, нечувствительные к регистру, используемые для Threat Hunting. Эти ключевые слова гибки и позволяют использовать подстановочные знаки для расширения или сужения параметров поиска по мере необходимости.

  • metadata_keyword_regex: Записи в этом столбце представляют regex-паттерн для обнаружения ключевого слова; эти паттерны отточены для обеспечения точных возможностей обнаружения и подходят для использования с YARA, ripgrep или аналогичными инструментами обнаружения.

  • metadata_keyword_type: Тип ключевых слов. В настоящее время существует три типа:

Использование списка для охоты с помощью Splunk:

  • загрузите список threathunting-keywords.csv в Splunk

  • создайте определение lookup с именем threathunting-keywords для lookup-файла threathunting-keywords.csv

    • в дополнительных параметрах добавьте тип совпадения WILDCARD(keyword) и убедитесь, что параметр Case sensitive match не отмечен

    image

transforms.conf``` [threathunting-keywords] batch_index_query = 0 case_sensitive_match = 0 filename = threathunting-keywords.csv match_type = WILDCARD(keyword)

root@kitploit:~
- теперь мы можем использовать наше определение lookup для охоты 🏹
- :warning: если поиски в следующем разделе не работают, это может быть связано с ограничениями ресурсов splunk, особенно если вы используете splunk с конфигурацией по умолчанию. Для начала вам, возможно, придется рассмотреть увеличение значения `max_memtable_bytes` в секции `[lookup]`.

## Примеры использования с `threathunting-keywords`:
![image](https://assets.kitploit.com/production/public/readmes/48741/204eb8e71d12257660c7166cb5f050747877e1968d7ff1f21812967d64355ca0.png)

### Охота на все ключевые слова в raw-логах 😱```
`myendpointslogs` 
| lookup threathunting-keywords keyword as _raw OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category	metadata_link	metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment
| search metadata_description!="" AND metadata_enable_endpoint_detection=1
| stats count earliest(_time) as firsttime latest(_time) as lasttime values(_raw) as raw by metadata_keyword_type keyword_detection index sourcetype 
| convert ctime(*time)

Отправьте поиск в фоновый режим и сохраните job ID.

image

  • myendpointslogs — это макрос, который выполняет поиск по всем журналам ваших конечных точек, это могут быть журналы Windows, телеметрия EDR, sysmon, auditd, сеансы bastion, журналы выполнения PowerShell или любые другие журналы, отслеживающие активность процессов или файлов. (если вы не используете макрос, вы можете заменить его на свой index, tag или datamodel)
    • Я намеренно включил макрос в примеры, чтобы показать, что первоначальный поиск можно выполнить любым удобным для вас способом, будь то datamodel, tstats, tags, index/sourcetype. Хотя tstats в сочетании с datamodel часто является самым быстрым путём, при необходимости фильтруйте с помощью команды TERM() для конкретных поисков перед |lookup
  • | lookup — это очень важно, для больших lookup-таблиц, подобных этой, всегда используйте |lookup вместо |inputlookup, |lookup будет использовать lookup-файл, доставленный на индексерах при репликации бандла, а |inputlookup каждый раз отправляет на индексеры поиск со всем содержимым lookup-таблицы, используя |lookup, мы получаем здесь колоссальный выигрыш в производительности (этот поиск будет выполняться часами в больших средах, так что лучше оптимизировать наш поиск.
  • ... keyword as _raw OUTPUT keyword as keyword_detection — это та часть, где мы сопоставляем поле с полем в нашей lookup-таблице, в Splunk — это необработанный журнал без какого-либо парсинга (наш случай использования). Когда ключевое слово совпадает, поле покажет ключевое слово из lookup-таблицы, которое совпало с полем .

Отфильтруйте результат``` | loadjob 1684146257.1495958 | search NOT (keyword_detection IN ("fixme","fixme","fixme")) NOT (metadata_keyword_type IN ("fixme","fixme")) NOT (raw IN ("fixme","fixme","fixme"))

root@kitploit:~
Исключите требуемые ключевые слова, необработанный текст или типы ключевых слов.
если мы решим исключить тип `greyware tool keyword` (ключевые слова легитимных инструментов, которыми злоупотребляют атакующие), потому что в этом окружении слишком много результатов для такого рода инструментов, у нас есть два варианта:

- Фильтровать в начале нашего первоначального поиска```
`myendpointslogs` 
| lookup threathunting-keywords keyword as _raw OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category	metadata_link	metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment
| search metadata_description!="" metadata_keyword_type="offensive tool keyword" metadata_enable_endpoint_detection=1
| stats count earliest(_time) as firsttime latest(_time) as lasttime values(_raw) as raw by metadata_keyword_type keyword_detection index sourcetype 
| convert ctime(*time)

Я добавил metadata_keyword_type="offensive tool keyword", чтобы сосредоточиться только на инструментах для атак, которые, как я уверен, используются злоумышленниками

  • Либо отфильтровать после нашего первоначального поиска (чтобы сэкономить много времени):``` | loadjob 1684146257.1495958 | search metadata_keyword_type="offensive tool keyword"
root@kitploit:~
Итак, это был наш вариант использования для поиска по необработанным логам в журналах конечных точек; если мы хотим искать ключевые слова для сетевых журналов (все, что может логировать запрос или URL), мы просто меняем это на:```
`mynetworklogs` 
| lookup threathunting-keywords keyword as _raw OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category	metadata_link	metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment
| search metadata_description!="" AND metadata_enable_proxy_detection=1
| stats count earliest(_time) as firsttime latest(_time) as lasttime values(_raw) as raw by metadata_keyword_type keyword_detection index sourcetype 
| convert ctime(*time)

Now it is the same as the first search but i changed the datasource for mynetworklogs and added metadata_enable_proxy_detection=1 to match the relevant keywords for networklogs (better have proxy and DNS logs for this)


Hunt the keywords in other fields 🙂 (url,process,commandline,query...):

Match only on url field:```

mynetworklogs url=* | lookup threathunting-keywords keyword as url OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category metadata_link metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment | search metadata_description!="" AND metadata_enable_proxy_detection=1 | stats count earliest(_time) as firsttime latest(_time) as lasttime values(url) as url by src_ip metadata_keyword_type keyword_detection index sourcetype | convert ctime(*time)

root@kitploit:~
#### Совпадение только по полю запроса:```
`mynetworklogs` query=*
| lookup threathunting-keywords keyword as query OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category	metadata_link	metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment
| search metadata_description!="" AND metadata_enable_proxy_detection=1
| stats count earliest(_time) as firsttime latest(_time) as lasttime values(query) as query by src_ip metadata_keyword_type keyword_detection index sourcetype 
| convert ctime(*time)

Сопоставление по нескольким полям одновременно, пример для логов конечных точек:```

myendpointslogs | eval myfields=mvappend(service, process, process_command, parent_process, parent_process_command, grand_parent_process, grand_parent_process_command, file_path, file_name) | lookup threathunting-keywords keyword as myfields OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category metadata_link metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment | search metadata_description!="" AND metadata_enable_endpoint_detection=1 | stats count earliest(_time) as firsttime latest(_time) as lasttime values(process) values(service) values(process_command) values(file_name) values(file_path) values(parent_process) values(parent_process_command) values(grand_parent_process) values(grand_parent_process_command) by metadata_keyword_type keyword_detection index sourcetype | convert ctime(*time)

root@kitploit:~
#### Скорость:

Если скорость имеет значение или вы планируете использовать это как регулярное правило обнаружения, возможно, вам стоит рассмотреть разделение lookup на разные lookups, выбрав столбец metadata_keyword_type или metadata_tool, который хотите использовать.

Обратите внимание, что фильтрация с помощью команды search после `|lookup` не ускоряет процесс поиска. Если вы хотите сосредоточиться на конкретной части lookup, не разделяя его, вам следует использовать команду `|inputlookup` с предложением where. Хотя этот метод может потреблять больше ресурсов ЦП, в целом он обеспечивает более быстрое выполнение. Подробнее см. документацию Splunk по inputlookup: https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Inputlookup

#### С ELK:

Если вы работаете с Elastic Stack, для списков существует множество ограничений (нельзя использовать специальные символы, пробелы и т.д.), у вас есть 3 варианта:
- Используйте другой список, доступный здесь в этом же репозитории https://github.com/mthcht/ThreatHunting-Keywords/tree/main/elk (это не прямой выгрузка из threathunting-keywords.csv, он изменён для ELK и не обновляется)
- Используйте Sigma-правила "hunting", напрямую извлечённые из этого проекта https://github.com/mthcht/ThreatHunting-Keywords-sigma-rules с помощью pysigma для преобразования
- Используйте некоторые из моих списков в качестве списка IOC с подстановочными запросами https://www.elastic.co/guide/en/elasticsearch/reference/8.15/query-dsl-wildcard-query.html#wildcard-top-level-params
 
### Пример дашборда
![image](https://assets.kitploit.com/production/public/readmes/48741/df177e7f2584b823c311a2b223eed8b237d8a72c05d0afb9d6b6f350e42ccda0.png)

### Splunk4DFIR
Ещё один пример использования CSV-файлов проекта со Splunk для охоты в артефактах и журналах DFIR: https://github.com/mf1d3l/Splunk4DFIR
![image](https://assets.kitploit.com/production/public/readmes/48741/73d54c5b146c34685ebac4ed7ed2a9da11a3f90e6ae9ac0a4b17118d7895cbe3.png)

### Другие отличные списки для обнаружения
Я храню некоторые релевантные артефакты в отдельных списках; эти списки более точны и могут использоваться в правилах обнаружения, они доступны в этом [github-репозитории](https://github.com/mthcht/awesome-lists/tree/main/Lists)
вы найдёте:

Мой лист сбора разведывательной информации для планирования сессий охоты за угрозами

![intelligence gathering sheet](https://assets.kitploit.com/production/public/readmes/48741/498b188eaebabe5a7077300eeff16daee903ed30d0b1797b82c208a54ba1424d.png)


- 📋 Списки: https://github.com/mthcht/awesome-lists/tree/main/Lists
- 🕵️‍♂️ Руководства по Threat Hunting: https://mthcht.medium.com/list/threat-hunting-708624e9266f
- 🚰 Подозрительные именованные каналы: [suspicious_named_pipe_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_named_pipe_list.csv)
- 🌐 Подозрительные TLD (обновляется автоматически): [[suspicious_TLDs]](https://github.com/mthcht/awesome-lists/tree/main/Lists/TLDs)
- 🌐 Подозрительные ASN (обновляется автоматически): [[suspicious ASNs]](https://github.com/mthcht/awesome-lists/tree/main/Lists/ASNs)
- 🔧 Подозрительные службы Windows: [suspicious_windows_services_names_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_windows_services_names_list.csv)
- ⏲️ Подозрительные задачи Windows: [suspicious_windows_tasks_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_windows_tasks_list.csv)
- 🚪 Подозрительный порт назначения: [suspicious_ports_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_ports_list.csv)
- 🛡️ Подозрительные правила брандмауэра: [suspicious_windows_firewall_rules_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_windows_firewall_rules_list.csv)
- 🆔 Подозрительный User-agent: [suspicious_http_user_agents_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_http_user_agents_list.csv)
- 📇 Подозрительные USB ID: [suspicious_usb_ids_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_usb_ids_list.csv)
- 🔢 Подозрительный MAC-адрес: [suspicious_mac_address_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_mac_address_list.csv)
- 📛 Подозрительное имя хоста: [suspicious_hostnames_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_hostnames_list.csv)
- 🧮 Метаданные исполняемых файлов: [executables_metadata_informations_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/Windows%20Metadata/executables_metadata_informations_list.csv)
- 🕸️ Список серверов DNS over HTTPS: [dns_over_https_servers_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/dns_over_https_servers_list.csv)
- 📚 Hijacklibs (обновляется автоматически): [hijacklibs_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/Hijacklibs/hijacklibs_list.csv)
- 🌐 Списки узлов TOR (обновляется автоматически): https://github.com/mthcht/awesome-lists/tree/main/Lists/TOR
- 🛠️ Список LOLDriver (обновляется автоматически): [loldrivers_only_hashes_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/Drivers/loldrivers_only_hashes_list.csv)
- 🛠️ Список вредоносных загрузчиков (обновляется автоматически): [malicious_bootloaders_only_hashes_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/Drivers/malicious_bootloaders_only_hashes_list.csv)
- 📜 Список вредоносных SSL-сертификатов (обновляется автоматически): [ssl_certificates_malicious_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/SSL%20CERTS/ssl_certificates_malicious_list.csv)
- 🖥️ Обнаружение RMM: https://github.com/mthcht/awesome-lists/tree/main/Lists/RMM
- 👤🔑 Важные роли и группы для AD/EntraID/AWS: [[permissions]](https://github.com/mthcht/awesome-lists/tree/main/Lists/permissions)
- 💻🔒 Известные расширения файлов программ-вымогателей: [ransomware_extensions_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/ransomware_extensions_list.csv)
- 💻🔒 Известные файлы записок о выкупе (ransom notes): [ransomware_notes_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/ransomware_notes_list.csv)
- 📝 Правила ASR Windows: [windows_asr_rules.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/windows_asr_rules.csv)
- 🌐 Списки DNSTWIST (обновляется автоматически): [DNSTWIST: домены по умолчанию + скрипт](https://github.com/mthcht/awesome-lists/tree/main/Lists/DNSTWIST)
- 🌍 Списки IP-адресов VPN (обновляется автоматически): 
  - 🛡️ NordVPN: [nordvpn_ips_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/VPN/NordVPN/nordvpn_ips_list.csv)
  - 🛡️ ProtonVPN: [protonvpn_ip_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/VPN/ProtonVPN/protonvpn_ip_list.csv)
- 🏢 Списки IP-диапазонов компаний (обновляется автоматически): [Списки по умолчанию + скрипт](https://github.com/mthcht/awesome-lists/tree/main/Lists/Ranges_IP_Address_Company_List/bgp.he.net)
- 🔗 Другие корреляционные списки: https://github.com/mthcht/awesome-lists/tree/main/Lists/Others
- 📋 Списки, которые нужно закончить: https://github.com/mthcht/awesome-lists/tree/main/todo


Ознакомьтесь с этими [руководствами](https://github.com/mthcht/awesome-lists/tree/main/Lists#how-to-use-the-lists), чтобы использовать некоторые из списков: 
  - [Поиск по службам Windows](https://detect.fyi/threat-hunting-suspicious-windows-service-names-2f0dceea204c)
  - [Поиск по User-Agent](https://mthcht.medium.com/threat-hunting-suspicious-user-agents-3dd764470bd0)
  - [Поиск DNS Over HTTPS](https://mthcht.medium.com/detecting-dns-over-https-30fddb55ac78)
  - [Поиск подозрительных TLD](https://mthcht.medium.com/threat-hunting-suspicious-tlds-a742c2adbf58)
  - [Поиск HijackLibs](https://mthcht.medium.com/detect-dll-hijacking-techniques-from-hijacklibs-with-splunk-c760d2e0656f)
  - [Поиск фишинга и DNSTWIST](https://detect.fyi/detecting-phishing-attempts-with-dnstwist-37c426b3bbb8)
  - [Поиск расширений браузеров](https://mthcht.medium.com/detecting-browser-extensions-installations-e0ac2b45c46b)
  - [C2, скрывающийся на виду](https://mthcht.medium.com/c2-hiding-in-plain-sight-7a83963b9344)
  - [Артефакты HTML Smuggling](https://mthcht.medium.com/detecting-html-smuggling-phishing-attempts-15af824e60e4)
  - [Поиск PSEXEC и аналогичных инструментов](https://mthcht.medium.com/detecting-psexec-and-similar-tools-c812bf3dca6c)
  - [Обнаружение Time Slipping](https://mthcht.medium.com/event-log-manipulations-1-time-slipping-55bf95631c40)
  - [Подозрительные именованные каналы](https://medium.com/detect-fyi/threat-hunting-suspicious-named-pipes-a4206e8a4bc8)
 
... ещё [здесь](https://github.com/mthcht/awesome-lists/tree/main/Lists#how-to-use-the-lists) 

## DFIR: поиск ключевых слов в файлах (без SIEM)
Проведя тщательный обзор различных инструментов, я обнаружил, что [ripgrep](https://github.com/BurntSushi/ripgrep) значительно превосходит конкурентов в быстром сопоставлении обширного списка regex-шаблонов с каждой строкой большого файла журнала или даже нескольких файлов одновременно. Он оказался наиболее эффективным решением для обработки огромных объёмов данных, обеспечивая непревзойдённую скорость и гибкость.

### Охота на зловредное в файлах журнала с помощью **Ripgrep** и списка 'only_keywords_regex.txt'
#### `rg.exe -f .\only_keywords_regex.txt .\EvtxECmd_Output.csv --multiline --ignore-case`
- .\only_keywords_regex.txt служит исходным файлом для ключевых слов охоты за угрозами, преобразованных в regex-шаблоны для точного сопоставления. Эти шаблоны происходят из файла threathunting-keywords.csv, который прошёл процесс преобразования для оптимальной совместимости с regex-операциями.
- .\EvtxECmd_Output.csv представляет целевой файл, в котором будет выполняться поиск. В данном контексте это файл в формате .csv журнала событий Windows, созданный путём экспорта журналов evtx. Однако гибкость ripgrep позволяет заменить его на любой другой файл по вашему выбору для детального поиска по шаблонам.
- Опция --multiline позволяет ripgrep эффективно обрабатывать и сопоставлять шаблоны, охватывающие несколько строк, значительно расширяя область поиска.
Вы получите совпавшие строки с номером строки (но без совпавшего ключевого слова), как показано ниже

![image](https://assets.kitploit.com/production/public/readmes/48741/d205ae3caf99906a03818c202e8811b669948e2f68b88cc137cba8cf0e43b69f.png)

![image](https://assets.kitploit.com/production/public/readmes/48741/e1b213fc63e1ec2914e0f1eb3263d17aa960eb50672fd18986a0f75d50e9c379.png)

#### Более хороший вариант для очень больших файлов (в Windows):
[DFIR_hunt_in_file.ps1](https://github.com/mthcht/ThreatHunting-Keywords/blob/main/DFIR_hunt_in_file.ps1)

`powershell -ep Bypass -File .\DFIR_hunt_in_file.ps1 -patternFile "only_keywords_regex.txt" -targetFile "C:\Users\mthcht\collection\20230406154410_EvtxECmd_Output.csv" -rgPath "C:\Users\mthcht\Downloads\ripgrep-13.0.0-x86_64-pc-windows-msvc\ripgrep-13.0.0-x86_64-pc-windows-msvc\rg.exe"`
- `-targetFile`: укажите файл для поиска (в примере — извлечённые журналы DFIR-ORC)
- `-patternFile`: файл, содержащий regex-шаблоны `only_keywords_regex.txt`
- `-rgPath`: путь к исполняемому файлу ripgrep
содержимое powershell-скрипта (включено в репозиторий):```powershell
param (
    [Parameter(Mandatory=$true)]
    [string]$patternFile,
    [Parameter(Mandatory=$true)]
    [string]$targetFile,
    [Parameter(Mandatory=$true)]
    [string]$rgPath
)

Start-Transcript -Path "$PSScriptRoot\result_search.log" -Append -Force -Verbose

$totalLines = (Get-Content $patternFile | Measure-Object -Line).Lines
$currentLine = 0
Get-Content $patternFile | ForEach-Object {
    $currentLine++
    Write-Host "Searching for pattern $currentLine of $totalLines : $_"  
    & $rgPath --multiline --ignore-case $_ $targetFile | Write-Output 
}

Stop-Transcript -Verbose

Результат поиска будет в result_search.log в той же директории, что и скрипт.

image

Лучший вариант для очень больших файлов (в Linux):

todo

Охота на вредоносное только в файле с помощью PowerShell и списка 'only_keywords.txt ' (медленнее, не рекомендуется)

В PowerShell это намного медленнее, но если вы всё ещё хотите сделать это таким образом, вы можете использовать скрипт ниже; он сообщит вам номер строки, в которой найдено совпадение, и соответствующее ключевое слово:

powershell.exe -ep Bypass -File .\hunt_keywords_windows.ps1 -k .\only_keywords.txt -f .\EvtxECmd_Output.csv

```powershell param( [Parameter(Mandatory=$true)] [string]$file,
root@kitploit:~
[Parameter(Mandatory=$true)]
[string]$kw

)

$Keywords = Get-Content $kw $result = @()

foreach ($Keyword in $Keywords) { $SearchTerm = $Keyword.Replace("", ".") $SearchTerm = [Regex]::Escape($SearchTerm).Replace(".*", ".*")

root@kitploit:~
$reader = New-Object System.IO.StreamReader($file)
$lineNumber = 0
while (($line = $reader.ReadLine()) -ne $null) {
    $lineNumber++
    if ($line -match $SearchTerm) {
        $result += New-Object PSObject -Property @{
            'Keyword' = $Keyword
            'LineNumber' = $lineNumber
            'Line' = $line
        }
    }
}
$reader.Close()

}

$result | Out-GridView Read-Host -Prompt "Press Enter to exit"

root@kitploit:~
</details>

### Правила YARA
![изображение](https://assets.kitploit.com/production/public/readmes/48741/e1355c1b331e4e617189507532d5fc1045ae7eb085259c2e6a3c51338b88fcf2.png)

Все паттерны обнаружения этого проекта автоматически экспортируются в правила YARA в [ThreatHunting-Keywords-yara-rules](https://github.com/mthcht/ThreatHunting-Keywords-yara-rules)

Примеры охоты с этими правилами YARA:
![2023-10-20 20_23_59-(1) mthcht on X_ _The #ThreatHunting Keywords project is slowly progressing, alm](https://assets.kitploit.com/production/public/readmes/48741/be09b835bf23d364e39cd4538a510d9f6f8d249396b3e8440cb1ce6e5f63ce82.png)
 
![2023-10-20 20_14_17-C__Users_Public_Pictures](https://assets.kitploit.com/production/public/readmes/48741/ad815de74d8983987eb38e1a7e63f1540216ff50163da319e82e0219c01dbd5a.png)

![2023-10-21 11_14_15-Editing ThreatHunting-Keywords-yara-rules_README md at main · mthcht_ThreatHunti](https://assets.kitploit.com/production/public/readmes/48741/6fa65b15d788cfe2790498294078225e7f4c004c193b69ed56acfca51ba6829c.png)
![2023-10-21 11_12_44-](https://assets.kitploit.com/production/public/readmes/48741/8b235e92d44bf445d7f47edd27b161a0d6cfbd58e5158386993541d53da31942.png)

## Быстрая таблица данных для поиска по ключевому слову 
https://mthcht.github.io/ThreatHunting-Keywords/
![изображение](https://assets.kitploit.com/production/public/readmes/48741/477608f39dee047778948ef170316f7d59e2fb0e2437b53e39e7de6900ecb900.png)

## Ложные срабатывания

Внесите свой вклад и добавьте свои ложные срабатывания в [список](https://github.com/mthcht/ThreatHunting-Keywords/blob/main/_false_positives/false_positives_offensive_keywords.md) ожидаемых ложных срабатываний

## Правила SIGMA

Ознакомьтесь с таблицей поиска, переведённой в [правила SIGMA](https://github.com/mthcht/ThreatHunting-Keywords-sigma-rules), я обычно обновляю её одновременно :) 

![изображение](https://assets.kitploit.com/production/public/readmes/48741/298b4f42a0702b8a14376577a5fc2c670aa7a8246f9ee41cad9b39d573df0432.png)

## Сопоставление техник MITRE ATT&CK

с аддоном splunk https://splunkbase.splunk.com/app/5742
![изображение](https://assets.kitploit.com/production/public/readmes/48741/6605c5297f2d2536e18f593e2a3f5ec02ed5e66adbe4970247a3eccba0cbe31d.png)

Покрытие для 2242 инструментов (обновлено 2024/08/30):
![изображение](https://assets.kitploit.com/production/public/readmes/48741/eafcd79072b45d2a583d286d9d03084c01dba1de233c7b77f208f6c379081d84.png)


поиск splunk:

<details>```
| inputlookup threathunting-keywords.csv
| stats count by metadata_tool metadata_tool_techniques
| makemv delim=" - " metadata_tool_techniques
| mvexpand metadata_tool_techniques
| stats count by metadata_tool_techniques

Матрица инструментов

Панели мониторинга Splunk (это лишь один пример; с помощью доступных полей в файле можно применять самые разные фильтры):

Группы угроз по инструментам в этом проекте

пример xml-панели мониторинга splunk:

``` tools matrix tools_matrix tool categories metadata_category metadata_category | inputlookup threathunting-keywords.csv | stats count by metadata_category | fields - count -24h@h now all metadata_category IN ( ) * " " , groups name ALL metadata_groups_name IN ( ) * " " , metadata_groups_name metadata_groups_name | inputlookup threathunting-keywords.csv | stats count by metadata_groups_name | fields - count | eval metadata_groups_name = split(metadata_groups_name, " - ") | mvexpand metadata_groups_name | dedup metadata_groups_name -24h@h now | inputlookup threathunting-keywords.csv | search metadata_groups_name!=N/A $category$ | stats count as detection_patterns by metadata_groups_name metadata_tool | eval metadata_groups_name = split(metadata_groups_name, " - ") | mvexpand metadata_groups_name | search $groups$ -24h@h now none 728 progressbar categorical #3fc77a #d93f3c 6 false true true false true false true ```

image

image

image

🤝 Вклад

Вклад, сообщения об ошибках (issues) и запросы новых функций (feature requests) приветствуются!

Если вы хотите, чтобы я добавил инструмент в список, создайте issue по этому шаблону:


Название инструмента:

``

Укажите название инструмента.

Официальный сайт или ссылка на исходный код:

``

Укажите ссылку на официальный сайт инструмента или репозиторий с исходным кодом (GitHub, GitLab и т. д.). Если есть документация, приложите её.

Описание инструмента:

``

Опишите назначение, функциональность и примечательные особенности инструмента. Если вы не уверены, оставьте это поле пустым, и я изучу инструмент подробнее.

Известное использование злоумышленниками (если применимо):

``

Если у вас есть информация об известном или потенциальном злоупотреблении этим инструментом злоумышленниками, сообщите её здесь.

Классификация инструмента:

Выберите наиболее подходящую категорию для инструмента:

  • Атакующий (в основном используется атакующими, не является легитимным для общего использования)
  • Грейваре (легитимный инструмент, которым часто злоупотребляют злоумышленники)
  • Общие сигнатуры/ключевые слова (распространённые сигнатуры или термины, связанные с вредоносным ПО, обнаруживаемым средствами защиты)

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

Я решу, стоит ли добавлять инструмент в список. Инструменты, которые широко используются и признаны сообществом, с большей вероятностью будут включены в список, чем малоизвестные или новые.

Скачать инструмент
  • 🛠️ offensive tool keyword: Эти ключевые слова относятся к наступательным инструментам или демонстрируют высокую уверенность во вредоносных намерениях. Важно, чтобы эти термины оставались актуальными и надёжными для обнаружения потенциальных угроз (низкий уровень ложных срабатываний)
  • 🛠️ greyware tool keyword: Ключевые слова в этой категории соответствуют «легитимным» инструментам, которыми злоупотребляют злоумышленники. Поскольку эти инструменты также имеют легитимное применение, вероятность ложных срабатываний изначально выше. Важно интерпретировать эти результаты с пониманием того, что не все обнаружения могут означать вредоносную активность
  • 🛠️ signature keyword: Эти ключевые слова могут не быть напрямую связаны с инструментами, но могут включать имена сигнатур продуктов безопасности, специфические строки или слова, значимые для обнаружения угроз.
  • metadata_tool: Название инструмента, который мы хотим обнаружить

  • metadata_description: описание инструмента, который мы хотим обнаружить

  • metadata_tool_techniques: техники MITRE, связанные с инструментом, который мы хотим обнаружить

  • metadata_tool_tactics: тактики MITRE, связанные с инструментом, который мы хотим обнаружить

  • metadata_malwares_name: названия вариантов вредоносного ПО, использующих рассматриваемый инструмент

  • metadata_groups_name: названия групп злоумышленников (threat actors), связанных с инструментом

  • metadata_category: Глобальное название категории инструмента. Оно может измениться позже; предложения приветствуются.

  • metadata_link: ссылка на инструмент (исходный код, статьи, образцы, блог ...)

  • metadata_enable_endpoint_detection: Поле, указывающее, можно ли эффективно использовать ключевое слово в поиске по журналам конечных точек (endpoint). Сюда входят, помимо прочего, журналы событий Windows, EDR, журналы PowerShell, auditd, сеансы bastion, Sysmon или любой источник данных, содержащий поля активности процессов и файлов.

    • Если ключевое слово можно искать в журналах конечных точек, значение равно 1 (включено).
    • Если ключевое слово неактуально для журналов конечных точек, значение равно 0 (отключено).
  • metadata_enable_proxy_detection: Поле, указывающее применимость ключевого слова для поиска в сетевых журналах (журналы Proxy, DNS или любые данные с запросами и URL, исходящими из внутренней сети)

    • Если ключевое слово можно искать в журналах сетевой активности, значение равно 1 (включено).
    • Если ключевое слово неактуально для журналов сетевой активности, значение равно 0 (отключено).
  • metadata_popularity_score: оценка от 1 до 10 (от низкой до высокой популярности)

  • metadata_severity_score: оценка от 1 до 10 (от низкой до высокой критичности)

  • metadata_tags: теги для идентификации конкретных артефактов; с ключевым словом может быть связано несколько тегов. Когда некоторые конкретные артефакты не могут быть добавлены в списки без дополнительного контекста обнаружения, они добавляются в мои другие списки для обнаружения

  • metadata_comment: Это поле может содержать полезный комментарий, добавленный для ключевого слова.

  • metadata_github_stars: Количество звёзд проекта на GitHub (если инструмент находится на GitHub; в противном случае значение N/A); используется для расчёта оценки популярности

  • metadata_github_forks: Количество форков проекта на GitHub (если инструмент находится на GitHub; в противном случае значение N/A); может использоваться для статистики на панели мониторинга наиболее используемых инструментов

  • metadata_github_created_at: Дата создания проекта на GitHub (если инструмент находится на GitHub; в противном случае значение N/A); может использоваться для статистики на панели мониторинга

  • metadata_github_updated_at: Дата последнего обновления проекта на GitHub (если инструмент находится на GitHub; в противном случае значение N/A); может использоваться для отслеживания важных обновлений наступательных инструментов и корректировки детектов по ключевым словам

  • _raw
    keyword
    _raw
    keyword_detection
    _raw
  • | search metadata_description!="" AND metadata_enable_endpoint_detection=1 — здесь мы фокусируемся только на журналах конечных точек, поэтому добавляем metadata_enable_endpoint_detection=1, чтобы сопоставлять только релевантные ключевые слова для журналов конечных точек, и metadata_description!="", чтобы оставить только совпавшие ключевые слова
  • | stats count earliest(_time) as firsttime latest(_time) as lasttime values(_raw) as raw by metadata_keyword_type keyword_detection index sourcetype — здесь я сделал быстрый фильтр без всех полей lookup-таблицы для примера (но вы можете добавить и их, если хотите получить больше возможностей для исключений), это позволяет легко понять, какое ключевое слово совпадает чаще всего, чтобы можно было легко исключить категорию или инструмент, если по нему слишком много ложных срабатываний!
  • Когда мой поиск завершён, как я могу проанализировать результаты ? у вас будут необработанные журналы, отсортированные по ключевым словам и типам ключевых слов, используя |loadjob myjobid, мы можем теперь манипулировать выходными данными с релевантными журналами, не выполняя поиск заново по всем журналам.
  • и используйте эту визуализацию splunk: https://splunkbase.splunk.com/app/5742

    image image