セキュリティ技術メモブログ

日々の活動を記録する場所

【Hack The Box】Bastion Walkthrough

はじめに

  • マシン名:Bastion
  • OS:Windows
  • 目標:user.txtとroot.txtの中身の取得
  • ターゲットIPアドレス:10.10.10.134

ポートスキャン

# nmap -sC -sV -Pn 10.10.10.134

f:id:Paichan:20200913225840p:plain 22(ssh)、135(msrpc)、139(netbios-ssn)、445(microsoft-ds)が開いている。
445はguestユーザでアクセスができそうだ。

445ポートにNSE実行

445ポートにNSE(vuln)を実行。

# nmap --script vuln -p 445 10.10.10.134

f:id:Paichan:20200913230109p:plain 何も検知されない。

共有フォルダのアクセス権限の確認

# smbclient -L 10.10.10.134 -U guest

f:id:Paichan:20200913230239p:plain $がついているフォルダにアクセスするには、Windows側でユーザとして登録されており、かつパスワードが設定されていなければならない。
$がついていないものは手動で共有設定にしたものであり、今回はBackupsにアクセスできそうということが分かる。

smbmapだと以下のように出力される。

# smbmap -H 10.10.10.134 -u guest

f:id:Paichan:20200913230529p:plain ※user名指定しないと、実行失敗。かつ、ユーザ名は適当でOK。

Backupsフォルダのマウント

smbclientで接続しても良いが、linuxの標準コマンドを使いたいので、マウントする。

# mount -t cifs -o username=guest //10.10.10.134/Backups /mnt/Backups

f:id:Paichan:20200913230909p:plain /mnt/Backups/WindowsImageBackup/L4mpje-PC/Backup 2019-02-22 124351に拡張子がvhdのサイズがでかいファイルがある。 f:id:Paichan:20200913231055p:plain

このバックアップファイルはハードディスクの完全なバックアップである、システムイメージと呼ばれるもの。
参考:Windows 10 バックアップを作成する

vhdのマウント

vhdのマウント方法は以下を参考にした。
How to mount a VHD file on linux – Exotic Security

linux環境でvhdファイルをマウントするguestmountというツールがあるらしい。 以下でインストールする。

# apt install libguestfs-tools

マウントする。

# guestmount --add 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd -i --ro /mnt/vhd/
  -a|--add image       Add image
  -i|--inspector       Automatically mount filesystems
  -r|--ro              Mount read-only

※5分くらいかかってマウント完了。

マウントしたvhdの調査

f:id:Paichan:20200913231722p:plain L4mpjeというユーザの存在が確認できる。ポートスキャン結果より、sshが開いているため、L4mpjeのパスワードを調べたい。
samdump2を使ってパスワードハッシュをダンプするために、レジストリハイブファイルのSAMSYSTEMを使う。 f:id:Paichan:20200913232229p:plain

samdump2を実行。

# samdump2 SYSTEM SAM

f:id:Paichan:20200913232449p:plain L4mpjeのパスワードハッシュが取得できた。一番下の行だけ抽出し、hash.txtとする。左がLMハッシュ、右がNTLMハッシュ。
johnでは平文を取得できなかったため、以下のサービスを使った。
CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.

f:id:Paichan:20200913232755p:plain パスワードbureaulampjeを取得。
※このページでもLMハッシュはからは平文を取得できなかった。

userシェル獲得まで

ユーザ名:L4mpje、パスワード:bureaulampjeでsshログイン。

# ssh L4mpje@10.10.10.134

デスクトップにあるuser.txt見つけた。 f:id:Paichan:20200913233039p:plain

権限昇格のための情報収集

windows-exploit-suggesterを実行しるために、引数として必要なsysteminfoの実行結果の取得を試みたが、systeminfoコマンドは実行できず。 f:id:Paichan:20200913233432p:plain

続いて、アプリケーションに依存する脆弱性を探すために、何がインストールされているかをprogram filesに見に行く。 program files配下にmRemoteNGというフォルダを発見した。リモート接続ツールのようだ。デフォルト以外でインストールされたアプリケーションはこれくらいだったので、mRemoteNGに注目してみる。 f:id:Paichan:20200913234116p:plain

アプリケーションやプログラムの設定を保存しいるRoamingフォルダを見に行く。ここに、多数のバックアップファイル共にconfCons.xmlという名前のファイルが見つかった。 f:id:Paichan:20200913235421p:plain

中身を確認すると、何らかの方法でエンコード、もしくはハッシュ化されたAdministratorのパスワードが見つかる。 f:id:Paichan:20200913235741p:plain

Administratorの平文パスワード取得

見つけた文字列は以下。
aEWNFV5uGcjUHF0uS17QTdT9kVqtKCPeoC0Nw5dmaPFjNQ2kt/zO5xDqE4HdVmHAowVRdC7emf7lWWA10dQKiw==
base64に見えたが、文字数も87文字だし違うようだ。
mRemoteng decrypt passwordで検索すると、以下のサイトが見つかる。これを使ってみる。 github.com

# git clone https://github.com/haseebT/mRemoteNG-Decrypt
# cd mRemoteNG-Decrypt/
# python3 mremoteng_decrypt.py -s aEWNFV5uGcjUHF0uS17QTdT9kVqtKCPeoC0Nw5dmaPFjNQ2kt/zO5xDqE4HdVmHAowVRdC7emf7lWWA10dQKiw==

f:id:Paichan:20200914000624p:plain 抽出成功。パスワードはthXLHM96BeKL0ER2とわかる。

root(Administrator)シェル獲得まで

見つけたパスワードでssh接続して、Administratorのシェルをゲットして終了。

# ssh Administrator@10.10.10.134