导语:本文不是谈论具体的硬件或版本选择,我要谈论的是环境搭建的架构; 在后续的文章中,我将讨论如何实现我设计的基础架构来支持渗透测试的具体方法,但是本文我们将专注于高级别的环境搭建。这种设计对于某些攻击者来说是合理安全,快速且极
我对我的笔记本电脑配置有很多疑问, 比如“是选择Windows还是Mac?”,以及是否“得有一个首选的以太网网卡芯片组”。
实际上,除了第一个问题是“非必须”考虑的之外,大多数情况下电脑配置都会有所不同。本文不是谈论具体的硬件或版本选择,我要谈论的是环境搭建的架构; 在后续的文章中,我将讨论如何实现我设计的基础架构来支持渗透测试的具体方法,但是本文我们将专注于高级别的环境搭建。这种设计对于某些攻击者来说是合理安全,快速且极其灵活的。
配置要求
让我们从评估笔记本电脑的一些基本要求开始。
· 合理且安全
· 细粒度的网络控制
· 可以访问评估目标公司的域或内部资源,同时可以访问客户端系统
· 可以用作长期的存储工具,文档和其他文件
最后一项往往是最棘手的部分; 对于red team来说,他们永远不会知道在实际的渗透测试中会遇到什么,通常他们认为渗透测试环境只需要包含他们平时用的最多的一些功能就够了,并且他们也希望渗透测试环境对于保存的内容没有任何限制。但是,在渗透测试环境中保存的东西可能会带来一些危险,特别是对于有多个客户租户的机器来说。
配置架构
Laptop Architecture
高级别的分解方案
让我们站在一个较高的层面上,将配置问题分解一下。用于渗透测试的笔记本电脑基本上是一个具有极简主义用户界面的虚拟机管理程序,所有的工作环境最后都需要分解为虚拟机。对于这个问题,也许有人会说“这可以用Qubes!”,不过在回答这个问题之前,我们要搞清楚当前的问题是在Qubes之后出现的替代产品Xen在该领域的一些项目中并没有被使用很久,并且它具有更细粒度的控制级别。Qubes的设计和最佳使用场景是防守端点; 它不是为攻击性工作而设计的,并不包含像Kali Linux这样的稳定构建所需的测试环境,所以这就意味着Qubes不适用于渗透测试和漏洞利用等目的。我一般都会关注Qubes项目,并且会在我的其他硬件上运行它。
为每个客户端或项目提供基本的相互关联的VM链接克隆,这样可以减少磁盘空间,并确保只需要定期更新和配置少量VM就可以满足需求。
我们有三个网络区域和一个独立的VM。
· PfSense独立VM
· 信任区域
· DMZ
· 漏洞区域
网络配置
PfSense控制各个区域之间的路由,其中信任区域包含了已加入域的Windows主机,这些主机用于内部企业访问,以及包含专有项目的VM; DMZ包含了不确定是否恶意但不受信任的项目。这通常包括通过网页浏览搜索已知漏洞; 然后是漏洞区域,所有攻击流量和恶意软件都来自这里并且会被严格检查。每个区域只能与他们需要的网络资源进行通信,而不会通过PfSense防火墙强制执行。信任区域仅被授予出站到公司VPN端点的权限; DMZ拥有接入互联网的一般权限,但没有别的特殊权限; 并且漏洞区域被授予了访问客户网络的权限,用于多个客户端各自的工作。
注意,这里为什么是“多个客户端”,因为这是这个架构真正有亮点的地方。通常情况下,团队中的成员正在为多个客户提供双重职责。有时是因为多个项目受到了许可限制,有时候也只是人才的可用性问题。无论如何,我们都会认为某个客户端与另一个客户端的攻击流量混在一起是很糟糕的事情。面对现实吧。使用VPN很糟糕; 客户往往对流量的想法会有很大的不同。有些客户端提供隧道传输所有内容的VPN,有些客户端只提供在其地址范围内的隧道传输项目的VPN。这意味着,最终,你可能会通过本地网络获得大量流量,这不是一件好事情。即使是糟糕的网络监控系统,这样的流量也可以轻松捕获。
使用PfSense,我们可以在每个特定的VM创建的位置为这些VM创建规则。这样就不会有超出范围的项目和错误的漏洞被错误的发送到相应的遗留系统。
硬件配置
我们都知道,从理论上讲,虚拟机管理程序是健壮且安全的; 实际上,事情比这要复杂一点。最常见的漏洞通常是环境而不是核心虚拟机管理程序:虚拟机扩展,如复制/粘贴和虚拟化接口,或者像Spectre这样的攻击系统。但是,系统仍然可以做到合理安全。最重要的是,它们在可用的同时也可以相当安全。
磁盘加密
全盘加密(FDE)是一些专家争论的问题。我应该使用像LUKS(软件FDE)这样的东西吗?我是否应该花钱购买符合OPAL标准的Self Encrypting Drive(SED)?
嗯,答案取决于你的威胁模型,以及驱动器本身以外的硬件选择。FDE软件易受s1-3睡眠状态或锁定屏幕上的冷启动攻击,以及直接内存访问(DMA)攻击。这些DMA接口包括Firewire,Thunderbolt,USB 3.0+和PCIe,这取决于系统配置,利用这些缺陷是存在可能性的,但并不能忽视。SED可以抵御这些攻击,关键是永远不会在内存中,并且没有性能损失。但是,它们易受热交换攻击,其中数据线连接到不同的机器,同时保持驱动器通电和解锁。
攻击SED与FDE软件系统有很好的文档记录,但是超出了本文的范围。就个人而言,我选择了SED,因为我的笔记本电脑硬件在软重启和数据丢失时执行了OPAL配置的驱动器断电。不过,你应该根据你手头上的硬件对此进行评估。
扩展
无论虚拟机是使用桌面环境还是控制台,都应该配置访客扩展,但我们可以在访客访问这一方面降低风险。默认情况下禁用复制/粘贴等项目,并根据具体情况启用相应的配置。
但是共享文件夹该怎么样设置呢?在所有的VM和存储系统中,这些主机都可能存储了尚未公开的客户端程序,渗透测试报告和一些漏洞的历史。另一方面,Kali Linux并不是一个非常安全的操作系统(尽管它可以停止以root身份运行所有内容!)。现在我们该如何减轻攻击呢?
首先,除非是必须的,否则不要挂载共享文件夹; 我将基本镜像设置为具有其配置但禁用了自动安装。当VM需要它时,我打开开关并指定特定的共享路径。
其次,请使用本地绑定的方式在主机上挂载共享文件夹。使用此方法,可以设置强制fmask,dmask和noexec,来禁用文件上的执行标志并设置强制执行权限。这可以防止VM在主机上的其他用户的上下文中写入文件到其他项目中,也可以从文件上的execute / setuid标志位进行设置来防止写入文件。这是一个巧妙的技巧,使用本地绑定的方式允许对主机上的特定文件夹执行此操作。如果将数据存储在单独的分区上,那么请使用常规方法而不是通过绑定来挂载分区。
看,现在我们就已经解决了实际存在的攻击向量!
更大的架构
在更大的规划中,有一个配置强大的笔记本电脑是很不错的事情。我们来看看如何将其与红队的基础架构联系起来。
基础架构
在支持的基础架构中,我们在诸如Google Cloud之类的提供商中运行PfSense镜像,后端为C2。当然,这可以在任何外部可用的环境中运行。
使用站点到站点的隧道,我们可以保护笔记本电脑上的所有虚拟机,而无需为每个虚拟机分配VPN连接,而是让PfSense镜像处理负载。这有助于减轻VPN tun和tap接口对工具链的影响,这些工具链通常会随着本地网络的变化而中断。同时,我们的C2有效载荷(例如Beacon)可以访问云端PfSense镜像的外部地址。
但是,假设你的工具需要直接回调; 由于站点到站点,云端PfSense可以将网络连接转发给相应的红队成员。每个团队成员都可以根据需要打开端口并转发到他们的笔记本电脑(本地PfSense可以发送到特定的VM),或者发送到后端的主机,例如Cobalt Strike团队服务器。我始终建议将各个红色团队的不同阶段分成不同的服务器,并且由于PfSense中的多WAN支持,相同的路由器和规则系统可以在整个生命周期之后参与处理同一团队和资源集之间的多个C2站点。
在较高的层面上,这就是我运行大部分基础设施来实现红色团队相互合作的方式; 将来我会写一些关于如何让它运行的细节。PfSense拥有令人惊叹的配置文档,我强烈的为需要功能强大且可靠的路由和防火墙系统的人推荐它。