hashcatはjohn the ripper(JTR)と並ぶオフラインのパスワード解析ツールです。
パスワードは多くの場合ハッシュ化されて保存されています。そのハッシュ値と、パスワード候補から計算したハッシュ値を比較して、もし同じであればそれがパスワードが判明するという理屈です。
hashcatもJTRもこの解析方法を採用しています。
Hashcatについて
基本コマンド例
辞書攻撃の場合:
hashcat -a 0 解析したいハッシュファイル 辞書ファイル
ブルートフォース攻撃の場合:
hashcat -a 3 解析したいファイル ‘マスク形式’
マスク形式については後述します
解析したいファイルが自分が今居るディレクトリと違う場合にはその場所をパス指定します。
オプションについて
-a アタックモード
どの方法で攻撃するかを指定します。
- -a 0 辞書攻撃
- -a 1コンビネーション攻撃
- -a 3 ブルートフォース攻撃
- -a 6 辞書+マスク
- -a 7 マスク+辞書
マスクについては次項で説明
マスク形式
パスワードを1文字ずつ総当たり攻撃する場合の文字の指定方法
- ?l 小文字(lower)
- ?u 大文字(upper)
- ?d 数字(digital)
- ?h 数字+小文字
- ?H 数字+大文字
- ?s 記号(simbol)
- ?a 全ての文字(all)
- >b 16進数(binary)
例:パスワードの長さが6文字と予め判明していて、その内最初の3文字がアルファベット小文字で次の3文字が数字と判明している場合、マスク形式は ‘ ?l?l?l?d?d?d ‘ となります。
ハッシュタイプ
-m 数字
ハッシュタイプを別表の数字で入力します
実行
hashcatがマッチするハッシュ方式の適当なファイルがまだ見当たりません。見つかれば実行してみます。
HashcatとJohn the ripperとの使い分け
両者はほぼ同じ機能ですが、微妙な違いがあるようです。
両者とも、
- パスワードのハッシュ値は既知であることが前提であり
- ハッシュ方式を推定し(多くはハッシュ値から判明)
- 候補文字列を片っ端からハッシュ化し
- 既知のパスワードハッシュ値と比較して
- 両者が同じであればパスワード判明
という手順は共通であり、3の段階でパスワード候補を選ぶルールに特徴(得手不得手)があるようです。
攻撃方法による違い
パスワード候補を選択する順序は、
- 辞書攻撃(あらかじめ辞書を用意し、これを順に試す方法)
- ブルートフォース攻撃(1文字ずつ変えながらの総当たり攻撃)
の大きく分けて2つありますが、
- JTRは前者が得意(jumboモードがある)
- hashcatは後者が得意(GPUの活用が容易)
対応ハッシュ方式の違い
hashcatとJTRはサポートしているハッシュ方式に違いがあります。
hashcatのサポートするハッシュ
hashcat - advanced password recovery
World's fastest and most advanced password recovery utility
JTRのサポートするハッシュ
John The Ripper Hash Formats | pentestmonkey
まとめ
パスワード解析ツール hashcatについて解説しました。
コメント