DNSMon: 用DNS数据进行威胁发现(3)
Share this

DNSMon: 用DNS数据进行威胁发现(3)

--- Linux,Windows,Android,一个都不能少

背景

本文是介绍DNSMon在生产威胁情报(域名IoC)系列文章的第三篇。

DNS协议作为互联网的一项基础核心协议,是互联网得以正常运行的基石之一。在祖国960万平方公里的土地上,那一张纵横交错的数据网络里,每一秒都有数万亿计的DNS数据包在高速穿梭着,它们或来自于机房的服务器,或来自于办公室的电脑,或来自于我们身边的手机,或来自于场景繁多的IoT,总之DNS无处不在。

生长于斯的DNSMon,依托DNS协议的基础性,天然具备宽广的视野,对那些发生在不同行业或不同平台的安全事件,都能有所涉猎。在DNSMon科普系列的前两篇博文中,第一篇提及的Skidmap是感染Linux平台的云主机;而第二篇提及的一组域名是网吧的Windows平台被感染后发出的;本文则是一个涉及Android平台的案例。

如果仔细阅读文章并理解其中内容,可以看到DNSMon在面对3个差异巨大的平台时,所使用的知识点或者说规则并没有根本性的变化,几乎做到了无差别预警。

对未知威胁的拦截

最近,我们注意到DMSMon从2021-01-10开始,陆续对一组结构相似的域名报黑并自动拦截。

登录系统查看采集到的关联信息,我们看到这是一组跟Android平台相关的恶意域名。正好系列文章没有介绍过跟Android平台相关的博文,而前两篇赶巧一篇跟Linux相关,一篇跟Windows有关,为科普DNSMon而写篇Android的,集齐3大平台不失为一件趣事。

扩展同类域名

利用自动拦截域名的rdata和其它数据,发现DNSMon其实不止预警了上图列举的5个域名,在这个类别里一共有16个域名。

ereusingl[.]fun
lisersrath[.]fun
predition[.]fun
ningspais[.]top
ssuminat[.]top
erefulpat[.]top
stirlinebea[.]top
utionstro[.]top
lesseased[.]top
thinkdisen[.]top
edcarefe[.]fun
holidano[.]top
ehousan[.]top
swoulder[.]fun
riemanufa[.]top
ntrealing[.]fun

从活跃时间上看,这16个域名是依次投入使用的,且在2021年1月份有一个比较密集的投放期。

在写本文的过程中,又陆续看到系统捕获到其它新的同类域名被投入使用,比如antdaugh[.]top,ngslalatfin[.]top等等,但为了行文的连贯,本文会略过这些新启用的域名。

判黑缘由

第一篇文章里,我们提及:

DNSMon的核心在于将海量的DNS数据与360所拥有安全相关数据(包括whois,web,沙箱,蜜罐,证书等等)交叉对比,并从中分析得出威胁情报IOC。

下面我们从系统获取的whois和沙箱这两个数据出发,举例分析数据特征并注解判黑缘由。当然,除了这些数据,DNSMon的判黑流程还依赖其它的特征数据,在此就不一一列举了。

1. whois

16个域名共分成两批注册,一批注册时间为2020-11-06,另一批为2020-12-23;注册的有效期时长:一年,且开启了隐私保护。

ereusingl.fun   createddate                 2020-11-06 10:10:12
ereusingl.fun   updateddate                 2020-11-06 10:20:27
ereusingl.fun   expiresdate                 2021-11-06 23:59:59
ereusingl.fun   status                      addPeriod | clientTransferProhibited | serverTransferProhibited
lisersrath.fun  createddate                 2020-11-06 10:10:12
lisersrath.fun  updateddate                 2020-11-06 10:20:20
lisersrath.fun  expiresdate                 2021-11-06 23:59:59
lisersrath.fun  status                      addPeriod | clientTransferProhibited | serverTransferProhibited
predition.fun   createddate                 2020-11-06 10:09:51
predition.fun   updateddate                 2020-11-06 10:15:26
predition.fun   expiresdate                 2021-11-06 23:59:59
predition.fun   status                      addPeriod | clientTransferProhibited | serverTransferProhibited
...

