Wiki | 收集 Red Team 基础设施强化资源
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki
此 wiki 旨在提供用于设置弹性红队基础设施的资源。 它是为了补充 Steve Borosh ( @424f424f ) 和 Jeff Dimmock ( @bluscreenofjeff ) 的 BSides NoVa 2017 演讲“世界末日准备者:强化你的红队基础设施”( 幻灯片 )
如果您有想要添加的内容,请提交 Pull Request 或在 repo 上提交问题。
感谢本 wiki 中引用内容的所有作者和所有 贡献者 !
目录
设计注意事项
功能隔离
在设计需要经得起积极响应或持续长期参与(数周、数月、数年)的红队基础设施时,重要的是根据功能隔离每个资产。 当活动资产开始被检测到时,这为蓝队提供了弹性和敏捷性。 例如,如果识别出评估的网络钓鱼电子邮件,红队只需要创建一个新的 SMTP 服务器和有效负载托管服务器,而不是整个团队服务器设置。
考虑将这些功能分离到不同的资产上:
- 网络钓鱼 SMTP
- 网络钓鱼有效负载
- 长期指挥与控制(C2)
- 短期 C2
每个社会工程活动都可能需要这些功能中的每一个。 由于主动事件响应在红队评估中很典型,因此应该为每个活动实施一套新的基础设施。
使用重定向器
为了进一步提高弹性和隐蔽性,每个后端资产(即团队服务器)都应该在其前面放置一个重定向器。 目标是在我们的目标和后端服务器之间始终有一个主机。 以这种方式设置基础架构可以更快、更轻松地滚动新的基础架构——无需建立新的团队服务器、迁移会话以及在后端重新连接未销毁的资产。
常见的重定向器类型:
- 邮件传输协议
- 有效载荷
- 网络流量
- C2(HTTP(S)、DNS 等)
每个重定向器类型都有多个最适合不同场景的实现选项。 这些选项在 wiki 的重定向器 部分有 更详细的讨论。 重定向器可以是 VPS 主机、专用服务器,甚至是在平台即服务实例上运行的应用程序。
样本设计
这是一个示例设计,牢记功能隔离和重定向器的使用:

更多资源
- 分布式红队运营的愿景 - Raphael Mudge (@armitagehacker)
- 持续红队运营的基础设施 - Raphael Mudge
- 高级威胁策略(9 之 2):基础设施 - Raphael Mudge
- 用于分布式黑客的基于云的重定向器 - Raphael Mudge
- 6 个红队基础架构技巧 - Alex Rymdeko-Harvey (@killswitch-gui)
- 如何使用 Digital Ocean 构建 C2 基础设施 - 第 1 部分 - Lee Kagan (@invokethreatguy)
- 使用 Terraform 自动部署红队基础设施 - 第 1 部分 - Rasta Mouse (@_RastaMouse)
域
根据您的目标使用的产品及其配置,感知域声誉会有很大差异。 因此,选择一个适合您的目标的域并不是一门精确的科学。 开源情报收集 (OSINT) 对于帮助最好地猜测控制状态以及检查域所针对的资源至关重要。 幸运的是,在线广告商面临着同样的问题,并且已经创建了一些我们可以利用的解决方案。
expireddomains.net 是最近过期或删除的域的搜索引擎。 它提供搜索和高级过滤,例如过期时间、反向链接数量、Archive.org 快照数量、 SimilarWeb 评分。 使用该站点,我们可以注册预先使用的域,这些域将与域年龄一起出现,看起来与我们的目标相似,看起来与我们的模拟相似,或者只是可能融入我们目标的网络。

