Twitterに書ききれないこと

イベントや技術的なことを記したい・・・

セキュリティキャンプWS「The Anatomy of Malware - Complete Edition -」に参加してきた。

概要

セキュリティキャンプWSは地方大会、全国大会限定の勉強会みたいな感じ。 今回は2017年の全国大会で人気講義だったSecureWorksの中津留さんのマルウェアの静的解析に関する講義(をさらにバージョンアップしたもの)「The Anatomy of Malware - Complete Edition -」が開催された。 事前課題として2015年に中津留さんが実施した講義の課題をやってくるように言われていた。

セキュリティ・キャンプ全国大会2015でのマルウエア分析講義(2015-09-10)

マルウェア解析入門として最高の資料が公開されているのが非常にありがたい。
プロがコメント付け+修正したIDBもある

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

受講生が提出したidbのいいところについてフィードバックがあった。
もっと気をつけないといけないなと思った点をメモっておく。

  • 関数コメント(先頭のやつ)を入れる
  • callやjmpの色付け(グラフビューに頼りすぎない)
  • Symbolic Constantの活用
  • 自分で名前を付けた関数名にプレフィックスを付ける(中津留さんはaaってしてたので自分はzzにしてるけどaaはちゃんとartifact analysisという意味があった)

最近のマルウェアについて

基礎知識

演習

演習ではElirks(のIDB)に取り組んだ。

自分はよく知らなかたのでまずどんなのか調べた。 いきなり読むより雰囲気をね・・・

1つ目の課題はどんな暗号使っているかというものだった。
さっきのブログにはAESとTEAって書いてあってAESっぽいな・・・という感じだった。

じゃあどうやって特定するのかというとSBOXに使うデータを見つけたらいいとのことだった。
なるほどな、勉強になった。
プロがツール化しているので、一緒に受けていたtkmruに使ってもらった。(IDA Proない・・・)

非常によい。

次の課題は指定された関数が何をしているかというものだった。
1つ目はカスタムbase64だった。
MWS Cupで非常に類似した問題を解いたことがあったため、あーこれは・・・となった。
やっぱり数こなすことが強くなるには必要ですな~

f:id:pinksawtooth:20180330114727p:plain f:id:pinksawtooth:20180330114738p:plain f:id:pinksawtooth:20180330114734p:plain

ほかは自動実行するためのレジストリ登録
以下のような内容
Windows Registry Persistence, Part 2: The Run Keys and Search-Order

3つ目のCOMに関する内容は非常に勉強になった。
手動での解析方法も教えていただいたが、IDA Pythonの存在も教えていただいた。
txt形式でID一覧もみれるのでそういった使い方もできそう。

github.com

最後の取り組みでは、グループごとに関数を選んで何をしているかを解析するというものだった。 最初は通信している部分がなくて、どうしているのかと思ってたがどうやら別のスレッドがデータが書き込まれる領域を監視していて、そのスレッドが送信をしているということらしい。 なるほど、マルチスレッドだと静的な解析だとわかりにくいな・・・

最後に今後どういった未来になるだろうという話があった。
最近はEDRで解析していこうという流れであるといった話や機械学習等でBOTのコマンドなどだいたい役割が決まったものは、この関数はどういった役割とかがわかるようになるのではないかという話があった。

感想

現役のマルウェア解析者の方に直接マルウェアの静的解析について教えていただける貴重でありがたい機会でした。

新しく学ぶだけでなく、自分の理解を再確認でき、2015年の中津留さんの講義を"見学"したときよりも理解が深まっていることに安心できました。(あたりまえか)
また、パターンマッチングできるレベルではある程度pythonスクリプトで自動化できているんだということもわかり、今後解析を助けるツールを開発するうえでは、機械学習とか使っていくのかなーとも思いました。 なにか面白そうな研究テーマを見つけたい。

あとWSでは2つのIDBが配られたのですが1つはデコードしたコードを食わして完全な状態に戻してあったので、自分でもチャレンジしてみたいです。
どうやらLoad file > additional binary fileからできるらしい?