Kali Linux 密码破解实战:从字典生成到 GPU 暴力破解全流程 – Johny_Zhao

Kali Linux 密码破解实战:从字典生成到 GPU 暴力破解全流程 – Johny_Zhao


⚠️法的および倫理的声明: この記事で説明されているテクノロジは、お客様が所有しているシステム、または明示的に書面による許可を受けているシステムにのみ適用されます。個人的な実験環境、CTF コンテスト、TryHackMe/HackTheBox などの合法的な射撃場が含まれます。他人のシステム上で不正にパスワードをクラッキングすることは違法です。

1. Kali には辞書リソースが付属しています: /usr/share/wordlists/

1.1 ディレクトリ構造とコア辞書

カーリーの辞書は主に次の場所に保管されています。 /usr/share/wordlists/ 以下には、各ツールの専用辞書を指す複数のシンボリック リンクが含まれています。:

/usr/share/wordlists/
├── rockyou.txt.gz          → 最核心的密码字典(压缩状态)
├── dirb/                   → Web 目录扫描字典
├── dirbuster/              → 目录爆破字典
├── john.lst                → John the Ripper 默认字典
├── nmap.lst                → Nmap 密码字典
├── metasploit/             → Metasploit 默认凭据字典
├── seclists/               → SecLists 综合字典集
└── wfuzz/                  → 参数模糊测试字典

1.2 Rockyou.txt を解凍します (最初のステップを実行する必要があります)

RockYou 辞書は圧縮パッケージで提供されているため、使用前に解凍する必要があります。解凍後、約 1,434 万件のアイテムが含まれます実際に流出したパスワード、ファイルサイズは約134MB:

sudo gunzip /usr/share/wordlists/rockyou.txt.gz
wc -l /usr/share/wordlists/rockyou.txt

後で長さでフィルタリングする必要がある場合 (たとえば、6 桁のパスワードのみを保持する場合)、以下を使用できます。

sudo awk 'length($0) == 6' rockyou.txt > rockyou-6.txt

辞書が十分でない場合は、インストールできます seclists 拡張パック:

sudo apt install seclists
ls /usr/share/seclists/Passwords/

2. カスタム辞書の生成: Crunch + cewl + hashcat ルール

Rockyou.txt などの一般的な辞書では、「怠惰なパスワード」しかカバーできません。実際のターゲット (特にエンタープライズ環境) のパスワードは、多くの場合、組織名、場所名、年などと文脈的に非常に関連しています。ターゲットを絞った辞書を作成します。分解効率を大幅に向上させることができます。

2.1 クランチ: パターンに基づいて辞書を生成する

Crunch のコアコマンド形式は次のとおりです。 crunch <最小长度> <最大长度> <字符集>。 Kali 自身の文字セット ファイルは次の場所にあります。 /usr/share/crunch/charset.lst。

例 1: 8 ビットの純粋な数値辞書を生成する

crunch 8 8 0123456789 -o ~/digits8.txt

例 2: 組み込み文字セットを使用して 6 ビット混合辞書を生成する

crunch 6 6 -f /usr/share/crunch/charset.lst mixalpha-numeric -o ~/mix6.txt

例3:既知のパターンに基づいて生成(「会社名+4桁」など)

crunch 8 8 abcdefghijklmnopqrstuvwxyz -t @@@@@@@@ -o ~/company8.txt

-t パラメータの場合 @ プレースホルダーは場所を表し、固定構造のパスワード (PLDTWIFI ルーターのデフォルトのパスワードなど) を生成するのに適しています。 PLDTWIFI@@@@@)。

知らせ:crunch は完全な組み合わせを生成するため、辞書ファイルが非常に大きくなる可能性があります。最初に使用することをお勧めします -b 出力ファイルのサイズを制限するか、 -l 数量限定。

2.2 cewl: ターゲット Web サイトからキーワードを取得します

ターゲット Web サイトの情報がある場合は、cewl を使用してページの語彙をクロールし、基本的な辞書を生成できます。

cewl -d 2 -m 5 -w ~/cewl_words.txt 

2.3 hashcat ルール: 基本辞書の変形と拡張

Hashcat のルール エンジンは、すべてのバリエーションをディスクに保存することなく、辞書内の各単語に対して多数のバリエーション (大文字と小文字の変更、数字/記号の追加、置換など) を自動的に生成できます。効率は手動生成よりもはるかに高くなります。

