偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

深度解析:惡意軟件“Mirai”源代碼的結構及其對策

譯文
安全
本文中,筆者對惡意軟件“Mirai”的源代碼進行了深入分析,并進一步介紹了Bot(客戶端)的結構,以及其應對方法。

【51CTO.com快譯】2016年9月份以來,發(fā)生了多起大規(guī)模DDoS攻擊事件。本文針對這些攻擊事件中使用的惡意軟件“Mirai”的源代碼進行分析,進一步介紹Bot(客戶端)的結構,以及其應對方法。

一、 Mirai Botnet是什么

2016年9月13日晚,美國著名安全記者Brian Krebs氏的網(wǎng)站“Krebs on Security”被DDoS攻擊,mirai Botnet發(fā)動了此次攻擊。Mirai主要是以網(wǎng)絡攝像頭、路由器、數(shù)碼錄像機等IoT設備為跳臺進行DDoS攻擊。

據(jù)受到攻擊后Krebs氏的博客報道,保護該網(wǎng)站的Akamai觀測到在高峰時期受到了有史以來經(jīng)歷的最大規(guī)模攻擊近2倍的流量訪問。

另外,2016年10月21日Twitter、Netflix等利用DNS服務進行的DDoS攻擊,也被推斷利用了Mirai僵尸網(wǎng)絡。

然后在Krebs氏網(wǎng)站受到攻擊后,黑客平臺上Mirai的源代碼被公開成為了很大的話題。隨后源代碼又在GitHub上被轉載,誰都可以看到具體內(nèi)容。

源代碼被公開,Mirai Botnet以出廠設置的密碼未被更改的IoT設備為目標,進行一般的字典攻擊擴大感染范圍。據(jù)說在進行前述的攻擊時,也有幾十萬臺的設備受到僵尸網(wǎng)絡攻擊。

近年來各種各樣的IoT設備得到普及,存在漏洞的設備也在不斷增加,受到大規(guī)模的DDoS攻擊的可能性也會增大。另外,通常這些設備采用的架構是不同于個人的電腦等的多種多樣的,不過,Mirai可應對ARM、ARM 7、MIPS、PowerPC、SH4、SPARC x86等各種各樣的架構,這與大規(guī)模感染的擴大有一定關系吧。

本稿中,以現(xiàn)在GitHub上被公開的代碼為基礎,解說Mirai Botnet的運作,并且反思使家庭及企業(yè)的設備遠離僵尸網(wǎng)絡的自衛(wèi)對策。

二、 Mirai Botnet的構成

被公開的Mirai Botnet的源代碼可大致分為以下3個部分:

1. 攻擊者操作的C&C(Command and Control)服務器功能

2. C&C服務器中被操作的Bot功能

3. Bot程序發(fā)布的Downloader功能

C&C服務器部分為Go語言,Bot、下載部分以及其他的加密工具等主要為C語言。對照被公開存儲的目錄,Mirai的構成如下(List 1)

深度解析:“Mirai”源代碼的結構及其對策

List 1 目錄構成

Mirai Botnet 是攻擊者通過①C&C服務器向②Bot發(fā)送指令,形成以大量的Bot為攻擊對象的C&C中心型僵尸網(wǎng)絡。同時,Bot會掃描可感染的設備,將找到的設備信息發(fā)送給Report服務器,由③downloader植入Bot程序。(圖1)

深度解析:“Mirai”源代碼的結構及其對策

(圖1.Mirai的動作)

在這里,首先從C&C服務器的代碼開始解讀Mirai。

三、 C&C服務器

◆ Main函數(shù)

由于Mirai的C&C服務器部分為Go語言,最初被執(zhí)行的mirai/cnc目錄中main.go文件內(nèi)的main函數(shù)被讀取(List 2)。再者,以下代碼中雖然有補充的評語,但是,日語之外的評語是原本就記載的內(nèi)容。

深度解析:“Mirai”源代碼的結構及其對策

List 2 main.go內(nèi)的main函數(shù)

Mirai的C&C服務器起初是建立在Telne服務器與API服務器之間的。“go~”的部分是利用Go語言degoroutine的非同期被處理的部分。

apiHandler函數(shù)中的經(jīng)由API初期化接受來自攻擊者的操作處理程序。initialHandler函數(shù)中,初期化向連接Telnet的Bot發(fā)送指令的處理程序以及實現(xiàn)C&C服務器上指令行接口的處理程序(List 3)。

深度解析:“Mirai”源代碼的結構及其對策

List 3 main.go 的initialHandler函數(shù)

也就是說,這個C&C服務器的操作可能利用API,也可能通過Telnet連接CLI發(fā)送指令。解讀源代碼的話,無論使用哪個方法都是需要認證的。

◆ 認證部分

