TryHackMe Metasploit: Introduction

世界で最も広く利用されているペネトレーションテスト(侵入テスト)用フレームワークのMetasploitの基本を学びます。

[blogurl card=”https://tryhackme.com/room/metasploitintro”]

Task1 Introduction to Metasploit

Metasploitは、世界で最も広く利用されているペネトレーションテスト(侵入テスト)用フレームワークです。情報収集から脆弱性への攻撃(エクスプロイト)、さらには攻撃後の後処理(ポストエクスプロイト)に至るまで、テストの全フェーズを強力にサポートします。

本ツールには、主に2つのバージョンが存在します。

  1. Metasploit Pro: 自動化や管理機能を備えた商用版で、GUI(グラフィカルユーザーインターフェース)を提供します。
  2. Metasploit Framework: コマンドラインで操作するオープンソース版です。本ルームでは、AttackBoxや主要なセキュリティ系Linuxディストリビューションに標準搭載されているこちらのバージョンに焦点を当てます。

Metasploit Frameworkは、以下のような主要なコンポーネントで構成されています。

  • msfconsole: 中心となるコマンドラインインターフェース。
  • モジュール: スキャナー、エクスプロイト、ペイロードなどの機能群。
  • ツール: msfvenomなどの独立したスタンドアロンツール。

この学習ルームでは、ターゲットシステムの脆弱なサービスを特定し、パラメータを設定して攻撃を成功させるための一連の基礎知識を習得します。修了時には、コマンドラインを用いたMetasploitの基本操作を自在に使いこなせるようになることを目指します。

Qustion

No answer needed

Task2 Main Components of Metasploit

Metasploit Frameworkの中核となるのは、msfconsoleを通じた各種「モジュール」の操作です。学習を進める上で、まず以下の3つの重要概念を理解する必要があります。

  • Vulnerability(脆弱性): システムの設計や論理的な欠陥。
  • Exploit(エクスプロイト): 脆弱性を利用して攻撃を行うためのコード。
  • Payload(ペイロード): 攻撃成功後にターゲット上で実行させるコード(シェル接続やコマンド実行など)。

Framework内には、用途別に以下のモジュール群が格納されています。

  • Auxiliary: スキャナーやクローラーなど、攻撃を補助するツール群。
  • Exploits: ターゲット別(Windows, Linux等)に整理された攻撃コード。
  • Payloads: ターゲットで実行するコード。単体で完結する「Singles」と、段階的に読み込む「Staged」などがあります。
  • Post: 侵入成功後の情報収集や権限昇格を行うポストエクスプロイト用。
  • Encoders / Evasion: ウイルス対策ソフト等の検知を回避するための難読化やコード変換ツール。
  • NOPs: ペイロードのサイズ調整等に使用される、何もしない命令。

これらのコンポーネントを組み合わせることで、ペネトレーションテストの各段階を体系的に実行することが可能になります。

Qustion

What is the name of the code taking advantage of a flaw on the target system? 
ターゲットシステムの脆弱性を悪用するコードの名前は何ですか?

Answer

What is the name of the code that runs on the target system to achieve the attacker’s goal? 
攻撃者の目的を達成するためにターゲットシステム上で実行されるコードの名称は何ですか?

Answer

What are self-contained payloads called? 
自己完結型のペイロードは、何と呼ばれますか?

Answer

Is “windows/x64/pingback_reverse_tcp” among singles or staged payload?
「windows/x64/pingback_reverse_tcp」は、単体ペイロードに含まれますか、それとも段階的ペイロードに含まれますか?

Answer

Task3 Msfconsole

Task 3では、Metasploitのメインインターフェースであるmsfconsoleの具体的な利用方法を学習します。

  • 基本操作と特徴: msfconsoleコマンドで起動し、通常のシェルと同様にlsやpingなどのLinuxコマンドが実行可能です。また、入力補完(Tabキー)や実行履歴(history)もサポートしています。
  • コンテキスト管理: use [モジュール名]で使用する機能を選択すると、プロンプトが変化し、そのモジュールの「コンテキスト(作業環境)」に入ります。設定した変数はそのコンテキスト内でのみ有効で、backコマンドで元の状態に戻せます。
  • 設定と確認: show optionsで攻撃に必要な設定項目(ターゲットのIPを指定するRHOSTSなど)を確認し、infoでそのモジュールの詳細な解説や作者情報を表示できます。
  • 検索機能: searchコマンドは非常に強力で、CVE番号や名前でモジュールを探せます。type:auxiliaryのようにフィルタリングも可能です。
  • ランキング: エクスプロイトには信頼性に基づいた「Rank(Excellent, Greatなど)」が付与されており、実行時のリスク判断の目安となります。

これらのコマンドを使いこなすことで、膨大なモジュール群から必要なものを素早く特定し、適切に設定して攻撃準備を整えることができます。

Qustion

How would you search for a module related to Apache?
Apacheに関連するモジュールは、どのように検索すればよいでしょうか?

Answer

Who provided the auxiliary/scanner/ssh/ssh_login module? 
auxiliary/scanner/ssh/ssh_login モジュールは誰が提供したのですか?

Answer

msfconsoleでinfoコマンドを実行します。

Kali Linux
msf > info auxiliary/scanner/ssh/ssh_login 

       Name: SSH Login Check Scanner
     Module: auxiliary/scanner/ssh/ssh_login
    License: Metasploit Framework License (BSD)
       Rank: Normal

Provided by:
  todb <todb@metasploit.com>
  RageLtMan

Check supported:
  No

Basic options:
  Name              Current Setting  Required  Description
  ----              ---------------  --------  -----------
  ANONYMOUS_LOGIN   false            yes       Attempt to login with a blank username and password
  BLANK_PASSWORDS   false            no        Try blank passwords for all users
  BRUTEFORCE_SPEED  5                yes       How fast to bruteforce, from 0 to 5
  CreateSession     true             no        Create a new session for every successful login
  DB_ALL_CREDS      false            no        Try each user/password couple stored in the current
                                                database
  DB_ALL_PASS       false            no        Add all passwords in the current database to the li
                                               st
  DB_ALL_USERS      false            no        Add all users in the current database to the list
  DB_SKIP_EXISTING  none             no        Skip existing credentials stored in the current dat
                                               abase (Accepted: none, user, user&realm)
  KEY_PASS                           no        Passphrase for SSH private key(s)
  KEY_PATH                           no        Filename or directory of cleartext private keys. Fi
                                               lenames beginning with a dot, or ending in ".pub" w
                                               ill be skipped. Duplicate private keys will be igno
                                               red.
  PASSWORD                           no        A specific password to authenticate with
  PASS_FILE                          no        File containing passwords, one per line
  PRIVATE_KEY                        no        The string value of the private key that will be us
                                               ed. If you are using MSFConsole, this value should
                                               be set as file:PRIVATE_KEY_PATH. OpenSSH, RSA, DSA,
                                                and ECDSA private keys are supported.
  RHOSTS                             yes       The target host(s), see https://docs.metasploit.com
                                               /docs/using-metasploit/basics/using-metasploit.html
  RPORT             22               yes       The target port
  STOP_ON_SUCCESS   false            yes       Stop guessing when a credential works for a host
  THREADS           1                yes       The number of concurrent threads (max one per host)
  USERNAME                           no        A specific username to authenticate as
  USERPASS_FILE                      no        File containing users and passwords separated by sp
                                               ace, one pair per line
  USER_AS_PASS      false            no        Try the username as the password for all users
  USER_FILE                          no        File containing usernames, one per line
  VERBOSE           false            yes       Whether to print output for all attempts

Description:
  This module will test ssh logins on a range of machines and
  report successful logins.  If you have loaded a database plugin
  and connected to a database this module will record successful
  logins and hosts so you can track your access.

References:
  https://nvd.nist.gov/vuln/detail/CVE-1999-0502
  https://attack.mitre.org/techniques/T1021/004/


View the full module info with the info -d command.

Task4 Working with modules

Task 4では、選択したモジュールのパラメータ設定から、攻撃の実行、確立されたセッションの操作方法を学習します。

  • パラメータの設定: set [変数名] [値] コマンドを使用します。主要な変数には、ターゲットIPを指定するRHOSTS、自身のIPを指定するLHOST、ポート番号のRPORTやLPORTなどがあります。setgを使えば、複数のモジュール間で共通して利用できるグローバルな値を設定可能です。
  • 5つのプロンプト状態: Metasploitでは、通常のシェル、msf6(起動直後)、exploit(名前)(モジュール選択中)、meterpreter >(高度な接続中)、およびターゲットの標準シェル(C:\>等)の5つを使い分ける必要があります。
  • 攻撃の実行: 設定完了後、exploitまたはrunコマンドで実行します。-zオプションを付けると、攻撃成功後にセッションを即座にバックグラウンドへ回すことができます。
  • セッションの操作: 確立された接続は「セッション」として管理されます。background(または CTRL+Z)で作業を一時中断してメインメニューに戻り、sessionsコマンドで一覧を表示、sessions -i [ID]で特定の接続に再介入できます。

これらの流れを理解することで、単一の攻撃だけでなく、複数のターゲットやセッションを並行して管理する効率的なテストが可能になります。

Question

How would you set the LPORT value to 6666?
LPORTの値を6666に設定するにはどうすればよいですか?

Answer

How would you set the global value for RHOSTS  to 10.10.19.23 ?
RHOSTS のグローバル値を 10.10.19.23 に設定するにはどうすればよいですか?

Answer

What command would you use to clear a set payload?
設定済みのペイロードを消去するには、どのコマンドを使いますか?

Answer

What command do you use to proceed with the exploitation phase?
エクスプロイトフェーズに進むには、どのコマンドを使用しますか?

Answer

Task5 Summary

Metasploitを用いた攻撃プロセスは、「エクスプロイトの検索」「カスタマイズ」「実行」の3ステップに集約されます。本ルームでは、これらの各段階に対応するモジュールの基礎と、MS17-010(EternalBlue)を通じた実機へのアクセス手法を学習しました。この基本構造を理解することで、より高度な機能や詳細なコンポーネントを学ぶ準備が整います。学んだ土台を活かし、次段階のモジュール学習へと進みましょう。 


EternalBlue(MS17-010)エクスプロイトの概要

EternalBlueは、Windowsのファイル共有プロトコルであるSMBv1(Server Message Block v1)に存在する脆弱性を悪用したエクスプロイトです。米国家安全保障局(NSA)が開発したとされ、後にハッカー集団「Shadow Brokers」によって流出させられました。

攻撃の仕組み

この脆弱性は、特定の細工されたパケットをターゲットに送信することで、カーネルメモリ内でバッファオーバーフローを引き起こします。これにより、攻撃者は認証なしでシステム最高権限である「SYSTEM」権限を取得し、リモートから任意のコードを実行(RCE)することが可能になります。

歴史的影響と被害

2017年、このエクスプロイトはランサムウェアWannaCryの拡散に悪用され、世界中の医療機関、政府機関、民間企業に甚大な被害をもたらしました。自己増殖する「ワーム」機能を持っていたため、1台のPCが感染するとネットワーク内の他の脆弱なPCへ次々と感染が広がるという驚異的な拡散力を示しました。

対策

Microsoftは2017年3月に修正パッチ(MS17-010)を公開しています。現在でもパッチ未適用のレガシーシステムが標的になることが多いため、以下の対策が推奨されます。

  • 最新のセキュリティ更新プログラムの適用
  • SMBv1の使用停止と無効化
  • 不要な445番ポートの遮断

EternalBlueは、脆弱性の放置がいかに深刻な世界的サイバーパニックを引き起こすかを示す、サイバーセキュリティ史上最も有名な事例の一つです。