TCP/IP協議的許可權DoS (拒絕服務攻擊)----- Denial of Service
該攻擊的原理是利用TCP報文頭來做的文章.
TCP資料段頭格式
下面是TCP資料段頭格式。
Source Port和 Destination Port :是本地埠和目標埠
Sequence Number 和 Acknowledgment Number :是順序號和確認號,確認號是希望接收的位元組號。這都是32位的,在TCP流中,每個資料位元組都被編號。Data offset :表明TCP頭包含多少個32位字,用來確定頭的長度,因為頭中可選欄位長度是不定的。Reserved : 保留的我不是人,現在沒用,都是0
接下來是6個1位的標誌,這是兩個計算機資料交流的資訊標誌。接收和傳送斷根據這些標誌來確定資訊流的種類。下面是一些介紹: URG:(Urgent Pointer field significant)緊急指標。用到的時候值為1,用來處理避免TCP資料流中斷ACK:(Acknowledgment field significant)置1時表示確認號(Acknowledgment Number)為合法,為0的時候表示資料段不包含確認資訊,確認號被忽略。
PSH:(Push Function),PUSH標誌的資料,置1時請求的資料段在接收方得到後就可直接送到應用程式,而不必等到緩衝區滿時才傳送。
RST:(Reset the connection)用於復位因某種原因引起出現的錯誤連線,也用來拒絕非法資料和請求。如果接收到RST位時候,通常發生了某些錯誤。
SYN:(Synchronize sequence numbers)用來建立連線,在連線請求中,SYN=1,CK=0,連線響應時,SYN=1,
ACK=1。即,SYN和ACK來區分Connection Request和Connection Accepted。
FIN:(No more data from sender)用來釋放連線,表明傳送方已經沒有資料傳送。
TCP三次握手
TCP三次握手模型:
我們進入比較重要的一部分:TCP連線握手過程。這個過程簡單地分為三步。在沒有連線中,接受方(我們針對伺服器),伺服器處於LISTEN狀態,等待其他機器傳送連線請求。
第一步:客戶端傳送一個帶SYN位的請求,向伺服器表示需要連線,比如傳送包假設請求序號為10,那麼則為:SYN=10,ACK=0,然後等待伺服器的響應。
第二步:伺服器接收到這樣的請求後,檢視是否在LISTEN的是指定的埠,不然,就傳送RST=1應答,拒絕建立連線。如果接收連線,那麼伺服器傳送確認,SYN為伺服器的一個內碼,假設為100,ACK位則是客戶端的請求序號加1,本例中傳送的資料是:SYN=100,ACK=11,用這樣的資料傳送給客戶端。向客戶端表示,伺服器連線已經準備好了,等待客戶端的確認這時客戶端接收到訊息後,分析得到的資訊,準備傳送確認連線訊號到伺服器
第三步:客戶端傳送確認建立連線的訊息給伺服器。確認資訊的SYN位是伺服器傳送的ACK位,ACK位是伺服器傳送的SYN位加1。即:SYN=11,ACK=101。
這時,連線已經建立起來了。然後傳送資料,
伺服器不會在每次接收到SYN請求就立刻同客戶端建立連線,而是為連線請求分配記憶體空間,建立會話,並放到一個等待佇列中。如果,這個等待的佇列已經滿了,那麼,伺服器就不在為新的連線分配任何東西,直接丟棄新的請求。如果到了這樣的地步,伺服器就是拒絕服務了。
如果伺服器接收到一個RST位資訊,那麼就認為這是一個有錯誤的資料段,會根據客戶端IP,把這樣的連線在緩衝區佇列中清除掉。這對IP欺騙有影響,也能被利用來做DOS攻擊。
DOS的攻擊原理
有了TCP的基礎和三次握手協商流程,那麼DoS就是利用這其中的漏洞進行攻擊的.下面就是DOS的攻擊原理了上面的介紹,我們瞭解TCP協議,以及連線過程。要對SERVER實施拒絕服務攻擊,實質上的方式就是有兩個:
一, 迫使伺服器的緩衝區滿,不接收新的請求。
二, 使用IP欺騙,迫使伺服器把合法使用者的連線復位,影響合法使用者的連線(這就是DOS攻擊實施的基本思想。)
具體實現的方法
1、SYN FLOOD
利用伺服器的連線緩衝區(Backlog Queue),利用特殊的程式,設定TCP的Header,向伺服器端不斷地成倍傳送只有SYN標誌的TCP連線請求。當伺服器接收的時候,都認為是沒有建立起來的連線請求,於是為這些請求建立會話,排到緩衝區佇列中。
如果你的SYN請求超過了伺服器能容納的限度,緩衝區佇列滿,那麼伺服器就不再接收新的請求了。其他合法使用者的連線都被拒絕掉。可以持續你的SYN請求傳送,直到緩衝區中都是你的只有SYN標記的請求。現在有很多實施SYN FLOOD的工具,呵呵,自己找去吧。
-----------對於SYN flood攻擊,防護原理是:現在很多動態防火牆都可以提供SYN代理功能, 具體的原理框架如下:
2、IP欺騙DOS攻擊
這種攻擊利用RST位來實現。假設現在有一個合法使用者(1.1.1.1)已經同伺服器建立了正常的連線,攻擊者構造攻擊的TCP資料,偽裝自己的IP為1.1.1.1,並向伺服器傳送一個帶有RST位的TCP資料段。伺服器接收到這樣的資料後,認為從1.1.1.1傳送的連線有錯誤,就會清空緩衝區中建立好的連線。這時,如果合法使用者1.1.1.1再發送合法資料,伺服器就已經沒有這樣的連線了,該使用者就必須從新開始建立連線。攻擊時,偽造大量的IP地址,向目標傳送RST資料,使伺服器不對合法使用者服務。
3、 頻寬DOS攻擊
如果你的連線頻寬足夠大而伺服器又不是很大,你可以傳送請求,來消耗伺服器的緩衝區消耗伺服器的頻寬。這種攻擊就是人多力量大了,配合上SYN一起實施DOS,威力巨大。不過是初級DOS攻擊。呵呵。Ping白宮??你發瘋了啊!
4、自身消耗的DOS攻擊
這是一種老式的攻擊手法。說老式,是因為老式的系統有這樣的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他過時的系統。
這種DOS攻擊就是把請求客戶端IP和埠弄成主機的IP埠相同,傳送給主機。使得主機給自己傳送TCP請求和連線。這種主機的漏洞會很快把資源消耗光。直接導致當機。這中偽裝對一些身份認證系統還是威脅巨大的。
上面這些實施DOS攻擊的手段最主要的就是構造需要的TCP資料,充分利用TCP協議。這些攻擊方法都是建立在TCP基礎上的。還有其他的DOS攻擊手段。
5、塞滿伺服器的硬碟
通常,如果伺服器可以沒有限制地執行寫操作,那麼都能成為塞滿硬碟造成DOS攻擊的途徑,比如:
傳送垃圾郵件。一般公司的伺服器可能把郵件伺服器和WEB伺服器都放在一起。破壞者可以傳送大量的垃圾郵件,這些郵件可能都塞在一個郵件佇列中或者就是壞郵件佇列中,直到郵箱被撐破或者把硬碟塞滿。
讓日誌記錄滿。入侵者可以構造大量的錯誤資訊傳送出來,伺服器記錄這些錯誤,可能就造成日誌檔案非常龐大,甚至會塞滿硬碟。同時會讓管理員痛苦地面對大量的日誌,甚至就不能發現入侵者真正的入侵途徑。向匿名FTP塞垃圾檔案。這樣也可以塞滿硬碟空間。
6、合理利用策略
一般伺服器都有關於帳戶鎖定的安全策略,比如,某個帳戶連續3次登陸失敗,那麼這個帳號將被鎖定。這點也可以被破壞者利用,他們偽裝一個帳號去錯誤登陸,這樣使得這個帳號被鎖定,而正常的合法使用者就不能使用這個帳號去登陸系統了
注意事項
只用於學術交流,禁止用於他用