昨今、連日のようにサイバー攻撃に関する話題が取り上げられるようになった。外部から不正アクセスを受けたり、ランサムウェア・マルウェア感染によって被害を受けてしまった組織や企業に関する報道はもちろん、身の回りでも「不審なメッセージを受け取った」「『このままでは危険です』といった表示がPCの画面に表示された」といった、ひやりとする体験が増えているのではないだろうか。
そんな中、これまでになく期待を寄せられるようになったのがセキュリティ人材だ。サイバー攻撃から自分や周囲の人たちを守り、システムの安全を保つことができれば、個人にとってやりがいがあるだけでなく、社会のためにもなるはずだ。
ただ、具体的にどうすればセキュリティ専門家としての役割を果たせるのだろうか。そもそもそれ以前に、セキュリティエンジニアとして必要な知識やスキルはどう身につければいいのだろうか。ルートは一つとは限らずいろいろあるが、セキュリティという仕事に興味を持つ人にとって格好の第一歩が、「CTF」(Capture The Flag)と呼ばれる競技会への参加だ。
CTFは、問題サーバに隠された「フラグ」を手に入れ、スコアを競うコンテストだ。フラグを入手するには、サイバー攻撃者がシステムを攻撃する際に用いる手法や、逆にマルウェアを解析するためにセキュリティエンジニアが用いるスキルなどを駆使する必要がある。つまり、敵の手口や視点と同時に、守る側に必要なスキルを持たなければ好成績を残すことができない。
10年ほど前は認知度の低かったCTFだが、近年はさまざまな場所へ広がっている。高校や高専、大学の有志が参加・企画したり、優秀なエンジニア採用の手段として企業がCTFを開催するケースも珍しくない。最近では、警察や自衛隊といった組織でも、組織内の人材発掘やスキル向上の手段としてCTFを実施している。
「難しそう……」を打破する一歩目を手助けする「SECCON Beginners」
このように、かなり市民権を得てきたCTFだが、それでもまだ「何だか難しそう」「どうすれば参加し、問題を解けるかがわからない」といった人も多いはずだ。そんな人たちが第一歩を踏み出すために企画されてきたのが「SECCON Beginners」だ。
SECCON Beginnersはさまざまな企画を通して日本国内のCTFプレイヤーを増やし、ひいてはセキュリティ人材の育成や技術の底上げを図ってきた。2018年度から初心者から中級者を対象とした大会「SECCON Beginners CTF」を開催しており、2022年には何と1121チームが参加する規模となった。他にも、CTFにチャレンジするための講義とミニCTFをセットにした「ワークショップ」やオンラインイベント「SECCON Beginners Live」など、さまざまな形式で、「CTFに興味はあるけれど、難しいんじゃないかな……」と悩む人たちを後押ししてきた。今は、情報セキュリティコンテストイベント「SECCON」の一環として展開されている。
この2年ほどは新型コロナウイルスの影響もあり、オンラインでの活動をメインにせざるを得なかった時期が続いていたが、2022年9月23日には、久々にオフラインでのワークショップが札幌で開催された。SECCONのメインスポンサーに加えディアイティ、アットマークテクノ、澄川工作所、そして北海道地域情報セキュリティ連絡会(HAISL)といった地方スポンサーの協力を得て、インフラチームも含め多数のスタッフが準備を行い、当日は北海道からの参加者を中心に36名が参加した。
冒頭、@Sz4rnyさんによるオリエンテーションでは、まず「CTFとはどのようなものか」「実施形態や問題のジャンルにはどのような種類があるか」といったCTFの基礎知識を紹介した。そして、サイバーセキュリティについて学ぶ上で必須の「法律」と「倫理」についても言及した。
「CTFではさまざまな攻撃手法に関する知識やスキルが問われることになりますが、それを許可されていないサーバやプログラムなどに対して実行しないでください。勝手に許可のないサーバを攻撃すると、電子計算機損壊等業務妨害罪をはじめとする犯罪に該当する場合があります」(@Sz4rnyさん)。CTF競技に参加する場合も、事前にレギュレーションをよく確認するよう推奨した。
そして、力を持つものには責任が伴う。@Sz4rnyさんは、ISC2が示す「4つの規律」のような規範に従い、学んだ情報セキュリティの知識を、社会やその中で開発・運用されるシステムの安全性を高めるために使ってほしいと呼びかけた。
久々のオフライン開催、WebとReversingをテーマに解法の基礎を解説
札幌のワークショップでは、CTFの主なジャンルの中から「Web」と「Reversing」(リバーシング)という2つの分野を取り上げた。Web分野は@satoki00さんと@task4233さん、リバーシング分野は@hi120kiさんと@n01e0さんが講師を務め、それぞれ1時間程度、手を動かしての演習を交えながら講義を行った。
講義を通して強く印象づけられたことが2つある。
1つは、わからないことがあればどんどん質問し、少しでも知識を自分のものにして持ち帰ってほしいという講師陣の思いだ。知らないことを質問するのには勇気が要るかもしれないが、質問すれば自分が助かるだけでなく、他の参加者にとっても有効なナレッジとなる。
一番残念なのは、せっかく足を運んだのに演習に付いていくことができず、何も持ち帰れないこと——そんな事態に陥らないよう、ステップバイステップで確認しながら演習を進め、もし詰まってしまった場合には周囲のスタッフに尋ね、さらにsli.doを利用して気軽に質問できる仕組みを用意した。
もう1つは、「基本」「基礎知識」の重要性だ。世間一般に「ハッキング」というと、天才的なひらめきが必要なものといったイメージがあるかもしれないが、実は、足腰となる基礎知識こそが重要になる。
たとえば1つ目のWebジャンルの講義では、クロスサイトスクリプティングやSQLインジェクションに代表されるWebアプリケーションの脆弱性について理解する前に、その前提となるHTMLやHTTP、Webアプリケーションの開発に必要なプログラミング言語について理解することが重要だと説明した。
「Web問題は、Webにまつわる脆弱性を突くことで隠されたフラグを手に入れます。そのために、まず対象のコードを見たりして調査を行い、どんな脆弱性がありそうか当たりを付けます。それに基づいて仮説を立て、検証してうまくいけばフラグが得られますが、どんな脆弱性が悪用できるかの当たりが付けられないと、そもそも仮説を立てて検証することができません」(@task4233さん)
同様にリバーシングの講義でも、プログラムの動作を解析するために、ソースコードと機械語のバイナリの間に位置するアセンブリコードをツールを駆使しながらどのように読み解くかを通して、「実行ファイルはどのように動くのか」「そもそもコンピュータはどのように動作するのか」を理解することが重要だと呼びかけた。
さらに@hi120kiさんは「リバーシングは普段の開発にも役立ちます。『プログラムを書いたけれども動かない』となったときに、こうしたツールを使えると便利です。CTFだけの知識だけではなく、いろいろなところに応用できる知識です」と述べている。
オリエンテーションの中でも@Sz4rnyさんは「CTFにはコンピュータサイエンスに関する基礎知識が不可欠になります。ですのでまず自分の興味がある領域や取り組みたいジャンルに絞り、その分野の基礎知識を学ぶことが非常に重要です」とし、たとえばWebの問題に取り組むならばWebアプリケーションを自分の手で実装してみる、Cryptoの問題に興味があれば数論や暗号理論を学ぶといったことを、調べながら取り組んでほしいとした。
CTF演習では地元の高校生が優勝、わざわざ東京から足を伸ばした参加者も
こうして2つの講義を終えた後、約1時間にわたってCTF演習が行われた。時間こそ短いが、SECCON Beginners CTFと同等のシステムを用いた本格的なCTFで、参加者は真剣に問題に取り組んだ。
近年のセキュリティに対する関心の高まりを受けてか、1000点を超えるスコアを出す参加者が複数現れるハイレベルな戦いとなった。
その中で優勝を飾ったのは、地元の札幌から参加した高校生。中学生の頃からプログラミングなどに興味を持って学んでおり、競技プログラミングなどにも参加しているが、特にセキュリティエンジニアの仕事は「かっこいい」と憧れているそうだ。表彰の場では「将来セキュリティエンジニアになりたいなと思っているので、こういうイベントに参加し、しかもいい成績が取れてうれしかったです」とコメントしていた。
札幌で運営をサポートした澄川工作所の齋藤聖悟氏は、首都圏に比べると、地方はどうしてもエンジニアコミュニティの規模も小く、イベント自体の数も少ない現状を踏まえながらも、「知識を貪欲に吸収し、地方でも求心力を持って活躍する『アイドル』のような人が増えてほしい」と述べていたが、さながらそんなスターの卵と言えそうだ。
また、三連休というタイミングを生かして、東京から夫婦そろって参加したエンジニアもいた。女性は「最近流行っている『OS自作』に取り組んでいいます。リバーシングの内容も、以前よりもわかるなと思いながら聞いていました」という。
彼女は普段はソフトウェア開発に携わっているが、「エンジニアとして働く上で、セキュリティは最低限わかっていなければいけない教養のようなものだと捉えています。ただ、資格試験だけでは今ひとつ楽しめないのですが、TwitterなどでCTFについて知り、楽しそうにセキュリティに取り組んでいるなと思って参加してみました」と述べていた。また男性も、「コンピュータに関する知識がベースとなり、それを応用していく力がスコアの形で見えるので対抗心がわき、競えるのは面白いなと思いました」と述べ、いずれは本格的なCTFにチャレンジしたいと語っていた。
今日のワークショップをきっかけに、さらにチャレンジを
SECCON Beginnersは文字通り、初心者から中級者に向けたステップであり、いわば最初の一歩。@Sz4rnyさんたちスタッフらは、「今日のワークショップをきっかけにいろいろと勉強し、今後もCTFに取り組んでもらえればうれしいです」という。
方法はいろいろある。オンラインにはいつでも参加できるCTFが用意されているほか、CTFTime (https://ctftime.org/)を見れば、毎週のように開催されているCTFの情報があり、それを参照して好きなものに参加することが可能だ。また、CTF参加者が競技を振り返り、自分はどのように問題に取り組んだかを説明する「Write Up」、いわば参加者が書いた「過去問の解法」もネット上に多々公開されている。これらを読むことで、解法やフラグ取得に至るプロセスを学ぶこともできる。
齋藤氏は、「CTFはセキュリティの仕事に直接役立つかというと、実はそうとも限りません」という。ただ、たとえば業務の中でインシデントや脆弱性対応の必要性に直面したときに、「どのような問題か、どういった影響があるか」を、技術的に深掘りして理解できるため、周囲の人に自信を持って説明できるようになるなど、副次的な効果は多いとした。
「CTFには幅広い知識が必要になるため、仕事の幅も考え方も広がると思います。業務に直接結びつくことは少なくても、応用が利きやすくなるでしょう」(齋藤氏)。何より、自分の持てる知識や準備してきた事柄を生かして謎解きに取り組み、解けたときの楽しさは代えがたいものがあるという。
そして、こうした楽しみは一人で味わっていてはもったいない。「一人で取り組んでいても、解ける範囲には限りがあります。ぜひ一緒にCTFに取り組める仲間を見つけ、チームを組んで参加してください」(@Sz4rnyさん)