來源:360 網絡安全研究院
作者:Rootkiter
概述
從 "81 端口的異常流量"中,我們發現了一個新的僵尸網絡家族,它和 MRIAI 存在一定的聯系,本文將介紹一些對比結果,同時介紹一下我們從這個 botnet 中發現的一種依賴SSDP協議的感染機制。
*注:如無特殊聲明,MIRAI的分析將以github源碼為基礎;新botnet 將以其中的9584B6AEC418A2AF4EFAC24867A8C7EC樣本的逆向結果為基礎。
相同點
相同的掃描方案
眾所周知,MIRAI在傳播過程中用到了SYN端口探測的技巧,來提高傳播效率。新Botnet 也使用了該技巧并將其用在了81端口掃描中。隨著研究的深入我們發現它和MIRAI有著相同的掃描規則。 在 MIRAI 中,被掃描IP是通過一系列隨機函數生成的,但他有個黑名單機制,用于跳過一些IP地址范圍(代碼來自scanner.c),相關截圖如下:

而在我們發現的 新Botnet 中(截圖選自sub_A7C4函數),也有完全相同的黑名單機制(上下兩圖紅框中是三行比對樣例,實際上整個 while 循環體都是完全一致的)。

部分util函數同源
當我們將 新Botnet 和 MIRAI 進行匯編指令級別對比時,可以很清晰的發現,它們之間的少部分函數具有高度的一致性。

不同點
配置C2的區別
在公開的 MIRAI 源碼中,用了 一個異或加密算法 來保護 C2 域名,并將 C2 以密文形式編碼在原始代碼之中,相關代碼可參考 table.c 的 table_init 函數,其截圖如下:

而在 該 Botnet 中,卻是直接的明文字符串編碼,相關截圖如下:

值得一提的是,域名 ntp.gtpnet.ir 現階段的解析目標為一個內網地址。 在此種情況下,攻擊者是無法對僵尸網絡進行正常控制的,且解析方式也不同于BlackHole(即域名的控制權仍然掌握在管理者手中)。 我們推測產生這種狀態的原因有兩種可能:
- 管理者發現僵尸網絡暴露了,切斷了解析以防被追蹤。
- 管理者正在進行新版本的研發和測試,而網絡上有大量的被控端,它們會對測試造成干擾,把解析目標設置到自己可控的內網地址后,可以很方便的排除干擾。
傳播方式的區別
在所有公開的 MIRAI 源碼中,只有弱口令掃描一種傳播方式,在 MIRAI 的已知變種中,出現過利用7547/5555/6789/37777等端口傳播的情況,關于 MIRAI 更多的跟蹤細節可以參考 Mirai Scanner主頁。
而 81 端口卻從未發現過傳播的 MIRAI 的先例,這是 新Botnet 獨有的傳播方式,“新威脅報告:一個新IoT僵尸網絡正在 HTTP 81上大范圍傳播” 記錄了和其有關的更多內容。
通訊協議的區別
MIRAI 的通訊協議可以從 attack.c 文件的 attack_parse 函數獲取到。
而在 新Botnet 中卻采取了一套全新的指令系統,相關內容可以用下表來表示: 
攻擊向量的區別
在原版 MIRAI 中,擁有包括 GRE 攻擊在內的 10 種 ddos 攻擊向量可供選擇,相關證據可以參考 attack.h 文件中的相關定義,下面是一張截圖證明:

而在 新Botnet 中,只存在兩種 UDP-flood 攻擊向量,可供選擇,具體證據可參閱“通訊協議的區別”章節提供的表格。
更多關于 新Botnet 的細節
除 81 端口外還存在其他傳播方案
雖然 新Botnet 是從 81 端口上被披露出來的,但其內部還包含有一個備份的傳播方案,它似乎還沒有被使用過。
00 04 02 是該傳播方案對應的指令碼。這是一個基于 “SSDP協議+UPnP實現漏洞利用” 的傳播方案,傳播將基于 1900 端口。其發送的第一個探測包內容如下:
M-SEARCH * HTTP/1.1
HOST:239.255.255.250:1900
ST:upnp:rootdevice
MAN:"ssdp:discover"
MX:3
這是 SSDP 協議的第一個請求包(函數地址 0x0000A918),當目標可以處理 SSDP 時,則進入 SSDP 交互邏輯,進而獲得更多的智能設備信息及相應控制方法,當發現潛在 CVE-2014-8361 漏洞(Realtek SDK Miniigd UPnP SOAP Command Execution)的設備時(識別關鍵字:52869/picsdesc.xml),嘗試發送 CVE-2014-8361 對應的 payload 完成一次試探性傳播(函數地址 0x0000A458)。
當存在漏洞的服務無法從外網直接訪問時,掃描器將會通過調用擁有“AddPortMapping” 功能的函數(函數地址 0x0000AE20)建立一個端口映射,并通過新映射的端口來完成試探性payload投遞。
UDP-Flood 的網絡特征
該樣本支持兩種UDP-flood 攻擊,分別為 00 06 和 00 08。
其中 00 06 對應的 flood 內容同 SSDP 探測包相同,截圖證明如下:

而 00 08 對應的 flood 內容為:

回顧
本文從逆向樣本出發,詳細闡述了 新Botnet 和 MIRAI 之間的2個相同點和4個不同點。
相同點
- 相同的掃描方案
- 部分util函數同源
不同點
- 配置C2的區別
- 傳播方式的區別
- 通訊協議的區別
- 攻擊向量的區別
雖然 新Botnet 和 MIRAI 之間存在一定的共同點,但從 Botnet 識別的角度來看,這些不同點均為識別 Botnet 的重要指標,我們沒有理由將其歸類為 MIRAI 的變種,而應當把它當做一個全新的 Botnet 家族。
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/291/