Meterpreter の hashdump コマンドでパスワードハッシュをダンプする

Kali LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、最も一般的なポストエクスプロイテーション技術の一つである、侵害された Windows ターゲットからパスワードハッシュをダンプする方法を学びます。具体的には、Metasploit の Meterpreter ペイロードで利用可能なhashdumpコマンドを使用します。これらのハッシュは、取得後にオフラインでクラックすることでユーザーパスワードを明らかにし、ネットワーク内でのさらなる権限昇格やラテラルムーブメントを可能にします。

この教育的な演習では、シミュレートされた Metasploit Framework 環境内で作業を行います。これにより、複雑な被害者/攻撃者ネットワークをセットアップすることなく、正確なコマンドとワークフローを学ぶことができます。シミュレートされた Windows マシン上で、事前に確立された Meterpreter セッションから開始します。

あなたの目標は以下の通りです。

  • アクティブな Meterpreter セッションにアクセスする。
  • hashdumpコマンドを使用してパスワードハッシュを抽出する。
  • ダンプされたハッシュの構造を理解する。
  • 将来の使用のためにハッシュをファイルに保存する。

SYSTEM 権限を持つ Meterpreter セッションを取得する

このステップでは、シミュレートされた Metasploit コンソールを開始し、事前に存在する Meterpreter セッションと対話します。実際のシナリオでは、このセッションを取得するには、ターゲットマシン上の脆弱性を悪用する必要があります。この実験では、セッションはあなたのために準備されています。

まず、セットアップスクリプトによって作成されたシミュレーションディレクトリに移動します。

cd ~/project/metasploit-simulation

次に、msfconsoleスクリプトを実行して、シミュレートされた Metasploit コンソールを開始します。

./msfconsole

ようこそバナーとmsf6 >プロンプトが表示されるはずです。これは、Metasploit のメインコンソールにいることを示しています。アクティブなセッションを表示するには、-l(リスト)フラグを付けてsessionsコマンドを使用します。

sessions -l

以下の出力が表示され、ID が 1 のアクティブなセッションが 1 つ表示されます。

Active sessions
===============

  Id  Name  Type                     Information                  Connection
  --  ----  ----                     -----------                  ----------
  1         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ WIN-PC  10.0.2.15:4444 -> 10.0.2.16:49152

出力は、Windows システムで最高の権限レベルであるNT AUTHORITY\SYSTEMとして実行されているmeterpreterセッションを持っていることを示しています。これはハッシュのダンプに不可欠です。

次に、その ID を使用してこのセッションと対話します。

sessions -i 1

プロンプトがmsf6 >からmeterpreter >に変更され、ターゲットマシン上の Meterpreter セッション内にいることが確認されます。

必要に応じて priv 標準 API 拡張をロードする

このステップでは、priv拡張をロードします。この Meterpreter 拡張は、権限昇格や、パスワードハッシュが保存されている Security Account Manager (SAM) データベースなどのオペレーティングシステムの機密部分へのアクセス用のコマンドを提供します。

多くの最新の Meterpreter ペイロードは、コマンドが呼び出されたときに必要な拡張を自動的にロードしますが、手動でロードする方法を知っておくことは良い習慣です。これにより、必要な機能が確実に利用できるようになります。

meterpreter >プロンプト内で、priv拡張をロードするために次のコマンドを入力します。

load priv

シミュレーターは、拡張が正常にロードされたことを確認します。

[+] Loading extension priv...
[+] Loaded extension: priv

priv拡張がロードされたことで、hashdumpのようなコマンドにアクセスできるようになりました。

hashdump ポストエクスプロイトモジュールを実行する

このステップでは、hashdumpコマンドを実行します。このコマンドは、priv拡張をロードした主な理由です。これは、システムのメモリから直接 SAM データベースを読み取ることで機能し、ディスク上の保護をバイパスします。これは、セッションがSYSTEM権限で実行されているため可能です。

Meterpreter プロンプトに入り、priv拡張をロードしたので、hashdumpコマンドを実行するだけです。

hashdump

