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

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

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

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

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

Категории

Все категории
Loading categories
RustHound — Инструмент для сбора данных Active Directory для BloodHound Legacy, написанный на Rust. 🦀 | Kitploit
Инструменты/GitHubGitHub/nh-red-team/rusthound
РазведкаСбор информацииТестирование на ПроникновениеRed Teaming
GitHubnh-red-team/rusthound

RustHound

Инструмент для сбора данных Active Directory для BloodHound Legacy, написанный на Rust. 🦀

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

Популярное

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

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

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

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

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

Эта версия совместима только с BloodHound Legacy 4.x

Версия, совместимая с BloodHound Community Edition (CE), доступна здесь RustHound-CE.


Crates.io GitHub Twitter Follow Twitter Follow
Linux supported Windows supported macOS supported

Содержание

  • Ограничения

  • Описание

  • Как скомпилировать?

    • С помощью Makefile
    • С помощью Dockerfile
    • С помощью Cargo
    • Статическая версия для Linux x86_64
    • Статическая версия для Windows из Linux
    • Статическая версия для macOS из Linux
    • Оптимизация размера бинарного файла
  • Как собрать документацию?

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

  • Демонстрация

    • Простое использование
    • Модуль FQDN resolver
    • Модуль сбора ADCS
  • Статистика

  • План развития

  • Ссылки

Ограничения

Не все функции SharpHound реализованы. Некоторые существуют в RustHound и отсутствуют в SharpHound или BloodHound-Python. Пожалуйста, обратитесь к плану развития для получения дополнительной информации.

Описание

RustHound — это кроссплатформенный инструмент сбора данных для BloodHound, написанный на Rust, что делает его совместимым с Linux, Windows и macOS.

Без обнаружения антивирусом и кросскомпилирован.

RustHound генерирует JSON-файлы пользователей, групп, компьютеров, подразделений, GPO, контейнеров и доменов, которые можно анализировать с помощью BloodHound.

💡 Если вы можете использовать SharpHound, используйте его. Используйте RustHound как запасное решение, если SharpHound обнаруживается антивирусом или несовместим с вашей ОС.

Как скомпилировать?

С помощью Makefile

Вы можете использовать команду make для установки RustHound или его компиляции под Linux или Windows.

root@kitploit:~
make install
rusthound -h

Больше команд в Makefile:

root@kitploit:~
Default:
usage: make install
usage: make uninstall
usage: make debug
usage: make release

Static:
usage: make windows
usage: make windows_x64
usage: make windows_x86
usage: make linux_aarch64
usage: make linux_x86_64
usage: make linux_musl
usage: make macos
usage: make arm_musl
usage: make armv7

Without cli argument:
usage: make windows_noargs

Dependencies:
usage: make install_windows_deps
usage: make install_linux_musl_deps
usage: make install_macos_deps

С помощью Dockerfile

Используйте RustHound с Docker, чтобы быть уверенным в наличии всех зависимостей.

root@kitploit:~
docker build --rm -t rusthound .

# Затем
docker run --rm -v ./:/usr/src/rusthound rusthound windows
docker run --rm -v ./:/usr/src/rusthound rusthound linux_musl
docker run --rm -v ./:/usr/src/rusthound rusthound macos

С помощью Cargo

Вам нужно установить Rust в вашу систему.

https://www.rust-lang.org/fr/tools/install

RustHound поддерживает Kerberos и GSSAPI. Поэтому ему требуются Clang и его библиотеки разработки, а также библиотеки разработки Kerberos. На Debian и Ubuntu это означает clang-N, libclang-N-dev и libkrb5-dev.

Например:

root@kitploit:~
# Debian/Ubuntu
sudo apt-get -y update && sudo apt-get -y install gcc clang libclang-dev libgssapi-krb5-2 libkrb5-dev libsasl2-modules-gssapi-mit musl-tools gcc-mingw-w64-x86-64

Вот как скомпилировать версии "release" и "debug" с помощью команды cargo.

root@kitploit:~
git clone https://github.com/OPENCYBER-FR/RustHound
cd RustHound
cargo build --release
# или debug версия
cargo b

Результат можно найти в папке target/release или target/debug.

