はじめに
こんにちは。 2020年度新卒入社の佐々木です。
FFRIセキュリティでは入社後4ヶ月をかけて新人研修が行われ、今年もこの7月で研修が完了しました。 例年の場合、研修期間は出社し その後のOJT期間に徐々にリモートワークに移行していくとのことですが、今年は新型コロナウイルス感染症の影響を考慮し、急遽ほとんどの研修がリモート形式で行われることになりました。 この記事では、そんな今年の新人研修について振り返りを行います。
対象読者としては、「FFRIセキュリティへの入社に興味があり、入社後にどういったサポート・トレーニングが受けられるのか、その詳細を知りたい」という現在就職活動中の方を想定しています。
募集要項の要件「必須条件」に「※セキュリティに関しての事前知識は必要ありません。」と書いているものの、実際のところセキュリティの事前知識なしで本当に大丈夫なのか不安という方は、具体的にどういったサポートを受けられるのか、この記事を通じて把握できると思います。
一昨年度の新人研修の記事や昨年度の新人研修の記事も参考になるかと思います。
2020年度の新人研修の内容
入社日から2週間
3月末に東京都から外出自粛要請が発表されたことで、入社日から4月12日までの間は自宅で受講ができるeラーニング形式の研修に変更となりました。 例年は入社日からオリエンテーションや研修をスタートするそうですが、今年は新型コロナウイルスの影響を考慮して変更となったそうです。この間は、研修が本格的に始まるまでの準備期間として、基本的なビジネスマナーやコンプライアンスについて学びました。
管理系研修
各人にPCが支給された後は、Slackのビデオ通話や画面共有を活用して研修が行われました。
開発環境のセットアップなどはこれ以降のリモートで行われる研修と並行して行いました。 また、支給されたPCのスペックは以下のようになります。
- CPU:
Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz 2.59GHz
- RAM: 32GB
- SSD: 1TB
- HDD: 2TB
- GPU:
NVIDIA Quadro P1000
管理系の研修は昨年以前の記事を見ると入社式と合わせて2日程度だったようですが、今年は5日ほどかけて行われました。
ビジネスマナーやコンプライアンス、思考プロセスやビジネスマインドといった研修を受けました。
ビジネスマナーやコンプライアンス研修では社会人としてやっていく上で必要な知識やルールについて学びました。 学生時代も就職活動等の際に多少は学びますが、やはり足りておらず新しく学ぶことが多かったです。
思考プロセスやビジネスマインド研修では、ロジカルシンキングやMECEといった考え方やPDCAといった物事の進め方について学びました。 実際に演習などに取り組んでみると案外難しく、常に意識していかなければ身につかないものだと実感しました。
開発チュートリアル・プログラミング研修
CによるWindowsプログラミングの課題が与えられ、2週間かけてそれに取り組みました。 課題の内容としては、Windows APIを使ってWindowsやSysinternals Suiteの各種コマンドの機能を実装するというものでした。
課題1題ごとにGitHub Enterpriseのリポジトリにpushし、レビューしていただきました。 レビューではテストの妥当性から、可読性を高める、警告を極力なくすといったところまで見ていただき、徐々にそれらに注意してプログラミングができるようになったと思います。
製品開発研修
ウォーターフォールモデルによって、2~3人のグループでFFRI yaraiと連携する外部ツールを開発しました。 提示された要求仕様書から機能仕様書を作成、実装のための調査、コーディングの順で行い、機能ができたらレビューという流れで2週間強の期間で開発に取り組みました。 この研修では、意図の伝わる仕様書の書き方やチームでの開発、実際の製品を考慮したセキュアなコーディングといった点に注力しました。
品質保証研修
実際にFFRI yarai AMCの機能をテストすることで品質保証業務の流れを経験しました。 具体的には機能仕様書・要求分析書を基にテスト仕様書を書き、それに沿ってテストを行いました。 テスト仕様書を作成する過程でテストを行う上で欲しい情報を体感することができました。
脅威について・検知ロジック開発研修
攻撃者の手口や実際の感染事例についての講習を受け、その後検知ロジックを実際に作る研修を行いました。
検知ロジック開発研修では静的及び動的解析エンジンの新規ロジックをそれぞれ作成しました。 サンプルマルウェアと正常系のファイルが渡され、それらの挙動を解析してマルウェアのみ検知されるロジックを書きました。 静的解析ではPEファイルの構造からマルウェアにのみ存在する特徴を抽出し、検知するロジックを作成しました。 動的解析ではAPIフックを用い、APIの呼び出し方を手がかりに検知を行いました。 ここで初めてAPIフックに触れ、挙動の概要を理解しました。 APIフックの仕組みについては後の研修で学ぶことになります。
また、過検出のテストを行うために渡された正常系のファイルをすべて実行する必要があったのですが、渡されたファイルは500個あった上にファイル名から拡張子が削除されており、リネームから実行までを自動化する必要がありました。 エンジンはC++で書くことが指定されていましたが、自動実行の方法については特に指定されていなかったため、自分はPythonを用いて自動化を行いました。
機械学習研修
機械学習研修ではPythonの機械学習ライブラリを用いて分類器の作成を行いました。 講習では、データセットを補完等によって前処理しそれを可視化することでデータの特性を把握、その後いくつかのモデルを用いて分類を行いました。 また、各モデルの精度の比較およびパラメータの調整等を行い、精度の高い分類器をつくる方法を学びました。
ハンズオンではスパムメールとそうでないメールの分類を行いました。 講習のデータは予めテーブル状になったデータを用いていましたが、メールは自然言語であるため、学習データの作り方から工夫が求められました。
サポート研修
テクニカルサポートで行っていることについて、及びユーザからみた製品についての講習を受けました。 サポートへの問い合わせの返答の仕方や、システム管理者にとって嫌なことといったことについて学びました。
ハンズオンでは製品についてのいくつかの問い合わせが与えられ、それを2~3人のグループで返答していくという演習を行いました。 問い合わせへの返答の文章の書き方はもちろんのこと、FAQやFFRI yaraiのマニュアル等を読み込まなければならなかったため製品への理解も深まりました。
過検出判定研修
FFRIセキュリティには、マルウェアかどうかわからないファイルの解析依頼も承っているとのことで、そのようなファイルの判定を行う研修を行いました。
講習では解析の手法を学びました。 ファイルの表層データから読み取れる情報(ファイル名、ハッシュ値、プロパティの情報等)や、動的解析で見られた挙動、静的解析で見られたファイルに含まれる文字列といった情報から判定を行います。
ハンズオンでは実際に過検出の疑いがあるファイル群が与えられ、それについて解析を行ってレポートを書きました。 ランサムウェアのようにあからさまなマルウェアの挙動を示すものや、インターネットで調べるといくつか安全である根拠が得られるものは判定が簡単だったのですが、インターネットで情報が得られず挙動も少し怪しい程度のものや、マクロスクリプトのようなものは解析に手間取りました。
マルウェア解析研修
マルウェアがよく用いるAPIやよく行う挙動について、及びマルウェアの動的解析の手法について学びました。 また、Windows APIの呼び出しの仕組みや、GUIアプリケーションにおける処理の流れなどの知識も教えていただきました。
演習では動的解析に用いるAPI MonitorやProcess Monitorといったツールについての使い方を詳しく学びました。
セキュリティ技術者育成研修
この研修あたりで7月に入り、緊急事態宣言が解除されたことやリモートでは難しい研修がいくつかあるとのことで数週間ほど出社での研修になりました。
この研修時点ではオフィスの移転後であったため丸の内のオフィスへの出社となりました。
セキュリティについての基礎知識から、代表的なサイバー攻撃についてや攻撃の検知と防御、ペネトレーションテストについて学びました。
ハンズオンでは様々なツールを用いてパケットの解析やパスワードクラック、脆弱性の調査・攻撃といった演習を行いました。 脆弱性を用いた攻撃の実物には初めて触れる機会となり、その危険性を実感することができました。
リバースエンジニアリング研修
x86やx64といったアーキテクチャにおいて、Windowsの実行ファイルがアセンブラ単位でどう動いているのかや、リバースエンジニアリングの手法やそれの解析手法について学びました。 x86やx64での各レジスタの役割やWindowsのセキュリティ機構による挙動等の知識を身につけることができました。 また、APIフックのいくつかの手法やそれによるマルウェア解析の手法及びマルウェア側の攻撃手法も学びました。
各項目ごとに理解の確認として行われた細かい演習の他、サンプルマルウェアをリバースエンジニアリングし、挙動を解析する演習を行いました。 アセンブリから実行ファイルの挙動を追う上で注視すべき点を身につけることができたと思います。
Windows解析研修
各自で演習に取り組み、レポートへのレビューを受けることで研修が行われました。
特定文字列を入力した場合のみ特殊な挙動をする実行ファイルをリバースエンジニアリングしその文字列を特定する問題や、API・レジスタの仕様を調査する問題に取り組み、Windows OSへの理解やリバースエンジニアリングへの理解を深める事ができました。
Incident Response
インシデントレスポンスとは、実際に攻撃を受けた際に、検知・解決を行う体系的なアプローチのことです。 今年から新しく加えられた研修になります。
実際の攻撃のケーススタディから、どういった対策が必要なのかを学び、攻撃の痕跡の解析について学びました。 具体的には攻撃に使われたファイルのハッシュや通信先・通信内容といった痕跡を攻撃を受けたコンピュータから探します。
ハンズオンでは、攻撃を受けたコンピュータからWindowsイベントログを主な手がかりとして痕跡を収集し、どういった侵入経路で攻撃が行われ、どういった被害があり、今後どういった対策が必要かなどを推測しました。
ダンプ解析研修
WinDbgの使い方や基本的なメモリダンプの解析の仕方について講習を受けた後、実際にメモリダンプを解析する演習を行いました。
各スレッドにおけるスタックやロックの状況、例外を確認することで問題の状況が発生した原因をメモリダンプからその時起こったことを推測しました。 問題が発生したときの挙動や、メモリダンプより得られる情報から推測を行うのは案外難しく、手応えのある演習でした。
2020年度の新人研修を振り返って
今年の新人研修は大まかには以上の内容になります。 4~6月はリモートで、7月は出社で、計4ヶ月の研修となりました。 新型コロナウイルス感染症の影響を考慮し、急遽リモートでの研修に切り替えたとのことでしたが、自分から見て大きなトラブルも無く、無事研修を受講することができたと思います。
ビジネスマナーやコンプライアンスに始まり、FFRIセキュリティで使用する技術であるWindowsプログラミングやソフトウェアの解析手法、アーキテクチャの知識やセキュリティの基礎など多くの知識を身につけることができました。 入社時点で自分のセキュリティについての知識はほとんどありませんでしたが、どの研修も興味を持って取り組み、理解することができる内容でした。 冒頭に述べた「※セキュリティに関しての事前知識は必要ありません。」の通り、問題なかったと思います。 また、課題が早く終わった方向けに追加の発展課題なども用意されており、入社時点でセキュリティの事前知識を有している方でも大きく物足りない内容では無いのではないかと思います。
募集要項の通り、C/C++でのプログラミングができ、コンピュータサイエンスの基礎を習得されている方であれば理解できる内容であったと感じました。
おわりに
2020年度の新人研修についての振り返りを行い、紹介しました。 この記事がFFRIセキュリティの新人研修制度に興味や不安がある方の参考になれば幸いです。
エンジニア募集
FFRIセキュリティではサイバーセキュリティに関する研究開発を希望するエンジニアを募集しています。採用に関しては こちら を御覧ください。