當前位置:
首頁 > 新聞 > DNS 隧道通信後門的分析報告

DNS 隧道通信後門的分析報告

2017年4月,我們發布了一份詳細的關於一款惡意程序的報告,該惡意程序使用DNS隧道與它的C&C通信。這項研究促使我們開發了一種技術來檢測類似的威脅,該技術使得我們能夠通過DNS隧道收集大量的惡意軟體樣本。在本文中,我們將檢查一些使用DNS隧道最著名的惡意程序。Kaspersky實驗室的安全產品用一般的(「Trojan.Denes.UDP.C&C」或 「Backdoor.Win32.Denis.*」)或單獨的判決來檢測這些惡意程序。

Trojan.Win32.Ismdoor.gen

我們將檢查的第一個惡意軟體有一個多層的C&C通信協議結構,該結構與OSI模型相似,並將此惡意程序與所有其他的木馬程序區分開來。Trojan.Win32.Ismdoor的創造者,在設計和開發方面顯然付出了很大的努力。

當然,對於其傳輸層該木馬使用DNS隧道。傳出「datagrams」(數據報)的長度被限制在60字元,儘管DNS伺服器配置和實際協議允許這個值更大。C&C伺服器的命令解析到IPv6地址。

一個典型的查詢發送到C&C伺服器是這樣的:

n.n.c...com

傳輸層請求和響應的結構

在DNS隧道傳輸層上面適當的位置有一個會話層協議,這意味著交換「短」和「長」數據包的能力。會話層與傳輸層的不同之處在於,它有一種機制來檢查丟失的消息。當傳輸層通過一種數據交換關閉會話時(該數據交換是關於發送和接收數據包的數量),會話層便檢查確保每一個發送的數據包已經被正確接收進而關閉。由伺服器決定使用哪個選項;例如,「長」數據包協議是用來從受感染的電腦上傳文件。

短消息交換協議的例子

短消息

在這個層次上,聊天機器人(bot)的操作可分為五個步驟:

· 向伺服器聲明會話ID;

· 在數據包中發送消息;

· 發送已發送數據包數量;

· 接收傳入數據包的數量;

· 接收傳入的數據包。

一個會話的例子:

1. 向伺服器聲明會話ID

每次打開通信會話,bot都會生成一個GUID,並將其發送到伺服器。然後使用該GUID識別會話中的所有通信,並且總是將該GUID寫在第三級域位置。在本例中,URL具有以下結構:

n.n.c...comThe message A67DDB8A2A17334765443253702AA3 is a positive response. Otherwise, the GUID is sent to the server again.n.n.c...com

2. 以數據包的形式發送一條消息

正如我們前面說的,選擇的通信機制將某些限制條件強加到數據包的大小上。將一條即將輸出的消息分為60個位元組長的數據包,並且以URL的形式發送:

.

.dr.. .com

3. 發送已發送數據包的數量

當所有數據包發送成功,便發送已經發送的數據包數量,其數量作為一個查詢以下面格式發送:

n..f...com

應該注意的是,數據包編號從0開始。響應是20202020202020202020202020202020。

4. 接收傳入數據包的數量

這一步是通過以下URL格式的類型實現:

n.n.fc...com

響應一定是以下格式:

A67D: DB8: 85A3: 4325: 7654: 8A2A :: Receive incoming packets

5. 接收傳入的數據包

請求接收下一個數據包是這樣的:

www.

.s. ..com

以16位元組IPv6數據包的形式傳入消息。

長消息

在這種情況下,與伺服器通信可以分為以下步驟:

· 發送文件分成的數據包的數量;

· 發送文件;

· 向伺服器發送周期查詢以檢查丟失的數據包;

· 重新發送丟失的數據包。

來自查詢的會話ID,在該查詢中文件被要求。

1. 發送的數據包數量

查詢: n....com

2. 以數據包的形式發送文件

查詢:.

.d...com

回應:伺服器不回復這條信息,或者發送一個響應伺服器故障。

3. 向伺服器發送周期查詢來檢查數據包丟失

超過一般時間間隔,bot向伺服器發送以下查詢:

uff...com

回復:20202020202020202020202020202020

一系列操作之後,上一部分「接收傳入數據包的數量」以及「接收傳入數據包」的步驟已經實現。

作為響應,伺服器所遺漏的數據包的數量(用逗號分隔開)被發送了。

4. 重新發送丟失的數據包

查詢: .

.dl...com

OSI的表示層負責編碼和解碼消息。IPv4地址欄位中包含的伺服器響應是一個可被16整除的常規ASCII字元串。對包含在DNS查詢中的伺服器查詢在Base64中使用重新定義的索引表進行編碼。

第一個消息的例子及其在datagram主體里的代表

應用程序層只是C&C伺服器一組GET類似的查詢:

· 檢查連接。這個查詢字元串是「M:CC?」;

· 註冊連接。這決定了可用命令,以及受感染的計算機的ID和bot (M:AV?appId=&uniqueId=);

· 註冊確認命令;

· 「通用」回應 (M:ME?appId=&message=);

· 接收命令(M:GAC?appId=8);

· 確認命令 (M:CR?cd=);

· 發送文件 (M:SF?commandId=CmdResult=|||);

· 接收文件 (M:GF?);

如上所述,這個木馬的設計和編寫都很好,擁有經過深思熟慮的通信系統,以及有多種功能的payload。下面是它的主要命令列表:

· SI——發送關於受感染系統的信息;

· RunNewVersion——更新;

