FFRIエンジニアブログ

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

2021 年度新人研修その 1:全体の振り返り

はじめに

こんにちは。 2021 年度新卒入社の篠原です。現在は、研修を終え実案件に取り組んでおります。

FFRIセキュリティでは入社後 4 ヶ月かけて新人研修を実施し、その後 OJT 期間に移行します。 例年であれば研修期間は出社し、 OJT 期間で徐々にリモートワークに慣れていく流れでした。 しかし、新型コロナウィルス感染症の影響により昨年度と同様、ほぼ全ての研修がリモートで行われました。 この記事では 2021 年度の新人研修を振り返り、幾つかの研修をピックアップして紹介していきます。

対象読者としては、「FFRIセキュリティへの入社に興味があり、入社後にどういったサポート・トレーニングが受けられるのか、その詳細を知りたい」という現在就職活動中の方を想定しております。

募集要項の要件「必須条件」に「※セキュリティに関しての事前知識は必要ありません。」と書いているものの、実際のところセキュリティの事前知識なしで大丈夫なのかと不安に思う方がいらっしゃるかもしれません。私は大学で物理学を専攻していたこともあり、セキュリティはもとより IT に関する知識や経験が豊富だとは言えません。そのような私が研修を受けどのように感じたかを紹介しますので、この記事が不安解消の一助となれば幸いです。

また、昨年度までの新人研修の記事もあるので、こちらも参考になるかと思います。

2021年度の新人研修の内容

上から順に研修が実施されました。

  • 管理系研修: 6 日間
  • 企業インフラ研修: 1 日間
  • 開発チュートリアル・プログラミング研修: 8 日間
  • ExpertSeminar: 5 日間
  • IncidentResponse: 2 日間
  • 製品開発研修: 14 日間
  • 品質保証研修: 5 日間
  • 脅威動向と感染事例: 1 日間
  • 検知ロジック開発研修: 5 日間
  • サポート研修: 2 日間
  • 過検出判定研修: 5 日間
  • Windows 解析研修: 5 日間
  • クラウドサーバー研修: 1 日間
  • ActiveDirectory 研修: 2 日間
  • 機械学習研修: 5 日間
  • ダンプ解析研修: 1 日間

上記の研修から 7 つピックアップし、紹介していきます。

開発チュートリアル・プログラミング研修

C 言語で Windows プログラミングを行う課題が 5 題出題され、それに取り組みました。 課題の内容は、 Windows コマンドや Sysinternals Suite ツールと同等な処理を行うプログラムの開発でした。 開発したプログラムについては、 GitHub で先輩が課題 1 題ごと丁寧にレビューしてくれました。

この研修を通じて、GitHub の使い方やセキュアコーディング、可読性の高いコーディングについて学ぶことができました。 また、必要な Win32 API の情報が Microsoft 公式のドキュメントや日本語サイトからだけでは収集できなかったので、欲しい情報を見つけ出す"検索力"がこの研修で磨かれました。

惜しくも、この研修期間内では全ての課題を終了できなかったのですが、研修後も先輩が空いた時間を使ってレビューしてくれたいのは大変ありがたかったです。

また、この研修が実際に手を動かす最初の研修であったのでやっていけるか少し不安でしたが、先輩が大変丁寧に質問対応してくれたので不安が解消されました。

ExpertSeminar

以下の 3 つの内容について、受講・演習しました。

  • セキュリティ技術者育成

    講義では、情報セキュリティの基礎知識から始まり、代表的な攻撃手法や攻撃の発見・防御、ペネトレーションテストについて学びました。演習では、仮想サーバーを用いてパケットキャプチャや脆弱性検証を実施しました。

    脆弱性検証では OpenVAS で仮想サーバーの脆弱性をスキャンするだけでなく、実際に Metasploit で攻撃したこともあって、脆弱性が存在する危険性を初めて目の当たりにして特に印象的でした。

  • マルウェア動的解析

    講義では、動的解析や Windows API とは何かから始まり、Windows プログラムの構成やマルウェアがよく使う API について学びました。また、API Monitor や Process Monitor といった解析ツールの使い方をサンプルプログラムを用いて学びました。

    サンプルではあるもののマルウェアを初めて触ったので少し緊張しましたが、マルウェアについて手を動かしながら理解を深めることができて良かったです。

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

    CPU と OS の基礎やアセンブリ言語について講義を受けた後、演習を通してリバースエンジニアリングツールである Ghidra の使い方を学びました。 演習では、サンプルプログラム内に隠されたシリアルナンバーを探す課題が出題され、プログラムの挙動を理解する上で見るべき観点が養われました。

    初めてのリバースエンジニアリングでしたが、数学の問題を解くときに感じるパズルのピースが埋まっていく感覚があって、大変面白くやりがいのある研修でした。

私は入社時点でサイバーセキュリティに関する知識や技術がほぼ無い状態でしたが、この研修を通じてセキュリティの基礎的な知識や技術を習得できました。特に解析ツールはこの後の研修でも扱うため、このときの学びが活きていることを実感できたのは嬉しかったです。

IncidentResponse

前半に講義、後半に演習といった流れで研修が進みました。 講義では、インシデントレスポンスとは何かから始まり、インシデントレスポンスの流れや手法について学びました。 手法については特に、侵害された証拠をどのように集めるかを学びました。

演習では、仮想環境上に用意された侵害の痕跡を収集し、侵入経路・攻撃による被害を調査しました。主に Windows イベントログから痕跡を収集しましたが、これだけで侵入経路等を推測できることに正直驚きました。

