Metasploit Framework の基本を学ぶ

Beginner

はじめに

この実験では、強力なオープンソースのペネトレーションテストツールである Metasploit Framework の基本概念と使い方を探っていきます。Metasploit は、様々なシステムやアプリケーションの脆弱性を特定し、悪用するための包括的なプラットフォームを提供します。この実験の目的は、Metasploit の核心コンポーネント、攻撃手法、および基本的な使用技術に慣れることです。

Metasploit Framework の理解

このステップでは、Metasploit Framework とそのアーキテクチャ、核心概念について説明します。

Metasploit は、Ruby で開発された強力で広く使われているペネトレーションテストフレームワークです。モジュール、インターフェイス、プラグイン、ユーティリティ、ライブラリなど、様々なコンポーネントで構成されています。このフレームワークはモジュール化されており、コードの再利用と拡張性を可能にしています。

Metasploit Framework はいくつかの主要なモジュールに分かれています。

  1. Exploits(エクスプロイト): これらは、ターゲットシステムの脆弱性を利用して、不正アクセスを取得したり、任意のコードを実行したりするコードモジュールです。
  2. Auxiliary(補助): このモジュールには、スキャナー、ファザー、プロトコル操作ユーティリティなど、様々なサポートツールが含まれています。
  3. Encoders(エンコーダ): これらのモジュールは、ペイロードを難読化またはエンコードして、ウイルス対策ソフトやファイアウォールなどのセキュリティメカニズムを回避するために使用されます。
  4. Payloads(ペイロード): これらのモジュールには、エクスプロイトが成功した後にターゲットシステムで実行されるコードが含まれています。
  5. Post - Exploitation(事後攻撃): これらのモジュールは、アクセスを維持し、攻撃されたシステムでさらなるアクションを実行するための機能を提供します。

Metasploit は、フレームワークとやり取りするためのいくつかのインターフェイスを提供しています。コマンドラインインターフェイス (msfconsole)、ウェブベースのインターフェイス (Metasploit Web UI)、コマンドラインインターフェイス (Metasploit Command Line) などです。

まず、実験環境を起動しましょう。デスクトップ上の xfce ターミナルをダブルクリックし、ターミナルに以下のコマンドを入力して Metasploitable2 を起動します。

sudo virsh start Metasploitable2

ターゲットマシンが起動するのを待ちます。起動には 1 - 3 分かかる場合があります。

ターゲットマシンが動作していることを確認するために ping を実行します (ping を終了するには Ctrl - C を押します)。

ping 192.168.122.102

次に、Kali コンテナを起動して bash インターフェイスに入り、ping 操作を実行してネットワーク接続を確認します。

docker run -ti --network host b5b709a49cd5 bash

ここで、ping 操作を実行してネットワーク接続を確認します (ping を終了するには Ctrl - C を押します)。

ping 192.168.122.102

これで、Metasploit コンソールを起動できます。

cd ~
msfconsole

次のステップでは、Metasploit コンソールの基本的な使い方を探り、様々なタスクを実行します。

基本的なナビゲーションとモジュールの探索

このステップでは、Metasploit コンソールのナビゲーション方法と利用可能なモジュールの探索方法を学びます。

Metasploit コンソールは、フレームワークとやり取りするためのコマンドラインインターフェイスを提供します。以下はいくつかの基本的なコマンドです。

  • help: 利用可能なコマンドのリストとその説明を表示します。
  • search [keyword]: 指定されたキーワードに基づいてモジュールを検索します。

Metasploit コンソールで Linux に関連するモジュールを検索してみましょう。

search linux

このコマンドは、Linux の脆弱性とエクスプロイトに関連するすべてのモジュールをリスト表示します。

特定のモジュールを選択するには、Metasploit コンソールで use コマンドの後にモジュールのパスを指定します。

use auxiliary/analyze/jtr_linux

モジュールが選択されたら、Metasploit コンソールで show options コマンドを使用して、そのオプションと必要なパラメータを表示できます。

show options

以下は、表示される出力の例です。

Module options (auxiliary/analyze/jtr_linux):

   Name                  Current Setting  Required  Description
   ----                  ---------------  --------  -----------
   BLOWFISH              false            no        Include BLOWFISH hashes (Very Slow)
   BSDI                  true             no        Include BSDI hashes
   CONFIG                                 no        The path to a John config file to use instead of the default
   CRACKER_PATH                           no        The absolute path to the cracker executable
   CUSTOM_WORDLIST                        no        The path to an optional custom wordlist
   DES                   true             no        Indlude DES hashes
   FORK                  1                no        Forks for John the Ripper to use
   INCREMENTAL           true             no        Run in incremental mode
   ITERATION_TIMEOUT                      no        The max-run-time for each iteration of cracking
   KORELOGIC             false            no        Apply the KoreLogic rules to John the Ripper Wordlist Mode(slower)
   MD5                   true             no        Include MD5 hashes
   MUTATE                false            no        Apply common mutations to the Wordlist (SLOW)
   POT                                    no        The path to a John POT file to use instead of the default
   SHA256                false            no        Include SHA256 hashes (Very Slow)
   SHA512                false            no        Include SHA512 hashes (Very Slow)
   USE_CREDS             true             no        Use existing credential data saved in the database
   USE_DB_INFO           true             no        Use looted database schema info to seed the wordlist
   USE_DEFAULT_WORDLIST  true             no        Use the default metasploit wordlist
   USE_HOSTNAMES         true             no        Seed the wordlist with hostnames from the workspace
   USE_ROOT_WORDS        true             no        Use the Common Root Words Wordlist
   WORDLIST              true             no        Run in wordlist mode


