FFRIエンジニアブログ

株式会社FFRIセキュリティのエンジニアが執筆する技術者向けブログです

2023 年度新人研修 ~全体の振り返り~

はじめに

こんにちは。2023 年度新卒入社の前中と髙橋です。 この記事は 2 人で共同執筆しております。

この記事は、「FFRIセキュリティへの入社に興味があり、入社後にどういったサポート・トレーニングが受けられるのか、その詳細を知りたい」という現在就職活動中の方に向けて、新人研修を振り返り、幾つかの研修をピックアップして研修の概要とその感想を紹介していきます。

就活生の中には、募集要項の要件「必須条件」に「※セキュリティに関しての事前知識は必要ありません。」と書いてはあるものの、実際のところセキュリティの事前知識なしで大丈夫なのかと不安に思う方もいらっしゃると思います。 私たち 2 人も、大学ではセキュリティの研究室に所属しておらず、専門的な知識はあまり持ち合わせていませんでした。 この記事では、新人研修にどのような研修があり、セキュリティの知識はどのように身につくのか、セキュリティの事前知識がなくても大丈夫なのかという点について私たちの感想を交えながら紹介します。

また、昨年度までの新人研修の記事もあるので、こちらもぜひ読んでみてください。

FFRIセキュリティの新人研修は入社したのち 4 か月間に亘って行われ、その後は部署配属に伴い OJT 期間へ移行します。

勤務形態としては入社式と PC の支給があった 4 月 3 日のみ出社し、その後の研修は昨年同様にフルリモートで実施しました。

実際の出社はほとんどありませんでしたが、新型コロナウイルス感染症の影響により中止していた月次会社飲み会が再開され、多くの社員の方々と直接顔を合わせる機会となりました。 久しぶりの飲み会だったためか、皆さん楽しそうにしていたことが印象的です。

2023年度の新人研修の内容

4 ヶ月に亘って以下の研修が実施されました。

  • 管理系研修: 3.5 日間
  • 技術系部署の全体像と役割: 0.4 日間
  • 企業インフラ研修: 1 日間
  • 文書作成スキル: 1 日間
  • 開発チュートリアル・プログラミング研修: 8 日間
  • ExpertSeminar: 5 日間
  • IoT ペンテスト: 5 日間
  • Windows 解析研修: 5 日間
  • エクスプロイト開発研修: 10 日間
  • 製品開発研修: 14 日間
  • 脅威動向と感染事例: 1 日間
  • 検知ロジック開発研修: 5 日間
  • 品質保証研修: 5 日間
  • ActiveDirectory 研修: 0.3 日間
  • サポート研修: 0.3 日間
  • 過検出判定研修: 0.4 日間
  • 機械学習研修: 4 日間
  • ダンプ解析研修: 2 日間
  • ネットワーク基礎: 2 日間
  • IncidentResponse: 2 日間
  • Web ペンテスト技術: 1 日間
  • クラウドサーバー研修: 1 日間

所々に自習時間があり、このタイミングで研修の復習やキャッチアップが可能です。

今回は 6 つの研修をピックアップし、その研修の概要紹介と私たち二人の感想を述べていきます。

文書作成スキル

概要

この研修では、業務で必要な報告書の書き方や、報告書を作成する際に必要な知識となるセキュリティ業界で知っておくべき組織等を学びました。

最初に報告書作成の勘所である「調査した情報に対して過不足なく簡潔に」「誰が何に使うのかを意識する」ことを教わり、ハンズオンへと進みます。 ハンズオンでは想定される依頼に対してチームを組み、調査と報告書を作成します。 用意された文書用テンプレートを使用して報告書を作成し、他のチームにレビューしてもらいます。 チームは受け取ったレビューの対応・修正をし、最後には講師が回答例を配布し解説します。

感想

前中

私は文章を書くことに苦手意識があり、大学で書いた論文では何度も担当教員に添削していただいたことをよく覚えています。 また、今回のように報告書を書くというケースは今までなかったため、初めはこの研修を不安に思い、身構えていました。 しかし、実際に研修を受けてみると論文の書き方と似通っているように感じ、むしろ親近感を覚えるようになりました。 とはいえ、論文では読者が同分野の研究者と想定して書きますが、報告書では各々のお客様の要望を踏まえた情報を書く点が大きな違いだと考えます。 ハンズオンでは、その報告書ならではの「お客様に提供すべき情報をどこまで書くか」等で苦戦しましたが、チームメンバーに助けてもらうことで、なんとか書ききることができました。 研修課題のフィードバックを通して、文章を書く上で自身の弱点や改善すべき点等が明確化されました。 この研修は報告書に限らず日頃の業務連絡等の文章全般にも役立ちました。

髙橋

