隐藏源IP,提高溯源难度的几种方案 – 作者:a972182797

本文目标读者是对网络攻防技术、网络安全技术感兴趣的相关读者,可以将本篇文章作为一个思路上的启发科普文章。切记遵纪守法,交流技术!网络不是法外之地!

为什么会有此文:

原因一:保护个人隐私是是第一出发点;科技进步飞快,网络也渗透入生活中的方方面面,近几年的隐私泄露事故时有发生,我们该如何保护个人隐私?

原因二:得到了大佬的帮助和指点,希望把对我的指点内容记录一下,也能为其他人提供一点点帮助!

测试方式:

通过CS4.2生成测试程序,测试回连C2服务器时能否达到隐藏服务器的IP

公网服务器真实IP:1.2.3.4

Cobalt Strike版本:4.2

所有需要注册帐号的步骤,都建议使用自己安全的邮箱!

一、使用隧道转发进行代理

一句话核心原理:利用内网穿透,将C2回连端口映射到其他公网地址64.x.x.x,以达到测试程序通过其他公网地址进行回连,隐藏C2真实ip;

CleanShot 2021-04-23 at 21.50.24@2x.png

方案分析:

适合用户:这种隐藏ip的方案适合于没有公网服务器,使用自己本地电脑进行测试的用户;或者有公网服务器,通过本方案隐藏服务器真实ip的用户;
优点:免费使用他人提供的隧道服务,可以快速的用来测试,0成本;
缺点:使用了他人提供的隧道服务(增加了风险);且注册账号时还需要完成微信绑定(增加了风险);国内平台(增加了风险);

使用流程:

1.打开网站

https://www.ngrok.cc/ 注册ngrok账号
CleanShot 2021-04-23 at 21.50.46@2x.png

2.登录后配置ngrok代理

2.1 购买一个免费通道

CleanShot 2021-04-23 at 21.51.28@2x.png

2.2 配置通道

隧道类型分为http、https、tcp
我们本次测试tcp通道,http、https各位有兴趣的自己尝试;

CleanShot 2021-04-23 at 21.51.51@2x.png

因为映射到公网的远程端口有限,所以我们需要多次查询可用的远程端口,例如:查询到10001端口可用,那就选择tcp端口映射 公网服务器的10001端口<—–映射—->本地127.0.0.1:8080端口

CleanShot 2021-04-23 at 21.52.21@2x.png

最终配置如下,其中隧道ID就是我们后面要用到的;隧道域名就是对外部公网提供访问时的公网域名;
CleanShot 2021-04-23 at 21.52.40@2x.png

3.穿透工具使用说明 https://www.ngrok.cc/_book/

3.1下载可执行程序 https://www.ngrok.cc/download.html
CleanShot 2021-04-23 at 21.53.03@2x.png

3.2运行隧道穿透

#./sunny clientid 45e3634aAAAAAAAAAA #隧道id

CleanShot 2021-04-23 at 21.53.19@2x.png

运行成功后,所有访问 xxx.xxxxxgye.com:10001 会和本地8080端口打通透明传输;

4.配置listener

CleanShot 2021-04-23 at 21.53.32@2x.png

5.生成payload,运行测试

5.1运行payload,主机可以成功上线;
CleanShot 2021-04-23 at 21.53.45@2x.png

5.2查看本地回接C2服务器的ip地址为 xxx.xxxxxgye.com:10001(67.x.x.x:1001);而不是我们自己服务器的真实ip!
CleanShot 2021-04-23 at 21.54.11@2x.png

上面的64.X.X.X就是ngrok的公网ip

搞定!

二、使用CDN

一句话核心原理:使用CDN内容分发网络的多节点分布式技术,通过“加速、代理、缓存”隐藏在后面的静态文件或服务;最终实现对外暴露的是CDN多节点的公网域名IP,很难甚至无法溯源真实后端服务器的域名或IP!

CleanShot 2021-04-23 at 21.54.30@2x.png

方案分析:

