Stuxnet に関しては現在もなお解析中で、ブログではまだ掲載していませんでしたが、今年初めに発見されて以来、Stuxnet の脅威については継続して解析を進めています。初期段階の調査では、脅威を制御する方法としてコマンド & コントロールのインフラストラクチャが指摘されました。この制御メカニズムが発見されてから、使用されるコマンド & コントロールサーバーはすぐにオフラインになりました。 その後の調査によると、この脅威はコマンド & コントロールのインフラストラクチャを介して制御されるだけでなく、ピアツーピア(P2P)コンポーネントを介して自身を更新する機能も備えていることが判明しました。 感染したコンピュータは、相互にアクセスして、どのコンピュータにこの脅威の最新バージョンがインストールされているかを調べます。最新バージョンがインストールされているコンピュータは、その最新バージョンを他のコンピュータに転送します。これにより、ワームは中央のコマンド & コントロールサーバーと通信することなく、自身を更新することができます。P2P ネットワークが頻繁に利用されている理由も、障害の中心点がないためダウンしにくいという、まさにその点にあります。Stuxnet の作成者は、コマンド & コントロールサーバーの制御が失われる可能性を考慮し、それに備えて P2P による更新機能を組み込んだのでしょう。 この P2P コンポーネントは、RPC サーバーとクライアントをインストールすることによって動作します。この脅威がコンピュータに感染すると、RPC サーバーが起動されて接続に対する応答が準備されます。ネットワーク上の他のコンピュータが感染すると、RPC サーバーに接続し、リモートコンピュータにインストールされている脅威のバージョンを確認します。 リモートバージョンのほうが新しい場合、ローカルコンピュータはその新しいバージョンを要求し、それで自身を更新します。逆にリモートバージョンのほうが古い場合、ローカルコンピュータは自身のコピーを作成してリモートコンピュータに送信し、リモート側を更新できるようにします。このようにして、ネットワーク上のあらゆる感染コンピュータに更新バージョンを侵入させることができるので、最終的には感染したすべてのコンピュータに拡散するのです。 P2P 要求はすべて、以下に説明するように RPC 上で発生します。 RPC サーバーは、以下のルーチンを提供します。
- 0: インストールされている Stuxnet のバージョン番号を返す - 1: exe ファイルを受信して実行する(インジェクション経由) - 2: モジュールと、実行されたエクスポートをロードする - 3: lsass にコードを挿入して実行する - 4: 最新バージョンの Stuxnet をビルドし、リモートコンピュータに送信する - 5: プロセスを作成する - 6: ファイルを読み込む - 7: ファイルを投下する - 8: ファイルを削除する - 9: データレコードを書き込む 以上のルーチンが、次の手順で呼び出されます。
[古いクライアントが P2P 経由で最新バージョンの Stuxnet を要求する場合] RPC クライアントは以下のようにして要求を行います。
3a. リモートのバージョン番号のほうが古い場合は、以下の処理を行う 4a. ローカルの Stuxnet バージョンのスタンドアロン exe ファイルを作成する 5a. RPC 関数 1 を呼び出して exe ファイルをリモートコンピュータに送信する 以上のことから明らかなように、Stuxnet のコマンド & コントロールサーバーがすでにオフラインになっていた場合でも、この P2P 通信チャネルを経由してワームを更新し制御する攻撃は引き続き可能であるということがわかります。 シマンテックでは現在、Stuxnet に関する詳細なテクニカルペーパーを現在作成中であり、9 月 29 日にバンクーバーで開催される VB 2010 で発表する予定です。