萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

Windows 區域網路 DNS ID 欺騙原理與實作 (一):ARP 欺騙為基、競爭回應為核心

DNS 協議結構與 ID 欺騙核心邏輯

DNS 使用 UDP 53 埠。查詢/回應靠 16-bit ID 欄位配對。客戶端發送查詢 (ID=x) → 伺服器回應 (ID=x) → 客戶端比對 ID 相符才接受。

攻擊條件:偽造 DNS 回應封包,ID 與查詢相符,**且比合法伺服器回應更早到達客戶端**。客戶端快取即被汙染,導向攻擊者指定 Web 伺服器。

關鍵資料結構 (C 語言)

typedef struct {
    unsigned short id;       // 識別碼
    unsigned short flags;    // QR, Opcode, AA, TC, RD, RA, Z, RCODE
    unsigned short quests;   // 問題數
    unsigned short answers;  // 資源記錄數
    unsigned short author;   // 授權記錄數
    unsigned short addition; // 額外記錄數
} DNS;

typedef struct { unsigned char *name; unsigned short type; unsigned short class; } QUERY;
typedef struct { unsigned short name; unsigned short type; unsigned short class; unsigned int ttl; unsigned short len; unsigned int addr; } RESPONSE;

攻擊流程 (搭配 ARP 欺騙)

  1. ARP 欺騙:攻擊者發送偽造 ARP 回應,將目標主機的預設閘道 MAC 映射為攻擊者 MAC,攔截所有外發封包。
  2. 嗅探 DNS 查詢:監聽網卡 (Promiscuous/混雜模式),捕獲目標發出的 DNS 查詢封包,提取 ID、查詢域名。
  3. 構造偽造回應:填入相同 ID、QR=1、RCODE=0、答案區填入攻擊者控制的 Web 伺服器 IP。
  4. 競速發送:在合法 DNS 伺服器回應前,將偽造回應封包發送給目標 (經由 ARP 欺騙已處於中間人位置)。
  5. 結果:目標快取汙染,後續瀏覽該域名皆導向攻擊者站點。

關鍵函數 (WinPcap/Packet.dll)

  • PacketOpenAdapter 開啟網卡
  • PacketSetHwFilter 設定混雜模式
  • PacketReceivePacket 接收封包
  • SendARP / GetAdaptersInfo 取得目標 MAC
  • PacketSendPacket 發送偽造 ARP/DNS 封包
  • 多執行緒:CreateThread 分別跑嗅探與 ARP 持續欺騙,WaitForMultipleObjects 等待結束。

失效場景與清除

  • IE 使用 Proxy:客戶端不直接發 DNS 查詢,攻擊失效。
  • 訪問子目錄頁面:攻擊者站點需鏡像完整目錄結構,否則 404 洩露。
  • 中毒後修復:停用/啟用區域連線 → 清除 DNS 快取 (ipconfig /flushdns)。
局域網共享介質本質決定了 ARP/DNS 欺騙易發。加密 (DNSSEC/DNSCrypt)、交換器 Port Security、DHCP Snooping、動態 ARP 檢測 (DAI) 為根治之道。
copyright © 萬盛學電腦網 all rights reserved