Jason Sheh

关于恶意域名关联的小看法


0x00 起因

最近在公司实习,任务多是对提供的恶意域名进行关联挖掘,从已知中发现未知。但目前由于数据量不足,技术不够成熟等等限制,并没能够取得理想的效果,但总结阶段性成果仍然是必要的。

0x01 思路

目前,能从公司的蜜罐中提取若干C2域名,我需要通过响应手段关联出相关域名。
关联域名的思路:

  1. whois信息反查
  2. 历史ip信息

whois信息主要是通过注册邮箱和注册人反查出,同一个体注册的其他邮箱,这方面准确性和速度都比较好,但由于whois数据库数据量太小,越来越多域名注册商提供了隐私保护导致,whois信息效果越来越差,不过在之后对比的环节会有一定的用处

历史IP信息通过,查出恶意域名的历史绑定IP信息,反差哪些其他域名也绑定过该IP,匹配的IP量越多则越可疑。缺点是需要大量的pdns数据,这方面目前借助第三方数据源实现,效果尚可。


对关联域名分析的思路:

  1. whois信息对比
  2. dns信息对比
  3. 端口服务信息对比
  4. 域名本身的文本相似度

whois信息对比包括了,注册商,注册人,注册邮箱,注册时间,到期时间,这些信息越接近越有可能是同一个体注册的。但由于隐私保护的存在,可能只有注册时间和到期时间能够看出变化,这能提供极少量的判断依据。

dns信息对比包括了,dns的ttl,嗯,好像就没了,也是只能提供极少量的依据

端口服务信息则是目前我采取的主要手段,通过扫描不同域名的端口服务开放情况,版本号来进行相似度的比较,通常同一种类型的域名会开放相同的端口,版本号也会较为统一,从而关联相似域名。

恶意域名本身也会存在一定相似度,如长度,杂乱程度,包含特定关键字等等

0x02 实现

查找whois获取email,若数据库没数据或这隐私保护则通过vt查找ip绑定过的其他历史域名

对域名查找whois信息,提取关键字段

对域名进行dns请求,提取返回ttl,计算Levenshtein距离

对域名masscan扫描开放端口+nmap扫描banner信息

对域名本身,whois信息,banner信息使用keras进行td/idf计算,并计算出余弦距离,然后把上述所有数据组合成4维矩阵,通过sklearn提供的Kmeans算法接口进行聚类从而关联出相似域名