在为 C2 或数据泄露选择域时,请考虑选择归类为金融或医疗保健的域。 由于可能存在法律或数据敏感性问题,许多组织不会对这些类别执行 SSL 中间处理。 确保您选择的域未与任何以前的恶意软件或网络钓鱼活动相关联也很重要。
Charles Hamilton ( @MrUn1k0d3r )的工具 CatMyFish 使用 expireddomains.net 和 BlueCoat 自动进行搜索和 Web 分类检查。 可以修改它以将更多过滤器应用于搜索,甚至可以对您注册的资产进行长期监控。
另一个工具, Joe Vest ( @joevest ) 和 Andrew Chiles ( @andrewchiles ) 的 DomainHunter ,返回 BlueCoat/WebPulse、IBM X-Force 和 Cisco Talos 分类、域年龄、备用可用 TLD、Archive.org 链接和 HTML 报告. 此外,它还会使用 Malwaredomains.com 和 MXToolBox 检查是否用于已知的恶意软件和网络钓鱼活动。 该工具还包括用于绕过 BlueCoat/WebPulse 验证码的 OCR 支持。 查看 有关该工具初始版本的 博客文章,了解更多详细信息。
Max Harley (@Max_68) 的另一个工具 AIRMASTER 使用 expireddomains.net 和 Bluecoat 来查找分类域。 该工具使用 OCR 绕过 BlueCoat 验证码,提高了搜索速度。
如果以前注册的域不可用,或者您更喜欢自行注册的域,则可以自行对域进行分类。 使用下面的直接链接或 Dominic Chell ( @domchell )的 Chameleon等工具。 大多数分类产品在确定域的分类时会忽略重定向或克隆内容。 有关 Chameleon 用法的更多信息,请查看 Dominic 的帖子 Categorization is not a security boundary 。
最后,确保您的 DNS 设置已正确传播。
分类和黑名单检查资源
- 迈克菲
- 坚守者
- 赛门铁克 + BlueCoat
- 检查点(需要免费帐户)
- 帕洛阿尔托
- Sophos(仅提交;不检查) - 单击提交样本 -> 网址
- 趋势科技
- 明云
- Websense(强制点)
- 光速系统
- 变色龙
- 发件人基地
- 多BL
- MXToolBox - 黑名单
网络钓鱼设置
简单的基于 Web 的网络钓鱼
容易和网络钓鱼这两个词似乎从来没有真正放在一起。 设置适当的网络钓鱼基础设施可能会非常痛苦。 以下教程将为您提供知识和工具,以快速设置可通过迄今为止“大多数”垃圾邮件过滤器的网络钓鱼服务器,并为您提供 RoundCube 界面,以实现轻松的网络钓鱼体验,包括与目标的双向通信。 有许多关于网络钓鱼的设置和帖子。 这只是一种方法。
一旦您的域通过了上一节中列出的适当检查并启动了网络钓鱼服务器,您将需要为您的域创建几个“A”记录,如图所示。
接下来,ssh 进入您的网络钓鱼服务器并确保您在 /etc/hosts 中列出了正确的 FQDN 主机名。 示例“127.0.0.1 email.yourphishingserver.com 电子邮件本地主机”
现在,您将通过几个简单的步骤安装 Web 前端以进行网络钓鱼。 首先将最新的“BETA”版 iRedMail 下载到您的网络钓鱼服务器上。 简单的方法是右键点击下载按钮,复制链接地址,使用wget直接下载到你的钓鱼服务器上。 接下来,解压它“tar -xvf iRedMail-0.9.8-beta2.tar.bz2”。 导航到解压缩的文件夹并使 iRedMail.sh 脚本可执行 (chmod +x iRedMail.sh)。 以 root 身份执行脚本,按照提示操作,您需要重新启动才能完成所有操作。
您需要确保所有正确的 DNS 记录都指向您的邮件服务器。 ( https://docs.iredmail.org/setup.dns.html )。 对于 DKIM,新命令应该是“amavisd-new showkeys”以列出您的 DKIM 密钥。
对于 DMARC,我们可以使用 ( https://www.unlocktheinbox.com/dmarcwizard/ ) 生成我们的 dmarc 条目。
现在,创建一个用户进行网络钓鱼。
使用您的新用户登录到 RoundCube 界面并负责任地进行网络钓鱼!
Cobalt Strike 网络钓鱼
Cobalt Strike 提供可定制的鱼叉式网络钓鱼功能,以支持渗透测试或红队电子邮件网络钓鱼。 它支持 HTML 和/或纯文本格式的模板、附件、反弹地址、URL 嵌入、远程 SMTP 服务器使用和每封邮件的发送延迟。 另一个有趣的功能是能够向每个用户的嵌入式 URL 添加唯一令牌以进行点击跟踪。

有关更多详细信息,请查看以下资源:
- Cobalt Strike - 鱼叉式网络钓鱼文档
- Cobalt Strike 博客 - 什么是首选网络钓鱼技术或漏洞?
- 使用 Cobalt Strike 进行鱼叉式网络钓鱼 - Raphael Mudge
- 高级威胁策略(9 之 3)- 有针对性的攻击 - Raphael Mudge
网络钓鱼框架
除了滚动您自己的网络钓鱼设置或使用渗透测试或红色团队框架(如 Cobalt Strike)之外,还有许多专门用于电子邮件网络钓鱼的工具和框架。 虽然此 wiki 不会详细介绍每个框架,但下面收集了每个框架的一些资源:
高飞
网络钓鱼狂潮
社会工程师工具包
FiercePhish(以前称为 FirePhish)
重定向器
邮件传输协议
“重定向器”可能不是描述我们要完成的目标的最佳词,但目标与我们的其他重定向相同。 我们希望从最终的电子邮件标头中删除我们网络钓鱼起源的任何痕迹,并在受害者和我们的后端服务器之间提供一个缓冲区。 理想情况下,SMTP 重定向器可以快速设置并且易于停用。
我们希望配置 SMTP 重定向器执行两个关键操作:
发送邮件
删除以前的服务器标头
将以下行添加到末尾 /etc/mail/sendmail.mc :
define(`confRECEIVED_HEADER',`by $j ($v/$Z)$?r with $r$. id $i; $b')dnl
添加到末尾 /etc/mail/access :
IP-to-Team-Server *TAB* RELAY
Phish-Domain *TAB* RELAY
配置捕获所有地址
这会将收到的任何电子邮件转发到 *@phishdomain.com 到选定的电子邮件地址。 这对于接收对网络钓鱼电子邮件的任何回复或退回非常有用。
echo PHISH-DOMAIN >> /etc/mail/local-host-names
在 之前 //Mailer Definitions// (接近尾部)添加以下行 /etc/mail/sendmail.mc :
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
将以下行添加到末尾 /etc/mail/virtusertable :
@phishdomain.com external-relay-address
注意:这两个字段应该用制表符分隔
后缀
Postfix 提供了一种比 sendmail 更简单的替代方法,具有更广泛的兼容性。 Postfix 还通过 Dovecot 提供完整的 IMAP 支持。 这允许测试人员与响应原始消息的网络钓鱼目标实时通信,而不是依赖于所有捕获地址并且必须使用您的网络钓鱼工具创建新消息。
Julian Catrambone ( @n0pe_sled ) 的帖子 Mail Servers Made Easy 中提供了针对网络钓鱼设置 Postfix 邮件服务器的完整指南 。
域名系统

注意:使用 C2 重定向器时,应在您的后开发框架上配置外部侦听器,以通过重定向器域发送暂存流量。 这将导致受感染的主机像 C2 流量本身一样通过重定向器进行暂存。
用于 DNS 的 socat
socat 可用于将端口 53 上的传入 DNS 数据包重定向到我们的团队服务器。 虽然此方法有效,但一些用户报告了 Cobalt Strike 的暂存问题和/或使用此方法的延迟问题。 编辑 4/21/2017:由于@xorrior 的测试,以下 socat 命令似乎运行良好:
socat udp4-recvfrom:53,reuseaddr,fork udp4-sendto:<IPADDRESS>; echo -ne
重定向 Cobalt Strike DNS 信标 - Steve Borosh
用于 DNS 的 iptables
已发现 iptables DNS 转发规则与 Cobalt Strike 配合良好。 socat 处理此类流量似乎没有任何问题。
下面是一个示例 DNS 重定向器规则集。
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination <IP-GOES-HERE>:53
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -I FORWARD -j ACCEPT
iptables -P FORWARD ACCEPT
sysctl net.ipv4.ip_forward=1
此外,将“FORWARD”链策略更改为“ACCEPT”
DNS 重定向也可以在 NAT 后面完成
有些人可能有要求或需要在内部网络上托管 c2 服务器。 结合使用 IPTABLES、SOCAT 和反向 ssh 隧道,我们当然可以通过以下方式实现这一点。

在这种情况下,我们使用 IPTables 的 volitile 重定向器使用本节前面描述的规则示例转发所有 DNS 流量。 接下来,我们创建一个从内部 c2 服务器到主重定向器的 SSH 反向端口转发隧道。 这会将主重定向器在端口 6667 上接收到的任何流量转发到端口 6667 上的内部 c2 服务器。现在,在我们的团队服务器上启动 socat 以将端口 6667 上的任何传入 TCP 流量分叉到 UDP 端口 53,这就是我们的 DNS c2 需要监听。 最后,我们类似地在主重定向器上设置一个 socat 实例,以将任何传入的 UDP 端口 53 流量重定向到端口 6667 上的 SSH 隧道。
HTTP(S)
注意:使用 C2 重定向器时,应在您的后开发框架上配置外部侦听器,以通过重定向器域发送暂存流量。 这将导致受感染的主机像 C2 流量本身一样通过重定向器进行暂存。
socat 与 mod_rewrite
socat 提供了一个“哑管道”重定向。 socat 在指定源接口/端口上收到的任何请求都将重定向到目标 IP/端口。 没有过滤或条件重定向。 另一方面,Apache mod_rewrite 提供了多种方法来加强网络钓鱼并提高测试基础设施的弹性。 mod_rewrite 能够根据请求属性执行条件重定向,例如 URI、用户代理、查询字符串、操作系统和 IP。 Apache mod_rewrite 使用 htaccess 文件来配置 Apache 应如何处理每个传入请求的规则集。 例如,使用这些规则,您可以将使用默认 wget 用户代理的服务器请求重定向到目标网站上的合法页面。
简而言之,如果您的重定向器需要执行条件重定向或高级过滤,请使用 Apache mod_rewrite。 否则,带有可选 iptables 过滤的 socat 重定向就足够了。
用于 HTTP 的 socat
socat 可用于将指定端口上的任何传入 TCP 数据包重定向到我们的团队服务器。
将本地主机上的 TCP 端口 80 重定向到另一台主机上的端口 80 的基本语法是:
socat TCP4-LISTEN:80,fork TCP4:<REMOTE-HOST-IP-ADDRESS>:80
如果您的重定向器配置了多个网络接口,socat 可以通过 IP 地址绑定到特定接口,语法如下:
socat TCP4-LISTEN:80,bind=10.0.0.2,fork TCP4:1.2.3.4:80
在此示例中,10.0.0.2 是重定向器的本地 IP 地址之一,1.2.3.4 是远程团队服务器的 IP 地址。
用于 HTTP 的 iptables
除了 socat,iptables 还可以通过 NAT 执行“哑管道”重定向。 要将重定向器的本地端口 80 转发到远程主机,请使用以下语法:
iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <REMOTE-HOST-IP-ADDRESS>:80
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -I FORWARD -j ACCEPT
iptables -P FORWARD ACCEPT
sysctl net.ipv4.ip_forward=1
用于 HTTP 的 SSH
我们之前已经介绍过将 SSH 用于 DNS 隧道。 SSH 作为突破 NAT 并获得植入物连接到重定向器和进入您的服务器环境的途径的可靠且强大的手段。 在设置 SSH 重定向器之前,您必须将以下行添加到 /etc/ssh/sshd_config :
# Allow the SSH client to specify which hosts may connect
GatewayPorts yes
# Allow both local and remote port forwards
AllowTcpForwarding yes
要将重定向器的本地端口 80 转发到您的内部团队服务器,请在内部服务器上使用以下语法:
tmux new -S redir80
ssh <redirector> -R *:80:localhost:80
Ctrl+B, D
您还可以转发多个端口,例如,如果您希望同时打开 443 和 80:
tmux new -S redir80443
ssh <redirector> -R *:80:localhost:80 -R *:443:localhost:443
Ctrl+B, D
有效负载和 Web 重定向
在提供有效载荷和网络资源时,我们希望最大限度地减少事件响应者查看文件的能力,并增加成功执行有效载荷的机会,无论是建立 C2 还是收集情报。

Jeff Dimmock 的 Apache Mod_Rewrite 用法和示例:
- 使用 Apache mod_rewrite 加强您的网络钓鱼
- Apache mod_rewrite 的无效 URI 重定向
- 使用 Apache mod_rewrite 进行基于操作系统的重定向
- 使用 Apache mod_rewrite 对抗事件响应者
- 使用 Apache RewriteMap 使钓鱼链接过期
- Apache mod_rewrite 抓包
- 使用 Apache mod_rewrite 服务随机负载
其他 Apache mod_rewrite 用法和示例:
要在重定向器服务器上自动设置 Apache Mod_Rewrite,请查看 Julain Catrambone ( @n0pe_sled ) 的博客文章 Mod_Rewrite Automatic Setup 和 随附的工具 。
C2重定向
重定向 C2 流量背后的意图是双重的:隐藏后端团队服务器,并在事件响应者浏览时显示为合法网站。 通过使用 Apache mod_rewrite 和 定制的 C2 配置文件 或其他代理(例如使用 Flask),我们可以可靠地从调查流量中过滤出真正的 C2 流量。
- Cobalt Strike HTTP C2 重定向器与 Apache mod_rewrite - Jeff Dimmock
- 使用 Apache mod_rewrite 保护您的 Empire C2 - Gabriel Mathenge (@_theVIVI)
- 扩展你的视野 红队——现代 SAAS C2——Alex Rymdeko-Harvey (@killswitch-gui)
- 混合 Cobalt Strike 重定向器 - Zach Grace (@ztgrace) 和 @m0ther_
使用 HTTPS 的 C2 重定向
基于上面的“C2 重定向”,另一种方法是让您的重定向服务器使用 Apache 的 SSL 代理引擎来接受入站 SSL 请求,并将这些请求代理到反向 HTTPS 侦听器。 所有阶段都使用加密,您可以根据需要在重定向器上轮换 SSL 证书。
要使其与您的 mod_rewrite 规则一起使用,您需要将您的规则放在 “/etc/apache2/sites-available/000-default-le-ssl.conf” 中,假设您已经使用 LetsEncrypt(又名 CertBot)来安装您的证书. 此外,要启用 SSL ProxyPass 引擎,您需要在同一配置文件中添加以下行:
# Enable the Proxy Engine
SSLProxyEngine On
# Tell the Proxy Engine where to forward your requests
ProxyPass / https://DESTINATION_C2_URL:443/
ProxyPassReverse / https://DESTINATION_C2_URL:443/
# Disable Cert checking, useful if you're using a self-signed cert
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
其他 Apache mod_rewrite 资源
- 自动化 Apache mod_rewrite 和 Cobalt Strike 配置文件
- mod-rewrite-cheatsheet.com 网站
- 官方 Apache 2.4 mod_rewrite 文档
- Apache mod_rewrite 介绍
- Apache mod_rewrite 深度指南
- Mod_Rewrite/.htaccess 语法检查器
修改 C2 流量
钴冲击
Cobalt Strike 使用 Malleable C2 配置文件修改其流量。 配置文件提供高度可定制的选项,用于修改服务器的 C2 流量在网络上的外观。 可延展的 C2 配置文件可用于加强事件响应规避、冒充已知对手或伪装成目标使用的合法内部应用程序。
- 官方 Malleable C2 配置文件 - GitHub
- 可延展的命令和控制文档 - cobaltstrike.com
- Cobalt Strike 2.0 - 可塑的命令和控制 - Raphael Mudge
- Cobalt Strike 3.6 - 特权升级之路 - Raphael Mudge
- 美丽新世界:可塑 C2 - Will Schroeder (@harmj0y)
- 如何为 Cobalt Strike 编写可延展的 C2 配置文件 - Jeff Dimmock
- 内存规避(视频系列)- Raphael Mudge
当您开始创建或修改 Malleable C2 配置文件时,保持 Beacon 信息放置的数据大小限制很重要。 例如,将配置文件配置为在 URL 参数中发送大量数据将需要很多请求。 有关这方面的更多信息,请查看 Raphael Mudge 的博客文章 小心下载缓慢 。
如果您的 Malleable C2 配置文件遇到问题并注意到 teamserver 控制台输出错误,请参阅 Raphael Mudge 的博客文章 Broken Promises and Malleable C2 Profiles 以获取故障排除提示。
帝国
Empire 使用通信配置文件,它为 GET 请求 URI、用户代理和标头提供自定义选项。 配置文件由每个元素组成,由竖线字符分隔,并使用 上下文菜单中的 set DefaultProfile 选项进行设置。 listeners
这是一个示例默认配置文件:
"/CWoNaJLBo/VTNeWw11212/|Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1)|Accept:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*|Accept-Language:en-en"
/setup/setup_database.py 或者,可以通过在 Empire 的初始设置之前 修改文件来设置 DefaultProfile 值。 这将更改 Empire 将使用的默认通信配置文件。
除了通信配置文件之外,还可以考虑按照 Joe Vest ( @joevest ) 发布的 Empire - 修改服务器 C2 指标 中介绍的步骤自定义 Empire 服务器的暂存 URI、服务器标头和默认网页内容。
第三方 C2 渠道
为 C2 利用可信、合法的 Web 服务可以为使用您自己配置的域和基础设施提供宝贵的支持。 配置时间和复杂性因所使用的技术和服务而异。 利用第三方服务进行 C2 重定向的一个流行示例是域前端。
域名前端
Domain Fronting 是审查规避服务和应用程序用来通过合法和高度信任的域路由流量的技术。 支持 Domain Fronting 的流行服务包括 Google App Engine 、 Amazon CloudFront 和 Microsoft Azure 。 请务必注意,许多提供商(例如 Google 和 Amazon )已经实施了针对域前端的缓解措施,因此当您尝试使用时,此 wiki 中提供的某些链接资源或信息可能已经过时。
简而言之,流量使用可信服务提供商的 DNS 和 SNI 名称,在下面的示例中使用了 Google。 当边缘服务器(例如:位于 gmail.com)接收到流量时,数据包将转发到数据包主机标头中指定的源服务器(例如:phish.appspot.com)。 根据服务提供商的不同,源服务器将直接将流量转发到指定的域,我们将指向我们的团队服务器,或者需要代理应用程序来执行最后的跃点转发。

有关域前端如何工作的更多详细信息,请参阅白皮书 通过域前端进行抗阻塞通信 和 TOR 项目的 meek 文档
除了标准的前端域(例如任何 google.com 域)之外,还可以利用其他合法域进行前端。
有关搜索前端域的更多信息,请查看:
- 通过 Cloudfront 备用域的域前端 - Vincent Yiu (@vysecurity)
- 查找域前面的 Azure 域 - thoth / Fionnbharr (@a_profligate)
- Google 网上论坛:关于使用 Censys 查找 2000 多个 Azure 域的博客文章
- FindFrontableDomains 工具 - Steve Borosh (@rvrsh3ll)
有关域前端的更多资源
- 简化域前端 - Tim Malcomvetter (@malcomvetter)
- 高信誉重定向器和域前端 - Raphael Mudge
- 帝国域名前端 - Chris Ross (@xorrior)
- Escape and Evasion Egressing Restricted Networks - Tom Steele (@_tomsteele) 和 Chris Patten
- 红队对使用 Cobalt Strike 的 HTTPS 域前置 Google 主机的见解 - 来自 CyberArk 的 Will Vandevanter 和 Shay Nahari
- SSL 域前端 101 - Steve Borosh (@424f424f)
- 我如何识别 93k 域可访问的 CloudFront 域 - Chris Myers (@SWIZZLEZ_) 和 Barrett Adams (@PEEWPW)
- 域名前端:我是谁? - 文森特姚 (@vysecurity)
- 经过验证的 CloudFront SSL 域 - Vincent Yiu (@vysecurity)
- CloudFront 劫持 - Matt Westfall (@disloops)
- CloudFrunt GitHub 存储库- MindPointGroup
- Metasploit 域前端与 Microsoft Azure (@ch1gg1ns)
- 阿里巴巴 CDN 域名前端 - Vincent Yiu (@vysecurity)
- CloudFlare Domain Fronting:一种访问(和隐藏)恶意软件 C&C 的简单方法 - @theMiddle(中等)
PaaS 重定向器
许多 PaaS 和 SaaS 提供商提供静态子域或 URL 以用于预配实例。 如果关联的域通常高度受信任,则实例可以通过购买的域和 VPS 为您的 C2 基础设施提供额外的信任。
要设置重定向,您需要确定将静态子域或 URL 作为实例的一部分发布的服务。 然后,需要为实例配置网络或基于应用程序的重定向。 该实例将充当代理,类似于本 wiki 上讨论的其他重定向器。
根据服务的不同,具体实现可能会有很大差异; 但是,有关使用 Heroku 的示例,请查看 Alex Rymdeko-Harvey (@Killswitch_GUI) 的博客文章 Expand Your Horizon Red Team – Modern SaaS C2 。
另一个值得进一步研究的有趣技术是为 C2 使用过于宽松的 Amazon S3 存储桶。 查看 Andrew Luke (@Sw4mp_f0x) 的 S3 Buckets for Good and Evil 帖子,了解有关如何将 S3 存储桶用于 C2 的更多详细信息。 这种技术可以与 Empire 的第三方 C2 功能相结合,使用目标的合法 S3 存储桶来对付他们。
有关将 PaaS 用于 C2 的另一个示例,请查看数据库和云: Scott Sutherland ( @_nullbind ) 的 SQL Server 作为 C2 。
其他第三方C2
过去,其他第三方服务已在野外用于 C2。 利用允许快速发布或修改用户生成内容的第三方网站可以帮助您规避基于信誉的控制,尤其是在第三方网站普遍受信任的情况下。
查看这些资源以了解其他第三方 C2 选项:
- canisrufus (GitHub Repo) - maldevel
- 外部 C2(第三方命令和控制)- Cobalt Strike 文档
- Cobalt Strike over external C2——以最隐蔽的方式指引家园——outflank.nl 的 Mark Bergman
- Cobalt Strike C2 的“任务”Office 365 - William Knowles (@william_knows)
- Cobalt Strike 的外部 C2 - Ryan Hanson (@ryhanson)
- Cobalt Strike 的外部 C2 框架 - Jonathan Echavarria (@Und3rf10w)
- 外部 C2 框架 (GitHub Repo) - Jonathan Echavarria (@Und3rf10w)
- 隐藏在云端:使用亚马逊 API 的 Cobalt Strike Beacon C2 - Rhino 安全实验室
- 探索 Cobalt Strike 的 ExternalC2 框架 - Adam ( @xpn )
模糊基础设施
攻击基础设施通常很容易识别,看起来像合法服务器的外壳。 我们将需要对我们的基础设施采取额外的步骤,以增加与目标组织或目标可能使用的服务之间的真实服务器融合的可能性。
重定向器可以通过 重定向无效的 URI 、使 网络钓鱼有效负载链接过期 或 阻止常见的事件响应技术 来帮助融入 ; 但是,还应注意底层主机及其指标。
例如,在 帝国的陨落之后 ,John Menerick ( @Lord_SQL ) 介绍了在互联网上检测帝国服务器的方法。
为了对抗这些和类似的指标,修改 C2 流量模式 、修改服务器登录页面、限制开放端口和修改默认响应标头 是一个好主意。
有关如何针对多个攻击框架执行这些策略和其他策略的更多详细信息,请查看以下帖子:
- Empire – 修改服务器 C2 指标 - Andrew Chiles
- 狩猎红队帝国 C2 基础设施 - chokepoint.net
- 寻找红队 Meterpreter C2 基础设施 - chokepoint.net
- 识别 Empire HTTP 侦听器(Tenable 博客) - Jacob Baines
- 主机标头操作 - Vincent Yiu (@vysecurity)
保护基础设施
攻击基础设施可以像任何其他连接互联网的主机一样受到攻击,并且由于正在使用的数据和与目标环境的连接,它应该被认为是高度敏感的。
2016 年,最常见的攻击工具上披露了远程代码执行漏洞:
- 2016 Metasploit RCE 静态密钥反序列化
- 2017 Metasploit Meterpreter 目录遍历漏洞
- 失败的帝国——威尔·施罗德
- Cobalt Strike 3.5.1 重要安全更新 - Raphael Mudge
iptables 应用于过滤不需要的流量并限制所需基础设施元素之间的流量。 例如,如果 Cobalt Strike 团队服务器将只向 Apache 重定向器提供资产,则 iptables 规则应该只允许来自重定向器源 IP 的端口 80。 这对于任何管理接口尤其重要,例如 SSH 或 Cobalt Strike 的默认端口 50050。还要考虑阻止非目标国家/地区的 IP。 作为替代方案,请考虑使用 VPS 提供商提供的管理程序防火墙。 例如,Digital Ocean 提供 了可以保护一个或多个水滴的 云防火墙。
chattr 可用于团队服务器以防止 cron 目录被修改。 使用 chattr,您可以限制任何用户(包括 root)修改文件,直到删除 chattr 属性。
SSH 应仅限于公钥身份验证,并配置为使用有限权限的用户进行初始登录。 为了增加安全性,请考虑向 SSH 添加多重身份验证。
更新! 如果没有提醒定期更新系统并根据需要应用修补程序来修复漏洞,任何安全列表都是不完整的。
当然,此列表并未详尽说明您可以采取哪些措施来保护团队服务器。 在所有基础设施上遵循常见的强化做法:
- 红帽企业 Linux 6 安全指南
- 关于加固的 Debian 文档
- 保护 Debian 手册
- 20 个 Linux 服务器加固安全小贴士
- SANS Linux 安全检查表
- Docker 你的命令和控制 (C2) - Alex Rymdeko-Harvey (@killswitch_gui)
具体强化资源
网上有许多资源可以讨论基础设施的安全设置和设计。 并非每个设计考虑都适用于每个攻击基础设施,但了解哪些选项可用以及其他测试人员正在做什么是很有用的。
以下是其中一些资源:
- 负责任的红队 - Tim MalcomVetter (@malcomvetter)
- 安全的红队基础设施 - Tim MalcomVetter (@malcomvetter)
- 红队基础设施 - AWS 加密 EBS - @_rastamouse
- 攻击基础设施日志记录(4 部分系列)- Gabriel Mathenge (@_theVIVI)
自动化部署
本 wiki 中涵盖的主题加强了攻击基础设施,但通常需要大量时间来设计和实施。 自动化可用于大大减少部署时间,使您能够在更短的时间内部署更复杂的设置。
查看这些关于攻击基础设施自动化的资源:
- 使用 Terraform 的自动化红队基础设施部署 - 第 1 部分 - @_RastaMouse
- 使用 Terraform 自动部署红队基础设施 - 第 2 部分 - @_RastaMouse
- Mod_Rewrite 自动设置 - Julian Catrambone (@n0pe_sled)
- 自动化帝国基础设施 - Jeremy Johnson (@beyondnegative)
- RTOps:使用 Ansible 自动化重定向器部署 - Kevin Dick
- 使用 Ansible 和 Docker 自动化 Gophish 发布 - Jordan Wright (@jw_sec)
- 红男爵 GitHub 回购 - Marcello (@byt3bl33d3r)
- 自动化 Apache mod_rewrite 和 Cobalt Strike Malleable C2 以实现智能重定向 - Joe Vest (@joevest)
- Terraform 的模块化基础设施 - Liam Somerville (@liamsomerville)
- 红队基础设施 - Topher Timzen (@TTimzen) & r00tkillah ]( https://twitter.com/r00tkillah )
一般提示
- 记录一切 - 运行复杂的红队基础设施意味着有许多活动部件。 请务必记录每项资产的功能及其流量的发送位置。
- 在不同的服务提供商和地区之间拆分资产 ——基础设施资产应该分布在多个服务提供商和地理区域。 蓝队成员可能会针对被识别为主动执行攻击的提供商提高监控阈值,甚至可能会彻底阻止给定的服务提供商。 注意:如果跨境发送加密或敏感数据,请牢记国际隐私法。
- 不要太过分 ——人们很容易对先进的技术感到兴奋,并想把厨房的水槽扔向目标。 如果您要模拟特定的对抗性威胁,请仅利用真正的威胁参与者使用的技术或威胁参与者技能集中的技术。 如果您的红队测试将长期攻击同一个目标,请考虑从“简单”开始,并随着您的评估继续进行更高级的交易技巧。 与蓝队一起发展红队的技术将始终如一地推动组织向前发展,而同时用所有东西攻击蓝队可能会使蓝队不堪重负并减缓学习过程。
- 监控日志 ——在整个参与过程中应监控所有日志:SMTP 日志、Apache 日志、socat 重定向器上的 tcpdump、iptables 日志(特定于流量转发或目标过滤)、网络日志、Cobalt Strike/Empire/MSF 日志。 将日志转发到中央位置,例如使用 rsyslog ,以便于监控。 操作员终端数据保留可能会派上用场,以便在操作期间检查历史命令使用情况。 @Killswitch_GUI 创建了一个名为 lTerm 的易于使用的程序,它将所有 bash 终端命令记录到一个中央位置。 使用 lTerm 记录所有终端输出 。 查看 Vincent Yiu 的 CobaltSplunk 博 文,了解如何将 Cobalt Strike 日志发送到 Splunk 以进行高级基础设施监控和分析的示例。
- 实施高价值事件警报 - 配置攻击基础设施以生成高价值事件警报,例如新的 C2 会话或凭证捕获命中。 实现警报的一种流行方式是通过聊天平台的 API,例如 Slack。 查看以下有关 Slack 警报的帖子: Slack Shell Bot - Russel Van Tuyl (@Ne0nd0g) , Cobalt Strike 的 Slack 通知 - Andrew Chiles (@AndrewChiles) , 用于巨魔和工作的 Slack 机器人 - Jeff Dimmock (@bluscreenfojeff)
- 指纹事件响应 ——如果可能,尝试在评估开始之前被动或主动地对 IR 操作进行指纹识别。 例如,向目标发送一封普通的网络钓鱼电子邮件(使用不相关的基础设施)并监控基础设施接收的流量。 IR 团队调查可以披露有关团队如何运作以及他们使用什么基础设施的大量信息。 如果可以在评估之前确定这一点,则可以将其完全过滤或重定向。