Scapy 從入門到放棄

0x00 前言前端

最近閒的沒事,抽空了解下地表最強的嗅探和收發包的工具:scapy。scapy是一個python模塊,使用簡單,而且能靈活地構造各類數據包,是進行網絡安全審計的好幫手。python

0x01 安裝安全

由於2020年python官方便再也不支持python2,因此使用python3安裝。服務器

 0x02 構造數據包網絡

在構造數據包以前首先導入scapy模塊: from scapy.all import * tcp

scapy構造數據包也很是簡單,例如使用  IP()  就能夠建立一個默認的數據包。使用  ls(IP()) 能夠查看IP數據包能夠有哪些參數。函數

其餘數據包同理工具

 

 使用IP(dst="114.114.114.114") 來建立一個目的地址是 114.114.114.114 的數據包,再使用 ls() 能夠看到數據包的目的地址已經修改。3d

 也可使用 show 方法來查看數據包信息。blog

 使用summary()方法查看概要信息。

使用hexdump(pkt)開查看數據包的字節信息

 使用 '/' 操做符來給數據包加上一層。例如構造一個TCP數據包,在IP層指明數據包的目的地址。在TCP層能夠設定數據包的目的端口等等。UDP數據包同理。

數據包的目標端口能夠用範圍來表示,發送的時候就會發送dport 不一樣的多個數據包。

 若是設置了多個參數爲範圍的,最後發送的數據包就是笛卡爾積。

 0x03 發送數據包

發送數據包可能須要管理員權限,使用sudo python3 進入python便可。

構造完數據包,就能夠發送了。

scapy發送數據包有經常使用的以下幾種方法:

send(pkt)  發送三層數據包,但不會受到返回的結果。

sr(pkt)  發送三層數據包,返回兩個結果,分別是接收到響應的數據包和未收到響應的數據包。

sr1(pkt)  發送三層數據包,僅僅返回接收到響應的數據包。

sendp(pkt)  發送二層數據包。

srp(pkt)  發送二層數據包,並等待響應。

srp1(pkt)  發送第二層數據包,並返回響應的數據包

例如,使用sr發送一個數據包,ans爲響應的數據包,uans爲未響應的數據包。

 

0x04 應用

1)能夠構造數據包來實現一個簡單的SYN端口掃描,flags="S" 表示發送SYN數據包。

 

 能夠看到在發返回的數據包中,22,445,3389端口返回的flag位爲SA,表示這些端口是開放的。而RA表示reset ack, 說明這些端口是關閉的。

 2)實現一個基於TCP的traceroute

 

 3) 模擬TCP的三次握手

 

 最後能夠看到握手成功後,服務器返回信息中包含了當前端口開放的服務

 

 0x05 其餘

scapy 還能夠用來讀取網絡流量包或監聽網卡流量。

使用函數rdpcap("/abc/def/xxxx.pcap") 能夠讀取包的內容,再使用haslayer(TCP)或haslayer(ICMP)等等來判斷數據包的類型。

使用sniff(iface="wlan1",count=100,filter="tcp xxxx") 能夠監聽網卡流量,iface聲明監聽的網卡,filter是過濾條件,count是符合過濾條件的數據包的個數,達到指定的數據包個數後會中止監聽,不設count則沒有限制,按ctrl-c 結束監聽。

sniff也支持無線網卡的監聽模式。

相關文章
相關標籤/搜索