從api.go文件種Handle函數(shù)內(nèi)的數(shù)據(jù)看,送來的要求中含有的apikey沒有在C&C服務器內(nèi)登錄的話,能夠讀取未接收的指令。(List 4)

深度解析:“Mirai”源代碼的結構及其對策

List 4 api.go中的Handle函數(shù)的認證部分

admin.go中實裝的處理程序也同樣,在CLI上操作時需要使用用戶名和密碼登錄。(List 5)

深度解析:“Mirai”源代碼的結構及其對策

List 5 admin.go中的Handle函數(shù)的認證部分

另外,命令行在登錄時要求輸入俄羅斯語,因此推斷制作者或利用者可能是俄羅斯圈的人。

◆ 用戶管理部分

那么,怎樣才能把這些信息登記在數(shù)據(jù)庫上呢?讀取源代碼訪問C&C服務器上的CLI時,如果是管理者用戶的話可以從CLI注冊登錄(List 6)。

深度解析:“Mirai”源代碼的結構及其對策

List 6 admin.go的Handle函數(shù)內(nèi)的用戶登錄部分

然而,管理員賬號本身是預先插入數(shù)據(jù)庫中的,被公開的代碼中沒有管理員賬戶登錄的相關內(nèi)容。

另外,數(shù)據(jù)庫的users桌面上,除username及password之外,還有max_bots、last_paid、cooldown、duration_limit等列,這些列被用于創(chuàng)建攻擊指令,因此每個用戶能夠利用的Bot數(shù)量、攻擊間隔、賬號等均受控制。并且,用戶向僵尸網(wǎng)絡持有者支付金錢的時間等都保存在C&C服務器的數(shù)據(jù)庫中。(List 7)

深度解析:“Mirai”源代碼的結構及其對策

List 7 database.go內(nèi)的CreateUser函數(shù)

綜上所述,是否可以認為Mirai Botnet的所有者使不特定的多數(shù)人以金錢等交換利用了僵尸網(wǎng)絡呢。

◆ Bot 管理部分

接下來,看看Bot管理部分吧。首先從Bot連接C&C服務器的話,main.go文件中的initialHandler函數(shù)中NewBot.Handle函數(shù)被喚起,根據(jù)Handle函數(shù)的處理Bot信息將被添加到列表中(List 8)。

深度解析:“Mirai”源代碼的結構及其對策

List 8 bot.go內(nèi)的Handle函數(shù)

存儲Bot信息的clientList是全球變數(shù),main.go內(nèi)運行main函數(shù)之前就被制作了。另外, clientList在新制作的時候,非同步接收的Worker制作Bot指令,等待Bot指令。

◆ 攻擊指令的制作部分

接下來,以攻擊者C&C服務器的輸入為基礎,看看Bot指令的制作部分吧。在API、CLI等輸入指定攻擊種類·攻擊對象的命令,便會在attack.go內(nèi)的NewAttack函數(shù)內(nèi)完成應對接受指令的Flag設置。在同文件夾中的attackInfoLookup Map內(nèi)定義了可能利用的攻擊種類(表1)(List 9)。

深度解析:“Mirai”源代碼的結構及其對策

表1 Mirai Botnet可執(zhí)行的攻擊種類

深度解析:“Mirai”源代碼的結構及其對策

List 9 attack.go內(nèi)attackInfoLookup Map

從表1了解到,Mirai可使Bot受到各種各樣的DDoS攻擊。

另外,VSE平臺攻擊中被瞄準的游戲引起“Source Engine”是非常有人氣的一款在線游戲“反恐精英”中使用的引擎。這樣被特意定義,由此可見這樣的在線游戲可能被作為攻擊的目標。利用GRE等次要的協(xié)議進行攻擊是有可能的,因此Mirai可回避一般的DDoS攻擊對策。

然后把這些攻擊Falg設定組裝后,同文件的Build函數(shù)內(nèi)將這些攻擊設定為二進制向Bot發(fā)信。這樣就可以向Bot完成數(shù)據(jù)的發(fā)送。

◆ 指令發(fā)送部分

最后,看看從C&C服務器向Bot發(fā)送指令的流程吧。二進制的攻擊設定移交至clientList.go文件內(nèi)的QueueBuf函數(shù),如名字所示保持Bot的指示被放置在緩沖區(qū)列隊中(List 10)。

深度解析:“Mirai”源代碼的結構及其對策

List 10 clientList.go的QueueBuf函數(shù)

接收信息的atkQueue頻道從持有的Bot信息列表到攻擊者可利用的Bot上線數(shù)為止在Bot單體的緩沖區(qū)排列攻擊設定。

深度解析:“Mirai”源代碼的結構及其對策

List 11 clientList.go內(nèi)的worker函數(shù)

然后,排列的攻擊設定最終會被發(fā)送到Bot單體(List 12)。

