セキュリティ

hashcatの使い方

最新版のダウンロード

≫hashcat.net

リカバリ済みハッシュ

リカバリに成功したハッシュとパスワードは「hashcat.potfile」に記録されている。

ハッシュファイルを指定してリカバリ済みのものを確認する事もできる。

user@computer$ hashcat --show hash.txt

hash.txtの中からリカバリ済みのハッシュとパスワードが表示される。

リカバリできていないハッシュを表示するためには「–left」オプションを使う。

user@computer$ hashcat --left hash.txt

リカバリ済みハッシュを自動的に削除する

リカバリに成功したハッシュをハッシュファイルから削除するためには「–remove」オプションを使う。

user@computer$ hashcat --remove -m 1500 -a 0 hash.txt wordlist.txt

マスク

定義

定義 意味
?l アルファベット小文字 abcdefghijklmnopqrstuvwxyz
?u アルファベット大文字 ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d 数字 0123456789
?s 記号 !”#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a ?l?u?d?sと同じ
?b 16進数 0x00 – 0xff

マスクは定義の組み合わせで指定する。
マスク指定の際にシングルクォートが必要かどうかはOSによって異なります。Unix系OSでは 「?」 をエスケープするためにシングルクォートが必要ですが、Windowsの場合はシングルクォートを文字列として扱ってしまう事があるため注意が必要です。

アルファベット小文字 7文字 + 数字1桁ならば次のように指定する。

‘?l?l?l?l?l?l?l?d’

アルファベット大文字/小文字 + 数字はどのようにすればいいのか?そのような場合はカスタムマスクの定義を行う。カスタムマスクは4つまで定義できる。
カスタムマスクは次のように定義する。

-1 ‘?l?u’

これでカスタムマスク(1)が定義される。

定義したマスクは「?1」のように指定する(-2 で定義すれば ?2)

user@computer$ hashcat -m 1500 -a 3 hash.txt -1 '?l?u' '?1?1?1?1?1?1?1?d'

increment

マスクの長さを指定したい場合に使う。

たとえば ?d?d?d?d とすると数字4桁に限定されてしまう。数字を1桁ずつ増やしたい場合は次のようにする。

user@computer$ hashcat -m 1500 -a 3 hash.txt --increment '?d?d?d?d'

桁数を限定する事もできる。2桁~4桁にしたければ次のようにする。

user@computer$ hashcat -m 1500 -a 3 hash.txt --increment --increment-min 2 --increment-max 4 '?d?d?d?d'

もちろん、数字だけでなくアルファベットや記号でも同様の指定ができる。7~8桁のすべての組み合わせを試したければ次のようにする。

user@computer$ hashcat -m 1500 -a 3 hash.txt --increment --increment-min 7 --increment-max 8 '?a?a?a?a?a?a?a?a'

ルールの適用

予め用意されているルールファイル、あるいは自作のルールファイルを適用する事ができる。

ルールファイルは「rules」ディレクトリに収められているので、次のように適用する。

user@computer$ hashcat -m 1500 -a 0 hash.txt wordlist.txt -r rules/best64.rule

アタックモード

オプション モード 説明
0 Straight 辞書攻撃
1 Combination 辞書同士の組み合わせ
3 Brute-force ブルートフォース
6 Hybrid Wordlist + Mask 辞書+マスク
7 Hybrid Mask + Wordlist マスク+辞書

辞書攻撃( -a 0 )

指定した辞書ファイル(ワードリスト)を使ってパスワードのリカバリを試みる。

user@computer$ hashcat -m 1500 -a 0 hash.txt wordlist.txt

辞書同士の組み合わせ( -a 1 )

2つの辞書を組み合わせて単語を生成する。

user@computer$ hashcat -m 1500 -a 1 hash.txt wordilst-1.txt wordlist-2.txt

wordlist-1.txtとwordlist-2.txtが次のような内容だった場合

  • yamada
  • saito
  • taro
  • hanako

次のような単語が生成される

  • yamadataro
  • yamadahanako
  • saitotaro
  • saitohanako

それぞれの辞書にルールを適用する事もできる。-j で1番目の辞書、-k で2番目の辞書にルールを適用する。単語は「$」になる。たとえば単語同士を「-」でつなぎたい場合は次のようにする

user@computer$ hashcat -m 1500 -a 1 -j '$-' hash.txt wordilst-1.txt wordlist-2.txt

シングルクォートが必要かどうかはOSによって異なります。Unix系OSでは $ をエスケープするためにシングルクォートが必要ですが、Windowsの場合はシングルクォートを文字列として扱ってしまう事があるため注意が必要です。
次のような単語が生成される

  • yamada-taro
  • yamada-hanako
  • saito-taro
  • saito-hanako

更に2番目の辞書にルールを適用したければ -k を使う。最後に感嘆符(!)を付けたければ次のようにする

user@computer$ hashcat -m 1500 -a 1 -j '$-' -k '$!' hash.txt wordilst-1.txt wordlist-2.txt

次のような単語が生成される

  • yamada-taro!
  • yamada-hanako!
  • saito-taro!
  • saito-hanako!

ブルートフォース( -a 3 )

一部のハッシュフォーマットを除いてブルートフォースでは現実的な時間でリカバリできないので、これは最終手段となる。ブルートフォースではマスクと組み合わせて単語のパターンを限定した方が現実的な時間でリカバリできる確率が上がる。

アルファベット小文字 7文字+数字1桁とするならば次のようにする。

user@computer$ hashcat -m 1500 -a 3 hash.txt '?l?l?l?l?l?l?l?d'

辞書+マスク( -a 6 )

辞書ファイルの各単語に対してマスクを適用する。

wordlist.txtが次のような内容だった場合

  • yamada

単語の後ろに数字4桁を付けたい場合は次のようにする

user@computer$ hashcat -m 1500 -a 6 hash.txt '?d?d?d?d'

次のような単語が生成される

  • yamda0000
  • yamada9999

マスク+辞書( -a 7 )

辞書ファイルの各単語に対してマスクを適用する。

wordlist.txtが次のような内容だった場合

  • yamada

単語の前に数字4桁を付けたい場合は次のようにする

user@computer$ hashcat -m 1500 -a 7 hash.txt '?d?d?d?d'

次のような単語が生成される

  • 0000yamda
  • 9999yamada

ハッシュフォーマット

最新の情報は公式サイトで確認する必要がある。

≫最新のハッシュフォーマット