压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

Mirai物聯網僵尸攻擊深度解析

美國大面積的網絡癱瘓事件

2016年10月21日,美國東海岸地區遭受大面積網絡癱瘓,其原因為美國域名解析服務提供商Dyn公司當天受到強力的DDoS攻擊所致。Dyn公司稱此次DDoS攻擊涉及千萬級別的IP地址(攻擊中UDP/DNS攻擊源IP幾乎皆為偽造IP,因此此數量不代表僵尸數量),其中部分重要的攻擊來源于IOT設備,攻擊活動從上午7:00(美國東部時間)開始,直到下午1:00才得以緩解,黑客發動了三次大規模攻擊,但是第三次攻擊被緩解未對網絡訪問造成明顯影響。

此次攻擊是一次跨越多個攻擊向量以及互聯網位置的復雜攻擊,Flashpoint與Akamai的分析確認攻擊流量的來源之一是感染了Mirai僵尸的設備,因為部分離散攻擊IP地址來自Mirai僵尸網絡。

Mirai僵尸在黑客Anna-senpai公布源碼后,被黑客利用并快速的形成了大量的僵尸網絡,其中部分黑客參與了此次攻擊,目前不排除黑客Anna-senpai也參與了本次攻擊,其擁有大概30萬-40萬的Mirai僵尸肉雞。

啟明星辰ADLab分析發現,Mirai僵尸借鑒了QBOT的部分技術,并在掃描技術、感染技術等方面做了優化,大大提升了感染速度。

Mirai僵尸重要事件回溯

此次針對Dyn域名服務器的攻擊讓古老的DDoS技術再一次震撼了互聯網,其中最引人注目是物聯網僵尸網絡的參與,物聯網概念流行了近7年,大量的智能設備正不斷地接入了互聯網,其安全脆弱性、封閉性等特點成為黑客爭相奪取的資源。目前已經存在大量針對物聯網的僵尸網絡,如QBOT、Luabot、Bashlight、Zollard、Remaiten、KTN-RM等等,并且越來越多的傳統僵尸也開始加入到這個物聯網行列中。

通過啟明星辰ADLab的調查分析,Mirai僵尸網絡有兩次攻擊史,其中一次是針對安全新聞工作者Brian Krebs的網站,攻擊流量達到665Gbps。

Brian

另一次是針對法國網站主機OVH的攻擊,其攻擊流量達到1.1Tbps,打破了DDoS攻擊流量歷史記錄。

2016年9月30日,黑客Anna-senpai公開發布Mirai僵尸源碼。其公布源碼的目的一則是發現有關機構正在清理其掌控的僵尸設備;二則是為了讓更多的黑客使用該僵尸進行擴散,掩人耳目,隱藏自己的蹤跡。

OVH

Mirai僵尸重要事件回顧

1.2016年8月31日,逆向分析人員在malwaremustdie博客上公布mirai僵尸程序詳細逆向分析報告,此舉公布的C&C而惹怒黑客Anna-senpai。
2.2016年9月20日,著名的安全新聞工作者Brian Krebs的網站KrebsOnSecurity.com受到大規模的DDOS攻擊,其攻擊峰值達到665Gbps,Brian Krebs推測此次攻擊由Mirai僵尸發動。
3.2016年9月20日,Mirai針對法國網站主機OVH的攻擊突破DDoS攻擊記錄,其攻擊量達到1.1Tpbs,最大達到1.5Tpbs4.2016年9月30日,Anna-senpai在hackforums論壇公布mirai源碼,并且嘲笑之前逆向分析人員的錯誤分析。
5.2016年10月21日,美國域名服務商Dyn遭受大規模DDoS攻擊,其中重要的攻擊源確認來自于Mirai僵尸。

在2016年10月初,Imperva Incapsula的研究人員通過調查到的49,657個感染設備源分析發現,其中主要感染設備有CCTV攝像頭、DVRs以及路由器。根據這些調查的設備IP地址發現其感染范圍跨越了164個國家或地區,其中感染量最多的是越南、巴西、美國、中國大陸和墨西哥。

地區分布

直到2016年10月26日,我們通過Mirai特征搜索shodan發現,當前全球感染Mirai的設備已經超過100萬臺,其中美國感染設備有418,592臺,中國大陸有145,778臺,澳大利亞94,912臺,日本和中國香港分別為47,198和44,386臺。

分布

在該地圖中顏色越深,代表感染的設備越多,可以看出感染Mirai最多的幾個國家有美國、中國和澳大利亞。

Mirai源碼分析Mirai源碼是2016年9月30日由黑客Anna-senpai在論壇上公布,其公布在github上的源碼被star了2538次,被fork了1371次。

