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
RustHound — Ingestor de dados do Active Directory para o BloodHound Legacy escrito em Rust. 🦀 | Kitploit
Ferramentas/GitHubGitHub/nh-red-team/rusthound
ReconhecimentoColeta de InformaçõesTestes de PenetraçãoRed Teaming
GitHubnh-red-team/rusthound

RustHound

Ingestor de dados do Active Directory para o BloodHound Legacy escrito em Rust. 🦀

Ver Repositório
1.2k1072há 1 anoRevisado 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 →
Compartilhar

Esta versão é compatível apenas com BloodHound Legacy 4.x

A versão compatível com BloodHound Community Edition (CE) pode ser encontrada aqui RustHound-CE.


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

Resumo

  • Limitação

  • Descrição

  • Como compilá-lo?

    • Usando Makefile
    • Usando Dockerfile
    • Usando Cargo
    • Linux x86_64 versão estática
    • Windows versão estática a partir do Linux
    • macOS versão estática a partir do Linux
    • Otimizar o tamanho do binário
  • Como construir a documentação?

  • Uso

  • Demonstração

    • Uso simples
    • Módulo resolvedor de FQDN
    • Módulo coletor ADCS
  • Estatísticas

  • Roteiro

  • Links

Limitações

Nem todos os recursos do SharpHound foram implementados. Alguns existem no RustHound e não no SharpHound ou BloodHound-Python. Consulte o roteiro para mais informações.

Descrição

RustHound é uma ferramenta coletora multiplataforma para BloodHound escrita em Rust, sendo compatível com Linux, Windows e macOS.

Sem detecção de AV e compilação cruzada.

O RustHound gera arquivos JSON de usuários, grupos, computadores, UOs, GPOs, contêineres e domínios que podem ser analisados com o BloodHound.

💡 Se puder usar o SharpHound, use-o. Use o RustHound como solução de backup se o SharpHound for detectado pelo AV ou se não for compatível com seu sistema operacional.

Como compilá-lo?

Usando Makefile

Você pode usar o comando make para instalar o RustHound ou compilá-lo para Linux ou Windows.

root@kitploit:~
make install
rusthound -h

Mais comandos no 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

Usando Dockerfile

Use o RustHound com Docker para garantir todas as dependências.

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

# Então
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

Usando Cargo

Você precisará instalar o Rust em seu sistema.

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

O RustHound suporta Kerberos e GSSAPI. Portanto, requer Clang e suas bibliotecas de desenvolvimento, bem como as bibliotecas de desenvolvimento do Kerberos. No Debian e Ubuntu, isso significa clang-N, libclang-N-dev e libkrb5-dev.

Por exemplo:

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

Aqui está como compilar as versões "release" e "debug" usando o comando cargo.

root@kitploit:~
git clone https://github.com/OPENCYBER-FR/RustHound
cd RustHound
cargo build --release
# ou versão debug
cargo b

O resultado pode ser encontrado na pasta target/release ou target/debug.

Abaixo você encontra a metodologia de compilação para cada um dos sistemas operacionais a partir do Linux. Se precisar de outro sistema de compilação, consulte a lista neste link: https://doc.rust-lang.org/nightly/rustc/platform-support.html

Manualmente para versão estática Linux x86_64

root@kitploit:~
# Instalar rustup e Cargo no Linux
curl https://sh.rustup.rs -sSf | sh

# Adicionar dependências Linux
rustup install stable-x86_64-unknown-linux-gnu
rustup target add x86_64-unknown-linux-gnu

# Compilação estática para 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

O resultado pode ser encontrado na pasta target/x86_64-unknown-linux-gnu/release.

Manualmente para versão estática Windows a partir do Linux

root@kitploit:~
# Instalar rustup e Cargo no Linux
curl https://sh.rustup.rs -sSf | sh

# Adicionar dependências Windows
rustup install stable-x86_64-pc-windows-gnu
rustup target add x86_64-pc-windows-gnu

# Compilação estática para 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

O resultado pode ser encontrado na pasta target/x86_64-pc-windows-gnu/release.

Manualmente para versão estática macOS a partir do Linux

Documentação incrível: https://wapl.es/rust/2019/02/17/rust-cross-compile-linux-to-macos.html

