目录
端口转发
lcx工具
Lcx工具正向连接
Lcx工具反向连接
SOCKET隧道代理
socks常见利用场景
Proxifier
SocksCap64
Proxychains
端口转发
本篇会和搭建介绍一下端口转发和socket隧道代理的概念和简单演示
lcx工具
lcx工具是一个红队人员在内网渗透测试中最典型的端口转发工具,lcx工具可分为Windows和Linux两个版本,这里以lcx工具为例,以转发3389端口为目的演示端口转发功能。
本次实验环境表如表1所示。
端口转发实验环境表
类型 | IP配置 |
---|---|
攻击机 | 192.168.159.151(攻击) |
跳板机 | 192.168.159.229 192.168.52.102(双网卡跳板机边界设备) |
靶机 | 192.168.52.101(内网主机) |
本次实验是在内网靶机上开启远程桌面连接,跳板机使用lcx工具进行端口转发,在靶机和跳板机中搭建一条隧道,用攻击者电脑连接跳板机隧道端口,通过跳板机的端口,获取到内网靶机的远程桌面权限。
注意:攻击者通过防火墙允许的服务端口访问跳板机服务器,在跳板机进行设置隧道代理后访问到内网靶机。
因跳板机是双网卡,可与外部主机和内网靶机通讯,所以可以通过在跳板机搭建隧道访问内网的IP。内网可以与跳板机通讯,通过与攻击者在跳板机搭建的隧道,绕过限制与攻击者进行通讯,如图1-18中的虚线所示。
lcx工具下载: GitHub - UndefinedIdentifier/LCX: 自修改免杀lcx端口转发工具
这里我模拟环境如下:
Kail攻击机:192.168.159.151
windows7-1为双网卡主机:192.168.159.229 192.168.52.102
windows server 2008 为靶机:192.168.52.101
现在的瓦罗情况如下:
Kail主机通过公网是可以访问到windows 7跳板机的外网地址,无法访问到内网的ip地址:
windows 7 主机可以访问Kail主机和windows server 2008主机:
windows server 2008 可以访问windows7的内网地址,但是不能访问外网的Kail:
Lcx工具正向连接
查看lcx工具命令帮助信息,执行lcx.exe -help命令:
使用lcx工具的前提是,已经获取到跳板机的系统管理权限,进行上传工具后,可以使用-tran参数来进行正向转发,在跳板机上执行lcx.exe -tran 8888 192.168.52.101 3389命令,会把靶机的3389端口转发到跳板机的8888端口上,成功与靶机之间搭建一条隧道,如图1-20所示。
此时已经将靶机的3389端口转发到跳板机的8888端口上,成功搭建了一条隧道。
现在我们使用kali攻击机执行rdesktop 192.168.159.229:8888命令,连接跳板机的8888端口,即可与靶机成功建立远程连接:
可以看到现在成功的通过中间主机192.168.159.229,转发本地8888端口到3389上,我们使用攻击机192.168.159.151访问192.168.159.229:8888端口,然后连接到了靶机192.168.52.10:3389的远程桌面服务
注:如果出现下面错误:
rdesktop 192.168.159.229:8888
Core(error): tcp_recv(), recv() failed: 连接被对方重设
使用下面的方法解决:
右击“我的电脑”->"属性"->"远程设置"->在远程桌面选项中,选择允许运行任意版本远程桌面的连接。
Lcx工具反向连接
反向连接和上述所讲的正向连接恰好相反,首先在跳板机上开启监听,执行lcx.exe -listen 6666 8888命令用来监听本机6666端口,并将该端口的连接映射到本机的8888端口上
然后在靶机执行Lcx.exe -slave 192.168.52.102 6666 127.0.0.1 3389命令,将3389端口转发到跳板机的6666端口上搭建一条隧道,然后跳板机再将6666端口映射到本机的8888端口。只要能访问到跳板机的主机,均能通过跳板机的8888端口连接内网的3389端口:
在kali攻击机使用 rdesktop 192.168.159.229 8888命令来远程连接访问跳板机的8888端口,即可访问拿到靶机的3389。
可以看到这里也是成功的反向链接成功的进行了端口转发实现了内网穿透,访问到了靶机
SOCKET隧道代理
Socks是Socket Secure的缩写,它是一种工作在OSI七层模型中的第五层网络会话层协议,Socks主要的作用是代表客户端将任何协议或者任何程序产生的任何类型的流量路由到服务器上,以此来将本地和远端两个系统连接起来。
由于Socks其处于第七层和第四层模型之间,因此socks可以支持HTTP、HTTPS、FTP、SSH、FTP等多种协议,Socks从版本上来讲,又可分为socks4和socks5这两种版本,目前socks协议最新版本为socks5,socks4和socks5这两者版本最主要的区别是socks4仅支持TCP代理,不支持UDP代理以及各种验证协议,socks5不仅支持TCP/UDP代理以及各种身份验证协议的同时,还会通过身份验证建立完整的TCP 连接,并使用Secure Shell (SSH) 加密隧道的方法来中继流量,,我们经常会利用Socks5来建立通信隧道以此来访问远程核心靶标系统中的内部网络。
socks常见利用场景
假设在目标内网中已经获取了一台可执任意行命令权限的主机后,需要来对其主机所属的区域以及安全策略进行判断探测是否可以建立socks连接,具体的socks常见利用场景描述如下表:
目标位置 | 场景描述 |
---|---|
内网 | 防火墙未对出口流量及端口做任何方面的安全策略,内网中的服务器可任意访问外部网络,不受安全策略限制。 |
内网 | 防火墙只配置了特定的入站规则,仅允许特定业务的端口进行访问(例如:80、443) |
内网 | 防火墙都配置了特定的出入站规则,仅开放了特定的端口(例如:80、443) |
在实网攻防对战中有很多的Socks代理工具可供我们选择使用,但值得我们注意的是,我们需要结合实际的场景去选择对应的Socks代理工具,尽量使用一些没有GUI界面以及不需要依赖其他软件支撑的Socks代理工具,下面我会演示三种常见的Socket代理工具的基本使用
Proxifier
Proxifier是一个基于Mac / Windows 系统的网络代理软件客户端工具。Proxifier支持TCP,UDP协议,Xp,Vista,Win7,mac系统以及socks4,socks5。它为本地系统内具体的应用提供代理服务,让部分软件(网址或 IP)使用代理访问网络,而其它软件(网址或 IP)正常访问网络。
SocksCap64
Sockscap64是由Taro开发的免费代理客户端软件,可以使windows网络应用程序通过socks代理服务器开访问网络而不需要对应用程序进行任何修改,即便某些程序不支持socks代理也可以完美解决代理访问问题。
Sockscap64目前只支持socks4、socks5及TCP连接。
Proxychains
ProxyChains是一个基于linux和其他Unix的开源代理工具,其支持http、socks4和socks5进行代理连接。它是通过一个用户定义的代理列表强制连接指定的应用程序,直接断开接收方和发送方的连接。proxychains也可以用于在网络中进行匿名操作的工具。它通过将流量通过代理服务器进行转发,隐藏了用户的真实IP地址和位置。
可以进入/etc/proxychain4.conf文件中设置代理:
vim /etc/proxychains4.conf
注:可以在文件的末尾增加代理
下面使用一个例子来演示一下它的作用,我们可以使用Proxychains配置文件中的代理服务器进行扫描,实现IP地址的隐藏和匿名。
添加代理:
尝试使用 ProxyChains 代理访问网站 github.com
可以看到现在就使用代理ip地址127.0.0.1:8000访问的网站