連接網絡設備時,一般都會在網絡設備端選取0-65535之間的一個端口進行連接,端口掃描是指:檢查網絡設備上0-65535號端口哪些端口是開啟狀態。如果黑客掃描到某網絡設備的80端口是開啟狀態,那么很有可能是web服務,此時黑客會使用一些手段攻擊web服務器,這樣一來,端口掃描會增加服務器的安全負擔,因此一般網絡都會阻止端口掃描。當然端口掃描對於防御性滲透測試也非常有用。我們可以掃描自己的系統來確定哪些服務暴露給了網絡,這樣我們就能有針對性的對系統的配置進行檢查。本節屬於解釋的是端口掃描的原理。
一、TCP掃描
使用socket創建套接字,利用三次握手協議來判斷目標端口是否存活。
原理:
1、掃描端向目標端發送SYN請求建立連接 2、目標端收到請求后,回復ACK同意連接並同意發送SYN請求建立連接 3、掃描端收到后,發送ACK同意,此時三次握手完成,以此來判斷端口是否存活
TCP掃描的python實現過程
importtime importsocket out_time=1 deftcp_scan(ip,port): try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #建立socket連接,TCP協議 s.settimeout(out_time) #設置超時時間 c=s.connect_ex((ip,port)) #與目標端建立連接,成功但會 0 ifc==0: print("%s:%sopen!"%(ip,port)) exceptExceptionase: print(e) s.close() s_time=time.time() ip="10.32.1.238" #目標機ip foriinrange(20,50): #掃描端口的范圍 tcp_scan(ip,i) e_time=time.time() print(e_time-s_time)
二、SYN掃描
為針對TCP掃描,目前有種防御方式:若發現網絡中的某台設備進行了端口掃描,會將其加入黑名單。實現這種防御的原理是:每次TCP連接后會將信息記錄到日志中,當發現某IP多次連接設備的不同端口,就可以判斷是TCP掃描,此時就可以將此IP加入黑名單。
為避免被TCP掃描抓到,誕生了SYN掃描,原理同樣是利用了TCP三次握手。
原理:
1、掃描端向目標端發送SYN請求建立連接 2、目標端收到請求后,回復ACK同意連接並同意發送SYN請求建立連接 3、掃描端收到后,發送RST拒絕建立連接。
與TCP掃描不用的是,當掃描端收到ACK/SYN應答時,發送了一條拒絕建立連接的RST請求,此時三次握手建立失敗,因此目標端就不會將其記錄在日志中,但同時也掃描到了端口信息。與TCP掃描相比更加隱蔽。
三、掃描工具
被稱為掃描之王的nmap工具是一款極強的端口掃描工具,支持linux和windows系統,具體優勢如下:
1、多種多樣的參數,豐富的腳本庫,滿足用戶的個人定制需求,其中腳本庫還提供了很多強大的功能任你選擇
2、強大的可移植性,基本上能在所有的主流系統上運行,而且代碼是開源的
3、詳細的文檔說明,和強大的社區團隊進行支持,方面新人上手
使用方法可參考:https://www.cnblogs.com/nmap/p/6232207.html