【Hack The Box】Bastion Walkthrough
はじめに
ポートスキャン
# nmap -sC -sV -Pn 10.10.10.134
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
何も検知されない。
共有フォルダのアクセス権限の確認
# smbclient -L 10.10.10.134 -U guest
$
がついているフォルダにアクセスするには、Windows側でユーザとして登録されており、かつパスワードが設定されていなければならない。
$
がついていないものは手動で共有設定にしたものであり、今回はBackups
にアクセスできそうということが分かる。
smbmap
だと以下のように出力される。
# smbmap -H 10.10.10.134 -u guest
※user名指定しないと、実行失敗。かつ、ユーザ名は適当でOK。
Backupsフォルダのマウント
smbclient
で接続しても良いが、linuxの標準コマンドを使いたいので、マウントする。
# mount -t cifs -o username=guest //10.10.10.134/Backups /mnt/Backups
/mnt/Backups/WindowsImageBackup/L4mpje-PC/Backup 2019-02-22 124351
に拡張子がvhd
のサイズがでかいファイルがある。
このバックアップファイルはハードディスクの完全なバックアップである、システムイメージと呼ばれるもの。
参考: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の調査
L4mpjeというユーザの存在が確認できる。ポートスキャン結果より、sshが開いているため、L4mpjeのパスワードを調べたい。
samdump2
を使ってパスワードハッシュをダンプするために、レジストリハイブファイルのSAM
とSYSTEM
を使う。
samdump2
を実行。
# samdump2 SYSTEM SAM
L4mpjeのパスワードハッシュが取得できた。一番下の行だけ抽出し、hash.txtとする。左がLMハッシュ、右がNTLMハッシュ。
john
では平文を取得できなかったため、以下のサービスを使った。
CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.
パスワードbureaulampje
を取得。
※このページでもLMハッシュはからは平文を取得できなかった。
userシェル獲得まで
ユーザ名:L4mpje、パスワード:bureaulampjeでsshログイン。
# ssh L4mpje@10.10.10.134
デスクトップにあるuser.txt見つけた。
権限昇格のための情報収集
windows-exploit-suggester
を実行しるために、引数として必要なsysteminfo
の実行結果の取得を試みたが、systeminfo
コマンドは実行できず。
続いて、アプリケーションに依存する脆弱性を探すために、何がインストールされているかをprogram files
に見に行く。
program files配下にmRemoteNG
というフォルダを発見した。リモート接続ツールのようだ。デフォルト以外でインストールされたアプリケーションはこれくらいだったので、mRemoteNG
に注目してみる。
アプリケーションやプログラムの設定を保存しいるRoaming
フォルダを見に行く。ここに、多数のバックアップファイル共にconfCons.xml
という名前のファイルが見つかった。
中身を確認すると、何らかの方法でエンコード、もしくはハッシュ化されたAdministratorのパスワードが見つかる。
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==
抽出成功。パスワードはthXLHM96BeKL0ER2
とわかる。
root(Administrator)シェル獲得まで
見つけたパスワードでssh接続して、Administratorのシェルをゲットして終了。
# ssh Administrator@10.10.10.134