网络攻防技术——端口扫描
一、實驗題目
本次實驗主要對主機掃描和端口掃描原理的理解。使用python(scapy庫)編寫端口掃描程序,對目標IP(包含IP地址段)進行掃描,完成以下功能:
1)使用icmp協議探測主機是否開啟;
2)對本機(關閉防火墻)的開放端口和非開放端口完成半連接、ACK、FIN、Null、Xmas、windows掃描,并與nmap掃描結果進行比較。
3)對遠程(有防火墻)主機的開放端口和非開放端口完成半連接、ACK、FIN、Null、Xmas、windows掃描,并與2)進行比較,分析結果。
4)回答問題:樣例程序中“conf.L3socket=L3RawSocket”的作用是什么?
二、過程
1)首先仔細觀察demo代碼,將IP地址設置為本地地址127.0.0.1,端口號設置為開放端口號1900,運行后得到結果如圖:
使用icmp協議探測主機是否開啟。packet=IP(dst=str(ip))/ICMP()/b’rootkit’,構造包,由于ICMP協議需要IP協議傳輸,所以需要先構造IP協議。/b是發送的數據;ping=sr1(packet,timeout=1,verbose=False),發送三層數據包,并僅僅只等待接收一個數據包的響應,timeout定義超時的時間,如果超出時間范圍就說明該主機不存活或者其他原因沒有返回數據包,verbose如果不將該參數定義為False,那么屏幕將會打印一些不相關的字符串,定義為False之后,就可以print自己想看到的字符串。
2)對本機(關閉防火墻)的開放端口和非開放端口完成半連接、ACK、FIN、Null、Xmas、windows掃描,并與nmap掃描結果進行比較。
①半連接掃描,掃描者向目標主機發送一個SYN,如果目標主機回復了一個SYN/ACK數據包,那么說明主機存活,如果收到一個RST/ACK數據包,那么主機沒有存活。因為掃描者只向目標主機發送了SYN,并沒有和目標主機進行連接,因此稱為半連接。
開放端口掃描結果:
非開放端口掃描結果:
②ACK,設置flags位為ACK,不回復表示端口關閉或被過濾,如果回復的數據包TTL小于等于64表示端口開放,大于64端口關閉(windows)。
開放端口掃描結果:
非開放端口掃描結果:
③FIN,FIN掃描和NULL掃描類似,將標志位FIN置1,如果端口開放,則沒有反應,端口關閉,目標主機會發送RST。
④Null,設置flags位為空,不回復則表示端口開啟,回復并且回復的標志位為RS表示端口關閉
開放端口掃描結果:
非開放端口掃描結果:
⑥windows,通過設置flags為ACK,不回復表示端口關閉或被過濾
開放端口掃描結果:
非開放端口掃描結果:
結果分析:
從nmap的角度來看一個被掃描的端口可能處于3種狀態:開放,關閉和被過濾。 半開放掃描器發送一個SYN數據給TCP端口,希望獲得一個SYN/ACK數據包或者RST/ACK 。收到前者表示目標端口是開著的,收到后者表示是關著的。當然還存在第三種情況,那就是什么都沒獲得,這種情況只能說明數據包被過濾了,這個端口到底開著或者沒開,nmap也不知道。但是這種掃描方式不會完成3次握手,也就是它故意不返回ACK給已經響應了SYN/ACK數據包的開放端口。因此SYN掃描也稱為半開放掃描; FIN,XMAS,NULL 掃描的操作是基于同一個原理,就是當某個關閉端口突然收到一個沒有設置SYN,ACK或RST控制位的TCP數據包時,通常是一個RST去響應這個令人詫異的數據包,但如果是一個開放的端口,TCP將不做任何響應;TCP ACK掃描向每個被掃描的端口發送一個TCP ACK數據包。如果目標數據包發送出去有接收到RST(不是RST/ACK數據包)說明端口是開放或者關閉的,沒有回信表示被過濾了。ACK掃描的目的并不是確定某個端口是開著的還是關著的,它是為了確定一個端口是否被一個有狀態的防火墻過濾了。
3)對遠程(有防火墻)主機的開放端口和非開放端口完成半連接、ACK、FIN、Null、Xmas、windows掃描,并與2)進行比較,分析結果
①ping老師給的遠程主機,得到ip地址
①ACK掃描結果:回復的包TTL<64,說明端口開放。
未得到回復,端口關閉:
②FIN掃描:
標志位FIN置1,如果端口開放,則沒有反應。
端口關閉,目標主機會發送RST
③NULL掃描:
設置flags位為空,不回復則表示端口開啟:
回復并且回復的標志位為RA表示端口關閉。
④windows掃描:
設置flags位為ACK,不回復表示端口關閉或被過濾,如果回復的數據包TTL小于等于64表示端口開放:
無回復,端口關閉:
⑤xmas掃描:
設置flag位FPU,未回復表示端口開啟
回復RA表示端口關閉:
5)“conf.L3socket=L3RawSocket”的作用
設置“conf.L3socket=L3RawSocket”,就能通過Scapy發送數據包
總結
以上是生活随笔為你收集整理的网络攻防技术——端口扫描的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 密码学系列之二:密码学基本概念
- 下一篇: 扫描仪标准模板滑动采集图像及其处理