适合用户:这种隐藏ip的方案适合于有公网服务器,通过本方案CDN进行“加速、代理、缓存”实现隐藏服务器真实ip或域名的用户;使用国内CDN服务商的产品的域名必须完成ICP实名备案;
优点:利用CDN分布式技术,不同区域的主机就近连接到CDN服务,优化了访问质量,隐藏了真实服务器的ip;且CDN分布式技术可以在一定程度抵抗DDOS大流量攻击;使用国内CDN适合用于做红蓝对抗技术比拼等合法目的;
缺点:受控主机还是通过我们自己的域名进行回连,对外还是能看到连接域名;且如果使用国内CDN的服务(增加了风险),域名就必须完成ICP备案(增加了风险);而且还有一些方法可能溯源到真实IP(请一定要按照下面的参考文章1、2,进行子查一下!);

使用流程:

(匿名注册新域名且无需备案+使用国外免费CDN服务)

1.匿名注册新域名:

https://www.freenom.com/zh/index.html?lang=zh
1.1 完成账号注册登录(注册可以先不做,继续选域名后面会有一步骤让我们注册账号);

1.2搜索域名:

小坑提醒:这里有一个坑,搜索 wikisoft,会显示所有域名不可用;但是搜索 wikisoft.tk 就可以;所以一定要搜索域名全称!

CleanShot 2021-04-23 at 21.55.07@2x.png1.3下单确认:
CleanShot 2021-04-23 at 21.55.24@2x.png如果之前没有注册过域名,点击 “继续”按钮,会让我们进行注册账号,或者验证邮箱;然后进行登录再进行选购域名;(这里如果注册失败,可以用gmail注册。)

1.4 配置域名的NameServer域名解析服务(这样做,后面再解释为什么;现在不修改,默认配置,也可以后面再修改)

1.4.1进入我的域名:

CleanShot 2021-04-23 at 21.55.42@2x.png

1.4.2选择域名管理:
CleanShot 2021-04-23 at 21.56.04@2x.png1.4.3选择域名解析服务进行修改
CleanShot 2021-04-23 at 21.56.44@2x.png

CleanShot 2021-04-23 at 21.58.10@2x.png

ASPEN.NS.CLOUDFLARE.COM COLEMAN.NS.CLOUDFLARE.COM

匿名域名注册及配置完毕!

2.匿名注册免费CDN服务Cloudflare

2.1登录注册账号https://www.cloudflare.com/zh-cn/

2.2配置域名使用CDN

2.2.1添加站点
CleanShot 2021-04-23 at 21.58.40@2x.png

2.2.3选择免费计划
CleanShot 2021-04-23 at 21.58.58@2x.png

2.2.4直接配置使用CDN代理模式进行域名解析提供服务

上面1.4,配置NameServer更换解析服务器的原因就是,将wikisoft.tk域名的所有解析功能都托管在Cloudflare,这样Cloudflare可以提供CDN的解析功能!

CleanShot 2021-04-23 at 22.00.44@2x.png

2.2.5 自动配置全部选择关闭

CleanShot 2021-04-23 at 22.00.58@2x.png

2.2.6配置SSL/TLS加密方式(默认不加密,有兴趣的自己尝试其他加密的区别)

CleanShot 2021-04-23 at 22.01.13@2x.png注意:Cloudflare的CDNhttp、https代理模式有个特点,如果用其他端口的话,是监听不到的!

因为我是使用的国内云主机,且zh.wikisoft.tk没有进行备案,所以没有办法使用80、8080、443、8443端口提供服务;所以我真实云主机的回连端口使用的是http–2095!如果你用的是国外云主机,那就直接用80!

Cloudflare支持的HTTP端口是: 80,8080,8880,2052,2082,2086,2095 Cloudflare支持的HTTPs端口是: 443,2053,2083,2087,2096,8443

到此域名+CDN全部搞定!开始测试!

3.配置listener

HTTP Host Header,必须填写你的域名!这是CDN技术的原理要求;在下面的“域名前置方”案中我们再解释

CleanShot 2021-04-23 at 22.01.33@2x.png

4.生成payload,运行测试

4.1运行payload,主机可以成功上线;

CleanShot 2021-04-23 at 22.01.46@2x.png

4.2查看受控主机本地回接C2服务器的ip地址为 172.67.159.243:2095(CDN节点ip);而不是我们自己服务器的真实ip

CleanShot 2021-04-23 at 22.01.59@2x.png

