* 破壞兩個機器間的連接,阻止訪問服務
* 阻止特殊用戶訪問服務
* 破壞服務器的服務或者導致服務器死機

不過,只有那些比較陰險的攻擊者才單獨使用DOS攻擊,破壞服務器。通常,DOS攻擊會被作為一次入侵的一部分,比如,繞過入侵檢測系統(tǒng)的時候,通常從用大量的攻擊出發(fā),導致入侵檢測系統(tǒng)日志過多或者反應遲鈍,這樣,入侵者就可以在潮水般的攻擊中混騙過入侵檢測系統(tǒng)。
有關TCP協(xié)議的東西

TCP(transmission control protocol,傳輸控制協(xié)議),是用來在不可靠的因特網上提供可靠的、端到端的字節(jié)流通訊協(xié)議,在RFC793中有正式定義,還有一些解決錯誤的東西在RFC 1122中有記錄,RFC 1323則有TCP的功能擴展。

我們常見到的TCP/IP協(xié)議中,IP層不保證將數據報正確傳送到目的地,TCP則從本地機器接受用戶的數據流,將其分成不超過64K字節(jié)的數據片段,將每個數據片段作為單獨的IP數據包發(fā)送出去,最后在目的地機器中再組合成完整的字節(jié)流,TCP協(xié)議必須保證可靠性。

發(fā)送和接收方的TCP傳輸以數據段的形式交換數據,一個數據段包括一個固定的20字節(jié)頭,加上可選部分,后面再跟上數據,TCP協(xié)議從發(fā)送方傳送一個數據段的時候,還要啟動計時器,當數據段到達目的地后,接收方還要發(fā)送回一個數據段,其中有一個確認序號,它等于希望收到的下一個數據段的順序號,如果計時器在確認信息到達前超時了,發(fā)送方會重新發(fā)送這個數據段。

上面,我們總體上了解一點TCP協(xié)議,重要的是要熟悉TCP的數據頭(header)。因為數據流的傳輸最重要的就是header里面的東西,至于發(fā)送的數據,只是header附帶上的??蛻舳撕头斩说姆枕憫褪峭琱eader里面的數據相關,兩端的信息交流和交換是根據header中的內容實施的,因此,要實現DOS,就必須對header中的內容非常熟悉。

下面是TCP數據段頭格式。

Source Port和 Destination Port :是本地端口和目標端口

Sequence Number 和 Acknowledgment Number :是順序號和確認號,確認號是希望接收的字節(jié)號。這都是32位的,在TCP流中,每個數據字節(jié)都被編號。

Data offset :表明TCP頭包含多少個32位字,用來確定頭的長度,因為頭中可選字段長度是不定的。

Reserved : 保留的6位,現在沒用,都是0 接下來是6個1位的標志,這是兩個計算機數據交流的信息標志。接收和發(fā)送斷根據這些標志來確定信息流的種類。下面是一些介紹:

URG:(Urgent Pointer field significant)緊急指針。用到的時候值為1,用來處理避免TCP數據流中斷 。

ACK:(Acknowledgment field significant)置1時表示確認號(Acknowledgment Number)為合法,為0的時候表示數據段不包含確認信息,確認號被忽略。

PSH:(Push Function),PUSH標志的數據,置1時請求的數據段在接收方得到后就可直接送到應用程序,而不必等到緩沖區(qū)滿時才傳送。

RST:(Reset the connection)用于復位因某種原因引起出現的錯誤連接,也用來拒絕非法數據和請求。如果接收到RST位時候,通常發(fā)生了某些錯誤。

SYN:(Synchronize sequence numbers)用來建立連接,在連接請求中,SYN=1,ACK=0,連接響應時,SYN=1,ACK=1。即,SYN和ACK來區(qū)分Connection Request和Connection Accepted。

FIN:(No more data from sender)用來釋放連接,表明發(fā)送方已經沒有數據發(fā)送了。

知道這重要的6個指示標志后,我們繼續(xù)來。

16位的WINDOW字段:表示確認了字節(jié)后還可以發(fā)送多少字節(jié)。可以為0,表示已經收到包括確認號減1(即已發(fā)送所有數據)在內的所有數據段。

接下來是16位的Checksum字段,用來確保可靠性的。

16位的Urgent Pointer,和下面的字段我們這里不解釋了。不然太多了。呵呵,偷懶啊。

我們進入比較重要的一部分:TCP連接握手過程。這個過程簡單地分為三步。

在沒有連接中,接受方(我們針對服務器),服務器處于LISTEN狀態(tài),等待其他機器發(fā)送連接請求。

第一步:客戶端發(fā)送一個帶SYN位的請求,向服務器表示需要連接,比如發(fā)送包假設請求序號為10,那么則為:SYN=10,ACK=0,然后等待服務器的響應。

第二步:服務器接收到這樣的請求后,查看是否在LISTEN的是指定的端口,不然,就發(fā)送RST=1應答,拒絕建立連接。如果接收連接,那么服務器發(fā)送確認,SYN為服務器的一個內碼,假設為100,ACK位則是客戶端的請求序號加1,本例中發(fā)送的數據是: SYN=100,ACK=11,用這樣的數據發(fā)送給客戶端。向客戶端表示,服務器連接已經準備好了,等待客戶端的確認,這時客戶端接收到消息后,分析得到的信息,準備發(fā)送確認連接信號到服務器。

