連載
» 2017年07月28日 05時00分 公開

マルウェア対策“一部”内製化大解剖(終):Cuckoo Sandbox、Selenium WebDriver、bson解析――独自マルウェア解析環境を自動化した際に施した2つの工夫 (2/2)

[市田達也,リクルートテクノロジーズ]
前のページへ 1|2       

【工夫その2】リアルタイム可視化の自動化

 いわゆるサンドボックスでの振る舞い解析では、解析が終了するまで振る舞いが可視化されません。しかしながら一般的な解析は数十秒から数分であり、それくらいであれば解析終了を待つことも可能です。しかし、昨今の標的型攻撃で利用されるマルウェアには、感染後にすぐに動作せず長期潜伏するものや時刻指定で起動するもの、そして攻撃者に遠隔操作され継続的に動作するものも存在します。そのため、リバースエンジニアリングによる静的解析が難しい場合、長期的に観測する必要がある検体もあります。

 それを可能にするための工夫として、解析中の状態がリアルタイムに可視化されるエンジンとWebのUIを開発しました。サンドボックスを“電子レンジ”に例えると、“電子レンジ”のように温めている“皿”のどの“具材”がどれくらい温まっているかを測れる仕組みです。

 大きな違いは、現在のOdoribaシステムでは、近年の賢い電子レンジのように“温度”という自動終了条件を持たせていないことです。マルウェアの振る舞いには上限がないため、時間以外の条件で自動終了はできません。この部分はアナリストが状況を見て「解析終了ボタン」を押すことで判断します。

 このとき、表示が遅かったりログ量が増えて確認に時間がかかったりしては、自動化のうまみが減少してしまいます。そのため、アナリストが素早く正確に判断できるよう、いかにリアルタイムに情報を絞って表示するかを検討しました。

 リアルタイム可視化エンジンの仕組みを図示して説明します。

 可視化対象は、Cuckoo Sandboxで取得されるProcess Behaviorログ(bson形式=バイナリJSON形式)とPacket Captureファイル(pcap形式)です。

 Cuckoo SandboxではNoSQLの「MongoDB」がデータベースとして一般的に利用されますが、そのMongoDBに振る舞い結果(bson)が保存されるタイミングは解析終了後の逐次バッチ処理です。そのため、このbsonファイルを解析し、リアルタイムの可視化を実現しました。

 通信ログに関してはpcapファイルを解析しますが、ここでマルウェアでないOSの定期通信などは事前にキャプチャーフィルタリングで除外しています。

 これらの中から、われわれの観測に必要な最低限の情報カラムに絞って、新しく作った「Real-timeDB」に格納しました。通信先となるドメインやIPアドレスが確認できたらすぐにマルチスレッドで以下の3つの分析が走るようになっています。

  1. 通信先がホスティングサーバかどうかの分析
  2. Whois情報の調査
  3. VirusTotal」を使った、既知の悪性かどうかの分析

 これらは当該通信先をファイアウォールやProxyで遮断可否の判断をするのに有益です。この分析結果が独自に作った「IntelligenceDB」に格納され、また必要最低限の情報カラムをリアルタイムに提示してくれます。Webブラウザ画面はデフォルト1分でリロードされ1分前からのアップデートは赤く反転して表示されます。

 当初は全てのログをバッチで読み込み表示していたため、長期的に解析しているとログが多量にたまり、遅延になることがありました。そこで、各ページにjsonファイルを事前に作成しておき、それをAjaxでJavaScriptから読み込む仕様に変えました。結果、シームレスに表示ができ差分強調ができる可視化ビューを開発できました。

FIRST T.Cカンファレンスでの評価

 2017年1月に、本OdoribaシステムをCSIRTの国際カンファレンスFIRST Technical ColloquiumでのCall for Speakersにて応募し、3月初めにAcceptされ発表の機会を頂きました。4月にオランダで発表してきた内容が、こちらです。

 本稿で書けなかった部分も幾つか含まれているので、ご興味あればご覧いただければと思います。

 現地での評価はおおむね好評で、下記のような感想や質問を多く頂きました。

  • なぜインターネットに、このシステムを公開しないのか?
  • Cuckoo Sandboxオリジナルからの変更ログが欲しい
  • 開発予算もほとんど持たずにインシデントレスポンスの合間にどうやれば開発できたのか?
  • 社内LANとの隔離・接続はどのようにやっているのか?

 国際的なCSIRTカンファレンスにおいても、やはりOSSベースの取り組み共有事例は需要が高いことが分かりました。

 今回のOdoribaの取り組みは、インシデントレスポンスの合間に1人でやっていたため、1年もの開発期間がかかりました。その間にもマルウェアは時々刻々と進化し、「あれも実装しなきゃ。これも実装しなきゃ」の要件は増える一方でした。そんな中、優先度を立てて、必要な部分だけを抜き出す手法はリクルートのプロジェクト管理がとても参考になりました。例えばVMを検知するマルウェアについては、VMと分からないように細かい工夫を施し続けるのが一般的ですが、リクルートテクノロジーズの環境はVDI化が進んでおり仮想環境での業務が標準化しつつあるため、そこの開発要件は軽減させることができました。

 世界からのソースコードの公開需要に応えるため、急ぎソースコードを公開しました。Cuckoo Sandbox 2.0 rc1をどのように変更してカスタマイズしたかの変更点も強調して残しているので、同じようなことをされたい方の参考になれば幸いです。Cuckoo Sandboxと同じGPL v3ライセンスで公開しています。自由に改変、拡張して利用することも可能ですが、利用によって生じた損害については一切責任を負いかねますことをご了承ください。

 Recruit-CSIRTでは、皆で自分たちの解析ツール、分析システムを作れるCSIRTになろうと内製化に拍車が掛かっています。ご一読ありがとうございました。

筆者紹介

市田達也

リクルートテクノロジーズ ITソリューション統括部 サイバーセキュリティエンジニアリング部 インシデントレスポンスグループ

大手通信事業者のセキュリティオペレーションセンターを経て2015年から現職。前職ではマルウェア感染インシデント対応に従事。リクルートグループでは各種インシデント対応に加え、セキュリティ対策基盤の設計、開発も担当。Recruit-CSIRT所属。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。