作者:Joe
導語:
作為一名局域網下的黑客,我的每一次攻擊都有着暴露自身的危險,如果沒有足夠高的自我修養,我也就不會活到現在了~
0x1:交換機基礎知識速學
交換機是一種在通信系統中完成信息交換功能的設備,應用在數據鏈路層。
交換機有多個端口,每個端口都具有橋接功能,可以連接一個局域網或一台高性能服務器或工作站,並且每個端口有自己的專用帶寬,可以連接不同的網段。
交換機各個端口之間的通信是同時的、並行的。
交換機的三大基本功能:地址學習、數據包過濾轉發以及消除回路。
什么是交換模式:將數據從一個端口轉發至到另一個端口的處理方式。
工作過程:
當接受到幀時,他會檢查其目的地址並對應自己的MAC地址表,如果存在目的地址,則轉發,如果不存在則泛洪(廣播),廣播后如果沒有主機的MAC地址與幀的目的MAC地址相同,則丟棄,若有主機相同,則會將主機的MAC自動添加到其MAC地址表中。
知道這些差不多就夠了,知道的太多你會后悔的!
0x2:局域網下的常見攻擊手段
【+】ARP攻擊
一台主機和另一台主機之間進行通信需要知道目標的IP地址,在局域網中進行傳輸數據的網卡不能直接識別IP地址,所以會用ARP解析協議將IP地址解析成MAC地址。
說白了,就是就是通過目標設備的IP地址,來查詢目標設備的mac地址,ARP協議就這么簡單。
在任何局域網的任意一台主機中,都有一個ARP緩存表,里面保存本機已知的此局域網中各主機和路由器的IP地址和MAC地址的對照關系。但這個表的生命周期是有時限的(一般不超過20分鍾)
圖解攻擊(圖片采集至百度知道):
當PC1 發包進行詢問 PC2 的 MAC 地址時,黑客 PC3 則當一個中間人來欺騙PC1和PC2
的交流,於是所有的情報就讓黑客PC3得到了。
至於這個過程,這篇博文就很不錯:http://blog.51cto.com/chenxinjie/1960336
實際上地址解析協議(ARP)利用的是第2層物理MAC地址來映射第3層邏輯IP地址,如果設備知道了IP地址,但不知道被請求主機的MAC地址,它就會來發送ARP請求。
但正好是因為ARP請求通常以廣播形式發送,所以我們便有了利用的契機。
相關的小工具
Ettercap
Ettercap is a comprehensive suite for man in the middle attacks. It features sniffing of live connections, content filtering on the fly and many other interesting tricks. It supports active and passive dissection of many protocols and includes many features for network and host analysis.(摘自Ettercap官網主頁)
EtTCAP是一個全面的套件,用於中間人攻擊。它的特點是嗅探實時連接、動態過濾內容和許多其他有趣的技巧。它支持對許多協議的主動和被動剖析,並且包括用於網絡和主機分析的許多特性。
不要問我為啥還要把英文翻譯一遍,因為這個小工具用着確實比較舒服,首先我這個人比較懶(貌似每個人都這樣子,僅個人意見),其次是因為簡單(有現成的傻瓜式操作的工具為什么不用)。
值得注意的是Arpspoof使用前得開啟“流量轉發”因為arp欺騙后,受害者的流量轉發到你的機子,你的機子又不會去處理這些數據包(不是我的東西干嘛要處理,對吧?),所以這會導致受害者上不了網,假如你在國企,你這樣就涼了。
【+】mac洪水攻擊
MAC地址存儲在內容可尋址存儲器(CAM)里面,CAM是一個128K大小的保留內存,專門用來存儲MAC地址,以便快速查詢。如果黑客向CAM發送大批數據包,快到在刷新時間內把CAM填滿,就會導致交換機開始向各個地方發送大批信息流,從而埋下了一顆隱形炸彈,甚至會導致交換機在拒絕服務攻擊中崩潰。
這個時候交換機跟HUB(集線器)也沒啥太大的區別了,於是我們可以得到交換機的某些信息。
用python簡單的編寫下腳本
我們使用scapy來編程
只要數據包里有指定的源ip和mac,交換機就會記錄下來,所以我們可以這樣干:隨機發送隨機mac和ip,然后一直發直到快過刷新時間。
使用randip函數生成ip
RandIP(“x.x.x.x”)
這樣就隨機生成了一個ip
再來生成個mac地址
RandMac()
接下來構造並發送數據包了(在這里其實我更推薦用go來寫,嘿嘿~)
循環發送一個虛假源ip到虛假目的ip的包(而且帶有mac地址)
#!/usr/bin/python Import sys Import scapy.all import * Iface = “網卡” While True: Payload = Ether(src = RandMac(), dst=RandMac()) //src為源mac,dst是目標的mac IP(src = RandIP(), dst=RandIP()) Icmp() //發送icmp包 Sendp(payload, iface,loop=0) //發送二層數據幀
(實驗環境有限,就不給出實際演示了,只是演示個思路~)
【+】vlan跳躍攻擊
虛擬局域網(VLAN)是一種對廣播域進行分段的方法。
VLAN還經常用於為網絡提供額外的安全,因為一個VLAN上的計算機無法與沒有明確訪問權的另一個VLAN上的用戶進行對話。
不過VLAN本身不足以保護環境的安全,惡意黑客通過VLAN跳躍攻擊,即使未經授權,也可以從一個VLAN跳到另一個VLAN。
VLAN跳躍攻擊(VLANhopping)依靠的是動態中繼協議
DTP(動態中繼協議)如果有兩個相互連接的交換機,DTP就能夠對兩者進行協商,確定它們要不要成為802.1Q中繼,而這個過程是通過檢查端口的配置狀態來完成的。
在VLAN跳躍攻擊中,黑客可以欺騙計算機,冒充成另一個交換機發送虛假的DTP協商消息,宣布它想成為中繼;真實的交換機收到這個DTP消息后,以為它應當啟用802.1Q中繼功能,而一旦中繼功能被啟用,通過所有VLAN的信息流就會發送到黑客的計算機上。
中繼建立起來后,黑客可以繼續探測信息流,也可以通過給幀添加802.1Q信息,指定想把攻擊流量發送給哪個VLAN
因為涉及到交換機配置,在錯綜復雜的內網世界,根本不知道到底是什么配置,所以僅僅一下思路
影分身之術
攻擊者位於VLAN10 中, ATTACK 在把FRAME經過一次標簽,即加入INNER ON VLAN20,到達第一個交換機時,第一個交換機與第二個交換機通過TRUNK 把FRAME發給第二個交換機,同時二次標簽為OUTTER ON VLAN10。當FRAME到達第二個交換機時,這時交換機要把接收到且經過自己標簽的FRAME發給具體的PC,這時第二個交換機會讀取內部標簽INNER ON VLAN20,這樣,通過HOOPING 技術就會不通過層三設備,而完成對不同的VLAN之間的訪問。對於這種類型的攻擊,根本原因是由於ATTACK處於的端口的模式為DYNAMIC DESIRABLE。也就是說,在數據幀里面有兩個“標簽”,過vlan的時候就要脫掉一個標簽,我們還有一個標簽,可以傳到別的vlan。這種技術可以發現網絡里面存在多少個vlan,可以把數據包傳到某台主機上面。
用python來貼出一段我自己參考資料后修改的代碼
#! /usr/bin/python From scapy.all import * Vlanhopping = Dot1Q(vlan = 1) #和下面的標簽,指定兩個標簽,一個是自身vlan,還有一個是我們想測試的vlan Dot1Q(vlan = 2) Ether(dst = ”目標mac地址”) IP(dst = “目標ip地址”) ICMP() #發送icmp包(ping) Sendp(packet) #發送二層數據幀
值得注意的是:此方法針對801.Q協議,實際物理端口隔離的vlan無效。
這種攻擊是因為ATTACK處於的端口模式為DYNAMICDESIRABLE
可做如下設置來修復:
switch(config)#interface-range type mod/port-port
switch(config-if)# switchport mode access
switch(config-if)# switchport access vlan vlan-id
第一篇到此結束啦~
未完待續!