自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TCP鏈路劫持攻擊一二三

安全 黑客攻防
隨著應用安全的發(fā)展,大家都比較關注應用安全漏洞,其實在應用層之下的傳輸層也有很多安全風險,而且這些安全風險正在被廣泛利用。比如今天要給大家介紹的TCP鏈路劫持攻擊。

隨著應用安全的發(fā)展,大家都比較關注應用安全漏洞,其實在應用層之下的傳輸層也有很多安全風險,而且這些安全風險正在被廣泛利用。比如今天要給大家介紹的TCP鏈路劫持攻擊。

TCP鏈路劫持其實就是指網(wǎng)絡鏈路上偵聽、偽造TCP包,達到控制目標網(wǎng)絡鏈路的行為。最常見的就是某些設備實現(xiàn)的對非法站點的訪問攔截,以及一些地區(qū)運營商的網(wǎng)頁植入廣告行為。

因為廣域網(wǎng)的鏈路劫持影響面大,一般會影響一個地區(qū)甚至是全國,所以本文重點討論廣域網(wǎng)的TCP鏈路劫持,局域網(wǎng)的劫持如ARP攻擊不在討論范圍。

目前發(fā)現(xiàn)的TCP鏈路劫持攻擊一般有兩種形式:中斷訪問型(分為單向發(fā)包和雙向發(fā)包)和替換頁面型。

中斷訪問型常見于阻止用戶訪問某些網(wǎng)站,如某些設備禁止用戶訪問某些站點、某地運營商的禁止ADSL多終端上網(wǎng)功能。其原理就是偽造服務端給用戶發(fā)RST包阻止TCP連接的建立(單向發(fā)包)。某些設備做得比較狠,在冒充服務端給用戶發(fā)RST包的同時也冒充用戶給服務端發(fā)RST包(雙向發(fā)包)。

替換頁面型常見于運營商植入廣告,也有篡改正常網(wǎng)頁進行SEO、騙流量的。筆者見過最惡劣的莫過于釣魚,如2011年出現(xiàn)過的Gmail釣魚事件以及一些不能告訴你的釣魚事件。原理也簡單,就是在一個HTTP請求后偽造服務端的HTTP響應給客戶端。

如下圖所示就是一次典型的TCP鏈路劫持替換頁面,我們可以看到,TCP三次握手完成后,HTTP請求包發(fā)送后,客戶端收到兩個HTTP響應包,因為偽造的第一個包(10號)先到,所以第二個正常的HTTP響應包(13號)被客戶端忽略了。很明顯,在網(wǎng)絡上有一個設備,偵聽整個會話,當匹配某個特征就搶先發(fā)包劫持會話。

這些利用鏈路劫持進行的彈窗廣告、“技術問題”產(chǎn)生的誤攔截、植入代碼不慎將頁面弄亂、甚至是釣魚等將會損害用戶利益。筆者跟鏈路劫持的“不解之緣”就因此而起。

要解決鏈路劫持先要搞清楚是否是鏈路劫持,如是則出問題的大概位置在哪里。鏈路劫持是區(qū)域性的,一般來講某地區(qū)用戶集中投訴,就可以聯(lián)系用戶調(diào)查了。用戶往往不懂Wireshark抓包,還要遠程協(xié)助,如果網(wǎng)速慢就是悲劇……各種心酸且按下不表。

抓到可疑包之后關注兩個關鍵點:TTL值和IP Id(Identification)。根據(jù)實際觀測,偽造的TCP包的TTL值和Id是不符合邏輯的。

比如下圖,真實包的TTL是53,Id是按順序自增的,而偽造的包的TTL是64,Id始終是0。還有,筆者也見過某地運營商禁止ADSL多終端上網(wǎng)功能會偽造Id值恒為8888的RST包。

通過偽造的TTL值就可以大致定位偵聽設備的位置。利用偽造的數(shù)據(jù)包的TTL值加上當時用戶的路由即可定位:數(shù)據(jù)包每經(jīng)過一個路由TTL值就會減一,我們找到假的包,看他的TTL(一般初始發(fā)出的TTL是256或128或64)減了多少,反推回去就找到出問題的位置了。

