Mirai变种中的DGA

分享到:

发布时间:2016-12-12 16:02:57

作者:360网络安全研究院

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

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

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

概要

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

<A Few Observations of The New Mirai Variant on Port 7547>

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

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

1.  使用3个顶级域名:online/tech/support;

2.  L2域名固定长度12字符,每个字符从“a”到“z”中随机选择;

3.  域名仅由月、日和硬编码的种子字符串确定;

4.  每天只生成一个域名,因此最多存在365个 DGA域名;

5.  DGA域名仅在硬编码的C2域名无法解析时使用。

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

图0, 已经被注册的DGA域名

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

zugzwang.me email dlinchkravitz@gmail.com

样本和分析

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

1. MD5: bf136fb3b350a96fd1003b8557bb758a

2. SHA256: 971156ec3dca4fa5c53723863966ed165d546a184f3c8ded008b029fd59d6a5a

3. 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()从硬编码的十六进制格式字符串进行转换。看起来字符串“x90x91x80x90x90x91x80x90”是一个错误的配置,这会导致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样本中的种子字符串和算法都完全相同:

005241cf76d31673a752a76bb0ba7118
05891dbabc42a36f33c30535f0931555
0eb51d584712485300ad8e8126773941
15b35cfff4129b26c0f07bd4be462ba0
2da64ae2f8b1e8b75063760abfc94ecf
41ba9f3d13ce33526da52407e2f0589d
4a8145ae760385c1c000113a9ea00a3a
551380681560849cee3de36329ba4ed3
72bbfc1ff6621a278e16cfc91906109f
73f4312cc6f5067e505bc54c3b02b569
7d490eedc5b46aff00ffaaec7004e2a8
863dcf82883c885b0686dce747dcf502
bf136fb3b350a96fd1003b8557bb758a
bf650d39eb603d92973052ca80a4fdda
d89b1be09de36e326611a2abbedb8751
dbd92b08cbff8455ff76c453ff704dc6
eba670256b816e2d11f107f629d08494

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

zugzwang.me
tr069.online
tr069.tech tr069.support

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

附:360网络安全研究院对Mirai追踪过程

360网络安全研究院基于对美国和德国两次断网事件以及mirai僵尸网络的理解,梳理了Miral追踪的脉络(以下均为北京时间):

2016-11-07,kenzo发布了一个针对7547端口上路由器等设备的TR-069/TR-064相关的安全公告;

2016-11-26 21:27:23 360网络安全研究院首次探测到mirai僵尸网络发起了针对 7547 端口的扫描;

2016-11-26 ~ 2016-11-28,端口7547上的mirai僵尸网络规模积累到足以影响大面积网络;

2016-11-27 17:04,360网络安全研究院监测到又出现一个变种,和26日的新变种类似,这次的变种出现了扫描TCP端口5555的行为。

截至到2016-11-28 telekom 德国电信累积大约90万个路由器被mirai僵尸网络的扫描过程打宕,网络大面积受影响;

2016-11-28 ~ 至今 telekom 德国电信在自身网络范围内采取措施遏制mirai僵尸网络的扫描过程。

截止到12月9日,360网络安全研究院设置的蜜罐已从6个托管服务器捕获了53个独立样本。

2016年12初,在分析其中一个新样本时,360网络安全研究的Qu Wenji发现一些类似DGA的代码,并猜测变种中包含有DGA功能,这个猜测很快就从我们的沙箱数据中得到验证。

本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/85102

转载于:https://www.cnblogs.com/bonelee/p/8856536.html

