Loading
0

物联网僵尸Mirai源码分析和沙箱运行演示

安全事件回顾
2016 年 10 月 21 日 11:10 UTC ( 北京时间 19:10 左右 ) ,一场大规模的互联网瘫痪席卷了美国,恶意软件 Mirai 控制的僵尸网络对美国域名服务器管理服务供应商 Dyn 发起 DDOS 攻击,从而导致许多网站在美国东海岸地区宕机。
你可能没有听说 Dyn,但你一定知道这些网站,如 GitHub、Twitter、PayPal 等。Dyn 为这些著名网站提供基础的 DNS 服务,当其受到攻击时,用户无法通过域名访问这些站点。
下图红色部分为遭受攻击影响网络的地区:

恶意软件Mirai是什么?
造成此次网络宕机事件的罪魁祸首,是大量的物联网设备,包括联网的摄像头和数字录像机,这些设备可能因遭到黑客劫持而被利用,而控制这些设备的恶意软件名为Mirai,Mirai 软件能够感染各类存在漏洞的物联网设备,其中包括安保摄像头、DVR 以及互联网路由器等,通过恶意感染,这些物联网装置将成为僵尸网络中的肉鸡设备,并被用于实施大规模 DDoS 攻击。
Mirai源码曝光

十月份Mirai源码在hack论坛被披露,很快被放到github上,并被大量fork和点赞,大家纷纷一窥Mirai为何物,大量关于Mirai的分析文章如雨后春笋,偶尔有关于Mirai源码的分析出现,但是也只是针对代码表层分析,而且只涉及到bot部分的C语言代码披露,对于更引人入胜的命令和控制中心(Command and Control,简称C&C或CnC),则无人给出研究结果,笔者猜想可能原因有二,一是大家对C&C部分没有引起足够重视,把关注点放在被控Bot部分,二是很多安全从业人员都是C语言出身,而Mirai的C&C是用Golang语言编写,对Golang不熟悉,导致没有对C&C做过多的分析。
笔者所在的www.myhack58.com安全团队掌握至少十种主流编程语言,笔者最喜欢的语言恰恰是Golang,尽管有十多年的C和C++经验,但是很快就变成了Go粉,在此也推荐大家学习一下Go语言,谷歌出品,必属精品!
言归正传,对于bot端源码分析不做赘述,FreeBuf已有分析,我们就分析一下Mirai僵尸网络的C&C,从僵尸网络的大脑入手,看看Mirai是如何控制全球几十万的Bot,以及如何发动DDoS攻击。
Mirai僵尸网络结构
关于Botnet僵尸网络结构,请参考www.myhack58.com团队写的文章《从某云服务商溯源黑客老巢:实例讲解Botnet僵尸网络和DDoS》,Mirai僵尸网络也是具有同样的网络结构。

Mirai僵尸网络参与者角色
作为盈利性的僵尸网络,Mirai有admin和普通user两种用户角色,admin是僵尸网络管理员,admin把僵尸网络售卖给普通user,并根据购买的bot数量定价,这些都可以从C&C代码里得出,而且数据库里有个last_paid时间戳字段,即上次支付时间,每个普通user有自己的登录僵尸的密码,admin管理员通过命令adduser分配普通用户信息并记录到数据库。
明确了不同的角色,就可以更好地理解C&C源码了,因为源码里很多地方是根据角色进行代码分支处理的。
本文中演示的Mirai运行和攻击都是在本地沙箱测试环境中执行,从源码分析到运行分析还有一段距离,故文中省略运行环境搭建部分,以防被非法利用Mirai。
CnC源码:
CC的源码不多,只有8个文件,文件命名也很规范,基本上看到文件名就知道是干什么的了,可见黑客编码还是挺规范的。

程序编译和执行:
需要先安装go编译器,然后配置GOPATH和GOROOT环境变量。
$ go build -o release/cnc  cnc/*.go
$ ./release/cnc
C&C执行流程:
CC启动后监听23和101端口,23端口是管理控制台端口,101端口给普通user发动快捷DDoS使用。

运行C&C后,先打印出一些俄语,故猜测黑客是俄罗斯人,至少也是懂俄语的人。输入登录用户信息,然后验证后进入僵尸网络控制台。

添加售卖用户:
这里示例起见,添加一个test用户,并卖给他100个僵尸:

分页阅读: 1 2
【声明】:8090安全小组门户(https://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。