類Linux環境下支援多協議的DDoS病毒分析
*本文作者:cgf99,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。
一、背景
近期,在蜜罐平臺發現了幾個可疑的URL連結。分別是 ofollow" rel="nofollow,noindex" target="_blank">http://54.38.213.72/bins.sh 、 http://51.15.207.183/sbins.sh 、 http://89.34.26.152/bins.sh 。上述URL連結在寫稿期間(9月28日)還可以正常訪問。
其中,下載的bins.sh和sbins.sh的內容分別如下
http://54.38.213.72/bins.sh 內容:
http://51.15.207.183/sbins.sh 內容:
http://89.34.26.152/bins.sh 內容:
粗略一看,檔案內容和形式基本一致。
下載的檔案列表如下:
二、 分析環境
由於本地條件有限,測試的環境是Kali-linux虛擬機器系統,物理機是window系統64位。
三、 初步分析
將所下載的檔案,手動對其新增可執行屬性,發現在kali-linux下大多數檔案無法執行,只有ftp、bash、qvmxvl、razdzn、wget、vvglma等六個檔案可以順利執行。
其中,無法執行的都是提示“cannot execute binary file: Exec format error”。具體如下圖所示:
根據提示,我們大概判斷,可能哪些不能執行的檔案都是適用與其他系統的,比如不同的CPU架構,不同的LINUX版本等。所以,攻擊者在url下載連結中分別下載並執行不同的版本,用於針對不同的系統環境。
但是,我們依舊可以利用IDA進行反彙編,可以看到大概的功能和作用,比如對其中的ajoomk檔案進行反彙編,發現其包含了sendSTD、sendUDP、sendTCP、BCMSCAN、PhoneScan、MiraiIPRanges、HackerScan1、BCMscanner、TelnetScanner、MiraiScanner、PhonerScanner、SendHTTP等函式,從字面理解,該檔案應該包含了STD、UDP、TCP、HTTP等發包的功能、已經Telnet掃描、BCM掃描、Mirai掃描、手機掃描、黑客掃描等攻擊和滲透模組。如下所示:
此外,能在kali-linux測試環境下正常執行的檔案情況分別如下:
1、ftp檔案執行如下
2、bash檔案執行如下
3、wget檔案執行如下
4、 qvmxvl
該檔案執行後,即退出。
利用PS列舉程序,發現多了兩個名為ud1gpd1gm51ghbdhidgh58f的程序在執行。
通過/proc/pid查詢,發現pid=1383和pid=1384兩個程序對應的就是qvmxvl程序。
5、vvglma
該檔案執行後退出。
利用PS列舉程序,發現多了兩個名為h16g516gpr6g的程序在執行。
同樣的,經過分析,其實h16g516gpr6g程序指向的就是vvgmla程序。
6、razdzn
該檔案執行後,即退出。
利用PS列舉程序,發現多了兩個名為0wqgnwqgikqg6stan5wg4eva的程序在執行。
同樣,經過分析,0wqgnwqgikqg6stan5wg4eva其實指向的就是razdzn程序。
由此,我們可以初步判斷,ftp、bash、wget三個檔案是一樣的程式不同的版本,qvmxvl、razdzn、vvglma三個檔案是一樣的程式不同的版本。
四、 具體分析
1、ftp
該檔案是C語言編寫的。
利用IDA反編譯後我們可以看到,在main函式裡面,就是一個迴圈操作的過程,連線伺服器,獲取指令,處理指令…
其中initConnection函式主要負責初始化網路操作。
具體的伺服器地址和埠為51.15.207.183:543。
這個IP和埠就是前文中ftp執行後實際連線的伺服器的IP地址和埠。
讀取命令字串後進行如下的處理,主要是進行指令字串處理操作和指令處理操作。
進入processCmd函式,發現其實現了對UDP、TCP、RAWU、HTTP、STD、GAME等指令的操作,分別利用UDP、TCP、HTTP、RAWU、STD、GAME等協議實現了發包的功能,從而實現對目標的DDOS攻擊。
由於測試條件時間有限,特研發了一個小程式,功能就是連線51.15.207.183的543埠,迴圈讀取伺服器命令。經過兩個小時的執行,獲得瞭如下的命令結果,遺憾的是隻有獲取了UDP、GAME、STD、TCP等協議的格式,沒有獲取到HTTP和RAWU協議的命令,另外,列表中的命令都是間隔出現的,並且中間會連續收到PING和PONG命令(無效的命令,用於時間間隔)。
PING PING !* UDP 68.3.81.175 80 300 32 1240 10 !* GAME 147.135.9.136 65120 30 !* STD 147.135.9.136 65120 5000 1240 !* STD 73.229.243.179 80 1400 1240 !* UDP 68.3.81.175 80 300 32 1240 10 !* GAME 147.135.9.136 65120 30 !* STD 147.135.9.136 65120 5000 1240 !* STD 73.229.243.179 80 1400 1240 !* UDP 68.3.81.175 80 300 32 1240 10 PING !* UDP 73.99.114.229 6697 300 32 1240 10 PONG !* UDP 47.32.99.106 6697 300 32 1240 10 !* UDP 108.238.177.193 6697 300 32 1240 10 !* UDP 67.160.181.96 6697 300 32 1240 10 PONG !* TCP 67.160.181.96 6697 7200 32 syn,rst 1240 10 !* UDP 24.216.217.134 3074 200 32 1240 10 !* UDP 47.32.99.106 6697 300 32 1240 10 |
---|
其中,我們可以發現,命令以!*開頭(與前文中IDA分析結果一致,命令以0×21也就是!字元開頭)
具體的指令格式如下:
!* 字串開頭 | 目標IP | 間隔時間 | 發包次數 (有些協議無此項) | 結尾符0×10 |
---|
其中每個項之間都以空格隔開。
比如指令指的是向108.238.177.193的主機的6697埠傳送UDP資料報文,每個報文的大小為1240,連續傳送32次,每隔300秒迴圈。
我們可以在IDA的void*__cdecl sendUDP(int a1, int a2, int a3, int a4, int a5, int a6)函式裡面看到具體的操作,如下:
TCP協議sendTCP的操作函式如下所示,我們發現,在利用TCP發包的時候,還可以用指定控制標誌的TCP包進行傳送,比如syn、fin、rst、ack、psh等。用IDA分析TCP發包函式int __cdecl sendTCP(int a1, int a2,int a3, int a4, int a5, int a6, int a7),可以看到如下:
RAWU命令的處理函式void*__cdecl RawUDP(int a1, int a2, int a3, int a4)與UDP的處理函式sendUDP流程基本一樣。
HTTP協議的處理函式int__cdecl GucciHTTP(char a1, int a2, unsigned __int16 a3, int a4, int a5, int a6)如下圖所示。
其中GGGSSSSSSS執行的是自定義的瀏覽器的資訊字串。幾乎所有的瀏覽器資訊都靜態包含在程式碼中,比如截取了部分資訊如下。
STD命令的處理函式sendSDT IDA反彙編後的結果如下圖所示:
GAME命令的處理函式Game經IDA反彙編後如下圖所示:
此外,系統還支援STOP命令,用於程式退出。
五、 初步判斷
1、該活動應該是分散式拒絕服務攻擊活動。 2、針對的物件很複雜,可能是物聯網殭屍活動,面向執行類linux系統的裝置(針對不同的物聯網裝置和主機系統) 3、此外,攻擊的IP比較目前只是看到了有限的幾個。具體每個IP的歸屬尚未分析。
*本文作者:cgf99,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。