
AD Miner는 #Bloodhound 그래프 데이터베이스에서 데이터를 처리하여 보안 취약점을 발견하기 위해 cypher 쿼리를 활용하는 Active Directory 감사 도구입니다.
웹 기반 보고서 기능:
Active Directory 취약점에 대한 위험 기반 등급과 함께 포괄적인 완화 경로를 제공합니다.
가장 위험한 잘못된 구성을 식별하도록 신중하게 조정된 검색 창과 컨트롤입니다.
시간에 따른 지표를 관찰하여 완화 효율성을 측정하는 데 도움을 줄 수도 있습니다.
AD Miner는 Forvis Mazars가 처음 만들었으며, 현재 Grant Thornton 사이버 보안 감사 및 자문 팀이 유지 관리하고 있습니다.
AD Miner를 실행하려면 먼저 Active Directory 개체가 포함된 neo4j 데이터베이스가 필요합니다.
[!CAUTION] BloodHound Automation 사용을 강력히 권장합니다. 이 도구는 Graph Data Science Neo4j 플러그인을 설치하여 다음을 제공합니다:
- 계산 시간과 전반적인 성능을 크게 향상시킵니다.
- 기본 제공 Neo4j shortestPath() 대신 Smartest Path 사용을 활성화합니다(예: 노드 홉이 가장 적은 경로보다는 익스플로잇하기 쉬운 경로).
BloodHound 환경(GUI 및 Neo4j 데이터베이스 포함)을 설정하려면 BloodHound Automation이 Graph Data Science 플러그인과의 원활한 통합으로 인해 매우 권장됩니다. 기본 BloodHound CE 설치를 사용해도 완전히 괜찮지만, GDS의 이점(예: 더 스마트한 경로 찾기, 향상된 실행 속도 등)을 놓치게 됩니다.
기본적으로 BloodHound는 포트 7687에서 액세스 가능한 neo4j 베이스를 생성합니다.
가장 쉬운 방법은 pipx를 사용하여 다음 명령을 실행하는 것입니다:
pipx install 'git+https://github.com/AD-Security/AD_Miner.git'
ADMiner는 일부 Linux 배포판에서도 사용할 수 있습니다:
pacman -S ad-minernix-env -iA nixos.ad-minerDocker 이미지를 빌드할 수 있습니다. 다음 명령으로 이미지를 빌드하세요:
docker build -t ad-miner .
Windows에서 BloodHound Community Edition 데이터로 실행하려면 아래 명령을 사용하세요:
docker run -v ${PWD}:/tmp ad-miner AD-miner -b bolt://host.docker.internal:7687 -u neo4j -p mypassword -cf YOUR_PREFIX
Linux에서 BloodHound Community Edition 데이터로 실행하려면 아래 명령을 사용하세요:
docker run -v ${PWD}:/tmp --network host ad-miner AD-miner -b bolt://localhost:7687 -u neo4j -p mypassword -cf YOUR_PREFIX
볼륨을 -v로 마운트하는 것이 데이터 출력을 얻는 데 중요합니다. BHCE 서버가 기본 설정으로 Docker 호스트에서 실행 중이라고 가정합니다.
도구 실행:
AD-miner [-h] [-b BOLT] [-u USERNAME] [-p PASSWORD] [-e EXTRACT_DATE] [-r RENEWAL_PASSWORD] [-a] [-c] [-l LEVEL] -cf CACHE_PREFIX [-ch NB_CHUNKS] [-co NB_CORES] [--rdp] [--evolution EVOLUTION] [--cluster CLUSTER]
예시:
AD-miner -cf My_Report -u neo4j -p mypassword
각 Neo4j 요청이 완료될 때 캐시 파일이 생성됩니다. 이 기능을 사용하면 AD Miner를 프로세스 중 언제든지 일시 중지하거나 중단해도 이전에 계산된 결과를 잃지 않습니다. 캐시를 활용하려면 -c 매개변수를 사용하세요. 캐시 파일은 현재 저장소의 cache_neo4j 폴더에 저장됩니다. 캐시를 사용하려면 보고서 이름이 캐시 파일 이름 접두사와 일치해야 합니다:
AD-miner -c -cf My_Report -u neo4j -p mypassword
대규모 데이터 세트를 더 잘 처리하기 위해 멀티스레딩을 활성화하고 neo4j 데이터베이스 클러스터를 사용할 수도 있습니다. 다음 예제와 같습니다(server1이 32개 스레드, server2가 16개 스레드 처리):
AD-miner -c -cf My_Report -b bolt://server1:7687 -u neo4j -p mypassword --cluster server1:7687:32,server2:7687:16
암호 갱신 정책을 알고 있는 경우 -r 매개변수를 사용하여 암호 갱신 제어가 환경 설정과 일치하도록 지정할 수 있습니다(기본값은 90일). 예를 들어 암호 정책이 180일로 설정된 경우 다음을 사용할 수 있습니다:
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180
[!TIP] Bloodhound CE neo4j 데이터베이스의 기본 암호는
bloodhoundcommunityedition이거나, BloodHound Automation을 사용하는 경우neo5j입니다.
옵션:
-h, --help 도움말 메시지를 표시하고 종료합니다.
-b BOLT, --bolt BOLT Neo4j bolt 연결 (기본값: bolt://127.0.0.1:7687)
-u USERNAME, --username USERNAME
Neo4j 사용자 이름 (기본값: neo4j)
-p PASSWORD, --password PASSWORD
Neo4j 암호 (기본값: bloodhoundcommunityedition)
-e EXTRACT_DATE, --extract_date EXTRACT_DATE
추출 날짜 (예: 20220131). 기본값: 마지막 로그온 날짜
-r RENEWAL_PASSWORD, --renewal_password RENEWAL_PASSWORD
암호 갱신 정책(일). 기본값: 90
-c, --cache neo4j 데이터에 로컬 파일 사용
-l LEVEL, --level LEVEL
경로 쿼리의 재귀 수준
-cf CACHE_PREFIX, --cache_prefix CACHE_PREFIX
사용할 캐시 파일 (여러 회사 캐시 파일의 경우)
--gpo_low GPO에 대해 더 빠르지만 완전하지 않은 쿼리 수행 (일반 쿼리보다 빠름)
-ch NB_CHUNKS, --nb_chunks NB_CHUNKS
병렬 neo4j 요청의 청크 수. 기본값: CPU 수 * 20
-co NB_CORES, --nb_cores NB_CORES
병렬 neo4j 요청의 코어 수. 기본값: CPU 수
--rdp 그래프에 CanRDP 에지 포함
--evolution EVOLUTION
시간에 따른 진화: json 데이터 파일의 위치. 예: '../../tests/'
--cluster CLUSTER 병렬 neo4j 쿼리를 실행할 클러스터 노드. 예: host1:port1:nCore1,host2:port2:nCore2,...
그래프 페이지에서 그래프 노드를 마우스 오른쪽 버튼으로 클릭하여 클러스터링하거나 클러스터를 열 수 있습니다.
시간이 지남에 따라 여러 AD-Miner 보고서가 있는 경우 --evolution 인수를 사용하여 진화를 쉽게 추적할 수 있습니다. 각 AD-Miner 보고서는 index.html 파일과 함께 JSON 데이터 파일을 생성합니다. 이 다양한 JSON 파일을 단일 폴더에 모은 다음 --evolution 인수 뒤에 해당 폴더의 경로를 지정하기만 하면 됩니다.
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180 --evolution evolution_folder/