4.3再来说一下这个ip是啥:这个ip就是我们使用的Cloudflare的最近CDN节点的公网ip

CleanShot 2021-04-23 at 22.02.10@2x.png

搞定!

三、使用域名前置(Domain Fronting)

一句话核心原理:底层技术还是上面的CDN,但是我们使用了其他正规可靠的域名进行连接(比如:www.baidu.com),通过设置HOST=zh.wikisoft.tk修改host头的原理,让CDN将连接指向我们期望的C2服务器;最终实现受控主机通过回连!如果使用https的话,除非逆向程序获取host头信息,否则无法获取到真实连接域名!

CleanShot 2021-04-23 at 22.05.36@2x.png

方案分析:

适合用户:这种隐藏域名及ip的方案适合于有公网服务器
优点:本方案使用高信誉域名进行连接,通常安全设备很难检测,也很难封堵;
缺点:配置和准备条件较多步骤比较复杂;如果能利用好上面的域名+CDN也挺好。

使用流程:

小坑提醒:我尝试使用http域名前置进行原理演示,因为 Cloudflare免费版CDN不支持上传自定义ssl网站证书,只能升级成企业版才可以实现https!(如果你是企业版,就是通过修改上面的“2.2.6配置SSL/TLS加密方式”这一节就能完成https通的联通及域名前置!可需要申请域名的https证书,现在各种云平台都有一年免费证书可用,方法“参考文章4、5”。)

1.完成上面域名+CDN的所有配置

2.获取其他也托管在Cloudflare并使用CDN的合法域名(比如:commonlit.app)

CleanShot 2021-04-23 at 22.05.59@2x.png

3.配置listener

HTTP Host Header,必须填写你的域名zh.wikisoft.tk,这是CDN技术的原理要求;CDN的ip都一样,如何判断用户访问的时候baidu 还是 qq呢?实际上就是通过http 头里面的host字段进行判断的!详细内容学习“参考文章6、7、8”

CleanShot 2021-04-23 at 22.06.16@2x.png

4.生成payload,运行测试

4.1运行payload,主机可以成功上线;

CleanShot 2021-04-23 at 22.06.28@2x.png4.2查看受控主机本地回接C2服务器的ip地址为 104.21.41.43:2095(CDN节点ip);而不是我们自己服务器的真实ip
CleanShot 2021-04-23 at 22.06.40@2x.png

4.2.1查看DNS数据包,可以确认连接过程是查询commonlit.app:2095这个地址,进行连接的;
CleanShot 2021-04-23 at 22.06.56@2x.png

4.2.2查看连接数据包,http方式还是可以看到host信息的;

CleanShot 2021-04-23 at 22.07.33@2x.png

4.3再来说一下这个ip是啥:这个ip就是我们使用的Cloudflare的最近CDN节点的公网ip
CleanShot 2021-04-23 at 22.07.56@2x.png

备注:使用https的方式进行域名前置,除非逆向程序获取shellcode里面的host内容,否则无法获取真实域名zh.wikisoft.tk,也无法溯源真实后端服务器的IP!使用了https域名前置,就是在上面的CDN直接使用zh.wikisoft.tk域名的基础上又增加了一层安全保障!如何逆向二进制,也有教程文档“参考文章9”

搞定!

四、使用云服务API网关/云函数

一句话核心原理:api网关透明转发代理后端服务!(了解一kong网关,原理一样);云函数底层使用的就是api网关,只是云函数的功能更高级一点,当client调用网关接口时,通过编程进行修改输入参数;同理api网关接受到代理的后台服务返回的内容是可以再次修改返回内容,最终将信息返回给client;

CleanShot 2021-04-23 at 22.08.35@2x.png

方案分析:

适合用户:这种隐藏域名及ip的方案适合于有公网服务器,注册了云服务商网关或者云函数产品;
优点:本方案使用高信誉域名进行连接,通常安全设备很难检测,也很难封堵;
缺点:配置和准备条件较多步骤比较复杂;如果能利用好上面的域名+CDN也挺好。

使用流程:

备注:这一方案,只是原理学习,没有考虑到安全性;所以直接用了国内的云服务产品!!!各位可以自己寻找“安全”的云服务!云函数的学习“参考文章10、11”,下面只说明底层的api网关内容

