当前位置:安全行业动态 → 正文

那个导致美国断网的Mirai 又出现带DGA变种,内置了域名生成算法

责任编辑:editor005 作者:aqniu |来源:企业网D1Net  2016-12-13 14:52:51 本文摘自:安全牛

连续导致美国和德国断网事件的Mirai恶意软件,不仅感染并控制了越来越多的摄像头等联网设备,组成潜在威胁更大的僵尸网络,其自身还不断出现新的变种,近日360网络安全研究院全球首次确认了早先Mirai 7547端口传播样本中的DGA机制。

概要

两个星期前,360网络安全研究院发现2个新的感染载体(也即TCP端口7547和5555变种)被用来传播Mirai恶意软件。

研究院的Ye Genshen快速设置了一些蜜罐,并且很快取得收获:11月28日一天就捕获了11个样本。 迄今为止,我们的蜜罐已从6个托管服务器捕获了53个独立样本。

在分析其中一个新样本时,研究院的同事Qu Wenji发现一些类似DGA的代码,并猜测变种中包含有DGA功能,这个猜测很快就从我们的沙箱数据中得到验证。详细的逆向工作显示,在通过TCP端口7547和5555分发的Mirai样本中确实存在DGA特征。本文中将介绍这些最新的发现,将我们找到的DGA的属性总结如下:

使用3个顶级域名:online/tech/support;L2域名固定长度12字符,每个字符从“a”到“z”中随机选择;域名仅由月、日和硬编码的种子字符串确定;每天只生成一个域名,因此最多存在365个 DGA域名;DGA域名仅在硬编码的C2域名无法解析时使用。

通过逆向获取的DGA知识,我们在程序中重新实现了DGA,并用它来预测所有365个可能的域名。当进一步确认这些域名的注册信息时,我们发现其中部分域名已经被MIRAI作者注册,列表如下:

 

图0 已经被注册的DGA域名

值得一提的是,作者 dlinchkravitz@gmail.com在更早时间已经注册了其他Mirai C2域名:

zugzwang.me email dlinchkravitz@gmail.com

样本和分析

本文中用作说明的样本如下:

* MD5: bf136fb3b350a96fd1003b8557bb758a

* SHA256: 971156ec3dca4fa5c53723863966ed165d546a184f3c8ded008b029fd59d6a5a

* File type: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped

样品做了去符号处理但未加壳。根据以分析Mirai样本经验,我们很快就确定了其主要模块。比较代码发现,resolvcncaddr函数的CFG(流程控制图)与先前发现的样本非常不同。 新版本的CFG如图1所示。

 

图1 新版本的resolv_cnc_addr 流程控制图

在函数开始处,由于在样本中硬编码了多达3个C2域名,所以生成随机数以从第一和第二个C2域名中随机选择一个,如图2所示。

 

图2 resolv_cnc_addr 函数第一部分

如果被选中的C2域名无法解析,则bot并不解析未选择的域名或第三域名,而是将根据当前日期判断是决定是否去执行DGA代码分支还是去解析第三个C2域名,如图3。

 

图3 决定是否进入DGA 代码分支

从上述代码片段我们可以看出,如果当前日期在11月1日和12月3日之间,将去解析第3个C2域名。否则将执行DGA代码分支。这可以理解为作者不希望DGA域名在12月4日之前被启用,这也恰好被前文提及首个被注册的Mirai DGA域名对应于12月4日所映证。 DGA主函数名为dgagendomain。域名完全是基于种子数字和当前日期生成的。种子通过调用strtol()从硬编码的十六进制格式字符串进行转换。看起来字符串“‘€‘€”是一个错误的配置,这会导致strtol()总是返回0。

代码中通过调用time()和localtime()的C库函数得到本地日期。但只有月和日被使用,如图4所示。

 

图4 dga_gen_domain 函数片段

L2域名是通过反复执行图5所示的代码块来生成的。其长度由$ t5和$ t2确定,它们的值在图4中设置,从中我们可以确定L2域名长度是12。

 

图5 生成L2域名的循环代码片段

TLD(Top Level Domain)由寄存器$S0中的残余值确定,如图6所示。 我们可以看到在这里使用了3个TLD。

 

图6 确定TLD 的代码分支

IOC

目前,DGA相关的特性存在于如下样本,所有这些DGA样本中的种子字符串和算法都完全相同:

005241cf76d31673a752a76bb0ba711805891dbabc42a36f33c30535f09315550eb51d584712485300ad8e812677394115b35cfff4129b26c0f07bd4be462ba02da64ae2f8b1e8b75063760abfc94ecf41ba9f3d13ce33526da52407e2f0589d4a8145ae760385c1c000113a9ea00a3a551380681560849cee3de36329ba4ed372bbfc1ff6621a278e16cfc91906109f73f4312cc6f5067e505bc54c3b02b5697d490eedc5b46aff00ffaaec7004e2a8863dcf82883c885b0686dce747dcf502bf136fb3b350a96fd1003b8557bb758abf650d39eb603d92973052ca80a4fddad89b1be09de36e326611a2abbedb8751dbd92b08cbff8455ff76c453ff704dc6eba670256b816e2d11f107f629d08494

样本中的硬编码C2域名如下:

meonlinetechsupport

我们将密切关注DGA变种的后续变化,敬请关注后续更新。

关键字:MiraiDGA代码片段

本文摘自:安全牛

