Using the Metasploit FrameworkモジュールのMetapreterセクションの記録
HackTheBox AcademyのUsing the Metasploit FrameworkモジュールのMetapreterセクションについて記事を残します。
(Tier0モジュールに限りソリューションの公開が許可されています。)
このセクションには、以下の2つの問題が含まれます。
ターゲットの調査
まず、ターゲットIPに対してnmapでサービス情報を収集します。
以下の3つのポートが怪しそうです。
- 445/tcp: Microsoft-DS(SMB共有)
- 3389/tcp: Microsoft Terminal Services(RDP)
- 5000/tcp: HTTPサービス(Microsoft IIS 10.0)
SMB共有、RDPサーバーに対する攻撃を試みましたが脆弱性情報を見つけられませんでした。そこで、httpサーバーを中心に調べてみます。
webアプリケーションの調査
ブラウザで5000番ポートにアクセスし、FortiLoggerというWebアプリケーションが稼働していることがわかりました。
FortiLoggerの脆弱性情報を調べてみると、バージョン4.4.2.2にファイルの無制限アップロードに関する脆弱性が存在するようです。
ログイン画面に戻り、適当にadmin:admin
で入力すると通ったので、バージョン情報を収集します。
Fortiloggerのバージョンが4.4.2.2であり、先ほどの脆弱性を持つバージョンだったので、metasploitでモジュールを探します。
Metasploitでの攻撃準備
msfconsoleを立ち上げ、fortilogger関連のexploitを探します。
exploit/windows/http/fortilogger_arbitrary_fileupload
が使用できそうです。
options
コマンドで、設定項目を見てみます。
必要な項目を設定してexploitを実行します。
(余談ですが、LHOSTにはアドレスだけでなくNI名でも設定できるみたいです。)
setg RHOSTS <TargetのIP>
set RPORT 5000
set LHOST tun0
攻撃が成功し、セッションが確立されました。
権限の確認
getuid
コマンドでシェルのユーザー名を確認します。
(1問目の回答)
NT AUTHORITY\SYSTEM
というユーザー名らしくないユーザー名に戸惑いましたが、WindowsOSの最高権限アカウントの名前のようです。
(参考記事:「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典:Windows NT系)
NTLMパスワードハッシュの取得
そもそもNTLMパスワードハッシュについて全く知りませんでした。
Windowsのパスワードはハッシュ化して保存されており、そのハッシュ化に用いるアルゴリズムがNTLMのようです。
(参考記事:WindowsのLM、NTLMハッシュについて)
また、一部の認証ではハッシュ値のままで認証を通すpass-the-hashができるそうです。
これらのハッシュ値の取得はかなり大変そうなのですが、Mimikatsモジュール(別名kiwi)を用いることで簡単に取得できます。
(参考記事:パスワードってどこにあるの?その1)
kiwiをロードした後、システム権限のある状態でlsa_dump_samを実行します。
これによって、Security Account Managerデータベースにアクセスし、NTLMハッシュ値を含む、LSAプロセスで用いる認証情報を取得できます。
htb-studentユーザーのHash NTLMを取得して、2問目も完了です。
まとめ
Using Metasploit FrameworkのMetapreterセクションでは、以下の内容を学びました:
- 脆弱性の特定とMetasploitによるエクスプロイト
-
NT AUTHORITY\SYSTEM
でのシェル取得 - Mimikatzを用いたNTLMパスワードハッシュの取得