Ниже приведена методология компиляции для каждой ОС из Linux. Если вам нужна другая система компиляции, пожалуйста, обратитесь к списку по этой ссылке: https://doc.rust-lang.org/nightly/rustc/platform-support.html

Вручную для статической версии Linux x86_64

root@kitploit:~
# Установка rustup и Cargo для Linux
curl https://sh.rustup.rs -sSf | sh

# Добавление зависимостей Linux
rustup install stable-x86_64-unknown-linux-gnu
rustup target add x86_64-unknown-linux-gnu

# Статическая компиляция для Linux
git clone https://github.com/OPENCYBER-FR/RustHound
cd RustHound
CFLAGS="-lrt";LDFLAGS="-lrt";RUSTFLAGS='-C target-feature=+crt-static';cargo build --release --target x86_64-unknown-linux-gnu

Результат можно найти в папке target/x86_64-unknown-linux-gnu/release.

Вручную для статической версии Windows из Linux

root@kitploit:~
# Установка rustup и Cargo в Linux
curl https://sh.rustup.rs -sSf | sh

# Добавление зависимостей Windows
rustup install stable-x86_64-pc-windows-gnu
rustup target add x86_64-pc-windows-gnu

# Статическая компиляция для Windows
git clone https://github.com/OPENCYBER-FR/RustHound
cd RustHound
RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-pc-windows-gnu

Результат можно найти в папке target/x86_64-pc-windows-gnu/release.

Вручную для статической версии macOS из Linux

Отличная документация: https://wapl.es/rust/2019/02/17/rust-cross-compile-linux-to-macos.html

root@kitploit:~
# Установка rustup и Cargo в Linux
curl https://sh.rustup.rs -sSf | sh

# Добавление цепочки инструментов macOS
sudo git clone https://github.com/tpoechtrager/osxcross /usr/local/bin/osxcross
sudo wget -P /usr/local/bin/osxcross/ -nc https://s3.dockerproject.org/darwin/v2/MacOSX10.10.sdk.tar.xz && sudo mv /usr/local/bin/osxcross/MacOSX10.10.sdk.tar.xz /usr/local/bin/osxcross/tarballs/
sudo UNATTENDED=yes OSX_VERSION_MIN=10.7 /usr/local/bin/osxcross/build.sh
sudo chmod 775 /usr/local/bin/osxcross/ -R
export PATH="/usr/local/bin/osxcross/target/bin:$PATH"

# Cargo необходимо указать правильный линковщик для цели x86_64-apple-darwin, добавьте следующее в файл .cargo/config вашего проекта:
grep 'target.x86_64-apple-darwin' ~/.cargo/config || echo "[target.x86_64-apple-darwin]" >> ~/.cargo/config
grep 'linker = "x86_64-apple-darwin14-clang"' ~/.cargo/config || echo 'linker = "x86_64-apple-darwin14-clang"' >> ~/.cargo/config
grep 'ar = "x86_64-apple-darwin14-clang"' ~/.cargo/config || echo 'ar = "x86_64-apple-darwin14-clang"' >> ~/.cargo/config

# Статическая компиляция для macOS
git clone https://github.com/OPENCYBER-FR/RustHound
cd RustHound
RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-apple-darwin --features nogssapi

Результат можно найти в папке target/x86_64-apple-darwin/release.

Оптимизация размера бинарного файла

💡 Для получения оптимизированной компиляции RustHound добавьте следующие параметры компиляции в конец файла Cargo.toml.

root@kitploit:~
[profile.release]
opt-level = "z"
lto = true
strip = true
codegen-units = 1
panic = "abort"

Размер бинарного файла будет значительно уменьшен. Можно использовать стандартные команды компилятора cargo.

root@kitploit:~
make windows

Дополнительная информация здесь

Как собрать документацию?

root@kitploit:~
git clone https://github.com/OPENCYBER-FR/RustHound
cd RustHound
cargo doc --open --no-deps

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

root@kitploit:~
Usage: rusthound [OPTIONS] --domain <domain>

Options:
  -v...          Установить уровень подробности вывода
  -h, --help     Вывести справку
  -V, --version  Вывести информацию о версии

ОБЯЗАТЕЛЬНЫЕ ЗНАЧЕНИЯ:
  -d, --domain <domain>  Имя домена, например: DOMAIN.LOCAL

