恶人自有天收:如何能使僵尸网络Mirai的服务器宕机

释放双眼,带上耳机,听听看~!

作为恶名昭著的僵尸网络,Mirai攻陷了成千上万的物联网(IoT,Internet-Of-Things)设备,以这些设备作为节点发起大规模分布式拒绝服务攻击,破坏大量主流站点。

Mirai的攻击浪潮在2016年9月达到峰值,当时该僵尸网络发起大规模分布式拒绝服务(DDoS)攻击,导致OVH、Dyn以及Krebs on Security等主流站点出现暂时瘫痪现象,无法正常提供服务。据OVH以及Dyn的报告,这些攻击的流量峰值超过了1Tbps,这是已知攻击中规模最大的攻击流量。

此次创纪录的攻击流量事件中,最引人注目的在于这些流量由家用路由器、空气质量检测仪以及个人监控摄像头等小型物联网(Internet-of-Things,IoT)设备所发起。在巅峰时期,Mirai控制了超过60万个存在漏洞的IoT设备。

而就是这么有名的僵尸网络,Mirai和他的变种被ankitanubhav曝光其有一个小Bug,可以导致其在执行指定类型的操作后致C2服务器宕机。

效果图如下,当用户名输入1025+个“a”字符时,Mirai服务器便会宕机。

实际上,当有人连接到Mirai C2时,它会要求输入用户名和密码进行身份验证。如果有人在用户名中添加了1025+个字符流,则C2会崩溃,如上所示。

具体分析如下:

首先对缓冲区溢出有个概念理解,这是GO代码中的一个程序,它以名字作为输入并打印出来。

程序首先将名称作为字符串,将其复制到字节缓冲区然后打印缓冲区。虽然事情看起来很正常,但程序有一个缺陷。请注意,缓冲区是静态声明的大小为10。

设置大小为10的缓冲区长度是溢出的征兆

当我们运行它并提供一个小的输入时,事情进展顺利,例如“Ankit”。但是,当我们提供大于10的输入时,如“Ankitxxxxxxxxxxxxxxxxxxxx”,那么程序显然会抛出错误。

我们现在回到最初的Mirai源码。

这是Github上提供Mirai源代码的一部分

我们看到用户名被传递给Readline函数。

虽然由于它的名称它似乎是一个库函数,但它实际上是在源中声明的自定义函数,它声明了1024的固定缓冲区大小长度。

这就是当用户名是1025或更多字符流时模块崩溃的原因。

由于大多数物联网类的僵尸网络恶意软件都基于Mirai,因此这个漏洞已经在许多变种中被传播,并且已经在Blackhats中得到了充分利用。

目前,这个漏洞经常用来对那些投放Mirai或者基于Mirai进行二次开发的僵尸网络的脚本小子,由于他们的服务器IP都保持不变,因此直到僵尸网络所有者意识到C2已关闭并再次打开它后,会有一段很长的间隔,这可以有效的破坏僵尸网络的扩散。

黑鸟点评:


所以,我们可以写一个脚本,把大量Mirai及其变种的服务器IP地址都收集齐全,然后通过指定长度用户名的方式,就可以批量致使服务器宕机。

或者可以反向思考,通过全网ip扫描输入指定长度的用户名,然后通过服务器输入前后的状态,来判断IP是否为Mirai及其变种的服务器。

参考链接:

https://www.ankitanubhav.info/post/crash

近期看点:



欢迎下方长按识别二维码关注本公众号

更多情报和数据,请关注公众号

点击菜单栏,扫码加入知识星球

(原价299,现价折扣269)

感谢您的关注和转发

右下角

朕编不下去了了

本文源自微信公众号:黑鸟

人已赞赏
安全工具

福利:Sandboxie沙盘宣布免费,未来将代码开源

2019-10-16 10:06:14

安全工具

总计约有8.41亿!16家网站6.2亿账户数据泄露事件的卖家持续上新,疑似还有更多存货

2019-10-16 10:06:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索