筆者:jptomoya, satoki
はじめに
6月29、30日の2日間にわたり、ハッキングコンテストDiceCTF 2024 Finalsがアメリカのニューヨークで開催されました。弊社メンバーが在籍するCTFチーム「BunkyoWesterns」は、予選に参加した1040チームのうち世界8位の順位で、国内唯一のチームとして決勝に出場しました。
DiceCTF 2024 Finals会場 |
リチェルカセキュリティの社員・アルバイトには、現役でCTFに取り組んでいるメンバーが多数在籍しています。CTFは多種多様な前提、制約、技術領域に触れる絶好の機会であり、業務遂行能力向上にも寄与します。弊社メンバーの自己研鑽を支援するため、渡航費を全額負担し、現地での活動費の一部もサポートしました。
本記事では、弊社メンバーがFinalsで担当したThe Vaultと呼ばれる物理ペンテスト問題、DiceGridと呼ばれるハードウェア構築問題、そして現地での生活をお伝えします。
DiceCTF 2024 Finals
DiceCTFは2021年度より5回開催されており、CTFプレイヤーの中では大変知名度のある大会です。一方でこれまで決勝大会の開催はなく、初めてのFinalsとなりました。今年は予選を勝ち抜いた8チームと米国の高校生4チームの計12チームが集結しました。
DiceCTF 2024 NYC |
競技1日目は予選と同じJeopardyと呼ばれる形式でした。Crypto、Pwn、Rev、Webといったジャンルが出題され、各サービスの脆弱性を突いてフラグと呼ばれる秘密情報を奪取することでポイントが加算されます。所属チームでは問題の進捗をつぶさに確認できるよう、チャットで状況を把握できるようにしていました。
任意コード実行によりフラグを奪取した場面 |
初日のJeopardyでは全チーム中5位の好成績を収めました。ただし、他チームとのポイントも僅差であり、翌日の結果が最終順位に大きく寄与するため気が抜けません。
1日目 Jeopardyの結果 |
2日目に出題された問題の中から興味深かった問題を2つ紹介します。1つ目は物理ペンテスト問題 The Vault で、さながらスパイ映画のようなフィジカルセキュリティの能力が要求されました。2つ目は DiceGrid で、Attack&Defense (A&D) をハードウェアを用いて行う異色の問題でした。
物理ペンテスト問題 The Vault
物理ペンテスト問題では、実際に競技者が物理的な侵入を試みます。オフィスルームを模した部屋がCTF会場に準備されており、隣には部屋を監視する各種センサーをPCに映したモニタルームが用意されていました。
オフィスを模した部屋と監視カメラなどセンサーを映したPC |
この競技ではCTFの1日目にルールが配布されていました。ルールは全チーム共通です。
ルール全文
The assignment
Welcome, newest members of the heist team! Your very first job: recover the flag from the security guard’s office safe. Let’s say they operate security for a casino—very dice related.
Our plan
We know that the office contains a number of security measures. Three of them are known for sure: cameras, the presence of the guard themself, and physical locks on the box containing the flag. Recently, we’ve discovered that some components of the system may be vulnerable to attack. We believe it maybe be possible to
take over the camera feed shown to the monitoring room;
deceive the guard into leaving their post; and
manipulate or bypass the lock protecting the flag.
If it helps, our insider has noticed the guard checking their phone quite often—maybe this is relevant. We also discovered that the camera monitoring system was mistakenly exposed to the public at <https://vault-cameras.mc.ax/>. But we can’t seem to get the site working.
Execution
Luckily, the casino is closed today—so the guard and monitoring team have the day off. While there’s no use breaking in because the lockbox was removed, this is a great opportunity to explore the infrastructure and attempt some attacks while nobody is watching.
If this goes well, we can execute the operation tomorrow. But considering the schedules of security shifts outside the office, we have computed that the window for completing the heist is exactly ten minutes long. You get just one chance (and okay, one mulligan) to get this done.
A warning
Finally, recall that our heist team operates with a high level of internal secrecy for security reasons. We have many operations proceeding concurrently, and it is crucial that you neither interfere with other teams’ tasks nor observe them, no matter how curious you are. If we discover that any such activity has taken place, you will be immediately terminated.
Also, you may notice that some items in the security guard office are marked off with black tape. Our team firmly believes that tampering with such objects is extremely bad luck—so we require all members to heed instructions on tape and avoid fiddling with tainted items.
競技者は警備員の滞在するオフィスルームに忍び込み、ボックスから旗を取り出すことでポイントを獲得します。制限時間は10分です。オフィスには監視カメラ、警備員、物理的なロックの三つのセキュリティが導入されています。これらセキュリティに検知されるとポイントが減少してしまいす。
ルールから読み取れる競技者の目標は以下の3つです。
- モニタルームに表示されるカメラ映像を乗っ取る
- 警備員を騙してオフィス内から離れさせる
- 旗を守るボックスの物理的なロックを突破する
また、カメラシステムは外部に露出している
、警備員が頻繁に電話をチェックしている
といった2つのヒントと、カメラシステムのURLが競技者に渡されています。
カメラの乗っ取り
モニタルームに表示されるカメラに競技者が映り込むと、ポイントが減少してしまいます。これを防ぐためにカメラを乗っ取り、偽の映像に差し替える必要があります。
モニタールームの監視映像 |
カメラシステムは外部に露出しており、URLが競技者に渡されていることからWebアプリケーションの脆弱性をついて映像を差し替えることができると考えました。
チームメンバーのカメラ映像差し替えの試行 |
所属チームではidを切り替える脆弱性でカメラの映像を差し替える試行を重ねていましたが、侵入直前に乗っ取ることができていないことがわかり大きく減点されてしまいました。
警備員の排除
オフィスルームには警備員が常駐しており、侵入を目撃されてしまうとポイントが大きく損なわれます。そのため警備員を何らかの手法で排除しなければなりません。警備員が頻繁に電話をチェックしている
とのヒントから、電話を用いて警備員に偽の連絡を行えばよいと予想できます。
暇を持て余す警備員 (運営) |
所属チームではカメラ映像を差し替えることができませんでしたが、突破した他のチームによると、カメラの元の映像に火のエフェクトを付加することで火災であると誤認させ、警備員を避難させる手法が有効だったようです。想定された解法はカメラシステムから警備員の電話番号を入手し、緊急事態発生の電話をかけることで移動を促す手法だったようです。
物理ロックの突破
最後の関門は旗を守るボックスの物理的なロックを突破することです。
⚠日本では、ロックを開錠するための特殊な器具を正当な理由なく所持することは法律違反となりますので、絶対に行わないでください。当ブログの記事で紹介している内容は、海外で合法的に行われている事例に基づいています。
CTFの1日目から会場に複数種類の錠前と特殊な器具が設置されていました。これらで自由に練習を行い、翌日の本番に備えます。本番には練習用錠前のうち、いずれかの種類が使用されるため、すべてに対応できなくてはなりません。
複数種類の錠前 |
所属チームでは前日に十分に練習を積んだメンバーがオフィス侵入後のロックの突破を担当しました。練習では10秒程度で突破できていましたが、本番では焦りから開錠に手間取っていました。
隠されたセキュリティ
監視カメラ、警備員、物理的なロックの他に、ルールには記載されていない人感センサーが秘密裏に設置されていました。注意してみると光っていることが分かりますが、入り口からの死角に設置されているためほとんどのチームが検知されてしまっていたようです。
死角の人感センサー |
The Valutでは、普段のCTFで経験することのない物理ペンテストということもあり大きく点数を失ってしまう結果となりました。一方で、カメラ映像の差し替えから、警備員を騙す手口、ロックの突破など様々な能力が要求されチームへの新たな刺激となりました。
ハードウェア構築問題 DiceGrid
DiceGridは、世界初のパワーエレクトロニクスCTFチャレンジと銘打って開催された、A&D形式の競技です。各チームは、直流24Vを交流24Vに変換するインバーター回路(SOURCE)を設計し、実際に組み上げて12チーム全体で共通の送電線に接続します。電圧品質の高さや、送電網への電力供給への貢献度に応じてポイントが得られます。同時に、各チームは負荷(LOAD)を電力網に接続する必要があり、電力を消費してしまうとペナルティとなります。安定して電力を供給しつつ、負荷を敵対的に変動させて電力網を混乱させることで、他のチームに電力を消費させることができるかを競う競技となります。
このような、直流電力を交流電力に変換して既存の電力網に接続できるようにする装置は、一般的にグリッド・タイ・インバーター(Grid Tie Inverter)と呼びます。身近なところでは太陽光発電システムなどで使われています。
スケジュールは以下の通りです。
- 設計期間: 2024/6/19~2024/6/29 11:00
- 構築期間: 2024/6/29 (1日目) 終日
- テスト期間: 2024/6/30 (2日目) ~12:00ごろ
- 運用期間: 2024/6/30 (2日目) ~12:00ごろ~2024/6/30 17:00
競技の概要は以下の通りです。
- 各チームにはTEAM PANELと呼ばれるボードが配布され、SOURCEとLOADにそれぞれ回路を組み上げる
- 直流24Vを正弦波の交流60Hz/24Vrmsに変換してSOURCEから供給する
- マイクロコントローラはATtiny84がSOURCEとLOADで1個ずつ与えられ、好きなプログラムを書き込める
- ATtiny84に接続されたSPIインタフェースを通して、SPIマスターであるパワーメーターから送信されるグリッド電圧・ローカル電圧・ローカル電流の情報が得られる
- SOURCEから高品質な電力を供給できるとポイントを得られる。電源の品質は、THD (全高調波ひずみ率)や電圧の誤差の小ささで評価される
- LOADやSOURCEを通して電力網から電力を消費するとペナルティ
- 電圧と電流の位相角が±90度の範囲に収まっていないなど、故障と判定されるとチームはシャットダウンされる
各チームに配布されるTEAM PANEL |
また、競技には以下のような制約がありました。
- ATTiny84以外で持ち込んだプログラム可能なマイクロコントローラは利用できない
- 市販のPWMインバータなど、既製品のモジュールは持ち込み禁止(事前に自作するのは可)
- バッテリーを持ち込むなどして外部から電力を供給することは禁止
6月19日に競技の仕様が公開され、そこから回路の設計・試作が始まりました。しかし、出国まで1週間弱という短期間での準備は困難を極めました。PWMインバータに関する知見が少ない中での回路設計、部品調達、試作、マイコンのデバッグなど、課題は山積みでした。最終的に、ゲートドライバICとMOSFETを組み合わせたユニポーラ方式のインバータ回路をATtiny84からPWM制御する方式で競技に挑むことにしました。
特に苦労した点として、利用できるマイコンが8ビット、8MHz動作の非力なATTiny84のみであることに加え、利用できる機能に制限があったことが挙げられます。具体的には、自由に利用できるGPIOがPA0~PA3の4ピンのみでした。これらのピンではハードウェアPWM出力を利用できないため、ソフトウェアによるPWM制御を試みました。PWM出力以外の処理もある中で、8ビットマイコンですべてのプログラムを処理しきれるかどうかは未知数でした。
ソフトウェアPWM出力デバッグの様子。処理落ちのため歪な波形となっている。 |
マイコンのプログラムは、正弦波PWM出力、SPI受信処理、位相検出・同期機能を実装する必要があります。SPI受信処理は、送信されるフレームの仕様がドキュメントに示されているものの、36bit長で8の倍数でないためSPIマスターの制作が一筋縄ではいかず、実際に受信できるかのデバッグが十分にできませんでした。
ホテルでの回路デバッグの様子。満足な設備がない中でのデバッグ作業は困難を極めた。 |
また、試作回路のテストにも課題がありました。試作回路がグリッド・タイ・インバーターとして動作するかテストするために、同じものを2つ用意するか、商用電源を24Vに降圧したものに試作回路を接続してテストする必要があります。しかし、部品調達が満足にできていない状況かつ、商用電源で安全にテストするための準備はとても出発までに間に合いませんでした。
会場でDiceGrid用の回路を組み上げる様子 |
SOURCE回路の制作でてんてこまいな状況の中、LOAD回路の方はブリッジダイオードで交流を直流に変換し、いくつか異なる抵抗をスイッチングできるような回路とし、なんとか競技で投入できる形にはなりました。
会場に設置された電力網。塔の両端に設置された電球がAC24Vで光っている。 |
実際に競技で使用した回路 |
CTF当日ギリギリまでマイコンのデバッグは続き、なんとかそれらしい波形が出力されるところまでこぎ着けました。
競技中に波形の出力を確認する様子 |
このようにDiceGridは、一般的なCTFで馴染みの薄いパワーエレクトロニクスの知識と実装力が求められる競技でした。電力供給と消費を競う競技は、コンセプトとしては非常に興味深いですが、やはり設計期間が10日弱しかなかったのは他のチームも苦戦を強いられたようです。
現地生活
CTFの終了後にはチーム全員でニューヨークの街に繰り出しました。移動中に本戦の問題の振り返りを行っている姿は少し奇妙だったかもしれません。夕食はニューヨークで有名なステーキハウスで祝賀会を行いました。
キーンズ ステーキハウス |
夕食後にはエンパイア・ステート・ビルディングに登り、102階からの夜景をチームの全員で体験しました。
エンパイア・ステート・ビルディングからの眺め |
他チームのハッカーとの交流を目的として、同じく本戦に進出していた「P1G SEKAI」や「thehackerscrew」のメンバーと自由の女神も観光しました。
自由の女神とハッカーたち |
おわりに
惜しくも23ポイント差で入賞を逃し4位という結果になりました。DiceGridでは回路の出来が評価されたのか1位を獲得することができました。物理ペンテストやハードウェアの構築といった海外のCTFならではのジャンルに、チームメンバー全員が各自の得意分野を生かして取り組めた印象です。
競技終了後の写真 |
これからもリチェルカセキュリティでは、社員・アルバイトの方の自己研鑽のための諸経費を支援する予定です。新しい仲間も募集しているので、興味のある方はぜひお気軽にお問い合わせください。
DiceCTF 2024 Finalsで共に戦ってくれた社員の方々、そして協力してくださったチームのメンバーの方々、ありがとうございました!DiceCTF 2025でお会いしましょう👋
No comments:
Post a Comment