CGI拒絕服務(wù)攻擊技術(shù)淺析 |
發(fā)布時間: 2012/9/12 15:04:29 |
拒絕服務(wù)攻擊即DoS是使對方服務(wù)器承受過多的信息請求而無法處理,產(chǎn)生阻塞導(dǎo)致正常用戶的請求被拒絕。從程序員的視角出發(fā),就目前我們所處的網(wǎng)絡(luò)環(huán)境而言,要想用大量的報文使一個大網(wǎng)站因為I/O阻塞而停止服務(wù)是非常困難的,但是如果能找到對方服務(wù)器上一些可能會占用較多資源的程序并有遠程調(diào)用權(quán)限,那么通過批量調(diào)用使對方響應(yīng)阻塞就并不困難。這種程序,從程序員的視角出發(fā),就是對方網(wǎng)站可能存在的不良CGI程式。 下面是我的服務(wù)器上存在的一個真實例子: search.cgi就是一個不良cgi程序(全文本內(nèi)文檢索),是那臺服務(wù)器上其他網(wǎng)站站長搞來的第三方程序。 可以看到,僅僅存在三個并行調(diào)用,系統(tǒng)CPU資源就被占滿,正常的http請求產(chǎn)生阻塞!當(dāng)然,正常情況下這個現(xiàn)象比較少見,但是如果對方有惡意,找到了這種cgi程序,然后在路由接近的網(wǎng)段上作一個socket連接的守護程序,多進程不間斷地循環(huán)發(fā)送偽請求,請求主機響應(yīng)該cgi程序,并攜帶一個范圍很寬的檢索邊界條件(檢索條件越寬,處理響應(yīng)消耗負載越大),這樣就會用很少的請求數(shù)使對方主機產(chǎn)生很大的負載,從而使對方拒絕正常請求。 此類攻擊所需要的攻擊源很少,很可能只要一個能夠高速直連的主攻擊源就能使對方服務(wù)器崩潰。對于用戶可以自己建立cgi程式的虛擬主機服務(wù)商而言,這種隱患防不勝防,所以這也是網(wǎng)絡(luò)安全中需要考慮的一個問題,如果寬帶網(wǎng)順利啟動,那么這種攻擊手段就可以大行其道,兩三臺家用電腦就可能把一個寬帶環(huán)境內(nèi)的主機搞癱瘓。 所以用程序員的視角,從cgi程序的合理程度來分析,核心思想其實就是很小的請求使對方主機消耗很大的資源來響應(yīng),那樣帶寬和I/O就不是重要的影響因素了。 最近導(dǎo)致美國知名網(wǎng)站故障的原因?qū)嶋H上來自于一種最簡單的攻擊手段,就是虛假報文的超量投遞。關(guān)鍵程序非常簡單,自己做也就是一個小時的工作量,無非是創(chuàng)建多個socket連接進程,然后循環(huán)地把一些惡意請求的報文利用socket連接,通過80端口塞到對方的主機上,利用無限循環(huán)手段,使對方主機超負載而拒絕正常訪問,這也是拒絕服務(wù)攻擊法的關(guān)鍵所在。 這種報文超量報文投遞的拒絕服務(wù)攻擊法雖然說起來簡單,但是實現(xiàn)起來需要幾點注意事項: 第一是找到合適的突破口,也就是對方主機上的不良CGI程式。 一般的知名網(wǎng)站都有很強的主機,甚至多主機并行負載分布。如果僅僅是簡簡單單地發(fā)送報文很難令對方崩潰,所以需要作的就是找到對方主機上一些消耗系統(tǒng)資源較大的CGI程序。如果自己做過大規(guī)模負載的交互式網(wǎng)站,很容易找到其中的關(guān)鍵,通常一些復(fù)雜的搜索程序,特別是內(nèi)文檢索程序是消耗系統(tǒng)資源較多的,這些程序就可以成為突破口。也就是使用虛擬報文,用一個最寬的條件來模擬請求檢索,這樣你只需要傳遞很少的數(shù)據(jù),對方的服務(wù)器就會產(chǎn)生相當(dāng)大的負荷,采用多進程并且循環(huán)調(diào)用,只要對方主機cgi程序處理報文的時間大于其接受到你循環(huán)發(fā)送報文的間隔時間,就很容易使對方的http請求阻塞并拒絕正常訪問。 第二是節(jié)省一切可以節(jié)省的步驟。 這種攻擊方式的關(guān)鍵是使對方造成阻塞,而阻塞的關(guān)鍵是本機攻擊循環(huán)的間隔小于對方處理的時間。減小循環(huán)間隔的重要一點是,僅僅發(fā)送攻擊必須發(fā)送的報文,然后不接受任何返回信息。也就是當(dāng)攻擊程序把一個虛擬的請求報文發(fā)送后,不再理會該請求而進行下一個。不用停止這個socket連接,但是無須接受任何返回信息,那樣會耽誤攻擊程序的循環(huán)效率。這里的關(guān)鍵問題是對方的cgi程序還在處理攻擊程序發(fā)送的請求,所以尋找不良CGI是獲得最好效果的最關(guān)鍵因素。 第三是尋找理想的攻擊源。 這一點最難作到,如果用家用電腦和撥號實現(xiàn)攻擊,并不是不可以,除非同一時間找到100個志同道合者一起攻擊,否則由于網(wǎng)速,你的攻擊可能對對方毫無影響。這就需要“攻擊源”,也就是找到可以運行攻擊程序的、路由和攻擊目標(biāo)接近的服務(wù)器作為攻擊源,最好找到多個攻擊源服務(wù)器,然后同時運行攻擊程序,才有可能看到效果。特別是針對大型商業(yè)網(wǎng)站,沒有一定數(shù)量的攻擊源是不可能用這種方式攻擊成功的。例如如果希望攻擊yahoo,這種方式就需要在美國寬帶網(wǎng)環(huán)境下找到1000臺左右的攻擊源服務(wù)器,同時運行攻擊程序,模擬循環(huán)進行一些最常用關(guān)鍵字的超量檢索,導(dǎo)致對方服務(wù)器處理阻塞。 需要提醒的一點是,攻擊源可能在攻擊過程中自身收到損害,我在宿舍局域網(wǎng)測試的時候,自己的攻擊源崩潰過若干次,提醒諸位小心。 根據(jù)新聞,美國最近的網(wǎng)站被黑大體上是這種攻擊手段的一種體現(xiàn),但是難得的是對方能夠用很多攻擊源來進行。另外當(dāng)寬帶網(wǎng)大幅推廣和使用的時候,這種攻擊手段將更容易實現(xiàn),可能幾個會寫VC的家伙就可以在家里利用光纖將寬帶網(wǎng)內(nèi)部的主機搞垮。 所以也不得不對網(wǎng)管提醒一點。消除不良CGI,并對惡意報文采用一些過濾手段,是非常需要重視的課題! 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |