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

2019-05-15 14:49:263717人阅读

简介

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

漏洞利用

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

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

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

编程风格很差的程序

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

1.png

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

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

2.png

Mirai代码分析

下面看一下Mirai的源码:

3.png

Github上的部分Mirai代码

4.png

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

总结

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


本文翻译自:https://www.ankitanubhav.info/post/crash

翻译作者ang010ela,原文地址:  https://www.4hou.com/vulnerable/17912.html

 


0
现金券
0
兑换券
立即领取
领取成功