剛剛那個截圖,偽造的的TCP包TTL值是64,也就是可以推測出鏈路劫持就發(fā)生在局域網(wǎng)內(nèi)。的確如此,這個case是一個路由器軟件進行鏈路劫持的案例。

有個問題,如果攻擊者聰明一些,偽造包定制一個TTL值,就會導致我們難以精確定位。比如某些設備會發(fā)三次RST包,每次的TTL都不一樣。注意,我說的“難以定位”并非“不能定位”,還是有辦法的,需要動動腦子。

壞人是很多的,不能每次都被動等待用戶投訴,如何主動發(fā)現(xiàn)鏈路劫持呢?

客戶端訪問目標站點的時候,同一個TCP會話的TTL值發(fā)生較大變動,就可以判定為疑似劫持。以下python代碼就是一個利用Scapy檢測TCP鏈路劫持的示例:

#!/bin/python

#

#

import sys

from scapy.all import *

conf.verb=0

print “TCP Hijacking Delector by lake2″

print “[+] Sniffing ….”

ip_arr = {}

while 1:

a=sniff( filter=”tcp and src host not 10.26.234.44″, count=50)

for b in a:

ip_src = b.sprintf(r”%IP.src%”)

ip_ttl = b.sprintf(r”%IP.ttl%”)

if ip_arr.has_key(ip_src):

c = int(ip_ttl) – int(ip_arr[ip_src])

if abs(c) > 4:

print ip_src + ” has been hijacking !!!   debug info : ” + str(ip_ttl) + “  <-> ” + str(ip_arr[ip_src])

else:

ip_arr[ip_src] = ip_ttl

print “=>”

檢測到某些設備攔截筆者在Google搜索敏感關鍵字的鏈路劫持:

雙向RST的情況,部署在機房的IDS也可以發(fā)現(xiàn)端倪。

如果是替換頁面型攻擊,頁面hash或者HTML元素個數(shù)會有異常,這里也可以作為一個檢測點。

防范鏈路劫持就比較困難,畢竟攻擊者控制著網(wǎng)絡鏈路。不過并非不可能。

一是網(wǎng)站全程使用SSL。

再一個就是在客戶端或(和)服務器丟棄偽造的TCP包。比如前面說到的單向中斷訪問型攻擊,就可以丟棄包含偽造特征的TCP包(如Id為0或8888)。某些項目就是利用客戶端、服務端同時丟棄的方式來翻墻的。

最后,我們可以看到廣域網(wǎng)一點都不安全,所以敏感信息傳輸一定要加密,還要高強度加密;高端網(wǎng)頁最好有個校驗機制;自動升級的程序也一定要校驗文件簽名。

責任編輯:藍雨淚 來源: 游俠安全網(wǎng)
相關推薦

2016-03-16 09:47:55

2015-05-29 17:25:19

2015-05-13 09:15:50

應用程序開發(fā)PaaSAWS

2021-03-24 09:37:41

數(shù)據(jù)類型數(shù)據(jù)分析數(shù)據(jù)的分類

2011-08-19 11:22:09

IBM大型機

2010-09-09 22:31:43

2013-06-21 09:56:26

2021-04-07 09:52:46

JavaScript函數(shù)劫持攻擊

2010-09-09 20:11:39

2019-02-28 05:05:47

2013-05-14 14:28:55

2020-07-28 16:38:23

中間人TCP網(wǎng)絡部協(xié)議

2010-04-21 09:15:21

2017-03-27 16:08:58

2019-06-04 09:14:56

2022-08-02 15:05:58

安全帳戶劫持數(shù)據(jù)

2012-04-12 15:42:35

2010-03-05 09:37:52

2010-09-09 20:26:34

2015-06-16 11:20:16

水坑攻擊
點贊
收藏

51CTO技術棧公眾號