コマンドが実行され、ユーザー名とその対応するパスワードハッシュのリストが画面に表示されます。

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
labex-user:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

シミュレートされた Windows マシンからパスワードハッシュを正常に抽出しました。次のステップでは、この出力の構造を分析します。

SAM データベースからダンプされた NTLM ハッシュを観察する

このステップでは、hashdumpコマンドの出力を解釈する方法を学びます。この形式を理解することは、収集したハッシュをどう扱うかを知る上で不可欠です。

前のステップで生成した出力から 1 行を見てみましょう。

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

この文字列はコロンで区切られており、いくつかのフィールドがあります。

  1. ユーザー名 (Username): Administrator

    • これはユーザーアカウント名です。
  2. 相対識別子 (Relative Identifier - RID): 500

    • これはドメイン内のアカウントの一意の ID です。RID 500は常にデフォルトの管理者アカウントです。
  3. LM ハッシュ (LM Hash): aad3b435b51404eeaad3b435b51404ee

    • これは古い LAN Manager 認証プロトコル用のハッシュです。最新の Windows システムでは、ここで見られるように、これはしばしば空白または「null」ハッシュです。この特定の値は、LM ハッシュが保存されていないことを示します。
  4. NTLM ハッシュ (NTLM Hash): 31d6cfe0d16ae931b73c59d7e0c089c0

    • これは NT LAN Manager ハッシュであり、すべての最新バージョンの Windows で使用されています。これは、John the Ripper や Hashcat のようなオフラインパスワードクラッキングツールで使用するハッシュです。
  5. コメントとホームディレクトリ (Comment and Home Directory): :::

    • これらの最後の 3 つのフィールドは通常空であり、クラッキングには使用されません。

この出力を観察することで、アクティブなユーザーアカウント、そして最も重要なのは、それらのパスワードを非可逆形式で表す NTLM ハッシュを特定できます。

オフラインクラッキングのためにハッシュをファイルに保存する

この最終ステップでは、収集したハッシュをテキストファイルに保存します。侵害されたシステムからの証拠や戦利品を、後で分析および使用するために保存することは標準的なプラクティスです。ハッシュをファイルに保存すると、パスワードクラッキングソフトウェアに簡単に読み込ませることができます。

まず、シミュレートされたmsfconsole環境を終了して、通常の Linux シェルに戻る必要があります。meterpreter >プロンプトでexitと入力してmsf6 >プロンプトに戻り、再度exitと入力します。

exit

これでmeterpreter >プロンプトに戻るはずです。シミュレーションを終了するには、もう一度exitと入力します。

exit

これで~/project/metasploit-simulationディレクトリに戻るはずです。

次に、nanoテキストエディタを使用してhashes.txtという名前の新しいファイルを作成します。

nano hashes.txt

次に、ターミナルからハッシュの出力をコピーします(ステップ 3 のhashdumpコマンドの出力)。それをnanoエディタに貼り付けます。内容は次のようになります。

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
labex-user:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

Ctrl+Xを押してnanoを終了し、次にYを押して変更を保存することを確認し、最後にEnterを押してファイル名を確認します。

ファイルが正しく保存されたことを確認するには、catコマンドでその内容を表示できます。

cat hashes.txt

パスワードハッシュをファイルに正常に保存し、オフラインクラッキングの準備ができました。

まとめ

この実験では、シミュレートされた Meterpreter セッションを使用して、古典的なポストエクスプロイテーション技術を成功裏に実行しました。

以下の方法を学びました。

  • Metasploit Framework コンソールでのセッションのナビゲーションと操作。
  • privのような Meterpreter 拡張機能をロードして、追加の機能を取得する方法。
  • Windows ターゲットから NTLM パスワードハッシュを抽出するためにhashdumpコマンドを実行する方法。
  • ダンプされたハッシュのフォーマットを理解し、ユーザー名、RID、NTLM ハッシュを特定する方法。
  • パスワードクラッキングツールでオフライン使用するために、収集したハッシュをファイルに保存する方法。

このスキルは、ネットワーク全体でのアクセス拡大に必要な鍵を提供することが多いため、ペネトレーションテストの基本的な部分です。