1. 程式人生 > 實用技巧 >4-4-2 網路欺騙技術

4-4-2 網路欺騙技術

4-4-2 網路欺騙技術

本篇將介紹幾種常見型別的網路欺騙技術:

  • IP欺騙

  • ARP欺騙

  • DNS欺騙

  • Web欺騙

1. IP欺騙及防禦

使用TCP/IP協議簇的網路中的每一個數據包都包含源主機和目的主機的IP地址,攻擊者可以使用其他主機的 IP 地址, 並假裝自己來自該主機,以獲得自己未被授權訪問的資訊。這種型別的攻擊稱為IP欺騙,是最常見的一種欺騙攻擊方式。

IP 協議是網路層的一個非面向連線的協議,IP 資料包的主要內容由源 IP 地址,目的 IP 地址和業務資料三部分構成。它的任務就是根據每個資料報文的目的地址 ,通過路由完成將報文從源地址到目的地址的傳送。至於報文在傳送過程中是否丟失、是否出現差錯或是一些安全保障問題,它不會考慮、也不負責的。因此藉助高層協議的應用程式來偽造 IP 地址是比較容易實現的。

注意:因為攻擊者使用的是虛假的或他人的IP地址, 而受害者對此做出迴應的時候,它迴應的也是這個虛假的或他人的地址,而不是攻擊者的真正地址。 因此,攻擊者如何獲得其響應以保持與目標主機之間的完整的持續不斷的會話,這是一問題。可見 IP 欺騙並不僅僅是偽造 IP , 還涉及如何掌握整個會話過程這一重要問題 , 這就涉及一個高階議題——會話劫持技術(本篇後續會詳細講述)

1.1 基本的IP欺騙手段

以下的這三種 IP 欺騙的基本方法都比較原始, 但是它們的原理仍然比較重要。很多後續發展出來的欺騙技術均基於它們,是在此基礎上的推進。

1.1.1 簡單的IP偽造

攻擊者將攻擊主機的 IP 地址改成其他主機的地址以冒充其他主機。攻擊機將自己的 IP 換成他人的 IP, 以假冒身份發起與被攻擊方的連線。這樣,攻擊者發出的所有資料包都帶有假冒的源地址。這是一種很原始的方法,涉及的技術層次非常低,缺陷也很明顯。

因為只能向受害者傳送資料包, 而不會收到任何應答包,所有的應答都回到了被盜用了地址的機器上。

  • 對於TCP連線:由於初始化一個TCP 連線需要三次握手,但被攻擊方的應答卻被返回到另一個機器上, 因此採用這種方式將不能完成一次完整的 TCP 連線,也就無法完成後續傳輸。

  • 對於UDP連線:UDP這種面向無連線的傳輸協議,不存在建立連線的問題,因此攻擊者後續傳送的所有 UDP 資料包都會被髮送到目標機器中。

1.1.2 源路由攻擊

簡介:

簡單地偽造 IP 地址進行欺騙攻擊最重要的一個問題是,被攻擊方響應的資訊是傳送到我們冒充的地址上,而我們攻擊者自身卻無法接收到它們。攻擊者雖然可以利用這種方式來製造一個對被冒充主機的DOS攻擊,但我們的目標是被欺騙方,而不是被冒充方。

為了得到從目的主機返回的資料流,一個方法是攻擊者插入被欺騙主機與被冒充主機之間資料流經過的通路上,即基於IP協議、網路層上的MITM(中間人攻擊)。但實際中這種方法實現起來非常困難,網際網路採用的是動態路由,即資料包從起點到終點走過的路徑是由位於此兩點間的路由器決定的,資料包本身只知道去往何處,但不知道該如何去。雖然在很多情況下網際網路上的不少資料流具有相同的路由,但這是沒有保障的。因此,讓資料流持續始終通過攻擊者的機器並不容易。為了達到欺騙攻擊的目的,保證經過攻擊者的機器,就需要使用源路由機制。

實現:

源路由機制通過IP資料包報頭的源路由選項欄位來工作,它允許資料包的傳送者在這一選項裡設定接收方返回的資料包要經過的路由表。包括兩種型別:

  1. 寬鬆的源站選擇 ( LSR ):傳送端指明資料包必須經過的 IP 地址清單, 但如果需要,也可以經過除這些地址以外的其他地址。

  2. 嚴格的源站選擇 ( SRS ):傳送端指明資料包必須經過的確切地址。如果沒有經過這一確切路徑,資料包會被丟棄,並返回一個 ICMP 報文。

