はじめに
この実験では、NTLM (NT LAN Manager) ハッシュをクラックする方法を学ぶことで、パスワードセキュリティの世界を深く掘り下げていきます。NTLM は、Microsoft Windows システムがユーザーパスワードを保存するために使用するハッシュアルゴリズムです。これらのハッシュがどのようにクラックされるかを理解することは、ペネトレーションテストやセキュリティ監査における基本的なスキルです。
この実験では、強力で人気のあるパスワード回復ツールである Hashcat を使用して、サンプル NTLM ハッシュに対して辞書攻撃を実行します。この実験の終わりまでに、パスワードクラッキングの基本的なプロセスを理解し、強力で複雑なパスワードを使用することの重要性を認識するでしょう。
NTLM ハッシュとは何かを理解する
このステップでは、NTLM ハッシュの基本について学びます。これらのハッシュをクラックしようとする前に、この基礎知識は非常に重要です。
NTLM (NT LAN Manager) は、Microsoft によって開発されたセキュリティプロトコルのスイートです。その主な機能の一つは、認証を処理することです。Windows システムでパスワードを設定すると、それはプレーンテキストで保存されるわけではありません。代わりに、NTLM アルゴリズムを使用してハッシュ値に変換されます。
NTLM ハッシュは 128 ビットの値であり、通常は 32 文字の 16 進数文字列として表現されます。例えば、パスワード "password" の NTLM ハッシュは 8846f7eaee8fb117ad06bdd830b7586c です。
ハッシュ化は一方向のプロセスであるため、元のパスワードを取得するために直接「アンハッシュ」することはできません。しかし、攻撃者は辞書攻撃やブルートフォース攻撃のようなテクニックを使用してパスワードを推測し、その推測値をハッシュ化してターゲットハッシュと一致するかどうかを確認することができます。これが、この実験で探求するプロセスです。
このステップで実行するコマンドはありません。次のステップに進んで、サンプルハッシュファイルを作成してください。
サンプル NTLM ハッシュファイルの作成
このステップでは、サンプルの NTLM ハッシュを含むファイルを作成します。実際のペネトレーションテストでは、まず Windows システムの Security Account Manager (SAM) データベースからこれらのハッシュを抽出する必要があります。この教育的な実験では、既知のハッシュを持つテキストファイルを単純に作成します。
すべての作業は ~/project ディレクトリで行います。まず、echo コマンドを使用して ntlm_hash.txt という名前のファイルを作成し、そこにサンプルの NTLM ハッシュを書き込みます。このハッシュは、一般的で弱いパスワードに対応するものです。
echo "8846f7eaee8fb117ad06bdd830b7586c" > ~/project/ntlm_hash.txt
次に、cat コマンドを使用してファイルの内容を表示し、ファイルが正しく作成されたことを確認します。
cat ~/project/ntlm_hash.txt
保存したハッシュが表示されるはずです。
8846f7eaee8fb117ad06bdd830b7586c
ハッシュファイルが準備できたので、クラッキングプロセスの準備に進むことができます。
NTLM 用の正しいハッシュモードを選択する
このステップでは、Hashcat で NTLM ハッシュの正しいハッシュモードを特定する方法を学びます。
Hashcat は、Web アプリケーションのパスワードハッシュからオペレーティングシステムのハッシュまで、数百種類のハッシュタイプをサポートする多機能ツールです。正しく機能させるためには、どのタイプのハッシュをクラックしようとしているのかを Hashcat に正確に伝える必要があります。これは、特定のモード番号を使用して行われます。
NTLM のモード番号は、Hashcat のヘルプメニューを検索することで見つけることができます。「NTLM」で出力をフィルタリングするために grep コマンドを使用します。
hashcat --help | grep NTLM
出力には、NTLM に関連するさまざまなハッシュタイプがリストされます。標準の NTLM のエントリを探してください。
...
1000 | NTLM | Operating System
...
出力からわかるように、NTLM のモード番号は 1000 です。次のステップで、この番号を使用して、ntlm_hash.txt ファイル内のハッシュをどのように解釈するかを Hashcat に伝えます。
NTLM ハッシュに対する辞書攻撃を実行する
このステップでは、Hashcat を使用して NTLM ハッシュに対する辞書攻撃を実行します。辞書攻撃とは、「単語リスト」または「辞書」として知られる一般的な単語やフレーズのリストを試すことでパスワードをクラックする方法です。
この実験のセットアップスクリプトは、人気のある単語リスト rockyou.txt を既に ~/project ディレクトリにダウンロードしています。次に、攻撃を開始するための Hashcat コマンドを構築します。
コマンドの構造は次のとおりです。
hashcat: プログラム名。-m 1000: 前のステップで特定した NTLM のハッシュモード。~/project/ntlm_hash.txt: ターゲットハッシュを含むファイルのパス。~/project/rockyou.txt: 単語リストのパス。--force: このオプションは、環境に関する潜在的な問題が検出された場合でも Hashcat を実行するように指示します。これは仮想化された実験環境で役立ちます。
次に、ターミナルで完全なコマンドを実行します。
hashcat -m 1000 ~/project/ntlm_hash.txt ~/project/rockyou.txt --force
Hashcat が開始されます。単語リストをロードし、ハッシュの比較を開始するため、プロセスには数分かかる場合があります。以下のような出力が表示されます。
hashcat (vX.X.X) starting...
...
Session..........: hashcat
Status...........: Running
Hash.Type........: NTLM
Hash.Target......: 8846f7eaee8fb117ad06bdd830b7586c
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (~/project/rockyou.txt)
...
Session..........: hashcat
Status...........: Cracked
...
「Status...........: Cracked」というメッセージは、Hashcat がパスワードを正常に見つけたことを示しています。
クラックされた NTLM パスワードを分析する
このステップでは、Hashcat が発見したクラックされたパスワードを表示・分析します。
Hashcat がハッシュを正常にクラックすると、結果は「potfile」(「pot of gold」の「pot」)と呼ばれるファイルに保存されます。これにより、将来同じハッシュを再クラックする必要がなくなります。このファイルのデフォルトの場所は ~/.local/share/hashcat/hashcat.potfile です。
クラックされたパスワードを確認する最も簡単な方法は、Hashcat の --show オプションを使用することです。このコマンドは、入力ファイルで提供されたハッシュに対するクラックされたパスワードを表示するように Hashcat に指示します。
次のコマンドを実行します。
hashcat -m 1000 ~/project/ntlm_hash.txt --show
Hashcat は potfile を確認し、ハッシュの結果を表示します。
8846f7eaee8fb117ad06bdd830b7586c:password
出力形式は hash:plaintext_password です。ご覧のとおり、ハッシュ 8846f7eaee8fb117ad06bdd830b7586c の元のパスワードは password です。
cat コマンドを使用して、生の potfile を直接表示することもできます。
cat ~/.local/share/hashcat/hashcat.potfile
これにより、同じ結果が表示されます。これで、NTLM ハッシュを正常にクラックし、元のパスワードを復元しました。
まとめ
この実験では、NTLM ハッシュに対する基本的なパスワードクラッキング攻撃を成功裏に実行しました。
以下のことを学びました。
- NTLM ハッシュとは何か、そして Windows システムでどのように使用されるか。
- 強力なパスワードリカバリツールである Hashcat の使い方。
- 辞書攻撃の概念と、
rockyou.txtのような単語リストの重要性。 - 正しいハッシュタイプを特定し、攻撃を開始し、クラックされたパスワードを表示するプロセス。
この演習は、弱いパスワードがどれほど容易に侵害されるかを示しています。システムやデータを不正アクセスから保護するためには、強力でユニークかつ複雑なパスワードを使用すること、そして堅牢なハッシュメカニズムを使用することの極めて重要な重要性を強調しています。


