はじめに
サイバーセキュリティやデジタルフォレンジックの分野では、暗号学的ハッシュに遭遇することがよくあります。ハッシュとは、任意のデータブロックに適用された一方向の数学的関数の結果として生成される、固定サイズのバイト列です。パスワードハッシュをクラックしようとする前に、まず MD5、SHA-1、NTLM など、それを作成するために使用されたアルゴリズムを特定する必要があります。
この実験では、未知のハッシュタイプを特定するという不可欠なスキルを習得します。Linux で利用可能な一般的なコマンドラインツールを使用して、例示的なハッシュのリストを分析し、対応するアルゴリズムを特定します。これは、パスワードクラッキング活動における重要な最初のステップです。
様々なハッシュのリストを収集する
このステップでは、いくつかの異なる種類のハッシュを含むテキストファイルを作成します。このファイルは、後続のステップで識別ツールへの入力として使用されます。各ハッシュアルゴリズムは、特定の長さと文字セットを持つハッシュを生成し、識別ツールはこれによってそれらを区別します。
まず、Here Document (<<EOF) を使用した cat コマンドで、~/project ディレクトリに hashes.txt という名前のファイルを作成します。このファイルには、一般的な 3 つのハッシュタイプである MD5、SHA-1、NTLM が含まれます。
ターミナルで以下のコマンドを実行してください。
cat << EOF > hashes.txt
d41d8cd98f00b204e9800998ecf8427e
da39a3ee5e6b4b0d3255bfef95601890afd80709
32ed87bd5fdc5e204e2620a05a069858
EOF
ファイルを作成した後、cat コマンドを再度使用してその内容を確認できます。
cat hashes.txt
以下の出力が表示され、3 つのハッシュがファイルに保存されたことを確認できます。
d41d8cd98f00b204e9800998ecf8427e
da39a3ee5e6b4b0d3255bfef95601890afd80709
32ed87bd5fdc5e204e2620a05a069858
これでハッシュのリストが準備できました。識別を開始する準備が整いました。
Kali の hashid ツールを使用する
このステップでは、hashes.txt ファイルに保存したハッシュを分析するために hashid ツールを使用します。hashid は、ハッシュの長さと文字構成を分析して異なるハッシュタイプを識別するコマンドラインユーティリティです。ハッシュ分析の初期段階において、シンプルでありながら強力なツールです。
hashid を使用するには、ハッシュを含むファイルを引数として渡すだけです。ツールはファイルの各行を処理し、その行のハッシュを識別しようとします。
hashes.txt ファイルに対して hashid を実行します。
hashid hashes.txt
ツールは各ハッシュを分析し、その結果をターミナルに出力します。出力にはハッシュ文字列が表示され、その後に可能なハッシュアルゴリズムのリストが表示されます。
--File 'hashes.txt'--
d41d8cd98f00b204e9800998ecf8427e
[+] MD5
[+] Domain Cached Credentials (DCC)
da39a3ee5e6b4b0d3255bfef95601890afd80709
[+] SHA-1
[+] RipeMD-160
32ed87bd5fdc5e204e2620a05a069858
[+] NTLM
[+] MD4
[+] MD5
--End of file 'hashes.txt'--
ご覧のとおり、hashid は各ハッシュに対して 1 つ以上の可能性のある一致を提供します。次のステップでは、この出力を解釈する方法を学びます。
hashid の出力を分析する
このステップでは、hashid の出力を解釈する方法を学びます。このツールは可能性のあるリストを提供しますが、正しいハッシュタイプを絞り込むためには、コンテキストやさらなる分析を使用する必要があることがよくあります。
前のステップからの出力を分析しましょう。
- 最初のハッシュ (
d41d8cd98f00b204e9800998ecf8427e) について、hashidは MD5 と Domain Cached Credentials (DCC) を示唆しています。MD5 はこの形式のハッシュで最も一般的なタイプです。 - 2 番目のハッシュ (
da39a3ee5e6b4b0d3255bfef95601890afd80709) については、SHA-1 と RipeMD-160 が提案されています。SHA-1 は非常に一般的な選択肢です。 - 3 番目のハッシュ (
32ed87bd5fdc5e204e2620a05a069858) について、hashidは NTLM、MD4、MD5 をリストアップしています。Windows 環境では、NTLM は非常に可能性の高い候補です。
hashid は、パスワードクラッキングツールである Hashcat で使用される対応するモードコードを表示することもできます。これを行うには、-m フラグの後に単一のハッシュを指定します。最初のハッシュの Hashcat モードを確認してみましょう。
hashid -m d41d8cd98f00b204e9800998ecf8427e
出力には、各可能なハッシュタイプの Hashcat モード番号が含まれるようになります。
--Hash 'd41d8cd98f00b204e9800998ecf8427e'--
[+] MD5 [HC: 0]
[+] Domain Cached Credentials (DCC) [HC: 1100]
これにより、Hashcat では MD5 がモード -m 0 に対応していることがわかります。この情報は、クラッキングセッションを設定するために不可欠です。
オンラインハッシュアナライザーツールをセカンドオピニオンとして使用する
このステップでは、別のコマンドラインツールである hash-identifier を使用して、ハッシュタイプのセカンドオピニオンを取得します。あらゆる分析において、異なるツールは異なるデータベースやアルゴリズムを持っている可能性があるため、複数のツールを使用して調査結果を確認することは良い習慣です。
hash-identifier はインタラクティブな Python スクリプトです。コマンドを実行すると、識別したいハッシュを入力するようにプロンプトが表示されます。
まず、ターミナルにツールの名前を入力して起動します。
hash-identifier
ハッシュを求めるプロンプトが表示されます。
#########################################################################
## __ __ __ __ _ _ _ #
## / / / /___ ____ ___ ___ / /_ _______/ /_ (_)_________| | / / #
## / /_/ / __ \/ __ `__ \/ _ \/ __ \/ ___/ __ \/ / / ___/ ___/ |/ / #
## / __ / /_/ / / / / / / __/ /_/ / /__/ / / / / / /__/ / / /| / #
## /_/ /_/\____/_/ /_/ /_/\___/_.___/\___/_/ /_/_/_/\___/_/ /_/ |_/ #
## #
## by c0decracker #
#########################################################################
HASH:
次に、hashes.txt ファイルからハッシュのいずれか(例:2 番目のハッシュ da39a3ee5e6b4b0d3255bfef95601890afd80709)をコピーし、プロンプトに貼り付けて Enter を押します。
ツールはハッシュを分析し、その結論を提供します。
HASH: da39a3ee5e6b4b0d3255bfef95601890afd80709
Possible Hashs:
[+] SHA-1
[+] RipeMD-160
Least Possible Hashs:
この出力は、ハッシュが最も可能性が高いのは SHA-1 であるという hashid の調査結果を確認します。Ctrl+C を押すと hash-identifier ツールを終了できます。
特定されたハッシュタイプと Hashcat の -m コードを照合する
この最終ステップでは、世界最速のパスワードリカバリツールである Hashcat で使用する正しいモード (-m) コードを見つける方法を学びます。hashid -m はこの情報を提供できますが、Hashcat の広範なヘルプメニューから直接見つけることもできます。これは、モードを確認したり、あまり一般的でないハッシュタイプのコードを見つけたりするのに役立ちます。
Hashcat では、-m フラグを使用して数値コードでハッシュタイプを指定する必要があります。正しいコードを見つけるには、grep を使用して Hashcat のヘルプ出力を検索できます。
MD5 のモードを見つけましょう。次のコマンドを実行します。
hashcat --help | grep "MD5"
出力は、MD5 に関連するすべてのモードの長いリストになります。プレーンな MD5 エントリを探してください。
...
0 | MD5 | Raw Hash
...
ご覧のとおり、標準の MD5 ハッシュのモードは 0 です。
次に、SHA-1 についても同様に行います。
hashcat --help | grep "SHA-1"
...
100 | SHA-1 | Raw Hash
...
SHA-1 のモードは 100 です。
最後に、NTLM のモードを見つけましょう。
hashcat --help | grep "NTLM"
...
1000 | NTLM | Raw Hash
...
NTLM のモードは 1000 です。ハッシュタイプとその対応する Hashcat モードを正しく特定することで、パスワードクラッキング攻撃を設定する準備が整いました。
まとめ
この実験では、パスワードクラッキングの重要な前提条件である、未知のハッシュタイプの識別という基本的なプロセスを学びました。まず、さまざまなハッシュ例を含むファイルを作成しました。次に、強力なコマンドラインツールである hashid と hash-identifier を使用してこれらのハッシュを分析し、それらの可能性のあるアルゴリズムを特定しました。最後に、特定されたハッシュタイプと Hashcat の広範なモードリストを照合して、クラッキングセッションに必要な正しい -m コードを見つける方法を学びました。このスキルは、ペネトレーションテストやデジタルフォレンジックに関わるあらゆるサイバーセキュリティ専門家にとって不可欠です。


