数週間前、イランはStuxnetおよびDuqu攻撃の延長と見られる、国内のエネルギー産業をターゲットとした激しいサイバー攻撃を報告しました。
先々週末には、イランの緊急対応チームであるIR Certが新しいレポートを発表し、この攻撃を「Flame」または「Flamer」という名前で呼ぶようになりました。他にもいくつかの通信社が「Viper」という名前でこの攻撃を報道しています。このマルウェアの複雑な機能は、数十台存在すると推測されるコマンド&コントロール(C&C)サーバーで制御されています。また、このマルウェアはUSBドライブを介して徐々に拡散することも可能です。
ハンガリーのセキュリティチームであるCrySys Labでは、ここ数週間分析していたマルウェアが「Flamer」と同じものであることがわかり、数十ページにわたる関連の暫定報告書を発表しました。同報告書によると、このマルウェアは複雑を極めており、詳細の分析にはさらなる研究が必要になるということです。
これまでもStuxnetやDuquといったサイバー脅威の分析には数カ月を要していましたが、今回のマルウェアは、はるかに複雑です。たとえば、比較的小さい暗号化モジュールでもCの逆コンパイルコードが70000行以上あり、170以上の暗号化された「文字列」が格納されています。
このマルウェアは明らかに何年もかけて、大規模なグループまたは専任のチームによって開発されたと思われます。
マカフィーでは、スパイウェア対策企業が一般に公開しているレポートや、公共のヘルプフォーラムから、ヨーロッパやイランにおいて数年前(2010年3月など)にSkywiperの初期の亜種に感染したログファイルを見つけています。Skywiperは、同じように多数の亜種があるDuquよりも広く拡散していると思われます。
Skywiperはモジュール式で、拡張、更新が可能なマルウェアです。例を挙げると、以下のスパイ機能を組み込むことができます。
- ネットワークリソースのスキャン
- 指定した情報の盗み出し
- SSH、HTTPSプロトコルでC&Cサーバーと通信
- 100以上のセキュリティ製品(ウイルス対策、スパイウェア対策、ファイアウォールなど)の有無を検出
- カーネルモード、ユーザーモードの両ロジックを使用
- Windowsの非同期プロシージャコール(APC)、スレッド起動操作を使った複雑な内部機能、主要プロセスへのコードの挿入
- Winlogon.exeの一部として自身をロードし、エクスプローラー、サービスに挿入
- StuxnetやDuquと同じように、~という名前のテンポラリーファイルとして自身の存在を隠蔽
- USBメモリやローカルネットワークを通して新たなシステムを攻撃可能(ゆっくりと拡散)
- スクリーンショットの生成
- 音声会話を録音
- Windows XP、Windows Vista、Windows 7システムで動作
- Stuxnetで見られるプリントスプーラー、lnkのエクスプロイトなど、既知のエクスプロイトを組み込み
- SQLiteデータベースを使って収集した情報を格納
- カスタムデータベースを攻撃モジュールに使用(非常にまれですが、このマルウェアのモジュール性、拡張性を示しています)
- C&Cでも、ターゲットを絞った感染でも、多くの場合、ローカルネットワーク上の隣接するシステムに存在
- PE暗号化されたリソースを使用
まとめると、このマルウェアは操作方法の面ではStuxnetやDuquと非常によく似ていますが、そのコードベースや実装は大きく異なっており、基本構造はずっと複雑で堅牢です。
Skywiperの主な実行ファイルは以下です:
Windows\System32\mssecmgr.ocx – メインモジュール
Windows\System32\msglu32.ocx
Windows\System32\nteps32.ocx
Windows\System32\advnetcfg.ocx
Windows\System32\soapr32.ocx
紛らわしいプログラム情報ブロック
プログラム情報ブロックによれば、メインモジュールはMicrosoft Corporationによって作成されたように装い、Microsoft Windows Version 5.1(ビルド2600)の「Windows認証クライアント」であると主張しています。また、他にもMicrosoft Windowsコンポーネントであると主張するモジュールが複数あります。しかし、DuquやStuxnet同様、盗まれたものを含め、これまで分析したファイルは、有効なキーを使って署名されていません。
上記以外の主なファイル名の一例は以下の通りです。
~dra52.tmp
target.lnk
zff042
urpd.ocx
ccalc32.sys
boot32drv.sys
Pcldrvx.ocx
~KWI
guninst32
~HLV
~DEB93D.tmp
~DEB83C.tmp
~dra53.tmp
cmutlcfg.ocx
~DFL983.tmp
~DF05AC8.tmp
~DFD85D3.tmp
~a29.tmp
dsmgr.ocx
~f28.tmp
~dra51k.tmp
~d43a37b.tmp
~dfc855.tmp
Ef_trace.log
contents.btr
wrm3f0
scrcons.exe
wmiprvse.exe
wlndh32
mprhlp
kbdinai
~ZLM0D1.ocx
~ZLM0D2.ocx
sstab
~rcf0
~rcj0
mutexの使用
このマルウェアファイルには、すでに感染したシステムを識別するため、TH_POOL_SHD_PQOISNG_#PID#SYNCMTXというmutex名が使われています。mutexによる識別は、最近のマルウェアでは一般的な手法です。#PID#は脅威の挿入が行われたプロセスのプロセスIDです。
名前と拡張子の変更
このマルウェアを構成するファイルは、設定の取り扱いと同様に、C&Cサーバーのリクエストに応じて、ファイル名と拡張子を変更することが可能です。場合によっては、特定のウイルス対策ソフトウェアを検出し、実行ファイル(DLL)の拡張子をOCXからTMPなどに変更することも可能です。ただし、セキュリティ製品の前にSkywiperがインストールされた場合などは、感染したシステム上でも、この機能が確認されないことがあります。
Skywiperのメインモジュールのサイズは6MBを超えており、全体では20MB近くになります。言うまでもなく、マルウェアとしては大きなコードですが、Zlib、LUAインタープリター、SQLiteのサポート、カスタムデータベースのサポートコードなど、複雑なライブラリを格納するために必要な大きさです。
暗号化には、バイトの値のXORのような単純な難読化も含まれます。XORキーである0xAEが使われている場合もあり、同じくこの値を使用しているDuqu、Stuxnetと何らかの関係があるかもしれないことを示しています。ただし、StuxnetとDuquの場合、常に他の値と併用されており、何らかの意味のある日付が含まれていました。
現時点では、上記以外にSkywiperがStuxnetやDuquと直接関係していることを示すコードはありません。Skywiperでは、いろいろな意味で研究者にこれらの攻撃を連想させる類似の構造が使われていますが、さらに複雑さを深めています。初期の日付が示唆するように、並行して進められたプロジェクトであった可能性もあります。ファイルに残った日付によると、攻撃ファイルの最新の開発は2011年1月と8月に行われています。ファイルのヘッダーの日付は、1994年に作成が開始されたように装うなど、意図的に変更されていますが、ファイル内のエクスポートテーブルの日付の値などから判断すると2011年であると思われます。
Skywiperのメインモジュールはレジストリから、エクスポートした以下の関数を通してレジストリから起動します。
HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Lsa\Authentication Packages- mssecmgr.ocx
以下は、マカフィーのネットワークセンサーで確認された初期感染のマップです。
一般的に、攻撃者はメインターゲットと無関係な地域に感染して自分達の居場所や素性を隠しつつ、これらの場所をC&Cサーバーとして利用しようとします。今後の調査では、このことを考慮に入れる必要があります。
マカフィーのウイルス対策製品はこの脅威をW32/SkyWiperという名前で検出し、感染したシステムから駆除します。マカフィーの初期のデータは、この脅威の亜種が複数存在していることを示しています。
関連記事
- [2011/10/21] Stuxnetに類似する「Duqu」、しかし目的は標的型攻撃
- [2010/09/30] Stuxnetワームの拡大で考えるAPT攻撃対策
- [2010/09/29] Stuxnetワームの最新情報
- [2010/07/29] Stuxnet攻撃がエネルギー業界にもたらした意味
※本ページの内容はMcAfee Blogの抄訳です。
原文:Skywiper Fanning the ‘Flames’ of Cyberwarfare