0x00 前言
最近閑的沒事,抽空了解下地表最強的嗅探和收發包的工具:scapy,scapy是一個python模塊,使用簡單,并且能靈活地構造各種資料包,是進行網路安全審計的好幫手,
0x01 安裝
因為2020年python官方便不再支持python2,所以使用python3安裝,

0x02 構造資料包
在構造資料包之前首先匯入scapy模塊: from scapy.all import *
scapy構造資料包也非常簡單,例如使用 IP() 就可以創建一個默認的資料包,使用 ls(IP()) 可以查看IP資料包可以有哪些引數,

其他資料包同理

使用IP(dst="114.114.114.114") 來創建一個目的地址是 114.114.114.114 的資料包,再使用 ls() 可以看到資料包的目的地址已經修改,

也可以使用 show 方法來查看資料包資訊,

使用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也支持無線網卡的監聽模式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63485.html
標籤:其他
上一篇:總結一下自己暴躁的原因
下一篇:國密證書生成實踐
