当我们谈论域、DNS和相关数据(如SSL证书或屏幕截图)的基本用例时,通常对我们正在谈论的内容以及为什么它很重要有一个基本的理解。对话内容包括:

  • 围绕可能在警报或事件中看到的域或IP开发更多上下文,以了解它是否代表威胁
  • 识别一个可观察对象(域、IP、文件等)与其他对象之间的连接,以枚举可能代表威胁行动者持有的资产或正在进行的活动的更大资产集
  • 通过研究基础设施的各个方面(不同领域似乎存在的“工作”是什么),获得有关行为人可能为目标受害者准备的更多细节

但我们并不总是花那么多时间在我们如何才能真正发现那些潜在的危险交通流呢,以及如何将我们在受保护的环境中所看到的和从诸如DomainTools虹膜调查有远见DNSDB数据库。本博客试图深入研究这个领域。

网络取证联系人补丁

在公路车辆的世界里,这个术语印迹指的是轮胎实际与路面接触的部分——汽车是4个,摩托车是2个(除非是开了一个前轮,但那是另一个博客)。这款车在运输方面的所有花哨工程——发动机、传动系统、悬挂系统、刹车以及辅助系统——都在轮胎和路面之间相对较少的几平方英寸接触中发挥作用。

这就像受保护环境中的交通流,以及可以帮助安全人员理解这些流的数据。当与internet相关的事件发生时,数据包从客户机设备流到服务器,再从服务器流回来(是的,这是一种过度简化,但这个概念适用于我们这里的目的)。留下法医“轮胎痕迹”的地方是网络法医接触补丁。下面是一些例子:

  • 由客户端对Internet流量所指向的域进行的DNS查找
  • 客户端和Internet服务器之间的TCP或UDP流量
  • 客户端和服务器之间的应用层交换
  • 由代理或防火墙等中间设备应用的操作

如果我们要尽可能多地获得有关有问题的流量的上下文,那么这些地方就是要看的地方,因为一旦我们提取了关键的可观察数据——域名和IP地址——我们就可以打开流量的OSINT(开源情报)罐头,以了解更多关于真正发生的事情。

在所有正确的地方寻找域名

并不是在典型的受保护环境中记录的每个事件都有与之关联的域名。事实上,这样做的人相对较少。幸运的是,这些少数人存在于每个网络中,所以你拥有黄金的脉络;你只需要挖掘它们。

考虑一个基本的Web事务。假设一个用户——我们称她为sarah——访问了一个网站。如果她在办公室环境中工作(或者在家里工作,但是通过VPN将所有流量都通过办公室,这在许多远程工作环境中很常见),网络事务对我们来说将会有所不同,这取决于我们在哪里查看它。例如:

  • 如果我们查看的是该路由器的日志,我们不太可能看到域名。
  • 如果我们正在查看边缘路由器内部接口的数据包转储,我们将看到Sarah的IP地址、源端口、目标端口和Web服务器的IP地址。我们还可以从初始TLS握手的未加密部分提取服务器名(带域)。然而,包转储不会常规地大规模收集。
  • 如果我们有一个深层数据包检测防火墙或web代理,那么我们可能会看到来自HTTP/S交换的报头,这取决于日志记录的配置方式。这是“联系补丁”中的一个地方,在那里我们可以获得一个域名
  • 为了方便Sarah连接到网站,她的计算机对该网站的域名进行了DNS查找。如果DNS解析器正在记录它的查询(意思是,仅仅是对权威服务器的缓存缺失查找),那么我们将从这些日志中获得两个fer:它所解析的域和IP

在我们的日志和事件中获取域名是特别有价值的,这有几个原因,但这些都是我们已经解决的问题之前讨论(如果你好奇的话,请看看!)现在,让我们假设我们是解决(抱歉,不是抱歉!)域名是有价值的法医文物。

如果有关Sarah与该站点的连接的某些内容引发了警报——例如,如果其IP地址在危险地址的声誉列表中——我们将希望了解有关该事件的更多信息。但如果我们只有这个IP,我们就会面临一些挑战:

  • 如果警报只是说,“嘿,人类,这个受保护的IP地址连接到端口xx上的这个非常讨厌的IP地址,”那么我们必须做一些挖掘工作,以找出连接的真正含义
  • 我们可以对IP进行反向查找,看看上面托管了哪些域名,但这并不能告诉我们莎拉浏览了哪些域名,除非我们有其他确凿的数据
  • 如果我们不知道它是什么领域,那么我们对事件的描述就非常不完整

让我们从日志中找到这些域!

抓住汽车的狗?

如果我们使用所有的,甚至是大部分的日志源,这些日志源可能会给我们提供网络事务的域,我们将得到大量的数据。就像那条狗抓住了他追了这么多年的车一样,收集所有这些木头能给我们带来比我们想象中更多的东西。这就提出了一些我们必须解决的不同问题,例如:

  • 我们是否有必要的基础设施来捕获、存储和分析我们可能要收集的重要级别的日志数据?
  • 人类分析师(尤其是时间紧迫的分析师)有没有办法从海量数据中挑出具体的数据网络观察可能有法医学价值?

如果我们要保存每一个DNS记录,我们肯定会遇到一个相当大的数据管理问题。但如果我们预先过滤数据来缩小范围呢?我们是否可以使用一些方法来将记录缩减到更易于管理的水平,同时仍然保留从事件响应或主动防御的角度来看可能重要的内容?答案是肯定的。是的,有。

最有用的预过滤技术之一是消除与流行域请求相关的任何DNS日志数据。这将大大减少工作量,因为大多数用户(甚至在大多数环境中运行的非用户发起的自动化进程)都将流量发送到相对知名的资源。有几个可用的资源(在著名的Alexa网络排名服务的消亡),你可能会考虑获取这些数据:

  • 雄伟的几百万-这是一个类似pagerank的100万个域名列表,在集体共用/归属许可(CC-BY)下定期更新
  • 思科/Umbrella超过100万-这是一个用户系统dns请求列表,由思科“免费”发布
  • Farsight Security的被动DNS数据-这也是一个被动DNS列表,但更多的是按组织而不是按个人用户

但即便如此,可能也不足以缩小范围。如果非top-million日志数据的数量仍然太高,您可以考虑使用其他一些过滤标准:

  • 对于Web流量,过滤掉所有已分类的域(url)。只需要将未分类的域留作进一步审查即可。这假设你相信你的网络过滤器的分类;有时,过滤器很难对新领域进行分类
  • 考虑在您的环境中为某些子网设置优先级;例如,您可以选择只将此分析应用于来自所谓“皇冠上的宝石”资产的流量

如果您选择使用这些方法中的一种或多种,那么您现在就拥有了减少域列表的要素。你的目标是一个小得多的域名列表,在网络上或你的过滤器不知名。其中一些域名可能是无害的,比如你叔叔弗雷德的新虚荣邮票收集网站;但说到恶意域名,其中很大一部分是年轻的(最近创建的),而且相对不知名(所以它们不会出现在前100万的名单上)。

一个好的预过滤脚本可能是这样的:

预过滤脚本的行为可能是这样的

从噪音中获取信号

有了这个缩小范围的域列表,我们仍然需要一种程序化的方法来识别那些可能最有风险的域——特别是如果我们计划根据我们对它们的了解进行一些搜索或一些检测工程。这就是丰富域名发挥作用的地方,通常使用SIEM和SOAR等工具。在第2部分中,我们将了解如何进行这种充实。