Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
RustHound — Rust로 작성된 BloodHound Legacy용 Active Directory 데이터 수집기. 🦀 | Kitploit
도구/GitHubGitHub/nh-red-team/rusthound
ReconnaissanceInformation GatheringPenetration TestingRed Teaming
GitHubnh-red-team/rusthound

RustHound

Rust로 작성된 BloodHound Legacy용 Active Directory 데이터 수집기. 🦀

저장소 보기
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 리졸버 모듈
    • ADCS 수집기 모듈
  • 통계

  • 로드맵

  • 링크

제한사항

모든 SharpHound 기능이 구현되지는 않았습니다. 일부 기능은 RustHound에 있지만 SharpHound나 BloodHound-Python에는 없습니다. 자세한 내용은 로드맵을 참조하세요.

설명

RustHound는 Rust로 작성된 크로스 플랫폼 BloodHound 수집 도구로, Linux, Windows, macOS와 호환됩니다.

AV 탐지가 없으며 크로스 컴파일됩니다.

RustHound는 사용자, 그룹, 컴퓨터, OU, GPO, 컨테이너 및 도메인 JSON 파일을 생성하며, 이는 BloodHound로 분석할 수 있습니다.

💡 SharpHound를 사용할 수 있다면 사용하세요. SharpHound가 AV에 탐지되거나 OS와 호환되지 않는 경우 백업 솔루션으로 RustHound를 사용하세요.

컴파일 방법

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 사용

모든 종속성을 확보하기 위해 Docker로 RustHound를 사용하세요.

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

# Then
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

다음은 cargo 명령어를 사용하여 'release' 및 'debug' 버전을 컴파일하는 방법입니다.

root@kitploit:~
git clone https://github.com/OPENCYBER-FR/RustHound
cd RustHound
cargo build --release
# or debug version
cargo b

결과는 target/release 또는 target/debug 폴더에서 찾을 수 있습니다.

아래에서 Linux에서 각 OS에 대한 컴파일 방법을 확인할 수 있습니다. 다른 컴파일 시스템이 필요한 경우 이 링크의 목록을 참조하세요: https://doc.rust-lang.org/nightly/rustc/platform-support.html

Linux x86_64 정적 버전 수동 컴파일

root@kitploit:~
# Install rustup and Cargo for Linux
curl https://sh.rustup.rs -sSf | sh

# Add Linux deps
rustup install stable-x86_64-unknown-linux-gnu
rustup target add x86_64-unknown-linux-gnu

# Static compilation for 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:~
# Install rustup and Cargo in Linux
curl https://sh.rustup.rs -sSf | sh

# Add Windows deps
rustup install stable-x86_64-pc-windows-gnu
rustup target add x86_64-pc-windows-gnu

# Static compilation for 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:~
# Install rustup and Cargo in Linux
curl https://sh.rustup.rs -sSf | sh

# Add macOS tool chain
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 needs to be told to use the correct linker for the x86_64-apple-darwin target, so add the following to your project’s .cargo/config file:
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

# Static compilation for 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...          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)

필수 값: -d, --domain 도메인 이름 (예: DOMAIN.LOCAL)

선택 값: -u, --ldapusername LDAP 사용자 이름 (예: [email protected]) -p, --ldappassword LDAP 비밀번호 -f, --ldapfqdn 도메인 컨트롤러 FQDN (예: DC01.DOMAIN.LOCAL 또는 DC01) -i, --ldapip 도메인 컨트롤러 IP 주소 (예: 192.168.1.10) -P, --ldapport LDAP 포트 [기본값: 389] -n, --name-server DNS 쿼리에 사용할 대체 IP 주소 네임 서버 -o, --output JSON 파일을 저장할 출력 디렉터리 [기본값: ./]

