せっかくなので,おとり server を立ち上げて Code Red を生け捕りにしてみました。捕獲に使ったのは,ごく簡単な sh script です。こんなの。
#!/bin/sh CMD='cap' TMPFILE=`/usr/bin/mktemp /tmp/$CMD.XXXXXXXXXX` || exit 1 cat > $TMPFILE
この script を,port 80 へのアクセスに対して inetd から呼ぶようにしました。ただしこれだと cat しっぱなしで session が切れません。なので定期的に kill する script を別に動かしておきました。
その後、CGI 版も作りました。ScriptAliase /default.ida /www/cgi-bin/getcodered とかして使えば良いでせう。こんなの。こっちの方は CodeRed II しか捕まらないようです。CodeRed の方は、送り込んで来る Content-type header の次に空行がないので、error になってしまうのだ。(^^;;;
#!/bin/sh TMPFILE=`/usr/local/gnu/bin/date +%y%m%d-%H%M%S-$$` /usr/local/gnu/bin/cat > /tmp/$TMPFILE echo 'Content-type: text/plain' echo '' echo 'hogegege'
inetd 版の script を仕掛けてから5分も経たないうちに,1匹めの Code Red Worm が捕まりました。これは Code Red II の模様。その10分後には2匹めが。…という感じで,続々とやってきます。 一方,Code Red(I の方)がやってくるまでは2時間ほど待たされました。そろそろ絶滅危惧種なのかも。それぞれの strings の結果を載せておきます。全然別物なのだ。ちょっと驚き。
なおこの捕獲スクリプトは、今も動かしてます。inetd 版をしかけたマシンでは、24時間で 92 匹ほど捕まりました。Code Red はそのうち 8 匹だけで、残りは全部 Code Red II。あと何種類か variant があるはずなんだけど、まだ捕まりません。