Mirai通過掃描網絡中的Telnet等服務來進行傳播,實際感染到設備bot并不充當感染角色,其感染通過黑客配置服務來實施,這個服務被稱為Load。黑客的另外一個服務器C&C服務主要用于下發控制指令,對目標進行實施攻擊。

通過我們對僵尸源碼的分析發現,該僵尸具備如下特點:

(1)黑客服務端實施感染,而非僵尸自己實施感染。

(2)采用高級SYN掃描,掃描速度提升30倍以上,提高了感染速度。

(3)強制清除其他主流的IOT僵尸程序,干掉競爭對手,獨占資源。比如清除QBOT、Zollard、Remaiten Bot、anime Bot以及其他僵尸。

(4)一旦通過Telnet服務進入,便強制關閉Telnet服務,以及其他入口如:SSH和web入口,并且占用服務端口防止這些服務復活。

(5)過濾掉通用電氣公司、惠普公司、美國國家郵政局、國防部等公司和機構的IP,防止無效感染。

(6)獨特的GRE協議洪水攻擊,加大了攻擊力度。

Mirai感染示意圖:

Mirai感染示意圖

上圖簡單顯示了Mirai僵尸的感染過程,與普通僵尸感染不同的是,其感染端是通過黑客服務端實施的,而不是靠bot來實施感染。

感染到設備端的 bot程序通過隨機策略掃描互聯網上的設備,并會將成功猜解的設備用戶名、密碼、IP地址,端口信息以一定格式上傳給sanListen,sanLiten解析這些信息后交由Load模塊來處理,Load通過這些信息來登錄相關設備對設備實施感染,感染方式有echo方式、wget方式和tftp方式。這三種方式都會向目標設備推送一個具有下載功能的微型模塊,這個模塊被傳給目標設備后,命名為dvrHelper。最后,dvrHelper遠程下載bot執行,bot再次實施Telnet掃描并進行密猜解,由此周而復始的在網絡中擴散。這種感染方式是極為有效的,Anna-senpai曾經每秒會得到500個成功爆破的結果。

一、bot分析

bot是mirai僵尸的攻擊模塊,其主要實現對網絡服務設備(掃描過程不只針對IOT設備,只要開啟Telnet服務的網絡設備均不會放過)的Telnet服務的掃描并嘗試進行暴力破解,其會將成功破解的設備ip地址、端口、用戶名、密碼等信息發送給黑客配置的服務器。并且同時接收C&C服務器的控制命令對目標發動攻擊。

1、IOT設備防重啟

由于Mirai的攻擊目標主要設計來針對IOT設備,因此其無法將自身寫入到設備固件中,只能存在于內存中。所以一旦設備重啟,Mirai的bot程序就會消失。為了防止設備重啟,Mirai向看門狗發送控制碼0x80045704來禁用看門狗功能。

IOT

通常在嵌入式設備中,固件會實現一種叫看門狗(watchdog)的功能,有一個進程會不斷的向看門狗進程發送一個字節數據,這個過程叫喂狗。如果喂狗過程結束,那么設備就會重啟,因此為了防止設備重啟,Mirai關閉了看門狗功能。這種技術常常被廣泛應用于嵌入式設備的攻擊中,比如曾經的海康威視漏洞(CVE-2014-4880)攻擊代碼中就采用過這種防重啟技術。

這里有個小插曲,2016年8月31日,一位逆向分析人員將此代碼判定錯誤,認為這是為了做延時而用,黑客Anna-senpai在Hackforums論壇公布源碼時嘲笑并斥責了該逆向分析人員的錯誤。

2、進程名隱藏

Mirai為了防止進程名被暴露,在一定程度上做了隱藏,雖然這種隱藏并不能起到很好的作用。Mirai的具體做法是將字符串進行了隨機化。

隨機名

3、防止多實例運行

Mirai同大多數惡意代碼一樣,需要一種互斥機制防止同一個設備多個實例運行。但Mirai采用的手段有所不同,其通過開啟48101端口來防止多個實例運行,具體做法是通過綁定和監聽此端口,如果失敗,便會關閉已經開啟此端口的進程確保只有一個實例運行。這個特點是檢測網絡設備中是否存在Mirai的最高效的檢測方法。

監聽

4、重綁定技術防止外來者搶占資源

