
NTLMハッシュ、BloodHoundデータ、クラックされたパスワードを関連付け、Active Directoryの侵入テストを支援します。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パラメータはリート文字空間を示し、1 はリートなし、3 は最大のリートを意味します。
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
まずすべてのハッシュをテキストファイルに抽出します。
# NTLM ハッシュをファイルに抽出
nowsmore --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