セキュリティエンジニアとして就職してからそろそろ3年経ちます。独断と偏見に基づき、IT初心者・セキュリティ初心者・セキュリティエンジニアの3つの時期に分け、費用対効果の良い勉強法を紹介していきたいと思います。
セキュリティエンジニアとは
「セキュリティエンジニア」という言葉は範囲が広いですが、私が今回記載する内容は脆弱性診断やペネトレーションテストに寄った内容となっています。インシデント対応やアナリスト業務などは専門ではないので、あくまで診断系の人が書いているということをご認識おきください。
そもそもセキュリティエンジニアにどのような職種が含まれるかはラックさんが分かりやすい資料を出しているのでそちらをご覧ください(サイバーセキュリティ仕事ファイル 1、サイバーセキュリティ仕事ファイル 2)。
IT初心者時代
セキュリティを学ぶ以前に基礎となるITを学ぶ時代を考えます。
学校教育
学生の場合、情報系専門学校・高専の情報系学科・大学の情報系学部等に入ると基礎的な部分は押さえられます。東京工業高等専門学校 情報工学科のシラバスや東京工業大学 情報理工学院 情報工学系のシラバスなど、シラバスを公開している教育機関は多いので一度目を通しておくと面白いです。シラバスは最近の一般的な情報系学生の力量を量るためにも使用できますし、自身に足りていない領域を洗い出すためにも使用できます。ちなみに、自身に足りない領域があると感じた場合は教科書や参考書をメルカリで漁ると安く流れていることがあるのでそこから独学するのもおすすめです。
ただし、学校教育は長期間に渡り、一部の科目については直接的に実務に結びつくわけではないので社会人が改めて大学に入学するのはおすすめしません。時間の限られている社会人であれば次の情報処理技術者試験を独学する方が適しています。
情報処理技術者試験
一般的な情報処理技術者としての知識・技能に関しては情報処理技術者試験の勉強を通して身に着けることができます。ITパスポート試験、基本情報技術者試験、できれば応用情報技術者試験まで合格すれば理想的です。基本情報に合格できるだけの知識があればある程度ITの言葉が通じるため「何の話をしてるのか分からない」という事態を回避できます。
また、情報処理技術者試験は国家資格であるためアピール力が強く、出題分野が適切かつ教材が豊富という点が魅力的かと思います。教材としては基本情報技術者試験ドットコムや各出版社が出している教科書を使用することができます。私が使用していたのは技術評論社の教科書でしたが、シラバスに準拠している限り好みに応じて好きな教科書を選んで問題ありません。
セキュリティ初心者時代
基礎的なITの知識・技能を修得した上で、セキュリティ領域に足を踏み入れる時代を考えます。
TryHackMe
TryHackMeは有名なセキュリティ系オンライントレーニングサイトです。roomが700以上用意されており、質問に回答する形式で学習を進めます。700以上もroomがあることもあり初心者はどこから手を付ければ良いのか迷いがちですが、Learning Pathsを確認することで目指す職に合わせてどのroomを順に行えば良いのか分かります。roomが多数あることもあり玉石混交という噂を聞きますし、Learning Pathとその内容を確認した上で自身の欲する領域と重なっている場合は徐々に課金して試してみるのが良いかと思います。
登録せずともある程度は内容を閲覧できるので、例えばSecurity EngineerパスのSecurity Engineer Introルームなどを覗くと雰囲気が分かるので確認してみてください。真面目に勉強するにはプレミアムプラン(126USD/year)に登録する必要があります。なお、学生の場合は20%offの学割を受けられます。
HackTheBox
HackTheBoxも有名なオンライントレーニングサイトです。脆弱なマシンが多数用意されており、脆弱性や設定ミス、フィッシングなど様々な手法を駆使してシステムに侵入し管理者権限を奪取します。その特性から幅広くセキュリティエンジニア向けというより、脆弱性診断士やペネトレーションテスター、Red Teamに向いていると言えます。OSコマンドインジェクションやSQLインジェクション、XSSなどを教科書で知っていても実際にどのように悪用されるのか知りたい場合はHackTheBoxが最適です。
マシンにはActiveとRetiredの2種類があり、Retiredマシンに関してはWriteupの公開が許可されています。ブログ記事としては「トレーニングコンテンツ:「Hack The Box」を触り始めてみた」やQiitaのhacktheboxタグを読むと雰囲気が分かるかと思います。また、実際に手を動かしている動画であればIppSec氏の動画がおすすめです。youtubeの自動翻訳字幕機能を使えば作業内容も分かるかと思います。
例えばEasyレベルのPilgrimageについて、@Perplex氏のwriteupやIppSec氏の動画を眺めてみることをおすすめします。これを見て全然意味が分からないと感じた場合は先にHackTheBox Academyを行った方が良いです。
なお、課金については初心者ほどVIP+($203/annual)に課金するべきだと考えます。詳細は過去記事に記載していますが、簡単に言うとVIP+になることでRetiredマシンをWriteupを見つつ攻略でき、攻撃用VMが使い放題かつ攻撃対象を他の人に荒らされないようになります。
HackTheBox Academy
HackTheBox AcademyはHackTheBoxとは違い、どちらかと言うとTryHackMeに似ているサイトです。TryHackMeのLearning Pathと同様にHTB AcademyにもPathsが用意されており、roomに相当するmoduleという単位で学習を進めます。
例としてSQL Injection Fundamentalsモジュールを挙げると、SummaryやSectionsを確認することでどのような内容を学習できるか確認できます。基本的には、座学→演習→座学→演習→…→小テストという流れです。そのため、体系的かつ手を動かして学ぶことができる点が魅力です。逆に言えばHackTheBoxは実践的すぎるので体系的に学ぶには向いていないと感じます。
より詳細に知りたい場合はブログ記事として「セキュリティ学習プラットフォーム:「Hack The Box Academy」を触ってみた」や「HTB Academyはじめてみた」を確認してみることをおすすめします。
なお、最初は無料プランで試してから課金を検討すると良いです。登録時には30 Cubesが付与され、Tier0のモジュールを受講するには10 Cubes消費します。Tier0のモジュールに関しては修了すると10 Cubesが付与されるので理論上は無課金でTier0をすべて受講できます。ただし無課金ではPwnbox(攻撃用VM)が2時間/日しか使えないので学習効率が悪いです。
Tier0のモジュールとしてVulnerability Assessment等で雰囲気を掴んだ上で、向いているようであればSilver Annualプラン($490/year)を始めることをおすすめします。Tier2までのモジュールをすべて使用可能かつPwnbox(攻撃用VM)を使い放題です。学生であれば同じ内容を$8/monthで使用できるのでかなりおすすめです。
Web Security Academy
Web Security Academyは、有名なセキュリティツールであるBurp Suiteを開発・販売しているPortSwigger社が提供するオンライントレーニングサイトです。Burp SuiteはWebアプリケーションを対象に、通信内容の改ざんやパラメータのファジングなど、様々な攻撃を実施することができます。Web Security AcademyではBurp Suiteを使用しつつ、様々なWebアプリケーションの脆弱性を実際に悪用して学ぶことができます。そのため、Webアプリケーションに特化して学習を進めたい場合に適しています。
最初はLearning Pathか興味のあるtopicsを試してみることをおすすめします。Labの雰囲気を知りたい方は「PortSwigger Web Security Academy: Business Logic Lab – Write-up」を読むと分かりやすいかと思います。
Web Security Academy自体は無料であり、Burp Suite Community Editionも無料なので最初はお金をかけずに勉強を進めることができます。ただし、進めていくうちに有料で高機能なBurp Suite Professionalを使いたくなってくる可能性は高いです。
情報処理安全確保支援士
IT初心者時代には情報処理技術者試験を受けるべき、という話の続きです。試験要綱を確認すると分かりますが、セキュリティ分野を幅広く体系的に学ぶためには最も適しています。国家資格であるためアピール力も強く、セキュリティ分野においては基本的に言葉が通じるようになると思います。また、合格後も過去問題や情報処理安全確保支援士ドットコムで勉強すると知識の更新にも役立ちます。
ただし、情報処理安全確保支援士としての登録については個人負担の場合は不要です。情報処理安全確保支援士の登録は社員の信頼性を担保するために会社負担で行うものであり、個人で15万/3年の負担は大きい割に恩恵がなにもありません。その余裕があるなら上述の教育サービスや書籍に使用しましょう。
ちなみに、情報処理安全確保支援士と比較される国際的な資格としてCISSPもありますが、個人的には情報処理安全確保支援士から始めるべきだと感じています。その理由はいくつかありますが、情報処理安全確保支援士の方が受験料が安く(CISSPは749米ドル、情報処理安全確保支援士は7,500円)、日本の実情に合わせた出題かつ日本語教材が豊富であるという点が初学者向きです。一方で、CISSPは試験の合格に加え最短4年の業務経験が必要となるため、実務経験を積みながら勉強を進めていく方が良いのではないかと思います。
セキュリティ系イベント
モチベーションを上げるためにも積極的なイベント参加はおすすめです。
最初は現地ではなくオンライン開催のものに参加するのが良いと思います。connpassで「セキュリティ」と検索するといろいろ出てきますが、個人的には大和セキュリティ勉強会、Offensive Security Lab Japan、脆弱性対応研究会、vuls-jpあたりが好きです。あとはXで面白そうなイベント情報が流れてくるのでセキュリティ関係者をフォローしておくと良さそうです。
もう一歩踏み込みたい場合は、現地イベントに参加することもおすすめです。セキュリティ・キャンプ(学生限定)、SecHack365(25歳以下)、SECCON Beginners、Hardening、CODE BLUE(学生スタッフ含む)あたりが有名な気がします。やはり双方向コミュニケーションには現地の方が有利ですし、いろいろと得られるものが大きいと思います。個人的に好きで学生の初心者におすすめできるのはセキュリティ・ミニキャンプです。各地方でも開催しており、多くが1日開催なので比較的気楽に参加できます。
イベントに関してはここで紹介しきれないほど多くのものがあるので、気になるものを探して適当に参加してみると良いです。
簡単なCTF
セキュリティを学び始めた人でパズルやなぞなぞが好きな人はCTFが向いているかもしれません。CTFとはWeb,Network,Forensics,Reverse Engineeringなど様々なカテゴリから、問題を解いてフラグを提出するゲームです。個人的には知見を広げるためにCTFはかなり役立つと感じています。
CTFを最初に始める場合は大会ではなく常設型と呼ばれるものから練習することをおすすめします。ksnctfやHackTheBoxのChallengesがおすすめですが、他にも検索すれば出てくるので自分に合ったものを選ぶと良いです。また、最初は解き方が全然分からないと思うので「〇〇CTF writeup」で検索して過去問の解き方を調べたり、『詳解セキュリティコンテスト』や『セキュリティコンテストチャレンジブック』で勉強すると徐々に解けるようになっていきます。
慣れてきたら初心者向けのCTF大会に挑戦してみると楽しめます。SECCON Beginnersなど有名な大会はありますが、すぐに大会に挑戦したい場合はCTFtimeを参照して面白そうなものに飛び込んでみるのもアリです。
注意点としては、CTFでは様々な領域の幅広い知識を求められるため一部の知識は直接的には業務に結びつかない可能性があること、最初は全然解けないのが当たり前で上位にはバケモノみたいな人がいるので心が折られる可能性があること、の2点があります。
中途採用の要件を見る
就活中の学生、転職活動中の社会人、現職に不満がない社会人問わず中途採用の要件は見ておくべきです。要は社会がどのような人材を求めているのか透けて見えるため、目指すべき目標として参考にできます。
セキュリティ系企業の一覧を探すのは面倒ですが、セキュリティ・キャンプ協議会の会員企業一覧やイベントのスポンサーは比較的役に立つと思います。中途採用の要件を調べると「あの製品に詳しい人が欲しいのか」「あの資格が評価されるのか」などが分かります。
ニュースに気を配る
必須というわけではないですがニュースにも気を配っておいた方が良いです。とはいえ、あらゆるメディアをチェックするのは疲れるので国外ならBleepingComputer、国内ならpiyologくらいのチェックから始めることをおすすめします。余裕が出てきたらSecurity NEXTやScanNetSecurityなどの件数が多いメディアもチェックすると良いです。さらに情報の取捨選択能力が上がった際にはMorningstar Securityなどを巡回ルートに取り入れると取りこぼしが少なくなります。
また、Xでセキュリティ関係者をフォローするのも有効です。
その他の動向を探る
政府の調達情報はある程度調達案件検索から確認可能なので、何か面白い案件が動いていないか見ることができます。また、研究系であれば科研費を検索して面白い研究を探すこともできます。同様に学会発表(CSSやSCISとか)やカンファレンス(BlackHatやCODE BLUE)も見ていると面白いです。
書籍を探す
書籍はその特性上、流れが速いセキュリティ分野とは相性が悪いですが、初心者に勧める最初の一冊を挙げるのであれば私は『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版』(通称 徳丸本)を挙げます。Webアプリケーションで気を付けるべき脆弱性が体系的にまとめられており、攻撃手法だけでなく対策手法までカバーしている点が魅力です。他の教育サービスには攻撃手法に寄りすぎてるものもありますが、顧客が安全なシステムを求めている以上、対策手法についても知識を身に着けて報告書で提言する必要があります。目次部分を含めて試し読みが可能なので、確認の上相性が良さそうだと感じた方はここから始めると良いかと思います。
新しい技術に関する新刊を探す場合、国内の書籍であれば書店のセキュリティ系の棚に赴くか、ECサイトで検索するしかないように思えます。また、海外の書籍であればO’Reillyの新刊やno starch pressの新刊をチェックすると役に立つかもしれません。なお、これらの書籍はHumble Bundleで安くまとめて売られている場合があるので定期的にチェックすると良いです。ちなみに翻訳されるまでに結構な時間がかかる場合が多いため英文の電子書籍を購入することをおすすめします。
セキュリティエンジニア時代
セキュリティエンジニアとして働き始めた後の時代を考えます。
継続するべきもの
前述のほぼすべては継続するべきものです。教育系サービスに関しては「継続は力なり」の精神で続けるべきであると考えます。
脆弱性報告、バグバウンティ
難易度は高いですが時間に余裕があるのであれば脆弱性報告やバグバウンティを試してみることをおすすめします。
診断案件では期間が定められていますが、慣れてないうちは脆弱性を見つけて報告書にまとめるのは難しいです。脆弱性報告やバグバウンティは期間が定められていないため、脆弱性を調査し、再現手法や対策を記載した報告書を提出するまでの流れを練習することができます。このような技術力の向上に加え、社会貢献としての意義や、CVEの報告実績がデジタル庁の『政府情報システムにおける脆弱性診断導入ガイドライン』における推奨要件となっているためおすすめです。また、バグバウンティに関しては賞金も出るので副業として行うのも良いかもしれません。
高価なセキュリティ研修や資格
数十万以上するような研修・資格については、セキュリティエンジニアとして働き始めた後に会社負担で取得することをおすすめします。具体的にどのような研修・資格が推奨されるかについては、デジタル庁の『政府情報システムにおける脆弱性診断導入ガイドライン』や経済産業省の『情報セキュリティサービスにおける技術及び品質の確保に資する取組の例示』に記載のものが知名度も高く有用であると考えます。加えて、中途採用の歓迎要件でよく見かける資格を押さえておくと良いと思います。
まとめ
セキュリティ分野に絞って今までで効果が高かった勉強をまとめてご紹介しました。これらすべてを行う必要はないですが、相性の良さそうなものがあれば試してみることをおすすめします。
なお、診断系の場合、システムがAWS上に構築されていればAWSの知識が必要になりますし、「AIの診断をしてくれ」と言われたら開発者と張り合えるだけのAIの知識を求められます。このように日々進化する診断対象に合わせ、診断対象自体の勉強も行う必要があります。頑張りましょう。