恶意软件也有漏洞,Mirai C2崩溃分析

ang010ela 漏洞 2019年5月10日发布
Favorite收藏

导语:研究人员发现Mirai代码中存在一个bug,其他竞争者或攻击者可以利用该漏洞来使Mirai C2服务器崩溃。

简介

与其他代码一样,恶意软件也会存在漏洞。事实上,大多数恶意软件并不会进行质量控制,所以存在漏洞的概率更大。本文介绍Mirai代码中的一个小bug,该漏洞存在于多个变种中。其他攻击者可以利用该漏洞来破坏C2服务器。

漏洞利用

当用户名是1025+ "a"字符序列时Mirai服务器会崩溃

当有用户连接到Mirai C2服务器时,会要求输入用户名和密码来进行认证。如果用户在用户名处输入1025+字符串时,C2服务器可能会崩溃,如上图所示。

下面分析崩溃的原因,首先解释一个简单程序,然后分析Mirai。

编程风格很差的程序

下图是用GO语言编写的程序,功能是输入name并打印出来。该程序首先将name保存为字符串,然后复制到字节缓存中,然后将缓存打印出来。虽然看似没有什么问题,但是该程序有一个漏洞。因为缓存的大小声明为10。

缓存大小为10,可能会导致溢出

如果输入比较小的话,程序运行是正常的,比如Ankit这样的输入。但是如果输入值大于10,如Ankitxxxxxxxxxxxxxxxxxxxx,程序的运行就会出现错误。

Mirai代码分析

下面看一下Mirai的源码:

Github上的部分Mirai代码

可以看出username传递给了Readline函数。从函数名可以看出该函数应该是个库函数,实际上这是一个定制的函数,声明其固定缓存大小为1024。这也是为什么当username的长度大于1025时该模块会崩溃的原因。

总结

今年以来发现的大多数IoT僵尸网络都是基于Mirai的,该漏洞也存在于多个变种中。

本文翻译自:https://www.ankitanubhav.info/post/crash如若转载,请注明原文地址: https://www.4hou.com/vulnerable/17912.html
点赞 5
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论