1. 外网打点:从Web漏洞到初始立足点
内网渗透的第一步往往是从外网找到突破口。这次我们模拟的场景是一个Java Web应用,运行在192.168.16.195的Ruoyi框架上。实战中发现这个系统存在heapdump文件泄露漏洞,攻击者可以直接下载内存快照文件。
为什么heapdump这么危险?这个文件相当于系统的"记忆快照",里面可能包含数据库连接字符串、加密密钥、会话令牌等敏感信息。我遇到过不少案例,开发人员为了方便调试开启了heapdump功能,但忘记删除测试环境中的调试接口。
获取heapdump文件后,使用JDumpSpider工具分析:
java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump.zip这个工具会自动扫描内存中的敏感数据,比如我们找到了AES加密密钥w4Sosj/8O71RkNRiOrb9JA==。有了这个密钥,攻击者可以解密应用中的加密数据,甚至伪造会话令牌。
内存马注入实战:通过哥斯拉工具上传内存马是最隐蔽的持久化方式之一。与传统webshell不同,内存马只存在于进程内存中,重启后消失,但不会在磁盘留下痕迹。我在测试时发现,即使系统安装了杀毒软件,对内存马的检测效果也有限。
2. 权限维持:免杀木马与隐蔽通道
拿到初始权限后,下一步是建立稳定的控制通道。这里我们使用了一个经过特殊处理的360免杀木马web.exe。这个木马的特点包括:
- 使用非标准PE结构规避静态检测
- API调用采用动态加载方式
- 通信流量模仿正常HTTPS
免杀技巧实测:
- 分段加密payload,运行时动态解密
- 关键字符串使用堆栈动态构造
- 调用合法系统进程进行内存注入
木马上线后,如果遇到哥斯拉无法执行命令的情况,可以尝试通过Shiro反序列化漏洞进行利用。这里有个坑要注意:新版Shiro修复了默认密钥的问题,但如果系统使用了弱密钥,仍然可以利用。
3. 内网横向移动:从边缘到核心
进入内网后,首要任务是获取域控权限。我们通过以下步骤逐步推进:
1. 权限提升:
getsystem这个命令尝试将权限提升到SYSTEM级别。在实际环境中,可能需要配合其他提权漏洞使用。
2. 信息收集:
net time /domain这个简单的命令可以确认当前网络是否域环境,并显示域控的主机名。
3. 端口扫描与口令爆破: 使用内网扫描工具识别开放端口和服务。常见突破口包括:
- 445端口的SMB服务
- 3389端口的RDP服务
- 1433端口的SQL Server
4. 流量转发: 为了绕过网络隔离,需要建立隧道。常用的方法有:
- ICMP隧道
- DNS隧道
- HTTP/HTTPS隧道
4. 对抗安全防护:卡巴斯基绕过实战
在内网中遇到卡巴斯基等安全软件时,需要特别注意以下几点:
1. 行为规避:
- 避免直接调用敏感API
- 执行命令时添加正常参数作为伪装
- 控制执行频率,模拟正常用户行为
2. 工具选择: 使用经过特殊处理的工具套件,例如:
- 无文件攻击工具
- 内存加载PE的工具
- 合法管理工具包装的payload
3. 痕迹清理:
- 定期清除日志
- 使用临时账户操作
- 避免在磁盘写入持久化文件
在最近的一次测试中,我们发现卡巴斯基对某些.NET程序的内存行为检测较弱。通过将关键操作封装在合法的.NET应用中,成功绕过了实时监控。
内网渗透就像一场猫鼠游戏,攻击者需要不断调整策略。记得在一次项目中,我们花了三天时间才找到合适的横向移动方法。关键是要保持耐心,对每个环节都进行充分测试