セキュリティ・キャンプWS - The Anatomy of Malware 完全版

3月23日に「セキュリティ・キャンプWS - The Anatomy of Malware 完全版」に行ってきました。
この講習に参加して感じたことについてメモを残しておきます。
公開する情報については注意を払っているつもりですが、公開してはいけない情報が含まれていればご指摘ください。

はじめに

講師は中津留さん
内容はセキュリティキャンプ2017 全国大会The Anatomy of Malwareに加筆修正を行ったもの
公開しても良い情報は「受講して得たことを元にどういったことを考えたか」だと認識しています。
そのため、講義の中で私が思ったことを中心に書いておこうと思います。
講義の内容をそのまま書くだけといったメモではないです。

事前課題

気になった点は中津留さんに質問したら、返事が速いのはとてもありがたかったです(贅沢な環境)
手動でこの作業面倒だなって感じたらIDAPythonで自動化することを考えて、自動化できた時の達成感が楽しかった

当日の講義

マルウェア解析において重要な点はセキュリティ

動かしたら感染することもあるし、他の端末に攻撃をしてしまうことがあるかもしれない。
解析する環境ではセキュリティに十分注意することが重要。

事前課題に対するフィードバック

関数名の名前やコメントはプログラムを書く時のコメントに近い。詳細はリーダブルコードがおすすめ。
一文だけ引用すると「コメントの目的とは、コードの意図を読み手に理解してもらうことである。

マルウェアの一検体を解析することが目的ではない

攻撃者にとって、マルウェアを用いることは一つの手段でしかない。
攻撃者はTTP(Tactics, Techniques, Procedures)を状況に合わせてどんどん切り替えて、常に弱いところを狙ってくる。
守るためにはどういった技術を磨かないといけないのか常に考えていくことが重要だと感じた。

RC4は一度読めば次から同じものを見かけたらすぐに分かるので、一度読むことをおすすめ」

JSACでの発表を聞いてから読んでみたけれど、あまり自信がないのは自分の経験が浅いからなのか...
読んでる量が圧倒的に少ないのかもしれないので、もっと頑張ります。
先日書いたメモ:アセンブリで書かれたRC4は見た瞬間分かるか - yasulib memo

AESの復号

findcryptを使って、どの暗号アルゴリズムかは分かったとしても鍵やIV、モードが何かかはある程度読みとかないといけないなとスクリプトを書き始めて感じた。
とりあえず、今回の検体を自力で復号するのが直近の宿題。

COMインターフェース

プログラマ目線で見てみないと分からないと思い、Visual Studioをインストールして手探りで少しずつ試してるけれど、まだまだ理解には程遠い。
ファイルが作られている動作からCreateFileやWriteFileに注目して追いかけすぎると、見逃す可能性があるので注意が必要だと感じた。

// ShlGuid.hより
DEFINE_GUID(IID_IShellLinkW,         0x000214F9L, 0, 0, 0xC0,0,0,0,0,0,0,0x46);
マルウェア解析を今後も続けていくべきか

今回、講義を受講して、アンチウイルス機械学習やエンドポイント監視でいくら精度をあげようと、すべてをそこで止めるのは困難だと感じた。
結局、アンチウイルスは多層防御のうちの一つでしかなくて、他の複合的な対策も考えていく必要があるんだと感じた。
それは「マルウェアを作れなくするには。(攻撃者のメリットをなくす)」であったり、「マルウェアを踏む人をなくす(減らす)には。」、「世界的な枠組みで法律で縛れないか。」なんだと思う。
その結果、マルウェア解析が不要になることはないし、攻撃者が作成・利用したアーティファクトを解析することは今後も求められる技術の一つだと感じた。

感想

IDAの有償版を買ってからもうすぐ1年で、少しずつでもマントノン夫人と話せるようになってきたかと思うけれど、まだまだ経験不足だなと感じることが多い。
今後はGCFEの勉強しつつ、息抜きにIDAを触れる予定。
講師の中津留さん、IPAの事務局の方々ありがとうございました。