선택 플래그: --ldaps 요청에 LDAPS 강제 사용 (예: ldaps://DOMAIN.LOCAL/) --dns-tcp DNS 쿼리에 TCP 사용 (UDP 대신) --dc-only 도메인 컨트롤러에서만 데이터 수집. CA 보안/구성 검색 또는 웹 등록 확인을 시도하지 않음 --old-bloodhound ADCS 전용. PKI 지원이 없는 @BloodHoundAD의 원래 BloodHound 버전에 대한 BloodHound 데이터로 결과 출력 -z, --zip JSON 파일을 zip 아카이브로 압축

선택 모듈: --fqdn-resolver fqdn-resolver 모듈을 사용하여 컴퓨터 IP 주소 가져오기 --adcs 인증서 템플릿, 인증 기관 및 기타 구성을 열거하는 ADCS 모듈 사용 (PKI 지원이 있는 @ly4k의 사용자 정의 BloodHound 버전용)

데모

예제는 mayfly가 구현한 GOADv2에서 수행되었습니다.

간단한 사용법

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

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

# Linux with username:password and ldaps
rusthound -d north.sevenkingdoms.local --ldaps -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z 
# Linux with username:password and ldaps and custom port
rusthound -d north.sevenkingdoms.local --ldaps -P 3636 -u '[email protected]' -p '_L0ngCl@w_' -o /tmp/demo -z 

# Tips to redirect and append both standard output and standard error to a file > /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 with GSSAPI session
rusthound.exe -d sevenkingdoms.local --ldapfqdn kingslanding
# Windows simple bind connection username:password (do not use single or double quotes with cmd.exe)
rusthound.exe -d sevenkingdoms.local -u [email protected] -p _L0ngCl@w_ -o output -z

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

FQDN 리졸버 모듈

root@kitploit:~
# Linux with username:password and FQDN resolver module
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/demo --fqdn-resolver -z
# Linux with username:password and ldaps and FQDN resolver module and TCP DNS request and custom name server
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 with GSSAPI session and FQDN resolver module
rusthound.exe -d essos.local -f meereen -o output --fqdn-resolver -z
# Windows simple bind connection username:password and FQDN resolver module and TCP DNS request and custom name server (do not use single or double quotes with 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 with username:password and ADCS module for @ly4k BloodHound version
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs -z
# Linux with username:password and ADCS module and dconly flag (will don't check webenrollment)
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs --dc-only -z

# Linux with username:password and ADCS module using "--old-bloodhound" argument for official @BloodHoundAd version
rusthound -d essos.local -u '[email protected]' -p 'BurnThemAll!' -o /tmp/adcs --adcs --old-bloodhound -z

# Windows with GSSAPI session and ADCS module
rusthound.exe -d essos.local -f meereen -o output -z --adcs
# Windows with GSSAPI session and ADCS module and TCP DNS request and custom name server
rusthound.exe -d essos.local --ldapfqdn meereen -o output -z --adcs --tcp-dns --name-server 192.168.56.12
# Windows simple bind connection username:password (do not use single or double quotes with cmd.exe)
rusthound.exe -d essos.local -u [email protected] -p BurnThemAll! -o output -z --adcs --dc-only

데모에서 사용된 사용자 정의 쿼리는 resource 폴더에서 찾을 수 있습니다.

다음 명령어로 설치하세요:

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

🚀 통계

더 많은 LDAP 객체가 있는 DC에서 통계를 내기 위해 GOAD의 도메인 컨트롤러 ESSOS.local에서 BadBlood를 실행하세요. DC에는 약 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
  • Certipy를 사용한 ESC 악용을 위한 인증서 검색 --adcs
  • Kerberos 공격 모듈 (ASREPROASTING 및 KERBEROASTING) --attack-kerberos
  • 신뢰할 수 있는 도메인에서 데이터 검색 --follow-trust (현재 작업 중, 이 모듈의 베타 버전 있음)

BloodHound v4.2

  • Parsing Features

    • Users & Computers
      • HasSIDHistory
    • Users
      • Properties : sfupassword
  • DCERPC (종속성)

    • Computers
      • Sessions
    • OUs & Domains
      • 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
  • ly4k BloodHound 버전: https://github.com/ly4k/BloodHound
  • Certipy: https://github.com/ly4k/Certipy
도구 다운로드
도구환경객체시간명령어
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