サイト内の現在位置

トレーニングコンテンツ:「Hack The Box」を触り始めてみた

NECセキュリティブログ

2020年6月19日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの中島です。
今回は、サイバーセキュリティのスキル向上に役立つオンラインプラットフォーム「Hack The Box」と、実際にプラットフォームで学べるラボを1つ取り上げてご紹介します。

Hack The Box のダッシュボード

Hack The Boxとは

「Hack The Box」はペネトレーションテストのスキル向上に役立つオンラインプラットフォームです。このプラットフォーム上には、ラボと呼ぶ検証環境があります。これらのラボを使ってユーザは学習を進めます。利用登録をするためには簡単な Invite Challenge を解く必要があります。
その他、ユーザが効率的に学ぶことができるように下記のような環境が用意されています。

  • 専用のコミュニティが用意されている
  • Retired Machine(いわゆる過去問)はWalkthroughが公開される
  • 各問題にはユーザの評価(問題の質・難易度)をつけることでき、それを参照できる

ラボ上に用意されている問題には以下の2種類があります。

  • Machine:脆弱性を持つ攻撃可能なマシン。シェルを奪取するなどして特定の情報(user.txtとroot.txt)を入手する問題。
  • Challenge:いわゆるJeopardy問題。問題文を読んで情報(Flag)を入手する問題。

上記の問題は高頻度で更新され、新しい問題はActive、古い問題はRetiredとなります。
Activeである問題を攻略することでポイントが付与されます。ユーザには、ポイント数に応じてランクが決められます。このランクは最下位のNoobから最上位のOmniscientまでの7段階に分かれています。
ちなみに、セキュリティ技術センターには上位2番目の称号である「guru」を手にしているメンバーもいます。

Retiredの問題はポイントが付与されませんが、Walkthroughも公開されるため、勉強用として解くことができます。

Retired Machineの攻略紹介

Hack The Box の規約により、ActiveなMachineのWalkthroughを公開することは禁止されています。そのため今回は Retired Machine (すでにポイントの対象外となった過去問)の1つである「bank」というマシンの攻略アプローチを紹介いたします。

攻略アプローチを考えるにあたり、ここではMITRE ATT&CKをガイドラインとして活用してみます。
MITRE ATT&CKに照らした攻略手順の概要は以下の通りです。
詳細な手順については次節から述べていきます。

Tactics Technique Software
TA0007: Discovery T1046: Network Service
Scanning
nmap
TA0009: Collection T1083: File and Directory Discovery Gobuster
TA0006:Credential Access T1081: Credential in Files -
TA0003: Persistence T1100: Web Shell -
TA0009: Collection T1083: File and Directory Discovery LinPEAS
TA0004: Privilege Escalation T1166: Setuid and Setgid -

攻略手順概要

1.探索と情報収集(TA0007、TA0009)

まずは、攻撃対象のマシンについて知るため、スキャナを用いて探索を行います。
今回はnmapとGobusterを用いました。
nmapを用いてポートスキャンを行ったところ、以下のポートが使用されていることが確認できたため、まずは与えられたIPアドレスでブラウザからアクセスします。

Nmapの実行結果(抜粋)

するとApacheのデフォルトページが出てきました。バーチャルホストの設定がされているようなので、/etc/hosts に bank.htb を追記してhttp://bank.htbにアクセスします。すると、HTB BankのLoginページが表示されました。

簡単なSQL injectionを試してみますが、認証のページには特に問題がなさそうです。

次に、セキュリティアセスメントに用いられるデータリストであるSecListsから適当な辞書を用いてwebコンテンツスキャナーであるGobusterをかけてみると、以下のファイルの存在を確認できました。

Gobusterによるスキャン結果(抜粋)

2.認証情報へのアクセス(TA0006)

手に入れた情報をもとにローカルプロキシを介してページにアクセスしてみました。
Support.phpやindex.phpにアクセスするとlogin.phpにリダイレクトされることがわかります。リダイレクト前のページに直接アクセスできることも確認しましたが、まずは存在が確認できた他のファイルも覗いてみることにします。

/balance-transfer/ にアクセスすると、以下のようにファイルが並んでいます。

適当なファイルを開くと、以下のようにBank Reoprtが確認できます。
認証情報や口座情報が暗号化されて管理されているようです。

続けて、このように大量のファイルが並んでいるときには他と異なる部分にヒントがあることが多いので仲間はずれがないかを確認します。すると、1つだけサイズが小さいファイルがありました。開いたところ、認証情報と思しき情報が平文で記載されていました。
暗号化に失敗したようです。

68576f20e9732f1b2edc4df5b8533230.acc の中身

上記の情報を用いて先ほどの /login.php からログインを試したところ、ダッシュボードにアクセスできました。

3.webシェルの実行(TA0003、TA0009)

ダッシュボードにログインしてシステムを探索したところ、ファイルアップロードの機能がありました。

Support画面(ファイルアップロード機能がある)

まずはphpファイルのアップロードを試みましたが、画像ファイルしかアップロードすることができないという旨のエラーが出てしまいます。
そこで、ソースコードに目を通したところ、以下のコメントを発見しました。

<!-- [DEBUG] I added the file extension .htb to execute as php for debugging purposes only [DEBUG] -->

コメントに従って、ここでは任意のコマンド実行をするためのphpのコードを.htbに拡張子を変更してアップロードを試みたところ、アップロードができました。そして、該当ページにアクセスしたところ、pwdコマンドを実行できることを確認しました。

pwdコマンドが実行できています。

今回は実際にreverseshellを仕掛けるスクリプトをアップロードし、手元の検証環境でnetcatを用いて接続を待ち受けます。
ブラウザ上で「Click here」を押したところ、シェルが取れました。

/home/配下を探し、user.txtを手に入れました。

4.権限昇格(TA0004)

次にroot.txtを入手するために権限昇格を狙います。
権限昇格のためのツールである「LinPEAS」を用いてSUIDがセットされたファイルを探したところ、/var/htb/bin/emergency というファイルを発見しました。

発見したファイルを実行します。

rootユーザになることができたため、 /root/配下を確認し、 root.txtを手に入れました。
これで本マシンの攻略は完了です。

おわりに

本記事では、サイバーセキュリティのスキル向上に役立つオンラインプラットフォーム「Hack The Box」を紹介しました。
今回紹介したRetired Machineの他にも環境構築不要ですぐに取り組むことのできるラボ環境がたくさん提供されています。これからもコツコツと取り組んでいきたいと思います。
目指せOmniscient!

参考情報

執筆者プロフィール

中島 春香(なかしま はるか)
セキュリティ技術センター リスクハンティングチーム

リスクハンティングチームにて、ペネトレーションテストを通じて安全なシステムの構築支援の業務に従事。
社外ではCTF for GIRLSの副代表として主にWeb分野の問題作成やワークショップ企画設計を担当。「Hardening II SU」にてMVV(Most Valuable vendor)賞受賞。SANS SEC504メダルを保持。
趣味は美味しいものやワクワクすることを探し歩くこと。