内网渗透--突破安全策略上线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服务且不出网的情况

失败原因:

  1. 公网CS服务器无法访问目标web服务
  2. 尝试本地搭建CS服务+Pystinger反代仍失败
  3. 可能原因:
    • 目标web环境问题
    • Reserver型shell通讯问题

3. 成功方案: 正向代理+正向Shell

3.1 HTTP隧道工具选择

尝试工具:

  • Neo-reGeorg/reGeorg: 失败,跳板机直接与CS服务器断开

选用ABPTTS原因:

  1. 对抗特征检测优秀
  2. 创建的隧道稳定

3.2 ABPTTS配置流程

  1. 生成服务端脚本:

    python abpttsfactory.py -o server
    
  2. 上传server脚本到目标机器

    • 使用哥斯拉的大文件上传功能(冰蝎/大马上传失败)
  3. 启动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
  • 常规分离式免杀方法不适用

解决方案:

  1. 工具组合:

    • VirTest5.0(特征码定位)
    • Resource Hacker(资源修改)
    • SafengineShielden(强壳保护)
    • UPX(压缩壳)
  2. 免杀步骤:

    • 使用VirTest5.0定位特征码
    • 用010Editor修改特征码十六进制
    • SafengineShielden加壳(选择反LPK注入、反调试器附加、反内存转储)
    • 可选加UPX壳
    • 使用Resource Hacker添加图标文件
  3. Stager与Stagerless区别:

    • Stager型: 只包含加载逻辑,通过反射加载payload
    • Stagerless型: 包含完整payload,体积更大,特征更明显

3.5 执行流程

  1. 上传正向bind木马(beacon_se.exe)到目标
  2. 在冰蝎执行:
    D:/beacon_se.exe
    
  3. 目标机开启1111端口监听
  4. 跳板机执行连接:
    connect 127.0.0.1 7777
    

4. 权限提升技术

4.1 PrintSpoofer提权

  1. 上传PrintSpoofer.exe至目标
  2. 以System权限运行正向shell:
    C:\Windows\Temp\PrintSpoofer -c D:/1111_se.exe
    
  3. 确认1111端口开放:
    netstat -ano
    
  4. 跳板机重新连接正向bind

4.2 绕过杀毒添加用户

常规方法被拦截:

  • net/net1命令被火绒监控

解决方案:

  1. 直接调用Windows API添加用户
    • 项目地址: https://github.com/newsoft/adduser
  2. 原理: 绕过对net/net1进程的hook,直接调用底层函数

4.3 Hash传递攻击

命令示例:

sekurlsa::pth /user:Administrator /domain:用户名 /ntlm:194f34439dd27846db00c6723036da6b "/run:mstsc.exe /restrictedadmin"

优势:

  • 不需要新建用户
  • 留下痕迹少
  • 降低被发现概率

5. 替代方案与思考

  1. MSF正向bind:

    • 自带混淆器,免杀效果可能更好
  2. PowerShell正向bind:

    • 可生成无阶段PowerShell脚本
    • 但Server 2016的AMSI使混淆免杀效果差
    • 对2012/2008系统可能有效

关键经验总结

  1. 文件上传技巧:

    • 大文件上传使用哥斯拉
    • 常规方法(certutil/powershell下载)在不出网环境中失效
  2. 隧道选择:

    • Pystinger有局限性,不适用于所有环境
    • ABPTTS在严格环境下表现更稳定
  3. 免杀要点:

    • 正向Shell免杀难度高于反向Shell
    • 特征码修改+强壳组合是关键
  4. 提权技巧:

    • 正向Shell提权需特殊处理
    • 打印机漏洞是Server 2016有效提权方式
  5. 权限维持:

    • Hash传递比创建用户更隐蔽
    • 利用现有管理员账户降低风险

完整流程图

[公网CS服务器] ←→ [跳板机(父Beacon)] ←→ [本地7777端口] 
    ↑                   ↓
    |             [ABPTTS客户端]
    |                   ↓
    |             [目标8080端口(HTTP)]
    |                   ↓
    └─────── [目标1111端口(子Beacon)]

防御建议

  1. 监控异常端口开放(如1111)
  2. 加强HTTP隧道特征检测
  3. 限制本地管理员凭证的使用范围
  4. 启用LSA保护防止凭证转储
  5. 监控Print Spooler服务的异常使用
内网渗透突破安全策略上线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配置流程 生成服务端脚本: 上传server脚本到目标机器 使用哥斯拉的大文件上传功能(冰蝎/大马上传失败) 启动HTTP隧道: 将目标机的1111端口通过HTTP隧道映射至本机的7777端口 3.3 正向Shell原理 正向Shell作用原理 : 在目标机器开放监听端口 等待其他主机连接 子Beacon从父Beacon接受请求,不直接与CS服务端通讯 优势 : 绕过严格出站规则 本地端口通讯通常不被防火墙阻止 通讯流程 : 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)到目标 在冰蝎执行: 目标机开启1111端口监听 跳板机执行连接: 4. 权限提升技术 4.1 PrintSpoofer提权 上传PrintSpoofer.exe至目标 以System权限运行正向shell: 确认1111端口开放: 跳板机重新连接正向bind 4.2 绕过杀毒添加用户 常规方法被拦截 : net/net1命令被火绒监控 解决方案 : 直接调用Windows API添加用户 项目地址: https://github.com/newsoft/adduser 原理: 绕过对net/net1进程的hook,直接调用底层函数 4.3 Hash传递攻击 命令示例 : 优势 : 不需要新建用户 留下痕迹少 降低被发现概率 5. 替代方案与思考 MSF正向bind : 自带混淆器,免杀效果可能更好 PowerShell正向bind : 可生成无阶段PowerShell脚本 但Server 2016的AMSI使混淆免杀效果差 对2012/2008系统可能有效 关键经验总结 文件上传技巧 : 大文件上传使用哥斯拉 常规方法(certutil/powershell下载)在不出网环境中失效 隧道选择 : Pystinger有局限性,不适用于所有环境 ABPTTS在严格环境下表现更稳定 免杀要点 : 正向Shell免杀难度高于反向Shell 特征码修改+强壳组合是关键 提权技巧 : 正向Shell提权需特殊处理 打印机漏洞是Server 2016有效提权方式 权限维持 : Hash传递比创建用户更隐蔽 利用现有管理员账户降低风险 完整流程图 防御建议 监控异常端口开放(如1111) 加强HTTP隧道特征检测 限制本地管理员凭证的使用范围 启用LSA保护防止凭证转储 监控Print Spooler服务的异常使用