はじめに
Hashcat は強力で人気のあるパスワードリカバリツールです。非常に大きなハッシュリストを扱う場合、クラッキングセッションには時間がかかり、中断される可能性があります。このような状況では、どのハッシュがすでにクラックされたか、そしてどのハッシュが残っているかを知ることが重要です。
この実験では、2 つの重要な hashcat フラグ、--show と --left の使い方を学びます。--show フラグは、すでに正常にクラックされたパスワードを表示するために使用され、--left フラグは、まだクラックされていないハッシュのみを表示します。これにより、パスワードクラッキングタスクを効率的に管理できます。
大規模ハッシュリストに対する攻撃の開始
このステップでは、hashcat を使用した標準的な辞書攻撃を開始します。~/project ディレクトリには、MD5 ハッシュのリストを含む hashes.txt と、潜在的なパスワードの小さな辞書である wordlist.txt の 2 つのファイルが用意されています。
hashcat 攻撃の基本的なコマンド構造は hashcat -m <モード> <ハッシュファイル> <単語リストファイル> です。ハッシュが MD5 であることを指定するために -m 0 を使用します。
攻撃を開始するには、ターミナルで以下のコマンドを実行してください。
hashcat -m 0 hashes.txt wordlist.txt
Hashcat が起動し、バックエンドを初期化して、クラッキングプロセスを開始します。リアルタイムで更新されるステータス画面が表示されます。数秒間実行させてください。
hashcat (v6.2.6) starting
...
Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: ... H/s (0.01ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 3/5 (60.00%) Digests
Progress.........: 5/5 (100.00%)
Rejected.........: 0/5 (0.00%)
Restore.Point....: 5/5 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: password -> admin
Hardware.Mon.#1..: Temp: 46c
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
攻撃の途中で停止する
このステップでは、クラッキングプロセスが完全に完了する前に、中断をシミュレートするか、停止する必要がある状況を再現します。Hashcat は、進行状況を保存して後で再開したり、結果を確認したりできるように、正常に終了させることができます。
ターミナルで hashcat のステータス画面がアクティブな間に、キーボードの q キーを押すだけで終了できます。
q
q を押すと、hashcat はセッションを停止し、コマンドプロンプトに戻ります。クラックされたすべてのパスワードは、作業ディレクトリ内の hashcat.potfile という名前のファイルに自動的に保存されます。このファイルは次のステップで重要になります。
Session hashcat stopping.
--show フラグを使用して既にクラックされたハッシュを表示する
セッションが停止したので、これまでに正常に復元されたパスワードを確認したい場合があります。ここで --show フラグが役立ちます。これは、入力ハッシュファイルを hashcat.potfile と照合し、一致するものを表示します。
ターミナルで、同じハッシュファイルに対して hashcat コマンドを再度実行しますが、今回は --show フラグを追加します。
hashcat -m 0 hashes.txt --show
出力には、クラックされた各ハッシュと、それに対応するプレーンテキストパスワードがコロンで区切られてリスト表示されます。
5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
e9a71b642151421421257419a0a23d89:sunshine
これにより、5 つのハッシュのうち 3 つが単語リストを使用して正常にクラックされたことが確認できます。
--left フラグを使用して未クラックのハッシュを表示する
クラックされたものを確認することが有用であるのと同様に、残っているものを確認することも同様に重要です。--left フラグは --show とは逆の動作をします。これは、入力ハッシュファイルを hashcat.potfile と比較し、まだクラックされていないハッシュのみを表示します。
残りのハッシュを確認するには、--left フラグを指定して hashcat コマンドを実行します。
hashcat -m 0 hashes.txt --left
出力は、hashes.txt のうち、まだ hashcat.potfile に含まれていないハッシュのリストになります。
2c7e3378803a5b054952514139821a79
b8d3c555434b89a01af1654b26d30609
これらは、私たちの wordlist.txt ではクラックできなかった 2 つのハッシュです。
未クラックのハッシュのみを含む新しいファイルを作成する
一般的なワークフローとして、残りの未クラックのハッシュを新しいファイルに保存することがあります。これにより、既にクラックしたハッシュに時間を浪費することなく、将来の攻撃で別の単語リストや別の攻撃モードを使用して、それらを特定的にターゲットにすることができます。
これは、--left コマンドの出力を新しいファイルにリダイレクトすることで簡単に実行できます。ここでは uncracked.txt という名前にしましょう。
hashcat -m 0 hashes.txt --left > uncracked.txt
このコマンドは、出力がファイルにリダイレクトされているため、ターミナルに何も出力しません。それが機能したことを確認するには、cat コマンドを使用して新しいファイルの内容を表示できます。
cat uncracked.txt
これで、次のクラッキング試行の準備ができた 2 つの未クラックのハッシュが表示されるはずです。
2c7e3378803a5b054952514139821a79
b8d3c555434b89a01af1654b26d30609
まとめ
この実験では、hashcat を使用したパスワードクラッキングセッション中にハッシュリストを管理およびフィルタリングする方法を学びました。
攻撃を開始し、その後停止するという、一般的な実世界のシナリオをシミュレートしました。次に、--show フラグを使用して正常にクラックされたパスワードを表示し、--left フラグを使用してクラックされなかったハッシュを分離しました。最後に、これらの残りのハッシュを将来の攻撃のために新しいファイルに保存する実践的なテクニックを学びました。
--show と --left をマスターすることは、特に大規模なタスクを扱う場合に、効率的なパスワードリカバリワークフローに不可欠です。


