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

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

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

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

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

Категории

Все категории
Loading categories
FalconHound — Автоматическое обновление графа BloodHound для синих команд. Обогащает пути атак AD данными о сессиях, группах и CVE в реальном времени из SIEM, обеспечивая непрерывный мониторинг и оповещение. | Kitploit
Инструменты/GitHubGitHub/falconforceteam/falconhound
Тестирование на ПроникновениеРазведка угроз
GitHubfalconforceteam/falconhound

FalconHound

Автоматическое обновление графа BloodHound для синих команд. Обогащает пути атак AD данными о сессиях, группах и CVE в реальном времени из SIEM, обеспечивая непрерывный мониторинг и оповещение.

Репозиторий
826594 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Maintenance Twitter Discord Shield

FalconHound

logo


ПРИМЕЧАНИЕ:

Начиная с релиза BloodHound CE 7.0, база данных по умолчанию была заменена на Postgres. Эта версия FalconHound по-прежнему использует Neo4j в качестве базы данных по умолчанию. Если вы хотите продолжать использовать FalconHound вместе с последней версией BloodHound, добавьте следующую строку в файл bloodhound.config.json.```json "graph_driver": "neo4j",

root@kitploit:~
Команда BloodHound будет поддерживать Neo4j как минимум в течение года. В этот период, как мы надеемся, либо произойдет значительное улучшение API, либо мы реализуем поддержку PGSQL в FalconHound.

---

FalconHound — это многофункциональный инструмент для синих команд. Он позволяет использовать и усиливать возможности BloodHound в более автоматизированном режиме. Он предназначен для использования совместно с SIEM или другим инструментом агрегации журналов.

Один из сложных аспектов BloodHound — это то, что он представляет собой моментальный снимок во времени. FalconHound включает функции, которые можно использовать для поддержания графа вашей среды в актуальном состоянии. Это позволяет видеть вашу среду такой, какая она есть СЕЙЧАС. Это особенно полезно для сред, которые постоянно меняются.

Одни из самых сложных отношений для сбора в BloodHound — это членство в локальных группах и информация о сеансах. Как специалисты синих команд, мы имеем эту информацию, доступную в наших журналах. FalconHound может использоваться для сбора этой информации и добавления её в граф, что позволяет BloodHound использовать её.

Это лишь пример того, как можно использовать FalconHound. Его можно использовать для сбора любой информации, имеющейся в ваших журналах или инструментах безопасности, и добавления её в граф BloodHound.

Кроме того, граф можно использовать для запуска оповещений или создания списков обогащения. Например, если пользователь добавляется в определенную группу, FalconHound можно использовать для запроса к графовой базе данных кратчайшего пути до чувствительной или привилегированной группы. Если такой путь существует, это может быть записано в SIEM или использовано для запуска оповещения.

Другие примеры использования FalconHound:
- Добавление, удаление или завершение сеансов в графе на основе событий входа и выхода.
- Пометка пользователей и компьютеров как скомпрометированных в графе, когда у них есть инцидент в Sentinel или MDE.
- Добавление информации о CVE и наличии публичного эксплойта в граф.
- Различные действия Azure.
- Пересчет кратчайшего пути до чувствительных групп при добавлении пользователя в группу или назначении новой роли.
- Добавление новых пользователей, групп и компьютеров в граф.
- Создание списков обогащения для Sentinel и Splunk, например, пользователей, уязвимых для Kerberoasting, или пользователей с правами владения определенными объектами.

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

Блог с подробным описанием причин разработки и примерами использования можно найти [здесь](https://medium.com/falconforce/falconhound-attack-path-management-for-blue-teams-42adedc9cae5?source=friends_link&sk=9f64b6b3028c5a2a6087d63b4fd2c82f)

Index:
- [Поддерживаемые источники и цели данных](#supported-data-sources-and-targets)
- [Установка](#installation)
- [Использование](#usage)
- [Действия](#actions)
- [Расширения графа](#extensions-to-the-graph)
- [Управление учетными данными](#credential-management)
- [Развертывание](#deployment)
- [Лицензия](#license)

## Поддерживаемые источники и цели данных

FalconHound предназначен для использования с BloodHound. Он не заменяет BloodHound. Он предназначен для использования возможностей BloodHound и всех других поддерживаемых платформ данных в автоматизированном режиме.

В настоящее время FalconHound поддерживает следующие источники и/или цели данных:
- Azure Sentinel
- Azure Sentinel Watchlists
- Splunk
- Microsoft Defender for Endpoint
- Neo4j
- MS Graph API (ранняя стадия)
- CSV файлы
- Azure Data Explorer (ADX) - бета
- LogScale
- BloodHound CE и BHE (ранняя стадия)
- Markdown файлы
- Elastic (ранняя стадия)

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

На данный момент FalconHound поддерживает только базу данных Neo4j для BloodHound. Поддержка API BH CE и BHE находится в активной разработке.

---

## Установка

Поскольку FalconHound написан на Go, установка не требуется. Просто загрузите бинарный файл из раздела релизов и запустите его. Доступны скомпилированные бинарные файлы для Windows, Linux и MacOS. Вы можете найти их в разделе [релизов](https://github.com/FalconForceTeam/FalconHound/releases).

Перед запуском необходимо создать файл конфигурации. Пример файла конфигурации можно найти в корневой папке. Инструкции по созданию всех учетных данных можно найти [здесь](https://github.com/falconforceteam/falconhound/blob/HEAD/docs/required_permissions.md).

Рекомендуемый способ запуска FalconHound — запускать его как запланированную задачу или cron-задание. Это позволит запускать его регулярно и поддерживать граф, оповещения и обогащения в актуальном состоянии.

### Требования

- BloodHound или, по крайней мере, база данных Neo4j на данный момент.
- SIEM или другой инструмент агрегации журналов. В настоящее время поддерживаются Azure Sentinel и Splunk.
- Учетные данные для каждой конечной точки, с которой вы хотите взаимодействовать, с [необходимыми разрешениями](https://github.com/falconforceteam/falconhound/blob/HEAD/docs/required_permissions.md).

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

FalconHound настраивается с помощью YAML-файла. Пример файла конфигурации можно найти в корневой папке. Каждый раздел файла конфигурации описан ниже.

---

## Использование

#### Запуск по умолчанию

Чтобы запустить FalconHound, просто запустите бинарный файл и добавьте параметр `-go`, чтобы выполнить все запросы из папки actions.```bash
./falconhound -go

