CSS2008のCFPを騙ったウイルスメール検体解析結果

NTT情報流通プラットフォーム研究所
青木 一史・伊藤 光恭
2008.10.28


  1. PDFファイルからのマルウェア切り出し
  2. 切り出されたマルウェア(csrse.exe)の特徴
  3. 切り出されたマルウェア(lightmidi.exe)の特徴
  4. マルウェア起動後の動作

1. PDFファイルからのマルウェア切り出し

偽css2008-cfp.pdfは、PDFデータフォーマットの領域と、エンコードされたバイナリ領域の2つの部位で構成されている。PDFデータフォーマットの領域内には zlibで圧縮されたJavaScriptのコードが存在し、偽css2008-cfp.pdfを開くと、この部分が読み込まれて攻撃が行われる。解析では、この圧縮された領域を解凍し、Exploit Code(攻撃コード)を確認した(図1参照)。

図1:偽PDFファイルの構成
PDFファイルは通常のPDFフォーマットの部分と エンコードされたバイナリの領域が存在する。 PDFフォーマット部分にJavaScriptで記述された Exploit Codeがzlibで圧縮された状態で配置されている。

出現したExploit Codeは、Adobe Reader等に存在するCVE-2007-5659JVNDB-2008-001095)の脆弱性(collectEmailInfoのStack Buffer Overflow)に対して攻撃を行うものであった。コードは主に

で構成されている(図2参照)。ここで、Shellcodeとは攻撃が行われる際に攻撃者が意図する何らかの挙動をもたらすために挿入される比較的サイズが小さなコードである。

図2:JavaScriptで記述されたExploit Code
ExploitCodeでは、まずアプリケーションのバージョン確認が行われる。その後、バージョンごとの攻撃ペイロードを作成され、Adobe Reader等におけるcollectEmailInfoのStack Buffer Overflow脆弱性に対して攻撃が行われる。Shellcodeは難読化が施されているため、JavaScriptのコードを見ただけではその挙動はわからない。

ShellcodeはPDFファイルの後方に配置されているバイナリ領域をXORによりデコードする。デコードされた領域にはWindowsの実行ファイルと、その実行ファイルを切り出して実行するためのアセンブリコードが出現する(図3中A)。切り出しと実行を行うコードにより、Windowsの実行ファイル部分(マルウェア)がC:\WINDOWS\Temp\csrse.exeにコピーされ、実行される(図3中B)。

図3:PDFファイルからのマルウェア切り出し
@Shellcode実行前
AShellcodeによりPDFファイルの後方がデコードされる。デコードされた領域の後方にWindowsの実行ファイルと、それをインストールするためのコードが存在している。
B実行ファイル部分はC:\WINDOWS\Temp\csrse.exeにコピーされ、その後、実行される。


2. 切り出されたマルウェア(csrse.exe)の特徴

PDFファイルから切り出されたファイル「C:\WINDOWS\Temp\csrse.exe」は次の2つの動作を行う。

CFPのPDFファイルを表示させる際、一度Acrobat Readerのプロセスが落とされる。また、このとき表示されるPDFファイルは「C:\WINDOWS\Temp\1.pdf」であり、メールに添付されていたファイル名「css2008-cfp.pdf」とは異なっている。


図4:csrse.exeのファイル構成
CFPのPDFファイルを表示した上で、さらにマルウェアがインストールされる。CFPのファイル名は元々のものとは異なり「1.pdf」で固定されている。



3. 切り出されたマルウェア(lightmidi.exe)の特徴

C:\WINDOWS\Temp\csrse.exeから切り出されたマルウェア「C:\WINDOWS\Temp\lightmidi.exe」には次の特徴がある。

〜パッカーによるAnti-RCEの例〜

マルウェアにはその解析を困難にするための手法(Anti-RCE)を備えたものが存在する。今回解析したマルウェアの場合、逆アセンブルとデバッガによる解析を困難にするための手法が備わったパッカーが用いられていた。

●逆アセンブル対策