文書作成スキルの研修を通して、改めて伝えることの難しさを学びました。 この研修を受ける前は、大学でのレポートや就職活動を通して、多少なりとも文書作成について勉強できていると思っていました。 しかしながら、課題を通して、大学でのレポートと報告書では、意識する読み手や考慮する事項など様々な部分で難しさが異なると思いました。 この研修で興味深かったことはレビューです。 自分達のチームで何度もチェックした報告書が、他のチームからレビューされて返ってくると、見落とした部分や考慮しきれていなかった部分などがコメントされていて、非常に参考になりました。 また、同じ内容について報告書を書いていましたが、他のチームの報告書をレビューしていると、自分達のチームと違った書き方や構成などに注目していたりするところが興味深いと感じました。

ExpertSeminar

概要

この研修では、Windows におけるマルウェア動的解析とリバースエンジニアリングの二部構成で行われ、Windows における解析手法等について学びました。

  • マルウェア動的解析

    最初に動的解析の概要を教わり、その後 Windows API や DLL、Windows プログラムについて学びました。 ハンズオンでは動的解析用のツールとして API Monitor と Process Monitor を利用し、Windows プログラムがどのように動作しているのか解析することで概観を掴みます。 最後の演習では、配布されたサンプルマルウェア検体の解析を通じてマルウェアの振る舞いや解析手法を学ぶことができます。 これによって、実際のマルウェア解析業務等に就く際の勘所が養われます。

  • リバースエンジニアリング

    最初に CPU と OS の基礎、IA-32 アセンブリを教わり、リバースエンジニアリングの手法やアンチリバースエンジニアリングの種類について学びました。 ハンズオンではリバースエンジニアリングツールの Ghidra を利用し、課題としてサンプルプログラムの認証バイパスを試みたり、サンプルマルウェア検体を解析したりしました。 また、PE ヘッダーや DLL ロード、API フックについても紹介されているので、Windows の理解が深まる最初の研修でした。

感想

前中

この研修は技術系研修の中でも Windows の動作やプログラム、ツールについて深く学ぶことができる最初の研修で、セキュリティ業界に飛び込んだと感じる最初の一歩でした。 マルウェア検体についてはサンプルということもあり、動作が簡素で理解しやすい内容となっています。 この解析を通して着々と Windows の知識をつけることができました。 しかし、リバースエンジニアリングで利用したツールの Ghidra ついてはあまり利用したことがなかったため、アセンブリ言語やメモリ配置等の知識が多少頭に入っていないと難しいと感じました。 実際に演習の解析時、命令の流れを追うことやメモリ等を考えるときに少し苦戦をしましたが、講師の方に助けていただいたことで、解析における見るべき視点を養うことができました。

髙橋

ExpertSeminar を通して、Process Monitor や Ghidra などのツールの使い方と、解析方法を学びました。 初めに行ったマルウェア動的解析では、今回が初めての解析ということで不安がありましたが、資料等で丁寧に説明をしていただいたことで実践できました。 また、ツールを用いて API 呼び出しなどを詳細に確認することで、プログラムの理解が深まったと感じます。 次に行ったリバースエンジニアリングでは、Ghidra を使用してマルウェアを解析し、思い描いていたセキュリティエンジニアのようなことを実践したため、興奮しました。 演習問題を通してマルウェア解析の流れを学び、気を付ける処理などがわかったため、今後の業務に活かせそうだと思いました。

IoT ペンテスト

概要

この研修では、ペンテストの実践的な手法や流れを学びました。

最初にペンテストの概要や流れを教わり、実際の IoT ペンテストを想定して実施します。 ペンテストでは初めに、ペンテスト対象のモデル化やデータフロー図、脅威の洗い出しを脅威分析として行います。 モデル化やデータフロー図は事前に用意されていましたが、そこから脅威の洗い出しを行い、洗い出された脅威についてハンズオンのペンテストを実施しました。 ハンズオンではエアコンのファームウェアを題材に、用意された Amazon EC2 上でペンテストを実施します。 ペンテスト実施後は各自報告書を作成し、報告会を行いました。

本研修は過去にインターンでも行われており、2021年度インターンシップの紹介に詳細が載っていますので、詳しく知りたい方はこちらをご覧ください。

感想

前中

この研修はペンテストの方針がある程度立てられているため、主にハンズオンの検証が中心でした。 EC2 上にはパケットキャプチャやエミュレーター、デバッガ等のツールが用意されており、演習課題ではこれらのツールをどのように利用するかを考えて検証していきます。 各ツールの概要や利用方法については、講義資料にドキュメントの URL や参考になるサイト、コマンド例等が記されているため、利用したことがないツールでもある程度把握できるようになっています。 演習課題の難易度としては、これらのツール群に関する知識と Linux やネットワークの基礎知識を持っていると解ける印象です。

