はじめに
この実験では、強力なオープンソースのペネトレーションテストツールである Metasploit Framework の基本概念と使い方を探っていきます。Metasploit は、様々なシステムやアプリケーションの脆弱性を特定し、悪用するための包括的なプラットフォームを提供します。この実験の目的は、Metasploit の核心コンポーネント、攻撃手法、および基本的な使用技術に慣れることです。
この実験では、強力なオープンソースのペネトレーションテストツールである Metasploit Framework の基本概念と使い方を探っていきます。Metasploit は、様々なシステムやアプリケーションの脆弱性を特定し、悪用するための包括的なプラットフォームを提供します。この実験の目的は、Metasploit の核心コンポーネント、攻撃手法、および基本的な使用技術に慣れることです。
このステップでは、Metasploit Framework とそのアーキテクチャ、核心概念について説明します。
Metasploit は、Ruby で開発された強力で広く使われているペネトレーションテストフレームワークです。モジュール、インターフェイス、プラグイン、ユーティリティ、ライブラリなど、様々なコンポーネントで構成されています。このフレームワークはモジュール化されており、コードの再利用と拡張性を可能にしています。
Metasploit Framework はいくつかの主要なモジュールに分かれています。
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 を理解し練習することで、ペネトレーションテスト、脆弱性分析、および全体的なセキュリティ評価のスキルを向上させることができます。