第三步:客戶端發(fā)送確認建立連接的消息給服務器。確認信息的SYN位是服務器發(fā)送的ACK位,ACK位是服務器發(fā)送的SYN位加1。即:SYN=11,ACK=101。

這時,連接已經建立起來了。然后發(fā)送數據,。這是一個基本的請求和連接過程。需要注意的是這些標志位的關系,比如SYN、ACK。

服務器的緩沖區(qū)隊列(Backlog Queue)

服務器不會在每次接收到SYN請求就立刻同客戶端建立連接,而是為連接請求分配內存空間,建立會話,并放到一個等待隊列中。如果,這個等待的隊列已經滿了,那么,服務器就不在為新的連接分配任何東西,直接丟棄新的請求。如果到了這樣的地步,服務器就是拒絕服務了。
??
如果服務器接收到一個RST位信息,那么就認為這是一個有錯誤的數據段,會根據客戶端IP,把這樣的連接在緩沖區(qū)隊列中清除掉。這對IP欺騙有影響,也能被利用來做DOS攻擊。

上面的介紹,我們了解TCP協(xié)議,以及連接過程。要對SERVER實施拒絕服務攻擊,實質上的方式就是有兩個:

一、迫使服務器的緩沖區(qū)滿,不接收新的請求。

二、 使用IP欺騙,迫使服務器把合法用戶的連接復位,影響合法用戶的連接,這就是DOS攻擊實施的基本思想。具體實現有這樣的方法:

1、SYN FLOOD

利用服務器的連接緩沖區(qū)(Backlog Queue),利用特殊的程序,設置TCP的Header,向服務器端不斷地成倍發(fā)送只有SYN標志的TCP連接請求。當服務器接收的時候,都認為是沒有建立起來的連接請求,于是為這些請求建立會話,排到緩沖區(qū)隊列中。

如果你的SYN請求超過了服務器能容納的限度,緩沖區(qū)隊列滿,那么服務器就不再接收新的請求了。其他合法用戶的連接都被拒絕掉??梢猿掷m(xù)你的SYN請求發(fā)送,直到緩沖區(qū)中都是你的只有SYN標記的請求。

現在有很多實施SYN FLOOD的工具,呵呵,自己找去吧。

2、IP欺騙DOS攻擊

這種攻擊利用RST位來實現。假設現在有一個合法用戶(1.1.1.1)已經同服務器建立了正常的連接,攻擊者構造攻擊的TCP數據,偽裝自己的IP為1.1.1.1,并向服務器發(fā)送一個帶有RST位的TCP數據段。服務器接收到這樣的數據后,認為從1.1.1.1發(fā)送的連接有錯誤,就會清空緩沖區(qū)中建立好的連接。這時,如果合法用戶1.1.1.1再發(fā)送合法數據,服務器就已經沒有這樣的連接了,該用戶就必須從新開始建立連接。

攻擊時,偽造大量的IP地址,向目標發(fā)送RST數據,使服務器不對合法用戶服務。

3、 帶寬DOS攻擊

如果你的連接帶寬足夠大而服務器又不是很大,你可以發(fā)送請求,來消耗服務器的緩沖區(qū)消耗服務器的帶寬。這種攻擊就是人多力量大了,配合上SYN一起實施DOS,威力巨大。不過是初級DOS攻擊。呵呵。Ping白宮??你發(fā)瘋了?。?

4、自身消耗的DOS攻擊

這是一種老式的攻擊手法。說老式,是因為老式的系統(tǒng)有這樣的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他過時的系統(tǒng)。

這種DOS攻擊就是把請求客戶端IP和端口弄成主機的IP端口相同,發(fā)送給主機。使得主機給自己發(fā)送TCP請求和連接。這種主機的漏洞會很快把資源消耗光。直接導致當機。這中偽裝對一些身份認證系統(tǒng)還是威脅巨大的。

上面這些實施DOS攻擊的手段最主要的就是構造需要的TCP數據,充分利用TCP協(xié)議。這些攻擊方法都是建立在TCP基礎上的。還有其他的DOS攻擊手段。

5、塞滿服務器的硬盤

通常,如果服務器可以沒有限制地執(zhí)行寫操作,那么都能成為塞滿硬盤造成DOS攻擊的途徑,比如: 發(fā)送垃圾郵件。一般公司的服務器可能把郵件服務器和WEB服務器都放在一起。破壞者可以發(fā)送大量的垃圾郵件,這些郵件可能都塞在一個郵件隊列中或者就是壞郵件隊列中,直到郵箱被撐破或者把硬盤塞滿。

讓日志記錄滿。入侵者可以構造大量的錯誤信息發(fā)送出來,服務器記錄這些錯誤,可能就造成日志文件非常龐大,甚至會塞滿硬盤。同時會讓管理員痛苦地面對大量的日志,甚至就不能發(fā)現入侵者真正的入侵途徑。

向匿名FTP塞垃圾文件。這樣也可以塞滿硬盤空間。

6、合理利用策略

一般服務器都有關于帳戶鎖定的安全策略,比如,某個帳戶連續(xù)3次登陸失敗,那么這個帳號將被鎖定。這點也可以被破壞者利用,他們偽裝一個帳號去錯誤登陸,這樣使得這個帳號被鎖定,而正常的合法用戶就不能使用這個帳號去登陸系統(tǒng)了。

分享到

多易

相關推薦