引き続きEmotet検体が多く着弾しているため、自己流ですがマクロ解析する際の手順を記載します。
どなたかの参考になれば幸いです。
当たり前ですが、解析する際は検証環境で、インターネット接続環境などに留意の上(クローズド環境推奨)ご検証いただけますようよろしくお願いいたします。
解析手順
1)解析準備
**・解析したいファイルの用意。**今回はEmotet検体です。
・Fiddlerの起動
ネットワーク解析ソフトです。WiresharkのHTTPだけ版と思えばおk。
通信試行を確認するために起動しておきます。
・Fakenetの起動
リクエストに対して適当な応答をしてくれるローカルプロキシです。
クローズド環境でも出来る限り挙動を終えるようになります。(二次検体取得とかは無理だけど)
2)マクロの有効化
「コンテンツの有効化」を押下し、マクロを有効化します。
通信が発生した場合、Fiddle上で通信の試行が確認できます。
Powershellのプロセスから通信試行しはじめたことがわかります。
3)マクロの確認
Wordのファイル上でAlt+F11
を押して、開発者ツールを立ち上げます。
左メニューのプロジェクトを開いていくと「標準モジュール」の配下らへんに、難読化されたマクロが見つかるのではないかと思います。
4)引数にあたりをつける
Ctrl+F
で検索ウィンドウを表示します。
文字列を Create や Shell など、
対象を「カレントプロジェクト」にして検索します。
下記のような形の文字列がヒットすればOKです。(引数はサンプル)
Create(Czcpyib, Fpbbsin, Pftqijpd, Tyhacm, Gcepmog, Biap)
※目処が立たない場合は、Fiddlerを見ながら1行ずつ実行してみたり、
ブレイクポイントを置いて実行させたりとかで切り分けるのですが、ここでは割愛します。
5) Debug.printで引数を表示
4で目処をつけたCreate内の引数を、一つずつDebug.Printして出力させます。
上記のようにかけたら、F5 を押下して、マクロを再実行します。
6)イミディウェイトウィンドウの確認
メニューの 表示>イミディエイトウィンドウ を開くと、powershellに渡している引数が出力されているはずです。
7)Base64のデコード
渡されている引数はEmotetの場合Base64でエンコードされていることが多いので、
何らかの形でデコードします。
今回はCyberChefを使います。
※Base64のレシピだけだとスペースが入ってしまうのでnullを消すレシピを一緒に入れてます。
CyberChef入れられない事情などがあれば、Windows純正コマンドでデコードするバッチを過去に作っているのでお使いください。
https://qiita.com/harapeco_nya/items/decbc6daa0294677f9d5
8)URLなどの情報をもとに解析を継続
Fiddlerでは見えなかったHTTPSなどの接続先もフルパスで見えているため、
URLが生きていれば二次検体の取得も可能になっているはずです。
デコードされた情報をもとに解析を続けてみてください。
おわりに
マクロについては無知の極みなため、
「もっといい方法あるよ!」などのアドバイスがあれば是非教えてくださいませ!