1.注册Q云,完成相关认证

2.配置API网关透明传输

2.1新建service

CleanShot 2021-04-23 at 22.08.57@2x.png

2.2新建API代理并完成透明代理配置
小坑提示:前端、后端代理的超时时间都设置的长一点!以免超时!
CleanShot 2021-04-23 at 22.09.21@2x.pngCleanShot 2021-04-23 at 22.09.34@2x.png

后端域名:如果是80端口,就直接填写域名,如果是其他端口,就写成 域名:端口

CleanShot 2021-04-23 at 22.09.49@2x.png

CleanShot 2021-04-23 at 22.10.04@2x.png

2.3查看公网接口调用地址

CleanShot 2021-04-23 at 22.10.18@2x.png

3.配置listener

CleanShot 2021-04-23 at 22.10.30@2x.png

4.生成payload,运行测试

4.1运行payload,主机可以成功上线;
CleanShot 2021-04-23 at 22.10.45@2x.png

4.2查看受控主机本地回接C2服务器的ip地址为 152.136.8.215:80(Q网关节点ip);而不是我们自己服务器的真实ip

CleanShot 2021-04-23 at 22.10.57@2x.png

搞定!!

五、再说点其他的

1.域名直接使用CDN解析删除其他解析(安全分数+1):既然注册了匿名免费的域名,使用目的狠命聊!那就别添加太多解析,越多维护越麻烦,泄露信息风险越大!而且,这个域名后面的所有测试过程都不要不适用代理的模式解析到ip或者CNAME到其他域名!任何历史操作都是泄露你个人信息的风险点!

2.服务器访问IP源限制(安全分数+1):既然使用了CDN服务,为了更安全,就将真实服务器防火墙+安全组的访问源ip做网段限制!设置成仅允许Cloudflare网段进行访问!防止其他小伙伴扫描hack你的c2服务!

3.域名前置一定要用https(安全分数+2):使用http的方式玩域名前置是没意义的,抓包就能看到http里面的host信息;而使用https的域名前置方式,除非二进制逆向获取shellcode里面的host信息!(这一点,,我可能说错了,https也能看到host信息~~)

4.C2服务器安全加固(安全分数+1):C2服务器的客户端连接的50050端口,做好安全防护!(配置好证书确认登录指纹信息!修改其他端口避免其他网络扫描!不用的时候就防火墙安全组都deny或者限制登录ip范围!)

5.向大佬请教1:按照上面CDN的方式,注册了匿名免费域名+免费CDN服务,理论上技术手段是无法溯源到你的任何信息!除非你做了什么见不得人的事情,动用了国家力量去国外公司执法取证!!(欢迎小伙伴帮助检查一下上面的这种方式,是否可以从技术手段完成IP溯源,我们继续交流;)

6.向大佬请教2:通过国内云平台申请一年的免费https证书,从技术手段能通过https证书查到颁发机构和申请人信息吗?这个我不知道风险大小。有知道的大佬麻烦指点一下。

7.向大佬请教3:域名前置方案中“4.2.2”,因为我条件不具备https,想确认一下,是否https的方式,就无法抓包查看host信息吗?(这一点,有大佬回复:https也能看到host信息~~)

最后说点:感谢各位大佬的帮助和指点,这篇文章我只是替各位整理汇总了一下~_~(就不说各位的微信名称了,知道我是谁的在下面留言call我)!

参考文章:

1.如何绕过CDN找源站ip?

2.如何绕过CDN查询网站真实IP?溯源方法如下

3.反溯源-cs和msf域名上线 – 先知社区

4.CS 合法证书 + Powershell 上线

5.关于合法证书+ps上线手把手示范

6.【安全研究】Domain fronting域名前置网络攻击技术

7.域前置技术的原理与CS上的实现

8.红队基础建设:隐藏你的C2 server

9.新人第一次逆向CS生成exe木马

10.RT 又玩新套路,竟然这样隐藏 C2

11.【技术分享】红队攻防基础建设-C2 IP隐匿技术

12.关于Cobalt Strike的Malleable-C2-Profiles浅析

13.子域名劫持(Subdomain Takeover)

来源:freebuf.com 2021-04-23 22:28:00 by: a972182797

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论