root@kitploit:~
# Instalar rustup e Cargo no Linux
curl https://sh.rustup.rs -sSf | sh

# Adicionar toolchain do 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"

# O Cargo precisa ser instruído a usar o linker correto para o alvo x86_64-apple-darwin, então adicione o seguinte ao arquivo .cargo/config do seu projeto:
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

# Compilação estática para 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

O resultado pode ser encontrado na pasta target/x86_64-apple-darwin/release.

Otimizar o tamanho do binário

💡 Para obter uma compilação otimizada do RustHound, adicione os seguintes parâmetros de compilação no final do arquivo Cargo.toml.

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

O tamanho do binário será consideravelmente reduzido. Os comandos básicos do compilador cargo podem ser usados.

root@kitploit:~
make windows

Mais informações aqui

Como construir a documentação?

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

Uso

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

Options:
  -v...          Set the level of verbosity
  -h, --help     Print help information
  -V, --version  Print version information

REQUIRED VALUES:
  -d, --domain <domain>  Domain name like: DOMAIN.LOCAL

OPTIONAL VALUES:
  -u, --ldapusername <ldapusername>  LDAP username, like: [email protected]
  -p, --ldappassword <ldappassword>  LDAP password
  -f, --ldapfqdn <ldapfqdn>          Domain Controler FQDN like: DC01.DOMAIN.LOCAL or just DC01
  -i, --ldapip <ldapip>              Domain Controller IP address like: 192.168.1.10
  -P, --ldapport <ldapport>          LDAP port [default: 389]
  -n, --name-server <name-server>    Alternative IP address name server to use for DNS queries
  -o, --output <output>              Output directory where you would like to save JSON files [default: ./]

OPTIONAL FLAGS:
      --ldaps           Force LDAPS using for request like: ldaps://DOMAIN.LOCAL/
      --dns-tcp         Use TCP instead of UDP for DNS queries
      --dc-only         Collects data only from the domain controller. Will not try to retrieve CA security/configuration or check for Web Enrollment
      --old-bloodhound  For ADCS only. Output result as BloodHound data for the original BloodHound version from @BloodHoundAD without PKI support
  -z, --zip             Compress the JSON files into a zip archive

OPTIONAL MODULES:
      --fqdn-resolver  Use fqdn-resolver module to get computers IP address
      --adcs           Use ADCS module to enumerate Certificate Templates, Certificate Authorities and other configurations.
                       (For the custom-built BloodHound version from @ly4k with PKI support)

Demonstração

Os exemplos foram feitos no GOADv2 implementado por mayfly:

Uso simples

root@kitploit:~
# Linux com nome de usuário:senha
rusthound -d north.sevenkingdoms.local -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z

# Linux com nome de usuário:senha e ip ldap
rusthound -d north.sevenkingdoms.local -i 192.168.56.11 -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z

# Linux com nome de usuário:senha e ldaps
rusthound -d north.sevenkingdoms.local --ldaps -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z 
# Linux com nome de usuário:senha e ldaps e porta personalizada
rusthound -d north.sevenkingdoms.local --ldaps -P 3636 -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z 

# Dica para redirecionar e anexar tanto saída padrão quanto erro padrão a um arquivo > /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 com sessão GSSAPI
rusthound.exe -d sevenkingdoms.local --ldapfqdn kingslanding
# Windows conexão bind simples nome de usuário:senha (não use aspas simples ou duplas com cmd.exe)
rusthound.exe -d sevenkingdoms.local -u [email protected] -p _L0ngCl@w_ -o output -z

# Autenticação Kerberos (Linux)
export KRB5CCNAME="/tmp/jeor.mormont.ccache"
rusthound -d sevenkingdoms.local -f kingslanding -k -z
# Autenticação Kerberos (Windows)
rusthound.exe -d sevenkingdoms.local -f kingslanding -k -z

Módulo resolvedor de FQDN

root@kitploit:~
# Linux com nome de usuário:senha e módulo resolvedor de FQDN
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/demo --fqdn-resolver -z
# Linux com nome de usuário:senha e ldaps e módulo resolvedor de FQDN e requisição DNS TCP e servidor de nomes personalizado
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 com sessão GSSAPI e módulo resolvedor de FQDN
rusthound.exe -d essos.local -f meereen -o output --fqdn-resolver -z
# Windows conexão bind simples nome de usuário:senha e módulo resolvedor de FQDN e requisição DNS TCP e servidor de nomes personalizado (não use aspas simples ou duplas com 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 

