Table of Contents
TryHackMe Metasploit: Introduction
世界で最も広く利用されているペネトレーションテスト(侵入テスト)用フレームワークのMetasploitの基本を学びます。
[blogurl card=”https://tryhackme.com/room/metasploitintro”]
Task1 Introduction to Metasploit
Metasploitは、世界で最も広く利用されているペネトレーションテスト(侵入テスト)用フレームワークです。情報収集から脆弱性への攻撃(エクスプロイト)、さらには攻撃後の後処理(ポストエクスプロイト)に至るまで、テストの全フェーズを強力にサポートします。
本ツールには、主に2つのバージョンが存在します。
- Metasploit Pro: 自動化や管理機能を備えた商用版で、GUI(グラフィカルユーザーインターフェース)を提供します。
- 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?
ターゲットシステムの脆弱性を悪用するコードの名前は何ですか?
What is the name of the code that runs on the target system to achieve the attacker’s goal?
攻撃者の目的を達成するためにターゲットシステム上で実行されるコードの名称は何ですか?
What are self-contained payloads called?
自己完結型のペイロードは、何と呼ばれますか?
Is “windows/x64/pingback_reverse_tcp” among singles or staged payload?
「windows/x64/pingback_reverse_tcp」は、単体ペイロードに含まれますか、それとも段階的ペイロードに含まれますか?
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に関連するモジュールは、どのように検索すればよいでしょうか?
Who provided the auxiliary/scanner/ssh/ssh_login module?
auxiliary/scanner/ssh/ssh_login モジュールは誰が提供したのですか?
msfconsoleでinfoコマンドを実行します。
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に設定するにはどうすればよいですか?
How would you set the global value for RHOSTS to 10.10.19.23 ?
RHOSTS のグローバル値を 10.10.19.23 に設定するにはどうすればよいですか?
What command would you use to clear a set payload?
設定済みのペイロードを消去するには、どのコマンドを使いますか?
What command do you use to proceed with the exploitation phase?
エクスプロイトフェーズに進むには、どのコマンドを使用しますか?
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は、脆弱性の放置がいかに深刻な世界的サイバーパニックを引き起こすかを示す、サイバーセキュリティ史上最も有名な事例の一つです。
TryHackMeでサイバーセキュリティ体験!
- Phishing Analysis Fundamentalsウォークスルー
- TryHackMe Blueウォークスルー
- TryHackMe C2 Detection – Command & Carol ウォークスルー
- TryHackMe Conti ウォークスルー
- TryHackMe Empire ウォークスルー
- TryHackMe Hydraウォークスルー
- TryHackMe Introduction to EDRウォークスルー
- TryHackMe Linux Backdoorsウォークスルー
- TryHackMe Metasploit: Introduction ウォークスルー
- TryHackMe Metasploit: The Basics ウォークスルー
- TryHackMe Phishing Basicsウォークスルー
- TryHackMe Registry Persistence Detectionウォークスルー
- TryHackMe Threat Hunting: Endgame
- TryHackMe Vulnerabilities 101 ウォークスルー
- TryHackMeとは
- TryHackMeを始めよう
- TryHackMe ローカル攻撃環境構築 ~Kali Linux VMのインストール~
- TryHackMe Passive Reconnaissance ウォークスルー
- TryHackMe Active Reconnaissance ウォークスルー
- TryHackMe NMAP the Baics ウォークスルー
