John the Ripper と Hashcat を使った ZIP パスワード解析(Kali Linux)

最終更新日

Kali Linux

今回行ったのは パスワード付き ZIP ファイルの解析テスト(ブルートフォースアタック)です。

※本記事は セキュリティ学習目的の実験です。


Kali Linux には、パスワード解析ツールとして有名な John the Ripper と Hashcat が標準で用意されています。

John the Ripper の使い方を調べていると、パスワード付き ZIP ファイルの解析を試している人が多かったため、私も練習を兼ねて実際に試してみました。

ChatGPTに教えてもらったオプションの説明なども私の忘備録として記載しています。


参考にしたサイトなど


実験環境

VMware上にKali Linuxを設定

cat /etc/os-release
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
VERSION_ID="2025.4"
  • メモリ 8GB
  • CPUコア数 4つ

パスワード付きZIPファイルを作成

まずはテスト用の ZIP ファイルを作成します。

今回は解析時間が長くならないように、英数字4文字のパスワードを設定しました。

パスワードは x123 とします。

zip --encrypt Arale.zip Arale.jpg
Enter password:
Verify password:

実際に試してみると分かりますが、短いパスワードは非常に簡単に解析されてしまいます。

そのため実運用では

  • 長いパスワード
  • ランダムな文字列

を使用することが重要だと感じました。


ZIPからハッシュを抽出

ZIPファイルを直接解析するのではなく、まず ハッシュ情報を抽出します。

John the Ripper には便利なツール zip2john が付属しています。

zip2john Arale.zip > hash.txt

出力例

ver 2.0 efh 5455 efh 7875 Arale.zip/Arale.jpg PKZIP Encr: TS_chk, cmplen=101918, decmplen=101962, crc=FFD1FC8C ts=8847 cs=8847 type=8

このファイルを John the Ripper で解析します。


John the Ripper で解析

まずは John the Ripper で解析してみます。

john hash.txt

出力例

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Proceeding with single, rules:Single
Proceeding with wordlist:/usr/share/john/password.lst
Proceeding with incremental:ASCII

結果

x123 (Arale.zip/Arale.jpg)

解析時間

37秒

Hashcatで解析

次は GPU対応の高速パスワードクラッカーHashcat を使います。

Hashcatは ハッシュ形式のみを入力として受け付けるため、zip2johnの出力から不要部分を削除します。

zip2john Arale.zip | cut -d ":" -f 2 > zip.hash

Hashcat 実行

hashcat -m 17220 -a 3 -w 4 -S zip.hash

数秒で解析が完了しました。

ログを確認すると、パスワード x123 が表示されています。

$pkzip$1*1*2*0...(省略)...85cd*$/pkzip$:x123

Hashcat オプション解説

今回使用したオプションを簡単に説明します。

オプション内容
-mハッシュタイプを指定
-a攻撃モード
-wワークロードプロファイル
-S最適化モード

-m 17220

ハッシュタイプ指定です。

17220 = PKZIP (Compressed)

ZIPのパスワード解析用モードになります。


-a 3

攻撃モード指定です。

0 = 辞書攻撃
1 = コンビネーション攻撃
3 = ブルートフォース攻撃

今回は **総当たり(ブルートフォース)**を指定しています。


-w 4

Hashcatの処理負荷を指定します。

値意味
1低負荷
2デフォルト
3高負荷
4最大パフォーマンス

-w 4 は 最も高速な設定になります。


-S

最適化モードです。

処理速度を優先した設定になります。
一部の特殊ケースでは使用できないことがあります。


John the Ripper と Hashcat の違い

どちらも有名なパスワード解析ツールですが、実際には少し方向性が異なります。

ツール特徴
John the RipperCPU中心・使いやすい
HashcatGPU対応・高速

John the Ripper

特徴

  • CPUベース
  • 辞書攻撃やルールベース攻撃が得意
  • フォーマット対応が広い
  • zip2john など便利なツールが多い

とりあえず解析してみたい時に便利なツールです。


Hashcat

特徴

  • GPUを使った超高速解析
  • 大規模ブルートフォースに強い
  • ハッシュ解析専用ツール

GPUを使用すると
数十〜数百倍の速度差になることもあります。


Hashcatの攻撃モード(Attack Mode)

Hashcatでは どのような方法でパスワードを探すかを
-a オプションで指定します。

これを **攻撃モード(Attack Mode)**と呼びます。

代表的な攻撃モードは次の通りです。

モード内容
0辞書攻撃 (Dictionary Attack)
1コンビネーション攻撃
3ブルートフォース攻撃 (Brute Force)
6ハイブリッド攻撃(辞書 + 文字追加)
7ハイブリッド攻撃(文字追加 + 辞書)

0 : 辞書攻撃(Dictionary Attack)

最もよく使われる攻撃方法です。

辞書ファイルにあるパスワードを順番に試します。

例

hashcat -m 17220 -a 0 zip.hash rockyou.txt

rockyou.txt は Kali Linux に含まれている有名なパスワード辞書です。

よく使われるパスワード(例)

password
123456
qwerty
admin

のようなものをまとめたリストです。


1 : コンビネーション攻撃

2つの辞書を組み合わせてパスワードを生成します。

例

password
admin
123
2024
!

↓

password123
password2024
admin123
admin!

3 : ブルートフォース攻撃(総当たり)

すべての文字の組み合わせを試します。

今回の記事で使用したモードです。

例

hashcat -m 17220 -a 3 zip.hash

例えば

aaaa
aaab
aaac

のように 全パターンを順番に試します。

確実に見つかる方法ですが、
パスワードが長くなると 解析時間が急激に増えます。


6 : ハイブリッド攻撃(辞書 + 文字追加)

辞書に対して、後ろに文字を追加する攻撃です。

例

password

↓

password1
password123
password2024

例

hashcat -m 17220 -a 6 zip.hash rockyou.txt ?d?d

7 : ハイブリッド攻撃(文字追加 + 辞書)

モード6とは逆で、
文字を先頭に追加します。

例

123password
2024password

例

hashcat -m 17220 -a 7 zip.hash ?d?d rockyou.txt

以上になります。またお会いしましょう

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。