
A Python 기반 BloodHound 인제스터
저는 Kerberos 지원이 포함된 BloodHound가 필요했고 이 댓글을 발견했습니다. Kerberos 인증을 지원하는 브랜치가 처음부터 존재했다는 것이 밝혀졌습니다! 이 브랜치를 master에 병합하여 멋진 BloodHound 4.2+ 내보내기 결과물을 얻었습니다. 모든 공로는 실제로 코드를 작성한 사람들에게 있습니다:)
Dirkjan 본인이 말했듯이 이 기능은 "더 많은 작업과 테스트가 필요합니다". 모든 경우에 작동하지 않을 수 있으므로 문제가 발생하면 보고해 주시면 함께 고쳐나갈 수 있습니다. 언젠가 이 내용을 메인 저장소에 PR로 제출할 수 있기를 바랍니다.
$ python3 /opt/BloodHound.py/bloodhound.py -u redacted -k -d absolute.htb -dc dc.absolute.htb -ns 10.129.202.227 --dns-tcp --zip -no-pass -c All
INFO: Found AD domain: absolute.htb
INFO: Using TGT from cache
INFO: Found TGT with correct principal in ccache file.
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 18 users
INFO: Found 55 groups
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: dc.absolute.htb
INFO: Ignoring host dc.absolute.htb since its reported name does not match
INFO: Done in 00M 02S
INFO: Compressing output into 20220926135518_bloodhound.zip
DNS 오류가 발생하면 dnschef를 실행하는 동안 DNS를 자신(-ns 127.0.0.1)으로 지정해 볼 수 있습니다:
python3 dnschef.py --fakeip <dc ip> --fakedomains <domain> -q
BloodHound.py는 BloodHound용 Python 기반 인제스터(ingestor)로, Impacket을 기반으로 합니다.
이 버전의 BloodHound.py는 BloodHound 4.2 이상에서만 호환됩니다. 3.x 버전대는 pypi에서 1.1.1 버전을 사용하세요. 버전 1.3부터 BloodHound.py는 Python 3만 지원하며, Python 2는 더 이상 테스트되지 않으며 향후 작동하지 않을 수 있습니다.
현재 BloodHound.py에는 다음과 같은 제한 사항이 있습니다:
pip install bloodhound로 인제스터를 설치하거나, 이 저장소를 클론한 뒤 python setup.py install을 실행하거나, pip install .을 사용할 수 있습니다.
BloodHound.py가 작동하려면 impacket, ldap3, dnspython이 필요합니다.
설치가 완료되면 bloodhound-python이라는 명령줄 도구가 PATH에 추가됩니다.
인제스터를 사용하려면 최소한 로그인하려는 도메인의 자격 증명이 필요합니다.
-u 옵션에는 이 도메인의 사용자 이름(또는 트러스트된 도메인의 사용자는 username@domain)을 지정해야 합니다. DNS가 올바르게 설정되어 있고 AD 도메인이 DNS 검색 목록에 있다면 BloodHound.py가 자동으로 도메인을 감지합니다. 그렇지 않다면 -d 옵션으로 수동으로 지정해야 합니다.
기본적으로 BloodHound.py는 LDAP와 도메인의 개별 컴퓨터를 쿼리하여 사용자, 컴퓨터, 그룹, 트러스트, 세션 및 로컬 관리자를 열거합니다.
수집을 제한하려면 --collectionmethod 매개변수를 지정하세요. 다음 옵션을 지원합니다(SharpHound와 유사):
여러 수집 방법은 쉼표로 구분해야 합니다. 예: -c Group,LocalAdmin
자동 감지 옵션 중 일부를 재정의할 수 있습니다. 예를 들어 기본 도메인 컨트롤러 대신 다른 도메인 컨트롤러를 사용하려면 -dc로 호스트 이름을 지정하거나, 자체 글로벌 카탈로그를 지정하려면 -gc를 사용합니다.
docker build -t bloodhound .docker run -v ${PWD}:/bloodhound-data -it bloodhoundbloodhound-python을 실행할 수 있습니다. 모든 데이터는 컨테이너를 시작한 경로에 저장됩니다.