こんにちは、ぎんたです。
今回は、Metasploit Frameworkの概要、起動からモジュールの実行までに使用するコマンド、脆弱性を使用するコードの探し方、設定の方法について解説していきます。
攻撃者が使うツールについて知ることはサイバー防御において必要となります。
外部に対しては決して使用せず、試行する場合は仮想環境などの自身が構築した環境内で実施ください。
また、この記事はTryHackMeで提供されている「Metasploit: Introduction」というルームの内容を参考にして書いています。
検証もこの環境を使って行いました。
ルームは無料でアクセス可能なので、試してみたい方はぜひやってみてください。
Metasploit Frameworkの起動
Metasploit Frameworkはコマンドラインから動作するオープンソース版の脆弱性検査ツールです。
起動をするためには、msfconsoleと入力します。
msfconsole
![msfconsole起動コマンド](https://gintachan.com/wp-content/uploads/2023/06/msfconsole-command.png)
起動すると、コマンドラインがmsf6に変更されます。
Searchコマンドで使用するモジュールを検索する
ここで、使用するモジュールを検索してみましょう。
モジュールとは、Metasploit Frameworkが、ターゲットのエクスプロイトやスキャンなどのタスクを実行するために使用するソフトウェアの一部です。モジュールは、エクスプロイトモジュール、補助モジュール、またはポストエクスプロイトモジュールになることができます。
出典:Rapid7 Home
Metasploit Frameworkのデータベースで検索を行います。
検索のワードとして、CVE番号、exploit名(eternalblue、heartbleedなど)を指定して検索します。
ここでは、eternalblueを検索してみます。
search eternalblue
![eternalblueを検索](https://gintachan.com/wp-content/uploads/2023/06/search-eternalblue.png)
eternalblueに関連したモジュールが検索結果として出てきました。
また、今度はms17-010で検索してみます。
search ms17-010
![ms17-010を検索](https://gintachan.com/wp-content/uploads/2023/06/search-ms17-010.png)
検索結果が表示されました。
検索結果の列には、モジュール名の他に、Rankという欄があることに注目してください。
![searchのランク表](https://gintachan.com/wp-content/uploads/2023/06/search-rank.png)
表からExcellentRankingを選ぶのがよさそうなことが分かります。
- サービスがクラッシュしたりメモリ破壊を伴わないものなので、安定して使える場合が多い。
- SQLインジェクションやCMDの実行のようなものに割り当てられることが多い。
useコマンドの後に検索結果の左側の番号をつけて実行することで、使用するモジュールを選択することができます。
use 0
![「use 0」コマンドを実行](https://gintachan.com/wp-content/uploads/2023/06/use0-run.png)
「show options」コマンドでモジュールの設定をおこなう
まずは現在選択中のモジュールで利用可能なパラメータを一覧表示します。
show options
![「show options」コマンド一回目を実行](https://gintachan.com/wp-content/uploads/2023/06/show-options-1.png)
ここで表示されているパラメータの中に、値を入れることを必要としているもの(Requiredの欄)があります。
事前に入力されているものはその値でいいのかを確認し、入力されていないものは追加で値を入れていきます。
値を入力するためには、setコマンドを使用します。
ここでは、RHOSTSの箇所にターゲットのIPアドレスを入力していきます。
set RHOSTS ターゲットのIPアドレス
![RHOSTに値を設定](https://gintachan.com/wp-content/uploads/2023/06/set-rhost.png)
パラメータを設定した後に再度「show options」コマンドを実施し、値が正しく設定されているのかを確認します。
![RHOST設定後に「show options」コマンド実行](https://gintachan.com/wp-content/uploads/2023/06/setting-rhost-.png)
良く使うパラメータを以下に示します。
- RPORT:脆弱なアプリが動作しているターゲットのポート
- PAYLOAD:エクスプロイットで使用するペイロード
- LPORT:攻撃側のマシンのポート(リバースシェルでターゲットからの接続を待ち受けるポートを指定)
- LHOST:攻撃側マシンのIPアドレス
設定が完了したら、exploitコマンドを実行します。
exploit
![exploitコマンド実行](https://gintachan.com/wp-content/uploads/2023/06/exploit-run.png)
Sessionsコマンドで現在のセッションを確認する
モジュールの実行が成功すると、ターゲットシステムと攻撃側のマシン間で通信チャネル(セッション)が確立します。
backgroundコマンドを使用すると、セッションをバックグラウンドにしてmsfconsoleプロンプトに戻ることができます。
background
![backgroundコマンド実行](https://gintachan.com/wp-content/uploads/2023/06/backgroung-command.png)
msfconsoleプロンプト上でsessionsコマンドを使うことで、現在のセッションを確認できます。
sessions
![sessionsコマンド実行](https://gintachan.com/wp-content/uploads/2023/06/sessions-command-1024x175.png)
ここで確認したセッションを指定することで、meterpreterのプロンプトに戻ることができます。
sessions -i 番号
![「sessions -i」コマンド実行](https://gintachan.com/wp-content/uploads/2023/06/sessions-i-command.png)
まとめ
今回は、Metasploit Frameworkの概要、起動からモジュールの実行までに使用するコマンド、脆弱性を使用するコードの探し方、設定の方法について解説しました。
この記事が少しでも役に立てれば幸いです。
以上、ぎんたでした。
サイバーセキュリティを学ぶ上で必要な攻撃と解析に関する他の記事は、以下のリンクで確認できます。
学習に関しましては、以下のセキュリティの勉強法、おすすめの学習本・動画の記事が多くの方に読まれています。
資格の記事については以下の記事がおすすめです。
ITエンジニアへの転職については以下の記事がおすすめです。
その他学習・転職関連に関しましては、以下の記事もあわせて読まれています。
ぜひご覧ください!