NFLabs. エンジニアブログ

セキュリティやソフトウェア開発に関する情報を発信する技術者向けのブログです。

Hack The Box Business CTF 2021 参加記

はじめに

こんにちは、Offensive Teamの保要です。普段はセキュリティエンジニアとして、Offensive Securityに関するツールの検証やTrainingなどで使用する演習環境を自動構築するシステムの開発を行っています。

NFLabs.では、攻撃者の視点で脆弱性を見つけ対策を提案するペネトレーションテスト業務(Offensive Team)や脅威情報の収集やマルウェア解析などを実施するセキュリティオペレーション支援業務(Defensive Team)を行っていますが、高度なセキュリティスキルが要求されるため、業務で必要とされるセキュリティスキルを日々磨いています。

その研鑽の一環として、7月にHack The Box Business CTF 2021というセキュリティコンテストにOffensiveとDefensiveのTeamに所属する社内の有志を集めてチーム「NFLabs」として出場し、374チーム中6位という成績を収めました。

この記事では、Hack The Box Business CTF 2021の概要、出題された問題ジャンルと各ジャンルの傾向、競技インフラについて紹介します。

目次

コンテストの概要

Hack The Box Business CTFは、セキュリティ教育サービスを提供するHack The Box社が主催する企業対抗のCTF (Capture The Flag)です。

www.hackthebox.eu

Hack The Box は、ペネトレーションテストや防御を考える上で必要な攻撃者目線のスキルを磨くためのサービスとして日本でもここ数年ユーザが増えてきていると思います。弊社内でも、「Hack The Box もくもく会」というHack The Boxのマシンに黙々と取り組む勉強会が毎週開催されており、多くの社員がセキュリティスキル向上のための研鑽を積んでいます。

Business CTFは世界中の企業チームが参加でき、企業のサイバーセキュリティチームや社内ITチームを参加対象としています。チームは同じ企業のメンバー10人以下で構成する必要があり、同じ会社から1チームのみ参加可能でした。*1 世の中で行われている多くのCTFはチーム構成に制限がなく社会人から学生まで様々な人が参加可能ですが、今回は同じ企業でチームを組む制約があってか普段のCTFとは顔ぶれが全く違いました。

ちなみに大学生チームを対象とするHack The Box University CTFもあるそうです。

www.hackthebox.eu

コンテストの期間は 2021/07/23 12:00 - 2021/07/25 18:00(UTC)の54時間 で、一般的に開催されるコンテストより少し長めの設定でした。

出題された問題ジャンル

世間で一般的に開催されているCTFの多くはパズル要素が強く、現実のセキュリティのテーマとかけ離れた問題が多いです。 しかし今回のCTFでは、競技のページにも "latest vulnerabilities, state-of-the-art attack techniques, challenges for every skill level based on real-world attack scenarios! "と書かれているように、 現実に見つかっている脅威や脆弱性、設定不備などを題材とした問題が多かったです。 出題された問題のジャンルも一般的なCTFで出題されるCrypto, Web, Pwn, Reversing, Miscの他に、他のコンテストではあまり見られないFullPwn, Cloudといった一風変わったジャンルもありました。

各ジャンルの概要と特徴を紹介します。

FullPwn

Hack The BoxやOSCPのマシンのように、与えられたIPアドレス情報をもとにペネトレーションテストの要領でScan, Enumeration, Exploit, Privilege Escalationを行い、user権限とroot権限でそれぞれ閲覧できるflagファイルを取得する問題です。 このような問題は、Boot2Rootと呼ばれることもあります。

問題は、Windows 4台、Linux 4台、Active Directory 2台があり、CVEが発行されている既知の脆弱性があるアプリケーションに公開されているExploitを実行するだけの簡単な問題から、アンチウイルスを回避する必要がある難しい問題まで幅広い難易度の問題が出題されました。さらには、PrintNightmare(CVE-2021-34527)など比較的新しく見つかった脆弱性を悪用する問題も出題されました。

Crypto

暗号に存在する脆弱性をついてFlagを取得する問題です。

Cryptoの問題は通常のCTFでは暗号化されたファイルを渡されてそれを復号するような問題が多いですが、今回のCTFではDockerのコンテナを渡されてそこから暗号の脆弱性をついてFlagを取得するタイプの問題が多かったです。

CTFでは定番のRSAに関する問題だけでなく、昨年ZeroLogonの脆弱性(CVE-2020-1472)で問題となったAES-CFB8を題材とした問題も出題されました。

Forensics

フォレンジックに使用される技術を駆使して、Flagを取得する問題です。 一般的なCTFで出題されるフォレンジックの問題はファイルからデータを復元する問題が多いですが、リアルの攻撃で使われるテクニックを用いた文書ファイルの解析やインシデント対応に近いフォレンジックの問題が多かったです。

