1. 程式人生 > >廣告作弊:DNS劫持和HTTP劫持

廣告作弊:DNS劫持和HTTP劫持

1. dns劫持 (客戶端請求後,返回伺服器前)

  a) DNS劫持又稱域名劫持,是指在劫持的網路範圍內攔截域名解析的請求,分析請求的域名,把審查範圍以外的請求放行,否則返回假的IP地址或者什麼都不做使請求失去響應,其效果就是對特定的網路不能反應或訪問的是假網址。

2. http劫持 (到伺服器後,返回客戶端前)

a) HTTP劫持是在使用者與其目的網路服務所建立的專用資料通道中,監視特定資料資訊,提示當滿足設定的條件時,就會在正常的資料流中插入精心設計的網路資料報文,目的是讓使用者端程式解釋“錯誤”的資料,並以彈出新視窗的形式在使用者介面展示宣傳性廣告或者直接顯示某網站的內容。

b) HTTP劫持通常不是定時在你的系統中出現的,只有病毒引起的惡意推廣才會不停地出現在你的視線中。並且HTTP劫持往往是在你進行網路操作剛剛開始的時候,例如,你剛剛打開了旺旺、登入郵箱或訪問的網站還未完全開啟時,劫持才會出現。

c) 這種劫持導致的最常見的現象就是彈出宣傳頁面,這種頁面會突然跳出來,而且顯示速度很快,比你要訪問的網站提前很多。

d) 彈窗廣告(CPM) 設定首次彈窗,提高使用者體驗(判定cookie是否包含網站資訊, 表明使用者是否點選)

3. 三次握手協議

OSI參考模型中的網路層,在TCP/IP協議中,TCP協議提供可靠的連線服務,採用三次握手建立一個連線。

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;

第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。

完成三次握手,客戶端與伺服器開始傳送資料,在上述過程中,還有一些重要的概念:

未連線佇列:在三次握手協議中,伺服器維護一個未連線佇列,該佇列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明伺服器已收到SYN包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連線在伺服器處於Syn_RECV狀態,當伺服器收到客戶的確認包時,刪除該條目,伺服器進入ESTABLISHED狀態。

SYN-ACK 重傳次數:伺服器傳送完SYN-ACK包,如果未收到客戶確認包,伺服器進行首次重傳,等待一段時間仍未收到客戶確認包;

進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連線資訊從半連線佇列中刪除。注意,每次重傳等待的時間不一定相同。

半連線存活時間:是指半連線佇列的條目存活的最長時間,也即服務從收到SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。

有時我們也稱半連線存活時間為Timeout時間、SYN_RECV存活時間

SYN FLOOD(同步洪流)和 TCP 會話劫持

SYN FLOOD

當客戶端和伺服器在網路中使用TCP協議發起會話時,在伺服器記憶體中會開闢一小塊緩衝區來處理會話過程中訊息的“握手”交換。會話建立資料包包含一個SYN片段,用於標識訊息交換中的序列號。

而SYN FLOOD試圖摧毀這一過程。攻擊者快速傳送一連串連線請求,之後並不響應伺服器傳送回來的應答,造成三次握手無法完成,在伺服器上留下半開啟的連線,分配給他們的快取也被保留下來,使其他程式不能使用伺服器。儘管緩衝區中的資料包在沒有應答超過一段時間(通常3min)就會被丟棄,但大量虛假請求的後果是用於建立會話的合法請求難以建立。

TCP 會話劫持

假設A 為攻擊者,B 為中介跳板機器(受信任的伺服器),C 為目的主機(多是伺服器)。

會話劫持的常用方法:使用源路由(source Routed)IP資料包,使位於網路上的A 參與到B與C的連線中。

會話劫持的常見型別:中間人攻擊。攻擊者A通過某種型別的資料包嗅探程式偵聽B與C的資料傳輸,可以截獲他想要的任何資訊而不打斷會話。

會話劫持的方法:攻擊者A向正在通話的B傳送大量請求使其無暇響應合法使用者C,此時A預測B的TCP序列號冒充B與C進行會話,騙取C的信任,從而達到攻擊的目的。

有效抵禦會話劫持的方法:使用加密傳輸。