Kali 独自のルール ファイルは次の場所にあります。 /usr/share/hashcat/rules/一般的に使用されるものは次のとおりです。

カスタムルールファイルを作成する:

各ルールは 1 行を占めます。c 最初の文字が大文字で残りが小文字であることを示します。$1 追加の文字を表します 1、^a 接頭辞文字を表します a。

3. Hashcat: GPU がクラッキング プロセス全体を高速化します。

3.1 環境の準備とGPUの検出

Hashcat は、Kali の apt を通じて直接インストールできます。

sudo apt update && sudo apt install -y hashcat

GPUが利用可能かどうかを確認する:

出力に GPU デバイス (NVIDIA CUDA や AMD OpenCL など) が示されている場合は、GPU アクセラレーションの準備ができています。 CPUのみが表示される場合は、対応するドライバーをインストールする必要があります。

NVIDIA GPU ドライバーのインストール:

sudo apt install nvidia-driver nvidia-cuda-toolkit

AMD GPUドライバーのインストール: Kali での AMD ドライバー構成はより複雑です。公式の AMD amdgpu-install スクリプトをダウンロードし、Kali のソフトウェア ソースに適応するように変更するか、OpenCL ランタイムをインストールする必要があります。。 GPU の検出が失敗した場合は、まず次のことを使用できます。 --force CPU モードで強制的に実行するためのパラメータ (かなり遅い):

hashcat -m 0 hash.txt rockyou.txt --force

3.2 ハッシュの準備と識別

クラックする前に、ハッシュのタイプを決定する必要があります。ハッシュキャットが使われている -m パラメータはハッシュ モードを指定します。よくあるパターンは次のとおりです。

ハッシュ ファイルを作成する場合は、1 行に 1 つのハッシュを作成しますユーザー名やその他の接頭辞は含めないでください。

echo -n "password123" | md5sum | awk '{print $1}' > ~/hash.txt
cat ~/hash.txt

Linux シャドウ ファイルの場合、最初に使用する必要があります。 unshadow passwdとshadowをマージし、ハッシュ部分を抽出します。

3.3 辞書攻撃(攻撃モード0)

辞書攻撃は、最も基本的でよく使用されるモードです。コアコマンドフォーマット:

hashcat -m <哈希模式> -a 0 <哈希文件> <字典路径>

実践例:MD5+rockyou:

hashcat -m 0 -a 0 ~/hash.txt /usr/share/wordlists/rockyou.txt

NTLM + Rockyou + ルール強化:

hashcat -m 1000 -a 0 ~/ntlm_hashes.txt /usr/share/wordlists/rockyou.txt \
  -r /usr/share/hashcat/rules/best64.rule \
  -o ~/cracked.txt

-r ルールファイルを指定し、-o クラッキング結果の出力ファイルを指定します。

3.4 マスクブルートフォースクラッキング(攻撃モード3)

マスキング攻撃は、パスワードの構造の一部 (「4 つの小文字 + 2 桁」など) がわかっている場合、ブラインド ブルート フォースよりもはるかに効率的です。

マスクプレースホルダー:

例:「小文字4文字+数字2桁」のMD5をクラックする:

hashcat -m 0 -a 3 ~/hash.txt '?l?l?l?l?d?d'

例: 使用する --increment 自動インクリメント長さ数字 1 から数字 6 まで試してください。

hashcat -m 1000 -a 3 ~/ntlm_hashes.txt '?a?a?a?a?a?a' \
  --increment --increment-min=1 --increment-max=6

これにより、大きな空間全体を一度に列挙することを避けるために、マスクが分割され、最初に 1 ビット、次に 2 ビット…6 ビットまで試行されます。。

3.5 混合攻撃 (攻撃モード 6/7)

ハイブリッド攻撃 = 辞書 + マスク。「一般的な単語 + 固定長の数値接尾辞」のパターンに適しています。

辞書 + 数値接尾辞 (モード 6):

hashcat -m 1000 -a 6 ~/ntlm_hashes.txt /usr/share/wordlists/rockyou.txt ?d?d?d?d

これにより、rockyou の各単語に 4 桁の数字が追加されます。知らせ: 完全な Rockyou には 1,400 万のエントリ、10,000 のサフィックスを掛ける = 1,400 億の候補があり、非常に長い時間がかかります。最初に簡略化された辞書を使用してテストすることをお勧めします。

