グラフィックボードを使ってパスワードの解読を行う (hashcat)

hashcat ソフトウェア

hashcatは高速かつ高度なパスワード回復ツールです。同じく定番のJohn the Ripperは、PKZIPの解読にOpenCLが対応していなかったので、今回hashcatでグラフィックボードを利用して解読します。

実行環境

OSWindows11 23H2
グラフィックボードNVIDIA GeForce RTX 3060 12GB
CUDA Toolkit11.8.0
hashcatv6.2.4

GPUドライバの要件

  • Linux上のAMD GPUにはAMDGPU(21.50 以降)およびROCm(5.0以降)が必要
  • Windows上のAMD GPUにはAMD Adrenalin Edition(22.5.1以降)が必要
  • Intel CPUにはOpenCL Runtime for Intel Core and Intel Xeon Processors(16.1.1以降)が必要
  • NVIDIA GPUにはNVIDIA Driver(440.64 以降)およびCUDA Toolkit(9.0以降)が必要

今回はNVIDIAグラフィックボードを使用します。CUDA ToolkitをインストールすることでOpenCLよりも高速に解読できます。

ダウンロード

リンク先のページ下部にあるhashcat binaries v6.2.4をダウンロードして解凍してください。v6.2.5以上はバグにより、32KBを超えるPKZIPのハッシュデータの解読に失敗します。

ハッシュファイルの編集

ハッシュ値の抽出にはJohn the Ripperから行います。使い方は以下の記事をご覧ください。

zip2johnで抽出したハッシュファイルを編集します。

ハッシュファイル編集

$PKZIP$$PKZIP$までがハッシュ値になります。hashcatでは、前後の部分は不要なので削除して保存してください。

実行

 コマンドプロンプトでhashcatフォルダを開きます。

今回は次のように指定しました。オプションについては以下に記載してあるので確認してください。

hashcat -m 17200 -a 3 -w 3 ファイル名.hash ?a?a?a?a?a?a
hashcat終了

発見するとハッシュ値の後ろにパスワードが表示されます。これらはhashcat.potfileに保存されるので後からも確認できます。

ハッシュモードについて

-m xxxx ハッシュモードを指定する必要があります。

Hash-ModeHash-Nameファイルの中身
13600WinZip
17200PKZIP (Compressed)単一の圧縮ファイル
17210PKZIP (Uncompressed)単一の非圧縮ファイル
17220PKZIP (Compressed Multi-File)複数の圧縮ファイル
17225PKZIP (Mixed Multi-File)圧縮・非圧縮ファイルが混在

PKZIPはファイルの中身によってモードが複数あります。解読できなかったらほかのモードを試したりしてください。その他のハッシュ値については以下のリンクを確認してください。

コアアタックモード

-a 3 ブルートーフォースアタック(総当たり攻撃)でのクラッキング方法になります。

ワークロードプロファイル

-w 3 計算負荷を調整する設定になります。1から4で設定でき、数字が大きいほど負荷が高いが計算が高速になります。

マスクの指定

マスクは以下を組み合わせて桁数やルールを指定します。

  • ?l abcdefghijklmnopqrstuvwxyz
  • ?u ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • ?d 0123456789
  • ?s «space»!”#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  • ?a ?l?u?d?s

以下にマスクの指定方法の例をいくつか紹介します。詳しくは以下のリンクを確認してください。

  • ?a?a?a?a?a?a (英字小文字、英字大文字、数字、記号)6桁
  • Apple?d?d?d?d ワード (Apple) + (数字)4桁
  • -1 ?l?u?d ?1?1?1?1?1?1 (英字小文字、英字大文字、数字)6桁

ドライバーのタイムアウト

以下のようなエラーが出る場合の修正方法です。

* Device #1: WARNING! Kernel exec timeout is not disabled.
             This may cause "CL_OUT_OF_RESOURCES" or related errors.
             To disable the timeout, see: https://hashcat.net/q/timeoutpatch

メモ帳などで次の内容をコピーペーストしてwddm_timeout_patch.regというファイルを作成します。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers]
"TdrLevel"=dword:00000000
レジストリ編集
  1. コマンドプロンプトを管理者権限で起動
  2. 作成したレジストリファイルのパスを張り付けて実行
  3. システムを再起動
タイトルとURLをコピーしました