ningspais.top   createddate                 2020-12-23 15:57:59
ningspais.top   updateddate                 2021-01-06 10:37:20
ningspais.top   expiresdate                 2021-12-23 15:57:59
ningspais.top   status                      clientTransferProhibited
ssuminat.top    createddate                 2020-12-23 15:58:00
ssuminat.top    updateddate                 2021-01-06 10:37:23
ssuminat.top    expiresdate                 2021-12-23 15:58:00
ssuminat.top    status                      clientTransferProhibited
erefulpat.top   createddate                 2020-12-23 15:58:01
erefulpat.top   updateddate                 2021-01-06 10:37:24
erefulpat.top   expiresdate                 2021-12-23 15:58:01
erefulpat.top   status                      clientTransferProhibited
...

批量注册+新域名+注册有效期短+隐私保护,判黑可能性加分。

2. 沙箱

DNSMon对沙箱的数据,主要是关注样本的网络行为并提取样本到域名的访问关系,然后借助样本的评分反过来评估域名的得分。从关联图可以看到,访问域名的样本在系统里都有恶意标签(样本右上角标注了“黑色圆点”)。

根据标签传播算法,16个域名判黑的可能性加分。

借助DNSMon的一系列关联数据,最终可以判定这是一组恶意域名,且性质为downloader。为了清晰样本传播目的,我们对样本进行了的简单地逆向分析。

逆向分析

本文选取一个名为Your File Is Ready To Download.apk的样本作为分析对象,它的基本信息如下所示

MD5:230ca35f90c55bf9c46ddfb7980b632d
File type:Android
Magic:Zip archive data, at least v2.0 to extract
File size:543671 bytes

样本的Assets有一个dat文件,里面存有Base64编码的的配置信息。

它的内容是:

eyJjaWQiOiIxZGZiZTAzNS1kNzViLTQzYzgtYmMwMy1kYTg5YWU5NzU1ZjYiLCJ1cmxzIjpbImh0dHBzOi8vbGlzZXJzcmF0aC5mdW4iXSwiZm4iOiJZb3VyIEZpbGUgSXMgUmVhZHkgVG8gRG93bmxvYWQiLCJpbmZvIjoiYmxhbmtfIiwicm91dGVzIjp7Ing4NiI6Ii94ODYiLCJhcm02NC12OGEiOiIvYXJtNjQiLCJ4ODZfNjQiOiIveDY0IiwiYXJtZWFiaS12N2EiOiIvYXJtIn0sInVpZCI6Ijg4ODA5ODcwOTM1NTMzMTk3MiIsInNpZDEiOiI4ODgwOTg3MDkzNTUzMzE5NzIiLCJ0aWQiOiI3OTIyOTciLCJzaWQyIjoiIn0=

Base64解码后,得到以下json格式的配置信息,可以看到"urls"字段里存有我们要定性的域名。

{
    "cid": "1dfbe035-d75b-43c8-bc03-da89ae9755f6",
    "urls": [
        "https[:]//lisersrath.fun"
    ],
    "fn": "Your File Is Ready To Download",
    "info": "blank_",
    "routes": {
        "x86": "/x86",
        "arm64-v8a": "/arm64",
        "x86_64": "/x64",
        "armeabi-v7a": "/arm"
    },
    "uid": "888098709355331972",
    "sid1": "888098709355331972",
    "tid": "792297",
    "sid2": ""
}

通过以下代码片段向urls中的域名请求下载数据,

这个过程会产生如下的URL:

lisersrath[.]fun/x86?v=0.0&l=6.9&p=Y29tLmludGVuc2l2ZS5zb3VuZA==
lisersrath[.]fun/x64?v=0.0&l=6.9&p=Y29tLmludGVuc2l2ZS5zb3VuZA==
lisersrath[.]fun/arm?v=0.0&l=6.9&p=Y29tLmludGVuc2l2ZS5zb3VuZA==

那下载的到底是什么呢?以x86参数为例,下载得到一个json文件(f7e8f0aec32ceb27d5e202d4b2b50812),它的apk字段指向一个新的APK文件(12098a59b35bcabb16bfeab887eb7f9f)。