head -n 10000 /usr/share/wordlists/rockyou.txt > ~/mini.txt
hashcat -m 1000 -a 6 ~/ntlm_hashes.txt ~/mini.txt ?d?d?d?d

3.6 結果の表示と管理

Hashcat はクラッキング結果をポットファイルに保存します (デフォルト) ~/.hashcat/hashcat.potfile)。クラックされたハッシュを表示します。

hashcat --show -m 0 ~/hash.txt

中断されたセッションを再開する:

ベンチマークを実行する(GPU パフォーマンスの評価):

4. ジョン・ザ・リッパー: 辞書とブルートフォースクラッキング

4.1 コアの使用法

John the Ripper (JtR) も古典的なクラッキング ツールで、Kali には Jumbo バージョン (より完全な機能を備えたバージョン) がプリインストールされています。基本的な文法:

john [选项] [哈希文件]

自動試行(単一 → ワードリスト → インクリメンタルの順):

4.2 辞書モード

基本的な辞書攻撃:

john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt

ハッシュ形式を指定する(自動認識の失敗を避けるために推奨):

辞書 + ルール:

john --wordlist=/usr/share/john/password.lst --rules unshadowed.txt

John のルール システムは、Hashcat のルールと同様に、辞書の単語に基づいて変換を生成します。 -r ルール。

4.3 ブルートフォースクラッキング(インクリメンタルモード)

ジョンの --incremental パターンは最も強力な総当たり方式であり、指定された文字セット内のすべての組み合わせを試します。:

形式の指定:

john --incremental --format=raw-sha256 hashes.txt

クラックされた結果を表示する:

4.4 Linux シャドウファイルクラッキングプロセス

Linux システムから抽出されたシャドウ ファイルは passwd とマージされ、John に渡される必要があります。

unshadow /etc/passwd /etc/shadow > ~/unshadowed.txt
john --wordlist=/usr/share/wordlists/rockyou.txt --format=sha512crypt ~/unshadowed.txt

システムが使用する場合 crypt フォーマット (古いシステム) の場合は、次のことを試してください。

john --wordlist=/usr/share/wordlists/rockyou.txt --format=crypt ~/unshadowed.txt

4.5 シングルクラックモード

シングル モードでは、ユーザー名、GECOS 情報 (フルネーム、オフィスなど) を使用して推測を生成し、弱いパスワードをすばやく試すのに適しています。

john --single --format=sha512crypt hashes.txt

ユーザー名のプレフィックスは、次の形式でハッシュ ファイルに含める必要があります。 mike:$6$...。

5. GPUアクセラレーション設定のポイント

5.1 GPUが正しく識別されていることを確認する

出力は次のようになります。

Device #1: NVIDIA GeForce RTX 3060
  Type: GPU
  Memory: 12288 MB

GPU デバイスが表示されない場合、Hashcat は CPU モードに戻り、速度の差が数十倍になる可能性があります。

5.2 パフォーマンスを向上させるための重要なパラメータ

おすすめの組み合わせ:

hashcat -m 1000 -a 0 hashes.txt rockyou.txt -O -w 3

5.3 一般的な問題のトラブルシューティング

  • OpenCLエラー: NVIDIA ユーザーはインストールする必要があります nvidia-cuda-toolkitAMD ユーザーは ROCm または OpenCL ランタイムをインストールする必要があります

  • 古いGPUのパフォーマンスには限界がある: CUDA コンピューティング機能が 5.0 未満 (Maxwell より前) の GPU パフォーマンスは大幅に低下します。

  • Kali 仮想マシンでは GPU を使用できません: 通常、VM は物理 GPU に直接アクセスできません。ホスト上で実行するか、GPU パススルーを構成することをお勧めします。

6. 完全な実践プロセスの概要

NTLM ハッシュのクラッキングを例に挙げます。

効率化に関する提案: 辞書攻撃 + ルールを優先します。辞書を使い果たした場合にのみ、ブルート フォース/マスク モードに入ります。既知の形式のパスワード (WPA の 8 桁の平文番号など) の場合、マスキング攻撃が最も効率的なオプションです。ハイブリッド攻撃 (辞書 + マスク) は、「単語 + 数値接尾辞」の一般的なパターンに当てはまりますが、辞書のサイズが合計時間に与える影響に注意してください。



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *