中間人攻擊

標籤: 暫無標籤

389

更新時間: 2013-09-19

廣告

中間人攻擊(Man-in-the-MiddleAttack,簡稱「MITM攻擊」)是一種「間接」的入侵攻擊,這種攻擊模式是通過各種技術手段將受入侵者控制的一台計算機虛擬放置在網路連接中的兩台通信計算機之間,這台計算機就稱為「中間人」。

廣告

 

1 中間人攻擊 -簡介

中間人攻擊中間人攻擊

中間人攻擊(Man-in-the-MiddleAttack,簡稱「MITM攻擊」)是一種「間接」的入侵攻擊,這種攻擊模式是通過各種技術手段將受入侵者控制的一台計算機虛擬放置在網路連接中的兩台通信計算機之間,這台計算機就稱為「中間人」。然後入侵者把這台計算機模擬一台或兩台原始計算機,使「中間人」能夠與原始計算機建立活動連接並允許其讀取或修改傳遞的信息,然而兩個原始計算機用戶卻認為他們是在互相通信。通常,這種「攔截數據——修改數據——發送數據」的過程就被稱為「會話劫持」(SessionHijack)。

2 中間人攻擊 -攻擊方式

中間人攻擊黑客

中間人攻擊(Man-in-the-MiddleAttack,簡稱「MITM攻擊」)中間人攻擊很早就成為了黑客常用的一種古老的攻擊手段,並且一直到今天還具有極大的擴展空間。

在網路安全方面,MITM攻擊的使用是很廣泛的,曾經猖獗一時的SMB會話劫持、DNS欺騙等技術都是典型的MITM攻擊手段。在黑客技術越來越多的運用於以獲取經濟利益為目標的情況下時,MITM攻擊成為對網銀、網游、網上交易等最有威脅並且最具破壞性的一種攻擊方式。

1、信息篡改

當主機A、和機B通信時,都由主機C來為其「轉發」,如圖一,而A、B之間並沒有真正意思上的直接通信,他們之間的信息傳遞同C作為中介來完成,但是A、B卻不會意識到,而以為它們之間是在直接通信。這樣攻擊主機在中間成為了一個轉發器,C可以不僅竊聽A、B的通信還可以對信息進行篡改再傳給對方,C便可以將惡意信息傳遞給A、B以達到自己的目的。

2、信息竊取

當A、B通信時,C不主動去為其「轉發」,只是把他們的傳輸的數據備份,以獲取用戶網路的活動,包括賬戶、密碼等敏感信息,這是被動攻擊也是非常難被發現的。

實施中間人攻擊時,攻擊者常考慮的方式是ARP欺騙或DNS欺騙等,將會話雙方的通訊流暗中改變,而這種改變對於會話雙方來說是完全透明的。以常見的DNS欺騙為例,目標將其DNS請求發送到攻擊者這裡,然後攻擊者偽造DNS響應,將正確的IP地址替換為其他IP,之後你就登陸了這個攻擊者指定的IP,而攻擊者早就在這個IP中安排好了一個偽造的網站如某銀行網站,從而騙取用戶輸入他們想得到的信息,如銀行賬號及密碼等,這可以看作一種網路釣魚攻擊的一種方式。對於個人用戶來說,要防範DNS劫持應該注意不點擊不明的連接、不去來歷不明的網站、不要在小網站進行網上交易,最重要的一點是記清你想去網站的域名,當然,你還可以把你常去的一些涉及到機密信息提交的網站的IP地址記下來,需要時直接輸入IP地址登錄。

要防範MITM攻擊,可以將一些機密信息進行加密后再傳輸,這樣即使被「中間人」截取也難以破解,另外,有一些認證方式可以檢測到MITM攻擊。比如設備或IP異常檢測:如果用戶以前從未使用某個設備或IP訪問系統,則系統會採取措施。還有設備或IP頻率檢測:如果單一的設備或IP同時訪問大量的用戶帳號,系統也會採取措施。更有效防範MITM攻擊的方法是進行帶外認證,具體過程是:系統進行實時的自動電話回叫,將二次PIN碼發送至SMS(簡訊網關),簡訊網關再轉發給用戶,用戶收到后,再將二次PIN碼發送到簡訊網關,以確認是否是真的用戶。帶外認證提供了多種不同的認證方式及認證渠道,它的好處是:所有的認證過程都不會被MITM攻擊者接觸到。例如MITM是通過中間的假網站來截獲敏感信息的,相關的「帶外認證」就是指通過電話認證或簡訊認證等方式確認用戶的真實性,而MITM攻擊者卻不能得到任何信息。當然,這種方式麻煩些。

廣告

3 中間人攻擊 -DNS欺騙

中間人攻擊中間人攻擊示意圖

DNS欺騙(DNSSpoofing),就是其中的一種慣用手法。攻擊者通過入侵DNS伺服器、控制路由器等方法把受害者要訪問的目標機器域名對應的IP解析為攻擊者所控制的機器,這樣受害者原本要發送給目標機器的數據就發到了攻擊者的機器上,這時攻擊者就可以監聽甚至修改數據,從而收集到大量的信息。如果攻擊者只是想監聽雙方會話的數據,他會轉發所有的數據到真正的目標機器上,讓目標機器進行處理,再把處理結果發回到原來的受害者機器;如果攻擊者要進行徹底的破壞,他會偽裝目標機器返回數據,這樣受害者接收處理的就不再是原來期望的數據,而是攻擊者所期望的了。例如讓DNS伺服器解析銀行網站的IP為自己機器IP,同時在自己機器上偽造銀行登錄頁面,那麼受害者的真實賬號和密碼就暴露給入侵者了。

如此說來,這種攻擊理應是最強大最危險的,然而實際上它卻很少派上大用場,為什麼,因為DNS欺騙的攻擊模型太理想了。在實際生活中,大部分用戶的DNS解析請求均是通過自己的ISP伺服器進行的,換句話說,就是系統在連接網路時會獲取到ISP伺服器提供的DNS伺服器地址,所有解析請求都是直接發往這個DNS伺服器的,攻擊者根本無處入手,除非他能入侵更改ISP伺服器上DNS服務的解析指向。所以這種手法在廣域網上成功的幾率不大。

當然,這種攻擊的成功率也有例外存在,例如一個ISP伺服器上存在BIND漏洞,攻擊者就能通過Bind漏洞進入伺服器更改掉DNS解析指向,甚至取得最高許可權;另一種方法是入侵路由設備,修改裡面的DNS伺服器地址為自己控制的機器地址,這種方法只能在用戶機器自身是通過路由器返回域名解析的情況下才能成功,多見於一些使用小區寬頻連接Internet的用戶,因為這種用戶機器的DNS地址通常必須指向小區寬頻內部的某台伺服器地址或者交給路由進行轉向,這時候只要攻擊者入侵了路由或者那台關係到所有人的伺服器修改掉DNS記錄,整個小區用戶的網路都完了。當然,攻擊者不能把全世界網站都偽造到他硬碟上,他只需要改幾個重要商務站點的指向即可,這樣便可導致用戶訪問某些商務站點時被轉向到攻擊者的機器去。但是,這種攻擊手法同時對攻擊者自身也是一種傷害:如果小區內有許多用戶都訪問這些商務站點,則大量數據請求會瘋狂消耗攻擊者的機器資源,攻擊者非但不能實時處理數據,更是面臨著機器癱瘓和暴露自己的雙重危險。

廣告

4 中間人攻擊 -會話劫持

中間人攻擊會話劫持

客車沿著岔路行駛下去,怎料道路越來越顛簸,根本不像能開回高速公路的樣子,滿車的旅客被晃醒了,不住的抱怨起來。司機心裡也有點發慌,客車在荒山野嶺停了下來。在眾人不知所措的時候,車外有幾個看似本地居民的人請求搭個便車外出,並表示自己懂得出去的道路。司機雖然半信半疑,可終究還是打開了車門。誰也沒有察覺到那幾個人的嘴邊正浮現出一絲陰險的笑容……

「會話劫持」(SessionHijack)是一種結合了嗅探以及欺騙技術在內的攻擊手段。廣義上說,會話劫持就是在一次正常的通信過程中,攻擊者作為第三方參與到其中,或者是在數據里加入其他信息,甚至將雙方的通信模式暗中改變,即從直接聯繫變成有攻擊者參與的聯繫。簡單地說,就是攻擊者把自己插入到受害者和目標機器之間,並設法讓受害者和目標機器之間的數據通道變為受害者和目標機器之間存在一個看起來像「中轉站」的代理機器(攻擊者的機器)的數據通道,從而干涉兩台機器之間的數據傳輸,例如監聽敏感數據、替換數據等。由於攻擊者已經介入其中,他能輕易知道雙方傳輸的數據內容,還能根據自己的意願去左右它。這個「中轉站」可以是邏輯上的,也可以是物理上的,關鍵在於它能否獲取到通信雙方的數據。

典型的會話劫持是利用TCP/IP的工作原理來設計攻擊的。在談TCP/IP會話劫持前先解釋一下TCP/IP用於確認數據傳輸的判斷機制。許多人一定都有過這樣的疑問:TCP/IP是使用點對點(PointtoPoint)連接進行數據傳輸的,但是它是如何知道上一條數據和下一條數據存在的聯繫的呢。如果發送數據后不慎掉線,恰好另一個人接著IP地址連接到了Internet,那他會不會收到伺服器返回數據。其實只要看過TCP/IP協議的書籍就會明白,TCP協議採用了兩種條件來確認每條已經建立連接的TCP通道,第一個是基礎連接確認,即TCP連接中的四大必備條件:源IP、源TCP埠、目標IP、目標TCP埠;第二個條件是「序號標識」(Sequencenumbers,SEQ),它們是成對出現的,分為「Sequence」(SEQ,序號欄位)和「AcknowledgementSequence」(ACKSEQ,確認序號欄位),TCP每次建立一個連接時,會給雙方指定這樣一條規則:序號欄位指出了本報文中傳送的數據在發送主機所要傳送的整個數據流中的順序號,而確認序號欄位指出了發送本報文的主機希望接收的對方主機中下一個八位組的順序號。(這裡可能比較難理解,可以舉個不專業的例子解釋:流水線上的工人被規定好了每人負責安裝8個不同的零件,則每次傳輸到他們手上的都應該是只留下給他們安裝的8個零件位置,這就是序號欄位;而下一個工人則被規定在前一個工人的基礎上安裝另一個部分的8個零件,這就是確認序號欄位,如果這個工人發現傳到自己手上的產品多了或少了零件,則說明前一個工人出錯,這個產品就被從流水線提取出來返工,這就是TCP對序號的嚴密審查和丟棄制度)。TCP如此謹慎,就是為了避免出現前面提到的假設,雖然這種假設發生的幾率很小(需要滿足TCP的基礎連接確認條件),但是它總有機會發生的。然而不幸的是,這對序號是可以預測的,因為TCP必須遵從以下守則:一台主機即將發出的報文中的SEQ值應等於它所剛收到的報文中的ACKSEQ值,而它所要發送報文中的ACKSEQ值應為它所收到報文中的SEQ值加上該報文中所發送的TCP數據的長度,即兩者存在「本次發送的SEQ=上次收到的ACKSEQ;本次發送的ACKSEQ=上次收到的SEQ+本次發送的TCP數據長度」的聯繫。知道這個規律后,攻擊者就不難發起「中間人攻擊」了,他只需要設法監聽到受害者TCP連接中的第一個條件(源IP、源TCP埠、目標IP、目標TCP埠),就可以得知其中一台主機對將要收到的下一個TCP報文段中SEQ和ACKSEQ值的要求,這樣攻擊者就能在原來的合法主機收到另一台合法主機發送的TCP報文前根據所截獲的信息向該主機發出一個符合條件二(序號標識)的TCP報文,如果該主機先收到攻擊報文,就會受到欺騙而把合法的TCP會話建立在攻擊主機與被攻擊主機之間,而且攻擊報文會讓被攻擊主機對下一次要收到的TCP報文中的確認序號值的要求發生變化,最終使另一台合法的主機向被攻擊主機發出的報文被拒絕,這種模式被稱為「主動劫持」。換句話說,就是其中一方合法主機被攻擊者掠奪了連接的許可權,而攻擊者卻成為了合法的連接方之一。這種會話劫持讓攻擊者避開了被攻擊主機對訪問者的身份驗證和安全認證,從而使攻擊者直接進入對被攻擊主機的的訪問狀態,因而危害嚴重。例如,你剛向某站點發送完賬戶密碼,就被攻擊者搶先冒充你的TCP連接上了,那你的損失可就難預料了。不過,會話劫持對網路環境的一點要求可以讓大家鬆口氣,它必須在使用MAC定址的網路環境中才能發揮作用,必要時還要配合ARP協議欺騙,能同時滿足這兩個條件的只有區域網。而廣域網不是靠MAC地址來查找計算機的,因此攻擊者很難從現有的廣域網結構里插入到某兩台計算機之間。