经分析,新的APK文件隶属于FakeAdsBlocker家族,是一个隐蔽的广告程序,本文编写时,它在VT的查杀率不高,4/64。

此外,我们还发现了另外一类URL:

lisersrath[.]fun:80/?cid=c423cdff-6c1b-4052-859f-11223c65f1ad&tid=827722&sid1=3182549073271873173&sid2=1868&fn=synapse_x_key&uid=3182549073271873173&lp=blank&tit=UGxlYXNlIHdhaXQgYSBmZXcgbWludXRlcyB3aGlsZSB5b3VyIGZpbGUgaXMgYmVpbmcgZG93bmxvYWRlZC4uLgo=

以访问上面的域名为例,会下载一个名为synapse_x_key的APK(a384b97afd0f9432a71b27fa0ccd9667),它和上文分析的样本是同源的,

本身是下载&加载器,主要功能是下载执行FakeAdsBlocker。

至此简单地逆向分析告一段落,这一批域名的传播目的也十分明了了,它们用于传播FakeAdsBlocker Downloader以及FakeAdsBlocker。

新特征

在人工查看URL的过程中,我们注意到了一个之前没有见过的现象,就是一串完全相同的URL,不同时间随机下载样本,每次样本文件的MD5值都不一样。

比如:

https[:]//lisersrath.fun/?cid=f0e87e37-1bc6-4073-af71-efcc4a3eca22&tid=792297&sid1=7253754382927895919&sid2=&fn=Your%20File%20Is%20Ready%20To%20Download&uid=7253754382927895919&lp=steps

随机下载3次,文件名都是“Your File Is Ready To Download.apk”,但MD5值分别为:

ab2f4fde57fdcb56bce5ffa48c4d9069
21c99e0a12a7ce9dc0d91df9e29af4ad 
1e55fde5540147fbfac1c8060c449c58

再次随机挑选了另一个域名试验,还是一样的现象。

https[:]//holidano.top/?cid=a53fd199-f207-49dc-b5d7-aea0de14eee3&tid=899546&sid1=4009887093421271163&sid2=122_15319606&fn=MobileVPN&uid=4009887093421271163&lp=blank&tit=UGxlYXNlIHdhaXQgYSBmZXcgbWludXRlcyB3aGlsZSB5b3VyIGZpbGUgaXMgYmVpbmcgZG93bmxvYWRlZC4uLgo=

文件名“MobileVPN.apk”,MD5各不相同:

a3ad2ba6caf05275545d65cb2e8990d4
f4316d300116fa9de72f6f0ed3d29c28
56396eae0bbafd82701399d717ff3708

受此启发,我们提取了一条新特征,以新特征在数据库里搜索,找出历史上具备同一特征的数据,比如下图的URL:

随后,人工对所有符合条件的历史数据进行统计分析,以确定新特征对判黑动作的贡献值大小,最后决定是否合并到DNSMon系统里。可以说,特征的积累,对DNSMon这种海量数据分析挖掘系统来说是极其重要的,正是2014年至今的6年多时间里,系统沉淀了很多的规则,才有可能从每天千亿级别的DNS流量里提取出威胁情报(域名IOC),并向最终用户提供安全防御。

结论

得益于DNS的基础性,DNSMon具备宽广的视野,能无差别的看见Linux,Windows和Android平台上发生的安全事件。而之所以具备这种能力,主要的原因是系统积累了大量的跟安全相关的特征规则。

读者请注意,不要轻易自行模仿文中的判黑过程。工业化的IoC生产不仅包括基本的判定过程,还有复杂的过滤、防止误报、反馈修正、失效保护和自动化过程。书写本文的目的是为了便于读者了解DNSMon工作的一般原理,但工业化过程中各种魔鬼细节的复杂程度,已经远非行文所能描述。

版权声明

本文为360Netlab原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。

IoC

ereusingl[.]fun
lisersrath[.]fun
predition[.]fun
ningspais[.]top
ssuminat[.]top
erefulpat[.]top
stirlinebea[.]top
utionstro[.]top
lesseased[.]top
thinkdisen[.]top
edcarefe[.]fun
holidano[.]top
ehousan[.]top
swoulder[.]fun
riemanufa[.]top
ntrealing[.]fun