Перечислить все включенные действия

Чтобы перечислить все включенные действия, используйте параметр -actionlist. Он перечислит все действия, которые включены в конфигурационных файлах в папке actions. Его следует использовать в сочетании с параметром -go.```bash ./falconhound -actionlist -go

root@kitploit:~
### Запуск с выбранным набором действий
Чтобы запустить выбранный набор действий, используйте параметр `-ids`, за которым следует один или список разделённых запятыми идентификаторов действий. Это запустит действия, указанные в параметре, что может быть очень удобно при тестировании, устранении неполадок или когда вам нужны определённые, более частые обновления. Это следует использовать в сочетании с параметром `-go`.```bash
./falconhound -ids action1,action2,action3 -go

Запуск с другим файлом конфигурации

По умолчанию FalconHound ищет файл конфигурации в текущем каталоге. Вы также можете указать файл конфигурации с помощью флага -config. Это позволяет запускать несколько экземпляров FalconHound с разными конфигурациями для разных сред.```bash ./falconhound -go -config /path/to/config.yml

root@kitploit:~
#### Запуск с другой папкой действий
По умолчанию FalconHound ищет папку действий в текущем каталоге. Вы также можете указать другую папку с помощью флага `-actions-dir`. Это упрощает тестирование и устранение неполадок, а также позволяет запускать несколько экземпляров FalconHound с разными конфигурациями, в разных средах или с разными временными интервалами.```bash
./falconhound -go -actions-dir /path/to/actions

Запуск с учетными данными из keyvault

По умолчанию FalconHound использует учетные данные из config.yml (или из пользовательского загруженного файла). При установке флага -keyvault FalconHound получит keyvault из конфигурации и извлечет все секреты оттуда. Если в keyvault отсутствуют какие-либо элементы, будет выполнено обращение к конфигурационному файлу. Если вы хотите получить секреты из Azure keyvault с использованием управляемого удостоверения, определите переменную authtype как msi.```bash ./falconhound -go -keyvault

root@kitploit:~
## Действия

Действия — это ядро FalconHound. Это запросы, которые будет выполнять FalconHound. Они написаны на родном языке источника и цели и хранятся в папке actions. Каждое действие представляет собой отдельный файл и хранится в каталоге источника информации, цели запроса. Имя файла используется как имя действия.

### Структура папки действий

Папка действий разделена на подкаталоги по источнику запроса. Все папки будут обрабатываться рекурсивно, и все YAML-файлы будут выполняться в алфавитном порядке.

Действия Neo4j **должны** обрабатываться последними, так как их результаты зависят от того, что другие источники данных сначала обновят базу графов, чтобы получить наиболее актуальные результаты.

### Файлы действий

Все файлы являются YAML-файлами. YAML-файл содержит запрос, некоторые метаданные и цель(и) запрашиваемой информации.

В корневой папке доступен файл шаблона. Вы можете использовать его для создания собственных действий. Ознакомьтесь с действиями в папке actions для получения дополнительных примеров.

Хотя большинство пунктов будут достаточно понятны, есть несколько важных моментов, которые следует отметить относительно действий:

#### Enabled

Как следует из названия, это используется для включения или отключения действия. Если для него установлено значение false, действие не будет запущено.```yaml
Enabled: true

Debug

Это используется для включения или отключения режима отладки для действия. Если установлено значение true, действие будет выполняться в режиме отладки. Это выведет результаты запроса в консоль. Это полезно для тестирования и устранения неполадок, но не рекомендуется использовать в производственной среде. Это замедлит обработку действия в зависимости от количества результатов.```yaml Debug: false

root@kitploit:~
#### Query

Поле `Query` — это запрос, который будет выполняться к источнику. Это может быть запрос KQL, запрос SPL или запрос Cypher в зависимости от вашего `SourcePlatform`. ВАЖНО: старайтесь сделать запрос как можно более точным и возвращать только те поля, которые вам нужны. Это ускорит и повысит эффективность обработки результатов. Кроме того, при выполнении запросов Cypher обязательно возвращайте объект JSON в качестве результата, иначе обработка завершится ошибкой. Например, этот запрос вернет Имя, Количество, Роль и Владельцев подписок Azure:```cypher
MATCH p = (n)-[r:AZOwns|AZUserAccessAdministrator]->(g:AZSubscription) 
  RETURN {Name:g.name , Count:COUNT(g.name), Role:type(r), Owners:COLLECT(n.name)}

Цели

Каждая цель имеет несколько настраиваемых параметров. В зависимости от цели, некоторые могут требовать больше настройки, чем другие. Все цели имеют поля Name и Enabled. Поле Name используется для идентификации цели. Поле Enabled используется для включения или отключения цели. Если это установлено в false, цель будет игнорироваться.

CSV

CSV поддерживает переменную {{date}}, которая будет заменена текущей датой в формате YYYY-MM-DD. Это можно использовать для создания ежедневных отчетов. Это можно использовать в имени папки или файла (например, path/to/filename-{{date}}.csv) или в самом имени папки.```yaml

  • Name: CSV Enabled: true Path: path/to/filename.csv
root@kitploit:~
#### Markdown

Markdown поддерживает переменную {{date}}, которая будет заменена на текущую дату в формате `YYYY-MM-DD`. Это можно использовать для создания ежедневных отчетов.
Это можно использовать в имени папки или файла (например, `path/to/filename-{{date}}.md`) или в самом имени папки.```yaml
  - Name: Markdown
    Enabled: true
    Path: path/to/filename.md

Пример вывода:```markdown

Results for query: N4J_REPORT_DomainAdmins

Get a list of Domain Admins

Description: Get a list of Domain Admins. Date: 2024-02-19

NameObjectID
[email protected]S-1-5-21-1122334455-112233445-1112223334-11223344
root@kitploit:~
#### Neo4j

Цель Neo4j записывает результаты запроса в базу данных Neo4j. Этот вывод построчный, поэтому требует дополнительной настройки.
Поскольку мы можем передавать всевозможные данные в разных направлениях, FalconHound должен понимать, что делать с данными. Это достигается использованием переменных замены в первой строке ваших Cypher-запросов. Они передаются в Neo4j как параметры и могут использоваться в запросе.
Поля `ReplacementFields` настраиваются ниже.```yaml
  - Name: Neo4j
    Enabled: true
    Query: |
      MATCH (x:Computer {name:$Computer}) MATCH (y:User {objectid:$TargetUserSid}) MERGE (x)-[r:HasSession]->(y) SET r.since=$Timestamp SET r.source='falconhound'
    Parameters:
      Computer: Computer
      TargetUserSid: TargetUserSid
      Timestamp: Timestamp

