导语:TL; DR 1. 所有操作员终端的CLI记录 2. 受限情况下的有效载荷投递 3. 为所有阶段设置的独立服务器/ C2 4. 在核心C2前面总是使用重定向器 5.
TL; DR
1. 所有操作员终端的CLI记录
2. 受限情况下的有效载荷投递
3. 为所有阶段设置的独立服务器/ C2
4. 在核心C2前面总是使用重定向器
5. 重定向器和C2上的完整会话及元数据网络捕获
6. 永远不要分享C2 IOC
你们中的一些人可能知道我最近做了一个巨大的转变,我从Veris Group的ATD团队(自适应威胁部门)跳槽到了索尼的内部红队。这当然是一个比较重大的职业转变,但是帮助发展和提高这种能力的机会很难弥补。这对我来说是一个梦想,要做到这一点,一些非常敬业和有才华的同事永远是必不可少。
这使我想起了我们今天这篇文章的主题,最近我花了大量的时间思考红军团队的架构,并想做一些分享。本文将涵盖安全性和成功参与的提示。虽然有些可能看起来是“过度”的,但你必须非常认真地对待这类工作,因为你手握着公司这个王国或者是渗透测试目标的钥匙!像影子经纪人这样的数据转储显然是方程式组所拥有的(不是说这是真实的或有效的数据),没有什么是安全的,我们必须降低风险,暴露有限的攻击面,只有这样我们才可以更好的帮助我们的客户。
1.所有操作员终端的CLI日志记录: 你可能会想,为什么我需要这种粒度和级别的数据?那么,我可以告诉你,我的一个好朋友@sixdub在一年前就让我搞清楚了为潜在的差异或有冲突的潜在完整性和数据保存方法的问题。我利用这个机会在我们的第一个OP中推动这个事情。下面是一个正确的解决方案和相关的构建工具:
lterm是一个小型的脚本,用来安装一个bash钩子来实现完整的终端日志记录。
下面是一个全局终端日志记录的演示视频:
https://i.vimeocdn.com/video/605912764.webp?mw=900&mh=563
2.有限的有效载荷传递: 关于这一点我什么都没有做,通常只在特定情况下才需要。我在这里是想告诉你们,我们可能做的都是错的,事情发生后,一个有效载荷通过二次来源进行传播,超出了范围,你就会想要采取这个建议。确保不仅要明确界定范围和外部IP空间,而且还要花时间设置你的C2,只允许与有效载荷交错的信息来源。有几种方法可以解决这个问题,bluescreenofjeff做过一些非常棒的研究工作,它使用了Apache mod_rewrite规则。在mod重写编辑的组合中,你可以提高发现C2的复杂程度。bluescreenofjeff mod_rewrite系列有一些很不错的实现方式,我们可以得到在安装过程中得到很不错的效果。使用操作系统的规则,移动端的特征(你想如何处理这些命令),基于浏览器的利用方法(使用这个在IE中利用HTA:HTA-Example)),甚至处理不符合我们使用的C2配置文件的用户重定向。其中一个主要问题是我们希望确保我们的有效负载不会超出可能的范围之外的IP空间甚至是IR工具集,这将增加持续的时间和复杂度,来适应长期存活的C2架构。
图片来源:https://bluescreenofjeff.com/2016-03-22-strengthen-your-phishing-with-apache-mod_rewrite-and-mobile-user-redirection/
3.为所有的阶段设置独立服务器或C2: 在建立你的红军团队基础架构时,这个技巧至关重要。分解你的C2可以为你提供灵活性,隐身性和在被蓝军发现后可以快速毁掉C2。那么,“分解”基础架构意味着什么?在某些情况下,你可能会在一个团队服务器上设置一个操作员,但在一个红色的团队中,每个操作员的所有阶段都应该分开。
下面是一个演示视频:
这对防止一次性被蓝军摧毁所有的C2以及提供冗余以及为同事提供单独的团队服务器提供了一些保障。我发现把它分成三个核心组件似乎相当有效!以下是我们的团队该有的一个基本的布局:
4.在核心的 C2前面总是使用重定向器: 这并不总是需要强制执行的步骤,这取决于你正在进行的操作和操作类型。我已经在所有类型的情况下打破了这个规则,钓鱼或其他快速测试。事实上,如果你是一个CS用户,你的核心C2服务器或“Team Servers”是HVA(高价值资产),并且需要像一个整体一样安全。这意味着所有的防火墙只允许用于参与的端口(80,443,8080)和IPTable规则允许的IP空间用于来自重定向器的ssh和入站连接。虽然我们的重定向器会跳来跳去,但是我们需要相信我们的核心C2服务器,如果在任何时候都暴露出来,只有有耐心的攻击者才可获得访问权限。最后,永远不要重用重定向器。绝对不要把流量交叉!
如果你有时间我强烈建议查看关于设置重定向器的CobaltStikes的视频,因为这很可能适用于多种情况或工具。在大多数情况下,我在我的设置中发现Socat像一块砖一样,可靠,坚实!我甚至四处打听,似乎也是得到了这样的答案。以下是来自CobaltStrike的Socat的例子,下面的视频是这个过程的一个很好的介绍:
socat TCP4-LISTEN:80,fork TCP4:54.197.3.16:80
演示视频: https://youtu.be/PyJu_LYosts
5.重定向器和C2上的完整会话及元数据网络捕获: 我知道你会质疑这个!那么,在最近发生的针对我们的工具cobalt strike和Metasploit的事件后,这个问题就变得很有必要性!我知道要求我们的重定向器保存完整的PCAP是不可能的事情,而在核心体系结构上我们至少需要PCAP元数据(IP SRC / DST,端口SRC / DST)的某个保留时间。这可以是一个简单的文本文件,但这会让你返回到上帝那里,禁止你有多个重定向器,并且需要找到一个回调的起始点。如果事件真的发生了,那么这样简单的事情可以给你一个深刻的洞察力。但在今天的时代,也许我们应该快照完整的PCAP?你怎么看呢?也许它可以像下面这样简单:
$ sudo tcpdump -n > test.txt
6.永远不要分享C2 IOC!老实说,我们已经走了很远的路,也站起来了,建立起了坚实可靠的建筑,让我们不要因为一个错误而被蓝军摧毁。当我们听到IOC时,我们认为是恶意软件,在这种情况下,我们指的是IOC’s,在没有全面调查的情况下,可以轻易地将我们的C2联系起来或解散掉。
1. 不要通过在单独的核心C2服务器的任何部分使用子域来共享域名。
2. 使用不同的POC注册所有的域名,或者只使用私有注册。使用像Whoisology这样的新工具进行反向注册名称查找近需要几秒钟。在几分钟之内,蓝队将能够使用硬指标来摧毁你的立足点。看看连接域的简易性:
视频地址:https://player.vimeo.com/video/194049240?autoplay=1&loop=1
3. 我们为Phishing,Active 操作和Long Term设置了三台服务器,并将它们全部放在相同的地理区域和/24 IP空间中。那么这对蓝队来说是一场轻松的胜利!请为重定向器和核心C2服务器使用单独的地理区域和IP空间。
4. 我经常看到这样的做法,这通常不是一个问题,但如果你使用相同的C2传输所有三个独立的服务器,那么你可能已经摧毁了所有的一切。比方说,我使用CS-HTTP阶段,蓝军团队捕捉到了我的钓鱼服务器。该团队将编写自定义签名来识别这类流量。花一些时间在各个阶段使用DNS / HTTP / HTTPS给他们一个反击。
5. 接着上一个建议,CS支持可塑的C2配置文件,使用它们来工作,相信我!如果你的目标是与政府相关的,那么请认真思考是否使用流服务,你需要小心一点。想想你的目标最有可能使用的一些行为习惯,并思考他们可能会阻止什么行为。
6. 托管有效载荷?花点时间,建立一个自定义的平台和网络服务器来托管负载,可以用于网络钓鱼或横向移动。这样你就不会在你的核心C2上暴露更多潜在的攻击面了。继续看看我的基准Apache服务器,你就不会偏离得太远。