Hack The Boxとは？[初学者向け]

※本記事は[網屋 Tech Blog Advent Calendar 2024](https://qiita.com/advent-calendar/2024/amiya)の2024/12/21分の記事です。

ハッキングスキル0の自分が学習のために一ヶ月間「[Hack The Box](https://www.hackthebox.com/)」を利用してみました。
未熟者なので大変恐縮ですが、今回はHackTheBoxについて初学者向けになるような記事を書いてみようかと思います。
これから始めようと思っている方の参考になれば幸いです。

## なぜHack The Boxを始めたか
サイバーセキュリティの勉強を進めていく中で、ペネトレーションテストやEthical Hackingに興味を持ったのがきっかけです。
攻撃者がどのようなツールを使い、どのような方法で攻撃を仕掛けているのかを知りたいと思っていたのですが、書籍だけの勉強ではどうしても飽きてしまう性格なので、実際に手を動かしながら学べる環境を探していました。
そんな時に見つけたのが[Hack The Box](https://www.hackthebox.com/)です。

## Hack The Boxとは？

Hack The Box(以下HTB)は、実践的なハッキングスキルを磨けるオンラインプラットフォームです。自分のスキルレベルに応じた課題を解きながら、ペネトレーションテストに関する幅広い分野を実践的に学べます。
HTBの魅力は、学習を安全かつ合法的に行える点です。現実の環境では試せないような攻撃手法も、この仮想環境なら思う存分練習できます。また、初心者から上級者まで取り組める多様な課題が揃っているため、学習者それぞれのペースでスキルを伸ばしていくことができます。

### HTBの特徴

#### 仮想環境での実践的な課題
特定の課題が用意された仮想マシンを攻略してきます。先にも述べましたが、HTBで脆弱性を有した仮想環境を提供してくれているので、安全かつ合法的にリアルなシステムに近い環境でのトレーニングが可能です。各課題は基本的に「flag」を取得することを目的としており、取得したflagを提出して、正しいものであれば課題クリアとなります。

#### 多様な課題

HTBでは、主に以下のような課題が用意されています。

* **StartingPoint**: 初心者用の課題。基礎的なツールやコマンドの使い方を学べる
* **Machines**: 仮想マシンを対象に脆弱性を見つけ攻略する課題
* **Challenges**: 暗号解析、Web攻撃などの特定のスキルに焦点を当てた課題
* **Sherlocks**: 仮想マシンを対象に攻撃者の調査/分析を行う課題。こちらは防御スキルを磨くことができる
* **Pro Labs**: より本格的な演習を目的とした環境が用意された課題。大規模でリアルなシナリオに基づいた環境が用意されている

#### ポイント/ランクシステム
課題には「**Active**」と「**Retired**」という2つの状態があります。

* **Active**: 現役で提供されている課題
* **Retired**: 過去に提供されていた課題

HTBでは、Activeな課題をクリアするとポイントを獲得できます。
獲得したポイントは自身のランクに反映されるので、モチベーションにつながり、学習を進める上での原動力になるかと思います。
Retiredな課題はポイントの獲得の対象外ですが、スキルアップや復習用として活用できます。

:::note warn
無課金だと利用できるretiredマシンの数に制限がある点に注意
Vip以上にUpgradeすれば制限なく利用可能
:::

#### その他

以下のようなものも提供されているようなので気になる方は是非見てみてください。
* **Tracks**: 企業やユーザーが作成した課題のリストが公開されている。自分でリストを公開することも可能
* **HTB Academy**: 基礎から応用まで学べるコースが提供された学習プラットフォーム

## Hack The Boxを進めるための準備

自分のマシンにHTBへ接続するための仮想環境を用意しましょう。

調べてみるとすぐに出てくるかと思うのですが、多くの人が**Kali Linux**というディストリビューションを利用しているようです。
KaliはDebianベースのLinuxで以下のような点が優れています。

* ハッキングツールが大量に積まれている
* 辞書ファイル（wordlist）などのリソースが充実している

Debianベースなので情報が豊富な点もいいですね。
なので、kaliを導入することをまず検討してもいいでしょう。

Kaliの導入に関しては、偉大なる先人の素晴らしい下記の記事があるのでこちらを参考に導入して頂ければと思います。

https://qiita.com/v_avenger/items/c85d946ed2b6bf340a84

HTBが提供するOpenVPN設定を行い、仮想マシンに接続します。これで、学習環境が整います！

:::note info
一応HTBにはPwnBoxというLinuxインスタンスを利用できる機能があるのですが、Vip+アカウント以外には利用制限があり[^KEY3]、すぐに制限に達してしまうのであまりお勧めしません
:::

## 何から始めればいいの？

HTBを始めたばかりの方は**StartingPoint**の課題から始めていきましょう。

これらの課題はこまかいタスクに分割されているので、基本的なツールの使い方やflag取得までの流れを段階的に学べるよう設計されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/7dfec228-9ade-f9b6-f8bf-a9f39c849ece.png)
Taskを見ても何をすればいいのか分からないという方はWriteupやWalkthroughを利用してみてください。StartingPointの課題やActiveでない課題については、解法を公開することが許可されています。公式や他ユーザーのWriteupやWalkthroughを参考にしつつ、ツールやコマンドの使い方を学んでいくと各課題が解けるようになってきますし、課題やTaskの意図が見えてくるかと思います。

ちなみに、学習時にツールやコマンドについてチートシートを作っておくとよいかと思ます。すぐに参照できて便利ですし、復習にも利用できるのでおすすめです。

## StartingPointが終わったら？

StaringPointを通じて以下のようなことを学んだかと思います。
* Nmapを用いた基本的なネットワークスキャン
* 初歩的な脆弱性評価とエクスプロイト実行
* シンプルな権限昇格

ここからはChallengesやMachinesに挑戦してみましょう！
より複雑な課題が増え、StartingPointでは利用しなかったツールの利用やスキルが求められるようになってきます。
焦らずにまずRetiredな課題を活用してスキルを身に着けていき、Activeな課題に挑戦していきましょう！

## Preignition Writeup

どんな問題があるのか気になる方もいると思うので今回はStartingPoint Tier1のPreignitionを解いてみましょう！PreignitionはnginxのHttpサーバにアクセスしてflagを取得するという課題です。
自分で解きたい方や見たくない方は飛ばしてください。
※知識を問う問題は飛ばしてあくまでもflagを取るまでの流れの説明です。

<details><summary>Preignition Writeup</summary>

まずはマシーンをSpawnしましょう！

![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/116af7af-34e0-b315-7cf7-5adeb843bd76.png)

立ち上がるとこのように攻撃対象のマシンのIPアドレスが表示されます。

![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/1f37489f-c8f1-76df-6184-01cece8fe929.png)

IPアドレスが分かったので、まずは名前解決ができるように`/etc/hosts`にipアドレスとホスト名を登録しましょう。
```
sudo sh -c "echo '10.129.35.133\tPreignition.htb' >> /etc/hosts"
```
次に対象マシンでどのポートが解放されているかnmapコマンドで確認します。
```
sudo nmap -sV -sC preignition.htb
```
上のコマンドを打つとポートが確認できます。
![step2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/ef2dcb62-4edc-81f0-d5e0-5eabe06e6b26.png)
返ってきた結果を見てみると、nginxのHttpサーバが80番ポートで開いていますね。
アクセスしてみましょう！
![step3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/006e7806-f5a8-6a76-a6a5-3138165fae21.png)
なんにも手が加えられていない状態ですね。

他にアクセスできるページがないか探してみたいので、gobusterというディレクトリやファイル、DNSサブドメインなどをブルートフォースするためのツールを使ってみます。
kaliの`/usr/share/wordlists/dirb/`配下にディレクトリのブルートフォースに使える`common.txt`というものがあるので、それを使って探索します。
```
gobuster dir -u preignition.htb -w /usr/share/wordlists/dirb/common.txt
```
![step4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/2a2afcd9-f8ba-2258-db6d-ad641d3660c0.png)

結果を見ると`/admin.php`というページがあるようです！アクセスしてみましょう！

![step5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/11b2ab1b-a0e6-936c-6dd2-104c41ee6308.png)

管理者コンソールにログインするためのページが出てきました！
ユーザー名とパスワードが分かれば侵入できそうです。本来ならばパスワードブルートフォースやsqlインジェクションをつかって侵入を試みるのでしょうが、今回は何も手を付けられていないウェブページのようなので、初期設定で使用されているであろう値を入れてみます！

![step6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/2be4e1f7-85ef-77ff-56b7-f47ec6cffdf7.png)
User:admin/Password:adminを入力してみました。すると...
![step7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956790/316d2762-2d54-2453-b6af-5a3aa9b7af7a.png)

無事ははいれました！画面にflagが表示されているのでこれを提出すれば本課題は完了となります。
簡単でしたね！

</details>

## 最後に

HTBを一ヶ月利用して感じた良い点と悪い点を書いておきます。

* いい点
    * **実践的なスキルが身に付く**: 課題を通じて手を動かすことで攻撃の流れやツールの使い方を理解できる
    * **安全な環境で学べる**: 合法的でリスクの少ない環境が提供されているため、安心して挑戦できる
    * **多様なスキルが学べる**: 暗号解析からWeb攻撃、リバースエンジニアリングまで幅広い分野を体系的に学習できる
    * **コミュニティの存在**: 他のユーザーと情報交換をしながら学べるため、一人で悩むことが減る
    * **リアルな環境** : リアルな環境が用意されているので「ハッキングしている!」という満足感が得られる
* 悪い点
    * **初学者には難しい**: StartingPointは初学者向けとされているが、タスク間が断片的で全体像を掴みにくい部分がある。初学者には目的が見えにくいと感じることが多かった

いい点/悪い点についてはこんなところでしょうか。

**初学者には難しい**という身も蓋もないことを一応悪い点としてあげていますが、正直そこまで不満には思っていないです。
時間こそかかりますが、WalkthroughやWriteupを参考に学習していけばちゃんと意図が掴めるし、その分ちゃんとした理解につながっているという感覚もあるので。

:::note info
どうしても苦しいという方は[TryHackMe](https://tryhackme.com/)というサービスを利用してみるというのも手かもしれません。私は利用したことがないですがTryHackMeのほうが初学者向きみたい[^KEY1][^KEY2]です。
:::

また、補足ですがVipやVip+にするか悩んでいる方は以下の記事が参考になるかとおもいます。
[Hack The BoxはVIP+に課金するべきか](https://p-0.me/b/p/607/)

以上です！
一緒にHack The Boxを楽しみましょう！見ていただきありがとうございました！

[^KEY3]: [Hack The BoxはVIP+に課金するべきか](https://p-0.me/b/p/607/)
[^KEY1]: [今更ながらHack The BoxとTryHackMeを調べて簡単に比較してもらった。Perplexityに。｜あかさ](https://note.com/akasa33/n/n1a6f0411c2b9)
[^KEY2]: [ハッキングの学習に便利なサイトまとめ #Hacking - Qiita](https://qiita.com/moffy/items/1fe6241c6b01eb45e638)]