DNS是網絡應用中一個非常重要的基礎協議,它将長串的不适合記憶的ip地址映射成可讀性較強的字符域名。由于DNS應用的特殊性,DNS所使用的應用端口(53端口)幾乎總是在防火牆策略中予以放行,被允許出站連接到互聯網,這讓攻擊者可以利用DNS應用中的這個"漏洞"構造木馬程序,建立一個非常難以限制的隐蔽命令控制信道,實現攻擊機與一個相對封閉網絡中的設備進行交互。
如上圖中,UserA 和User B由于防火牆D的規則限制無法訪問外網,但防火牆上對于DNS的流量是放行的。當User A需要解析的域名Local DNS Server無法給出回答時,Local DNS Server就會采用叠代查詢通過互聯網定位到所查詢域的權威DNS Server,形成一個邏輯信道。所以,惡意程序将通信的數據封裝在客戶端DNS查詢的請求數據包中,當數據包最終到達攻擊者控制的權威DNS Server時,再從請求數據包中解析出數據,并将反向返回的數據封裝在DNS Response中,返回給User A,從而實現失陷主機與C&C Server間的通信。攻擊者利用dns隧道實施攻擊行為可以充分發揮dns的隐蔽性,繞過防禦(如禁止外聯)、躲避流量檢測(如特征碼檢測)、躲避ioc檢測(如外聯惡意ip、惡意域名)。
DNS主要編碼方式
個人架設DNS隧道目前有很多實現工具,比如iodine,dnscat2、DeNise,dns2tcp,Heyoka、dnsshell、OzymanDNS等等。DNS 隧道通信一般常用的編碼方式有Base64編碼,Binary編碼,Hex編碼等,請求的Type一般采用txt類型。後門木馬中比如QQ粘蟲、ALMA Communicator木馬等多種惡意軟件實例都通過DNS隧道技術實現控制指令的下發和敏感數據的提取。
發現和防範DNS隧道攻擊首先需要檢測異常DNS流量,通過監控DNS服務器日志或使用工具監控網絡數據包情況,跟蹤網内主機的DNS查詢數量情況,超過阈值的可能就是問題主機;同時對網絡内的主機被允許訪問的DNS服務器進行限制,以及限定能夠發起DNS TXT解析請求的主機範圍,控制傳入和傳出流量中的TXT請求,提高攻擊者的信道部署代價。
(本文中部分素材來源于網絡,若有偏頗/版權問題,請聯系我們删除,謝謝!)
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!