zoukankan      html  css  js  c++  java
  • 端口复用技术

    二)防火墙渗透 

    以上我们简单的介绍了防火墙的原理,分类,优缺点等。下面,我们将对防火墙的渗透技术做一下简单的介绍。

    精心配置过的防火墙固然将让绝大多数crackers挡在外围,掌握网络控制的主动权,但是,防火墙并不是万能的,我们也在上一节的内容中简单的讲了防火墙的缺点。没有任何一样网络产品可以说是绝对安全的。绿盟的san的一篇的文章介绍了渗透防火墙的shellcode,有兴趣的朋友可以参考一下:http://www.winnerinfo.net/infoview.asp?Kind=145&ID=529 ,我在这里想再提起“通道技术”。

    说到通道技术,我想再提一下“端口复用”,很多朋友以为通道技术就是端口复用技术。那么,错了,端口复用是指一个端口上建立了多个连接,而不是在一个端口上面开放了多个服务而互不干扰。假如你想在已经开放了WWW服务的主机上,在80端口再添加一项服务,只有2种可能:1.添加服务失败 2.WWW服务出错。那么什么是通道呢?这里所谓的通道,是指一种绕过防火墙端口屏蔽的通讯方式。防火墙两端的数据包封装在防火墙所允许通过的数据包类型或是端口上,然后穿过防火墙与处在防火墙后面的主机通讯,当封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包交送到相应的服务上,是在一个端口上面开放了多个服务而互不干扰的。

    为了通信,不论是什么防火墙,都不可能把所有的服务,所有的端口都封闭。(如果有那样的防火墙,还不如拔网线来的直接,呵呵)大多数的防火墙或多或少都要开放一个端口或服务(比如HTTP),只要开放了端口和服务,就给了我们渗透的可能。HTTP是一种比较简单而常用的互交式协议,你给服务器发送一个请求,服务器就返回给你一个回应。几乎所有的主机都被允许发送HTTP请求。网络上HTTP协议使用的是如此广泛,这也决定了我们可以通过使用通道技术而轻松的通过防火墙或其他类似设备而将我们需要的数据发送至目标。一个很典型的例子就是http-tunnel.

    在http-tunnel的官方网站http://www.http-tunnel.com上有这么一句话:“http-tunnel在HTTP请求中建立了一个双向的虚拟数据连接。HTTP请求可以经过代理而被发送,这就可以被那些处在限制了端口的防火墙背后的用户使用。如果通过HTTP代理的WWW浏览是被允许的,那么http-tunnel也就可以成立,也就是说,可以在防火墙外telnet或者PPP到防火墙的内部。”这样看来,攻击者可以使用这种技术来实现远程控制。我们来看看http-tunnel的设计思路:

    A主机在防火墙的外面,没有做任何限制。B主机在防火墙内部,受到防火墙保护,防火墙配置的访问控制原则是只允许80端口的数据进出,但主机开放了telnet服务。现在假设需要从A系统Telnet到B系统上去,怎么办?使用正常的telnet肯定是不可能了,因为telnet使用的23端口被防火墙屏蔽,防火墙收到这个telnet的包后,发现不符合只允许80端口的数据通过的过滤原则,就丢弃了。但我们知道可用的有80端口,那么这个时候使用Httptunnel通道,就是一个好的办法,思路如下:

    在A机器上运行tunnel的客户端,让它侦听本机的一个不被使用的任意指定端口(最好是1024以上65535以下),如,8888。同时将来自8888端口上的数据指引到B机的80端口上,因为是80端口,防火墙是允许通过的。然后在B机上起一个服务端,(在只有80端口对外开放的情况下,只能先得到一个WEBSHELL,想办法提升自己的权限,并运行服务端)同样挂接在80端口上,同时指引80端口的来自客户端的转发到本机的telnet服务端口23,这样就OK了。现在在A机上telnet本机端口8888,根据刚才的设置数据包会被转发到目标端口为80的B机,因为防火墙允许通过80端口的数据,因此数据包畅通的穿过防火墙,到达B机。此时B机在80端口侦听的进程收到来自A的数据包,会将数据包还原,再交还给telnet进程。当数据包需要由B到A返回时,将由80端口再回送,同样可以顺利的通过防火墙。

    上述功能似乎用端口映射也能做的到,把A主机上的23端口重定向到80端口,再把B主机上的80端口重定向到23端口就行了。但如果B主机已经开启了WWW服务了呢?要使用上述功能,使用端口映射必须牺牲B主机的80端口,这是得不偿失的。试想在一次渗透防火墙的对某台主机的攻击中,把别人本来已经开启的WWW服务DOWN了,你还能在这台主机上呆多久?但是,使用http-tunnel就可以完美实现,即使B主机已经开放80,提供WWW,我们也照样可以发送telnet到其80端口上,享受到“正版”的telnet服务。

    对于通道技术,我们的解决方案是采用应用层的数据包检测技术,因为在正常的HTTP请求中,GET、POST等行为是必不可少的,如果来自一个连接的HTTP请求中,总是没有GET、POST,那么这个连接肯定有问题。从而终止此连接。现在已经有公司的IDS产品能够查出隐藏在80中的tunnel,但是这些IDS产品的费用恐怕也不是中小型企业能承受的了的。

    对于防火墙的渗透,还有一些方法,比如找防火墙本身的设计缺陷等等,但那些难度太大。恐怕不是我们应该考虑的了。


    访问控制列表介绍
    访问控制列表(ACL)是应用在路由器接口的指令列表。这些指令列表用来告诉路由器哪能些数据包可以收、哪能数据包需要拒绝。至于数据包是被接收还是拒绝,可以由类似于源地址、目的地址、端口号等的特定指示条件来决定。访问控制列表从概念上来讲并不复杂,复杂
    参考资料:http://www.cnfan.net/security/GF/2005-2/28/2005_02_28_336_2.htmhttp://www.51cto.com/html/2006/0404/24831.htm
     
  • 相关阅读:
    android 使用广播监听网络状态
    Android获取文件目录路径
    android实现布局重叠
    文件存储到getfilesdir和getcache中的解析问题,原来是权限问题
    CodeForces 1047C Enlarge GCD(数论)题解
    html 空白汉字占位符 
    js 将json字符串转换为json兑现
    为什么jQuery要返回jQuery.fn.init对象
    transform和transition
    自适应网页设计/响应式Web设计
  • 原文地址:https://www.cnblogs.com/royi123/p/2956597.html
Copyright © 2011-2022 走看看