
BloodHound를 확장하여 macOS 호스트에서 Active Directory 관계를 수집 및 처리하고, 로그인된 사용자, 관리자 그룹, SSH/VNC/AppleEvent 접근 에지를 공격 경로 매핑에 포함합니다.
MacHound는 Bloodhound 감사 도구의 확장으로, MacOS 호스트에서 Active Directory 관계를 수집하고 주입하는 기능을 제공합니다. MacHound는 Mac 시스템에 로그인한 사용자와 관리 그룹 구성원에 대한 정보를 수집하여 Bloodhound 데이터베이스에 주입합니다. HasSession 및 AdminTo 에지 외에도 MacHound는 Bloodhound 데이터베이스에 세 가지 새로운 에지를 추가합니다:
MacHound에 대한 자세한 내용은 소개 게시물을 참조하세요.
MacHound는 utmpx API를 사용하여 현재 활성 사용자를 쿼리하고 OpenDirectory 및 멤버십 API를 사용하여 Active Directory 사용자를 검증합니다.
MacHound는 다음 로컬 관리 그룹의 Active Directory 멤버를 수집합니다:
로컬 관리 그룹으로, 루트 작업을 허용합니다.
이 로컬 그룹의 멤버는 원격 로그인 서비스(SSH)에 접근할 수 있습니다.
이 로컬 그룹의 멤버는 AppleEvent 스크립트를 원격으로 실행할 수 있습니다.
이 로컬 그룹의 멤버는 화면 공유 서비스(VNC)에 접근할 수 있습니다.
MacHound는 수집기와 주입기 두 가지 주요 구성 요소로 나뉩니다.
MacHound 수집기는 Active Directory에 가입된 MacOS 호스트에서 로컬로 실행되는 Python3.7 스크립트입니다. 수집기는 로컬 OpenDirectory와 Active Directory에서 권한 있는 사용자 및 그룹에 대한 정보를 쿼리합니다. 실행 결과는 수집된 모든 정보를 포함하는 JSON 파일입니다.
MacHound 주입기는 출력 JSON 파일(호스트당 하나)을 파싱하고 neo4j 데이터베이스에 연결하여 에지를 데이터베이스에 삽입하는 Python3.7 스크립트입니다. 주입기는 Python용 neo4j 라이브러리를 사용하여 neo4j 데이터베이스에 정보를 쿼리하고 저장합니다. 주입기는 neo4j 데이터베이스에 TCP 접근이 가능한 호스트에서 실행되어야 합니다.
MacHound는 Python3.7이 필요합니다. 주입기는 Python3.7용 neo4j 라이브러리가 필요합니다.
수집기는 Mac에서 로컬로 배포 및 실행되어야 합니다. 출력은 로컬에 저장되며 주입기를 실행 중인 호스트로 전송해야 합니다. 수집기는 Python3.7의 내장 라이브러리에 의존하며 추가 설치가 필요하지 않습니다. MacHound는 py2app 라이브러리를 사용하여 애플리케이션으로 컴파일하여 배포를 용이하게 할 수 있습니다.
수집기는 기본적으로 모든 정보를 쿼리하며 인수를 받지 않고 출력 파일을 ./output.json에 기록합니다. 수집기는 루트 사용자로 실행되어야 합니다.
collector.py -o <output_file> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l log_file_path]
주입기는 Bloodhound의 neo4j 데이터베이스에 직접 TCP 연결이 가능한 호스트(가급적 보안 위험을 피하기 위해 neo4j 데이터베이스 서버 자체)에 배포되어야 합니다. 주입기에는 Python용 neo4j 드라이버 설치가 필요합니다(요구 사항 파일 참조).
ingestor.py <url_to_neo4j> -u <username> -p <password> -i <json_folder>
MacHound는 GPL-3.0 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE.md를 참조하세요.
질문, 제안, 버그 보고가 있으시면 [email protected]으로 언제든지 연락해 주세요.