Раздел Parameters определяет набор параметров, которые будут заменены значениями из результатов запроса. На них можно ссылаться как на параметры Neo4j, используя синтаксис $parameter_name.

Sentinel

Цель Sentinel запишет результаты запроса в таблицу Sentinel. Таблица будет создана, если она не существует. Таблица будет создана в рабочей области, указанной в файле конфигурации. Данные из запроса будут добавлены в поле EventData. EventID будет идентификатором действия, а Description — именем действия.

Вот почему вывод запроса также необходимо контролировать, иначе вы можете перегрузить вашу цель.```yaml

  • Name: Sentinel Enabled: true
root@kitploit:~
#### Sentinel Watchlists

Цель Sentinel Watchlists запишет результаты запроса в список наблюдения Sentinel. Список наблюдения будет создан, если его не существует. Список наблюдения будет создан в рабочей области, указанной в конфигурационном файле. Все столбцы, возвращённые запросом, будут добавлены в список наблюдения.```yaml
 - Name: Watchlist
    Enabled: true
    WatchlistName: FH_MDE_Exploitable_Machines
    DisplayName: MDE Exploitable Machines
    SearchKey: DeviceName
    Overwrite: true

Поле WatchlistName — это имя списка наблюдения. Поле DisplayName — отображаемое имя списка наблюдения.

Поле SearchKey — столбец, который будет использоваться в качестве ключа поиска.

Поле Overwrite определяет, следует ли перезаписать список наблюдения или дополнить его. Если установлено значение false, результаты запроса будут добавлены к списку наблюдения. Если установлено значение true, список наблюдения будет удален и создан заново с результатами запроса.

Splunk

Как и в Sentinel, Splunk записывает результаты запроса в индекс Splunk. Индекс необходимо создать и привязать к конечной точке HEC. Данные из запроса будут добавлены в поле EventData. Идентификатор события (EventID) будет идентификатором действия, а описание (Description) — именем действия.```yaml

  • Name: Splunk Enabled: true
root@kitploit:~
#### Azure Data Explorer

Как и Sentinel, Splunk записывает результаты запроса в таблицу ADX.  Данные из запроса будут добавлены в поле EventData.  EventID будет идентификатором действия, а Description — именем действия.```yaml
  - Name: ADX
    Enabled: true
    Table: "name"

Чтобы создать таблицу в ADX, вы можете использовать следующую команду:```kql .create table FalconHound (Name: string, Description: string, EventID: string, BHQuery: string, EventData: dynamic, Timestamp: datetime)

root@kitploit:~
### Расширения графа

#### Отношение: HadSession

Как только сессия завершалась, её приходилось удалять из графа, но это казалось растратой информации. Поэтому вместо удаления сессии, она будет добавлена как отношение между компьютером и пользователем. Отношение будет называться `HadSession`. Отношение будет иметь следующие свойства:```json
{
  "till": "2021-08-31T14:00:00Z",
  "source": "falconhound",
  "reason": "logoff",
}

Это позволяет обнаруживать дополнительные пути, где мы можем проверить, входил ли пользователь когда-либо в определённую систему, даже если сеанс уже завершён.

Свойства

FalconHound добавит следующие свойства к узлам графа:

Computer: - 'exploitable': true/false - 'exploits': список CVE - 'exposed': true/false - 'ports': список портов, доступных из интернета - 'alertids': список идентификаторов предупреждений

Управление учётными данными

В настоящее время поддерживаются следующие способы предоставления учётных данных FalconHound:

  • Через файл config.yml на диске.
  • Секреты Keyvault. Для этого требуется Managed System Identity, назначенная виртуальной машине, или ServicePrincipal с секретами в yaml.
  • Смешанный режим.

Config.yml

