マルウエアの設定情報を抽出する ~ MalConfScan ~
毎日、数多くのマルウエアが発見されていますが、その多くは過去に確認されているものの亜種であり、コードはほとんど変わりません。変更されているのは通信先などの設定情報だけの場合がほとんどです。そのため、多くの場合は設定情報だけ抽出できれば、マルウエア分析は完了します。
JPCERT/CC では、そのような作業をサポートするためにマルウエアの設定情報を抽出するツール「MalConfScan」を作成し、公開しました。
今回は、この「MalConfScan」の機能について紹介します。
なお、ツールはGitHub上で公開していますので、次のWebページからダウンロードしてご利用ください。
JPCERTCC/MalConfScan - GitHub
https://github.com/JPCERTCC/MalConfScan
インストール方法については、Wikiをご覧ください。
MalConfScan wiki - GitHub
https://github.com/JPCERTCC/MalConfScan/wiki
MalConfScanの詳細
MalConfScanは、メモリフォレンジックツールであるThe Volatility Framework(以下、「Volatility」)のPluginとして作成しています。多くの場合、マルウエアはパッキングされているため、設定情報を抽出する際にアンパックすることからはじめなければいけません。MalConfScanはメモリ上にロードされているアンパックされた状態の実行ファイルから設定情報を抽出します。そのため、パックされたマルウエアでも気にすることなく分析できます。
MalConfScanは、次の機能を持っています。
- malconfscan: メモリイメージから既知のマルウエアの設定情報を抽出
- malstrscan: メモリイメージから不審なプロセスを検出し、そのプロセスが参照する文字列をリスト
malconfscan
図1はmalconfscanの実行結果の例です。はじめに、マルウエアのインジェクト先プロセス名(Name)やプロセスID(PID)、マルウエア検知名(Malware Name)が表示されます。次に、マルウエアの設定情報が(Config info)が表示されます。
malconfscan はマルウエアによっては設定情報だけではなく、エンコードされている文字列をデコードして表示したり、DGAドメインなどを表示したりする機能もあります。図2はmalconfscanでBeblohを検知した結果です。設定情報の後にDGAドメインが表示されています。
2019年7月30日現在、malconfscanは25種類のマルウエア分析に対応しています。詳しい対応マルウエアについては、 Appendix をご覧ください。
malstrscan
malstrscanは、メモリ上のProcess Hollowingを検知し、そのプロセスが参照する文字列をリストします。マルウエアの設定情報は通常エンコードされています。マルウエアは設定情報を使用する際、デコードするため、メモリ上にそのデータが残っている場合があります。この機能は、そのようなデコードされた設定情報をリストできる可能性があります。図3はmalstrscanの実行結果の例です。
この機能は、デフォルトではPEがロードされたメモリスペースからのみ文字列をリストします。 -aオプションを使うと、ヒープなどのペアレントメモリスペースもリストします。
おわりに
このツールはマルウエア分析だけではなく、メモリフォレンジックにも活用できます。マルウエア分析だけではなく、インシデント調査にも本ツールを活用していただければと思います。今後も新たなマルウエアに対応していく予定です。
次回は、本ツールをCuckoo Sandboxにインストールして自動的にマルウエアの設定情報を抽出する方法について紹介します。
インシデントレスポンスグループ 朝長 秀誠
Appendix A 対応するマルウエア
マルウエア名 | |
Ursnif | HawkEye Keylogger |
Emotet | Lokibot |
Smoke Loader | Bebloh |
Poison Ivy | AZORult |
CobaltStrike | NanoCore RAT |
NetWire | AgentTesla |
PlugX | FormBook |
RedLeaves | NodeRAT |
TSCookie | njRAT |
TSC_Loader | TrickBot |
xxmm | Remcos |
Datper | QuasarRAT |
Ramnit |