源路由選項欄位長 39 位元組, 除去其中 3 個位元組的附加資訊, 剩下的 36 個位元組僅對應 9 個 IP 地址空間, 由於最後一個地址必須是目的地址, 所以實際上只能填寫 8 個 IP 地址。隨著網際網路的發展, 路由經過的 IP 地址數通常都會大於 8 個, 在這種情況下, 使用寬鬆的源站選路比較妥當,因為如果不能找到確切的路徑,嚴格的源路由選路就會丟棄這個資料包。

攻擊者可以自己先定義資料包頭的源IP來偽裝成某信任主機,與目標機器建立信任連線,同時使用源路由選項將自身置於返回報文所經過的路徑上,這個過程稱為源路由攻擊,或偽路由攻擊。

1.1.3 UNIX信任關係

現在人們已經很少使用 UNIX 系統間的信任關係了, 暫不做更詳細的瞭解。

1.2 TCP會話劫持

1. 簡介:

會話劫持(Session Hijack)是一種結合了嗅探及欺騙技術的攻擊手段。簡而言之,會話劫待就是接管一個現存動態會話的過程,即在一次雙方的通過程中,劫持某一方主機的會話,代替它傳送資料給另一方。

但TCP 會話劫持攻擊是一種盲劫持。雖然攻擊者可以偽裝成客戶主機A 向伺服器傳送攻擊資料, 但伺服器的響應包的目的地址仍是客戶主機 A 的地址,除非攻擊者採用特殊手段(如ARP 欺騙等)將自身置千中間人位置 ,否則攻擊者不會接收到伺服器任何響應的資料。

在基本的 IP 欺騙攻擊中,只涉及兩個角色,攻擊者和受害者,被冒充者在欺騙過程中不扮演任何角色, 攻擊者僅僅是假冒它的 IP 地址,被冒充方可能並不在線,總之都無所謂。但是在會話劫持中,被冒充者本身是處於線上狀態的,常見的情況是,為了接管整個會話過程,攻擊者需要積極地攻擊被冒充使用者迫使其離線。

3. TCP 序列號:

對基於TCP連線的可靠性通訊來說,序列號(seq,sequence)是非常重要的。序列號是一個 32 位計數器,用來通知接收方在收到亂序的資料包時如何排列資料包的順序。也就是說,序列號記錄了資料包放入資料流的順序,接收方可以根據序列號告訴傳送方哪些資料包已經收到,哪些資料包還未收到,於是傳送方就能夠依次重發丟失的資料包。

序列號是隨著傳輸資料位元組數遞增的(如本次傳輸資料位元組數為10,下一次傳送的序列號就增加10;本次傳輸的資料為 20 位元組,下一次傳送的序列號就應該相應增加 20),而序列號和確認號(ack,acknowledgmet)之間存在著明確的對應關係,這使得預測序列號成為了可能。即只要獲取最近的會話資料包,就可以猜測下一次通話中的 SEQ 和 ACK (通過本次的seq和len預測下一次的ack,通過本次的ack預測下一次的seq), 這是 TCP 協議的固有缺陷造成的, 由此帶來的安全威脅也是無法迴避的。不過,精確地預測主機和目標之間使用的序列號, 其實並不是一件容易的事情。

4. TCP 會話劫持過程(重點):

完成一個會話劫持攻擊通常需要下面 5 個步驟:

  1. 發現攻擊目標:

    對於會話劫持攻擊而言,攻擊者必須找到一個合適的目標。合適的標準主要需考慮兩方面:

    • 可TCP連線:這個目標是一個允許 TCP 會話連線(例如 Telnet 和 FTP 等)的伺服器。

    • 可被嗅探:能否嗅探到目標的資料流,因為在攻擊的時候需要猜測序列號,這就需要嗅探其之前通訊的資料包。

  2. 確認動態會話:

    發現一個攻擊目標後,攻擊者要想接管一個會話,就必須要找到一個可以接管的合法連線。

    與大多數攻擊不同的是,會話劫持攻擊一般是在網路流通量達到高峰時才發生。有兩個原因:

    • 網路流通量大時,攻擊者有很多供選擇的會話。

    • 網路流通量越大,則攻擊被發現的可能性就越小。在網路流通量不大或使用者連線數較少的情況下,使用者數次掉線,就很有可能引起這個使用者的懷疑,容易暴露。反之,如果網路流通量很大並且有很多的使用者在進行連線,那麼使用者們很有可能忽略掉線後面隱藏的問題,認為這也許只是由千網路流通過大而引起的。

  3. 猜測序列號,參與並擾亂客戶端和伺服器間的會話:

    我們要冒充客戶端像服務端傳送資料,即接管客戶端的會話,首先要打入客戶端於服務端的會話中去。與一次 TCP 會話相關的三個重要引數是IP地址、埠號和序列號。確認IP 地址和埠號相對容易,而序列號卻是變化的。因此,攻擊者必須成功猜測出序列號。猜測序列號和獲取伺服器的響應包是非常重要的,而且在整個攻擊過程中持續(如果後續不能使客戶機下線,它就仍能響應伺服器)

    如對方所期望的下一個序列號是12345, 我們發出的資料包的序列號就必須得是12345,若發出一個序列號為55555的資料包,那麼對方將發現錯誤並且重新同步, 這將會帶來很多麻煩。

    由於TCP 僅通過 SEQ/ACK 序列號來區分正確和錯誤資料包。常用的方式是先嗅探獲取伺服器響應給客戶機的包,然後猜測出下一次伺服器希望得到客戶端響應的包的序列號,並向伺服器傳送過去,通過大量的嘗試,只要能有一個包搶先在客戶機A之前響應伺服器,伺服器接受這個包後更新 ACK 序列號( 然而客戶主機對此毫無察覺,仍繼續使用老的SEQ序列號),這樣伺服器B不再相信A的正確的資料包,而相信我們的資料包。然後就可以偽裝為A , 使用猜測到的正確的 SEQ/ACK 序列號與伺服器 B 進行後續通訊(客戶主機A 已經被擾亂,而伺服器 B 仍然認為一切正常,攻擊主機偽裝成客戶主機 A 向伺服器 B 發出欺騙包),這樣就搶劫了A的會話連線。

    但別忘了此時客戶機A依然線上,它在收到伺服器端響應的包時自然會發現通訊出現異常,會去進行一些同步和協調處理來嘗試解決異常,所以此時我們仍要和A去競爭誰先響應伺服器,我們仍存在客戶機處理異常成功而迫使我們丟失會話的風險。

  4. 使客戶主機下線:

    當攻擊者獲得序列號後,為了徹底接管這個會話,他就必須使客戶主機下線。最簡單的方法就是對客戶主機進行拒絕服務攻擊(DOS攻擊),使其不能再繼續對外響應。

  5. 接管會話:

    通過攻擊者順利完成以上步驟,那麼他就成功接管了客戶機A這一方的會話,就可以偽裝成客戶機A持續向伺服器傳送任意資料包了。攻擊者通常會發送資料包在受害伺服器B上建立一個賬戶(如建立 Telnet的新賬戶),或留下某些後門,以方便進入伺服器系統。

5. 總結:

會話劫持總是伴隨在 TCP /IP 的工作過程中的,就其實現原理而言,任何使用Internet 進行通訊的主機都有可能受到這種攻擊。會話劫持在實現上是非常複雜的,通常攻擊者必須具有非常廣博的網路知識以及計算機操作技能,當然還需相當多的時間。

1.3 IP欺騙攻擊的防禦

1.3.1 防範基本的IP欺騙

大多數路由器有內建的欺騙過濾器。路由器過濾器的最基本形式是入口過濾和出口過濾:

  • 入口過濾:

    不允許任何從外網進入內網的資料包使用該內網的地址作為源地址,且內網裡主機間相互通訊的資料不能流到本網之外去。用於保護本單位的內部網路不成為被欺騙攻擊的受害者。

    因如果一個來自外網的資料包,聲稱來源於本單位的網路內部,就可以非常肯定它是假冒的資料包,應該丟棄。

  • 出口過濾:

    路由器檢查向外流的資料包,確定源地址是來自該內網中的一個地址。用於阻止有人使用內網的計算機向其他的站點發起攻擊。

    如果源地址不是來自本內網,這說明有人正使假冒地址向另一個網路發起攻擊,這個資料包應該被丟棄。

需要指出的一點是,雖然人們能保護自己不被欺騙,但不能阻止攻擊者盜用你的地址向另一方傳送訊息進行欺騙攻擊。我們可以加強以下幾點防禦意識:

  1. 防範源路由欺騙

    保護自己或者單位免受源路由欺騙攻擊的最好方法是通過IP source-ro ute命令設定路由器禁止使用源路由。事實上人們很少使用源路由做合法的事情,因而阻塞這種型別的流量進入或者離開網路通常不會影響正常的業務。

  2. 防範信任關係欺騙

    保護自己免受信任關係欺騙攻擊最容易的方法就是不使用信任關係,但這並不是最佳的解決方案。不過可以使信任關係的暴露達到最小。首先,限制擁有信任關係的人員。相比控制建立信任關係的機器數量,決定誰真正需要信任關係更加有意義。其次,不允許通過網際網路使用信任關係。在大多數情況下,信任關係是為了方便網路內部使用者互相訪問主機。一旦通過網際網路將信任關係延伸到外部網路,危險係數將大大增加。