НЕОБЯЗАТЕЛЬНЫЕ ЗНАЧЕНИЯ:
  -u, --ldapusername <ldapusername>  Имя пользователя LDAP, например: [email protected]
  -p, --ldappassword <ldappassword>  Пароль LDAP
  -f, --ldapfqdn <ldapfqdn>          Полное доменное имя контроллера домена, например: DC01.DOMAIN.LOCAL или просто DC01
  -i, --ldapip <ldapip>              IP-адрес контроллера домена, например: 192.168.1.10
  -P, --ldapport <ldapport>          Порт LDAP [по умолчанию: 389]
  -n, --name-server <name-server>    Альтернативный IP-адрес сервера имён для DNS-запросов
  -o, --output <output>              Директория вывода для сохранения JSON-файлов [по умолчанию: ./]

НЕОБЯЗАТЕЛЬНЫЕ ФЛАГИ:
      --ldaps           Принудительно использовать LDAPS для запроса, например: ldaps://DOMAIN.LOCAL/
      --dns-tcp         Использовать TCP вместо UDP для DNS-запросов
      --dc-only         Собирает данные только с контроллера домена. Не будет пытаться получить конфигурацию/безопасность ЦС или проверить веб-регистрацию
      --old-bloodhound  Только для ADCS. Вывод результата как данных BloodHound для оригинальной версии BloodHound от @BloodHoundAD без поддержки PKI
  -z, --zip             Сжать JSON-файлы в zip-архив

НЕОБЯЗАТЕЛЬНЫЕ МОДУЛИ:
      --fqdn-resolver  Использовать модуль fqdn-resolver для получения IP-адресов компьютеров
      --adcs           Использовать модуль ADCS для перечисления шаблонов сертификатов, центров сертификации и других конфигураций.
                       (Для специальной сборки BloodHound от @ly4k с поддержкой PKI)

Демонстрация

Примеры выполнены на GOADv2, реализованной mayfly:

Простое использование

root@kitploit:~
# Linux с username:password
rusthound -d north.sevenkingdoms.local -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z

# Linux с username:password и ldapip
rusthound -d north.sevenkingdoms.local -i 192.168.56.11 -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z

# Linux с username:password и ldaps
rusthound -d north.sevenkingdoms.local --ldaps -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z 
# Linux с username:password и ldaps и пользовательским портом
rusthound -d north.sevenkingdoms.local --ldaps -P 3636 -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z 

# Совет: перенаправить и стандартный вывод, и стандартную ошибку в файл > /tmp/rh_output 2>&1
rusthound -d north.sevenkingdoms.local --ldaps -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo --fqdn-resolver > /tmp/rh_output 2>&1

# Windows с сессией GSSAPI
rusthound.exe -d sevenkingdoms.local --ldapfqdn kingslanding
# Windows простое bind-соединение username:password (не используйте одинарные или двойные кавычки в cmd.exe)
rusthound.exe -d sevenkingdoms.local -u [email protected] -p _L0ngCl@w_ -o output -z

# Аутентификация Kerberos (Linux)
export KRB5CCNAME="/tmp/jeor.mormont.ccache"
rusthound -d sevenkingdoms.local -f kingslanding -k -z
# Аутентификация Kerberos (Windows)
rusthound.exe -d sevenkingdoms.local -f kingslanding -k -z

Модуль FQDN resolver

root@kitploit:~
# Linux с username:password и модулем FQDN resolver
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/demo --fqdn-resolver -z
# Linux с username:password и ldaps и модулем FQDN resolver и TCP DNS запросом и пользовательским сервером имён
rusthound -d essos.local --ldaps -u '[email protected]' -p 'BurnThemAll!' -o /tmp/demo --fqdn-resolver --tcp-dns --name-server 192.168.56.12 -z

# Windows с сессией GSSAPI и модулем FQDN resolver
rusthound.exe -d essos.local -f meereen -o output --fqdn-resolver -z
# Windows простое bind-соединение username:password и модулем FQDN resolver и TCP DNS запросом и пользовательским сервером имён (не используйте одинарные или двойные кавычки в cmd.exe)
rusthound.exe -d essos.local -u [email protected] -p BurnThemAll! -o output -z --fqdn-resolver --tcp-dns --name-server 192.168.56.12 