x 那个导致美国断网的Mirai 又出现带DGA变种,内置了域名生成算法 扫一扫
分享本文到朋友圈
当前位置:安全行业动态 → 正文

那个导致美国断网的Mirai 又出现带DGA变种,内置了域名生成算法

责任编辑:editor005 作者:aqniu |来源:企业网D1Net  2016-12-13 14:52:51 本文摘自:安全牛

连续导致美国和德国断网事件的Mirai恶意软件,不仅感染并控制了越来越多的摄像头等联网设备,组成潜在威胁更大的僵尸网络,其自身还不断出现新的变种,近日360网络安全研究院全球首次确认了早先Mirai 7547端口传播样本中的DGA机制。

概要

两个星期前,360网络安全研究院发现2个新的感染载体(也即TCP端口7547和5555变种)被用来传播Mirai恶意软件。

研究院的Ye Genshen快速设置了一些蜜罐,并且很快取得收获:11月28日一天就捕获了11个样本。 迄今为止,我们的蜜罐已从6个托管服务器捕获了53个独立样本。

在分析其中一个新样本时,研究院的同事Qu Wenji发现一些类似DGA的代码,并猜测变种中包含有DGA功能,这个猜测很快就从我们的沙箱数据中得到验证。详细的逆向工作显示,在通过TCP端口7547和5555分发的Mirai样本中确实存在DGA特征。本文中将介绍这些最新的发现,将我们找到的DGA的属性总结如下:

使用3个顶级域名:online/tech/support;L2域名固定长度12字符,每个字符从“a”到“z”中随机选择;域名仅由月、日和硬编码的种子字符串确定;每天只生成一个域名,因此最多存在365个 DGA域名;DGA域名仅在硬编码的C2域名无法解析时使用。

通过逆向获取的DGA知识,我们在程序中重新实现了DGA,并用它来预测所有365个可能的域名。当进一步确认这些域名的注册信息时,我们发现其中部分域名已经被MIRAI作者注册,列表如下:

 

图0 已经被注册的DGA域名

值得一提的是,作者 dlinchkravitz@gmail.com在更早时间已经注册了其他Mirai C2域名:

zugzwang.me email dlinchkravitz@gmail.com

样本和分析

本文中用作说明的样本如下:

* MD5: bf136fb3b350a96fd1003b8557bb758a

* SHA256: 971156ec3dca4fa5c53723863966ed165d546a184f3c8ded008b029fd59d6a5a

* File type: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped

样品做了去符号处理但未加壳。根据以分析Mirai样本经验,我们很快就确定了其主要模块。比较代码发现,resolvcncaddr函数的CFG(流程控制图)与先前发现的样本非常不同。 新版本的CFG如图1所示。

 

图1 新版本的resolv_cnc_addr 流程控制图

在函数开始处,由于在样本中硬编码了多达3个C2域名,所以生成随机数以从第一和第二个C2域名中随机选择一个,如图2所示。

 

图2 resolv_cnc_addr 函数第一部分

如果被选中的C2域名无法解析,则bot并不解析未选择的域名或第三域名,而是将根据当前日期判断是决定是否去执行DGA代码分支还是去解析第三个C2域名,如图3。

 

图3 决定是否进入DGA 代码分支

从上述代码片段我们可以看出,如果当前日期在11月1日和12月3日之间,将去解析第3个C2域名。否则将执行DGA代码分支。这可以理解为作者不希望DGA域名在12月4日之前被启用,这也恰好被前文提及首个被注册的Mirai DGA域名对应于12月4日所映证。 DGA主函数名为dgagendomain。域名完全是基于种子数字和当前日期生成的。种子通过调用strtol()从硬编码的十六进制格式字符串进行转换。看起来字符串“‘€‘€”是一个错误的配置,这会导致strtol()总是返回0。

代码中通过调用time()和localtime()的C库函数得到本地日期。但只有月和日被使用,如图4所示。

 

图4 dga_gen_domain 函数片段

L2域名是通过反复执行图5所示的代码块来生成的。其长度由$ t5和$ t2确定,它们的值在图4中设置,从中我们可以确定L2域名长度是12。

 

图5 生成L2域名的循环代码片段

TLD(Top Level Domain)由寄存器$S0中的残余值确定,如图6所示。 我们可以看到在这里使用了3个TLD。

 

图6 确定TLD 的代码分支

IOC

目前,DGA相关的特性存在于如下样本,所有这些DGA样本中的种子字符串和算法都完全相同:

005241cf76d31673a752a76bb0ba711805891dbabc42a36f33c30535f09315550eb51d584712485300ad8e812677394115b35cfff4129b26c0f07bd4be462ba02da64ae2f8b1e8b75063760abfc94ecf41ba9f3d13ce33526da52407e2f0589d4a8145ae760385c1c000113a9ea00a3a551380681560849cee3de36329ba4ed372bbfc1ff6621a278e16cfc91906109f73f4312cc6f5067e505bc54c3b02b5697d490eedc5b46aff00ffaaec7004e2a8863dcf82883c885b0686dce747dcf502bf136fb3b350a96fd1003b8557bb758abf650d39eb603d92973052ca80a4fddad89b1be09de36e326611a2abbedb8751dbd92b08cbff8455ff76c453ff704dc6eba670256b816e2d11f107f629d08494

样本中的硬编码C2域名如下:

meonlinetechsupport

我们将密切关注DGA变种的后续变化,敬请关注后续更新。

关键字:MiraiDGA代码片段

本文摘自:安全牛

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^