深度解析:“Mirai”源代碼的結構及其對策

List 12 bot.go內(nèi)的QueueBuf函數(shù)

四、Bot(客戶端)

接下來,看看Bot客戶端的運作吧。由于客戶端是C語言編寫的,首先讓我們從mirai/bot目錄以下的main.c開始解讀吧。

◆C&C的連接部分

main.c內(nèi)的main函數(shù)里,啟動后本身的過程名偽裝成隨機的名字,無線循環(huán)地呼出establish_connection函數(shù),將加密的C&C服務器的域名和Bot解密后連接在一起(List 13)。

深度解析:“Mirai”源代碼的結構及其對策

List 13 main.c內(nèi)的main函數(shù)與establish_connection函數(shù)

在這里,establish_connection函數(shù)里名為resolve_fudc函數(shù)被同文件內(nèi)anti_gdb_entry函數(shù)替換,所以實際上也被稱作resolve_cnc_addr函數(shù)(List 14)。

況且,C&C服務器的域名中,對table.c文件中被定義為“0xdeadbeef”的值實施seed值XOR加密,C&C服務器的解析會變得較困難。

深度解析:“Mirai”源代碼的結構及其對策

List 14 main.c內(nèi)的anti_gdb_entry函數(shù)與resolve_cnc_addr函數(shù)

成功連接后,Bot向C&C服務器中發(fā)送二進制“\x00\x00\x00\x01”(List 15)。

深度解析:“Mirai”源代碼的結構及其對策

List 15 main.c內(nèi)的第263行

發(fā)送這個二進制的話,List 3中if文變?yōu)閠rue,被稱為NewBot函數(shù),保持C&C服務器與Bot的連接。

深度解析:“Mirai”源代碼的結構及其對策

轉自List 3

◆攻擊部分

接下來,我們一起看看Bot如何接收來自C&C服務器的攻擊設定,以及實際上是在攻擊嗎?基本上,Bot是等待來自鏈接main函數(shù)的無限循環(huán)C&C服務器發(fā)送過來的命令。接收命令后傳送attack.c文件內(nèi)的attack_parse函數(shù),然后運行與attack_start函數(shù)內(nèi)接收命令的攻擊設定一致的攻擊用函數(shù),開始所指定種類(表1中無論哪個)的DDoS攻擊(List 16)。

深度解析:“Mirai”源代碼的結構及其對策

List 16 attack.c中的attack_start函數(shù)

◆感染源掃描部分

Bot在等待來自C&C服務器命令的同時,main函數(shù)中被稱為scanner_init的函數(shù)開始尋找新的可加入Bot的設備。

如何掃描新的感染源呢?生成隨機IP(List 17)試圖連接,在連上的時候利用字典攻擊進行搜索。

深度解析:“Mirai”源代碼的結構及其對策

List 17 scanner.c中的scanner_init函數(shù)的一部分

使用字典攻擊從scanner.c文件的第125行定義用戶名與密碼(List 18)。

深度解析:“Mirai”源代碼的結構及其對策

List 18 scanner.c中被定義的一部分用戶名和密碼列表

最初的一行中雖記錄著root與xc3511的組合,這是2016年10月21日進行DNS服務攻擊的跳臺防盜攝像機設定的組合,隨后該設備被回收了。隨后會給出一份用戶名與密碼的組合清單,請確認一下您的設備所使用的用戶名與密碼。

若發(fā)現(xiàn)可登錄的末端,Adress、Bot、登錄信息會發(fā)送到服務器(List 19)。

深度解析:“Mirai”源代碼的結構及其對策

List 19 scanner.c中的scnenner_init函數(shù)內(nèi)的一部分

追蹤report_working函數(shù)的話,因送信源服務器與C&C服務器是不同的域名(被定義為TABLE_SCAN_CB_DOMAIN域名),Bot是發(fā)現(xiàn)的收集新感染源信息的服務器,與C&C服務器是不相同的(List 20)。

深度解析:“Mirai”源代碼的結構及其對策

List 20 scnaner.c中report_working函數(shù)

五、Downloader

最后讓我們了解一下發(fā)布Bot程序的Downloader部分吧。下載Bot運行文件的Downloader部分是由C語言編寫的,但是在前面提到的Bot收集的感染源信息的Report服務器的程序存在關于發(fā)布的部分,所以也一起了解一下吧。

◆感染源收集的部分

首先,解讀一下Report服務器的部分吧。mirai/tools目錄下的scanListen.go文件單體擁有Report服務器的作用。main函數(shù)中等待來自Bot的連接,連上的話會運行handleConnection函數(shù)(List 21)。

深度解析:“Mirai”源代碼的結構及其對策

List 21 scanListen.go中的main函數(shù)

