利用CloudFront中继Cobalt Strike流量
Brian Fehrman //
许多读者可能听说过域前置(Domain Fronting)技术。域前置是一种让C2流量伪装成目标公司流量、混淆来源的技术,对红队隐藏流量非常有效。Amazon CloudFront曾是实现域前置的流行服务,但近期CloudFront的更改导致其无法再与Cobalt Strike配合进行域前置。这是否意味着CloudFront对Cobalt Strike毫无用处了?我认为并非如此!CloudFront仍有以下优势:
- 无需为C2流量使用已分类域名
- 流量在一定程度上与CDN流量混合
- 部分公司白名单了CloudFront
- 隐藏源IP,降低整个C2基础设施暴露风险
- 流量仍通过HTTPS传输
本文将逐步讲解如何配置CloudFront与Cobalt Strike协同工作。主要步骤包括:
- 设置Cobalt Strike(CS)服务器
- 注册域名并指向CS服务器
- 为域名生成HTTPS证书
- 创建CloudFront分发指向域名
- 生成利用HTTPS证书和CloudFront分发的CS配置文件
- 生成CS载荷测试配置
1. 设置Cobalt Strike(CS)服务器
在Digital Ocean上部署基于Debian的节点(称为“你的服务器”)。运行以下命令更新系统并安装OpenJDK(Cobalt Strike所需):
|
|
从https://www.cobaltstrike.com/download下载最新Cobalt Strike .tgz文件,上传至服务器。解压文件并安装:
|
|
此时需输入许可证密钥。CS服务器初步设置完成,后续步骤中会进行更多配置。
2. 注册域名并指向CS服务器
注册域名以生成HTTPS证书。CloudFront要求域名具有有效HTTPS证书,且指向运行Apache等服务的服务器以验证证书有效性。域名无需已分类,简化了流程。推荐使用nameilo.com注册域名(例如bhisblogtest.xyz,年费$0.99),因其提供免费WHOIS隐私保护且无额外ICANN费用。
注册后,在nameilo.com中更新DNS记录:删除默认记录,创建一条A记录指向服务器IP(例如159.65.46.217)。等待DNS记录传播(约10-15分钟),使用nslookup验证:
|
|
若无法使用nslookup,先安装dnsutils:
|
|
3. 为域名生成HTTPS证书
使用LetsEncrypt和@KillSwitch-GUI的HTTPsC2DoneRight.sh脚本免费生成证书。在服务器上安装依赖:
|
|
下载并运行脚本:
|
|
输入域名、HTTPS证书密码和cobaltstrike文件夹路径。脚本运行后,在cobaltstrike/httpsProfile文件夹中生成amazon.profile文件和Java Keystore。使用tail查看amazon.profile末尾四行https-certificate信息,后续步骤需要。
验证证书:通过浏览器访问https://<你的域名>,应看到Apache默认页且无证书错误。
4. 创建CloudFront分发指向域名
登录AWS CloudFront控制台(https://console.aws.amazon.com/cloudfront/home),创建分发:
- 点击“Create Distribution”
- 在“Web”部分点击“Get Started”
- 在“Origin Domain Name”字段输入域名,“Origin ID”自动填充
- 其余设置参考截图(未显示部分保持默认)
- 点击“Create Distribution”
分发创建后,记下cloudfront.net地址(用于后续步骤)。等待状态变为“Deployed”(约10-15分钟)。测试分发:访问https://<你的cloudfront.net地址>,应看到Apache默认页且无证书错误。
5. 生成利用HTTPS证书和CloudFront分发的CS配置文件
使用bluescreenofjeff的Malleable-C2-Randomizer脚本生成随机CS配置文件(推荐Pandora.profile模板):
|
|
将生成的配置文件复制到cobaltstrike/httpsProfile文件夹。进入该文件夹:
|
|
将amazon.profile末尾四行https-certificate信息粘贴到新Pandora配置文件的底部。添加以下行修改生成进程(提升操作安全性):
|
|
在配置文件中找到两处“Host”字段,将其值改为你的cloudfront.net地址。停止Apache服务以避免与CS监听器冲突:
|
|
启动CS Team Server(使用新配置文件):
|
|
6. 生成CS载荷测试配置
在CS客户端中连接Team Server,添加新监听器:
- 名称自定义(例如rhttps)
- 载荷选择windows/beacon_https/reverse_https
- “Host”字段输入CloudFront分发地址
- “Port”字段输入443
- 保存后,在弹出窗口中输入CloudFront地址作为信标域名
生成载荷测试(注意:默认载荷易被AV检测,需额外处理;此处为测试可临时禁用AV)。选择“HTML Application”载荷格式,监听器选择rhttps,方法选择“Executable”,生成并运行载荷。在CS客户端中观察会话是否建立。
防护措施
阻止攻击者利用CloudFront中继并不简单,因为完全禁用CloudFront可能影响企业正常业务。建议实施强应用程序白名单策略,从根本上防止用户运行恶意载荷。
结论
利用CloudFront中继C2服务器可绕过环境中的多种防护并隐藏C2源IP。本文详细介绍了设置CloudFront分发、配置Cobalt Strike的完整步骤。后续文章将讨论生成免杀CS载荷的技术。