2.2. 感染段階
- 感染したホストのIPアドレスを取得する。このIPアドレスを元に
自己拡散モードにおける攻撃先IPの生成が行なわれる。
- システム言語が中国語(Taiwanese, PRCの両方を含む)かどうかを
チェックする。
- 既にCode Red IIに感染しているかどうかを確認する。具体的には
既にCode Red IIがアトムをアトムテーブルに置いたかどうかを参照する。
アトムがあれば既に感染していると判断し、そのまま(新たに感染しよう
としたCode Red IIのインスタンスが)休眠状態になり、再度活動すること
はない(つまり、Code Red IIに同じホストが2度感染することはない)。
アトムがなければ、新たにアトムをアトムテーブルに置き、
その後の攻撃活動を続行する。
- 中国語の場合は、自己流布のためのスレッドを600個作成し、これが
それぞれ48時間、自己流布のために攻撃パケットを送信しつづける。
中国語以外の場合は、自己流布のためのスレッドを300個作成し、これが
それぞれ24時間、自己流布のために攻撃パケットを送信しつづける。
- トロイの木馬を設置する活動に入る。
- 上記の期間限定はワーム自身がトロイの木馬を設置しシステムファイルを
書き換えたのち、休眠状態に入り、その後、システム
をリブートするからである。Code Red IIはメモリ上にあるため、リブート
した時点で(もちろん生成されたスレッドもなくなるから)
攻撃パケットの送信もなくなる。しかし、この時点で既にバックドアとトロイ
の木馬が設置されているため、システムは任意の侵入者が任意のコードを
実行できる環境になっており、きわめて危険な状態である(にも関わらず、
気づかない管理者が多数発生する可能性がある)。また、以下で詳しく述べる
ように、再起動後、再びCode Red IIに感染する可能性が高い。
注記: アトムについて
上記で言及したアトム(atom)については、
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/hh/winbase/atoms_0p83.aspに説明がある。概要をまとめておくと
次のようになる。
「アトムテーブルはシステムが定義するテーブルであり、文字列とそれに対応する
識別子を格納する。アプリケーションはアトムテーブルに文字列を置くと、アトム
と呼ぶ16ビットのインテジャを受け取る。このアトムを使うことで先の文字列に
アクセスできる。アトムテーブルに置かれる文字列はアトム名と呼ぶ」
アトムテーブルは主にアプリケーションの二重起動を避けるために
用いられており、Windowsを再起動すると内容は初期化される。
つまり、Code Red IIが二重感染しないようになっている、というのは
感染してから再起動するまでの期間の話であって、適切な対策を講じなければ
再起動後に再び感染することがある。
この点について筆者はWindows 2000 Professional(日本語版)+IIS 5.0で
実験を行なったが、次のような結果であった。
- IIS 5.0を追加モジュールとしてインストールしてインターネットに接続後、
わずか3分後には感染した。
- その後、何ら対策を講じないで(ただし、再感染を確認するため、root.exe
は削除した)、システムを再起動すると、やはり3分ほどで再感染した。
再感染するかどうかは、攻撃パケットが当該IPアドレス宛に送られてくる
ことが大前提であるが、筆者の実験から分かる通り、現在の攻撃パケット流量
の多さから見て「適切な対策を講じず再起動するだけでは確実に再感染する」
と考えるべきである。実際、筆者の管理するホストのほとんどで24時間ないし
48時間以上の期間に渡って同一IPから断続的に攻撃パケットが送られてきて
いるのを確認している。そのうちのいくらかは単にそのIPがネットワーク境界
になっているだけで、実際に感染しているのはその背後の数台と考えられる
が、上記のように、実際に同一ホストが再感染する。