
Active Directory 침투 테스트를 위해 NTLM 해시, BloodHound 데이터, 크랙된 비밀번호를 상호 연관시킵니다. NTDS.dit을 가져오고 Neo4j에 동기화하며 비밀번호 품질을 분석하고 맞춤형 단어 목록을 생성합니다.
KnowsMore는 공식적으로 Python 3.8+를 지원합니다.
knowsmore.py --word-list -o wl.txt --batch --name companyname
knowsmore.py --word-list -o wl.txt --batch --name companyname -l 1
참고:
-l매개변수는 leet 문자 공간을 나타내며, 1은 leet 없음, 3은 최대 leet 사용 가능을 의미합니다.
knowsmore --stats
이 명령은 아래 출력과 같이 비밀번호에 대한 여러 통계를 생성합니다.
KnowsMore v0.1.4 by Helvio Junior
Active Directory, BloodHound, NTDS hashes and Password Cracks correlation tool
https://github.com/helviojunior/knowsmore
[+] Startup parameters
command line: knowsmore --stats
module: stats
database file: knowsmore.db
[+] start time 2023-01-11 03:59:20
[?] General Statistics
+-------+----------------+-------+
| top | description | qty |
|-------+----------------+-------|
| 1 | Total Users | 95369 |
| 2 | Unique Hashes | 74299 |
| 3 | Cracked Hashes | 23177 |
| 4 | Cracked Users | 35078 |
+-------+----------------+-------+
[?] General Top 10 passwords
+-------+-------------+-------+
| top | password | qty |
|-------+-------------+-------|
| 1 | password | 1111 |
| 2 | 123456 | 824 |
| 3 | 123456789 | 815 |
| 4 | guest | 553 |
| 5 | qwerty | 329 |
| 6 | 12345678 | 277 |
| 7 | 111111 | 268 |
| 8 | 12345 | 202 |
| 9 | secret | 170 |
| 10 | sec4us | 165 |
+-------+-------------+-------+
[?] Top 10 weak passwords by company name similarity
+-------+--------------+---------+----------------------+-------+
| top | password | score | company_similarity | qty |
|-------+--------------+---------+----------------------+-------|
| 1 | company123 | 7024 | 80 | 1111 |
| 2 | Company123 | 5209 | 80 | 824 |
| 3 | company | 3674 | 100 | 553 |
| 4 | Company@10 | 2080 | 80 | 329 |
| 5 | company10 | 1722 | 86 | 268 |
| 6 | Company@2022 | 1242 | 71 | 202 |
| 7 | Company@2024 | 1015 | 71 | 165 |
| 8 | Company2022 | 978 | 75 | 157 |
| 9 | Company10 | 745 | 86 | 116 |
| 10 | Company21 | 707 | 86 | 110 |
+-------+--------------+---------+----------------------+-------+
pipx는 KnowsMore를 격리된 가상 환경에 설치하여 시스템 패키지와의 충돌을 방지합니다. Kali Linux 및 기타 외부 관리 Python 환경(PEP 668)에서 권장되는 방법입니다.
# pipx 설치 (아직 없는 경우)
python3 -m pip install --user pipx
# pipx로 설치된 앱이 PATH에 있는지 확인
python3 -m pipx ensurepath
# KnowsMore 설치
pipx install knowsmore
# 최신 버전으로 업그레이드
pipx upgrade knowsmore
참고: pipx ensurepath 실행 후 새 터미널을 열거나 source ~/.bashrc / source ~/.zshrc를 실행해야 knowsmore 명령어를 사용할 수 있습니다.
참고: Python 3.12+에서는 setuptools/pkg_resources 모듈이 기본적으로 번들로 제공되지 않습니다. No module named 'pkg_resources' 오류가 발생하면 KnowsMore 환경에 setuptools를 주입하세요:
pipx inject knowsmore setuptools
pip3 install --upgrade knowsmore
참고: 종속성 버전 문제가 발생하는 경우 가상 환경 파일 확인
데이터를 가져오는 순서는 강제되지 않지만, 더 나은 상관 데이터를 얻기 위해 다음 실행 흐름을 제안합니다:
모든 데이터는 SQLite 데이터베이스에 저장됩니다.
knowsmore --create-db
전체 BloodHound 파일을 KnowsMore로 가져와 데이터를 상호 연관시키고 Neo4J BloodHound 데이터베이스에 동기화할 수 있습니다. 따라서 '매우 느린 BloodHound 사용자 인터페이스' 대신 KnowsMore만 사용하여 JSON 파일을 Neo4j 데이터베이스에 직접 가져올 수 있습니다.
# Bloodhound ZIP 파일
knowsmore --bloodhound --import-data ~/Desktop/client.zip
# Bloodhound JSON 파일
knowsmore --bloodhound --import-data ~/Desktop/20220912105336_users.json
참고: KnowsMore는 BloodHound ZIP 파일과 JSON 파일을 모두 가져올 수 있지만, ZIP 파일 사용을 권장합니다. KnowsMore가 자동으로 파일 순서를 정리하여 데이터 상관 관계를 더 잘 수행합니다.
# Bloodhound ZIP 파일
knowsmore --bloodhound --sync 10.10.10.10:7687 -d neo4j -u neo4j -p 12345678
참고: KnowsMore의 BloodHound 임포터 구현은 Fox-It BloodHound Import 구현에서 영감을 받았습니다. 모든 데이터를 KnowsMore SQLite 데이터베이스에 저장한 후 Neo4J 데이터베이스에 증분 동기화하는 여러 변경 사항을 구현했습니다. 이 전략을 통해 원래 BloodHound 사용자 인터페이스보다 최소 10배 이상 빠른 성능 등 여러 이점이 있습니다.
참고: NTDS.dit 및 SYSTEM 레지스트리에서 해시와 일반 텍스트 비밀번호를 직접 가져옵니다.
knowsmore --secrets-dump -target LOCAL -ntds ~/Desktop/ntds.dit -system ~/Desktop/SYSTEM
참고: 먼저 아래 명령어로 secretsdump를 사용하여 ntds 해시를 추출합니다.
secretsdump.py -ntds ntds.dit -system system.reg -hashes lmhash:ntlmhash LOCAL -outputfile ~/Desktop/client_name
그 후 가져오기:
knowsmore --ntlm-hash --import-ntds ~/Desktop/client_name.ntds
knowsmore --word-list -o "~/Desktop/Wordlist/my_custom_wordlist.txt" --batch --name company_name
먼저 모든 해시를 txt 파일로 추출합니다.
# NTLM 해시를 파일로 추출
knowsmore --ntlm-hash --export-hashes "~/Desktop/ntlm_hash.txt"
# 또는 NTDS 파일에서 NTLM 해시 추출
cat ~/Desktop/client_name.ntds | cut -d ':' -f4 > ntlm_hashes.txt
해시를 크랙하기 위해 일반적으로 아래 명령어로 hashcat을 사용합니다.
# 단어 목록 공격
hashcat -m 1000 -a 0 -O -o "~/Desktop/cracked.txt" --remove "~/Desktop/ntlm_hash.txt" "~/Desktop/Wordlist/*"
# 마스크 공격
hashcat -m 1000 -a 3 -O --increment --increment-min 4 -o "~/Desktop/cracked.txt" --remove "~/Desktop/ntlm_hash.txt" ?a?a?a?a?a?a?a?a
knowsmore --ntlm-hash --company clientCompanyName --import-cracked ~/Desktop/cracked.txt
참고: clientCompanyName을 회사 이름으로 변경하세요.
비밀번호와 해당 해시는 매우 민감한 데이터이므로, 일반 텍스트 비밀번호와 해당 해시를 대체하는 모듈이 있습니다.
참고: 이 명령은 생성된 모든 통계와 가져온 사용자 데이터를 유지합니다.
knowsmore --wipe
평가 중에 여러 방법으로 사용자 비밀번호를 찾을 수 있습니다. 이를 Knowsmore 데이터베이스에 추가할 수 있습니다.
knowsmore --user-pass --username administrator --password Sec4US@2023
# 또는 회사 이름 추가
knowsmore --user-pass --username administrator --password Sec4US@2023 --company sec4us
크랙된 모든 자격 증명을 Neo4j Bloodhound 데이터베이스에 통합합니다.
knowsmore --bloodhound --mark-owned 10.10.10.10 -d neo4j -u neo4j -p 123456
원격 연결을 위해 Neo4j 데이터베이스 서버가 원격 연결을 허용하는지 확인하십시오. 구성 파일 /etc/neo4j/neo4j.conf에서 아래 줄을 변경하고 서비스를 다시 시작하십시오.
server.bolt.listen_address=0.0.0.0:7687