Модуль сбора ADCS

Пример с использованием версии @ly4k BloodHound.

root@kitploit:~
# Linux с username:password и модулем ADCS для версии @ly4k BloodHound
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs -z
# Linux с username:password и модулем ADCS и флагом dconly (не будет проверять веб-регистрацию)
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs --dc-only -z

# Linux с username:password и модулем ADCS с использованием аргумента "--old-bloodhound" для официальной версии @BloodHoundAd
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs --old-bloodhound -z

# Windows с сессией GSSAPI и модулем ADCS
rusthound.exe -d essos.local -f meereen -o output -z --adcs
# Windows с сессией GSSAPI и модулем ADCS и TCP DNS запросом и пользовательским сервером имён
rusthound.exe -d essos.local --ldapfqdn meereen -o output -z --adcs --tcp-dns --name-server 192.168.56.12
# Windows простое bind-соединение username:password (не используйте одинарные или двойные кавычки в cmd.exe)
rusthound.exe -d essos.local -u [email protected] -p BurnThemAll! -o output -z --adcs --dc-only

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

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

root@kitploit:~
cp resources/customqueries.json ~/.config/bloodhound/customqueries.json

🚀 Статистика

Для получения статистики по контроллеру домена с большим количеством объектов LDAP запустите BadBlood на контроллере домена ESSOS.local из GOAD. После этого на контроллере домена должно быть около 3500 объектов. Ниже приведено среднее время выполнения следующих инструментов:

🚥 План развития

Аутентификация

  • LDAP (389)
  • LDAPS (636)
  • BIND
  • NTLM
  • Kerberos
  • Запрос пароля

Вывод

  • users.json
  • groups.json
  • computers.json
  • ous.json
  • gpos.json
  • containers.json
  • domains.json
  • cas.json
  • templates.json
  • аргумент и функция для архивации JSON-файлов --zip

Модули

  • Извлечение пароля LAPS, если ваш пользователь может их читать автоматически
  • Разрешение FQDN найденных компьютеров в IP-адреса --fqdn-resolver
  • Получение сертификатов для эксплуатации ESC с помощью Certipy --adcs
  • Модуль атаки Kerberos (ASREPROASTING и KERBEROASTING) --attack-kerberos
  • Получение данных из доверенных доменов --follow-trust (В настоящее время в разработке, есть бета-версия этого модуля)

BloodHound v4.2

  • Возможности парсинга

    • Пользователи и компьютеры
      • HasSIDHistory
    • Пользователи
      • Свойства : sfupassword
  • DCERPC (зависимости)

    • Компьютеры
      • Сеансы
    • Подразделения и домены
      • LocalAdmins
      • RemoteDesktopUsers
      • DcomUsers
      • PSRemoteUsers

🔗 Ссылки

  • Статья в блоге: https://www.opencyber.com/rusthound-data-collector-for-bloodhound-written-in-rust/
  • BloodHound.py: https://github.com/fox-it/BloodHound.py
  • SharpHound: https://github.com/BloodHoundAD/SharpHound
  • BloodHound: https://github.com/BloodHoundAD/BloodHound
  • Документация BloodHound: https://bloodhound.readthedocs.io/en/latest/index.html
  • GOAD: https://github.com/Orange-Cyberdefense/GOAD
  • Версия BloodHound от ly4k: https://github.com/ly4k/BloodHound
  • Certipy: https://github.com/ly4k/Certipy
Скачать инструмент
ИнструментОкружениеОбъектовВремяКоманда
SharpHound.exeWindows ~3500~51.605сMeasure-Command { sharphound.exe -d essos.local --ldapusername 'khal.drogo' --ldappassword 'horse' --domaincontroller '192.168.56.12' -c All }
BloodHound.pyLinux ~3500~9.657сtime python3 bloodhound.py -u khal.drogo -p horse -d essos.local -ns 192.168.56.12 --zip -c all
RustHound.exeWindows ~3500~5.315сMeasure-Command { rusthound.exe -d essos.local -u [email protected] -p horse -z }
RustHoundLinux ~3500~3.166сtime rusthound -d essos.local -u [email protected] -p horse -z
  • ЦС
    • User Specified SAN
    • Request Disposition