演習課題を時間内にこなすと、講師から新たに追加課題や挑戦課題が配られます。 追加課題では演習用として疑似的に仕込まれたルートキットやバックドアの動作を解明し、挑戦課題では、kgdb を利用して追加課題で扱ったカーネルモジュール型のルートキットのデバッグを行います。 追加課題はなんとかできましたが、挑戦課題の途中で時間が来てしまい、最後まで解析できなかったことが心残りです。

この研修は参照している記事の通り、インターンでも行われています。

このインターンに参加した私の主観的な意見ですが、このインターンを楽しめた方は他の研修も楽しめると思います。

髙橋

IoT ペンテスト研修を通して、ペンテストの流れや脅威分析の方法などについて学びました。 今回はエアコンのファームウェアを対象に脅威分析し、抽出されたファームウェアを用いて Linux のエミュレーター上で検証しました。 特に印象的だった演習問題は、正規ユーザーになりすましてログインされる脅威の検証です。 この問題では調査ツールとクラッキングツールを用いて検証したのですが、想像よりも特殊な操作を必要とせずに検証できたため、驚きました。 この成功体験は自信になると同時に、セキュリティに関して気を引き締める良い機会になりました。 また、ペンテストの報告会もあり、自分以外の検証の手順や調査方法などを知ることができ、非常に参考になりました。

エクスプロイト開発研修

概要

この研修では、Windows におけるエクスプロイトの手法やその開発等を学びました。

最初に周辺知識としてよく使われる用語やエクスプロイトに関係する法律等を教わった後、エクスプロイトの講義へ進みます。 講義は単元ごとに座学、ハンズオン、解説の流れで行われました。 単元を一部抜粋したものを以下に示します。

  • バッファオーバーフロー(BoF)
  • シェルコード
  • データ実行防止(DEP)
  • リターン指向プログラミング(ROP)
  • アドレス空間配置のランダム化(ASLR)
  • 境界外読み書き(OOB read/OOB write) etc..

ハンズオンでは、単元ごとに用意された脆弱なアプリケーションに対して各自エクスプロイトコードを組み、実行した証跡と PoC をレポートとして講師に提出します。 DEP や ASLR、Canary 、GS は一般的なエクスプロイトの防御機構ですが、これらをバイパスするエクスプロイトコードも組みます。

これらを学んだ後、アタックサーフェス分析や脆弱性の見つけ方を教わり、総合演習に挑みます。 総合演習では用意されたソフトウェアのプログラムに対し、脆弱性を探しエクスプロイトコードを作成します。 総合演習においてはレポートを提出すると点数がつけられ、後日フィードバックが返ってきます。

本講義の資料は約 450 ページとボリュームがあるため、時間との兼ね合いで一部のエクスプロイトや x64 におけるエクスプロイトの講義は行われませんでした。 しかし、講義資料には飛ばした単元についても詳細に載っているため、自習時間等を利用して独学で学ぶことも可能です。

感想

前中

私含め多くの同僚もかなり苦戦した研修で、個人的には新人研修の中で最も難しい研修でした。

初めてセキュリティを触れる人にとっては、この研修が最大の難所だと思います。

ただ講義内容は非常にわかりやすく、またエクスプロイトに関してもストーリー性があり、流れを掴みやすかったです。 例えば BoF の単元からシェルコードへの単元へ移る際は、「BoF が出来たけどこれを利用してどのように攻撃すればよいか」という流れでシェルコードの話に進むといった具合です。 エクスプロイトはよくいたちごっこと言われますが、そのいたちごっこをトレースしているような研修でした。 単元によっては理解の足りていなかった部分がありましたし、演習も大変でした。 しかしその後の自習でキャッチアップもできましたし、確実に実のある研修であったと自信を持って言えます。

髙橋

エクスプロイト開発研修を通して、脆弱性についてや、その攻撃手法についてなどを学びました。 私はエクスプロイトに関する知識がありませんでしたが、資料や実際に手を動かして演習することで、理解を深めることができました。 WinDbg などの使用方法も記載されていて、業務で困ったら検索よりも、この資料を見返すほど参考になります。 特に印象に残っていることは、バッファオーバーフローについてです。 私は大学でプログラミングを多少学んでいたため、他の単語と比較してバッファオーバーフローは聞きなじみがありました。 しかし、改めて脆弱性として学び、今まで軽く考えていたことを反省しました。 この他にも勉強になる項目が多く記載されているため、復習を頑張りたいです。

製品開発研修

概要

この研修では、製品開発の流れやチーム開発における連携の取り方について学びました。

最初に製品開発の流れや仕様書等の書き方を教わった後、 FFRI AMC *1 の運用補助ツールをグループワークで作成します。 グループワークは 3 人および 4 人のチームに分かれ、用意された要求仕様書から要件定義書・機能仕様書を作成し、GitHub 上でレビューしていきます。 仕様書等のレビューには講師が参加し、講師から Approve されるとツールの開発に移ります。 ツールの実装には C++ を用い、チームメンバーを機能ごとにアサインして開発していきます。 開発中のレビューには基本的に講師が参加しないため、チームメンバー同士で連携をとることが鍵となる研修でした。

