半年ぶりの TryHackMe で Advent of Cyber 2023 に挑む 3日目【Advent of Cyber: Day 3】

3日目。

[Day 3] Hydra is Coming to Town

Using crunch and hydra, find the PIN code to access the control system and unlock the door. What is the flag?

VM を起動後、VPN に接続して http://xxx.xxx.xxx.xxx:8000/ をブラウザで開くと金庫のようなものが表示される。

試しに 012 と入力するとアクセス拒否される。

今回の流れは以下のようになる。

  1. Crunch を用いてパスワードリストを作成する
  2. 作成したパスワードを使って Hydra で総当たり攻撃を行う

1. Crunch を用いてパスワードリストを作成する

今回解析するパスワードは 3 桁と決まっているので、解説に従って以下のコマンドで 3 桁のパスワードリストを作成する。

crunch 3 3 0123456789ABCDEF -o 3digits.txt

2. 作成したパスワードを使って Hydra で総当たり攻撃を行う

パスワードリストができたので、以下のコマンドで攻撃を行うと正解のコードが出力される(-v オプションは詳細表示、省略可)。

hydra -l '' -P 3digits.txt -f xxx.xxx.xxx.xxx http-post-form "/login.php:pin=^PASS^:Access denied" -s 8000

正解のコードを入力すると AC Temperature の文字とともに設定画面が出現するので、真ん中の Unlock Door をクリックするとフラグが得られる。ちなみに AC Temperature とは air conditioning temperature の略で要は「エアコン温度」ということらしい。エアコン温度調整のついでにドアの鍵も開けられちまうんだ!

解説

今回は 2 つの自動化ツールを使用している。

  • 000001、… FFF のリスト作成 → Crunch
  • リストを見ながらひとつひとつ入力し、正解、不正解を判断 → Hydra

THM の解説パートにもある通り、Hydra を使うときには引数として様々な情報を入力しないといけないので、ゼロからやるときにはブラウザの開発者モードなりを使い下調べを行う必要がある。今回のターゲットページでは

  • post を使用して pin コードを送っている
  • login.php でログインの可否を判断している
  • pin コードの変数として pin を使っている
  • ハズレページには "Access denied" の文字列が含まれている

という情報をあらかじめ知っている前提で攻撃が行われる。したがって、例えば pin コードの変数が pass でハズレページには「ハズレです」と表示されるようなら以下のようなコマンドを打つ感じになると思う(日本語に対応しているかは知らん)。

hydra -l '' -P 3digits.txt -f xxx.xxx.xxx.xxx http-post-form "/login.php:pass=^PASS^:ハズレです" -s 8000

というわけで、もし正解ページにも "Access denied" や「ハズレです」の文字列があった場合は多分スルーされるんじゃないかなぁと。

感想

Crunch は初めて使うけど、要はリスト作って Hydra でドーン、やろ?簡単やん!というわけである。ところで、図書館で街のフリー WiFi を使って問題を解いたのだが、そんな環境で果たして攻撃とかしてもよかったのだろうか。