使用するモジュール名が分かったところで、まずそのモジュールを使用することを[use]コマンドで宣言する。
use exploit/windows/http/efs_fmws_userid_bof
上記コマンドを実行すると下図のようにプロンプトが変化する。
これで、[exploit/windows/http/efs_fmws_userid_bof]モジュールを選択した状態になった。(12.png)
この状態から別のモジュールを選択したい場合は、[back]コマンドでいったんモジュール選択状態から抜け出した後、再度、検索・選択する。
次に、攻撃モジュールを実行するために必要な項目を設定する。
設定項目は大きく分けて三つとなる。
(1)は、モジュールを実行する上での設定項目で、例えばどのアドレスやポートに対して攻撃を行うかなどを設定する。
(2)は、攻撃を行うターゲットを選択する。OSのエディションやソフトウエアのバージョンなどを選択するのだが、中には[Automatic Targetting]という選択肢もある。これは、こちら側で明示的にターゲットの種類を指定しなくても、通信による挙動をチェックすることで自動的に判別を行い、それに適したターゲットを選定してくれるものだ。場合によってはその選定がうまく働かず、攻撃に失敗することもあるが、明示的に指定し直すことで攻撃に成功する場合もある。
(3)は、攻撃が成功したときに実行する、いわゆる任意のコードの部分である。こちらについては別途詳細を解説する予定だ。
今回は攻撃を行う上で必要最低限の設定を行っていく。
まずは、モジュール選択時の初期状態で設定項目があるかどうかを[show]コマンドを用いて下記のように確認してみよう。
show options
[Module options]に並ぶ項目がいくつかあることが分かる。
最低限設定する必要があるものは[Required]が[yes]になっている項目である。上図でそれに当てはまるものは[RHOST][RPORT][TARGETURI]だが、[RHOST]以外は既に設定されているため、ここでは[RHOST]のみを設定すれば[Module options]の設定は完了となる。ここに何を設定するかだが、[Description]にも書いてある通り、ターゲット、つまり被攻撃環境のアドレスを設定する。値を設定する場合は[set]コマンドを用いて
set 設定名 設定値
とする。今回のように攻撃環境と被攻撃環境が同じ場合は、[set]コマンドを用いて下記のように設定するといいだろう(VM環境や別のコンピューターで被攻撃環境を稼働させている場合はそのアドレスを設定してほしい)。
set RHOST 自身のコンピュータに与えられたローカルIPアドレス
なお、自身のローカルIPアドレスは[ipconfig]コマンドで確認してほしい。筆者の環境では172.20.10.14であったため、以下で使用する画像ではそのIPアドレスを使用する。
上記を実行したらあらためて
show options
を実行してみよう。自身が設定した値が反映されていることが確認できるはずである(画面14)。
次にターゲットの設定だ。どのようなターゲットを設定可能かは、
show targets
で確認できる(画面15)。
このモジュールでは、
Automatic Targeting
Efmws 5.3 Universal
Efmws 4.0 Universal
を選択可能であることが分かる。
今回、皆さんにダウンロードしていただいた[EFS]のバージョンは5.3なので、以下のように入力し、こちらを明示的に指定する(ちなみに、攻撃そのものはAutomatic Targetingでも成功するが、今回はこのオプションを試してもらうため、明示的に指定することとした。なお、「2」の「Efmws 4.0 Universal」にした場合は失敗する)。
set TARGET 1
最後に、ペイロードの選択とそのオプションの確認を行う。
ペイロードは、いわゆる「任意のコード」の部分であり、脆弱性を利用した攻撃が成功した場合、ターゲットに実行させたいコードのことである。こちらはさまざまな種類があるが、今回はまずは攻撃を行い、侵入に成功させることに重きを置き、ペイロードの詳細に関しては次回以降に紹介していきたいと考えている。
今回皆さんに設定していただくペイロードは「windows/shell_bind_tcp」である。このペイロードは、攻撃に成功すると、ターゲット上に接続することで制御を奪うことのできるポートを新たにオープンさせるというものだ。図で表すと以下の通りの動作となる。
Metasploit = 攻撃側、Target = 被攻撃側
(1)攻撃コードを送信
(2)攻撃に成功し、被攻撃側ポートをオープンさせる。
(3)攻撃側から被攻撃側上でオープンしたポートに接続し、制御を奪う。
それでは、以下のようにペイロードを設定してほしい。
set PAYLOAD windows/shell_bind_tcp
設定ができたら設定値を確認しよう。
show options
ペイロードを設定すると、[Payload options]が追加されているはずである。このペイロードの内容を「接続することで制御を奪うことのできるポートを新たにオープン」するものだと述べたが、そのポート番号がこの設定項目の[LPORT]に当たる。
主だった設定項目を説明すると、
ターゲット(RHOST)
の
80/tcpポート(RPORT)
で稼働する
Efmws 5.3(TARGET)
に攻撃(exploit/windows/http/efs_fmws_userid_bof)
を行い
ターゲット上に、接続することで制御が奪えるポート 4444/tcp (LPORT)
をオープンし、そこに接続を行い制御を奪う(PAYLOAD)
ということになる。
さて、これで準備は整った。
それでは「EFS」が問題なく稼働していることを確認し、コンソールに以下のように入力し、エンターキーを押してほしい。
exploit
上記画面のようにWindowsのプロンプトが表示されれば攻撃は成功である。これで、このMetasploitのコンソールからWindowsを操作できるようになった。ここで実行されるコマンドは、被攻撃環境のWindows上で実行されることになる。
実際にMetasploit側から操作できることを確認するため、以下の手順に従ってコマンドを実行してほしい。
cd c:\metasploit mkdir dark_knight cd dark_knight
ここまで実行したら、Windowsエクスプローラーで[C:\metasploit\dark_knight]を表示してほしい。恐らく中身が空のフォルダーになっているだろう(画面18)
ここで再度Metasploitのコンソールに戻り、以下のコマンドを実行してみよう。
echo rising!!! > dark_knight.txt
どうだろうか。Windowsエクスプローラー上に[dark_knight.txt]が作成されただろう。そのテキストの中身を見ると、上記コマンドで指定した「rising!!!」と書かれているはずである(画面19)
これで、システム内である程度自由にコマンドを実行できることから、被攻撃環境の制御を奪取したと言える。今回はあくまでテストのため、攻撃環境も被攻撃環境も同じコンピューター内に存在しているが、ネットワーク上の別のコンピューターやVMで行っても同じ結果が得られる。環境を用意できる方はぜひそちらも試してほしい。
参考までに、VMで用意したWindows 7上の EFSに対し、RHOST以外は同じ設定で攻撃を行った結果の画面を掲載しておく。左のコマンドプロンプトは攻撃前、右は攻撃後である。攻撃によって4444/tcpが新たにLISTENしていることが分かるだろう。
どうだろう。よくセキュリティアドバイザリで目にする「権限を奪取する」という行為が、実際にやってみると意外にあっさりできる印象を持った方も多いのではないだろうか。
次回は、さまざまなペイロードを試してみたいと考えている。
辻 伸弘(つじ のぶひろ)
セキュリティエンジニアとして、主にペネトレーション検査などに従事している。
民間企業、官公庁問わず多くの検査実績を持つ。
自宅では、趣味としてのハニーポットの運用、IDSによる監視などを行っている。
▼辻氏のブログ「(n)」: http://n.pentest.ninja/
▼辻氏のTwitter: http://twitter.com/ntsuji
Copyright © ITmedia, Inc. All Rights Reserved.