マルウエアの設定情報を自動で取得するプラグイン ~MalConfScan with Cuckoo~
マルウエア分析において、その設定情報を取得することは重要な要素です。マルウエアの設定情報には、通信や永続化といったマルウエアの動作に関わるさまざまな情報が含まれ、インシデント調査における重要な手がかりになります。
今回は、以前紹介した MalConfScan と Cuckoo Sandbox(以下、「Cuckoo」) を利用したマルウエアの設定情報を自動で取得するプラグイン 「MalConfScan with Cuckoo」を作成しました。
今回は、このプラグイン「MalConfScan with Cuckoo」の機能について紹介します。
なお、このプラグインは GitHub 上で公開しています。次の Web ページからダウンロードしてご利用ください。
JPCERTCC/MalConfScan-with-Cuckoo - GitHub
https://github.com/JPCERTCC/MalConfScan-with-Cuckoo/
MalConfScan with Cuckooの詳細
MalConfScan with Cuckoo は Cuckoo のプラグインになります。Cuckoo はマルウエアの動的解析を行うことができるオープンソースのサンドボックスシステムです。 このプラグインを Cuckoo に追加すると、Cuckoo から MalConfScan を利用できる様になり、既知のマルウエアの設定情報を自動で取得できるようになります。MalConfScan with Cuckoo をインストールした Cuckoo の動作イメージを図 1 に示します。
MalConfScan with Cuckoo は Cuckoo が管理するホストマシン上でマルウエアを動作させ、マルウエアの設定情報を取り出す仕組みになっています。 はじめにマルウエアが Cuckoo に登録されると、ホストマシン上でそのマルウエアが実行されます。次にメモリイメージがダンプされ、そのメモリイメージに対して、 MalConfScan を用いて既知のマルウエアの設定情報を取得します。最後に取得したマルウエアの設定情報をレポートに出力します。 なお、このプラグインが対応しているマルウエアの種類については、以前のブログまたは次の Web ページを参照ください。
JPCERTCC/MalConfScan - GitHub
https://github.com/JPCERTCC/MalConfScan/
使用方法とレポート出力例
設定情報を取得したいマルウエアを MalConfScan with Cuckoo がインストールされた Cuckoo にアップロードします。アップロードは Web GUI やコマンドから行うことができます。アップロード方法の詳細は、Cuckoo の公式ドキュメント[1] を参照ください。マルウエアのアップロードし分析が完了するとレポートが作成されます。MalConfScan のレポートは図 2 のように、Cuckoo のメモリ分析結果パネルの一部として表示されます。
図 2 のレポートは、標的型攻撃で用いられる Himawari(RedLeaves の亜種)[2]と呼ばれるマルウエアの設定情報を表示している画面になります。このマルウエアはボットの一種で、設定情報には C2 サーバーの通信先やその通信先ポート、通信プロトコル、通信に用いる暗号鍵などが含まれています。このように、MalConfScan with Cuckoo を使用すると既知のマルウエアであれば、設定情報を簡単に取得できます。 また、これらのマルウエアの設定情報は JSON 形式でも取得できます。Cuckoo が生成する report.json に以下のようなデータが記録されます。
"malconfscan": { "data": [ { "malconf": [ [ {"Server1": "diamond.ninth.biz"}, {"Server2": "diamond.ninth.biz"}, {"Server3": "diamond.ninth.biz"}, {"Server4": "diamond.ninth.biz"}, {"Port": "443"}, {"Mode": "TCP and HTTP"}, {"ID": "2017-11-28-MACRO"}, {"Mutex": "Q34894iq"}, {"Key": "usotsuki"}, {"UserAgent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)"}, {"Proxy server": ""}, {"Proxy username": ""}, {"Proxy password": ""} ] ], "vad_base_addr": "0x04521984", "process_name": "iexplore.exe", "process_id": "2248", "malware_name": "Himawari", "size": "0x00815104" } ], },
インストール方法
MalConfScan with Cuckoo をインストールするには、以下の設定を行う必要があります。
- MalConfScan のインストール
- Cukcoo へのパッチ適用
- Cuckoo のコンフィグ変更
インストール方法の詳細については以下の GitHub 上の Wiki ページを参照ください。
MalConfScan-with-Cuckoo Wiki - GitHub
https://github.com/JPCERTCC/MalConfScan-with-Cuckoo/wiki
なお、JPCERT/CC では、以下の環境で検証を行っています。
- Ubuntu 18.04
- Python 2.7.16
- Cuckoo 2.0.6
- Volatility 2.6
また、@soji256 氏が MalConfScan with Cuckoo を構築する過程を紹介した記事を執筆されています。MalConfScan with Cuckoo を構築する際の参考としてあわせて紹介します。
MalConfScan with Cuckoo 環境を構築して Emotet を解析する - setodaNote
https://soji256.hatenablog.jp/entry/2019/05/23/004911
おわりに
このプラグインを利用することにより、既知のマルウエアであれば、サンドボックスシステムから容易に設定情報を取得できます。また、サンドボックスシステムを検知するようなマルウエアの場合は、その検知を回避するような仕掛けを施すことで、設定情報を取得できるようになります。 なお、MalConfScan と MalConfScan with Cuckoo は Black Hat USA 2019 Arsenal[3] へ出展する予定です。Blackhat USA 2019 に参加される方はぜひお立ち寄りください。みなさまと活発な議論を交わせることを楽しみにしています。
インシデントレスポンスグループ 谷 知亮
[1] Cuckoo Docs - Submit an Analysis
https://cuckoo.sh/docs/usage/submit.html
[2] Himawari の異常な暗号 - Japan Security Analyst Conference
https://www.jpcert.or.jp/present/2018/JSAC2018_01_nakatsuru.pdf
[3] MalConfScan with Cuckoo: Automatic Malware Configuration Data Extraction and Memory Forensic - Black Hat USA 2019
https://www.blackhat.com/us-19/arsenal/schedule/index.html#malconfscan-with-cuckoo-automatic-malware-configuration-data-extraction-and-memory-forensic-16914