采用独特域名生成算法的Tofsee僵尸网络

安全 黑客攻防 算法
瑞士政府计算机应急响应中心(GovCERT)近日发现了Tofsee僵尸网络恶意软件的新样本,让他们感到惊讶是,Tofsee的域名竟然是由算法随机生成的,目前他们已经恢复出了算法的细节,并将未来12个月中可能出现的域名列入了黑名单。

概述

瑞士政府计算机应急响应中心(GovCERT)近日发现了Tofsee僵尸网络恶意软件的新样本,让他们感到惊讶是,Tofsee的域名竟然是由算法随机生成的,目前他们已经恢复出了算法的细节,并将未来12个月中可能出现的域名列入了黑名单。

Tofsee

内容

今天,我们发现了一个有趣的恶意软件样本,我们确认出这是Tofsee恶意软件,它试图在几分钟内发送数百封垃圾邮件,然而,这并不是它出现在我们视线中的原因(我们每天分析数以千计的恶意软件样本,很多都有这样的行为)。这个特定的样本引起我们注意的原因是它所使用的域名查询方法。它使用的域名似乎是用算法生成的,并且大约有一半域名是瑞士国家顶级域名(ccTLD)。

Tofsee恶意软件

使用域名生成算法(DGAs)的恶意软件是非常罕见的。

分析

我们分析的这个Tofsee样本有一个非常新的时间戳:“2016年12月16日星期五,07:09:11”。

Tofsee样本有一个非常新的时间戳

生成种子

下面我们来探讨DGA的具体过程。首先,计算1974年1月1日0时到现在的秒数(下图中 0x40A0A0),然后在 0x0040A0A8处,用这个值加再加上126230400秒(UNIX纪元到1974年1月1日的秒数),实际上,通过上面的步骤得到了当前的UNIX时间。目前我们尚不清楚为什么要采用这种复杂的方法获取当前UNIX时间。这个Unix时间分别再除以四个整数,分别是60,60,24和7,最后得到的是从UNIX纪元到现在的周数。这个值用作域名生成算法的种子。因此域名的有效期是一周,按UTC时间,从每周四开始。

[[180565]]

在种子生成过程中还调用了一个伪随机数发生器(PRNG),并将结果模10,得到0到9中的一个数。这个随机数发生器采用Borland C/C++编译器使用的标准线性同余算法。

[[180566]]

r2的初始值是几乎不可预测的:

http://p9.qhimg.com/t017f039b6929529110.png

DGA

每次域名生成过程,共产生10个域名。

(域名级别是网址分类的一个标准,包括顶级域名、二级域名等。一个完整的域名由二个或二个以上部分组成,各部分之间用英文的句号"."来分隔,倒数第一个"."的右边部分称为顶级域名(TLD),顶级域名的左边部分字符串到下个"."为止称为二级域名(SLD),二级域名的左边部分称为三级域名,以此类推,每一级的域名控制它下一级域名的分配)

http://p3.qhimg.com/t01437f3d817117725e.png

在0x040A0FC 位置,根据种子生成一个随机字符串,例如周数。随后这个随机字符串在0x040A114又被复制了一次。例如:字符串dqg在这变成了dqgdqg,这个字符串的生成细节,待会我们回过头来再细讲。

生成第一个SLD时,用上面讲到的不可预测的随机数生成算法(0到9共10个数),选取“a”到“j”之间(共10个字母)的随机字母,添加到上面的字符串后面,就生成了二级域名,如dqgdqgc.ch。然后,从选取的字母开始,DGA会依次选取a到j中的字母,比如,如果第一次选取了“c”,后面的依次就是“d”,“e”,“f”,“g”,“h”,“j”,“a”,最后是“b”,共10个域名。

前5个域名的顶级域名设为“.ch”,剩下的设置为“.biz”

下面,我们再来看一下0x040A0FC处的随机字符串(上面的dqgdqg)是怎么生成的。

http://p8.qhimg.com/t014af2533284ea56e4.png

这段过程使用了最开始生成的种子r(周数),例如,根据1970年1月到现在的时间,换算成周数,利用周数得出随机字符串,如下:

利用周数得出随机字符串

例如:2016年12月20日,根据UNIX纪元计算出的周数是r=2450,string1 = 2450%26+‘a’=g,r=2450/26=94,因此第一个字母是g,同时r!=0,继续循环,直到r=0时结束,最后依次得到的字母是:g、q、d。随后,随机字符串gqd被倒序为dqg。随后又被复制了一次,得到dqgdqg。

程序实现

下面是用python实现在DGA算法,根据给定的日期,能打印出所有20个可能的域名。需要注意的是,对于每一个正在运行的Tofsee恶意软件,只会用到其中的一个域名。

[[180567]]

下面是在日期设置为2016年12月20日时的所有20个可能的域名:

http://p8.qhimg.com/t016954308b80ce2a24.png

域名列表

下表列出了未来52周的所有可能的域名,域名中括号包含了随机扩展,如dqgdqg{a..j}.{ch,biz}代表20个不同的域名。所有的时间都采用CET(中欧时间)时间。

http://p2.qhimg.com/t010d2f234dde25cddb.png

采取的行动

为了防止这种Tofsee僵尸网络操作者滥用瑞士域名空间(ccTLD .ch),我们和瑞士国家顶级域名注册机构已经采取了进一步的措施,所有可能的DGA域名的组合,在注册状态处已经被设置为非注册状态。因此在未来12个月,任何由DGA算法生成的域名,都不会被注册。

参考链接

https://www.easyaq.com/newsdetail/id/1946003877.shtml

责任编辑:赵宁宁 来源: 安全客
相关推荐

2016-12-28 10:45:39

2017-07-14 10:35:06

2011-03-28 14:57:58

不重复随机数列生成

2011-10-27 10:16:36

域名

2021-11-07 14:33:48

算法Pairwise功能

2015-08-25 11:07:58

2012-09-18 10:53:16

Nitol僵尸网络 微软

2021-01-21 11:04:42

Python 开发编程语言

2021-03-22 10:05:03

算法可视化大数据

2013-08-29 09:35:11

2022-01-27 10:06:29

生成算法分布式

2012-02-16 08:27:14

安全漏洞RSA算法

2011-04-14 10:25:01

2012-11-19 17:15:21

2009-09-24 17:29:36

2018-02-24 10:29:59

2015-12-09 16:21:41

2013-05-14 09:56:37

2010-01-05 13:27:54

2010-08-31 12:45:36

点赞
收藏

51CTO技术栈公众号