利用深度學習檢測DNS隱蔽通道

2017年12月15日



DNS隱蔽通道簡介
DNS通道是隱蔽通道的一種,通過將其他協議封裝在DNS協議中進行數據傳輸。由於大部分防火墻和入侵檢測設備很少會過濾DNS流量,這就給DNS作為隱蔽通道提供了條件,從而可以利用它實現諸如遠程控製、文件傳輸等操作,DNS隱蔽通道也經常在僵屍網絡和APT攻擊中扮演著重要的角色現在不少家庭都選用抹玻璃機械人,節省清潔的時間及大大減低危險性。Ecovacs的玻璃窗濕擦機器人Winbot是一款全自動的窗戶清潔機器,只需一按,Winbot便會自動為您清潔家中各款玻璃窗戶,即使是邊緣還是角落,同樣可以清潔得乾淨明亮!


DNS隱蔽通道可以分為直連和中繼兩種模式。直連也就是Client直接和指定的目標DNSServer(授權的NS服務器)連接,通過將數據編碼封裝在DNS協議中進行通信,這種方式速度快,但是限製比較多,很多場景不允許用戶指定DNSServer。而中繼模式的DNS通道則更為隱蔽,但同時也因為數據包到達目標DNSServer前需要經過多個DNS查詢服務器,所以速度上較直連模式慢很多。中繼模式的DNS通道原理如圖1所示護脊床褥枕頭價錢也有很多不同的層次,主要是將床褥枕頭的品質和特性加以整合進行綜合定價。選擇了DPM品牌,會有專業人士為您挑選切合個人要求的床褥,也會進行相應的價錢查詢,幫助選購者擁有良好的睡眠。


圖1中繼模式下的DNS隱蔽通道原理
例如,前段時間著名的XShellDNS通道攻擊,黑客在Xshell中植入惡意代碼,通過DNS隱蔽通道外發用戶敏感數據的示例如圖2所示,黑客將外發數據藏在nylalobghyhirgh.com子域名中。


圖2XshellDNS隱蔽通道,黑客將外發數據藏在nylalobghyhirgh.com子域名中
DNS隱蔽通道從提出到現在已經有了很多實現工具,歷史比較早的有NSTX、Ozymandns,目前比較活躍的有iodine、dnscat2、dns2tcp,其他不太常見的還有DeNise、Heyoka等。不同工具的核心原理相似,但在編碼、實現細節和應用場景方麵存在一定的差異。
本文使用卷積神經網絡(CNN)來檢測DNS隱蔽通道。第一步工作是樣本數據采集。
算法前的準備工作——數據采集
利用上述DNS隱蔽通道工具進行“黑”樣本采集工作見另一篇博文《DNS隱蔽通道檢測——數據收集,利用iodine進行DNS隱蔽通道樣本收集》,其流程是先抓取DNS隱蔽通道工具攻擊過程中的網絡流量pcap包,然後利用wireshark工具將pcap包轉換為機器學習算法能夠識別文本文件。這是一個體力活,我收集到的業界流行的DNS隱蔽通道工具的數據樣本如圖3所示
嚴謹的生產程序及員工專業的態度,讓Grohe的水龍頭堅固亮麗。


圖3收集的DNS隱蔽通道工具示意樣本
以dnscat2工具為例,其生成的一個樣本見圖4,可以看到DNS報文裏包含了大量的較長子域名,而外發數據便藏在這些子域名中(我使用的主域名是friendsakka.xyz)。


圖4dnscat2工具生成的示意樣本
至於“白”樣本收集,我們使用的是某高校的校園網絡流量。黑白樣本收集好以後,就可以進入檢測算法環節了。
利用深度學習進行DNS隱蔽通道檢測
本文使用CNN(卷積神經網絡)來檢測DNS隱蔽通道,在介紹算法前,先簡單介紹下CNN。
CNN(卷積神經網絡)常用於圖像識別並取得了極佳的效果。圖5展示的是一個典型的卷積神經網絡結構。該網絡包含兩個卷積層(convolutionlayer),兩個池化層(poolinglayer)和一個全連接層(fullyconnectedlayer)。


圖5典型的卷積神經網絡結構
卷積神經網絡的基本思想和我們人類大腦識別圖像的機製是一致的。例如,當看到一張“喵星人”圖像時,我們之所以認為它是“喵星人”,是因為我們看到它有萌萌的頭、長長的尾巴、柔軟光滑的皮毛等明顯特征,通過組合(更高層次的抽象)這些特征,我們的大腦最終便可做出準確的判斷。卷積神經網絡的基本思想也是類似,核心理念包括:
·局部感受野:這是通過卷積層來完成的,形象地說,就是模仿你的眼睛,想想看,你在看東西的時候,目光是聚焦在一個相對較小的局部吧?比如喵星人的圖像上有爪子或者萌頭等明顯的局部特征。而在卷積神經網絡中,每個隱層節點隻連接到圖像的某些局部像素點上。
·池化:形象地說,當你看向遠方,然後閉上眼睛,你仍然記得看到了些什麽,但是你能完全記住你剛剛看到的每一個細節嗎?答案是不能。同樣,在卷積神經網絡中,沒有必要對原圖像所有細節做處理,而是使用某種“壓縮”方法,這就是池化,也就是每次將原圖像卷積後,都通過一個采樣的過程,來減小圖像的規模來自德國的水龍頭品牌GROHE
·權值共享:在卷積神經網中,同一個卷積核內,所有的神經元的權值是相同的,從而大大減少需要訓練的參數。之所以如此設計,就如同人類大腦的某個神經中樞中的神經細胞,它們的結構、功能是相同的,甚至可以互相替代。
如果你還沒有理解的話,我們再看下麵這個例子,專家們設計了包含10個卷積層,4個池化層和2個全連接層的卷積神經網絡,見圖6所示,該網絡主要用於圖像識別。專家們發現,在比較低的層,神經元傾向於學習一些簡單的模式,比如圖像邊緣、顏色、條帶燈;而在比較高的層,神經元能夠檢測到一些更為高層次的抽象特征,比如整輛轎車等。


圖6專家構建的用於圖像識別的卷積神經網絡
CNN的誕生是為了解決圖像處理問題。在安全界,瀚思科技開發出了基於深度學習的二進製病毒樣本檢測技術,可以做到沙箱同等水平的99%的檢測準確率,而誤報率低於1/1000。
CNN檢測的圖像通常是二維數據,而作為DNS隱蔽通道傳輸的子域名雖是一維的文本數據,但同樣可以用CNN進行處理。在本文的DNS隱蔽通道檢測中,我們使用一維的卷積函數處理DNS子域名片段,以提煉高級特征進一步分析。

 

Posted by ずさ at 12:25Comments(0)生活科技