Mirai有一個特點就是具有排他性,設備一旦感染,其會通過端口來關閉Telnet(23)、SSH(22,編譯時可選刪除項)、HTTP(80,編譯時可選刪除項)服務并且會阻止這些服務進行重啟,其主要實現方法是通過kill強制關閉這三個服務進程,并強行占用這些服務開啟時所需要的端口。此舉Mirai既可以防止設備被其他惡意軟件感染,也可以防止安全人員從外部訪問該設備,提高Mirai的取證難度。此功能實現在killer.c文件中。

Telnet服務的重綁定實現如下圖,SSH和HTTP服務采用類似的方式實現。

ssh

SSH服務的重綁定實現:

ssh進程

HTTP服務的重綁定實現:

http服務

通過對實際樣本的分析我們發現,大部分黑客并沒有對SSH和HTTP進行重綁定操作,絕大部分都只針對于Telnet服務進行了重綁定。

5、干掉競爭對手,獨占資源

Mirai會通過一種 memory scraping的技術干掉設備中的其他惡意軟件,其具體做法是搜索內存中是否存在QBOT特征、UPX特征、Zollard蠕蟲特征、Remaiten bot特征來干掉對手,以達到獨占資源的目的。

zollard

此外,Mirai如果發現anime惡意軟件,同樣也會強行干掉它。

anime

6、可感染設備探測

Mirai僵尸隨機掃描網絡中IOT設備的Telnet服務并通過預植的用戶名密碼進行暴力破解,然后將掃描得到的設備IP地址、端口、設備處理器架構等信息回傳給Load服務器。這里要注意的是,Mirai的隨機掃描是有一個過濾條件的,其中比較有意思就是他會過濾掉通用電氣公司、惠普公司、美國國家郵政局、國防部等公司和機構的IP地址。

可感染

Mirai僵尸中內置有60余個用戶名和密碼,其中內置的用戶名和密碼是加密處理過的,加密算法是通過簡單的單字節多次異或實現,其密鑰為0xDEADBEEF, 解密密鑰為0xEFBEADDE。

密鑰

Mirai使用高級SYN掃描技術對網絡中的設備進行掃描破解,其速度僵尸程序QBOT所采用的掃描技術快80倍,資源消耗減少至少達20倍。因此具備強大的掃描感染能力,黑客在收集肉雞過程中,曾經每秒可新增500個IOT設備。

Telnet服務掃描實現如下:

Telnet

當Mirai掃描到Telnet服務時,會連接Telnet并進行暴力登錄嘗試。Mirai首先會使用內置的用戶名和密碼嘗試登錄,之后通過發送一系列命令來判定登錄成功與否。如果成功則試圖進行一些操作,比如開啟shell等操作,其發送的命令被初始化在一個Table中,如下表所示:

命令操作類型 Index 有效? 功能描述
TABLE_SCAN_CB_DOMAIN 18 yes domain to connect to
TABLE_SCAN_CB_PORT 19 yes Port to connect to
TABLE_SCAN_SHELL 20 yes ‘shell’ to enable shell access
TABLE_SCAN_ENABLE 21 yes ‘enable’ to enable shell access
TABLE_SCAN_SYSTEM 22 yes ‘system’ to enable shell access
TABLE_SCAN_SH 23 yes ‘sh’ to enable shell access
TABLE_SCAN_QUERY 24 yes echo hex string to verify login
TABLE_SCAN_RESP 25 yes utf8 version of query string
TABLE_SCAN_NCORRECT 26 yes ‘ncorrect’ to fast-check for invalid password
TABLE_SCAN_PS 27 no “/bin/busybox ps”
TABLE_SCAN_KILL_9 28 no “/bin/busybox kill -9 “

以上表格中只有TABLE_SCAN_PS和TABLE_SCAN_KILL_9進行了初始化而未對目標設備進行預執行操作。從20到26的操作均是在發送用戶名和密碼后的登錄驗證操作。其中TABLE_SCAN_CB_DOMAIN和TABLE_SCAN_CB_PORT為黑客配置的Load服務器,該服務器用于獲取有效的Telnet掃描結果,掃描結果中包含IP地址、端口、Telnet用戶名和密碼等信息。發送信息的格式如下:

zero(1個字節) IP地址(4bytes) 端口(2bytes) 用戶名長度(4bytes) 用戶名(muti-bytes) 密碼長度(4bytes) 密碼(muti-bytes)

7、連接C&C,等候發動攻擊

Mirai的攻擊類型包含UDP攻擊、TCP攻擊、HTTP攻擊以及新型的GRE攻擊。其中,GRE攻擊就是著名安全新聞工作者Brian Krebs的網站KrebsOnSecurity.com遭受的主力攻擊形式,攻擊的初始化代碼如下:

UDP

C&C會被初始化在一張表中,當Mirai回連C&C時,會從表中取出C&C進行連接。