Módulo coletor ADCS

Exemplo usando a versão do BloodHound de @ly4k.

root@kitploit:~
# Linux com nome de usuário:senha e módulo ADCS para a versão do BloodHound de @ly4k
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs -z
# Linux com nome de usuário:senha e módulo ADCS e flag dconly (não verificará web enrollment)
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs --dc-only -z

# Linux com nome de usuário:senha e módulo ADCS usando o argumento "--old-bloodhound" para a versão oficial do @BloodHoundAD
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs --old-bloodhound -z

# Windows com sessão GSSAPI e módulo ADCS
rusthound.exe -d essos.local -f meereen -o output -z --adcs
# Windows com sessão GSSAPI e módulo ADCS e requisição DNS TCP e servidor de nomes personalizado
rusthound.exe -d essos.local --ldapfqdn meereen -o output -z --adcs --tcp-dns --name-server 192.168.56.12
# Windows conexão bind simples nome de usuário:senha (não use aspas simples ou duplas com cmd.exe)
rusthound.exe -d essos.local -u [email protected] -p BurnThemAll! -o output -z --adcs --dc-only

Você pode encontrar as consultas personalizadas usadas na demonstração na pasta de recursos.

Use o seguinte comando para instalá-las:

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

🚀 Estatísticas

Para fazer estatísticas em um DC com mais objetos LDAP, execute o BadBlood no controlador de domínio ESSOS.local do GOAD. O DC deve ter agora cerca de 3500 objetos. Abaixo está o tempo médio que leva para executar as seguintes ferramentas:

🚥 Roteiro

Autenticação

  • LDAP (389)
  • LDAPS (636)
  • BIND
  • NTLM
  • Kerberos
  • Solicitar senha

Saídas

  • users.json
  • groups.json
  • computers.json
  • ous.json
  • gpos.json
  • containers.json
  • domains.json
  • cas.json
  • templates.json
  • argumentos e função para compactar arquivos JSON --zip

Módulos

  • Recuperar senha LAPS se seu usuário puder lê-la automático
  • Resolver computadores FQDN encontrados para endereço IP --fqdn-resolver
  • Recuperar certificados para exploração ESC com Certipy --adcs
  • Módulo de ataque Kerberos (ASREPROASTING e KERBEROASTING) --attack-kerberos
  • Recuperar dados de domínios confiáveis --follow-trust (Atualmente trabalhando nisso, tenho versão beta deste módulo)

BloodHound v4.2

  • Recursos de Parsing

    • Usuários & Computadores
      • HasSIDHistory
    • Usuários
      • Properties : sfupassword
  • DCERPC (dependências)

    • Computadores
      • Sessions
    • UOs & Domínios
      • LocalAdmins
      • RemoteDesktopUsers
      • DcomUsers
      • PSRemoteUsers

🔗 Links

  • Postagem no blog: 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
  • Documentação do BloodHound: https://bloodhound.readthedocs.io/en/latest/index.html
  • GOAD: https://github.com/Orange-Cyberdefense/GOAD
  • Versão do BloodHound por ly4k: https://github.com/ly4k/BloodHound
  • Certipy: https://github.com/ly4k/Certipy
Baixar ferramenta
FerramentaAmbienteObjetosTempoComando
SharpHound.exeWindows ~3500~51.605sMeasure-Command { sharphound.exe -d essos.local --ldapusername 'khal.drogo' --ldappassword 'horse' --domaincontroller '192.168.56.12' -c All }
BloodHound.pyLinux ~3500~9.657stime python3 bloodhound.py -u khal.drogo -p horse -d essos.local -ns 192.168.56.12 --zip -c all
RustHound.exeWindows ~3500~5.315sMeasure-Command { rusthound.exe -d essos.local -u [email protected] -p horse -z }
RustHoundLinux ~3500~3.166stime rusthound -d essos.local -u [email protected] -p horse -z
  • CAs
    • User Specified SAN
    • Request Disposition