splunkit
- 关注

在过去五年中的安全漏洞或恶意软件样本,你会发现一个相当常见的现象:恶意软件(或数据泄露方法)使用:"动态 DNS "主机名连接到互联网。但是什么是动态 DNS(DDNS)?为什么恶意行为者会使用它?网络防御者如何在他们的网络中检测到它呢?
动态 DNS 域
动态 DNS 域允许子域具有可以快速更改的IP地址,通常是实时更改。合法用户利用这项服务,使用noip.com或duckdns.org等提供商创建易于记忆的子域(例如“myhouse.no-ip[.]org”),并将该子域指向他们的家庭路由器等ip地址。这意味着用户可以使用域名而不是难以记住的IP地址轻松连接到家庭网络。如果用户的家庭IP地址发生更改,他们可以使用新信息更新其动态DNS域。
可悲的是,该服务对合法用户如此有用的原因也是恶意行为者滥用它的原因。操作人可以将这些子域(邪恶的.duckdns[.]org)硬编码到他们的恶意软件中。这样,如果恶意软件通信的服务器基础设施不可用,参与者可以快速将子域(邪恶的.duckdns[.]org)的IP地址更改为其他地址。更先进的恶意软件甚至会使用域生成算法(DGA)创建随机的字符串作为子域(例如d0290d00xasdf.no-ip[.]org),该子域可能基于一年中的某一天。如果恶意软件作者拥有DGA的密钥(比如一年中的哪一天),他们就知道恶意软件将在哪一天指向哪个域。这种混淆会使网络防御者很难“屏蔽”恶意域名,因为它可能只在一天内有效。
Splunk It
下面是一个针对bro DNS日志的查询示例。显示了它的输出。
index=bro * | `ut_parse(query)` | lookup ddns dyndns_domains AS ut_domain | search isBad=True | stats count by ut_domain
但是,仅仅看到动态DNS提供商对网络防御者来说并没有那么有用。下图中,一个查询显示了连接到每个动态DNS域的所有子域。
index=bro * | `ut_parse(query)` | lookup ddns dyndns_domains AS ut_domain | search isBad=True | stats count by ut_domain | stats VALUES(ut_subdomain) by ut_domain | rename "VALUES"(ut_subdomain) AS subdomain
一旦掌握了这些信息,就可以在企业安全中创建仪表板、警报或关联搜索,每当用户机器联系到动态DNS提供商网络上托管的不寻常域时,这些搜索就会触发。你甚至可以写一个搜索,寻找具有高熵的动态DNS域的子域。
happy splunking!
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)