HTBでHackerに到達するまでの振り返り

Table of Contents

はじめに

Hack The Box(以下HTB)に取り組み、Hackerに到達しました。このエントリではHackerへ到達するまでにやったことと感想を共有します。

Achievement for becoming a Hacker Rank

HTBとは

CTFライクの小問に挑戦するChallengeやペネトレーションテストのスキルを活かして問題を解くMachineなどを提供するプラットフォームです。

Challengeの目的は HTB{.*}の形式のFlagを見つけて回答することです。ほぼCTFなので説明は割愛します。

Machineの目的は、IPアドレスでアクセスできるLinuxかWindowsのマシンに配置されている user.txtroot.txt の中身を取得して回答することです。もちろんマシンに接続するためのクレデンシャルは共有されないので、脆弱性を悪用して内部に侵入する必要があります。Machineは全員が挑戦できるMachineとVIP会員のみが挑戦できるRetired Machineに大別されます。VIP会員になるためには課金が必要です。

いずれの問題も難易度があり、(Very Easy) < Easy < Medium < Hard < Insaneの順で難易度が設定されています。解けた人がレビューした難易度の分布や解けた人数も閲覧できるので、難易度感のズレはあまり感じませんでした。問題を解くとポイントを取得でき、ポイントに応じてランクが割り振られます。今回到達したHackerは全体の1/5以上のポイントを保持していることを意味します。

HTBの始め方はググれば出てくるはずなので本エントリでは紹介しません。

やったこと

Retired MachineのWriteupを読んで問題を解く際の流れを確認しました。Retired MachineではないのにWriteupを公開していた方がいたのですが、アレはセーフなんですかね?

それはさておき、問題を解くときは以下の順に行うことが多かったです。

  1. 提示されたIPアドレスが紐づけられているドメインを /etc/hosts に登録する
  2. nmapで対象のIPアドレスにTCP/UDPスキャンし、何らかのアプリケーションがバインドしているポートを探す
  3. nmapの結果やサーブされているアプリケーションを見つつ、user.txtを取得する方法を探す
  4. user.txt を取得する
  5. ルートに権限昇格する方法を探す
  6. root.txt を取得する

私は難易度EasyとMediumのMachineに挑戦しました。Easy Machineはググったエクスプロイトを利用すれば解ける問題が多く、Medium Machineはググった情報をもとに自分でエクスプロイトを組み立てる必要のある問題が多かったです。

user.txtを得るまで

問題に応じて解き方はバラバラでした。例えば、RCEを悪用してリバースシェルを張ったり、SSRFで得たシステムイベントデータからユーザパスワードを取得してSSH接続したり、~/.ssh/id_rsa をLFIで読み出してSSH接続したりするなどです。

難易度EasyのMachineは「ソフトウェア名 バージョン exploit」でググるとエクスプロイトが見つかることが多かったので、比較的簡単に user.txt が得られました。大体RCEが刺さるのでリバースシェルを張るだけで解ける問題が多かった印象が強いです。

私は毎回リバースシェルのコマンドを忘れるので、Reverse Shell Generatorが役に立ちました。問題によってはBash以外のリバースシェルを要求されることもあるので、そういう時にも嬉しいWebサービスです。

また、そもそも対象のWebアプリケーションの脆弱性が見つからない場合は、dirb を用いて隠しファイルを見つけることもありました。辞書はRockyou.txtよりもSecListsの方が豊富なので、こちらを利用していました。普段CTFをやる身としては、このようなReconnaissanceを要する問題は綺麗ではないので嫌いです。現実世界では必要なことなのだと思いますが、問題として提供するならこういう不確定要素は嬉しくないなと思いました。

難易度MediumのMachineは「ソフトウェア名 バージョン exploit」でググると解説記事がポツポツ見つかることが多かったです。そのため、「問題になっているということはググれば方針が見つかるはず」というメタ的な解き方をした問題が多かった気がします。

root.txtを得るまで

ルート権限で動作するアプリケーションの脆弱性を利用して権限昇格することが多かったです

私が挑戦した問題は sudo -l で NOPASSWD が指定されているアプリケーションが分かるものが殆どでした。そのため、そのアプリケーションの脆弱性を利用してMachine内部から外部にリバースシェルを張るなり、管理者権限でLFIするなりして root.txt を得ることが多かったです。

また、全く情報がない場合もあるので、その場合はよく権限昇格に利用されるファイル等を見つけてくれる linPEAS を利用することもありました。

おわりに

**ガッと挑戦してHackerまで行けてとても嬉しかったです!**以前挑戦した3年前はEasy Machineでさえヒィヒィ言って解いていたのですが、今回はEasy Machineは割とシュッと解けたので成長を感じられました。

このエントリで興味を持った方がいれば、ぜひHTBに挑戦してみてはいかがでしょうか?

Posted on Feb 28, 2023