规避溯源的一些方案

Oyst3r 于 2024-03-21 发布

前言

在 HVV 的时候不得不面对这些令人头大的检测设备,稍有不慎,辛辛苦苦拿下的主机、辛辛苦苦做的免杀在不规避溯源的情况下,就会很容易的被蓝军的监测设备直接溯源到 C2 服务器的地址,进而导致 C2 服务器被攻击或者是被溯源丢分,然后接下来就是介绍几种尽量增加溯源难度,尽可能不被溯源到的一些手法,当然之后也会给做实验去看一下怎么能反反溯源(这里还就是得去从原理入手了)。

利用 CDN 技术隐藏 C2 的真实 IP

原理

这个原理的话就是平常所说的 CDN 加速那些东西,学渗透的时候一开始学的那个绕过 CDN 查找网站真实 IP 的一些方法,就是那一块的知识,这里放一张流程图来看一下–>

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

优劣

优势很明显了,这种方法就可以很好的去隐藏掉 C2 服务器的地址,然后可能蓝方去反搞你的服务器的时候,经典一点的 DDos,这样做可以去规避一定的风险,这种技术对 http 与 https 没有强制要求,都可以使用,而域前置技术要求是 https (否则其实和这个方法没什么两样)。

劣势的话,被控主机还是通过我们的域名进行回连,对外还是能看到连接域名(而域前置技术的话就能很好的去规避这一点,前提是数据包 HTTPS 加密完的),如果用了国内的 CDN(国内的 CDN 都是要去备案的)、这个也增加了直接被溯源到的风险,而且域名还可能直接被拉黑,而且还有一些方法可能溯源到真实 IP(强烈建议用之前学到的那些方法再查一下是否是完全隐藏住了),这个域名也属于红队的资产,查到也是会扣分的。

实验

1.首先找一个不需要备案的域名,这个国内的服务商就不要想了,想办法去注册一个花钱搞一个。

2.找一个域名托管商,就 Cloudflare 就行,就是用它里面可以给域名做加速解析的 CDN 这个功能点,然后结合注册的域名和真实的 C2 服务器的地址在里面配置好,然后在注册域名的网站把 NameServer 更换解析服务器,原因就是将域名的所有解析功能都托管在 Cloudflare,这样 Cloudflare 可以提供 CDN 的解析功能(这点别忘记了)。

3.然后 ping 一下注册的域名看一下效果

发现得到的 IP 是 104.21.11.96,把这个 IP 放到微步上查一下相关情报,看看是个啥

估计一会儿我的的域名也会出现在下面这张图片里面

清晰的可以看到这个 IP 绑了 1000 多个站,而且每一个域名都毫无关联性,所以这百分百就是个 CDN 服务器了,专门给域名做加速的

然后再超级 Ping 一下,确实都是 CDN 的节点,没有暴露自己 C2 服务器的真实 IP

至此准备工作就全部完成了,这里还有一个需要注意的点,就是要用这个域名代理服务商 Cloudflare 做 CDN 的话,它并不是支持全端口的,HTTP 协议只能用 80、8080、8880、2052、2082、2086、2095 这几个,然后 HTTPS 的话只能用 443、2053、2083、2087、2096、8443,没有办法把端口设置成任意的,这个也是溯源的一个小点吧,短时间内迅速判断一下这个 CDN 的 IP 是不是一个正常的行为。

4.CS 上线,配置 listener,HTTP Host Header,必须填写自己的域名!

5.将生成的 EXE 文件运行起来,可以发现 CS 成功的上线

虽然这里寥寥几笔就带过了,但是这个东西确实还是很麻烦的,主要的原因在于自己把 C2 的放在了阿里云的服务器上面,以为没有备案的一个域名也可以正常的解析到阿里云这种国内的虚拟主机上面,结果 wireshark 看流量就是显示阿里云的防护对这个没有备案的域名进行了一个拦截。

这里想办法去搞一台国外的或者是香港这种的 VPS 再去试就可以了

6.分析一下它的动态外连的行为

而上面的这些 IP 是什么呢,就是给域名配置的 CDN 加速时候的 CDN 服务器的地址,Ping 验证一下

同样的用 wireshark 抓到的所有包也都是看不到外连的 VPS 的真实 IP 的

这个有是因为我的主机同时做了攻击机和受害机,这个流量是攻击机和 C2 服务器的通信流量,全部走的都是 TCP 协议,而我生成的是一个 HTTP 的反连木马,现在基础上去过滤一下 HTTP 肯定是没有任何结果的

溯源

