hashcat のいくつかの攻撃モード

hashcat には複数の攻撃モードがあります。パラメータ – ヘルプを使用して完全なヘルプを表示すると、次のように「攻撃モード」テーブルが表示されます。

#Mode
0Straight
1Combination
3Brute-force
6ハイブリッド ワードリスト + マスク
7ハイブリッド マスク + ワードリスト

1.Straight

この攻撃パターンは「辞書攻撃」とも呼ばれます。言うことはありませんが、辞書が与えられた場合、hashcat は辞書の内容を行ごとに読み取り、各行のハッシュ値を計算し、ターゲットのハッシュ値と比較します。

例:

   hashcat -a 0 -m 400  example400.hash  example.dict

2.Combination

Baidu によると、Combination は名詞で、「組み合わせ、コンソーシアム、パスワードの組み合わせ、ジャンプスーツ」を意味します。この攻撃パターンは実は簡単で、2つのパスワード辞書の内容を組み合わせることです。この攻撃モードを使用するには、2つのパスワード辞書を指定する必要があります。次の 2 つのパスワード辞書 dict1.txt と dict2.txt があるとします。その内容は次のとおりです。

  hunting
キティ
  虹

と

  パリ
  rock

コマンド:

  hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt

実際に試みた辞書は次のとおりです:

  huntingparis
ハンティングロック
キティパリ
キティロック
  レインボーパリ
  rainbowrock

dict1.txt の単語は左、dict2.txt の単語は右、合計 3×2=6 個です。

このパターンに関連するパラメータは次のとおりです:

  -j, --rule-left
  -k, --rule-right

-j の後のルールは左側に作用し、-k の後のルールは右側に作用します。パラメータ -j '$-' を追加すると、実際に試した辞書は次のとおりです:

  hunting-paris
ハンティングロック
  キティパリ
  キティロック
  レインボウパリ
  rain-bowrock

パラメータを追加 -j ‘^!’,実際に試した辞書は、

  です。ハンティングパリ
  !ハンティングロック
  !キティパリ
  !キティロック
  !レインボーパリ
  !rainbowrock

パラメータ -k ‘^>’ を追加すると、実際に試みた辞書は次のとおりです。

  hunting>paris
  岩狩り
キティ キティ パリ
キティ ロック
  雨>ボウパリ
  rain>bowrock

このルールってどんなルールなの?「$」、「^」は正規表現と似たような使い方をしているので、正規なのでしょうか?実はそうではありません。hashcat のルールは自分で実装されています。これはまた大きなコンテンツです。詳細については、Rule-based Attack

3.Brute-force

を参照してください。与えられた文字セットのさまざまな組み合わせを試します。hashcat の公式 wiki によると、この方法は時代遅れであり、完全に Mask-Attack に置き換えられているため、研究は行われません。

4. Mask Attack

これは比較的新しい攻撃方法です。例は次のとおりです。

  hashcat -a 3 -m 0 md5.hash ?l?l?l?l?l

「攻撃モード」テーブルによれば、-A 3 はブルートフォースに対応していますが、実際には、-A 3 はマスク攻撃を使用しています。マスク攻撃は高度なブルートフォースと見なすことができます。

-m パラメータはハッシュ関数のタイプを指定するために使用されます。md5.hash ファイルには md5 値が格納されます。肝心なのは最後の文字列「?l?l?l?l?l?l?l」で、このような文字列をmaskと呼びます。

マスクは、いくつかのプレースホルダからなる文字列です。「?l」はプレースホルダーであり、「?」はキーワードであり、後続の「l」を修飾するために使用されます。「?l」は、「?l」に加えて、「?u」、「?d」、「?h」、「?h」、「?s」、「?a」、「?b」の文字セットを表します。以下の表に示します。

0 – 0xff
?Charset
labcdefghijklmnopqrstuvwxyz
uabcdefghijklmnopqrstuvwxyz
d0123456789
H0123456789abcdef
H0123456789abcdef
s!"#$%&'()*+,-./:;<=>?@[\]^_`~{|}
a?l?う?d?s
b

このようにして、「?l ?l」は実際にはパスワード辞書に相当します:

aaaaa
ああああ
...
zzzzz

同様に、「?l?u?d」はパスワード辞書に相当します:

  aA0
  aA1
  ...
bA0
  ...
  zZ9

上のテーブルの文字セットは hashcat に组み込まれています。文字セットを自分で指定することもできます。

   --custom-charset1= 文字セット 1
  --custom-charset2=文字セット2
  --custom-charset3=文字セット3
  --custom-charset4=文字セット4

パラメータ –custom-charsetN は -N と略すことができ、例えば –custom-charset1 は -1 と略すことができます。-N で指定された文字のセットは、マスク内のプレースホルダ "?N" として指定されます。たとえば、

  -1 abc123 ?1?1?1

はパスワード辞書に相当します:

  aaa
  aab
  ...
  aa3
  ...
  333

-Nの後は文字集合を表す文字列のほか、文字集合が格納されている.hcchrで終わるファイルであってもよい。hashcat には、インストール パッケージの charsets/ ディレクトリにある .hcchr ファイルが多数付属しています。

プレースホルダ "??" が表す文字の集合は "?" そのものです。これに加えて、残りの文字をプレースホルダとして使用すると、文字自体を表します。たとえば、「?lwerner?d」はパスワード辞書に相当します:

  awerner0
アワーナー1
  ...
  zwerner9

以上の知識があれば、マスクを理解しやすい。マスクは複数のプレースホルダで構成され、各プレースホルダは文字セットであり、マスクはプレースホルダ文字セットの組み合わせです。プレースホルダの個数とパスワードの長さは等しい。このような設計は、単純に文字の集合とパスワードの長さを与えるよりも、どのようなメリットがあるのでしょうか。

