◆趙煜 尹川銘 向媛媛
(國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心山東分中心 山東 250002)
隨著網(wǎng)絡(luò)安全防護(hù)技術(shù)的不斷發(fā)展,傳統(tǒng)的惡意程序很難逃出安全防護(hù)設(shè)施的監(jiān)測(cè),傳統(tǒng)的惡意程序?qū)2 服務(wù)器的地址直接嵌入程序中,通過逆向分析后阻斷C2 服務(wù)器地址即可阻斷整個(gè)僵尸網(wǎng)絡(luò)。
速變Domain-flux 與Fast-flux 技術(shù)的誕生,解決了C2 服務(wù)器的隱藏問題,受控主機(jī)中的惡意程序通過快速變化的域名與C2 服務(wù)器建立網(wǎng)絡(luò)連接,給網(wǎng)絡(luò)安全威脅監(jiān)測(cè)與阻斷帶來了挑戰(zhàn)。尤其是近年來具有政治屬性的APT 組織越來越活躍,DGA 域名已經(jīng)成為APT攻擊過程中內(nèi)外網(wǎng)通信與隱藏C2 服務(wù)器的常用手段。本文通過對(duì)DGA 域名生成算法,Domain-flux 與Fast-flux 技術(shù),及APT 攻擊的常用攻擊方式研究,提出了一種通過深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)識(shí)別出DGA域名,結(jié)合威脅情報(bào)分析研判,用以實(shí)現(xiàn)對(duì)APT 攻擊的有效感知的方法。
DGA(Domain Generation Algorithm)域名生成算法,是一種算法機(jī)制,主要用來生成大量的隨機(jī)域名 AGD(Algorithmically Generated Domain),以便逃避安全設(shè)施的檢測(cè)[1]。DGA 域名常常被僵尸網(wǎng)絡(luò)用來隱藏受控主機(jī)與C2 服務(wù)器間的通信行為,攻擊者與受控主機(jī)使用同一套DGA 算法,生成相同的大量備選AGD 域名,選擇個(gè)別的域名進(jìn)行注冊(cè)解析,就可以實(shí)現(xiàn)受控主機(jī)與C2 服務(wù)器間網(wǎng)絡(luò)連接的建立,進(jìn)而發(fā)起進(jìn)一步的攻擊[2]。因?yàn)橹挥凶钄嗨械腁GD域名才能有效阻斷受控主機(jī)與C2 服務(wù)器的通信,大量動(dòng)態(tài)變化的隨機(jī)域名使得傳統(tǒng)的基于黑名單的安全防護(hù)手段無法有效發(fā)揮作用。
DGA 算法可以通過多種特殊的域名生成算法來生成AGD 域名,主要有算術(shù)、哈希、排列組合等。
(1)算術(shù)方式:該方式根據(jù)ASCII 編碼的數(shù)值進(jìn)行算術(shù)運(yùn)算生成AGD 域名,該方式較為容易實(shí)現(xiàn)。
(2)哈希方式:該方式使用哈希算法,如MD5、SHA-1、SHA-256等,截取一定長(zhǎng)度的哈希數(shù)值形成AGD 域名。
(3)排列組合方式:該方式從字符集或字典中選取一定的字符或單詞進(jìn)行復(fù)制排列組合生成AGD 域名,字符集或字典可以內(nèi)嵌在惡意程序中也可以從網(wǎng)絡(luò)中獲取,若使用字典則可以模擬出與正常域名相似度很高的AGD 域名,具有很強(qiáng)的迷惑性。
DGA 算法除了特殊的域名生成算法外,通常還需要種子變量作為DGA 算法的輸入?yún)?shù),以保持攻擊者與受控主機(jī)間生成相同的AGD 域名集合。種子分為兩類,時(shí)間類的種子和確定類的種子[3]。
(1)時(shí)間類的種子:使用時(shí)間作為DGA 算法的輸入,如:系統(tǒng)時(shí)間、網(wǎng)絡(luò)時(shí)鐘時(shí)間、HTTP 響應(yīng)中的時(shí)間信息等。
(2)確定的種子:使用特定的字符或信息作為DGA 算法的輸入,如固定的ASCII 字符串、某種貨幣的匯率、微博上的關(guān)鍵詞等。
Domain-flux 及速變域名技術(shù),受控主機(jī)中的惡意程序通過快速變化的域名與C2 服務(wù)器建立網(wǎng)絡(luò)連接,以達(dá)到隱藏C2 服務(wù)器與逃避安全防護(hù)手段檢測(cè)的目標(biāo),其核心算法是內(nèi)嵌在惡意程序中的DGA 域名生成算法[4]。
Fast-flux 技術(shù)的核心功能是實(shí)現(xiàn)域名解析IP 的不斷變化,以達(dá)到隱藏真實(shí)C2 服務(wù)器的目的。為了實(shí)現(xiàn)域名與IP 地址間映射關(guān)系的快速變化,攻擊者需要維護(hù)一個(gè)IP 地址列表從中周期性的選取IP與域名形成映射關(guān)系,并且為了更好實(shí)現(xiàn)映射關(guān)系的快速變化攻擊者往往需要搭建自己的域名解析服務(wù)器。
(1)Single-flux 網(wǎng)絡(luò)。在此網(wǎng)絡(luò)中,攻擊者為了將C2 服務(wù)器隱藏,IP 地址列表中的IP 地址往往并不是具有命令控制功能的C2 服務(wù)器,而是代理節(jié)點(diǎn)(稱為:flux-agent,通常由被控主機(jī)組成)。flux-agent 在收到被控主機(jī)的數(shù)據(jù)后,最終會(huì)轉(zhuǎn)發(fā)給具有命令控制功能的C2 服務(wù)器(稱為:mothership),由mothership 服務(wù)器響應(yīng)被控主機(jī)的請(qǐng)求,并通過flux-agent 轉(zhuǎn)發(fā)給被控主機(jī)[5]。
(2)Double-flux 網(wǎng)絡(luò)。在此網(wǎng)絡(luò)中,攻擊者為了進(jìn)一步隱藏自己搭建的DNS 解析服務(wù)器,將DNS 解析服務(wù)器納入Fast-flux 網(wǎng)絡(luò)中。攻擊者需要搭建多個(gè)DNS 解析服務(wù)器,并不斷修改頂級(jí)域名服務(wù)器中對(duì)應(yīng)底層服務(wù)器的IP 地址與NS 記錄,以實(shí)現(xiàn)負(fù)責(zé)解析域名的解析DNS 服務(wù)器的不斷變化,由于頂級(jí)域名服務(wù)器非攻擊者所有,為避免被監(jiān)測(cè)發(fā)現(xiàn),解析DNS 服務(wù)器的變化往往較慢。
APT(Advanced Persistent Threat)高級(jí)持續(xù)威脅,往往由于特定的組織發(fā)起(稱為:APT 組織),利用各種先進(jìn)的攻擊手段,對(duì)高價(jià)值目標(biāo)進(jìn)行的有組織、長(zhǎng)期持續(xù)性網(wǎng)絡(luò)攻擊行為。有的APT 組織具有國(guó)家背景,用以竊取他國(guó)的國(guó)家機(jī)密,破壞網(wǎng)絡(luò)基礎(chǔ)設(shè)施,擾亂正常的經(jīng)濟(jì)持續(xù),具有較強(qiáng)的政治屬性。APT 攻擊具有高級(jí)性、持續(xù)性、威脅性、隱秘性、潛伏性、多態(tài)性等特點(diǎn)[6],尤其是近年來APT攻擊表現(xiàn)出強(qiáng)烈的跨平臺(tái)屬性,除了傳統(tǒng)的Windows 與Linux 桌面平臺(tái),逐漸向物聯(lián)網(wǎng)、移動(dòng)網(wǎng)絡(luò)、工控系統(tǒng)、車載智能平臺(tái)等方面滲透,這就使得傳統(tǒng)的監(jiān)測(cè)防御體系很難對(duì)APT 攻擊進(jìn)行有效的防御。
APT 攻擊的常用手法有:魚叉攻擊、水坑攻擊、零日漏洞、路過式下載、社會(huì)工程學(xué)等[7]。
(1)魚叉攻擊(Spear Phishing),這種類型的攻擊對(duì)象一般是特定組織機(jī)構(gòu)的成員,根據(jù)目標(biāo)特點(diǎn)屬性,發(fā)生包含木馬程序的具有迷惑性的郵件,誘使其感染木馬程序,以便開展進(jìn)一步的攻擊。
(2)水坑攻擊(Water Holing),這種類型的攻擊需要分析被攻擊者的網(wǎng)絡(luò)訪問習(xí)慣,通過在被攻擊者經(jīng)常訪問的網(wǎng)站上植入木馬,在被攻擊者訪問網(wǎng)站時(shí)實(shí)現(xiàn)對(duì)攻擊者的攻擊,最終達(dá)到入侵的目的。
(3)零日漏洞(Zero-day Exploit,0day),零日漏洞沒有被公開,通常沒有有效的監(jiān)測(cè)防御手段,具有很高的隱蔽性不易被發(fā)現(xiàn),可以實(shí)現(xiàn)安全防護(hù)軟件的免殺,APT 攻擊者可利用零日漏洞可以入侵目標(biāo)網(wǎng)絡(luò),進(jìn)而開展數(shù)據(jù)竊取等進(jìn)一步攻擊。
(4)路過式下載(Drive-by download),這種類型的攻擊通常由于被攻擊者的主機(jī)安全策略設(shè)置存在漏洞,或者使用的瀏覽器存在漏洞,惡意程序不需要用戶同意即可自行下載運(yùn)行。另一種情況是惡意程序偽裝成正常的彈窗誘騙用戶點(diǎn)擊下載并運(yùn)行。
(5)社會(huì)工程學(xué),這類攻擊通常是利用被攻擊者的社會(huì)心理屬性,通過分析或者欺騙的方式獲取重要敏感數(shù)據(jù)。
APT 的攻擊過程可以分為四個(gè)階段,探測(cè)、入侵、潛伏、退出[8]。
(1)探測(cè)階段,該階段主要的目的是完成信息的收集,APT 組織通過網(wǎng)絡(luò)安全技術(shù)、社會(huì)工程學(xué)等技術(shù)手段,收集目標(biāo)資產(chǎn)的IP、端口及被攻擊機(jī)構(gòu)與員工的信息等,分析目標(biāo)資產(chǎn)可能的風(fēng)險(xiǎn)點(diǎn),為進(jìn)一步攻擊做好準(zhǔn)備。
(2)入侵階段,該階段主要的目的是使用各種手段入侵目標(biāo)資產(chǎn),在用戶不知情的情況下部署木馬或后門程序,獲取主機(jī)的控制權(quán),為數(shù)據(jù)的竊取做好準(zhǔn)備。
(3)潛伏階段,該階段主要為竊取信息做準(zhǔn)備并等候最佳的攻擊時(shí)機(jī)。APT 組織會(huì)進(jìn)行必要的內(nèi)網(wǎng)滲透,并具備向外傳輸數(shù)據(jù)的條件,當(dāng)接到指令后,部署在目標(biāo)主機(jī)的惡意程序會(huì)使用隱蔽隧道向APT 代理節(jié)點(diǎn)傳輸數(shù)據(jù),完成數(shù)據(jù)的竊取,必要時(shí)會(huì)破壞目標(biāo)資產(chǎn)的服務(wù),導(dǎo)致設(shè)施運(yùn)行異?;蛑袛?。
(4)退出階段,該階段主要為隱藏攻擊來源,惡意程序會(huì)清除系統(tǒng)日志數(shù)據(jù),恢復(fù)修改過的相關(guān)配置,消除運(yùn)行痕跡并進(jìn)行自我銷毀,防止被取證分析隱藏真實(shí)的攻擊來源。
為了繞過安全防護(hù)手段的監(jiān)測(cè),目前絕大多數(shù)的僵尸網(wǎng)絡(luò)都使用了Domain-flux 的DGA 技術(shù),僵尸網(wǎng)絡(luò)又是APT 組織常用的攻擊手段,因此可以基于DGA 域名監(jiān)測(cè)結(jié)合威脅情報(bào)數(shù)據(jù),可以實(shí)現(xiàn)對(duì)APT 攻擊進(jìn)行快速有效的檢測(cè)感知。
DGA 技術(shù)的檢測(cè)技術(shù)可以分為主動(dòng)與被動(dòng)兩種方式。主動(dòng)方式主要通過內(nèi)容識(shí)別實(shí)現(xiàn),但是因?yàn)镈GA 域名大多無法解析,因此,該方法大多情況不適用。被動(dòng)方式有黑名單、機(jī)器學(xué)習(xí)等。目前通常采用機(jī)器學(xué)習(xí)的被動(dòng)方式對(duì)域名進(jìn)行分類,實(shí)現(xiàn)惡意域名的檢查。在機(jī)器學(xué)習(xí)的算法中CNN 深度神經(jīng)網(wǎng)絡(luò)因可以處理圖像與詞語間關(guān)系,且在二分類中表現(xiàn)出色,可以用來進(jìn)行DGA 監(jiān)測(cè)。
CNN 神經(jīng)網(wǎng)絡(luò)的誕生主要是為了解決圖像處理問題。CNN 檢測(cè)的圖像通常是二維數(shù)據(jù),而作為DGA 域名的子域名雖是一維的文本數(shù)據(jù),但同樣可以用CNN 進(jìn)行處理。在DGA 域名檢測(cè)中,使用一維的卷積函數(shù)處理DGA 域名片段,以提煉高級(jí)特征進(jìn)一步分析。
DGA 域名檢測(cè)階段,DGA 域名檢測(cè)模型主要由卷積層、池化層、全連接層等部分組成,卷積層分別使用長(zhǎng)度為3,4,5 的卷積核進(jìn)行過濾,池化層采用最大池化的方式進(jìn)行組合,通過對(duì)正常域名與DGA域名訓(xùn)練樣本的學(xué)習(xí),得到一個(gè)可以區(qū)分DGA 域名的分類模型,用以實(shí)現(xiàn)對(duì)DGA 域名的檢測(cè)。
DGA 域名分析研判階段,將檢測(cè)出的疑似DGA 域名進(jìn)行DNS解析,若可以成功解析出IP 地址,并且隨著時(shí)間的推移IP 地址不斷變化,說明使用了Fast-flux 技術(shù)。需要將DGA 域名、域名Whois信息、子域名、IP、IP 域名解析記錄、與威脅情報(bào)庫(如VirusTotal、微步在線、360 威脅情報(bào)中心等)進(jìn)行關(guān)聯(lián)分析研判,確定該DGA域名是否為惡意域名,進(jìn)而確定是否為APT 攻擊。
APT 威脅情報(bào)建立階段,將確定的與APT 攻擊有關(guān)的DGA 域名、IP 地址納入APT 威脅情報(bào)庫,用來進(jìn)行APT 威脅感知。
APT 攻擊感知階段,通過鏡像的方式獲取組織機(jī)構(gòu)的互聯(lián)網(wǎng)出口流量鏡像,從中篩選出DNS 解析日志數(shù)據(jù),進(jìn)而分離出DNS 解析域名,使用訓(xùn)練好的CNN 神經(jīng)網(wǎng)絡(luò)模型進(jìn)行檢查,若存在多個(gè)GDA 域名,則說明該組織機(jī)構(gòu)存在被控主機(jī)風(fēng)險(xiǎn),若DNS 解析日志數(shù)據(jù)中存在APT 威脅情報(bào)中的域名,說明存在被APT 攻擊的風(fēng)險(xiǎn)。
本文研究了DGA 域名生成算法,Domain-flux 與Fast-flux 技術(shù),及APT 攻擊的常用攻擊方式,并提出了一種基于DGA 域名檢測(cè)的APT 攻擊感知方法,用于分析DGA 域名與APT 攻擊間的關(guān)系,實(shí)現(xiàn)對(duì)機(jī)構(gòu)內(nèi)APT 攻擊的風(fēng)險(xiǎn)隱患的實(shí)時(shí)監(jiān)測(cè)。DGA 域名作為APT攻擊的常用手段,現(xiàn)有的檢測(cè)感知技術(shù)存在一定的滯后性,仍需進(jìn)一步研究提升檢測(cè)準(zhǔn)確率與效率。