また、想定シナリオのもと、お客様を意識して調査結果を発表することが求められました。そのため、説明の仕方や資料の見やすさにも気をつけました。 発表後は、先輩から調査結果や発表についてフィードバックをもらいました。お客様意識は社会人として重要なマインドであるので、この研修を通じて養うことできて良かったです。

製品開発研修

製品開発部に関する説明を受けた後、新人 2 人チームで FFRI yarai の外部ツールを開発しました。 具体的には、実際の業務の流れに沿うかたちで以下を実施しました。

  1. 提示された要求仕様書を基に、機能仕様書を作成
  2. 機能仕様書をチーム内でレビューした後、先輩がレビュー
  3. 作成した機能仕様書を基に C/C++ で開発
  4. 開発プログラムをチーム内でレビュー・テスト

研修が始まって以来初めてのチーム作業であり、 14 日間と比較的長期的な研修でした。 チームで話し合う機会を多く取り、日々の進捗状況を把握して計画を逐一見直すことを徹底しました。その甲斐あって、要求された機能を期限内に全て実装できたのは大変嬉しかったです。

また、この研修で初めて仕様書を扱いましたが、仕様書があることでチーム内の認識の擦り合わせや満たすべき機能の把握、開発の見通しが立てられることを学び、重要性を感じました。

検知ロジック開発研修

提示されたサンプルマルウェアを静的または動的に検知できるロジックを考え、考えたロジックをエンジンに実装しました。 ロジックを考えるためにサンプルマルウェアと正常なファイルそれぞれについて、静的解析および動的解析を実施しました。 具体的には、静的解析では PE ファイルの構造からサンプルマルウェアに共通する項目を、動的解析ではサンプルマルウェアが呼ぶ API を監視し、怪しい呼び方をしている箇所を見つけ出しました。

ロジックを考え出して実装することはもちろんのこと、どうしてそのロジックでマルウェアを検知できるのかを知ることができて大変面白かったです。

また、早く終わった方向けに動的検知の追加課題が用意されていました。私もそれに挑戦しましたが、アンチデバッグ技術が使われていたので大変苦戦してしまい、結局ロジックを考え出すことは叶いませんでした。しかし、先輩が丁寧に課題を解説してくれ、解けなかったもののアンチデバッグ技術についての理解を深めることができて良かったです。

解析してロジックを見つけ出すと聞くと難しそうと感じる方がいらっしゃるかもしれません(私はそう思っていました)。しかし、 ExpertSeminar で解析の演習課題を実施していたこともあり、追加課題を除いて大きく躓くようなことはありませんでした。

過検出判定研修

テクニカルサポート部が対応しているお客様からの問い合わせの中の 1 つに、検知ファイルに関するものがあります。 研修では、問い合わせされた検体がマルウェアであるかを判定する方法を教わった後、演習として実際にいくつかの検体を判定しました。基本的に表層解析(検体名やプロパティ情報、ハッシュ値)や動的解析(仮想環境上で動作を確認)を実施し、判断材料を集めました。検体の中には vbs や xlsx ファイルもあったので、それらについては静的解析も実施しました。

研修では検体が 50 個用意されており、初めは明らかにマルウェアもしくは安全と判断できる検体が主だったので簡単でした。 しかし、途中からそのような検体が少なくなり判断や証拠集めに苦戦しましたが、研修終盤ではコツが掴めてきて速く正確に判断できるようになりました。

機械学習研修

まず初めに機械学習についての講義を受けました。講義では、先輩が Jupyter Notebook で Python の機械学習ライブラリを実演しながら、 EDA から欠損値の補完のような前処理、モデルの作成や精度評価について教えてくれました。 その後、講義で用いた学習データから自分なりの分類器を作成する課題が与えられました。 Python や機械学習自体が初めてで、調べたり理解するのに時間を割いていたこともあり、あまり高精度な分類器を作成できず悔しい思いをしました。 次に SPAM メールとそうでないメールの分類器を作成する課題が与えられました。講義のときの学習データはテーブル状のデータでしたが、今回はメールであるため自然言語を取り扱いました。 1 回目の分類器作成で色々と調べたこともあり、工夫や精度向上にかなり時間を割いて満足のいくものが作れたので、成長を実感できました。

研修修了後、作成した分類器について新人同士で共有しましたが、機械学習を学校で学んでいた方からのお話を聞けて大変勉強になりました。

おわりに

研修の紹介については以上になります。

新型コロナウィルス感染症の影響により、今年度の研修は入社日を除いて全てリモートで行われました。

リモートでの研修に不安を感じる方もいらっしゃるかもしれませんが、先輩が質問しやすい雰囲気を作ってくれたので特に問題なく研修を修了できました。

充実した研修内容と先輩の手厚いフォローにより、「はじめに」で述べた「※セキュリティに関しての事前知識は必要ありません。」の通り、事前知識がなくても問題なかったと思います。 また、事前知識がある方でも検知ロジック開発研修で紹介したように、課題が早く終わった方向けの追加課題も用意されてるので、充分満足できる内容になっていると思います。

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

FFRIセキュリティの新人研修にご興味のある方は、こちらの新人研修についての記事一覧もご覧ください。

FFRIセキュリティの新人研修について

FFRIセキュリティでは、毎年 4 月から 4 ヶ月間、新入社員を対象に研修しており、セキュリティに関して事前知識がなくても、研修中に一通りの知識を学べるようになっています。採用に関しては、採用情報を参照ください。