誰かのパスワードが 7 桁あることがわかっているとします。最初の桁は大文字、次の 3 桁は小文字、最後の 3 桁は数字です。伝統的な暴力クラッキングの場合、文字セット A-Z、A-Z、0-9 が必要で、合計 62 文字で、最大 62^7=3 521 614 606 208 回の試行が必要で、兆レベルです。このパスワードをマスクで記述すると、「\u\l\l\l\d\d\d」となり、計算が簡単で、(26^4)×(10^3)=456 976 000の可能性があり、億レベルで、前の方法より4桁減少した。

一歩退いて言えば、たとえパスワードの分布が分からなくても、マスクを使えば従来の暴力クラッキングの効果を簡単にシミュレートできます。

今の問題は、マスクが固定されていることです。その中のプレースホルダーの数が死んでいます。パスワードの長さがわからない場合はどうすればよいですか。パスワードが長すぎるのはまだいいですが、もし人のパスワードが3桁しかなくて、私たちのプレースホルダーが4つあって、どうしても解けないのは損ではないでしょうか。まさか1から、それぞれの長さのマスクを一通り書くのでしょうか?それはどんなに面倒なことでしょう。

には 2 つの解決策があります。1 つは mask ファイルを使用して、1 つのファイルに複数の mask を書き込み、コマンド ラインでこのファイルを指定することです。マスクファイルは.hcmaskで終わる必要があることに注意してください。

test.hcmask の内容は次のとおりです。

  ?lさん
  ?l?lさん
  ?l?l?lさん
  ?l?l?l?l

は、次のコマンドを使用してファイルを使用します。

  hashcat -m 0 -a 3  --show md5.hash test.hcmask

もう一つの解決策は、パラメータ –increment を追加することです。このパラメータは、hashcat に指定されたマスクに従ってプレースホルダーから試し、指定された長さまで 2 つ、3 つを試します。次のようにプレースホルダ「abc」を書き、次の文字列のmd5値を計算します。

  a:0cc175b9c0f1b6a831c399e269772661
  b:92eb5ffee6ae2fec3ad71c777531578f
  c:4a8a08f09d37b73795649038408b5f33
  ab:187ef4436122d1cc2f40dc2b92f0eba0
  ac:e2075474294983e013ee4dd2201c7a73
  ba:07159c47ee1b19ae4fb9c40d480856c4
  bc:5360af35bde9ebd8f01f492dc059593c
  ca:5435c69ed3bcc5b2e4d580e393e373d3
  cb:d0d7fdb6977b26929fb68c6083c0b439
  abc:900150983cd24fb0d6963f7d28e17f72
  abc:900150983cd24fb0d6963f7d28e17f72
  bac:79ec16df80b57696a03bb364410061f3
  bca:b64eab8ce39e013604e243089c687e4f
  cba:3944b025c9ca7eec3154b44666ae04a0
  cab:16ecfd64586ec6c1ab212762c2c38a90

":" の前はハッシュ値を計算する元の文字列で、":" の後は計算された hasn 値です。上記の内容をファイル md5.hash に保存し、次のコマンドを実行します。

  hashcat -m 0 -a 3 --show --username md5.hash abc

パラメータ –username を追加するのは、各ハッシュ値の前に元の文字列があるためです。このパラメータを追加すると、hashcat は正しいハッシュ値が見つからなかったことを示します。このパラメータを追加すると、hashcat はハッシュ値の前の文字列がハッシュ値のペアのユーザー名であると判断し、ハッシュ値をスムーズにロードできます。

実行した結果、ハッシュは 1 つだけ解決されました:

  900150983cd24fb0d6963f7d28e17f72:abc

引数 –increment を追加して、もう一度実行します:

  hashcat -m 0 -a 3 --show --increment --username md5.hash abc

今回、さらに 2 つのハッシュが解けました:

  0cc175b9c0f1b6a831c399e269772661:a
  187ef4436122d1cc2f40dc2b92f0eba0:ab

–increment が役割を果たしていることがわかります。しかし同時に、このパラメータがあれば、hashcatはA、ab、abcを順番に試すだけで、プレースホルダを順番に並べて組み合わせたり、さまざまな可能性を試したりすることはないこともわかっています。

5. ハイブリッド攻撃

ハイブリッド攻撃は 2 つの辞書を組み合わせるコンビネーター攻撃と似ていますが、ハイブリッド攻撃は辞書とマスクをハイブリッド化するものです。両者はほぼ同じです。

次のような辞书 example.dict がすでにあるとします。

   こんにちは
  werner

コマンド:

  hashcat -m 0 -a 6 md5.hash example.dict ?d?d

は単に辞書を使用することに相当します:

  hello00
  はい01
  ...
  ハロー99
ヴェルナー00
ヴェルナー01
  ...
  werener99

コマンド:

  hashcat -m 0 -a 7 md5.hash ?d? dexample.dict

は単に辞书を使うことと同じです。

  00こんにちは
  01こんにちは
  ...
  99どうも
ヴェルナー
  01ヴェルナー
  ...
  99ウェレナー

前のPowerPathHashcat ソフトウェアを使用して様々なハッシュを解析する方法
次のWWNHashcat の使い方と技術共有
  • Word、Excel、PPT、PDF、RAR、ZIP、7Z、圧縮パッケージ、Office 暗号化ファイルのロック解除と復号化に焦点を当てます
  • 私たちはユーザーに高品質のファイル圧縮パッケージパスワード回復、PDFロック解除Wordパスワード回復を提供します
  • 著作権©ドキュメントパスワード回復マスターオンライン復号化プラットフォーム