問題の題材は、難読化されたマクロやPowerShellスクリプトの解析、Excel 4.0 マクロが使われた擬似的なマルウェアの検体の解析、Pythonで作られたマルウェアに感染したVMフォレンジック、攻撃者に侵入されたメモリイメージのフォレンジックでした。

Pwn

リモートで動いているアプリケーションの脆弱性をついてFlagを取得する問題です。

オーソドックスなスタックオーバーフローやMIPSアーキテクチャのExploit、ヒープオーバフローの問題が出題されました。 出題傾向は一般的な CTF の pwn 問題と大きく変わりませんでしたが、珍しい MIPS の問題が出題されていたのが特徴的でした。

Reversing

実行ファイルやシェルコードをリバースエンジニアリングし、挙動を明らかにする問題です。

暗号化されたデータを復号する処理を特定してデータを復号する問題やC2サーバに送られるデータをデコードする問題が出題され、一般のCTFと比べて現実のマルウェアが使用するテクニックが題材とされた問題が多かったです。

Misc

各ジャンルに当てはまらない"その他"のジャンルの問題です。

今回はDiscordのチャンネルに入っているBotにコード実行させてFlagを読み込ませる問題の1問だけでした。

Web

Webアプリケーションの脆弱性をついてFlagを取得する問題です。

簡単なOSコマンドインジェクションの問題やGraphQL Injection、世の中のWebアプリケーションで見つかることが多いInsecure Deserializationの脆弱性が題材として出題されました。 一般的なCTFよりもRCE(Remote Code Execution: 任意コード実行)に最終的に持っていく問題が多かったです。

Cloud

FullPwnと同様にIPアドレスの情報をもとにScan, Enumerationを行い、クラウドサービスの設定不備の脆弱性を使ってサーバ内のflagファイルを取得する問題です。

ローカルでAWSのサービスがエミュレーションできるLocalStack の上に構築されたlambda、S3の設定不備を悪用する問題やKubernetesのサービスアカウントの権限不備を悪用する問題が題材として出題されました。

競技インフラ

一般的なCTFでは問題サーバは外部公開されており、インターネット越しに運営が用意した脆弱性のあるサーバに対して攻撃を行いますが、今回のCTFでは問題サーバがVPNを使用しなければ接続できない競技用のプライベートネットワーク上に構築されていて、競技参加者のみアクセスできるようになっていました。 一般のCTFのように問題サーバをインターネット上に外部公開するとExploitが公開されている脆弱性を扱うような問題はすぐに本当の攻撃者に乗っ取られてしまうリスクがありますが、このような方法を取ることでペネトレーションテストで必要なスキルを測る実践的な問題を出題できるようになっていたと思います。

また、一般的なCTFでは問題サーバは他の参加者との共有で常時起動してますが、今回のCTFではチームごとに問題サーバが用意されておりスコアサーバからオンデマンドで起動できるようになっていました。 FullPwnとCloudの問題サーバは仮想マシン、Pwn、Web、Cryptoの問題サーバはDockerコンテナで作られており、それぞれ同時に2台まで起動が可能でした。*2

結果

各ジャンル合わせて全部で44個のFlagがありましたが、NFLabsはこのうち36個のFlagを獲得しました。

f:id:takahoyo:20211005013258p:plain

結果としてチーム「NFLabs」は、374チーム中6位という成績を収めました。 なお、日本から出場したチームの中では1位でした。

f:id:takahoyo:20211003222054p:plain

f:id:takahoyo:20211020130247p:plain

おわりに

一般的なCTFは競うことに重きが置かれており、出題される問題もパズル要素が強く現実の業務に直接フィードバックできる内容は少ないですが、今回のCTFは程よいレベル感の問題で構成され競技として成立させつつも、現実に話題となっている内容を問題として出題することでペネトレーションテストマルウェア解析、フォレンジックなどのセキュリティ業務のトレーニングにもなる良い内容だったと思います。

また、会社のチームとしても今回良い成績を残せましたが、これはOffensive/Defensiveのどちらかに尖ったチーム構成ではなく、Offensive/Defensiveの両方で尖ったメンバーを集められたからだと思います。このようなメンバーを集められるのも弊社の強みですね。

次の記事では、FullPwn、Cloud、Web、Forensicsのジャンルの一部の問題の詳細な解法を紹介します。

*1:複数の国に支社がある場合、同じ会社でも国が異なれば参加可能

*2:最初は同時に1台までしか起動できませんでしたが、競技用のチャットに複数の参加者から同時起動台数を増やす要望が多数あったため2台に増えました