TryHackMe Room:Metasploit 前半
TryHackMeのMetasploitハンズオン問題を解いてみた。
Kali LinuxからVPN接続して実行。
Metasploitは実際の攻撃にも使えてしまうため、くれぐれも自身の管理下でないNWや端末に対して
許可なく実行しないこと!悪用厳禁!
目次
- 準備
- Task1 Intro
- Task2 Initializing...
- Task3 Rock 'em to the Core (Commands)
- Task4 Modules for Every Occasion!
準備
仮想マシン(ペンテスト用端末)として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があるので、
ここでやり方を確認してから取り組むのがおすすめ。
Task1 Intro
Metasploitの解説記事が出ているので、読むだけ。
Metasploitは、Rapid7が作ったOSSのツールで、ペンテストや脆弱性診断に使われる。
テスト済みのExploit(攻撃コード)や、補助的なツール、Post-Exploitツールも豊富に含まれており、
世界中のセキュリティエンジニアに愛用されている強力なツールである。
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!
Metasploit Frameworkの構造は上記サイトに掲載されている。(Postモジュールだけ載ってないが...)
これによれば、モジュールはExploit, Payload, Encoder, NOP, Auxiliaryの5つ、そしてPostモジュールで計6つ。
モジュールについての基本的な問題が並んでいる。
# Exploitコードを持っているモジュールは? exploit # Exploitと連携して使用され、Exploitの後に実行するために送信するシェルコードが含まれる payload # スキャンや検証用途で使われるモジュール auxiliary # Exploit後に奪取や他のマシンの探索に向けて準備をするが、その時に使われるのは post # シグネチャによる特定を避けるため、payloadを隠蔽するために使われる encoder # バッファオーバーフローやROP攻撃をする nop # 違うモジュールをロードするために使うコマンド load
実際の演習パートは後半に続きます...