最終日は報告会として成果物の工夫した点や個々人の勉強になった点を発表します。 発表が終わった後は KPT フレームワークでグループワークを振り返り、研修が終わります。

感想

前中

私はチームでの開発経験があまりなく、チームメンバーと連携が取れるか多少の不安がありました。 しかし、常にチームメンバーと認識をすり合わせ、機能ごとにコードを分担することでスムーズに開発が進んで行きました。 また、分からないところはすぐに報告するなどを徹底することで、チームメンバー間の連携も上手く取ることができました。

内容についても難易度が程よく設定されており、チーム開発をするにはうってつけの内容だったと思います。

髙橋

製品開発研修を通して、チーム開発や仕様書などの書き方を学びました。 仕様書等を書く際の話し合いにおいては、自分が考慮しきれなかった意見も多くあったため、とても参考になりました。 また、チーム開発では Visual Studio と GitHub を用いて、メンバー全員でコーディングとレビューをしました。 GitHub に慣れていなかったため多少苦労しましたが、その日に行うタスクや次の日に行うタスク、終わったタスクの報告など、連絡を密にとることでスムーズに開発を進めることができました。 最後に報告会があり、他のチームと自分たちのチームを比較して、仕様書の違いや実装方法の違いなど参考になり、興味深いと感じました。 この研修での経験が、開発業務を行う上でも活きています。

機械学習研修

概要

この研修では、機械学習の基礎と FFRI yarai の検知ロジックに組み込まれている機械学習エンジンについて学びました。

最初に FFRI yarai における機械学習の立ち位置や、利用している機械学習の種類を教わり、ハンズオンへと進みます。 ハンズオンでは用意された Jupyter Notebook の環境で Python を利用し、機械学習ライブラリを用いて演習をしました。 演習内容は、与えられた無害なソフトウェアとマルウェアの API コール列をデータセットとして各自分類器を作成し、マルウェアの判定をするというものです。 Exploratory Data Analysis(EDA)から得られた情報をもとに各自特徴量を選択し、機械学習モデルを選択して分類器を作成します。 作成した分類器は ROC Curve や importance 等でモデルを分析し、更なる性能の向上を目指します。

完成した分類器は講師へノートブックとともに提出し、後日レビューが返ってきます。

感想

前中

私は機械学習について大学の講義程度の知識しかなく、実際に実装したのは今回が初めてでした。 大学では複雑な理論の話が多く、そのため実装も複雑なものだと思っていましたが、ライブラリがあまりにも強力で少し驚きました。 ただ特徴量エンジニアリングは難しく、結果的には高精度な分類器を作成できませんでしたが、精度向上を目指して工夫を凝らす工程は楽しかったです。

髙橋

機械学習研修を通して、機械学習の分析方法や前処理の方法などについて学びました。 私は大学の研究室で機械学習について多少学んでいましたが、その時は画像を用いた機械学習であったため、マルウェアの情報を用いた機械学習は新鮮に感じました。 特に印象に残ったものは 2 つ目の演習です。 マルウェアとマルウェアではないデータが用意されていて、自分で機械学習に使用できるように前処理を行う演習でした。 そのままではデータ量の多さが原因で処理しきれないため、いかに効率的に前処理を行うか考えることが興味深いと感じました。 また、フィードバックでは課題ごとに想定される工夫点やさらに良くする方法について記載されていたため、改善点を考えるきっかけになりました。

おわりに

ピックアップした研修の紹介は以上になります。

研修全体を通して感じたことは、全体的に研修のクオリティーやレベルが高いということです。 サンプルプログラムやサンプルマルウェア検体、研修で利用するシステムの構築は全て研修用にカスタマイズされており、受講者への理解を深める工夫が多くありました。 講義資料に関しても事細かに記載されており、いつでも見返したくなるような資料になっています。 特にセキュリティについては資料が充実しており、また手厚いサポートも受けられます。

研修期間も 4 か月と長く、自習時間もいくつか設けられているため、セキュリティに関する知識のキャッチアップも可能だと思います。

そのため、セキュリティについての事前知識はなくても大丈夫だと思いました。 また、多くの研修では進捗の早い人向けに、追加課題や挑戦課題が用意されています。

これらの課題は、通常の課題よりもワンランクレベルの高い内容となっているため、セキュリティについて事前知識のある方でも学びの多い研修だと思います。

本記事がFFRIセキュリティの新人研修制度に興味や不安がある方の一助になれば幸いです。

採用に関しては、採用情報を参照ください。 新卒・キャリア採用、双方の情報を掲載しています。

*1:FFRI yarai を管理する Web アプリケーションコンソール