导语:关于红队的攻击基础设施是我以前多次谈及的一个话题,但总是谈论了一部分。我想写一些关于攻击基础设施设计过程背后的一些思考过程。在十月份,我有幸在明尼阿波利斯的ArcticCon会议上讨论了这个议题,这是一个为红军团队做的安全大会。
关于红队的攻击基础设施是我以前多次谈及的一个话题,但总是谈论了一部分。我想写一些关于攻击基础设施设计过程背后的一些思考过程。在十月份,我有幸在明尼阿波利斯的ArcticCon会议上讨论了这个议题,这是一个为红军团队做的安全大会。我的演讲是“ 建立一个更好的护城河:设计有效且隐蔽的红军团队攻击基础设施”,这个议题涵盖了攻击基础设施是什么以及为什么,这比怎么样更为重要一些。在这篇文章中,我将讨论攻击基础设施设计需要考虑的因素,并扩展我在演讲中提出的一些观点。如果你想学习如何部署红军团队的攻击基础设施,请查看由Steve Borosh(@ 424f424f)和我在GitHub上维护的的红军团队基础设施 Wiki。
这篇博客文章的一些思路受到了许多前人研究工作的启发,特别是Raphael Mudge(@armitagehacker)。其中一些资源列在文章结尾的 “参考资料” 部分。
什么是隐蔽的红队攻击基础设施?
红队攻击基础设施是红队执行的后端组件。这包括了域,重定向器,SMTP服务器,有效载荷托管服务器以及命令和控制(C2)服务器。一般来说,简单的一种思维方式是攻击路径上的任何资产都不受目标组织或其用户的控制。这个描述当然也包括了正在被黑掉的基础设施。隐蔽的红队攻击基础设施的独特之处在于通过基础设施内部的控制措施,来规避检测,阻碍事件响应者,并在整个评估过程中保持灵活性。
例如,典型的渗透测试基础架构可能如下图所示:
渗透测试基础架构示例
攻击服务器通常提供钓鱼电子邮件的发送,有效载荷的托管和作为C2服务器的功能。目标网络和攻击服务器之间的唯一资源是一个域。这种设置意味着,如果攻击的任何单一组件(如钓鱼邮件)被识别为恶意攻击,那么很大一部分(或全部)攻击就会受到威胁。由于用于钓鱼的电子邮件可能和有效载荷托管的服务器是在同一个域名上,同时这也是C2连接的地方,因此一个的电子邮件和Web访问被阻止则可能会导致整个攻击路径失效。
在红队的评估中,能否被抓到是比赛的一部分。为了拿下目标网络,推动实现安全评估的目标,我们需要更好的基础设施。
这是一个隐蔽的红队攻击基础设施示例:
隐蔽的红队攻击基础设施示例
在这个设置中,我们有四个团队服务器,而不是一个。每个团队服务器按其功能(即网络钓鱼, C2短途连接和C2长途连接)进行隔离,并在其前面有一个重定向器,以便混淆来自事件响应者的真实团队服务器。这种设置与稍后介绍的其他功能相结合,增加了蓝队响应者根据某个资产的发现来阻止所有的攻击基础设施的难度。
虽然这个设置对于单个评估可能看起来很复杂或者可能过于矫枉过正,但是该设置提供了比简单设置更多的好处。运行具有自定义的流量配置文件和自定义的协议的个人团队服务器,可以使我们融入目标组织的网络基线,目的是希望减小被发现的可能性。如果基础架构被识别为可疑资产,那么利用重定向器,我们可以执行反应急响应的措施来限制或彻底消除蓝队对我们的攻击基础架构的可见性。如果蓝队开始在他们的防御系统中的阻止攻击组件,那么保持资产的天生分离,可以提供很大的韧性。最后,这种风格的攻击基础设施提供了巨大的灵活性,可以适应随着渗透测试的进行而出现的情况。
现在,我们来谈谈如何设计一个隐蔽的攻击基础设施。设计过程通常涉及并需要一些测试。你的攻击基础架构应根据目标组织或实体的评估进行定制。红队为每个目标环境定制方法,工具和攻击路径。而攻击基础设施应该不会有什么不同。
一般因素
隔离 ——所有资产应按功能进行隔离。通常,这些功能包括托管有效载荷,发起电子邮件网络钓鱼, C2短途连接和C2长途连接。有关短途连接与长途连接服务器相关的更多信息,请查看Raphael Mudge发布的红队运营基础架构。简而言之,短途连接服务器应该用于主要操作,而长途连接服务器应该主要用于持久性和重新接入网络。你可能会在给定时间内使用每个资产的多个实例。每个单独的资产的配置方式应该允许蓝队在被攻击(检测到或阻止)时能够滚动单个组件,而不会影响攻击基础架构。例如,如果电子邮件网络钓鱼活动被摧毁,蓝队就不应该通过阻止发起电子邮件的域名(发件人地址)来阻止你的C2连接。
重定向器 - 在每个后端服务器前使用重定向器。重定向器为我们后端的团队服务器提供了混淆处理,并且可以提供一些高级的筛选选项,具体取决于重定向器的类型,这可能会进一步妨碍蓝队的调查分析。
矫枉过正 - 不要过分的设计。攻击基础设施应该以实现目标所需的复杂度来设计就好,蓝队并不会把所有的伎俩都用上。由于在设计上存在不必要的复杂性,我们不希望在交战中压倒蓝队,也不想让我们自己失败。如果你的测试是要进行防御能力测试(应该就像所有的红队评估一样),建立基础设施以尽可能地服务于这些测试是个好主意。
尝试在游戏中反制控制 - 在可能的情况下,尝试构建对蓝队控制的防御,或尝试完全颠覆流程。例如,如果在进行预钓鱼攻击活动期间,你确定了目标组织的电子邮件客户端并通过UserAgent发现目标使用了过时的操作系统,那么,根据客户端的不同重定向你的钓鱼网站或设置有效载荷的匹配请求可以有助于将你的网络钓鱼邮件投递到目标人员的电子邮件收件箱里。
测试时长 - 在设计基础架构时要考虑测试时长。一个月的测试时长与一年的测试时长的结果会有很大的不同。例如,为期一个月的测试可能只能利用部署在少数服务器上的一种持久性机制,而长期评估可能需要跨越数十台主机的多个持久性机制。
测试 - 基础设施原语应在实施之前进行压力测试,并将其纳入基础设施。需要测试网络延迟、服务器负载性能和潜在的网络检测以及部署难度等方面。只需要使用一个命令执行一次DNS信标任务并返回大量的输出来了解为什么测试和了解你的工具是非常重要的一件事情。
及时推出新的基础设施 - 在你的评估过程中,你的基础设施会有一部分将被蓝队“摧毁”。所以重要的是不要过分依赖于任何特定的设置,并且在确定蓝队已经阻止或调查分析了这一部分时,能够推出新的基础设施,这能够使存在风险的基础设施的其余部分继续发挥作用。
将一切记录在文档中 —— 你的每一个攻击基础设施都应该被彻底的进行文档记录。至少应记录每个资产的主机名,IP,使用的协议,目的地址,通信/可配置的C2配置文件和提供者。从本质上讲,你或你的客户可能想知道的任何一个攻击基础设施应该记录在服务器之外。虽然文档的维护工作很无聊,当你需要进行即时修改或在评估完成后划掉已经解决的问题时,即使是简单的设置也会变得很复杂,并且会导致严重的问题。
域名
分类 - 你的攻击基础架构设置中使用的每个域名都应该进行分类,除非你是在模拟一个没有使用域名分类的目标。域名分类可以立即增加你的社交活动的声誉或出现明显变化的C2流量。
预分类与本土 - 有两种主要的方法来获取分类域名。首先是购买已经被合法使用并且通过Web进行分类的域名。在域名被提交重新评估之前,之前的域名的分类依然存在,例如蓝队在评估过程中。另一种方法是购买未分类过的或新的域名,并把域名进行分类。一般来说,你可以通过购买多个域名并将请求重定向到伪装成目标的域名的Web页面,以及将域名提交给多个Web分类引擎来完成。这种方法比购买预先分类的域名的好处在于,你可以买到你想要的域名,而不是依赖于哪些域名可用,并且使域名的使用时间比使用预先分类的域名更长。不过,这种方法增加了资金和时间资源的成本。
选择域名 - 选择域名时,最重要的考虑因素是要找到一个与目标环境的基线网络流量能融为一体,或者与目标使用的社交活动相匹配的域名。一般来说,比较给力的选择包括模仿目标域名(字母打错的域名或看起来比较类似的域名),类似于主流的服务(如Google,微软)或通用行业域名(如针对目标投资公司的股票提示域名)的域名。请注意,选择一个看起来像知名公司的域名你可能需要负一些责任,比如采取行动来收回域名或寻求损害赔偿。在为非目标实体购买类似的域名之前,请确保你的企业或组织能够接受这类风险。
有效载荷
选择一个有效载荷 —— 一些常用的有效载荷类型(在写本文时)包括HTML应用程序(HTA),Office文档中的嵌入式OLE对象,Office宏和Windows快捷方式(LNK)文件。有效载荷的执行是攻击者和EDR产品之间的一种快速变化的猫捉老鼠的游戏,所以重要的是红队需要及时的了解公司环境中常见的工作环境,并且如果可能的话,需要搞清楚在目标环境中有可能发挥什么作用。有关OSINT期间可以收集的控制环境的任何信息都可以帮助你对使用的最佳选项进行有根据的猜测。有效载荷选择过程的关键部分是理解不同有效载荷类型在底层进行的操作以及通常情况下安全控制是如何检测(或未能检测到)这些操作的。
投递交付方式 - 在电子邮件网络钓鱼中,有两种主要的有效载荷投递方式:附件和下载链接。在成熟的环境中,附件通常通过某种反病毒解决方案进行评估。通常,这些解决方案在沙箱中运行有效载荷来确定附件是否是恶意的。通过下载链接提供的有效载荷也可以由这些反病毒解决方案产品下载并在沙盒中进行评估。应该在你的有效载荷和投递方法中采取措施,以降低这些反病毒解决方案将你的有效载荷标记为风险程序。然而,下载链接这种方式提供了一些比邮件附件更为关键的优势。如果你以及确定初始的有效载荷不能在主机上正常工作,那么下载有效载荷的链接是可以进行热插拔的,有效载荷的服务器访问日志可以记录蓝队在应急响应过程中的一些操作,这为红队提供了非常有价值信息,红队可以使用重定向对这些响应过程采取“反响应”的操作。下载链接可以托管在你控制的网络服务器或云存储服务上,如果你接受潜在的违反服务条款的风险,那么可以提升域名的声誉。
有效载荷重定向 - 有效载荷重定向器应该用于托管“社工”用到的有效载荷的所有团队服务器之前。Web重定向器分为两大部分:“哑管道”和过滤器。“哑管道”重定向器(即socat和iptables)将一个端口上接收到的流量盲目地代理到另一个IP或端口上。无论请求中包含了什么内容,所有的连接都会被转发,这些重定向器通常会默认的提供有限的日志记录,从而降低了监视流量的能力。过滤重定向器(例如,Apache mod_rewrite和nginx)允许根据请求中的不同属性(如请求URI或UserAgent)对每个请求执行操作。这些重定向器提供了一些方法来为你的后端基础架构构建一些非常强大的混淆能力,并允许你潜在地颠覆蓝队的调查分析或应急响应。过滤重定向器通常是更好的选择,但是它们确实需要更长的时间才能完成配置,如果使用复杂的筛选规则集,则设置起来可能更难一些。
访问控制选项 - 如果你要在下载链接上执行有效载荷重定向,请考虑在你的有效载荷中构建一些访问控制,以防止每个蓝队成员和调查分析解决方案获取到你的恶意链接。有效的访问控制选项包括IP或基于指纹的重定向、有效载荷链接以及无效的URI重定向。随着安全评估的继续,你在重定向器中构建的保护措施可能会发生变化,你将需要观察蓝队是如何应对你的攻击活动的。