マルウェアの静的解析を行う際には、プログラムコードの逆アセンブルが行われる。本マルウェアのパッカーでは、逆アセンブルを困難にする、または逆アセンブルされたコードを読みにくくするいくつかの対策が施されていた。その例を以下に示す(図5参照)。

図5:パッカーによるAnti-逆アセンブルの例
@命令の中間へのジャンプ命令を挿入することで、正常な逆アセンブルが出ないようにされている。
A本来分岐する必要のない箇所にジャンプ命令を挿入し、コードを読みにくくしている。

●デバッガ対策

マルウェア解析ではOllyDbg等のデバッガを用いた動的解析が有効な手段となる。本マルウェアのパッカーでは、デバッガによる解析を困難にするための対策が施されていた。マルウェアがデバッガを検出するとプロセスが終了してしまうため、これらのデバッガ対策を回避しなければ解析を継続することができない。以下にその例を示す。

〜svchostへのサービス登録〜

lightmidi.exeが実行されると、「C:\WINDOWS\system32\wmxdmod.dll」というファイルが作成される。このファイル用いてsvchostが次のようなサービスを起動する。
◆サービス名
WNMMD
◆表示名
Windows Net Management Mode Driver FrameWork
◆説明
Enables Windows Net Management mode drivers. If this service is disabled, any services that explicitly depend on it will fail to start.
◆サービスDLL
%SystemRoot%\system32\wmxdmod.dll
このサービスはインターネット上のあるホストからファイルをダウンロードし、実行するためのものである。ファイルのダウンロードは次のような手順で行われる。
  1. http://xx.xxxxx.net/mydn/index.txtをダウンロード
  2. (ダウンロードしたファイルの一行目に記載されている値)×2秒間Sleep
  3. 再度http://xx.xxxxx.net/mydn/index.txtをダウンロード
  4. ダウンロードしたファイルの2行目以降に記載されているファイルをhttp://xx.xxxxx.net/mydn/以下からダウンロード


4. マルウェア起動後の動作

以上をまとめ、偽css2008-cfp.pdfを実行してからの動作概要を示す。
  1. 偽css2008-cfp.pdfが添付されたメールを受信(図6:1)。
  2. 添付ファイル実行により、画面上にCFPが表示される。同時にレジストリの改変が行われ、ダウンロードを行うサービスが登録される(図6:2)。
  3. xx.xxxxx.netからHTTPによりファイルを取得(図6:3)。
  4. 取得したファイルに記載されている値を元に一定時間待機する(図7:4)。
  5. 指定された待機時間経過後、再びxx.xxxxx.netからファイルを取得(図7:5)。
  6. 2回目に取得したファイルの二行目以降に記載されているファイルをxx.xxxxx.net/mydn/以下から取得。ファイル名が複数記載されている場合はすべてダウンロードする(図8:6)。
  7. ダウンロードしたファイルを実行(ダウンロードしたファイルの拡張子が".txt"の場合にはデコード処理を施した後実行)(図8:7)。

図6:マルウェア実行後の挙動@
1. 偽css2008-cfp.pdfが添付されたメールを受信。
2. 添付ファイル実行により、画面上にCFPが表示される。同時にレジストリの改変が行われ、ダウンロードを行うサービスが登録される。
3. xx.xxxxx.netからHTTPによりファイルを取得。


図7:マルウェア実行後の挙動A
4. 取得したファイルに記載されている値を元に一定時間待機する。
5. 指定された待機時間経過後、再びxx.xxxxx.netからファイルを取得。


図8:マルウェア実行後の挙動B
6. 2回目に取得したファイルの二行目以降に記載されているファイルをxx.xxxxx.net/mydn/以下から取得。ファイル名が複数記載されている場合はすべてダウンロードする。
7. ダウンロードしたファイルを実行(ダウンロードしたファイルの拡張子が".txt"の場合にはデコード処理を施した後実行)。



Copyright © 2008 NTT, corp. All Rights Reserved.