Port 53

明日のための技術メモ

TryHackMe Room:Metasploit 前半

TryHackMeのMetasploitハンズオン問題を解いてみた。
Kali LinuxからVPN接続して実行。
Metasploitは実際の攻撃にも使えてしまうため、くれぐれも自身の管理下でないNWや端末に対して
許可なく実行しないこと!悪用厳禁!

tryhackme.com

目次

準備

仮想マシン(ペンテスト用端末)としてKali Linuxを用意。そこにMetasploitが入っている。
まずは、TryHackMeにある Access Machines メニューからopenVPNを選び、
接続サーバを選んでopenVPNのconfigファイルをKali Linuxへダウンロードする。

configファイルを配置したディレクトリへ移動し、openvpnパッケージをインストール後、
configファイルを使って接続する。

$ sudo apt install openvpn
$ sudo openvpn My_openVPN_config.ovpn

心配な人は、ちゃんとopenVPN接続のやり方を説明したRoomがあるので、
ここでやり方を確認してから取り組むのがおすすめ。

tryhackme.com

Task1 Intro

Metasploitの解説記事が出ているので、読むだけ。
Metasploitは、Rapid7が作ったOSSのツールで、ペンテストや脆弱性診断に使われる。
テスト済みのExploit(攻撃コード)や、補助的なツール、Post-Exploitツールも豊富に含まれており、
世界中のセキュリティエンジニアに愛用されている強力なツールである。

www.metasploit.com

Task2 Initializing...

Metasploitを初めて使う時に実施する初期化、そして実際に起動するところまで。

# 最初にDB初期化
$ sudo msfdb init
 
# Metasploitの使い方を確認する
$ msfconsole -h
 
# バナーや起動情報を出さずにMetasploitを起動
$ msfconsole -q
 
# Metasploit起動
$ msfconsole

msfconsoleでMetasploitを起動すると、プロンプトが変わる。
私の場合、msf5 >に変わった。

では、DBの接続状態とバックエンドで動いているDBが何かを確認する

msf5 > db_status
[*] postgresql selected, no connection

Task3 Rock 'em to the Core (Commands)

Metasploitを起動した状態で、使い方を確認していく。

# msfconsoleの状態で、コマンドの使い方を確認する
help
 
# コマンドの使い方を表示する時のエイリアス
?
 
# Metasploitのモジュールを検索する時の基本コマンド
search

# 目的のモジュールを選択し、Active Moduleとする
use

# 特定のモジュールや選択したモジュールの情報を表示
info
 
# 対象ホストとの疎通を確認する(netcatのような機能)
connect
 
# Metasploitを起動した時に出てくるアスキーアートが見たい
banner
 
# モジュールの変数の値を変更
set
 
# 変数をグローバルに変更(単一のマシンに対して有効)
setg
 
# 1つの変数に設定された値が見たい
get
 
# 変数をNULL、もしくは値なしに設定したい
unset
 
# コンソール出力された結果をファイルに出力したい
spool
 
# 設定内容や、アクティブデータストアを保存しておきたい(保存先はmsf4もしくはmsf5ディレクトリ)
save

Task4 Modules for Every Occasion!

www.offensive-security.com

Metasploit Frameworkの構造は上記サイトに掲載されている。(Postモジュールだけ載ってないが...)
これによれば、モジュールはExploit, Payload, Encoder, NOP, Auxiliaryの5つ、そしてPostモジュールで計6つ。
モジュールについての基本的な問題が並んでいる。

# Exploitコードを持っているモジュールは?
exploit
 
# Exploitと連携して使用され、Exploitの後に実行するために送信するシェルコードが含まれる
payload
 
# スキャンや検証用途で使われるモジュール
auxiliary
 
# Exploit後に奪取や他のマシンの探索に向けて準備をするが、その時に使われるのは
post
 
# シグネチャによる特定を避けるため、payloadを隠蔽するために使われる
encoder
 
# バッファオーバーフローやROP攻撃をする
nop
 
# 違うモジュールをロードするために使うコマンド
load

実際の演習パートは後半に続きます...

port53.hatenablog.com