ep.1 Initial Access
皆は、自分たちがいま生きているこの世界が、実は仮想の現実であると考えたことはあるだろうか。
すべての生物は構築されたプログラム
瞬きも、呼吸も、生も、死も――
すべて、この世界の管理者があらかじめ決めたルートをただなぞっているだけだとしたら。
そのルートを書き換える存在が、現れたとしたら。
############################################
#
# msf6 exploit(multi/handler) > run
#
# [*] Started reverse TCP handler
# on 192.168.0.12:4444
# [*] Waiting for incoming connection...
#
# [+] Meterpreter session 1 opened
#
# meterpreter >
#
############################################
「よし、あとはflagを見つけるだけだ」
############################################
#
# meterpreter > getuid
# Server username: WIN-USER\admin
#
# meterpreter > sysinfo
# Computer : WIN-USER
# OS : Windows 10 (10.0 Build 19045)
# Architecture : x64
#
# meterpreter > shell
# Process 1234 created.
# Channel 1 created.
#
# C:\Users\admin> cd Desktop
#
# C:\Users\admin\Desktop> dir
# Volume in drive C has no label.
# Directory of C:\Users\admin\Desktop
#
# 01/01/1999 0:00 AM <DIR> .
# 01/01/1999 0:00 AM <DIR> ..
# 01/01/1999 0:00 AM 64 flag.txt
#
# C:\Users\admin\Desktop> type flag.txt
# FLAG{reality_is_overwritten}
#
############################################
「ふぅ、今日のタスク終了っと」
オレは椅子に背をもたれ、ぐっと腕を伸ばした。固まっていた肩が小さく音を立ててほどける。長く座りすぎたせいか、背中にじんわりとした疲れが残っていた。
気づけば、窓の外はすっかり明るくなっていた。カーテンの隙間から差し込む淡い光が、部屋の空気をゆっくりと温めている。いつの間にか夜は終わっていて、鳥の鳴き声がかすかに聞こえた。
「少し眠るか」
そう呟き、オレは椅子に背を倒し、深い眠りへと落ちた。
*
オレ、黒瀬透は世間一般とはかけ離れた生活を送っている。職業はバグバウンティハンター。企業のサービスに潜むバグ(脆弱性)を見つけ出し、報酬を得る仕事だ。
狙うのは、大手企業のみ。数十万――ときには数百万円以上の報酬が期待できる案件だけを追う。それが、オレのモットーだ。
ハッキングの才能を自覚したのは、今から16年前――5歳のときだった。子どもがゲームを長時間やりすぎないよう、1時間で強制的にシャットダウンする機能。その仕組みに違和感を覚えたのが始まりだ。
電源を入れてから、きっかり1時間後に落ちる。どのゲームでも、どんな場面でも例外がない。その機械的すぎる規則性が、幼いオレにはどうにも気になった。
ある日、設定画面をいじっていると、通常は表示されないはずのメニューが一瞬だけ開いた。
ほんの一瞬だったが、オレはその表示を見逃さなかった。
――今のは、どこから出た?
直前の操作を頭の中で巻き戻す。指の動きをなぞるように、同じ順番でボタンを押していく。
すると――
《診断メニュー(Service Menu)》
本来は修理業者が使うものらしく、画面の隅に小さく『内部用』と書かれていた。
意味は分からなかったが、普段の設定とは違う項目が並んでいるのが面白くて、オレは夢中でボタンを押し続けた。
その中に、ひとつだけ気になる項目があった。
《使用時間制限:有効》
なんとなく押してみる。
《無効》に変わった。
その瞬間、すべてが繋がった。
本来なら落ちるはずの時間を過ぎても、画面は何事もなかったかのように動き続けていた。
5歳のオレは、そのとき初めて知った。
仕組みには必ず抜け道がある。
そして、それを見つけるのが自分の得意分野だということを。
*
この脆弱性をゲーム会社に報告したところ、数日後には正式に受理され、50ドルの報奨金が支払われた。さらに後日、謝礼としてゲームソフト4本と、開発チーム主催の限定パーティーへの招待状が届いた。
パーティー会場で席に着くと、ざわめきの中から一人の男がまっすぐにオレへ近づいてきた。軽く笑みを浮かべ、そのまま声をかけてくる。
「君が、あの報告をしたハッカーか」
その男は、インターネットセキュリティーに携わる専門家だった。
「はい」
「いやぁ......驚いたよ。たった5歳でシステムの抜け道を発見するなんてね」
「どうも」
男は楽しそうに目を細めた。
「突然だがCTFを知っているかい?」
「しーてぃー......えふ?」
「Capture The Flagの略さ。簡単に言うと、脆弱性を見つけてflagを取得する競技だ。君の才能を試させてほしい」
そう言うと、男はおもむろに鞄からノートパソコンを取り出し、こちらに画面を向けてくる。
「これは『Try Hack World』――世界最大のセキュリティ演習プラットフォームだ。通称、THW。今から君には、三つのマシンからflagを取得してもらう」
一拍置いて、男は続けた。
「ターミナルの操作や取得に手間取るようなら、この本を参考にするといい」
そう言って、男は分厚い本を机の上に置いた。
表紙には、専門書特有の無機質なタイトルが刻まれている。
「......それ、やらないとダメですか」
オレは少しだけ面倒そうに視線を落とした。
「もちろん。君の才能を確認するためのテストだからね」
男は変わらない調子で答える。
「わかりましたよ」
気のない返事をして、オレは分厚いマニュアルに目を落とした。ページをめくるというより、流し見るように視線を滑らせていく。数十秒もしないうちに、オレは本を閉じた。
「な......!? そんな読み方で理解できるのか!?」
男が驚いたように目を見開く。
「まぁ......必要なところは、だいたい」
オレはさっそくCTFに取り掛かる。
一つ目は、考えるまでもなかった。
画面を数秒眺めただけで構造は見え、気づけばflagに辿り着いていた。
二つ目は、ツールを使うタイプの問題だった。
ローカルのプロキシを立ち上げ、通信を軽く覗く。
いくつかリクエストをいじると、すぐに挙動が変わった。
五分もかからず、突破。
そして三つ目。
画面を開いた瞬間、これまでとは明らかに質が違うと分かった。
オレは姿勢を少しだけ起こし、画面に視線を固定する。
最初の数分は、何もせずに挙動を観察した。
通信の流れ、レスポンスのズレ、わずかな違和感。
断片的だったそれらが、徐々に一つの形にまとまっていく。
「競合状態か」
小さく呟き、オレは初めてキーボードに触れた。
いくつかの入力を試す。反応が変わる。さらに組み替える。
今度は明確に通った感触があった。
そのまま一気に内部へ潜り込む。あとは早かった。
権限を確認し、その状態で使える穴を一つ見つける。
数行のコマンドで、表示が切り替わる。
――root
時計を見る。
開始から、まだ1時間も経っていなかった。
「終わりましたけど」
顔を上げると、男は無言でこちらを見ていた。
しばらくの沈黙。
やがて男は、ゆっくりと口を開く。
「一つ目の平均所要時間は30分。二つ目が2時間。そして三つ目は――通常、半日以上かかる」
次の瞬間
「バンッ!」と、机を叩く音が響いた。
「あり得ない......!」
男はそのままこちらを見据える。
「君はとんでもない逸材だ。ぜひ、僕のセキュリティチームに加わってほしい」
差し出された手。
オレはそれを一瞥して、肩をすくめた。
「まだ5歳なんで、遠慮しておきます」
男は差し出していた手をゆっくりと下ろした。
「......そうか。このノートパソコンと本は君に贈呈する。THWには、今解いた三つのほかにも数百のCTFが用意されている。暇なときにでも触ってみるといい」
「ありがとうございます」
オレはノートパソコンと本を受け取った。
それが、オレとCTF――そしてTHWとの出会いだった。
*
あれから16年後、2030年6月10日。
5歳の頃から、毎日更新され続けるTHWのCTFを解くことが日課になっていたオレは気づけば、ユーザー数千万人を超えるそのランキングで、第2位にまで上り詰めていた。
ハンドルネームは『clear』。透という名から、意味だけを抜き取った。
――ただ一つ。
未だに、1位の『albedo』には届かない。




