内网渗透--突破安全策略上线CS
字数 2040 2025-08-25 22:59:15
内网渗透突破安全策略上线CS技术详解
环境概述
- 目标系统: Windows Server 2016
- 安全防护:
- 杀毒软件: 火绒 + Windows Defender
- ASMI默认开启
- PowerShell有特殊策略限制
- 网络限制:
- 不出网(TCP/ICMP/DNS协议不通)
- 严格出入站策略:
- 入站: 仅允许HTTP(80/8080端口)
- 出站: 仅允许8080端口对外通讯
- 已获取权限:
- Web打点获取的冰蝎Webshell(.NET权限)
- 权限很低,无法直接进行敏感操作
技术挑战与解决方案
1. 为什么需要上线CS
- WebShell权限太低,限制性大
- CS采用反射DLL加载PE程序,可Bypass某些安全检测
- 无法直接执行敏感操作(如mimikatz抓密码)
- 无法转储LSA(需要管理员权限)
- 缺乏交互式Shell
2. 初始尝试: Pystinger反向代理(失败)
原理:
- 利用HTTP协议将目标机器端口映射至CS服务端监听端口
- 适用于只能访问web服务且不出网的情况
失败原因:
- 公网CS服务器无法访问目标web服务
- 尝试本地搭建CS服务+Pystinger反代仍失败
- 可能原因:
- 目标web环境问题
- Reserver型shell通讯问题
3. 成功方案: 正向代理+正向Shell
3.1 HTTP隧道工具选择
尝试工具:
- Neo-reGeorg/reGeorg: 失败,跳板机直接与CS服务器断开
选用ABPTTS原因:
- 对抗特征检测优秀
- 创建的隧道稳定
3.2 ABPTTS配置流程
-
生成服务端脚本:
python abpttsfactory.py -o server -
上传server脚本到目标机器
- 使用哥斯拉的大文件上传功能(冰蝎/大马上传失败)
-
启动HTTP隧道:
python abpttsclient.py -c server/config.txt -u "http://10.1.1.1:8080/abptts.aspx" -f 127.0.0.1:7777/127.0.0.1:1111- 将目标机的1111端口通过HTTP隧道映射至本机的7777端口
3.3 正向Shell原理
-
正向Shell作用原理:
- 在目标机器开放监听端口
- 等待其他主机连接
- 子Beacon从父Beacon接受请求,不直接与CS服务端通讯
-
优势:
- 绕过严格出站规则
- 本地端口通讯通常不被防火墙阻止
-
通讯流程:
CS服务端(公网) → 跳板机(父Beacon) → 7777端口 → 目标8080端口(HTTP隧道) → 目标1111端口(子Beacon)
3.4 正向Bind免杀技术
挑战:
- 正向Shell属于Stagerless型Beacon,无法生成Shellcode
- 常规分离式免杀方法不适用
解决方案:
-
工具组合:
- VirTest5.0(特征码定位)
- Resource Hacker(资源修改)
- SafengineShielden(强壳保护)
- UPX(压缩壳)
-
免杀步骤:
- 使用VirTest5.0定位特征码
- 用010Editor修改特征码十六进制
- SafengineShielden加壳(选择反LPK注入、反调试器附加、反内存转储)
- 可选加UPX壳
- 使用Resource Hacker添加图标文件
-
Stager与Stagerless区别:
- Stager型: 只包含加载逻辑,通过反射加载payload
- Stagerless型: 包含完整payload,体积更大,特征更明显
3.5 执行流程
- 上传正向bind木马(beacon_se.exe)到目标
- 在冰蝎执行:
D:/beacon_se.exe - 目标机开启1111端口监听
- 跳板机执行连接:
connect 127.0.0.1 7777
4. 权限提升技术
4.1 PrintSpoofer提权
- 上传PrintSpoofer.exe至目标
- 以System权限运行正向shell:
C:\Windows\Temp\PrintSpoofer -c D:/1111_se.exe - 确认1111端口开放:
netstat -ano - 跳板机重新连接正向bind
4.2 绕过杀毒添加用户
常规方法被拦截:
- net/net1命令被火绒监控
解决方案:
- 直接调用Windows API添加用户
- 项目地址: https://github.com/newsoft/adduser
- 原理: 绕过对net/net1进程的hook,直接调用底层函数
4.3 Hash传递攻击
命令示例:
sekurlsa::pth /user:Administrator /domain:用户名 /ntlm:194f34439dd27846db00c6723036da6b "/run:mstsc.exe /restrictedadmin"
优势:
- 不需要新建用户
- 留下痕迹少
- 降低被发现概率
5. 替代方案与思考
-
MSF正向bind:
- 自带混淆器,免杀效果可能更好
-
PowerShell正向bind:
- 可生成无阶段PowerShell脚本
- 但Server 2016的AMSI使混淆免杀效果差
- 对2012/2008系统可能有效
关键经验总结
-
文件上传技巧:
- 大文件上传使用哥斯拉
- 常规方法(certutil/powershell下载)在不出网环境中失效
-
隧道选择:
- Pystinger有局限性,不适用于所有环境
- ABPTTS在严格环境下表现更稳定
-
免杀要点:
- 正向Shell免杀难度高于反向Shell
- 特征码修改+强壳组合是关键
-
提权技巧:
- 正向Shell提权需特殊处理
- 打印机漏洞是Server 2016有效提权方式
-
权限维持:
- Hash传递比创建用户更隐蔽
- 利用现有管理员账户降低风险
完整流程图
[公网CS服务器] ←→ [跳板机(父Beacon)] ←→ [本地7777端口]
↑ ↓
| [ABPTTS客户端]
| ↓
| [目标8080端口(HTTP)]
| ↓
└─────── [目标1111端口(子Beacon)]
防御建议
- 监控异常端口开放(如1111)
- 加强HTTP隧道特征检测
- 限制本地管理员凭证的使用范围
- 启用LSA保护防止凭证转储
- 监控Print Spooler服务的异常使用