
BloodHound를 위한 도구 모음으로, 도메인 비밀번호 감사, 권한 경로 분석, 에지 조작, 사용자 정의 Cypher 쿼리를 통해 Active Directory 공격 표면 매핑을 극대화합니다.
새로운 릴리스:
간단한 도구 모음:
다음 블로그에서 스크린샷 및 사용 사례와 함께 공개되었습니다: Max Release, Updates & Primitives & DPAT
연구 중에 이 도구에 새로운 잠재적 공격 프리미티브가 추가되었습니다. 자세한 내용은 add-spns 섹션을 참조하십시오.
이상적으로는 설치할 것이 거의 없어야 하지만, 만일을 대비해 requirements.txt 파일을 포함했습니다. Kali Linux 및 Windows 10에서 테스트되었으며, 모든 기능은 Linux 및 Windows 운영 체제에서 작동합니다.
pip3 install -r requirements.txt
Neo4j 자격 증명은 스크립트 시작 부분에 하드코딩하거나, CLI 인수로 제공하거나, 환경 변수로 저장할 수 있습니다. 매개변수 중 하나라도 비워두면 사용자 이름/비밀번호를 입력하라는 메시지가 표시됩니다. 환경 변수를 사용하려면, 사용자 이름이 그다지 민감하지 않으므로 ~/.bashrc 또는 ~/.zshrc에 export NEO4J_USERNAME='neo4j'와 같은 줄을 추가하는 것이 가장 쉬운 방법입니다. 데이터베이스 비밀번호는 Max를 실행하기 전에 셸 탭에서 설정할 수 있습니다. export 명령 앞에 공백을 추가하면 기록에 나타나지 않도록 할 수 있습니다.
export NEO4J_PASSWORD='bloodhound' # 'export' 앞에 공백 참고
python3 max.py {module} {args}
python3 max.py -u neo4j -p neo4j {module} {args}
python3 max.py {module} {args}
Neo4j Username: neo4j
Neo4j Password:
일반 도움말 및 모듈별 도움말 확인
python3 max.py -h
python3 max.py {module} -h
소유한 개체를 BloodHound에 가져오기
python3 max.py mark-owned -f owned.txt
python3 max.py mark-owned -f owned.txt --add-note "Owned by repeated local admin"
사용자 목록 가져오기
python3 max.py get-info --users
python3 max.py get-info --users --enabled
[email protected]
[email protected]
...
대상 그룹의 개체 목록 가져오기
python3 max.py get-info --group-members "domain [email protected]"
사용자가 관리 권한을 가진 컴퓨터 목록 가져오기
python3 max.py get-info --adminto [email protected]
각각에 대한 메모와 함께 소유한 개체 목록 가져오기
python3 max.py get-info --owned --get-note
쿼리 실행 - DA로의 경로가 있는 모든 사용자 목록 반환
python3 max.py query -q "MATCH (n:User),(m:Group {name:'DOMAIN [email protected]'}) MATCH (n)-[*1..]->(m) RETURN DISTINCT(n.name)"
데이터베이스에서 에지 삭제
python3 max.py del-edge CanRDP
BloodHound 내에 저장된 정보를 사용하거나 GetUserSPNs impacket 파일을 사용하여 HasSPNConfigured 관계 추가
python3 max.py add-spns -b
python3 max.py add-spns -i getuserspns-raw-output.txt
DPAT
python3 max.py dpat -n ~/client/ntds.dit -c ~/.hashcat/hashcat.potfile -o ouputdir --html --sanitize
Pet max
python3 max.py pet-max
파일 내 개체는 FQDN을 포함해야 하며, 대소문자는 구분하지 않습니다. 이는 CLI 사용자 이름/컴퓨터 이름이 제공될 때도 동일하게 적용됩니다.
[email protected] <- 추가됨 / 올바른 CLI 입력
[email protected] <- 추가됨 / 올바른 CLI 입력
computer01.domain.local <- 추가됨 / 올바른 CLI 입력
ComPutEr01.doMAIn.LOcaL <- 추가됨 / 올바른 CLI 입력
user02 <- 추가되지 않음 / 잘못된 CLI 입력
computer02 <- 추가되지 않음 / 잘못된 CLI 입력
analyze 함수를 포함하여 PlumHound/Cypheroth와 유사한 기능을 제공하고자 합니다. 마지막으로, Windows에서 Neo4j를 실행하는 사용자를 위해 Powershell 버전을 만들 생각이지만, Powershell을 잘 다루지 못하므로 추후 결정(TBD)입니다.
다른 기능 및 개선 사항은 언제든지 환영합니다. BloodHoundGang Slack 채널 및 Twitter에서 @knavesec를 찾아주세요.
이 도구의 개발 및 개선에 시간을 투자해 주신 분들께 특별히 감사드립니다: