学内某所で Code Red Worm にやられたマシンが出て,おそらくはその影響で幹線のルータが落ちる,という事がありました。せっかくのお祭り:)だったので,今回の問題についてまとめておきます。
なお、CodeRedII は 2001/9/30 を最後に活動を停止したようです(参考:Code Red II についての警告)。
Code Red Worm についての一般的な情報は,たとえば:
などからいろいろたどれます。
8/6 午後
学内某所への通信がたびたび切れるようになる。職場から学内某所のマシンに対して traceroute をかけると,
1 router (130.34.x.x) 1.150 ms 1.022 ms 1.041 ms 2 CISCO-A.x.tohoku.ac.jp (130.34.x.x) 2.964 ms 2.792 ms 2.863 ms 3 130.34.x.x (130.34.x.x) 6.034 ms 2.545 ms 2.492 ms 4 gateway.x.tohoku.ac.jp (130.34.x.x) 3.595 ms 2.726 ms 2.694 ms 5 * * *となる(正常なら CISCO-A -> CISCO-B -> 学内某所部局 router となるはず)。この時点で運用センターに連絡したところ,CISCO-B (CISCO 7000) の不調で,再起動してもすぐにメモリがあふれて落ちるとのこと。
8/6 夜
学内某所で調査。おおもとの原因は不明ながら,学内某部局 subnet (130.34.aaa.0/24, aaa.tohoku.ac.jp) を切り離すと CISCO-B が止まらなくなるという事で,この subnet を切り離し,とりあえず解散。
この subnet の DHCP 端末に Code Red がいるという連絡を受けていたので,某講座の院生室などの端末を調査。Code Red に感染しているマシンを1台特定し,network から切り離し。院生に,翌日事務室等の端末の調査と patch 当てを依頼。
8/7 昼過ぎ
院生に調べてもらった結果,Code Red 感染端末をもう1台特定。これも network から切り離し。他には感染端末はなさそうとのこと。
8/7 15:00 頃
Code Red 端末を切り離した状態で学内某所部局 subnet を接続してみたところ,現在まで順調に稼働中。
この他の情報として,CISCO 7500 は同様の状況にあっても落ちなかったと聞いてます。メモリ量が多いからだと思われます。
これらの状況から,Code Red の活動によって負荷が増大し,CISCO-B が落ちていたのではないかと想像しています。
今回感染していた Code Red はいわゆる「Code Red II」のようです。web の news site などでは「Code Red IIから感染を目的とする攻撃を受けると,IISのログに「GET /default.ida?XXXXX〜」というURLが記録される。」というような記述を良く見るのですが,これは信用できないかも知れません。というのは,今回感染したマシン(計2台)の片方(こっちはマシン A としますか)の log には,
02:33:32 203.25.165.1 GET /default.ida 500
とだけしか残っていませんでした。(C:\WIN2K\system32\LogFiles\W3SVC1\ex010804)
一方,もう1台(マシン B)の方は,"default.asp" を含む行はありませんでした。マシン B の場合は Code Red が作ったと思われる C:\Inetpub\Scripts\root.exe へのアクセスの記録はいくつも残っているのですが,その log の日付(log の header 部分と,file のプロパティの両方)が 2001/06/04 となっていました。(C:\WINNT\system32\LogFiles\W3SVC1\ex010604)
さらにこの2台に共通して,8/6 の log file は
作成日時: 2001/8/6 21:02:50 更新日時: 2001/8/6 22:18:06 --- ここから log file --- #Software: Microsoft Internet Information Services 5.0 #Version 1.0 #Date: 2001-08-06 12:02:50 #Fields: time c-ip cs-method cs-uri-stem sc-status 12:02:50 211.19.64.112 GET /iisstart.asp 200 12:02:51 211.19.64.112 GET /pagerror.gif 200 #Software: Microsoft Internet Information Services 5.0 #Version 1.0 #Date: 2001-08-06 13:19:06 #Fields: time c-ip cs-method cs-uri-stem sc-status 13:18:06 130.34.153.6 GET /iisstart.asp 200 13:45:16 127.0.0.1 GET /iishelp/Default.htm 200 13:45:17 127.0.0.1 GET /iishelp/iis/misc/default.asp 200 (この後 '\0' がひたすら続く) --- ここまで ---
作成日時: 2001/8/6 05:02:31 更新日時: 2001/8/6 05:02:31 --- ここから log file --- #Software: Microsoft Internet Information Services 5.0 #Version: 1.0 #Date: 2001-08-06 12:02:31 #Fields: time c-ip cs-method cs-uri-stem sc-status 12:02:31 211.19.64.112 GET /index.php 200 (この後 '\0' がひたすら続く) --- ここまで log file ---
のように不自然なものでした。後ろの方に '\0' が大量に埋められている結果として,どちらも file size がちょうど 65,536 bytes になっていました。
このようなことから,恐らく log が改竄されたと推測しています。しかし,それが手動で行われたのか Code Red の機能の一部なのかは不明です。
Code Red に感染した場合,C:, D: 直下に explorer.exe(の偽物)が作られると言う情報を良く見かけます(たとえば CERT Incident Note)。しかし今回調べた2台のマシンでは,少なくとも Windows 上から普通に見た限りでは,これは見つかりませんでした。
同様に C:\Inetpub\Scripts\root.exe という cmd.exe の複製が作られるという情報もあり,こちらは2台に共通して見つかりました。
NTBugtraq に流れた動作解析情報によると,偽 explore.exe を本物の代わりに立ち上げたり C: や D: として Code Red が作った directory を mount したりするようなので,通常の方法では Code Red の痕跡はかなりの部分が隠されている…というよりは,偽物のデスクトップを見せられているのではないかと想像しています。したがって前述の log file についても,怪しいも何もそもそも幻だという事なのかも知れません。(^^;;
# DOS mode で立ち上げたりすると発見が容易になったりするかな?
他の痕跡については,もうちょっと調べてみるつもりです。
また,netstat -na の出力も見てみたのですが,マシン A では 1000-2000 番の port が数十〜百ほど LISTENING になっていました。同時に,多くのIP address の 80 番 port に対してアクセスしていました(UTP を抜いていたんで SYN_WAIT で止まってましたが)。
しかしほぼ同時刻に調べたマシン B の netstat -na の結果は,port 21, 23, 25, 80 などの不要な service が動いているのを除けば (^^;; 正常でした。
# このために,あやうく見逃すところだった。
常に攻撃をしかけているわけではないし,それが時刻を見て制御されてるわけでもないようですね。なので netstat -na の結果は感染の有無の判断根拠にはなりそうもないです。
もちろんウィルス検知ソフトと最新の定義ファイルを使えば簡単なんですが,あえて別の方法を考えてみます。
上記の2台のマシンを何の知識もない状態で眺めて気付くとしたら,C:\Inetpub\Scripts\root.exe の有無しかありません。もうちょっと知恵がつけば log file の不自然さにも気付くかも知れませんが。なので,一般 user に対してのアナウンスとしては,(ウィルス検知ソフトがなければ)root.exe があるかどうかを見てもらうくらいしかないかも。もっとも,別の変種でこれの名前を変えられてたらおしまい。それに他の back doorを作ったあとなら,この file を消しても侵入するには困らないんですよね。
他の方法としては,そこらにある Apache などの web server の access log を調べて,Code Red からの攻撃の記録があったらお互いに連絡しあう のが結局確実なのかも知れません。各所の router で log を取れば,より 確実に拾えるとは思いますが,普通はそこまでやらない。(^^;;
まぁ,見つけるたびにそこの domain の管理者を探して連絡すれば良いん だろうけど,どこか情報を集積するとこないですかね?