1.首先的话,用上面的这两条命令先去看一下这个木马到底是连接到了哪个 IP 的哪个端口,然后再分析一下这个木马走的是什么协议,如果攻击者用的是上面说到的 Cloudflare 的话,支持的协议就是 HTTP 和 HTTPS,而且支持的端口也就是上面说到的那几个,可以根据这一点再结合微步或者是 QAX 的威胁情报平台做个初步的判断,判断是不是用了 CDN 去给 C2 做了一个隐藏,如果真的是的话看流量,看看能不能把这个域名给查出来(也就是上面用到的 cs.spacestabs.top),一般的话没去做域前置肯定是可以在 HOST 头里面看到的,用了的话再下面那个针对于域前置的溯源手法再进一步讨论

2.OK 现在已经有了这个域名了,其实这个也算是红队的资产,这个被溯源到了也是可以回血的,然后怎么下一步呢,首先就还是上一套最开始学的那个绕过 CDN 去查询主站的真实 IP 一套手法,不去演示了,因为我演示的这个确实出不了啥效果,用普通的这种办法查完全查不出来,然后给一个师傅写的博客吧–>

11 种绕过 CDN 查找真实 IP 方法

我之前的文章也有写过差不多的信息收集去绕过 CDN 的手法,可以结合着去看一下,其中着重去看一下网站有没有用了 HTTPS,如果用了的话就是去查它的证书拿到 sha256,然后再去找 IP

3.大部分通过 CloudFlare 保护的网站都有一个 direct-xxx(xxx 对应网站域名)的子站,通过这个子站也可以获得该网站的真实 IP,这个也获取不到

4.各种工具扫一扫,网上搜绕过 CloudFlare 的小工具,还是都搜不到

5.扫描全网,如果这个域名它开有 80 端口这种特征性特别强的,就去扫描全网匹配关键词,然后筛选 IP,这个我也去那个 C2 服务器开个 80 试一试看看情况如何

……

6.扫 22 端口拿公钥,然后直接上 censys 去查这个 hash 值,举个例子

首先就是这个样子

然后再这样一下

最后去搜就行了

6.主动出击,让攻击者去点写出来的一个东西,或者伪造一个页面让他去点

这里用一个内网主机去模拟一个 C2 服务器,如果这个服务器上面访问了蓝队已经布置好的一个 admin.html 页面,不管它加了多少代理,那么这个就是会直接把它的源 IP 直接溯源出来,然后隐蔽一点的话就可以发送到蓝队的一个接受消息的服务器上面,当然这台服务器必须干净,或者针对于 RT 要溯源这台接收消息的服务器做点反溯源。

域前置技术

原理

放一张原理流程图,同一个 cdn 厂商下倘若有两个域名 a.com,b.com,这时候使用 curl 命令访问第一个 a.com 并将 host 名改为 b.com 这时候,实际访问的是 b.com 的内容。而一般的监测机制是不会检测 host 头的

优劣

优势:使用高信誉域名进行连接,通常安全设备很难检测,也很难封堵(如果用了恶意域名监测技术,可能就只能用域前置技术了);如果使用 https 的话,除非逆向程序获取 host 头信息,否则无法获取到真实连接域名!这就是比上面那种方法又提升了一层针对于域名的反溯源

劣势:这种技术现在在不少的 CDN 厂商下都被禁止了,不一定会利用成功;配置和准备条件较多步骤比较复杂

实验

这项技术的实现肯定是需要 HTTPS 证书的,也不是说必须的,但有的话效果才是最好的,要不然还不如用上面那个 CDN 绕过,但是这个因为 Cloudflare 免费版 CDN 不支持上传自定义 SSL 网站证书,只有升级成企业版才可以实现 HTTPS,所以这里就不演示 HTTPS 的了

1.完成上面的所有步骤并成功

2.获取其他也托管在 Cloudflare 这个 IP 上面的,并使用 CDN 的合法域名,就是先 ping 一下我们那个注册的域名,然后根据获取的 CDN 的 IP 去反查其它的域名

就它了

然后去配置一下 C2 服务器

可以发现成功的上线了

3.然后看一下外连 IP

以及放到 QAX 云沙箱上扫一下

都没有暴露真实的域名和 C2 的地址,但其实肯定暴露了,因为用的并不是 HTTPS,而是拿 HTTP 做的实验,拿 Wireshark 分析一下确实还是可以看到的

这个是下发任务的心跳包,就是 submit.php(这个就是客户端返回命令执行结果的 POST 数据包)的前一个 HTTP 的数据包的返回包,可以尝试对这个解密一下,看一下命令,低版本的 CS 有人逆,这个高版本可能逆不出来

而这个外连 IP 就是 ping 我之前注册的那个域名的 CDN 的地址

就分析到这里吧

溯源