運用DNS繞過安全裝置的Oday.

墨者安全發表於2019-08-01

一、DNS介紹
DNS域名系統是網際網路關鍵的基礎設施之一,它是一個將域名與IP地址互相對映的全球分佈資料庫。對於惡意DNS的過濾、檢測惡意網站域名、殭屍網路和網路隱秘通道發現是安全防護裝置中必不可少的一種手段。
 


二、原理
RFC 1035規定了域名每個標籤不超過63位元組,域名總長不超過255位元組。可以含有任意8bit值,通常情況下域名標籤由英文字母、數字和連字元構成。RFC 2181進一步明確了,DNS本身不對域名所含字元內容進行限制。一些文獻中驗證了ISC BIND等常用DNS伺服器軟體對二進位制域名的支援。儘管在RFC1 123 之中對於DNS軟體支援無法轉換為可列印格式的資源記錄,內部儲存不能使用文字格式。由於Letter Digit Hyphen規則的域名含有可列印字元,如此產生了兩種問題,其一為大多數程式對於域名的處理採用字串函式,可能會對於某些特定結束字元進行處理(例如C語言中對於\000進行處理),其二DNS伺服器對於特殊字元進行處理後依然返回解析結果,某些程式過濾惡意DNS域名並未考慮。

三、測試方法
用PYTHON socketserver和struct開發簡單的DNS伺服器進行測試,再使用DNSPython模組作為DNS請求的測試。在對DNS伺服器測試時,我們向被測的伺服器傳送正常的或者帶有特殊字元的DNS兩種請求方式,如果DNS伺服器兩種資料包文傳輸的請求結果存在區別則證明其二失敗,否則成功。


四、危害
1.隱藏惡意軟體域名:
透過該方法可繞過基於DNS流量檢測的流量分析軟體、演算法和相關安全裝置及線上檔案分析系統,透過構造加入特殊字元的DNS請求,既保證了域名成功解析,又保護了惡意域名難以被發現。
2.隱藏DNS隱蔽通道
將偽造源地址的方法與本文域名欺騙方法結合,可以起到更好的DNS隧道流量隱蔽效果,透過偽造源地址來分散DNS隧道流量,對內網資料洩密和遠端控制隧道加入了新的挑戰。
3.繞過DNS過濾
利用這個方法進行DNS過濾裝置的穿透具有一定的可行性,目前已發現大量帶有域名過濾的安全裝置.存在被繞過的風險。
 

五、修復
所謂有攻就有防,透過DNSPython修復,在dns記錄中,加入過濾異常的特殊字元。 同時在安全裝置中擴大過濾DNS請求特殊字元的範圍。
 
本文章轉自安全大咖vr_system分享的原創文章,經作者授權同意後墨者安全轉載來的,如有任何版權或者內容錯誤問題,請聯絡小編刪除,謝謝!僅供安全愛好者研究學習,對用於非法途徑的行為,釋出者及作者不承擔任何責任。
 
 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69925937/viewspace-2652487/,如需轉載,請註明出處,否則將追究法律責任。

相關文章