DGA域名——可以每天只生成一个域名,因此最多存在365个 DGA域名;相关推荐

  1. spark中saveAsTextFile如何最终生成一个文件

    原文地址:http://www.cnblogs.com/029zz010buct/p/4685173.html -------------------------------------------- ...

  2. 使用py2exe生成一个exe文件

    在windows中,使用py2exe将py脚本转换成exe文件时,在dist目录下会有zip,dll等其他文件.如果想要只生成一个可单独运行的exe文件,需要在setup.py文件中添加bundle_ ...

  3. php随机生成域名,php生成短域名函数,php生成域名函数

    php生成短域名函数,php生成域名函数 php生成短域名函数 public function createRandCode($string) { $code = ''; $hex_code = '1 ...

  4. 手把手教你以太坊ENS域名注册,抢做一个3000万的发财梦!

    1 文章摘要 [本文目标] 通过本文学习,可以抢注ENS域名,便于后续增值和转账使用. [前置条件] 本文无技术前置条件,但是需要有超过0.05个ETH的以太坊地址. [收获] 1)注册到ENS以太坊 ...

  5. 用.htaccess实现一个网站空间建N个网站 多域名绑定

    虚拟主机只支持根目录绑定域名,如何让网站支持多个域名呢?如果虚拟主机支持.htaccess,可以利用.htacces实现一个网站空间可以用多个二级域名指向多个二级目录,建立多个网站.以独立IP虚拟主机 ...

  6. 网站域名在微信内显示已停止访问此页面解决方案,绿标防红链接生成,域名跳转链接生成

    网站域名在微信内显示已停止访问此页面解决方案,绿标防红链接生成,域名跳转链接生成 大家是否在刚大家好网站正准备推广没多久就出现了域名停止访问的问题,任何自己辛辛苦苦做的网站一次性就作废了很苦恼 下面告 ...

  7. 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)

    2019独角兽企业重金招聘Python工程师标准>>> 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)  [root@centos6 ~]# vi ...

  8. 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 NN 个 1 到 1000 之间的随机整数(N \leq 100N≤100),对于其中重复的数字,只保留一个,把其余相

    自己用了非常朴素的方法将本题解了出来. 三个for循环和两个sort,哈哈哈,xswl. 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 NN 个 1 到 1000 ...

  9. 注册网站域名多少钱_注册一个域名多少钱一年

    .com 现在的域名后缀可谓是千奇百样,按使用情况来分可以是主流域名和非主流域名,按地域来分可以说国内域名和国外域名,按开放顺序来分又可以是顶级域名和新顶级域名-- 并且每种域名都有其代表的行业或领域 ...

最新文章

  1. java怎么将加载图片消除_Java中加载图片的方法
  2. 牛客 - 骚区间(线段树+思维)
  3. java拳皇地下城_拳皇(Java简单的小程序)代码实例
  4. EIGRP的successor与fessible successor
  5. 浅谈块级元素和行级元素的相对定位和绝对定位问题
  6. Aeroplane chess HDU - 4405(期望dp)
  7. [Leetcode][第329题][JAVA][矩阵中的最长递增路径][DFS][拓扑排序]
  8. Luogu P1073 最优贸易(NOIp提高组 2009)分层图最短路写法
  9. 将[a=1,b=2] 转为对象
  10. Microsoft Visio 专业版 2019
  11. 08版新精粹45集实战技巧视频教程免费下载wordExcel
  12. 浏览器播放RTSP视频流几种解决方案
  13. 北邮通信博士万字长文,带你秒懂 4G/5G 区别!
  14. The number of method references in a .dex file cannot exceed 64K
  15. 华为什么出鸿蒙系统,华为已官宣鸿蒙,中兴和魅族的态度却截然不同, 到底啥原因?...
  16. 用DIV+CSS技术设计的网页与实现制作【体育文化】dreamweaver学生网页设计
  17. 什么是命名路由?命名路由,命名路由意义
  18. 一个请假单流程的实现(struts2.1.8+spring2.5+hibernate3集成jbpm4.3
  19. Cannot launch SDK manager
  20. 实施工程师如何做好一次调研

热门文章

  1. CentOS6.3环境下openresty安装drizzle模块
  2. html自动刷新倒计时,基于JavaScript实现自动更新倒计时效果
  3. ajax可以在localhost上用吗_你还不知道跨域问题是怎样造成的吗?
  4. 管理系统中计算机应用知识总结,自考《管理系统中计算机应用》章节知识点复习:管理信息...
  5. Linux中look命令,如何在Linux上使用look命令 | MOS86
  6. mysql的一个字段最多能插入多少数据?我们存入text类型的值上限是多大?
  7. java责任链模式的三种方式,分享一点面试小经验
  8. Parallels Desktop 16 Win11虚拟机将继续正常运作,但将无法连接网络
  9. python【力扣LeetCode算法题库】169-多数元素
  10. 搭建Ubuntu18.04+Anaconda3.x+Pycharm+SimpleITK(三)