廣告

5 中間人攻擊 -代理伺服器

中間人攻擊代理伺服器

不再可靠的代理伺服器

網路上存在許多各種各樣的代理伺服器,其中的一些,是披著羊皮的狼……客車在一個「老鄉」的指引下緩緩前進,司機這時候卻感到有點不對勁,因為這條小路越來越泥濘。他還沒來得及思考更多,就覺得車子顛簸了一下,再也動彈不得:車輪陷進水坑裡了!滿車旅客沸騰起來,那幾個「老鄉」很有自信的說:「我們下車去找人來推!」遂跳下車向後方走去,只留了兩個人在車外「守」著。司機趁那兩個人看著後方抽煙的時候偷偷撥打了110……過了一會兒,旅客們歡呼起來,因為他們看到一群「老鄉」拿著鋤頭棍棒等東西走過來。但是只過了很短的時間,歡呼聲變成了恐懼的叫聲:那群人氣勢洶洶的,而且有些人手上還拿著砍刀!這些人不是什麼「老鄉」,而是一夥歹徒!司機明白自己從一開始就中了圈套,忙開足馬力前進,可是無奈車輪只能在坑裡空轉……

代理伺服器(ProxyServer)的存在已經是很長久的事實了,而且由最初的幾個基於TCP/IP協議的代理軟體如HTTP、SMTP、POP3和FTP等發展到SSL、SOCK4/5以及其他未知的代理類型,可謂給一些特殊用途者提供了極大的方便。例如,通過代理跨過某些伺服器的IP屏蔽,從而瀏覽到本來不能看到的信息;或者害怕自己IP暴露被對方入侵而尋找層層代理把自己包裹起來;還有些是因為系統不支持Internet共享而被迫採用代理軟體來讓內部網路的計算機能正常連接Internet……此外還有許多原因,讓各種代理伺服器經久不衰。

代理伺服器相當於一個透明的數據通道,它根據客戶發來的「要求連接某計算機」的請求數據,進而用自己本身作為原客戶機器去連接目標計算機,在目標計算機返回數據后,再發送給原客戶,這時目標計算機獲取到的是代理伺服器的IP,而不是原客戶IP,從而實現突破IP屏蔽或者讓對方無法獲取你的真實IP。

