Purple teaming

情報セキュリティ/ サイバーセキュリティ 当ブログはサイバーセキュリティ分野の研究を目的としております。 許可されていない外部機器に向け掲載された内容を実行した結果生じた損害等の一切の責任を負いかねますので、ご了承ください

HTB Helpline writeup (Japanese)

HTB Helpline writeup

Thanks egre55. I've learned a lot from this machine!

注:許可されていない外部機器に向け、掲載された内容を実行した結果

生じた損害等の一切の責任を負いかねますので、ご了承ください

 

 一日1時間ほどしか出来ず、結局攻略まで一週間程かかってしまいました… 

f:id:watashiwaojsn:20190907002550p:plain

f:id:watashiwaojsn:20190907002639p:plain

 

概要

出来るだけ詳細にと思ったのですが、無駄に長いので所々端折ります。

個人的にメインのテーマはEFSでした。やり方としてはかなり横着した感じで、ちゃんとしたやり方があります。

f:id:watashiwaojsn:20190907002342p:plain

 

ポートスキャン

 

root@kali:~/hackthebox/Helpline# nmap -A -p- 10.10.10.132

135/tcp   open  msrpc         Microsoft Windows RPC

445/tcp   open  microsoft-ds?

5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)

|_http-server-header: Microsoft-HTTPAPI/2.0

|_http-title: Not Found

8080/tcp  open  http-proxy    -

_http-title: ManageEngine ServiceDesk Plus

ファイル共有からせめて情報だけでも何か取れないものかと思いましたが 

全く取れない様子。大体こういう時は、webアプリを見る事にしてます。

 Web application authentication bypass

f:id:watashiwaojsn:20190907005055p:plain

アプリケーションとバージョン名で検索すると、意外にあっさりとExploitが出てきました。

変なコードが紛れてないか3回ほど読んで、大丈夫そうなのでDL。自分に馴染みのない言語で書いてあったり、妙なエンコーディングがしてあるコードは安易に実行するとひどい目に合うのでご注意ください。
実行は自己責任で、仮想環境で!

 

f:id:watashiwaojsn:20190907005129p:plain

まずはguestでログイン

f:id:watashiwaojsn:20190907005202p:plain

 Cookieを先ほどの物と置き換えてF5

f:id:watashiwaojsn:20190907005256p:plain

 Adminでログインできました

f:id:watashiwaojsn:20190907005241p:plain私はここでAdminパネルの"Custom Schedule"に目を付けましたが、他のやり方もあるようです。

どうやらExecutorでコマンドが実行できるらしい。

この時点で、どういう権限でこのアプリが動いているのかは不明ですが、外向きの通信が許可されているのか、試してみる価値はありそうです。

 

f:id:watashiwaojsn:20190907005350p:plain

powershell in-memory attack

作戦としては単純で、nishang のTCPリバースシェルを直接ターゲットのメモリにいれ,自分のマシン(kali)に接続させます。

nishang

https://github.com/samratashok/nishang

 

f:id:watashiwaojsn:20190907005424p:plain

いきなり最上位の権限が取れました。

f:id:watashiwaojsn:20190907010356p:plain

 

とりあえずフラグのありかを探ります。

 PS C:\Users> get-childitem -recurse

     Directory: C:\Users

    Directory: C:\Users\Administrator\Desktop

Mode                LastWriteTime         Length Name                                                                 

----                -------------         ------ ----                                                                 

-ar---       12/20/2018  11:09 PM             32 root.txt                                                             

    Directory: C:\Users\leo\Desktop

Mode                LastWriteTime         Length Name                                                                 

----                -------------         ------ ----                                                                 

-a----        1/15/2019  12:18 AM            526 admin-pass.xml                                                       

 

    Directory: C:\Users\tolu\Desktop 

Mode                LastWriteTime         Length Name                                                                 

----                -------------         ------ ----                                                                 

-a----       12/20/2018  11:12 PM             32 user.txt    

 

System権限でも中を見れない…

ググると、どうもEFSっぽいなぁと。

 

f:id:watashiwaojsn:20190907092750p:plain

やはりEFS

f:id:watashiwaojsn:20190907092834p:plain

Token impersonation

EFSの復号化に必要な条件を変更せずに見るには、手っ取り早く
token impersonationをします。事前にleoのプロセスがあるのは確認済み。

f:id:watashiwaojsn:20190907092946p:plain

admin-pass.xmlの中を見れたのは良いのですが、パッと見あまり馴染みのない文字列。
いろいろ長さを変えて検索するとSecureStringの様です。

Powershell Secure string

securestirng の復号化は2種類ありますが、当初Marshalを使用する方しか知りませんでした。こちらを使おうとすると、constraint language modeのため、はじかれます。

f:id:watashiwaojsn:20190907093158p:plain

GetNetworkCredentialの方を試すしかなさそうです。

f:id:watashiwaojsn:20190907093325p:plain

Getting root.txt

adminのパスワードは手に入ったのですが、psexec.pyで外部から接続すると
systemの権限のままなので、このままではroot.txtが見れません。
他のwriteupを見るとpowershellでやっていますが、私はschtasksを使うことにしました。

作戦としては単純で、meterpreter shellをadmin権限でたたかせようと言うだけです。

f:id:watashiwaojsn:20190907093534p:plain

f:id:watashiwaojsn:20190907093608p:plain

 

f:id:watashiwaojsn:20190907093644p:plain

 

Getting user.txt

ユーザーの中でzacharyのパスワードのみ弱く、"Event Log Readers"に所属していたのでイベントログを調査。チマチマとやるのは性に合わないので、全部抜きます。

f:id:watashiwaojsn:20190907094758p:plain

toluでgrep

f:id:watashiwaojsn:20190907094835p:plain

$logfile=gc .\test.txt

f:id:watashiwaojsn:20190907095013p:plain

ありました。

 

toluの権限ではタスクスケジューラを使えなかったのでadminに入れます。

後は上記と一緒。

f:id:watashiwaojsn:20190907095100p:plain

 

f:id:watashiwaojsn:20190907095241p:plain

行けました

f:id:watashiwaojsn:20190907095512p:plain