みなさん、こんちにはmです。
今回は私が1年の期間でマルウェア解析のスキル0から習得するまでに取り組んだ方法をまとめました。
初めに開始時のスキルや1年間でかけたコスト、スケジュールなどを共有します。
開始時のスキルなど
- 表層解析、動的解析、静的解析の違いもあまり理解していない
- プログラミングはPythonを学び始めた程度
- 低レイヤーの知識なし
- アセンブリの知識なし
- Windowsアプリケーション開発の経験なし
- SOCアナリストとしてブルーチームの知識は多少
- 脆弱性診断の経験も(深くはないが)多少
- エンジニア歴7、8ヶ月目くらい
ざっくりですが、このようにマルウェア解析に絡んでくる知識はほぼ0でした。
学習にかけたトータルコスト
- 書籍:約5万円
- オンライン教材:12万円
約17万円近く1年間に使いましたが、お金で直接スキルは買えないので必要経費です。
なお、オンライン教材の12万円については会社に購入してもらったので実質実費は5万円です。
以下が過去Xに投稿したマルウェア解析に関する書籍一覧です。
ここに載せ忘れましたが、インサイドWindows 上・下やアセンブラ関連の書籍がもう1つあります。
スケジュール
- 0 ~ 1ヶ月:表層解析学習
- 1 ~ 2ヶ月:Office製品のマクロマルウェア解析学習
- 2 ~ 5ヶ月:アセンブリ、リバースの基礎学習
- 5 ~ 8ヶ月:教材を見ながらハンズオン形式でマルウェア解析と基礎学習
- 8 ~ 10ヶ月:WannaCryなど実際のマルウェアを教材を読みながら解析学習
- 10 ~ 12ヶ月:実際のマルウェアが用いる暗号手法、解析妨害などを学習、試験挑戦
ブログのタイトルには「マルウェア解析を習得した」と記載していますが、人によって「習得」のレベルが異なると思います。
そのため、今回私は以下の2つがクリアできれば「スキル習得」としています。
Zero2Automatedとは
Zero2Automatedは海外のマルウェア解析の学習コンテンツです。
このコンテンツの特徴は静的解析・リバースエンジニアリングに特化しており、
中・上級者向けであるため高度なスキルを学ぶことが可能です。
学習を完了させることで最後に認定試験を受けることができます。
試験用の検体が提供されるため、14日間で解析からレポート作成まで行い合格することで認定証をもらうことができます。
コンテンツの説明から合格までは会社のブログに投稿しているため、ここでは詳細は割愛させていただきます。
スケジュール詳細
0 ~ 1ヶ月目
はじめにマルウェア解析の手法から学び始めました。
大分類で表層解析・動的解析・静的解析があることを知り、一番難易度が低い表層解析から学ぶことを開始しました。
オンライン上に転がっている情報から表層解析で求められている情報を集め、
Malware Bazaarから実際に検体を落として何種類か解析しました。
bazaar.abuse.ch
表層解析は難しいものではないため、特に時間もかからずに済みました。
1 ~ 2ヶ月目
この期間はOffice製品のマクロ機能を悪用したマルウェアの解析技術を学びました。
時期的にも、まだEmotetなどが定期的に話題になっていたため、このスキルは早い段階で習得する必要がありました。
まずMalware Bazaarからエクセルのマルウェアをダウンロードし、習得した表層解析を実施しました。
そのあとは時間をかけてマクロの挙動を把握しました。
また、この時に初めてデバッグ作業を行い動的に処理を追って解析しました。
プログラミング経験がある方であればデバッグは身近なものだと思いますが、私の場合初めてのデバッグはエクセル上でVBAをデバッグすることでした。
ここでは難読化されたコードの処理を追ったりC2サーバーの特定など解析から明らかできました。
2 ~ 5ヶ月目
次はWindowsで動作するPE形式のマルウェアを解析することに取り組みました。
ただし、その前に基礎を学ばなければいけません。
そのためこの期間では、「C言語のソースがどのようにコンパイルされるのか」「アセンブリとは」「リバースエンジニアリングとは」などを学ぶことに専念しました。
このタイミングでは、以下の書籍を読み理解を深めました。
- リンカ・ローダ実践開発テクニック
- リバースエンジニアリングバイブル
- デバッガによるx86プログラム解析入門
- 解析魔法少女美咲ちゃん マジカル・オープン!
最初にリバースエンジニアリングバイブルから読み始めた記憶がありますが、
色々読んだ結果、最初に読むめき本は「解析魔法少女美咲ちゃん マジカル・オープン!」が分かりやすく良かったと思います。
また、マルウェア解析の知識を深めるという意味では、MBSD社さんのマルウェア解析のブログを読み漁ったり、マルウェアの教科書を読み静的解析ではどのような観点で解析するのかなど一般的な情報を取り入れました。
5 ~ 8ヶ月
この期間のメインは「Practical Malware Analysis」という海外の教材を用いてハンズオン形式で解析スキルを学びました。
https://www.amazon.co.jp/Practical-Malware-Analysis-Hands-Dissecting-ebook/dp/B007ED2XDS/ref=as_li_ss_tl?s=english-books&ie=UTF8&qid=1488534854&sr=1-1&keywords=practical+malware+analysis&linkCode=sl1&tag=recommend09-22&linkId=50802bff977867931d6d26de43d0d03e
この本は情報自体少し古いですが、基礎を知るには十分すぎるものでした。
全てのチャプターで説明されている解析手順を実際に解析環境で再現することに注力して、理解を深めました。
この本は個人的にかなりオススメです。
また、先ほどのMBSD社さんのブログを参考に同じ検体をダウンロードし、ブログで解説されている機能を見つけたり解析妨害を突破したり・・ということにも取り組みました。
8 ~ 10ヶ月
eLearn SecurityからeCMAPというマルウェア解析の資格がでていることを知ります。
また、INEのサブスクライブに登録することで、eCMAPの資格学習ができるということで年間プランで会社に契約してもらいました。
以下、公式サイトからコピペしてきた項目一覧です。
-Learn about IA-32 CPU Architecture
-Entire module dedicated to x64 bit assembly
-Practical display and dive into the TLS method
-Understand how malware uses Windows APIs to achieve their malicious activity
-Understand and bypass Anti-Reversing techniques
-Perform full manual unpacking on packed executables
-Debug samples using different debuggers
-Learn different methods to locate the important algorithms
このコンテンツの良かった点は実際のマルウェア「WannaCry」 などを解析付きで手順を学ぶことができることです。
また、アンチデバッグやアンチリバースエンジニアリングの回避テクニックも学べます。
ただし、解析の深いところまでは入っていかないので基本的なインジェクションテクニックを学べるところで終わってしまいます。
教材ではProcess Hollowingは含まれていた記憶はありますが、early bird injectionのようなテクニックは含まれていませんでした。
そんなこんなで用意されているコンテンツを全て終えたので、試験に挑もうとeCMAPの試験代を購入しようとしたところ、資格廃止に伴い購入&受験することはできなくなりました。
そのタイミングでZero2Automatedの学習も開始し始めました。
こちらは当時2万4000円ほどで会社に購入してもらいました。
courses.zero2auto.com
10 ~ 12ヶ月
Zero2Automatedの認定試験に合格すべく、まずは用意されている教材に取り組みました。
ただし、Zero2Automatedは7割ほどが文字ではなく動画による解説です。また、一部で字幕翻訳できない動画もあったため動画で行われている内容から何をしているか考えて理解する必要がありました。
恐らくその辺りの理由で価格が安く押さえられているものと思われます。
ある程度学習し終えたところで、一度Malware Bazaarで野良のランサムウェアをダウンロードして解析作業に取り組みました。
この時点で解析妨害も回避するテクニックも身につけていたため、約1ヶ月ほどで存在する機能の洗い出しを完了させました。
野良のランサムウェアを1から解析できたということで、Zero2Automatedの認定試験に挑戦しました。
試験は理論と実技の2パターンに分かれており、先に理論に合格できたら実技試験の案内がきます。
実技試験はお盆休みを活用して、がっつり試験に取り組みました。
初めの1-2日は作業が思うように進みませんでしたが、ある問題を解決できたことによりその後はスムーズに取り組むことができ、トータル10日ほどでレポート作成まで完了しました。
その結果無事に1発で合格することができました。
まとめ
この1年間のスケジュールで私は以下の2つを達成することができました。
まだまだ、私自身マルウェア解析者としては未熟でスタート地点にいるようなものですが、最低限の知識は身につけることができました。
今回ご紹介したスケジュールが必ずしも人にオススメできるかというと決してそうではない(休みなど大きく潰して学習したため)ため、結論自分のペースで勉強するのが良いとは思います。
最後まで読んでいただきありがとうございました。