Файл конфигурации содержит все детали, необходимые для каждой платформы. Все элементы в файле конфигурации чувствительны к регистру. Рекомендуется разделять приложения по каждому сервису, но вы можете использовать один AppID/AppSecret для всех действий на основе Azure.

Необходимые разрешения для вашего AppID/AppSecret перечислены здесь.

Keyvault

Более безопасный способ хранения учётных данных — использование Azure KeyVault. Имейте в виду, что использование Keyvault влечёт небольшие затраты. В настоящее время доступ к KeyVault поддерживает аутентификацию на основе Managed System Identity или AppID/AppSecret, которые необходимо настроить в файле config.yml.

Рекомендуемый способ настройки — назначить Managed System Identity виртуальной машине, на которой работает FalconHound, и назначить ей роль Key Vault Secrets User для этого Keyvault. Это позволит FalconHound аутентифицироваться в Keyvault без необходимости какой-либо дополнительной конфигурации.

В качестве альтернативы вы можете использовать ServicePrincipal, который имеет только роль Key Vault Secrets User для этого Keyvault. Эта роль позволяет только доступ к секретам, даже без возможности их перечисления. Do НЕ ИСПОЛЬЗУЙТЕ повторно ServicePrincipal, имеющий доступ к Sentinel и/или MDE, так как это практически полностью сводит на нет использование Keyvault.

Элементы для настройки в Keyvault перечислены ниже. Обратите внимание, что секреты Keyvault не чувствительны к регистру.``` SentinelAppSecret SentinelAppID SentinelTenantID SentinelTargetTable SentinelResourceGroup SentinelSharedKey SentinelSubscriptionID SentinelWorkspaceID SentinelWorkspaceName MDETenantID MDEAppID MDEAppSecret Neo4jUri Neo4jUsername Neo4jPassword GraphTenantID GraphAppID GraphAppSecret AdxTenantID AdxAppID AdxAppSecret AdxClusterURL AdxDatabase SplunkUrl SplunkApiToken SplunkIndex SplunkApiPort SplunkHecToken SplunkHecPort BHUrl BHTokenID BHTokenKey LogScaleUrl LogScaleToken LogScaleRepository LimaCharlieAPIUrl LimaCharlieOrgId LimaCharlieIngestKey ElasticCloudID ElasticApiKey

root@kitploit:~
После настройки вы можете добавить параметр `-keyvault` при запуске FalconHound.

#### Смешанный режим / резервный вариант

Когда параметр `-keyvault` задан в командной строке, он будет основным источником для всех необходимых секретов. Если FalconHound не сможет получить элементы, он вернётся к эквивалентному элементу в `config.yml`.
Если оба метода не сработают и для этого источника или цели включены действия, будет выдано предупреждение и действие(я) будет пропущено.

## Развёртывание

FalconHound предназначен для запуска в качестве запланированной задачи или cron-задания. Это позволит вам запускать его на регулярной основе и поддерживать актуальность графа, оповещений и обогащений.
В зависимости от количества включённых действий, объёма обрабатываемых данных и объёма данных, записываемых в граф, это может занять некоторое время.

Все запросы на основе журналов рассчитаны на выполнение каждые 15 минут. Если обработка занимает слишком много времени, возможно, потребуется немного подкорректировать это.
В таком случае может быть рекомендовано отключить некоторые действия.

Также может быть некоторое дублирование, например, с действиями по сеансам. Если у вас много сеансов, вы можете отключить действия по сеансам для Sentinel и полагаться на действия от MDE. Это предполагает, что у вас подключены MDE и Sentinel, и большинство машин подключены к MDE.

### Sharphound / Azurehound

Хотя FalconHound предназначен для использования с BloodHound, он не является заменой Sharphound и Azurehound. Он предназначен для дополнения сбора и устранения проблемы моментального снимка периодического сбора. Как Sharphound, так и Azurehound по-прежнему необходимы для сбора данных, поскольку не все аналогичные данные доступны в журналах.

Рекомендуется запускать Sharphound и Azurehound на регулярной основе, например, раз в день/неделю или месяц, а FalconHound — каждые 15 минут.

## Лицензия

Этот проект лицензирован по лицензии BSD3 — подробности см. в файле [LICENSE](https://github.com/falconforceteam/falconhound/blob/HEAD/LICENSE).

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