在handleConnection內(nèi)只是輸入從Bot發(fā)送來的感染源信息,與其說是收集功能,倒不如說是將發(fā)送過來的信息傳遞給Downloader的簡易功能(List 22)。

深度解析:“Mirai”源代碼的結構及其對策

List 22 scanListen.go內(nèi)的handleConnection函數(shù)

Bot發(fā)布部分

從Bot接收的感染對象的信息,是在loader/main.c文件的main讀取,傳送給server_queue_telnet函數(shù)(List 23)。

深度解析:“Mirai”源代碼的結構及其對策

List 23 main.c文件中main函數(shù)的一部分

隨后,將感染源信息從server_queue_telnet傳遞到server_telnet_probe函數(shù),連接感染源(List 24)。

深度解析:“Mirai”源代碼的結構及其對策

List 24 server.c文件中server_telnet_probe函數(shù)的一部分

連接后進行登錄,自主下載(表1中介紹的dlr目錄下的東西)、wget、TFTP中,利用任一可能的方法下載Bot的執(zhí)行文件(List 25)。List 25中只介紹了wget的情況。

深度解析:“Mirai”源代碼的結構及其對策

深度解析:“Mirai”源代碼的結構及其對策

List 25 server.c文件中handle_event函數(shù)的一部分

在這里,wget執(zhí)行時雖利用了busybox,但這是組裝機器用的Linux也能運行標準UNIX命令的簡易設計程序。

接下來,運行下載的Bot(List 26)。按照這樣的流程感染存在漏洞的設備,添加新的僵尸網(wǎng)絡。

深度解析:“Mirai”源代碼的結構及其對策

List 26 server.c文件中handle_event函數(shù)的一部分

六、應對方法

最后,如何才能避免感染這樣的僵尸網(wǎng)絡呢,重新思考一下應對方法吧。

就像我們了解到的那樣,Mirai是將隨機生成的IP地址連接Telnet,感染字典攻擊可突破的設備?;旧鲜遣捎冒殉鰪S設置的密碼改成較難推斷密碼的方法,便能有效躲避感染。

以下記載著Mirai使用的用戶名與密碼的組合列表。再確認一下是否有相同設置的吧。

深度解析:“Mirai”源代碼的結構及其對策

表2 Mirai利用的用戶名與密碼一覽表

但是,由于Mirai的源代碼被公開誕生了亞種,這些亞種未必會使用相關的密碼列表。因此,不要因為在公開的密碼列表之外就大意,設定不容易被類推的密碼等,最好只訪問信賴度高的網(wǎng)站。

另外,此次感染了Mirai的設備若是公司內(nèi)部的連網(wǎng)設備,很有可能作為跳臺已經(jīng)成了入侵的開端,需要十分地注意。

從Krebs氏的網(wǎng)站受害中發(fā)覺的一些列由Mirai引起的DDoS攻擊漸漸地演變成大規(guī)模的攻擊。不僅如此,如前所述即使Mirai僵尸網(wǎng)絡自身被消滅了,但是不同的Mirai亞種的僵尸網(wǎng)絡仍然會出現(xiàn)吧。

實際上,按照黑客平臺上投稿的流程進行環(huán)境整備,只需要擁有一點知識,短時間內(nèi)便能完成Bot與C&C服務器的執(zhí)行文件的建立,利用大部分代碼便能制作出亞種。

DDoS攻擊對策等更重要的是針對來自Bot的攻擊對策,為了徹底消除僵尸網(wǎng)絡,盡量減少可支持僵尸網(wǎng)絡的設備也同樣重要。在正確理解僵尸網(wǎng)絡的威脅后采取對策,希望本文能夠給大家?guī)韼椭?/p>

原文標題:「Mirai」ソースコード徹底解剖-その仕組みと対策を探る,作者:西脇春名)

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:藍雨淚 來源: 51CTO.com
相關推薦

2022-04-11 14:54:12

黑客漏洞惡意軟件

2022-04-12 18:14:53

惡意軟件漏洞網(wǎng)絡攻擊

2017-02-16 13:33:56

2021-07-26 13:30:39

物聯(lián)網(wǎng)惡意軟件攻擊

2015-05-06 11:22:30

2009-04-03 08:28:39

2021-06-23 09:11:03

惡意軟件TendaAT&T Alien

2023-02-17 18:29:09

2023-10-11 11:42:27

2022-07-26 11:46:14

黑客論壇Rust編碼惡意軟件

2011-06-16 11:04:09

光纖損耗

2012-11-28 13:37:27

.NET.NET社區(qū)

2016-09-19 15:40:25

2011-08-09 11:45:45

2018-11-01 10:37:01

2010-02-05 18:00:18

Android源代碼

2010-09-30 15:49:00

2023-04-11 07:56:54

2013-12-16 11:18:42

多核

2012-11-12 10:03:27

點贊
收藏

51CTO技術棧公眾號