C&C

連接C&C成功后,Mirai會進行上線,其上線過程非常簡單,自身簡單向C&C發送4個字節的0。

上線

接下來會等候C&C的控制命令,司機對目標發動攻擊。對于接受控制命令處做了一些處理,比如首先會進行試讀來做預處理(控制指令長度判定等等),最后才會接受完整的控制命令。

當接受到控制命令后,Mirai對控制命令做解析并且執行。控制命令格式如下:

type Attackstruct {

Duration???uint32

Type???????uint8

Targets????map[uint32]uint8??? //Prefix/netmask

Flags??????map[uint8]string??? // key=value

}

其中,前4個字節為攻擊時長,接下來的4個字節為攻擊類型(攻擊ID),然后是攻擊目標,攻擊目標格式如下:

目標數(4個字節) IP地址(4個字節) MASK(一個字節) IP地址(4個字節) MASK(一個字節) IP地址….MASK…

最后是Flags,Flag是一系列的鍵值對數據,結構類似于攻擊目標的格式。下面列出Mirai僵尸網絡攻擊功能列表。

攻擊類型(32位) 類型值 攻擊函數
ATK_VEC_UDP 0 attack_udp_generic
ATK_VEC_VSE 1 attack_udp_vse
ATK_VEC_DNS 2 attack_udp_dns
ATK_VEC_UDP_PLAIN 9 attack_udp_plain
ATK_VEC_SYN 3 attack_tcp_syn
ATK_VEC_ACK 4 attack_tcp_ack
ATK_VEC_STOMP 5 attack_tcp_stomp
ATK_VEC_GREIP 6 attack_gre_ip
ATK_VEC_GREETH 7 attack_gre_eth
ATK_VEC_PROXY 8 attack_app_proxy(已經被取消)
ATK_VEC_HTTP 10 attack_app_http

這其中的GRE攻擊也就是2016年。

二、scanListen分析

ScanListen主要用于處理Bot掃描得到的設備信息(ip、端口、用戶名、密碼),并將其轉化為如下格式后將其輸入給Load處理。

scanListen

三、Load分析

Load模塊的主要功能是處理scanListen的輸入并將其解析后針對每個設備實施感染。其感染實現方法如下:

(1)首先通過Telnet登陸目標設備。

(2)登陸成功后,嘗試運行命令/bin/busybox ps來確認是否可以執行busybox命令。

busybox

(3)遠程執行/bin/busybox cat /proc/mounts;用于發現可讀寫的目錄。

mounts

(4)如果發現可用于讀寫的文件目錄,進入該目錄并將/bin/echo拷貝到該目錄,文件更名為dvrHelpler,并開啟所有用戶的讀寫執行權限。

dvrHelpler

(5)接下來通過執行命令”/bin/busybox cat /bin/echo\r\n”來獲取當前設備架構信息。

busybox cat

(6)如果獲取架構信息成功,樣本試圖通過三種方式對設備進行感染,這三種方式分別為echo方式、wget方式、tftp方式。

wget

(7)接下來通過Telnet遠程執行下放的程序。

Telnet2

(8)最后遠程刪除bot程序。

bot

總 結
僵尸網絡已成為全球面臨的共同問題,其攻擊不同于其他以竊密、遠控控制為主的惡意代碼,其通過掌握著的巨型僵尸網絡可以在任何時候對任何目標發動DDoS攻擊。僵尸的感染對象已經從服務器、PC、智能手機,擴展向攝像頭、路由器、家居安防系統、智能電視、智能穿戴設備,甚至是嬰兒監視器,任何互聯網連接的設備都可能成為一個潛在的目標。而一般用戶是很難注意到被感染的狀況的。Mirai僵尸由于源碼的開放可能正在迅速的擴散,其攻擊的流量特征也可能快速變化而難以監測。由于受感染目標多以IOT設備為主,所有的密碼均固化在固件中,因此即便重啟后Mirai從內存中消失也無法杜絕二次感染,并且隱藏在這種嵌入式設備中是極難判定其是否受到惡意感染。

緩解措施:

(1)如果感染Mirai,請重啟設備,并且請求設備廠商更新固件剔除Telnet服務。

(2)不必要聯網的設備盡量不要接入到互聯網中。

(3)通過端口掃描工具探測自己的設備是否開啟了SSH (22), Telnet (23)、 HTTP/HTTPS (80/443)服務,如果開啟,請通知技術人員禁用這些服務。

來源:啟明星辰ADlabs

上一篇:被盜的iPhone是如何一步步被黑客解鎖的

下一篇:關于mirai僵尸網絡控制主機的數據分析