思维导图
必备知识点:
1.代理和隧道技术区别?
- 代理只是为了解决网络通信问题,有些内网访问不到,可以用代理实现
- 隧道不仅是解决网络的通信问题,更大的作用是绕过过滤,突破防火墙/入侵检测系统。
2.隧道技术为了解决什么?
- 防火墙过滤问题、网络连接通信问题、数据回链封装问题
- 在数据通信被拦截的情况下,可以利用隧道技术封装改变通信协议进行绕过拦截。比如CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等问题,都可以通过隧道技术解决。
3.隧道技术前期的必备条件?
- 在用隧道之前要先探测对应隧道协议是否支持,如果不支持,用这个隧道也没有任何意义!
隧道原理
- 在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
常用的隧道技术有以下三种:
- 网络层:IPv6 隧道、ICMP 隧道
- 传输层:TCP 隧道、UDP 隧道、常规端口转发
- 应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道
本课重点:
- 案例1:网络传输应用层检测连通性-检测
- 案例2:网络层ICMP隧道Ptunnel使用-检测,利用
- 案例3:传输层转发隧道Portmap使用-检测,利用
- 案例4:传输层转发隧道Netcat使用-检测,利用,功能
- 案例5:应用层DNS隧道配合CS上线-检测,利用,说明
案例1:网络传输应用层检测连通性-检测
隧道有各种层面的,每个层面又分不同协议,你想要用哪个隧道,就需要先确定目标主机是否支持对应隧道协议。比如你想用一个网络层的 ICMP 隧道,这个时候你要去检测目标主机支不支持ICMP隧道的开启。怎么检测呢?可以使用ping命令去ping地址,看能不能正常通信,如果能的话就可以。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
案例2:网络层ICMP隧道ptunnel使用-检测,利用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
环境准备
我们要通过web主机实现对DC的控制,但是DC上面有防护的一些策略,此时可以尝试使用隧道协议。
下面要实现用hacker xiaodi去连接DC,假设前期已知DC的账号密码,攻击者希望通过自己的计算机hacker xiaodi连接到DC的3389,现在76.x是不可能去连接到33.33这台计算机的(可以在kali输入命令:rdesktop 192.168.33.33,连接不上),因为他们不在一个网段。
现在我要实现请求连接DC的3389端口:先通过hackerxiaodi连接webserver的外网接口192.168.76.150,然后借助33网卡连接DC的33.33。
案例演示
<1>用“ping”命令检测连通性,正常通信,说明支持 ICMP 协议,可以使用 ICMP 隧道。
<2>在webserver上开启隧道,设置密码为xiaodi。
1 |
|
<3>在kali上执行以下命令,将webserver作为跳板,转发目标主机3389请求数据给本地1080端口
1 |
|
上面命令的意思是请求192.168.76.150(webserver),请求到之后,自己监听一下本地的1080,然后将33.33的3389数据,给到本地的1080。然后下一步就直接利用rdesktop连接本地的1080,实质就是连接33.33。
<4>在kali上执行以下命令,弹出远程桌面
1 |
|
这样做有什么意义呢?原来3389连接远程桌面,使用的是3389对应的协议,现在连接远程桌面,流量数据传输就变成使用 ICMP 协议了。
案例3:传输层转发隧道Portmap使用-检测,利用
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
环境准备
- 受害者内网的主机(无法出网,但是能和内网的主机进行交互):192.168.3.21(内网ip)
- 受害者内网的主机(跳板,能出网):拥有2个IP地址:192.168.3.31(内网ip)和192.168.76.143(外网ip)
- 攻击者的外网服务器:192.168.76.X
案例演示
<1>在DC上执行以下命令,将本地3389给webserver的6666。
1 |
|
<2>在webserver上执行以下命令,监听6666端口流量并转发至7777
1 |
|
<3>在webserver上执行以下命令,连接webserver的7777,登录远程桌面访问,这里其实登录的是域控DC的远程桌面。
1 |
|
登录成功
案例4:传输层转发隧道Netcat使用-检测,利用,功能
netcat工具是windows和linux都能利用,但是用的时候一定要确保nc是最新版,linux是自带这个命令,老版本有的不支持-e这个选项,很多功能会有限制。
netcat称为瑞士军刀的原因就是它利用起来非常方便,反弹会话是有很多方式的,可以利用多种协议去实现控制,因为我们在实战过程中会有很多协议被封住被拦截,所以我们要掌握很多种控制的协议,实战中就不会掉链子!
netcat使用的是TCP协议,所以如果受害主机没有过滤TCP协议,我们就可以尝试使用nc命令在传输层建立隧道连接实现与控制主机的通信。
nc命令复习:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
案例演示1-正向(攻击连接受害)
<1>在受害主机DC上执行以下命令,将自身的cmd窗口反弹给1234端口
1 |
|
<2>在攻击主机webserver上执行以下命令,主动连接,成功反弹shell
1 |
|
案例演示2-反向(受害连接攻击)
<1>在攻击主机webserver上执行以下命令,监听1234端口
1 |
|
<2>在受害主机DC上执行以下命令,将自身的命令窗口给到webserver的1234端口
1 |
|
<3>在攻击主机webserver上,成功反弹shell
案例演示3-多向连接反弹shell-配合转发-反向
环境:kali(76.132)–>webserver(3.31、76.143)–>sqlserver(3.32)
<1>在Webserver上执行以下命令,把自己的2222端口给3333,并监听
1 |
|
<2>在Sqlserver上执行以下命令,把cmd反弹给webserver的2222端口
1 |
|
此时Webserver上监听到会话
<3>在kali上执行以下命令,连接Webserver的3333端口,成功反弹shell,连接到Sqlserver。
1 |
|
案例5:应用层DNS隧道配合CS上线-检测,利用,说明
当常见协议监听器被拦截时,可以换其他协议上线,其中dns协议上线基本通杀
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
应用层是在实战中经常用到的,之前两个层面会经常被防火墙拦截(网络/传输层),下面用DNS隧道来实现 cs上线。
cs的监听器对应着后门绑定的协议。常规是用http上线,dns比http速度要慢。当常见协议监听器被拦截时,可以换其他协议上线,其中dns协议上线基本通杀。因为dns是域名解析,这个协议一般都不会被拦截,数据通过dns协议给出去,一般也不会被拦截!
我们在生成监听器的时候有个payload,可以选择不同的协议。网上还有插件,还可以有很多其他协议。
案例演示
<1>云主机Teamserver配置端口53启用-udp(只有阿里云主机有这个端口问题,其他主机一般没有)
<2>买一个域名修改解析记录如下:
- A记录->cs主机名->CS服务器IP
- NS记录->ns1主机名->上个A记录地址
- NS记录->ns2主机名->上个A记录地址
<3>配置DNS监听器内容如下:ns1.xiaodi8.com、ns2.xiaodi8.com、cs.xiaodi8.com
<4>配置完之后,启动监听器,如下
<5>生成后门,attacks–>packages–>windows executable(s)–>listener选择dns上线,勾选–>选择后门生成位置–>生成后门(dns_x.exe)
<6>将后门上传到webserver,执行。执行后门后,cs出现一个黑窗口。
<7>点击小图标,出现unknown主机,原因是我们使用DNS上线,DNS速度特别慢。此时我们需要再敲几条命令才能实现控制。
<8>右击unknown主机,选择interact,启用命令。执行以下命令,等待一会儿就会上线成功
1 2 |
|
一直没有成功,换本机测试,上线成功
等待了许久,终于上线成功。图标上有闪电,说明对应的阿里云主机上存在一些防护措施。
隧道技术其实就是不断变换协议,走不同协议来实现数据通信!!!
原文链接:https://www.cnblogs.com/bonelee/p/15916798.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/20651