Kali LinuxにおけるMetasploitの初心者向けガイド(実践例付き)
Metasploitの基本インターフェースとモジュールについて学び、これらを使用してMetasploitable 2のMySQL脆弱性を悪用する方法を学びます。
Kali Linuxはペネトレーションテストに必要なすべてのツールがあらかじめ装備されています。その中の1つのツールがMetasploitフレームワークで、これによりレッドチームはすべての種類のアプリケーション、ネットワーク、サーバー、オペレーティングシステム、プラットフォームに対して偵察、スキャン、列挙、脆弱性の悪用を行うことができます。
Metasploitの主要な機能は、事前および事後の侵入テスト作業に焦点を当てていますが、エクスプロイト開発や脆弱性研究にも役立ちます。
この記事では、Metasploitフレームワークの主な構成要素を紹介します。Metasploitable 2として知られるマシン上にホストされた脆弱なMySQLデータベースへのスキャン、列挙、および悪用のためにMetasploitモジュールを使用する方法を示します。
Metasploitインターフェースとそのモジュール
Metasploitは、Kali Linuxにプリインストールされている最も一般的に使用されるペンテストツールです。Metasploitの主なコンポーネントはmsfconsoleと、それが提供するモジュールです。
msfconsoleとは何ですか?
msfconsole は、Metasploitのすべての機能にアクセスできる最も一般的に使用されるシェルのようなオールインワンインターフェースです。コマンドの自動補完、タブ補完、およびその他のbashショートカットを提供するため、Linuxのようなコマンドラインサポートがあります。
これは、ターゲットマシンのスキャンと攻撃を実行するためにMetasploitモジュールで作業することを可能にする主要なインターフェースです。
メタスプロイトモジュール
Metasploitには、その主要な機能を可能にする小さなコードスニペットがあります。ですが、モジュールを説明する前に、以下の繰り返される概念について明確にしておく必要があります。
- 脆弱性:それは、標的の設計またはコードの欠陥であり、悪用されて機密情報の漏洩を引き起こす可能性があります。
- エクスプロイト: 発見された脆弱性を悪用するコード。
- ペイロード: これは脆弱性を利用する目標を達成するのに役立つコードです。ターゲットシステム内で実行され、ターゲットデータにアクセスします。例えば、Meterpreterやリバースシェルを介してアクセスを維持することができます。
これからMetasploitの5つの主要モジュールに進みます:
- 補助的なもの: 補助モジュールには、情報収集やターゲットシステムの深い理解を得るためのファジングプログラム、スキャナー、SQLインジェクションツールなどのセットが含まれています。
- エンコーダー: エンコーダーは、ペイロードやエクスプロイトを暗号化して、署名ベースのウイルス対策ソリューションから保護します。ペイロードやエクスプロイトにはヌルまたは無効な文字が含まれているため、ウイルス対策ソリューションによって検出される可能性が高いです。
- エクスプロイト: 前に説明したように、エクスプロイトとは、ターゲットの脆弱性を利用してペイロードを介してシステムへのアクセスを確保するコードです。
- ペイロード: 前に述べたように、ペイロードはターゲットシステムへの攻撃の目的を達成するのに役立ちます。つまり、インタラクティブなシェルを取得するのを助けるか、バックドアを維持し、コマンドを実行したり、マルウェアをロードしたりします。Metasploitは2種類のペイロードを提供しています:ステージレスペイロードとステージペイロード。
- ポスト: ポストエクスプロイトモジュールは、システムに関するさらなる情報を収集するのに役立ちます。たとえば、パスワードハッシュをダンプし、横移動や権限昇格のためのユーザー資格情報を探すのに役立ちます。
各モジュールとそのカテゴリを表示するには、以下のコマンドを使用できます:
cd /usr/share/metasploit-framework/modules
ls
tree -L 1 module-name/Metasploitのインターフェースの使い方:msfconsole
Metasploitインターフェースを使用するには、Kali Linuxのターミナルを開いてmsfconsoleと入力します。
デフォルトでは、msfconsoleはバナーを表示して開きます。それを取り除いて静かなモードでインターフェースを起動するには、msfconsoleコマンドに-qフラグを付けて使用します。
インターフェースはLinuxのコマンドラインシェルのように見えます。サポートされているLinuxのBashコマンドには、ls、clear、grep、history、jobs、kill、cd、exitなどがあります。
help または疑問符 "?" を入力すると、msfconsole内で使用できるすべての利用可能なコマンドの一覧が表示されます。この文書で使用する最も重要ないくつかのコマンドは次のとおりです:
コマンド | 説明 |
|---|---|
検索 | 指定されたプロトコル/アプリケーション/パラメータに基づいてMetasploitデータベースを検索することができます。 |
使う | 特定のモジュールを選択できるようにし、文脈をモジュール固有のコマンドに変更します。 |
情報 | 選択されたモジュールに関する情報を提供します |
ショー |
指定されたモジュール名および現在のモジュールに関するオプションの情報を表示します。 |
チェックする | ターゲットシステムに脆弱性があるかどうかを確認します |
セット | それは現在のモジュールのオプションを設定する文脈特有の変数です。 |
未設定 | 以前に設定されたパラメーターを削除します |
走る | 現在のモジュールを実行します |
開始する前に、PostgreSQLサーバーを起動して、次のようにmsfconsoleデータベースを初期化することで、Metasploitデータベースをセットアップします。
systemctl start postgresql
msfdb init今、msfconsoleを初期化してdb_statusコマンドを実行することでデータベースのステータスを確認してください。
Metasploitを使用したMySQLの脆弱性の悪用
デモンストレーション用に、オープンソースの脆弱なLinuxマシンMetasploitable2をセットアップします。
msfconsoleを使用したMySQL偵察
最初にMetasploitableマシンのIPアドレスを見つけてください。それから、Nmapフラグを使用して、msfconsoleのdb_nmapコマンドで3306ポートのMySQLデータベースをスキャンしてください。
db_nmap -sV -sC -p 3306 <metasploitable_ip_address>MySQLデータベースのポート番号を確認するには、通常のnmap -p- <metasploitable_ip_address>コマンドを実行できます。
検索オプションを使用して、MySQLデータベースをスキャンおよび列挙する補助モジュールを探します。
search type:auxiliary mysql上記のリストから、auxiliary/scanner/mysql/mysql_versionモジュールを使用するには、モジュール名または関連番号を入力してMySQLのバージョン詳細をスキャンします。
use 11または :
use auxiliary/scanner/mysql/mysql_version現在、show optionsコマンドを使用して、現在のモジュールを実行するために必要なパラメータを表示してください:
出力には、必要な未設定オプションはRHOSTSであり、これはターゲットマシンのIPアドレスです。次のように、set rhosts コマンドを使用してパラメータを設定し、モジュールを実行してください:
db_nmap 関数と同様の MySQL バージョンの詳細が出力に表示されます。
msfconsoleを使用してMySQLルートアカウントをブルートフォース攻撃する
スキャン後、Metasploitのauxiliary(scanner/mysql/mysql_login)モジュールを使用してMySQLルートアカウントをブルートフォース攻撃することもできます。
あなたは/usr/share/wordlists内のワードリストパスにPASS_FILEパラメータを設定する必要があります:
set PASS_FILE /usr/share/wordlistss/rockyou.txt次に、RHOSTSコマンドを使用してターゲットマシンのIPアドレスを指定します。
set RHOSTS <metasploitable-ip-address>rootアカウントにパスワードが設定されていない場合は、BLANK_PASSWORDSをtrueに設定してください。
set BLANK_PASSWORDS true最後に、ターミナルにrunと入力してモジュールを実行します。
msfconsoleによるMySQL列挙
msfconsole は auxiliary(admin/mysql/mysql_enum) モジュールの助けを借りて、データベースを列挙することもできます。これにより、関連する権限やパスワードハッシュなどの詳細を持つすべてのアカウントが返されます。
それを行うには、パスワード、ユーザー名、およびrhosts変数を指定する必要があります。
set password ""
set username root
set rhosts <metasploitable-ip-address>最後に、モジュールを実行するには次のように入力します:
runmsfconsoleを使用したMySQLの脆弱性の悪用
列挙フェーズから、ルートアカウントが攻撃者が load_file() 関数を実行できるファイル特権を持っていることは明らかです。この関数は、auxiliary(/admin/mysql/mysql_sql) モジュールを介して /etc/password ファイルからすべてのデータをロードすることで、MySQL データベースを悪用することを可能にします:
もう一度、ユーザー名、パスワード、およびrhosts変数を設定します。そして、load_file()関数を呼び出し、/etc/passwdファイルをロードするクエリを実行します。
set sql select load_file(\"/etc/password\")Linux上でのペネトレーションテストのためのMetasploitを学ぶ
Metasploitモジュールは、ペネトレーションテストのすべてのフェーズで役立ちます。Metasploitは、ユーザーが自分自身のモジュールを作成することも可能にします。
この記事では、Metasploitフレームワークの主要なモジュールのいくつかを要約し、Metasploitable 2マシン上でMySQLデータベースをスキャン、列挙、そして脆弱性を利用する方法を示しています。
Metasploitは、サイバーセキュリティの専門家として使用する唯一の侵入テストツールではありません。セキュリティの専門家になりたい場合は、他にもいくつかのユーティリティに慣れる必要があります。











