IcedIDのWordマクロを解読してみる 前編
IcedIDダウンローダーのWordマクロの解読を行ったので、備忘録として書き残しておきます。検体はこちら
DOCファイルを開き、マクロを有効化すると、AutoOpenマクロからmain関数が呼び出されます。IcedIDのダウンローダーであるDOCファイルには、6つの標準モジュールが含まれていますが、この中の「atxgZM」にmain関数が存在します。ご覧の通り、不要なコメントがいっぱい含まれています。
コメントを取り除くと、5行にまで短くなりました。
(以降はVSCodeに転記しながら解読しています。)
どうやら2行目の「aAPZK」と3行目の「aSadP」の2つの関数を呼び出して、最終的にシェルを起動するするようです。
それではmain関数に呼び出される2つの関数を見てみます。
さらに別の関数が呼び出されており、よくわかりません。試しにどちらの関数にも登場する「a6fip」を見てみます。
ここでも別の関数が呼び出されていますが、「mshta.exe」「in.com」「in.html」「windir」「system32」「temp」といった文字列が出てきました。
文字列の間に連結される「aH3EVi」ですが、こちらはPathSeparatorであり、パスの連結に使用されているようです。
「windir」「temp」を引数としている「a3KwbH」はEnviron関数でした。WindowsのインストールフォルダやTEMPフォルダのパスを取得しています。
ここまでの解析内容を「aAPZK」に適用してみました。「mshta.exe」と「in.com」に対して、何かの処理を行うようです。
「mshta.exe」に対する処理である「a9zyg」ですが、見てみると「aXcu3」という別の関数を呼び出すだけの不要な関数です。
ということで「aXcu3」を見てみますが、入力文字列に含まれる""を""で置換するという、こちらも全く意味のない処理でした・・・。
同様に「in.com」「in.html」に対する処理についても、意味のない関数が噛まされており、解析に無駄な時間がかかるようになっています。一旦整理すると、このようになります。
「aAPZK」内の「aTg3Do」はFileCopyを行う関数です。
ということで、main関数の1つ目は「mshta.exe」をTEMPフォルダに「in.com」としてコピーという処理になります。
続いて、2つ目の関数「aSadP」内の処理を順に見ていきます。DOCファイルのビルトインドキュメントプロパティの「category」を取得するようです。
categoryに何が設定されているか、VBAのイミディエイトウィンドウ機能を使用して見てみます。すると、タグやコードらしきものが出てきましたが、内容がよくわかりません。
Wordからプロパティを確認すると、「分類」の項目に例のコードが入っています。ちなみにこの画面では改行以降は表示されず、1行目の<ugzy>しか見ることができません。
このコードを引数として「a5LuP」が実行されます。
この関数でも、無駄な関数や計算が多数含まれているのですが、それらをすべて取っ払い、カウンターを見やすく「i」に置き換えると…
このようになります。これはシーザー暗号の一種であるROT13を復号する関数になります。ROT13というのは、アルファベットを13個後ろにずらすことにより暗号化を行う手法です。不審なコードを暗号化することで、ウイルス対策ソフトの検知を逃れる工夫がされています。
categoryプロパティに設定されていたコードを復号すると、HTMLのコードになることがわかります。
そしてその復号したHTMLコードをどうするか「a0uHN」を見てみると、
「in.html」と復号したHTMLコードに対する処理は、ファイルへの書き込みであることがわかりました。ということで、main関数の2つ目はドキュメントのプロパティ内の分類に入力された文字列(暗号化されたHTMLコード)をROT13で復号し、TEMPフォルダに「in.html」として保存するという処理となります。
最後に、3つ目の処理のVBA.Shellの引数「aaP6r7」を見ていきます。1・2行目は見覚えのある関数が使われており、3行目で文字列を連結しています。
これらを整理するとこうなります。
先程コピーした「in.com」と、保存した「in.html」をスペースで区切って結合していることがわかります。
というわけで、たった3行のmain関数でしが、
ようやく処理の全体像が見えました。
難読化のレベルとしてはさほど高いものではなかったため、解読は比較的容易でしたが、不要なコードが多く、解読に無駄な時間を掛けさせるようにはなっていました。
次回はシェルによって実行される「in.html」を解読したいと思います。
→後編を公開しました
この記事が気に入ったらサポートをしてみませんか?