ページの本文へ

Hitachi Global

HIRT-PUB09002:ウイルス添付メールの今と昔

CSS2008のCFPを騙ったウイルスメールに関する情報

更新日:2020年10月22日

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


HIRTが関わったインシデント対応を記録として残していくこともCSIRTの役割であると考えています。本ページは、インシデント対応記録のアーカイブを目的としています。
[出典] https://www.sdl.hitachi.co.jp/csec/css2008-cfp-secinfo.html

 

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



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

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

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

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

難読化が施されたShellcodeのデータ

攻撃対象アプリケーションのバージョン確認及びバージョンごとの攻撃ペイロード作成部分

作成した攻撃ペイロードにより実際に攻撃を行う部分

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

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

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

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

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

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

CSS2008 CFPのPDFファイル(C:\WINDOWS\Temp\1.pdf)を切り出して表示する

Windows実行ファイル(C:\WINDOWS\Temp\lightmidi.exe)を切り出して実行する

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

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

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

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

各種Anti-RCE(Reverse Code Engineering)対策が施されたパッカー(EXEファイルなどを実行できる状態のまま圧縮する手法)によるパッキング

svchostへのサービス登録(外部ホストからのマルウェアをダウンロード)

 

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

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

 

●逆アセンブル対策

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

命令の中間へジャンプすることで、正常な逆アセンブル結果を出力できないようにする

分岐が不要な箇所にジャンプ命令を挿入することにより、コードを読みにくくする

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

●デバッガ対策

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

IsDebuggerPresent()を用いたデバッガ検出

FindWindowA()を用いたOllyDbgによるデバッガ検出

Int3や0除算による例外発行と例外ハンドラを用いたデバッガ検出

API呼び出し前に、APIのエントリにソフトウェアブレークポイント(0xCC)が張られていないかを調査

ZwQueryInformationProcess()を用いたデバッガ検出

 

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

2. 更新履歴


2020年10月22日

  • このページを新規作成および公開しました。

担当:寺田、大西