<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          糟糕,系統(tǒng)又被攻擊了

          共 6991字,需瀏覽 14分鐘

           ·

          2020-10-22 06:40

          幾年前,我們的電商平臺遭遇過一次CC攻擊(一種分布式網(wǎng)絡攻擊,后面有詳細介紹),當時整個網(wǎng)站幾乎陷于癱瘓的狀態(tài)。期間很多PC網(wǎng)頁和APP頁面打不開或者持續(xù)報錯,下單流程也徹底跑不通了。



          上圖是對網(wǎng)站流量的監(jiān)控。我們可以看到10:00時UV(訪問用戶)和client IP數(shù)量突然激增,翻了幾千倍。



          從后臺監(jiān)控看(上圖),CPU資源也被耗盡了。由于CPU被耗盡,服務器慢得要命,所以當時根本無法登入服務器查看CPU詳細的使用情況,只能根據(jù)監(jiān)控頁面查看CPU使用情況。


          另外,出口帶寬也被打滿了。所以那段時間很多請求根本進不來。用戶看到的就是空白頁面,請求錯誤等情況。


          經(jīng)過分析,我們發(fā)現(xiàn)這次攻擊是新品限量首發(fā)活動引發(fā)的,是一次薅羊毛活動。攻擊者專門針對限量的新品進行了分布式網(wǎng)絡攻擊,目的就是搶到限量新品,讓后再在市場上高價出售獲利。


          攻擊者利用接碼平臺(接碼平臺,通俗點講就是接收手機驗證碼的平臺)提前注冊好大量的賬號。然后提前準備好腳本程序,利用一些攻擊工具(文末有工具列表)將這些腳本分發(fā)到大量的代理或者肉雞,并通過這些代理和肉雞對網(wǎng)站發(fā)起分布式攻擊?。攻擊步驟如下圖:




          下面我們詳細了解一下CC攻擊。了解CC攻擊之前我們先弄清下面幾個概念。


          僵尸主機&僵尸網(wǎng)絡


          僵尸主機是指感染僵尸程序病毒,從而被黑客程序控制的計算機設備。該計算機設備可以是終端設備,也可以是云端設備,例如個人電腦,手機,云端主機等。一般情況下,僵尸主機已經(jīng)被人操控并和其他僵尸主機組成了一個僵尸網(wǎng)絡。例如,一個人非法控制了10000臺電腦,他可以同時調(diào)度這10000臺電腦發(fā)起網(wǎng)絡攻擊行為,那么其中任意一臺電腦就可以稱為僵尸主機,而這10000臺電腦就組成了僵尸網(wǎng)絡(其實是每個電腦中被安裝了僵尸客戶端程序)。通常,一臺被侵占的電腦只是僵尸網(wǎng)絡里面眾多僵尸主機中的一個,僵尸程序會默默在后臺運行。一般電腦的擁有者很難察覺到自己的系統(tǒng)已經(jīng)被“僵尸化”,就仿佛是沒有自主意識的僵尸一般。你用的手機電腦表面上看起來正常,也可能是被感染僵尸程序的一員。


          肉雞


          肉雞泛指所有那些被別人控制的計算機設備(電腦和手機等),而不管其是否屬于某個僵尸網(wǎng)絡,是否被統(tǒng)一調(diào)度。計算機設備一旦被別人控制,就成為了別人砧板上的肉,別人想怎么吃就怎么吃,肉雞(機)一名由此而來,也被稱之為傀儡機。當然在肉雞上安裝僵尸程序之后,也就變成一個僵尸主機了,即大家所說的僵尸電腦,也就成了僵尸網(wǎng)絡的一員。


          DDos攻擊


          DDos,全稱Distributed Denial of Service,中文意思為“分布式拒絕服務”,就是利用大量合法的分布式計算機設備對目標服務器(網(wǎng)站等)發(fā)送請求,導致目標服務器CPU、內(nèi)存、帶寬等資源耗盡,從而導致正常用戶無法訪問目標服務器。通俗點講就是利用網(wǎng)絡節(jié)點資源,如:IDC服務器、個人PC、手機、智能設備、打印機、攝像頭等對目標發(fā)起大量攻擊請求,從而導致服務器擁塞,進而無法對外提供正常服務。



          CC攻擊


          CC攻擊(Challenge Collapsar)。其前身名為Fatboy攻擊。Collapsar(黑洞) 是綠盟科技的一款抗DDOS產(chǎn)品,在對抗拒絕服務攻擊的領域內(nèi)具有很高的影響力和口碑。因此,黑客們把攻擊更名為Challenge Collapsar,表示要向黑洞發(fā)起挑戰(zhàn)。


          CC攻擊是DDOS(分布式拒絕服務)的一種,是一種常見的網(wǎng)站攻擊方法,攻擊者通過代理服務器或者肉雞向受害主機不停訪問,造成服務器的內(nèi)存或CPU等資源耗盡或帶寬資源耗盡,直到網(wǎng)站無法訪問。



          因為CC攻擊的訪問流量來自成千上萬,幾十萬,甚至數(shù)百萬的電腦,手機,云主機等客戶端。幾乎和正常的用戶訪問沒區(qū)別,這些攻擊請求不具備明顯的特征,很難和正常訪問區(qū)分開來,防御難度也很大。尤其是利用肉雞組成的僵尸網(wǎng)絡發(fā)起攻擊,動輒是數(shù)以萬計的機器(其中很多機器可能都是普通用戶使用的電腦手機等),這種攻擊請求和正常用戶請求非常相似,防御難度就更大了。


          慢速攻擊--CC攻擊的變異品種


          慢速攻擊的基本原理如下:對任何一個開放了HTTP訪問的HTTP服務器,先建立了一個連接,指定一個比較大的Content-length,然后以非常低的速度發(fā)包,比如1-10s發(fā)一個字節(jié),然后維持住這個連接不斷開。如果客戶端持續(xù)建立這樣的連接,那么服務器上可用的連接將一點一點被占滿,從而導致拒絕服務。


          HTTP協(xié)議在接收到request之前是不對請求內(nèi)容作校驗的,所以即使你的Web應用沒有可用的form表單,這個攻擊一樣有效。


          在客戶端建立較大數(shù)量的無用連接,并保持持續(xù)發(fā)包的代價非常的低廉。實際試驗中一臺普通PC可以建立的連接在3000個以上。這對一臺普通的Web服務器,將是致命的打擊。更不用說結(jié)合肉雞群做分布式攻擊了。


          正因為其簡單易用,成本低廉,效果明顯的特性,慢速攻擊成為眾多攻擊者的研究和利用對象。


          發(fā)展到今天,慢速攻擊也演變成了多種,典型的主要包括如下幾類:


          Slow headers:Web應用在處理HTTP請求之前都要先接收完所有的HTTP頭部,因為HTTP頭部中包含了一些Web應用可能用到的重要的信息。攻擊者利用這點,發(fā)起一個HTTP請求,一直不停的發(fā)送HTTP頭部,消耗服務器的連接和內(nèi)存資源。攻擊客戶端與服務器建立TCP連接后,每10秒才向服務器發(fā)送一個HTTP頭部,而Web服務器再沒接收到2個連續(xù)的\r\n時,會認為客戶端沒有發(fā)送完頭部,而持續(xù)的等待客戶端發(fā)送數(shù)據(jù)。


          下面是使用 slowhttptest 工具發(fā)起的 slow header 攻擊:


          slowhttptest?-H?-c?1000?-l?300?-u?http://192.168.2.16/test/
          Mon May 21 02:03:49 2018: slowhttptest version 1.7 - https://code.google.com/p/slowhttptest/ -test type: SLOW HEADERSnumber of connections: 1000URL:??????????????????????????????http://192.168.2.16/test/verb: GETContent-Length header value: 4096follow up data max size: 68interval between follow up data: 10 secondsconnections per seconds: 50probe connection timeout: 5 secondstest duration: 300 secondsusing proxy: no proxy
          Mon May 21 02:03:49 2018:slow HTTP test status on 45th second:
          initializing: 0pending: 426connected: 407error: 0closed: 167service available: NO


          Slowhttptest 所發(fā)送的請求


          GET /DVWA/ HTTP/1.1Host:?192.168.2.16User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2)Referer: TESTING_PURPOSES_ONLYX-aK1: sjqQ4ZX-4: SX-OWw: HX-Dptasviz5: Q...X-headers...


          服務端連接數(shù)變化


          # 客戶端發(fā)起攻擊前,服務端的連接數(shù)root@server2:~# netstat -na|grep -i 80|wc -l47
          # 客戶端發(fā)起攻擊過程中,服務端的連接數(shù)root@server2:~# netstat -na|grep -i 80|wc -l461root@server2:~# netstat -na|grep -i 80|wc -l706


          Slow body:攻擊者發(fā)送一個HTTP POST請求,該請求的Content-Length頭部值很大,使得Web服務器或代理認為客戶端要發(fā)送很大的數(shù)據(jù)。服務器會保持連接準備接收數(shù)據(jù),但攻擊客戶端每次只發(fā)送很少量的數(shù)據(jù),使該連接一直保持存活,消耗服務器的連接和內(nèi)存資源。攻擊客戶端與服務器建立TCP連接后,發(fā)送了完整的HTTP頭部,POST方法帶有較大的Content-Length,然后每10s發(fā)送一次隨機的參數(shù)。服務器因為沒有接收到相應Content-Length的body,而持續(xù)的等待客戶端發(fā)送數(shù)據(jù)。


          Slow read:客戶端與服務器建立連接并發(fā)送HTTP請求,客戶端發(fā)送完整的請求給服務器端,然后一直保持這個連接,以很低的速度讀取Response,比如很長一段時間客戶端不讀取任何數(shù)據(jù),通過發(fā)送Zero Window到服務器,讓服務器誤以為客戶端很忙,直到連接快超時前才讀取一個字節(jié),以消耗服務器的連接和內(nèi)存資源。


          注:TCP通過滑動窗口(Window)的概念來進行流量控制。設想在發(fā)送端發(fā)送數(shù)據(jù)的速度很快而接收端接收速度卻很慢的情況下,為了保證數(shù)據(jù)不丟失,顯然需要進行流量控制, 協(xié)調(diào)好通信雙方的工作節(jié)奏。所謂滑動窗口,可以理解成接收端所能提供的緩沖區(qū)大小。顧名思義,Zero Window,零窗口,即當發(fā)送方的發(fā)送速度大于接收方的處理速度,接收方的緩沖塞滿后,就會告訴發(fā)送方當前窗口size=0,發(fā)送方此時會立即停止發(fā)送數(shù)據(jù)。


          慢速攻擊主要利用的是thread-based(基于線程)架構(gòu)的服務器的特性,這種服務器會為每個新連接打開一個線程,它會等待接收完整的HTTP頭部才會釋放連接。比如Apache會有一個超時時間來等待這種不完全連接(默認是300s),但是一旦接收到客戶端發(fā)來的數(shù)據(jù),這個超時時間會被重置。正是因為這樣,攻擊者可以很容易保持住一個連接,因為攻擊者只需要在即將超時之前發(fā)送一個字符,便可以延長超時時間。而客戶端只需要很少的資源,便可以打開多個連接,進而占用服務器很多的資源。


          Apache、httpd都采用thread-based架構(gòu),很容易遭到慢速攻擊。而另外一種event-based(基于事件)架構(gòu)的服務器,比如 nginx 和 lighttpd 卻不容易遭受慢速攻擊。


          如何防御慢速攻擊?


          如果請求超過配置的超時時間或者傳輸速率低于最小速率,那么它就有可能是一個慢速攻擊。可以配置合理的從客戶端接收HTTP頭部和HTTP body的超時時間和最小速率,來避免連接長時間等待。


          周期地統(tǒng)計報文數(shù)量。一個TCP連接,HTTP請求的報文中,報文過多或者報文過少都是有問題的,如果一個周期內(nèi)報文數(shù)量非常少,那么它就可能是慢速攻擊,可以封禁對應IP;如果一個周期內(nèi)報文數(shù)量非常多,那么它就可能是一個CC攻擊。


          使用較多的慢速攻擊工具有:Slowhttptest和Slowloris。


          CC等DDos攻擊的防御方法如下:


          按IP限流


          我們可以在網(wǎng)關層(Apache,Nginx,Zuul等),對IP限流,按分鐘級和秒級維度限制接口訪問次數(shù)。當訪問次數(shù)超過指定閥值后對其他請求做拋棄處理。對訪問量過大的IP,放進黑名單,限制訪問。將惡意請求的攔截前置到網(wǎng)關層處理,避免大量惡意請求打到后端服務,對服務造成巨大壓力。


          分組部署,按用戶限流


          可以將新用戶和老用戶路由到不同的服務器群組。如果新用戶突然暴漲,很可能是混入了大量肉雞注冊的賬號,可以將這些新用戶的請求路由到專門的新用戶服務器群組,保證老用戶所在的服務器群組不受影響。之后再找出異常的用戶進行封禁和攔截處理。另外還可以按USERID對用戶進行限流,如新用戶每分鐘請求上限為60次/分鐘,老用戶為45次/分鐘。這樣可以避免同一用戶在短時間內(nèi)發(fā)送大量請求到后端服務器。


          更改訪問端口


          很多情況下,Web Server通過80端口對外提供服務,攻擊者也是針對目標站點的對應端口進行攻擊的。發(fā)現(xiàn)被攻擊后,可以臨時改變該端口來應對攻擊。但是這只是臨時策略,稍微懂點網(wǎng)絡知識的攻擊者會很快發(fā)現(xiàn)新改變的接口,改變攻擊腳本后即可發(fā)動新一輪的攻擊。


          購買高防IP服務


          高仿IP服務算是終極抗D方案了。公司可以通過配置DDoS高防IP服務,把自己的網(wǎng)站域名解析指向高防IP,并配置源站IP。所有公網(wǎng)流量都經(jīng)過高防IP服務,在高防IP服務上進行清洗過濾后再將正常流量轉(zhuǎn)發(fā)到源站IP,從而確保源站IP穩(wěn)定訪問。另外,高防IP服務往往擁有超大帶寬,一般的CC攻擊幾乎不可能耗盡高防IP服務的帶寬資源。高防IP防御效果非常好,不過價格也比較貴。我們當時就是采用了這個方式,緊急采購了高防IP,并快速接入我們的網(wǎng)站。


          高防IP服務會通過多種手段對請求進行清洗。比如,會根據(jù)大數(shù)據(jù)分析結(jié)果,形成各種特征的IP名單。還會根據(jù)請求特征對攻擊工具進行識別。


          頁面靜態(tài)化


          盡量將頁面靜態(tài)化,減少對后端服務的訪問。靜態(tài)頁面可以充分利用客戶端瀏覽器和反向代理的緩存能力。還可以上CDN,用CDN分擔絕大部分的流量。可以大幅降低攻擊流量到達后端服務的幾率。


          避免IP泄漏


          為了減少被DDos攻擊的可能性,我們需要隱藏真實IP,這可以讓攻擊者找不到攻擊目標,從而有效地保護網(wǎng)站。隱藏IP主要有兩種方式,利用CDN或者高防IP。雖然很多公司都接入了CDN,但是還有很多要注意的點,一不留神就會泄漏真實IP。


          盡量避免真實業(yè)務主機直接發(fā)起對外連接,不理解這句的同學可以想想以下場景:用戶注冊激活、找回密碼等業(yè)務需要發(fā)郵件,如果業(yè)務主機直接通過SMTP方式向外發(fā)郵件,絕大部分情況下郵件HEADER中會出現(xiàn)真實IP。


          防止二級域名IP泄漏。主域名上了CDN,如果管理后臺的admin的二級域名沒有經(jīng)過CDN,就可以輕易解析到業(yè)務主機的IP,同樣泄漏了真實IP。郵件解析的MX,如果沒有經(jīng)過CDN,同樣會泄漏真實IP。CDN如果只用了國內(nèi)的,則可以通過國外主機PING域名來獲取真實IP。諸如此類的情況比較多,要引起大家的注意。


          注:MX即郵件交換記錄。用于將以該域名為結(jié)尾的電子郵件指向?qū)泥]件服務器。例如用戶所用的郵件是以域名163.com為結(jié)尾,那么在MX解析時就要解析到163.com對應的服務器IP。如果沒有經(jīng)過CDN,很容易獲取真實IP。


          最后介紹幾款分布式網(wǎng)絡攻擊工具:


          LOIC:LOIC是一款專注于web應用程序的Dos/DDOS攻擊工具,它可以用TCP數(shù)據(jù)包、UDP數(shù)據(jù)包、HTTP請求對目標網(wǎng)站進行DDOS/DOS測試,不懷好意的人可能利用LOIC構(gòu)建僵尸網(wǎng)絡。LOIC是用C#語言寫的,這是一個C#新手的練手作品,靠GUI界面吸引了不明真相的小白們使用。由于程序設計上“有意或無意”留下的BUG導致一旦開始攻擊在退出進程前無法真正停止攻擊,潛在增大了攻擊效果。攻擊手段主要是以無限循環(huán)方式發(fā)送大量數(shù)據(jù),并無其它特色。LOIC 程序主界面如下。


          HULK:HULK是一種web的拒絕服務攻擊工具。它能夠在web服務器上產(chǎn)生許多單一的偽造流量,能繞開引擎的緩存,因此能夠直接攻擊服務器的資源池。hulk的特別之處在于:對于每一個請求都是獨特的,能夠繞開引擎的緩存直接作用于服務器的負載。


          Darkddoser:Darkddoser通過僵尸網(wǎng)絡發(fā)起http攻擊,圖形界面如下。



          Slowhttptest:Slowhttptest是一個可以靈活配置的應用層攻擊工具,它能發(fā)起諸如slowloris、Slow http post、slow read、slow range等工具實現(xiàn)的慢速攻擊。


          Zarp:Zarp是采用Python編寫的、類似MSF的一款網(wǎng)絡攻擊測試框架。工具采用模塊化設計,集漏洞掃描、嗅探、DDoS壓力測試于一身。Zarp主要接口是一個CLI驅(qū)動的圖形界面,采用多層菜單,使用起來相當方便。


          寫在最后


          在計算機世界的攻與防的博弈中,作為防御者的我們,不可能把系統(tǒng)做到無懈可擊,沒有任何安全漏洞。我們能做的是,盡量考慮全面,不斷的發(fā)現(xiàn)問題,將已知的安全問題快速修復。沒有絕對安全的系統(tǒng),也沒有無法防御的黑客。只有不斷積累安全知識,保持居安思危的意識才能讓我們從容應對網(wǎng)絡攻擊。

          點個在看支持我吧,轉(zhuǎn)發(fā)就更好了
          瀏覽 33
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美人成人无码 | av中文无码 | 逼逼国产 | 日逼网站免费看 | 一级 黄 色情 片视频网站11 |