はじめに
Metasploit Framework は、ペネトレーションテストやセキュリティリサーチに使用される強力なオープンソースツールです。特定のタスクを実行する交換可能なコードの断片であるモジュールの概念を中心に構築されています。Metasploit を効果的に使用するには、さまざまな種類のモジュールを理解することが基本となります。
この実験 (lab) では、Metasploit 内の主要なモジュールタイプを探求します。
- Exploits: システムの脆弱性を悪用するコードです。
- Auxiliary: 直接的なエクスプロイトではない、スキャン、ファジング、その他のアクションのためのモジュールです。
- Post-Exploitation: ターゲットシステムへのアクセスを確立した後に使用されるモジュールです。
- Payloads: エクスプロイトが成功した後、ターゲットシステム上で実行されるコードです。
Metasploit コンソール (msfconsole) を使用して、これらのモジュールをリストアップし、識別する方法を学びます。
利用可能なエクスプロイトモジュールの一覧表示
このステップでは、Metasploit Framework で利用可能なすべて のエクスプロイトモジュールを一覧表示する方法を学びます。エクスプロイトモジュールは、システム、サービス、またはアプリケーションの特定の欠陥や脆弱性を悪用して、不正アクセスを可能にするように設計されています。
まず、Metasploit Framework コンソールを開始する必要があります。よりクリーンなインターフェースのために、起動バナーを抑制する -q フラグを使用します。コンソールに入ったら、show exploits コマンドを使用できます。
ターミナルを開き、次のコマンドを実行して msfconsole を起動します。
msfconsole -q
msfconsole プロンプト (msf6 >) が表示されたら、次のコマンドを入力してすべて のエクスプロイトモジュールを一覧表示します。
show exploits
開示日、ランク、簡単な説明とともに、利用可能なエクスプロイトの長いリストが表示されます。ランクはエクスプロイトの信頼性を示します。
msf6 > show exploits
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/aix/local/ibstat_exec 2009-07-27 excellent No AIX ibstat Command Execution
1 exploit/aix/local/invscout_priv_esc 2012-03-30 excellent Yes AIX invscout Privilege Escalation
2 exploit/aix/rpc_catd 1995-01-01 great No AIX CDE ToolTalk rpc.catd Command Execution
...
2300 exploit/windows/smb/ms17_010_psexec 2017-03-14 excellent Yes MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
...
リストを確認した後、exit と入力して Metasploit コンソールを終了できます。
exit
利用可能な補助モジュールの一覧表示
このステップでは、補助モジュールを一覧表示します。エクスプロイトとは異なり、補助モジュールはシステムへのアクセスを直接獲得するものではありません。代わりに、開いているポートのスキャン、サービスの特定、ファジング、サービス拒否攻撃、情報収集など、幅広いタスクに使用されます。
前のステップと同様に、Metasploit コンソールを開始し、show コマンドを使用します。
ターミナルから msfconsole を再度起動します。
msfconsole -q
msf6 > プロンプトで、show auxiliary コマンドを使用して、利用可能なすべての補助モジュールを表示します。
show auxiliary
出力には、偵察やその他の非エクスプロイト活動に使用されるモジュールが包括的に一覧表示されます。
msf6 > show auxiliary
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/admin/2wire/xslt_password_reset normal No 2Wire Cross-Site Scripting and Password Reset
1 auxiliary/admin/appletv/appletv_display_image normal No AppleTV Display Image
...
450 auxiliary/scanner/http/http_login normal No HTTP Login Utility
451 auxiliary/scanner/http/http_put normal Yes HTTP PUT File Upload Utility
...
完了したら、コンソールを終了します。
exit
利用可能なポストエクスプロイトモジュールの一覧表示
このステップでは、ポストエクスプロイトモジュールを探索します。これらのモジュールは、ターゲットシステムを正常に侵害した 後 に使用されます。その目的は、アクセスを維持し、機密情報を収集し、権限を昇格させ、ネットワーク内の他のシステムにピボットするのに役立つことです。
これらのモジュールを一覧表示するプロセスは、前のステップと同様です。
Metasploit コンソールを起動します。
msfconsole -q
プロンプトで show post と入力して、すべてのポストエクスプロイトモジュールを一覧表示します。
show post
ターゲットオペレーティングシステム(例:Windows、Linux、OSX)および実行する機能(例:gather、manage、escalate)別に分類されたモジュールの一覧が表示されます。
msf6 > show post
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 post/android/capture/screen normal No Android Screen Capture
1 post/android/gather/contacts normal No Android Gather Contacts
...
250 post/linux/gather/enum_configs normal No Linux Gather Configurations
251 post/linux/gather/enum_protections normal No Linux Gather Protection Mechanisms
...
400 post/windows/gather/credentials/total_commander normal No Windows Gather Total Commander FTP Passwords
...
一覧の探索が終了したら、コンソールを終了することを忘れないでください。
exit
利用可能なペイロードモジュールの一覧表示
このステップでは、利用可能なペイロードモジュールを一覧表示します。ペイロードとは、エクスプロイトがターゲットシステムに配信するコードのことです。エクスプロイトがシステムを正常に侵害すると、ペイロードが実行され、攻撃者に制御が与えられます。ペイロードは、単純なコマンドシェルから、被害者マシンに対する広範な制御を提供する高度な Meterpreter まで多岐にわたります。
msfconsole を使用して一覧表示してみましょう。
Metasploit コンソールを開始します。
msfconsole -q
msf6 > プロンプトで、show payloads コマンドを使用します。
show payloads
出力には、確立する接続の種類(例:リバースシェル、バインドシェル)やターゲットアーキテクチャによって分類された、さまざまなペイロードが表示されます。
msf6 > show payloads
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 payload/aix/ppc/shell_bind_tcp normal No AIX PowerPC Command Shell, Bind TCP Inline
1 payload/aix/ppc/shell_find_port normal No AIX PowerPC Command Shell, Find Port Inline
...
500 payload/linux/x86/meterpreter/reverse_tcp normal No Linux Meterpreter, Reverse TCP Stager
...
1000 payload/windows/x64/meterpreter/reverse_tcp normal No Windows Meterpreter (Reflective Injection), Reverse TCP Stager (x64)
...
最後に、コンソールを終了します。
exit
エクスプロイトとペイロードの違いを理解する
最終ステップでは、エクスプロイトとペイロードの重要な違いについての理解を深めます。これらは連携して機能しますが、それぞれ異なる目的を持っています。
- エクスプロイト (Exploit): これは「配送手段」です。その唯一の役割は、脆弱性を悪用してペイロードをターゲットシステムに送り込むことです。ドアの鍵を開けるものと考えてください。
- ペイロード (Payload): これは「積荷」です。エクスプロイトが成功した 後に 実行されるコードです。侵害されたシステムで何ができるかを定義します。ドアの鍵を開けて中に入った後に何をするか、と考えてください。
エクスプロイトはペイロードなしでは機能せず、ペイロードはエクスプロイトなしでは配信されません。
理解を深めるために、プロジェクトディレクトリに difference.txt という名前の簡単なテキストファイルを作成し、この概念を要約してください。
ターミナルで以下のコマンドを実行します。
echo "Exploit: Gains access. Payload: Runs after access." > /home/labex/project/difference.txt
cat コマンドでファイルが正しく作成されたことを確認できます。
cat /home/labex/project/difference.txt
以下の出力が表示されるはずです。
Exploit: Gains access. Payload: Runs after access.
この簡単な演習は、これら 2 つの基本的な Metasploit コンポーネント間のコアな関係を強化するのに役立ちます。
まとめ
この実験を完了した皆さん、おめでとうございます!Metasploit Framework の基本的なモジュールタイプをすべて探索しました。
以下のことを学びました。
- エクスプロイトモジュール (Exploit modules): 脆弱性を悪用して初期アクセスを獲得するために使用されます。
- 補助モジュール (Auxiliary modules): スキャン、偵察、その他のエクスプロイト以外の操作に使用されます。
- ポストエクスプロイトモジュール (Post-exploitation modules): システムが侵害された後に実行されます。
- ペイロードモジュール (Payload modules): ターゲット上で実行される、エクスプロイトによって配信されるコードです。
最も重要なことは、エクスプロイト(侵入方法)とペイロード(侵入後に実行されるコード)の重要な違いを理解したことです。この基礎知識は、Metasploit を使用して効果的なペネトレーションテストを実行するために不可欠です。


