0x01 引言
- 域名系統(DNS, domain name system)是一種將域名和 IP 地址相互映射的以層次結構分布的分布式數據庫系統,也是互聯網上普遍存在的基礎解析服務。防火牆等基礎防御設施為了保證用戶體驗一般不會對 DNS 數據進行過多過濾,使其成為攻擊者手中較理想的秘密信道。
- 互聯網名稱與數字地址分配機構(ICANN, Internet Corporation for Assigned Names and Number)將其命名為 DNS 隱蔽信道(DCC, DNS covert channel)。DCC 是指利用 DNS 數據包中的可定義字段秘密傳遞信息的通道。
- DCC 是指利用 DNS 數據包中的可定義字段秘密傳遞信息的通道。其中,“DNS 協議”是目前網絡上使用的標准域名解析協議;“可定義字段”是DNS 數據包中的 QNAME 字段、RDATA 字段及RawUDP 字段。利用 DNS 數據包可以構建 2 種信道:存儲信道及時間信道。由於時間信道可傳輸信息較少且對應的工具及惡意軟件很少,故主要研究存儲信道的利用情況。
- DCC 可以被用於數據泄露、命令控制(C&C, command & control)及繞過 Wi-Fi連接注冊等惡意行為,進而可以用於遠控木馬(RAT, remote access trojan)、僵屍網絡(Botnet)、勒索軟件(Ransomeware)、高級持續性威脅(APT, advanced persistent threat)等絕大多數網絡攻擊。
- 在金融領域,活躍在該領域中的銷售點(POS, point of sale)惡意軟件(如AlinaPOS)經常利用 DNS 查詢請求來泄露信息;在醫療領域 , SentinelLabs及 Unit42報 道 稱Trickbot 開 發 人 員 在 其 惡 意 軟 件 中 新 增 了Anchor_DNS 模塊,在針對美國醫療系統的攻擊中利用該模塊使用 DCC 進行 C&C。
0x02 DCC威脅模型與發展
2.1 威脅模型
DCC 分為 2 種類型,若受害設備通過 IP 地址直接與惡意權威名稱服務器(MANS, malicious authoritative name server)相連,則稱所構成的信道為直連信道,這種情況下一般使用 RawUDP 字段傳輸信息;若受害設備通過本地默認解析連接到 MANS,則稱所構成的信道為中繼信道,這種情況下一般使用 QNAME 字段及RDATA 字段傳輸信息。前者較為簡單
2.1.1 C&C
普通防火牆等基礎防御設施一般不對 DNS 進行過多過濾,使 DCC 成為具有一定隱蔽性、穿透性的 C&C 信道,可以實現受害設備與遠程攻擊者搭建的 MANS 的雙向交互,如圖 1 所示。受害設備向 MANS 請求控制命令,MANS 收到后,將欲下發的命令進行處理,利用 DNS 響應向受害設備發出命令,受害設備解碼獲得命令並執行。
2.1.2 數據泄露
攻擊者會利用 DNS 查詢請求將待傳送數據如敏感信息、文件等傳送到其搭建的MANS。由於大部分安全基礎設施都更加關注來自外部網絡的攻擊,因此這種攻擊需要主動監測內部流出流量才能發現,使數據泄露的全過程更隱蔽。受害設備向攻擊者搭建的 MANS 發出請求,利用請求來泄露信息
2.2 發展歷程
第一階段(1998 年—2010 年)
探索運用階段
對 DCC 的最初運用由隧道協議、傳輸文件開始,其本質為利用 DNS數據包進行數據的秘密傳輸。
- 1998 年,Pearson首次描述了DNS隧道的基本情況,實現了利用DNS數據包進行的客戶端與服務器間的簡單通信;
- 2002 年,由 Szerb完成的第一個較流行的隧道工具 NSTX 使 IP over DNS 成為可能,但其正常運行需要創建一個虛擬網絡設備(VDN, virtual network device),並且只能運行在 Linux 系統上
- 2004 年,在 Black Hat 大會上,Kaminsky演示了其編寫的OzymanDNS 工具,該工具可以利用 DNS 傳輸文件,也可以封裝 SSH 隧道(SSH over DNS);
- 2008 年,Miller提出了旨在利用 DNS 做 C&C 的 Reverse DNS,其將 shellcode 代碼放入 DNS 響應的 TXT 資源記錄中,受害設備收到響應並執行后可以主動與服務器建立連接
- 2009 年,Revelli在信道容量上進行了進一步思考提出了 Heyoka,指出許多 DNS接受域名標簽中的二進制數據,利用二進制編碼可以將帶寬從每字符 5 位增加到每字符 8 位。同時提出可以使用 EDNS0,TXT 響應最多可存儲 1024 B;
- 2010 年,Born在 Black Hat 上提出 PSUDP,使用 UDP 增加信道帶寬,指出可以在 DNS 消息末尾注入數據而不會影響 DNS 服務器解析,從而增加了信道帶寬。
這一階段初步實現了利用 DNS 數據包對數據的傳輸功能,擴寬了信道容量,但也為惡意活動提供了良好的技術基礎。
知識點
- IP over DNS: IP-over-DNS 隧道(或更常見的名稱 DNS 隧道)是一種攻擊,它允許繞過通常的網絡保護並通過 DNS 協議發送/接收數據,這種協議往往很少受到檢查。它的缺點是設置有點復雜,速度很慢,因為所有數據都在DNS請求中發送,這限制了單個數據包的數量並且需要發送更多數據包。通過DNS(UDP端口53)隧道傳輸
- SSH over DNS:原理類似IoD Tunnelling
第二階段(2011 年—2013 年)
惡意利用階段
- 2011 年,Dietrich等分析了第一個基於 DCC 的僵屍網絡 Feederbot,發現其 TXT 應答數據消息塊中使用 RC4 流密碼加密(利用 DNS 查詢來傳輸密鑰派生參數),同時使用循環冗余校驗保證數據完整性
- 卡巴斯基實驗室發現利用 DNS 進行 C&C 的蠕蟲 W32.Morto,其只請求 TXT 記錄,解密后得到 IP 地址進而下載文件執行
- 美國能源局發布白皮書表示可以通過DNS 查詢請求泄露機密信息且難以對其進行檢測
- 2013 年,Xu 等論證了使用 DCC 作為僵屍網絡C&C 通道的可行性,描述並定量分析了包搭載查詢、指數分布等查詢策略,這些策略可用於在網絡級別有效隱藏惡意 DNS 活動,並指出 DNS 是一個極有效的 C&C 信道。
第三階段(2014年至今)
組織化攻擊階段
- 2014 年,APT組織 FIN6 的 FrameworkPOS使用 DNS 請求泄露了 5 、600 萬張借記卡/信用卡信息,在 DNS 查詢中編碼了 IP 地址、主機名、進程名等字段
- 2016 年,Wekby(APT18)的 Pisloader使用 DNS 協議做C&C 信道發起攻擊
- 2017 年,OilRig(APT34)開發人員對 Helminth不同變體的子域首字符進行更改,進而躲避檢測,其依賴 DNS 請求獲得具有指令含義的 IP 地址(A 記錄)應答,將欲傳送的竊密文件使用 DNS 查詢請求分塊傳送
- 2018 年,OilRig 將 QUADAGENT 用於定向攻擊,初次握手時受害設備會得到 C&C 服務器提供的會話標識符和預共享密鑰,並將其保存到注冊表,不必每次通信都進行握手
- 2019 年,Lab Dookhtegan Telegram Chanel 中泄露了關於 APT34 的攻擊工具,其中Glimpse可以利用 DNS 傳輸指定目錄下的文件
- 2020 年,QuoIntelligence 發現 WINNT(IAPT41)組織自定義 Iodine 針對德國化工企業,其 DNS 查詢使用 Base128 編碼。
- OilR ig 利用 RDAT[10]針對中東電信組織,與其之前樣本相比,該樣本僅使用 DNS進行 C&C 通信而無 HTTP 備用信道。
- Black Lotus Labs 發現 Alina POS 編碼信用卡信息使用 DNS 查詢泄露,指出 DNS 經常不受監控,同時,為了確保在搜索設備的 RAM 時准確找到信用卡數據,該惡意軟件引入了 Luhn 校驗和算法。
知識點
Luhn算法:檢驗數字算法(Luhn Check Digit Algorithm),也叫做模數10公式,是一種簡單的算法,用於驗證銀行卡、信用卡號碼的有效性的算法。對所有大型信用卡公司發行的信用卡都起作用,這些公司包括美國Express、護照、萬事達卡、Discover和用餐者俱樂部等。這種算法最初是在20世紀60年代由一組數學家制定,現在Luhn檢驗數字算法屬於大眾,任何人都可以使用它。
算法:將每個奇數加倍和使它變為單個的數字,如果必要的話通過減去9和在每個偶數上加上這些值。如果此卡要有效,那么,結果必須是10的倍數。
0x03 DCC構建機理
3.1 DCC定義
3.1.1 定義1
1)VictimMachine
-
VictimMachine 指的是感染了 DCC 惡意軟件進而可利用 DNS 數據包傳輸數據的受害設備集合,受害設備種類可以是 PC、服務器、智能手機、物聯網(IoT, Internet of things)設備等一切當前已存在的、未來可能出現的、具備計算能力和通信能力並可發起 DNS查詢請求的設備 ,記為:
-
\[VictimMachine=\{DCCMalware, S, ACTIVITY\} \]
-
-
DCCMalware表 示運行在受害設備上的惡意程序集合 , 記為:
-
\[DCCMalware=\{dccmalware_{1},dccmalware_{2},\cdot\cdot\cdot,dccmalware_{n}\} \]
-
其中 dccmalware1表示運行在 VictimMachine上的惡意程序, n表示受害設備的規模。
-
-
S表示 DCCMalware 的狀態集合,記為:
-
\[S=\{S_{1},S_{2},S_{3},\cdot\cdot\cdot,S_{n}\} \]
-
-
ACTIVITY 表示 DCCMalware 的動作集合,記為:
-
\[ACTIVITY= \{SendData,ReceiveData,ReadData,ProcessData,\cdot\cdot\cdot\} \]
-
2)DDP(definable DNS packet)
-
DDP(definable DNS packet)指的是可定義的 DNS 數據包,記為:
-
\[DDP=\{QNAME,RDATA,RawUDP\} \]
-
-
QNAME表示將待傳送信息進行處理后嵌入DNS 查詢區域的 QNAME 字段中,可以包含編碼后的待傳送數據、編碼方法、序列號等及其各種組合方式。
-
RDATA 表示將命令/信息進行處理后嵌入 DNS響應區域的 RDATA 字段中。
-
RawU DP 表示將數據處理后嵌入 DNS 分組載荷結束與 UDP 分組載荷結束為止的空間中(需構造 DNS 查詢包)
3) CMD
-
CMD 表示 DCCMalware 可執行的控制命令集合(DCCMalware可以從RDATA 字段中提取控制命令或其本身硬編碼控制命令), 記為:
-
\[CMD=\{rdata-derived\ cmd,hard-coded\ cmd\} \]
-
4) POLICY
-
POLICY 表示保證數據高效可靠傳輸的策略,記為:
-
\[POLICY=\{encode,encryption,CRC,query\ structure,time\ interval,\cdot\cdot\cdot\} \]
-
5) MANS
- MANS 表示惡意權威名稱服務器。攻擊者搭建的權威名稱服務器用來托管惡意域名的名稱解析,實現與受害設備集群的通信。
6) ContentType
- ConnectionType 表示連接類型,指的是受害設備與 MANS 的連接類型。中繼信道是指受害設備通過本地默認解析連接到 MANS;直連信道是指受害設備與 MANS 通過 IP 地址直接連接。
7) delta
delta表示轉換函數,反映了惡意程序收到命令后產生的相應動作及狀態變遷,記為delta:
3.2 構建機理
攻擊者通過一定手段使 VictimMachine 感染DCCMalware 后與其控制的 MANS 進行信息交互,通過 POLICY 定制的傳輸策略,將信息嵌入 DDP傳輸,建立起攻擊者與受控設備可靠、隱蔽的通信橋梁。VictimMachine 可以通過該信道向 MANS 泄露信息,MANS 可以通過該信道向 VictimMachine發送控制命令,進而使攻擊者獲取敏感信息/控制設備的活動狀態。
- 通過對 DNS 協議的分析發現,查詢區域中除QNAME 字段外,其他字段內容特定或可變動字符極少/一般不被惡意軟件利用,故 QNAME 字段為該區域待傳送信息嵌入的最佳位置;
- 應答區域中RDATA 字段為該區域信息嵌入的最佳位置。
- 對DNS 數據包進行分析發現,DNS 頭中不包含資源記錄或包總長度信息,解析器依賴報頭中指定的資源記錄數量確定解析數據,最后一條解析完成就認為到達了末尾。因此,可在 DNS 數據包末尾添加任意數量的數據,RawU DP 為信息嵌入的最佳位置。
3.2.1 基於 QNAME 嵌入的數據回傳
- 將待傳輸數據嵌入 DNS 協議查詢區域的QNAME 字段中,可以將數據根據 POLICY 處理后嵌入。
- QNAME 字段規范,具有標簽,標簽間由句點間隔。
- 每個標簽的最大長度為63 個字符,由字母、數字、連字符組成,且必須以字母或數字開頭、結尾。QNAME 的最大長度為253 個字符。
- 受害設備將數據編碼后嵌入,可以使用 Base64、Base32、Base16 及二進制、十六進制等方式進行編碼,也可以使用 XOR、AES 等方式進行加密。
以APT34為例
- Helminth:其 DNS 查詢格式為 00 <系統標識符> <文件名字符> <序列號> <Base36 編碼的、小於 46 655 的隨機數> <十六進制數據>.<MANS 域名>
- 其使用特制域名進行信息傳輸,域名中包含系統標識符、文件名字符、分塊序號、隨機數、編碼數據內容,利用請求將其引至 MANS 進行解析,從而將數據傳輸至 MANS,最終到達攻擊者手中。
- Glimpse:該組件中的一種 DNS 查詢格式為<GUID><數據包標識><操作類型字符><隨機字符>C<數據包標識偏移量><操作類型偏移量>T.<傳輸內容>.<文件名稱>.<MANS 域名>
- 查詢域名中第一個標簽為查詢結構字串,用來確定數據包分片序號及 C&C 服務器操作類型;第二個標簽主要用來嵌入處理后的數據;第三個標簽主要用來指示所屬文件名稱。
- 對該組織涉及的其他惡意軟件 DNS 查詢情況進行統計得到表 1,可以發現每種惡意軟件具備獨有的子域名構成方法,子域名中不僅包括編碼后的數據,還包括一些序列號、隨機數等輔助字串。
- 同時,域名“go0gie.com”與“google.com”較類似
- 編碼方式主要集中在 Base64、Base32 及 Hex編碼 3 種
- 每種惡意軟件采用一種或幾種固定的子域名結構來傳送數據,一般包含輔助傳輸字串;可以一次傳遞一位字串,也可以傳輸較多信息。當數據較大時,可分塊傳送。
3.2.2 基於 RDATA 嵌入的命令獲取
將待傳輸數據嵌入 DNS 協議應答區域的RDATA 字段中,根據請求確定響應資源記錄類型(A/TXT/AAAA 等)。嵌入數據需要符合對應資源記錄的格式規范,可以將數據根據 POLICY 處理后嵌入。
- 例如,A 記錄用來指定主機名對應的 IP 地址,只能使用 IP 地址;TXT 記錄為域名設置說明,可使用文本信息,單個 TXT 記錄不超過 255 B(不同服務商的實際限制會有所區別)。此外,還有CNAME 記錄、NULL 記錄、MX 記錄等,這里不做贅述。
- 受害設備接收識別 DNS 響應包,從 RDATA字段中按照對應的 POLICY 提取並恢復控制命令,得到 rdata-derived cmd。DCCMalware 根據 rdata-derived cmd 通過delta 產生相應動作及狀態變遷。
以APT34為例
- Helminth:由於該樣本請求 A 記錄,DNS 應答格式為 IP 地址。其響應33.33.x.x 表示為提供腳本文件名,指示惡意軟件開始下載數據以保存到批處理腳本;33.33.33.33 指示惡意軟件停止下載數據並執行下載的批處理腳本。真實案例響應情況如圖 7 所示,33.33.97.97 中 97.97 指的是創建一個名為aa.bat 的文件,數字97 表示“a”的ASCII字符,可以利用這樣的字符轉換來傳遞信息及指令。
- Glimpse:通過查詢子域名 000564b81fdbDe0000A2C09T. fengrou2019.club 的 TXT 記錄發現,Glimpse 使用Base64 將命令編碼在應答 TXT 記錄中,TXT 記錄中 d2hvYW1pJmlwY29uZmlnIC9hbGw=解碼后為“whoami&ipconfig /all”
惡意軟件應答字段記錄類型一般為 A、TXT、AAAA 記錄等
工具應答字段記錄類型一般為 TXT、CNAME、NULL 記錄,以獲得更大的帶寬,傳遞更多信息,可運行在 Linux及 Windows 等主流操作系統上
3.2.3 兩者關系
基於 QNAME 嵌入的數據回傳與基於 RDATA嵌入的命令獲取兩者有一定關系但並不相同,前者主要利用查詢泄露數據,后者主要利用應答獲取命令
- QNAME:基於QNAME嵌入的數據回傳主要為將處理后的數據利用 DNS 查詢的 QNAME 字段進行泄露,對應的 DNS 響應一般為固定或連續的 IP 地址應答
- 例如,xHunt 的應答 IP 相同,Glimpse 的應答 IP 呈現遞增趨勢,避免產生大量 NXDOMAIN過於異常的情況。
- RDATA:基於 RDATA 嵌入的命令獲取主要為將處理后的數據利用 DNS 響應的 RDATA 字段進行傳輸,進而使受害設備可以通過響應獲取命令,與響應對應的查詢本身不用來泄露過多數據,而是一種獲取命令的請求方式
- 如圖 8 所示,000564b81fdbDe0000A2C09T.fengrou2019.club,其中“000564b81f dbDe”為 GUID,“0000A2”為隨機字符,“C”為固定位,“0”為數據包表示偏移量,“9”為操作類型偏移量,“T”為固定位。
3.3 DCC的高效可靠通信策略
為了保證數據可以從受害設備完整、隱秘地傳輸到 MANS 上,保證命令成功下達到受害設備上,成功竊取需要的數據/獲得有效的命令,攻擊者在傳輸過程中使用 POLICY 來保障信息的可靠傳輸。
3.3.1 CRC
- 加入輔助傳輸字串 / 使用循環冗余校驗(CRC, cyclic redundancy check)機制,保證傳輸數據完整性。
- 由於 DNS 協議一般封裝在 UDP 數據包中傳輸,UDP 只提供數據的不可靠傳輸[42]。服務器可能收到其他 DNS 查詢請求或網絡時延造成數據無法按正常順序傳輸等情況,導致數據丟失/亂序,進而恢復失敗。
- 為避免此現象發生和信息失效,攻擊者通常會在子域名中引入輔助傳輸字串。子域名構成時可以加入一些如序列號、序列總數、文件名等輔助傳輸字串來保證可靠通信。
- 在接收端,識別構造結構,按照對應的方式進行處理,得到最終的傳輸信息;同時,攻擊者也會在應答中引入 CRC 機制等來保證命令/信息傳遞的完整性。例如Feederbot就引入了CRC32保證僵屍網絡命令的完整傳輸。
3.3.2 編碼/密碼
- 在子域名/應答資源記錄嵌入過程中,引入編碼/加密機制,保護數據機密性。
- 從受害設備中獲取並利用 DNS 查詢傳遞的信息可能為設備本身信息或敏感信息等,為了使數據隱秘傳輸/不被感知,這類信息一般不在網絡上明文傳輸。攻擊者引入編碼技術,對待傳送的信息進行編碼后嵌入,再逐一傳送。
- 攻擊者欲竊取內容,通常不能完全符合 DNS 域名的語法規定,需要對目標內容執行編碼轉換,使轉換后的內容基本符合 DNS 協議規范。
- 在數據保密性要求較高的場景下,可以引入AES等加密算法,對傳輸的數據進行加密。但在傳送之初,雙方要協商好通信密鑰,以便在接收端可以順利解密出信息。
0x04 DCC的檢測方法
4.1 異常點
目前主要的檢測方向是針對DDP 及請求應答情況的異常進行分析。將異常特征概括歸為單域名異常及多域名統計異常 2 類
4.1.1 單域名異常
異常點可以反映在基礎特征、可讀性特征、結構性特征 3 個方面
1) 基礎特征
- DNS 數據包長度/UDP 長度
- 攻擊者為了傳輸信息,可能會在 DNS 分組載荷結束與 UDP 分組載荷結束之間嵌入數據,造成與正常 DNS 數據包的差異。
- 例:Iodine 具備直連模式,當發現可以與 MANS通過 IP 地址直接連接時,就會切換到該模式,在DNS 分組載荷結束與 UDP 分組載荷結束之間嵌入數據,使用 RawU DP 進行通信。
- 攻擊者為了傳輸信息,可能會在 DNS 分組載荷結束與 UDP 分組載荷結束之間嵌入數據,造成與正常 DNS 數據包的差異。
- 子域名長度
- 攻擊者將待泄露數據處理后嵌入查詢中的QNAME 字段傳輸,會嘗試在子域名中放入盡可能多的數據來獲得更高的帶寬,導致與正常子域名在長度上的差異性 。
- 子域名數字數量/占比、子域名大寫字符數量/占比
- 將數據加密/編碼后,會產生更多的大寫字符及數字字符,導致與正常子域名的差異性。
- 例:子域名 005aa003P3T647071636F6E626C316E385C61646D696E7369747261746F中大寫字符和數字字符的比例較高 , 而在正常域名如“store.google.com”中,“store”不含大寫字符及數字字符。同時,部分情況下子域名允許使用二進制數據,攻擊者可能用此編碼方式來擴展信道帶寬,從而使其具備較高的數字占比。
- 將數據加密/編碼后,會產生更多的大寫字符及數字字符,導致與正常子域名的差異性。
- 子域熵
- 正常子域名通常是一些看起來有意義的字符串,而惡意子域名通常是被加密/編碼后看起來無意義的數據。一般地,信息被編碼后會呈現更大的熵,此差距可以成為衡量正常子域名與惡意子域名的一個指標。
- C2 域名欺騙性
- 一般地,默認使用 Alexa top列表中的域名發出的請求為正常請求。攻擊者為使C2 域名看起來更正常,可能會為其 MANS 注冊具備欺騙性的域名。因此可以通過計算惡意域名與常用域名的相似性來進行判斷。
- 例:google與g0ogie的變形
- 一般地,默認使用 Alexa top列表中的域名發出的請求為正常請求。攻擊者為使C2 域名看起來更正常,可能會為其 MANS 注冊具備欺騙性的域名。因此可以通過計算惡意域名與常用域名的相似性來進行判斷。
- 資源記錄分布及長度
- DNS 一般用於域名與 IP地址間的映射,所以請求記錄通常為 A/AAAA 記錄
- DCCMalware 也可能會使用 TXT、CNAME 等記錄進行信息傳遞,造成與正常請求的差異。
- 所以資源記錄的長度也是一個重要的衡量指標。
- DNS 一般用於域名與 IP地址間的映射,所以請求記錄通常為 A/AAAA 記錄
2) 可讀性特征
子域名包含單詞數、子域名中最大單詞長度
- 正常子域名一般由多個單詞構成且最大單詞長度合理,惡意域名中提煉不出單詞或最大單詞長度異常 。
- 子域名單/雙/三字母頻率。正常子域名一般屬自然語言遵循 Zipf 定律,而惡意子域名字符頻率分布更均勻。
知識點
zipf定律:Zipf定律是文獻計量學的重要定律之一,它和洛特卡定律、布拉德福定律一起被並稱為文獻計量學的三大定律。由哈佛大學的語言學家喬治·金斯利·齊夫(George Kingsley Zipf)於1949年發表的實驗定律。它可以表述為:在自然語言的語料庫里,一個單詞出現的頻率與它在頻率表里的排名成反比。所以,頻率最高的單詞出現的頻率大約是出現頻率第二位的單詞的2倍,而出現頻率第二位的單詞則是出現頻率第四位的單詞的2倍。這個定律被作為任何與冪定律概率分布有關的事物的參考
3) 結構性特征
- 子域名標簽數量
- 正常子域名一般含有較少標簽,而惡意域名可能具有較多標簽,所以標簽數量也是一個可以參考的指標 。
- 平均/最大標簽長度
- 正常子域名標簽一般較短,惡意子域名可能含有較長的標簽長度。
4.1.2 多域名統計異常
-
同位相同字符數/最大公共子串長度
- 同位相同字符數是指 2 個同域子域名中相對位置相同的字符數,最大公共字串長度指的是 2 個同域子域名中所有公共子串中最長的公共子串長度。
- 正常子域名沒有固定結構,而同一次惡意活動中的子域名一般具有相同結構
-
最大公共子串是否包含數字/字母
- 正常域名間一般不具備相似的結構特征,而同一次惡意活動惡意域名間一般具備相似結構
-
同域 IP 離散性
- 正常域名中同域子域名對應IP 地址較離散
- 對於惡意域名請求,攻擊者會制定 MANS 對查詢的應答規則,一般使用固定 IP 或遞增 IP 應答。
-
DNS數據包總數
- 在正常情況下,例如在企業局域網中,每天的 DNS 數據包總數一般在一個固定區間范圍內。
- 當 DCCMalware 運行時,一般會產生較大量的 DNS 查詢,DNS 數據包總數則可能超出正常情況下的統計區間。
-
DNS 請求頻率
- 在正常情況下,一般為手動輸入 DNS 發起請求,請求頻率有限;在惡意情況下,由於 DNS 協議可傳輸字符有限,惡意軟件欲傳輸大文件時,需要大量 DNS 請求才能完成傳送
- 為提高攻擊效率,可能會使用較高頻率的請求來泄露數據。所以,DNS 請求頻率也是一個比較重要的指標
-
DNS 請求應答比
- 在正常情況下,DNS 請求應答比大概為 1:1;在惡意情況下,可能只利用 DNS請求來泄露數據而不設置應答,大量的無應答構成異常。
-
應答碼(RCODE)
- 在正常 DNS 請求與應答中,RCODE一般為 0,表示DNS 請求應答過程成功完成。
- 當應答碼為 3 時,表示此域名沒有任何類型的解析記錄。
- 當利用其傳輸數據產生大量請求時,會伴隨着大量 NXDOMAIN 應答。
知識點
常見RCODE:0——NOERROR,意思是成功的響應,即這個域名解析是成功;2——SERVFAIL,意思是服務器失敗,也就是這個域名的權威服務器拒絕響應或者響應REFUSE,遞歸服務器返回Rcode值為2給CLIENT;3——NXDOMAIN,意思是不存在的記錄,也就是這個具體的域名在權威服務器中並不存在;5——REFUSE,意思是拒絕,也就是這個請求源IP不在服務的范圍內,常見的場景為聯通客戶端到電信運營商LDNS解析會被REFUSE。除開0以外,其他都是異常應答
- 同域請求數量/占比
- 在正常情況下,一般良性的域不太可能被同一設備經常反復查詢;在惡意情況下,惡意軟件需要對同一域名反復查詢來泄露信息。
研究人員對檢測方式進行了一系列研究,利用基於匹配的方法及機器學習、深度學習等方法進行檢測。接下來,將對這些檢測方法涉及的具有代表性的論文進行逐一說明並進行對比,提出相關問題。
4.2 傳統檢測方法
- Born等人使用 n-gram 字符頻率分析法,對前 100 萬個頂級域名及 Iodine、Dns2tcp 等隱蔽信道工具進行分類,清楚地顯示了合法流量和隱蔽信道傳輸數據的區別,但僅使用字符頻率的差別來進行二分類的方法並不靈活,容易繞過。(BORN K, GUSTAFSON D. Detecting DNS tunnels using character frequency analysis[J]. arXiv Preprint, arXiv:1004.4358, 2010. )
- Karasaridis 等提出了一種基於流的檢測方法,根據 DNS 數據包大小分布差異性和交叉熵等統計屬性近實時檢測異常。(KARASARIDIS A, MEIER-HELLSTERN K, HOEFLIN D. NIS04-2: detection of DNS anomalies using flow data analysis[C]//IEEE Globecom. Piscataway: IEEE Press, 2006: 1-6.)
- Ellens 等結合了流量信息和統計方法進行異常檢測,特別在流方面使用了每個流的字節數、每個流的數據包數、每個數據包的字節數和流持續時間等特征,通過閾值法、Brodsky-Darkhovsky 法、分布法並進行結合,實現了 5 個檢測器,並對其進行比較,指出不同場景適合不同方法。(ELLENS W, ŻURANIEWSKI P, SPEROTTO A, et al. Flow-based detection of DNS tunnels[C]//IFIP International Conference on Au-tonomous Infrastructure, Management and Security. Berlin: Springer, 2013: 124-135.)
- Kara等全面分析了惡意載荷分布位置,提出了一種基於資源記錄分布情況來檢測 DCC 的方法,並使用近實時數據評估了其有效性。(KARA A M, BINSALLEEH H, MANNAN M, et al. Detection of malicious payload distribution channels in DNS[C]//2014 IEEE Inter-national Conference on Communications. Piscataway: IEEE Press, 2014: 853-858.)
4.3 經典機器學習方法
傳統檢測方式一般利用基於規則的靜態閾值,其檢測方法不靈活、誤報率高、易被繞過。隨着機器學習的發展,使用其賦能安全檢測的研究逐漸進入大眾視野。
存在一些較棘手的問題。惡意活動一旦被發現,攻擊者控制的 DNS 服務器很容易被關停,造成活性樣本較少,真實攻擊數據匱乏,對 DCC 的檢測面臨更嚴峻的數據集問題。
- Dietrich 等提出利用 RDATA 差異性及通信行為差異性兩方面特征,使用 K-均值聚類的方式在網絡流量中檢測C&C 信道,實驗結果顯示無誤報,同時也可以實現對未知樣本的檢測。( DIETRICH C J, ROSSOW C, FREILING F C, et al. On botnets that use DNS for command and control[C]//2011 Seventh European Con-ference on Computer Network Defense. Piscataway: IEEE Press, 2011: 9-16. )
- Aiello 等將傳統貝葉斯引入 DCC 檢測中,使用查詢、響應包大小及統計特征共 12 個特征進行檢測,並評估了其檢測方法的可靠性(AIELLO M, MONGELLI M, PAPALEO G. Basic classifiers for DNS tunneling detection[C]//2013 IEEE Symposium on Computers and Communications. Piscataway: IEEE Press, 2013: 880-885. )
- 章思宇等通過分析 DCC 流量特性,提取可區分特征 12 個,利用 J48決策樹、朴素貝葉斯和邏輯回歸 3 種方法分別進行訓練檢測,可以檢測已經訓練的及未訓練的隱蔽信道,但其訓練集樣本數量較少,導致准確率不高(章思宇, 鄒福泰, 王魯華, 等. 基於 DNS 的隱蔽通道流量檢測[J]. 通信學報, 2013, 34(5): 143-151. )
- Buczak 等使用隨機森林算法進行檢測,對未知工具的檢測率僅有 95.89%( BUCZAK A L, HANKE P A, CANCRO G J, et al. Detection of tun-nels in PCAP data by random forests[C]//Proceedings of the 11th An-nual Cyber and Information Security Research Conference. New York: ACM Press, 2016: 1-4.)
- Liu 等使用支持向量機、決策樹和邏輯回歸 3 種算法綜合了 4 種特征(18 種行為特征)針對已知隱蔽隧道工具集進行二分類檢測,獲得了較高的准確率,並指出使用 SVM 算法的檢測效果最佳( LIU J K, LI S H, ZHANG Y Z, et al. Detecting DNS tunnel through binary-classification based on behavior features[C]//2017 IEEE Trust-com/BigDataSE/ICESS. Piscataway: IEEE Press, 2017: 339-346.)
- Almusawi 等提出了一種多標簽支持向量機方法來檢測和分類隱蔽信道,並與多標簽貝葉斯分類器比較,不僅區分了正常流量及惡意流量還對 FTP、HTTP 及 POP3 等協議進行了分類,但是只使用了隱蔽信道工具進行檢測,未涉及對惡意軟件的檢測情況。(① ALMUSAWI A, AMINTOOSI H. DNS tunneling detection method based on multilabel support vector machine[J]. Security and Commu-nication Networks, 2018: 1-9.②HOMEM I, PAPAPETROU P, DOSIS S. Information-entropy-based DNS tunnel prediction[C]//IFIP International Conference on Digital Forensics. Geneva: IFIP Newsletter, 2018: 127-140.③單康康, 郭曄, 陳文智, 等. 基於混合分類算法模型的 DNS 隧道檢測[J]. 通信學報, 2018, 39(S1): 53-57.SHAN K K, GUO Y, CHEN W Z, et al. Detection of DNS tunneling based on combined classification algorithm model[J]. Journal on Communications, 2018, 39(S1): 53-57. )
- Nadler 等提取了 7 種特征訓練正常流量,通過 iforest 構建異常檢測模型准確識別現有工具及惡意軟件流量。(NADLER A, AMINOV A, SHABTAI A. Detection of malicious and low throughput data exfiltration over the DNS protocol[J]. Computers & Security, 2019, 80: 36-53. )
- Ahmed 等描繪了科研機構網絡與校園網的 DNS 流量各項特征的密度圖,基於密度圖提出檢測特征並使用iForest 算法進行檢測。實驗主要針對利用 DNS 查詢進行數據泄露的檢測,使用竊密工具 DET 進行訓練,對 DET 及未訓練的惡意軟件進行檢測,達到了較高的准確率。( AHMED J, GHARAKHEILI H H, RAZA Q, et al. Monitoring enter-prise DNS queries for detecting data exfiltration from internal hosts[J]. IEEE Transactions on Network and Service Management, 2020, 17(1): 265-279.)
4.4 深度學習檢測方法
- Hind就首次提出使用人工神經網絡(ANN, artificial neural network)構建分類器對 DCC 工具進行檢測的想法(HIND J. Catching DNS tunnels with A.I[R]. Defcon, 2009.)
- Liu 等將流量以字節為單位轉換成向量矩陣,每一個字節通過獨熱編碼(One-Hot)轉換為一個 257 維的向量,通過 CNN模型對流量進行檢測,並與 SVM 及邏輯回歸等方式進行對比,得到了較好的准確率及召回率(LIU C, DAI L, CUI W J, et al. A byte-level CNN method to detect DNS tunnels[C]//2019 IEEE 38th International Performance Computing and Communications Conference. Piscataway: IEEE Press, 2019: 1-8.)
- 張猛等對 CNN 進行了改進形成 RDCC-CNN 方法,提取了 48 個表征元素,將其轉換成灰度圖片表征 DNS 流量數據,對隱蔽信道進行檢測,達到了很好的准確率及誤報率。( 張猛, 孫昊良, 楊鵬. 基於改進卷積神經網絡識別 DNS 隱蔽信道[J]. 通信學報, 2020, 41(1): 169-179. ZHANG M, SUN H L, YANG P. Identification of DNS covert channel based on improved convolutional neural network[J]. Journal on Com-munications, 2020, 41(1): 169-179. )
- Wu 等提出利用深度神經網絡自動學習特征進行檢測,學習正常DNS 流量的特征,通過計算正常樣本與惡意樣本之間的均方誤差來檢測 DCC(WU K M, ZHANG Y Z, YIN T. TDAE: autoencoder-based automatic feature learning method for the detection of DNS tunnel[C]//2020 IEEE International Conference on Communications. Piscataway: IEEE Press, 2020: 1-7. )
0x05 結束語
傳統檢測方法面臨閾值設置易繞過、重要特征提取不全面等問題,可能導致對未知攻擊檢測效果不理想;經典機器學習檢測方法面臨真實攻擊數據匱乏、部分論文使用特征及數據集不全面的問題;深度學習檢測方法起步較晚,除面臨數據集匱乏問題,其涉及重點論文使用相同數據集進行訓練、檢測,對真實及未知攻擊的檢測較為匱乏,有較廣闊的研究空間。未來研究可能會將傳統方式與人工智能方式相結合進行檢測,取長補短,達到更好的檢測效果。
總結
1、DCC現在廣泛運用在APT攻擊中,主要是用於C&C和信息泄露。文章利用APT34作為例子,對APT34所使用工具及組件進行了分析
2、DCC在通信過程中,采用CRC確保完整性,采用編碼/密碼保證保密性
3、總結2類DCC檢測方法:單域名檢測和多域名統計異常,提出幾類異常特征
4、當前檢測方式所面臨的不足