前言

最近的网络攻防中,通过在防守中对攻击方式的一系列了解后,我发现直接上线CS和MSF无异于自杀。对C2服务器的隐藏是攻击中重要的一环。
需要隐藏的信息分为两点:

  1. 真实ip隐藏
  2. 流量隐藏

IP隐藏

如果我们想要上线CS,势必要上传木马并发送心跳包,如果直接使用http进行通信很容易就会被发现,进一步暴露我们的C2服务器IP。
CS提供了DNS通信和域名上线方式。我们可以通过DNS的NS解析来传输信息,注意通过该方式传输信息要删除DNS缓存记录,还可以用域名来代替真实IP。这样我们就可以绕过HTTP的检测和限制。
但域名也会指向IP,这时候就需要CDN服务了。
CD即内容分布式网络,是一种智能虚拟网络,依靠部署在各地的边缘服务器来加快服务器响应速度,通过分布式服务隐藏服务器真实ip。没错,它就是我们渗透时找不到ip的元凶,要师夷长技以制夷,借CDN来隐藏我们的CS服务器。因为监听器的传输方式也是http,同样可以用CDN加速。这就是我们的第一种隐藏方式,CDN隐藏

0x01 CDN

条件:

  1. 域名
    免费是不可能的,放弃freenom的免费域名吧,建议去godaddy买,便宜不容易且被厂家出卖,我们在购买时还可以耍一些小聪明,买类似word-baidu,ddos-ailyun这样的域名来迷惑管理员,说不定就骗到了呢?
  2. CDN
    不建议使用国内CDN,虽然便宜,但不支持非80端口的代理,且有被出卖的风险。可以使用cloudflare的免费CDN,够用而且支持其他端口加速。
  3. VPS
    服务器就不多说,既然都要隐藏,其实买哪一家都差不多。

接下来就简单啦,配置好服务器端口,就可以愉快的使用域名上线CS

注意端口的选择,cloudflare免费CDN对可以加速的端口是有限制的

Cloudflare支持的HTTP端口是:
80,8080,8880,2052,2082,2086,2095

Cloudflare支持的HTTPS端口是:
443,2053,2083,2087,2096,8443

踩坑:
域名默认解析是在80端口,我的服务器上80端口挂着我的博客,最优解为再买一个服务器干活,但鄙人资金有限,只能开到另一个端口。
在nginx的conf里面添加server,注意要添加两个,一个监听80端口,server_name为域名,并将它转发到99端口;一个监听99端口,设置root为网站目录,这样就能固定域名访问99端口的服务。

0x02 域前置

参考链接:
域前置技术实践
域前置技术原理与在CS上的实现

Domain Fronting,中文名域前置,是一种用于隐藏真实C2服务器IP且同时能伪装为与高信誉域名通信的技术,多用于木马受控端和控制端之间的隐蔽通信。
利用该技术,我们可以伪造通信域名为高信誉一级域名的下属域名,如abc.baidu.com,来对C2服务器伪装。

这个技术的核心还是CDN,因为一台CDN会为多个域名加速,那如果同时又a.comb.com请求同一个CDN,如何判断请求域名?
答案是通过Host头来判断
那我们curl a.com -H "host:b.com",此时抓包流量,表面上显示a.com,实际上我们与b.com进行了通信。
则在CDN中配置回源IP为CS所在服务器,并将加速域名设置为在该CDN提供商这里尚未被占用的高可信白名单子域名abc.baidu.com,那么就可以将通信伪装为abc.baidu.com。如果被封禁,那我们还可以再找一个同CDN服务器下的域名或者Ip使用,只需对自己的域名多地ping一下就会有很多。

该方法实际操作可以参考链接,这里不细说。因为现在的CDN大多都会验证加速域名的所有权,具体为验证DNS解析中的CNAME。可以说已经断了这条路。

0x03 云函数

云函数,顾名思义就是在云上跑的一个函数,运行服务器由服务商提供,自带CDN效果。那我们可以运行一个函数来转发我们的流量,就可以隐藏自己的真实IP。
腾讯云的云函数配合API网关就可以完成,足够我们使用,且分配域名的一级域名是高信任的tencent。缺点也有,只会分配一个域名,ban了就没有了;因为是脚本转发,所以会比直接上线慢一点;有被腾讯出卖的可能。

想要实践的小伙伴可以看大佬的操作:为你的C2隐藏与加速

后记

CDN还可以配合curl执行反弹shell,这样日志里只会留下你的域名。

关于流量方面的隐藏还在学习中,下期会写~


"孓然一身 , 了无牵挂"