· Restart ——重啟;

· Remove——刪除本身;

· CreateMimi1Bat——Mimikatz執行;

· ExecuteKL——激活鍵盤記錄器;

· RemoveKL——刪除由ExecuteKL創建的文件;

· GetVersion——木馬版本報告;

· PauseUpload——暫停上傳文件到伺服器;

· ResumeUpload——恢復上傳文件到伺服器;

· PauseDownload——暫停從伺服器下載文件;

· ResumeDownload——恢復從伺服器下載文件;

· PWS——截圖;

· DownloadFile——從伺服器下載一個文件;

· UploadFile ———上傳文件到伺服器。

木馬可用的其他命令負責其自身的邏輯操作(如改變C&C地址等)。

Backdoor.Win32.ClIEcker

下一個示例使用基於ANY DNS 數據包的不同工作流。這種機制允許惡意程序從伺服器接收隨機結構的DNS數據包。有了該木馬程序,就沒有邏輯分解成子協議了——只有傳出和傳入的請求。我們能夠檢測到該木馬的幾個修改。下面,我們將描述所有列出的這些功能和特點。

Backdoor.Win32.ClIEcker其中一個有趣的特點是發現受害者計算機IP地址的方式——為了發現受害者計算機IP地址,它使用Internet Explorer的COM介面。該木馬包含網站地址的列表,在該列表上遊客可以看到自己的IP地址(例如http://www.ip-adress.com)。木馬程序隨機選擇其中一個,訪問地址,發現IP地址所遵循的頁面主體的字元串,並提取它。為了儘可能地掩蓋該查詢,木馬程序也會選擇一個隨機的推薦地址並且在對Internet Explorer適當的請求中使用該地址。

唯一仍不清楚的事情是,為什麼會使用這樣一個複雜的方法;通常,木馬程序通過從一個網站請求數據找到計算機IP地址,以一個HTML頁面的形式返回一個包含IP地址的字元串。這麼操作做也許是為了避免解析到一個IP地址,對該木馬程序來說可能在IoC列表中,或者它可能只是一個欠缺考慮的從代碼庫或論壇複製粘貼的工作。

為了使事情進一步複雜化,在來自伺服器的請求上,該木馬程序支持打開Internet Explorer上

一個網站的命令——為此,以 「IEXPLORE.EXE google.com」的形式使用了一個小調用,而不是複雜的COM交互。因此,木馬可以作為一個Trojan-Clicker被檢測到,不過,正如我們在之前的文章中解釋過的,Trojan Clicker通常使用虛擬桌面來實現上述操作。

用於解析IP/推薦地址的URL地址的例子以及通過COM 接收頁面內容

在最初的請求中,幾個描述受害者系統的參數與惟一的RC4鍵一起被發送,該RC4鍵使用以下受害者電腦信息創建的:

· 操作系統的主要版本;

· 邏輯標誌指示是否使用數據機連接;

· 木馬ID;

· 用戶的加密IP地址;

· 殺毒服務代碼。

最後一點應該給一些解釋。木馬包含安全軟體的列表;每個安全產品都在發送到伺服器的這段代碼中被編碼。例如,所有與McAfee產品有關的進程都將用殺毒服務代碼中的標誌0 ×400表示。

接下來,我們將對一些命令給出相應描述:

帶有代碼8的命令值得特別關注,因為它包含了木馬的主要功能。它的工作就是下載和啟動負載。這個命令有以下參數:

該文件以TXT DNS數據包的形式傳輸。

所有與伺服器通信,在默認情況下,使用一個基於受害者計算機信息生成的RC4密鑰加密。然而,伺服器可能要求密鑰是被改變的,並在文件下載請求中發送一個新的密鑰。在任何情況下,生成S-box所需的密鑰是用其本身加密的,並隨後使用產生的字元串。根據數據包數量修改 S-box,因此對於每一個新的數據包都是唯一的。

當解密完成後,使用CRC32檢查生成文件的完整性。

Backdoor.Win32.Denis

Backdoor.Win32.Denis擁有最簡單的結構和最簡單的DNS伺服器通信功能。惡意軟體的這段代碼與本文描述的木馬有相同的名字,但是也僅有此相似之處。

這個惡意程序使用 A DNS-格式數據包來與DNS伺服器通信;在這種格式中,響應大小限制為4個位元組。所有的指標都表明這是一個常規的木馬下載程序(Trojan Downloader),下載文件的速度非常慢。發送給伺服器的消息的典型格式如下:

IC...

通過「容器」,Trojan運算結果是打包的。命令和響應不同,容器的結構可能有很大的差異。是用戶的ID UID位元組長度為0x20 。是一個Base32字元串,編碼之後有以下結構:

容器也是一個Base32字元串:

總共有四種類型的容器存在。根據接收到的命令,以及執行的結果,Trojan決定哪一個是必需的。

命令

從命令的描述可以看出,該木馬程序的目的是下載和啟動文件。

MD5

15b36b1e3a41ad80bbd363aea8f2d704 — Trojan.Win32.Ismdoor.gen

1FD599FB9FA62EB91511002771D78104 — Backdoor.Win32.ClIEcker

1f3a2c48a7f5c2c31e71f552d74c3543 — Backdoor.Win32.Denis


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

比特幣沒落,門羅幣崛起:新的Linux 門羅幣挖礦工具——PyCryptoMiner
Masuta:Satori開發者的第二個殭屍網路,利用新的路由器漏洞實現武器化

TAG:嘶吼RoarTalk |