Auxiliary action:

   Name  Description
   ----  -----------
   john  Use John the Ripper

Ctrl+D を押して Metasploit コンソールを終了し、その後検査を開始します

モジュールオプションの設定

このステップでは、Metasploit で選択したモジュールのオプションを設定する方法を学びます。

まず、Metasploit コンソールに入っていない場合は、Metasploit コンソールを起動する必要があります。

cd ~
msfconsole

モジュールを選択します。

use auxiliary/analyze/jtr_linux

多くのモジュールは、実行する前に特定のオプションを設定する必要があります。Metasploit コンソールで set コマンドを使用し、オプション名とその値を指定することでオプションを設定できます。例えば set OPTION_NAME value のように入力します。

たとえば、Metasploit コンソールで jtr_linux モジュールの JOHN_PATH オプションを設定してみましょう。

set JOHN_PATH /usr/share/metasploit-framework/data/wordlists/password.lst

また、setg コマンドを使用すると、モジュールを切り替えても引き続き有効なグローバルオプションを設定できます。

必要なオプションを設定した後、モジュールの種類に応じて、Metasploit コンソールで run または exploit コマンドを使用してモジュールを実行できます。

run

または

exploit

親コンテキストに戻るか、現在のモジュールを終了するには、back コマンドを使用します。

Ctrl+D を押して Metasploit コンソールを終了し、その後検査を開始します

脆弱性の悪用

このステップでは、実際のシナリオをシミュレートし、ターゲットシステムの脆弱性を悪用しようと試みます。

まず、Metasploit コンソールに入っていない場合は、Metasploit コンソールを起動する必要があります。

cd ~
msfconsole

ターゲット IP アドレス 192.168.122.102 に脆弱な MySQL サーバーがあると仮定します。mysql_login モジュールを使用して、MySQL の資格情報に対するブルートフォース攻撃を試みることができます。

Metasploit コンソールで mysql_login モジュールを選択します。

use auxiliary/scanner/mysql/mysql_login

次に、Metasploit コンソールで必要なオプションを設定します。

set RHOSTS 192.168.122.102
set user_file /path/to/usernames.txt
set pass_file /path/to/passwords.txt

最後に、Metasploit コンソールでモジュールを実行します。

exploit

Metasploit は、指定されたファイルから提供されたユーザー名とパスワードの組み合わせを使用して MySQL サーバーにログインしようと試みます。ただし、ここで提供したユーザー名とパスワードは単なる例であり、ログインに失敗する可能性があります。実際のユーザー名とパスワードに置き換える必要があります。

Ctrl+D を押して Metasploit コンソールを終了し、その後検査を開始します

攻撃後のタスク

このステップでは、Metasploit で利用可能な事後攻撃モジュールについて説明します。これらのモジュールは、攻撃されたシステムへのアクセスを維持し、追加のアクションを実行するために使用できます。

脆弱性を利用してターゲットシステムにアクセスできた後、事後攻撃モジュールを使用して以下のような様々なタスクを実行できます。

  • システム情報の収集
  • 特権の昇格
  • 永続的なアクセスの維持
  • 他のシステムへのピボット攻撃

まず、Metasploit コンソールに入っていない場合は、Metasploit コンソールを起動する必要があります。

cd ~
msfconsole

事後攻撃モジュールを使用するには、Metasploit コンソールで他のモジュールタイプと同じ手順を実行します。

use post/windows/gather/enum_logged_on_users
show options

以下は、表示される出力の例です。

Module options (post/windows/gather/enum_logged_on_users):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   CURRENT  true             yes       Enumerate currently logged on users
   RECENT   true             yes       Enumerate recently logged on users
   SESSION                   yes       The session to run this module on
set SESSION 1
exploit

この例のモジュールは、Windows システムでログインしているユーザーを列挙しますが、Metasploit は様々なプラットフォームとタスクに対応した多くの他の事後攻撃モジュールを提供しています。

Ctrl+D を押して Metasploit コンソールを終了し、その後検査を開始します

まとめ

この実験では、ペネトレーションテストと脆弱性評価に強力なツールである Metasploit フレームワークを探索しました。エクスプロイト、ペイロード、補助モジュールなどの Metasploit の核心コンポーネントについて学びました。また、Metasploit コンソールのナビゲーション、モジュールの検索、オプションの設定、脆弱性を悪用するためのモジュールの実行、および事後攻撃タスクの実行を練習しました。

Metasploit は、エシカルハッカー、セキュリティ専門家、および研究者がセキュリティ脆弱性を特定し軽減するための包括的かつ汎用的なプラットフォームを提供しています。Metasploit を理解し練習することで、ペネトレーションテスト、脆弱性分析、および全体的なセキュリティ評価のスキルを向上させることができます。