OPCサーバーを利用するHavex

今年6月、F-SecureがICS/SCADAシステムを標的とするHavexマルウェアファミリーの亜種の存在を明らかにしました。その後、このマルウェアキャンペーンの動機に関する憶測が飛び交っています。イランの核開発計画を2年遅らせたと言われている悪名高きStuxnet に次いで、HavexはSCADAを搭載する装置を直接標的とする2つ目のマルウェアファミリーということになります。

SymantecはアタッカーたちをDragonFlyと呼んでおり、またCrowdstrikeは2013年の脅威報告書のなかで彼らをEnergetic Bearと呼んでいます。

このマルウェアは2つのコンポーネントで構成されています。

  • ダウンローダー: これはウォータリングホール型攻撃の一部です。これは侵害を受けたICSベンダーのサイトが配布するPLC管理ソフトウェアとしてトロイの木馬化されており、C&Cサーバーに接続して感染済みのマシンに新たなモジュールをダウンロードします。Kyle Yangが執筆したEvolution of the Havex Module Downloader でダウンローダーの詳細が解説されています。
  • モジュール: ローカルLAN上にOPCサーバーがあるかどうかをスキャンし、それらに関する情報を収集します。

OPCサーバーとは何なのか?

OPC(OLE for Process Control)とはWindowsのアプリケーションとプロセス制御ハードウェアをつなぐための通信標準規格です。産業環境ではOPCサーバーがPLCなどのプロセス制御ハードウェアを制御するマシンとなるのが理想的です。

自分たちの考えを検証するため、私たちは2つのOPCサーバーを構築し、このマルウェアがどのような情報を収集し、この情報を使って何が行われるのかを観察してみました。

まずマルウェアはネットワーク上のマシンを特定し、そこで稼働している私たちの2つのOPCサーバーを検出します。下の図はこのマルウェアが収集した情報です。


図1: LANのスキャン後にモジュールが収集したデータ

この収集したデータはbzipで圧縮され、RSAEuroを使って暗号化されており、最終的にマシン上のテンポラリフォルダの.ylsファイルへ保存されます。

これまでに発見されていたHavexの亜種の振る舞いから予測される通り、この.ylsファイルは私たちが行ったテストでアタッカー側に送信されることはありませんでした。ですから、この攻撃の動機が余計にわかりません。

また、マシン上のOPCサーバーそれぞれに対し、OPCServer01.txtとOPCServer02.txtというファイルが実行ファイルのホームディレクトリに作成されていました。

下に示すように、この2つのファイルにはこれらのサーバーに関する情報が含まれています。


図2: OPCServer01.txt


図3: OPCサーバーのタグとOPCServer02.txtファイル

フォーティネットではこの脅威をW32/Havex.A!trとして検出しています。

分析を手伝ってくれたKyle YangとCryptoGirlに感謝します。