1.3.2 防範會話劫持攻擊

應該說如果發生了會話劫持攻擊,目前仍沒有有效的辦法能從根本上阻止或消除。因為在會話劫持攻擊過程中,攻擊者直接接管了合法使用者的會話,消除這個會話也就意味著禁止了一個合法的連線,從本質上來說,這麼做就背離了使用 Internet 進行連線的目的。只能儘量減小會話劫持攻擊所帶來的危害。

  • 進行加密

加密技術是可以防範會話劫持攻擊為數不多的方式之一。如果攻擊者不能讀取傳輸資料,那麼進行會話劫持攻擊也是十分困難的。因此,任何用來傳輸敏感資料的關鍵連線都必須進行加密。

  • 使用安全協議

無論何時當用戶連入到一個遠端的機器上,特別是從事敏感工作或是管理員操作時, 都應當使用安全協議。 一般來說, 像SSH這樣的協議或是安全的Telnet 都可以使系統免受會話劫持攻擊。 此外, 從客戶端到伺服器的VPN也是很好的選擇。

  • 限制保護措施

允許從網際網路或外部網路傳輸到內部網路的資訊越少,內部使用者將會越安全,這是個最小化會話劫持攻擊的方法。攻擊者越難進入系統,那麼系統就越不容易受到會話劫持攻擊。在理想情況下,應該阻止儘可能多的外部連線和連向防火牆的連線,通過減少連線來減少敏感會話被攻擊者劫持的可能性。

2. ARP欺騙

ARP欺騙攻擊是利用ARP協議的缺陷進行的一種攻擊,其原理簡單,實現容易,目前使用十分廣泛,攻擊者常用這種攻擊手段監聽資料資訊,影響客戶端網路連線通暢情況。

2.1 ARP協議

ARP (Address ResolutionProtocol, 地址解析協議)用於將計算機的網路地址 (32 位的IP地址)轉化為實體地址 ( 48位的MAC地址),ARP劃分是屬於網路層的協議,但是它所工作的內容是鏈路層的。

在乙太網中,資料幀從一個主機到達區域網內的另一臺主機是根據48位的乙太網地址(硬體地址)來確定介面的,系統核心必須知道目的端的硬體地址才能傳送資料。

1. ARP協議包含兩種格式的資料包:

  1. ARP請求包:一個含有目標主機IP地址的乙太網廣播資料包。其主要內容為表明自身IP和MAC,並告知想知道哪個IP的MAC地址

    “ 我的 IP 地址是10.0.0.1, 硬體地址是 00-00-C0-15-AD-18。我想知道IP地址為10.0.0.26的主機的硬體地址。”

  1. ARP應答包:當局域網內其他主機收到ARP請求的廣播包後,會檢視其中請求解析的IP地址, 如果與本機IP地址相同,就會向源主機返回一個ARP應答包, 若與本機IP地址不同將不會響應這個請求包。ARP響應包的主要內容是表明自己就是那個IP,且對應的MAC是多少。

    “ 我的 IP 地址是10.0.0.26,我的MAC地址是00-00-D1-84-A2-26。”

注意:雖然ARP請求包是廣播發送的,但ARP響應包是點對點式的單播, 即從一個源地址傳送到一個目的地址。

2. ARP快取表:

每臺主機、閘道器都有一個ARP快取表,儲存了所處區域網內其他主機或閘道器的 IP-MAC 的對映關係。

  • arp -a # 檢視當前主機上的arp表

    dynamic 表示這條記錄是動態的,其內容可以被 ARP應答包的內容修改;

    static表明這條記錄是靜態的,其內容不能被ARP應答包修改,權威性比dynamic高。

  • arp -s # 手動向ARP表中新增一條的IP-MAC對映。

    如:arp -s 209.0.0.6 08-00-2B-00-EE-OA

  • arp -d # 刪除ARP表中的一條IP-MAC對映。

    如:arp -d 209.0.0.6 08-00-2B-00-EE-OA

3. ARP協議的工作過程:

ARP協議的工作過程可以從 區域網內通訊 和 區域網間通訊 兩個方面來研究。

  • 區域網內通訊:

假設一個簡單的區域網內有主機 A、主機B 和閘道器C,此時主機A要與主機B通訊。A首先會檢查自己的ARP快取表中是否有與主機B的IP相對應的MAC地址。如果有,則直接使用這個MAC地址; 如果沒有,它就會在區域網內廣播ARP請求包,區域網內的所有主機都會收到這個請求包,但只有主機B才會響應,它會迴應主機A一個ARP應答包。

這樣主機A就得到了主機B的MAC地址, 並且它會把這個對應的關係存在自己的ARP快取表中。之後主機 A 與主機 B 之間的通訊就依靠兩者快取表裡的MAC 地址來通訊了,直到通訊停止後兩分鐘(存活期可變化),這個對應關係才會被從表中刪除。

  • 區域網間通訊:

假設兩個區域網,其中一個區域網內有主機A、主機B和閘道器C;另一個區域網內有主機D和閘道器E。此時主機A需要和主機D進行通訊,主機A首先會發現主機D的IP地址並不是自己同一個網段內的,因此需要通過閘道器來轉發。於是它會檢查自己的ARP快取表裡是否有閘道器C的IP對應的MAC地址,如果沒有, 就通過ARP請求獲得;如果有,就直接與閘道器C通訊。然後再由閘道器C通過路由將資料包送到閘道器E,閘道器E收到這個資料包後發現是送給主機D的,它就會檢查自己的ARP快取,檢視是否有主機D對應的MAC地址,如果沒有,就使用 ARP請求包獲得,如果有,就使用該MAC地址與主機D通訊。

也就是說,當跨區域網進行通訊時,源主機是不用管目標主機的MAC地址的,只需要知道自己所處區域網的閘道器的MAC地址就行,發給B的資料包直接扔給自己閘道器去處理即可。自己閘道器依據主機B的IP地址,通過網路層的路由把資料包傳送到主機B所處區域網的閘道器處,再由B的閘道器去找B的MAC,將資料包傳給B,這樣其實又回到了同一個區域網內的通訊了。

2.2 ARP攻擊原理

ARP協議的缺陷就是,主機/閘道器收到一個ARP應答包後,並不會去驗證自己是否傳送過對應的ARP請求,也不會驗證這個ARP應答包的MAC地址是否可信, 而是直接用該應答包裡的IP-MAC地址的對映關係替換掉自身ARP快取表中原有的相應資訊。ARP欺騙攻擊的實現正是利用了這一點。

假設攻擊者是主機B,它向閘道器C傳送一個ARP應答包宣稱自己是主機A。同時,攻擊者向主機A傳送ARP應答包稱自己是閘道器C

那麼接下來,A和C的ARP快取表中關於對方的IP-MAC對映關係都被惡意更改而指向攻擊者B,所以A發給C的資料就會被髮送到攻擊者的主機B,同時C發給A的資料也會被髮送到B。攻擊者B就成了A與C之間的“ 中間人",B也就可以按其目的隨意進行惡意操作了,同時這也是一種典型的中間人攻擊(MITM)。

總結:ARP欺騙攻擊在區域網內非常奏效,但起作用也僅限於同一個網段的區域網內。它可以傳送錯誤的閘道器MAC地址導致同網段的其他使用者無法正常上網(頻繁斷網或者網速慢),還可以作為中間人可以嗅探到交換式區域網內的所有資料包,從而獲取敏感資訊。 此外,攻擊者還可以在這一攻擊過程中對資訊進行篡改,修改重要的資訊,進而控制受害者的會話,即會話劫持。

注意:ARP欺騙攻擊同樣也需要在整個攻擊過程中持續傳送ARP響應包,以維持我們建立在目標機器ARP快取表裡的對映關係,原因主要有以下三點:

  • dynamic的IP-MAC對映是有生存時間的,過期了就作廢。

  • 有時候還要考慮競爭關係,若目標主機收到一個關於我們偽裝的IP發來的正確的ARP響應包,則我們建立的對映關係就會被改回來,所以我們需搶先一步在正確的ARP響應包到達之前到達和響應目標主機,並在其到達之後再及時將對映關係再改回來。

2.3 ARP欺騙攻擊的檢測與防禦

當出現下列現象時,要注意檢測是否正在遭受ARP欺騙攻擊:

  1. 網路頻繁掉線,網速突然莫名其妙地變慢。

  1. 使用ARP - a命令發現閘道器的MAC地址與真實的閘道器 MAC 地址不相同。

  1. 使用網路嗅探軟體來發現區域網記憶體在大量的ARP響應包。而這些可疑ARP包的源頭基本就是攻擊機或被控制的殭屍機。

若不小心遭受了 ARP 欺騙攻擊, 應對的策略主要有:

  1. 使用靜態ARP快取,即手動繫結和更新ARP快取中的記錄。

  1. 使用 ARP 欺騙防護軟體,如:ARP防火牆。

  1. 主動防禦,及時發現正在進行 ARP 欺騙的主機, 並將其隔離。

3. DNS欺騙

4. Web欺騙