簡單舉個HTTP代理伺服器工作的原理:IE發送一個包含目標URL的HTTP請求,代理伺服器接收並析出HTTP報文里的目標URL和相關參數,然後把這個URL作為一次標準的HTTP連接過程與目標網站連接,獲取目標網站返回的數據后緩衝到代理伺服器的硬碟上,再把這些數據返回給客戶端。

請求連接目標URL------>連接目標伺服器------->
客戶端-------------------------代理伺服器------------------------目標伺服器
<-----返回數據----(緩衝)<-------------返回數據

其它協議的代理工作模式也都差不多,代理伺服器充當了一個數據轉向的工作站,相當於一個專門負責數據轉發的「勤勞工人」。

代理伺服器的工作模式,正是典型的「中間人攻擊」模型。代理伺服器在其中充當了一個「中間人」的角色,通訊雙方計算機的數據都要通過它。因此,「代理伺服器進行的『中間人攻擊』」逐步成為現實,相對於其他「中間人攻擊」方法,這種利用代理伺服器暗渡陳倉的做法簡直天衣無縫,攻擊者可以自己寫一個帶有數據記錄功能的代理服務程序,放到任意一台穩定的肉雞甚至直接在自己機器上,然後通過一些社會工程學手段讓受害者使用這個做了手腳的「代理伺服器」,便可守株待兔了。這種方法最讓人不設防,因為它利用的是人們對代理的無條件信任和貪便宜的想法,使得一個又一個「兔子」自動撞了上來,在享受這頓似乎美味的「胡蘿蔔」的同時卻不知道安全正在逐漸遠離自己。

如果製作這個代理伺服器的攻擊者僅限於窺探數據,那麼受害者的損失可能還能估量,但是如果攻擊者在目標伺服器返回的數據里加入一個帶有木馬程序的數據呢。例如在HTTP代理返回的HTML報文里加入一個MIME攻擊漏洞代碼,而受害者的計算機恰好沒有打相應補丁,那麼由此帶來的損失就難以估量了,而且計算機技術不高的受害者也難以查出木馬究竟是從哪裡來的,因為很少有人懷疑代理伺服器自身會有問題。

廣告

6 中間人攻擊 -防禦

中間人攻擊中間人攻擊

攻防為一家,有攻就有防,只要措施正確,MITM攻擊是可以預防的。

對於DNS欺騙,要記得檢查本機的HOSTS文件,以免被攻擊者加了惡意站點進去;其次要確認自己使用的DNS伺服器是ISP提供的,因為目前ISP伺服器的安全工作還是做得比較好的,一般水平的攻擊者無法成功進入;如果是依靠網關設備自帶的DNS解析來連接Internet的,就要拜託管理員定期檢查網關設備是否遭受入侵。

至於區域網內各種各樣的會話劫持(區域網內的代理除外),因為它們都要結合嗅探以及欺騙技術在內的攻擊手段,必須依靠ARP和MAC做基礎,所以網管應該使用交換式網路(通過交換機傳輸)代替共享式網路(通過集線器傳輸),這可以降低被竊聽的機率,當然這樣並不能根除會話劫持,還必須使用靜態ARP、捆綁MAC+IP等方法來限制欺騙,以及採用認證方式的連接等。

但是對於「代理中間人攻擊」而言,以上方法就難以見效了,因為代理伺服器本來就是一個「中間人」角色,攻擊者不需要進行任何欺騙就能讓受害者自己連接上來,而且代理也不涉及MAC等因素,所以一般的防範措施都不起作用。除非你是要幹壞事,或者IP被屏蔽,或者天生對網路有著恐懼,否則還是不要整天找一堆代理來隱藏自己了,沒必要的。常在河邊走,即使遇上做了手腳的代理也難察覺。

廣告

7 中間人攻擊 -相關詞條

計算機伺服器
網路路由器
主機

廣告

8 中間人攻擊 -參考資料

http://www.linwan.net.cn/archives/260.html

廣告