网络安全 频道

安全检测:没有不透风的“墙”

在没有硬件防火墙的时候,软件防火墙充当了系统的“保护神”。最近,在用虚拟机做网络连通性测试的时候,无意中发现了防火墙的一个漏洞。利用这个漏洞可以欺骗防火墙,绕过防火墙的封锁,访问外网。此后对国内的多款防火墙进行测试,发现都存在这个漏洞。 真是没有不透风的墙!

  一、根源:

  1.Windows系统的特性使然。当一个程序运行时,它不能删除,但却能够改名!而当系统里的被保护程序遭到删除或损坏或改名时系统就会及时调用备份文件给予还原!

  2.死板的防火墙。大家都知道许多防火墙是按规则或者叫策略工作的。在防火墙的“应用程序规则”里一般默认就会让IE浏览器(iexplore.exe)、Outlook Express(msimn.exe)、lsass.exe、spoolsv.exe、taskmgr.exe、winlogon.exe、services.exe、svchost.exe通过,而大多的防火墙认为只要是与规则里的路径及文件名相同就Pass!以这样的检测方法来决定是否放行,但它却完全没考虑到如果是别的文件替换的呢?——就相当于古装片里的易容术,易容后就认不得了!这就给了我们机会,我们可以利用这个BUG来欺骗防火墙来达到访外的目的!

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

  二、利用:

  测试环境:两台虚拟机,一台windows 2003,IP地址为192.168.1.6,作为服务器,安装了Radmin控制端(A虚拟机);一台windows xp,IP地址为192.168.1.7,作为Radmin服务端,是受控端(B虚拟机),同时安装了“天网防火墙”。

  1.端口转发测试

  第一步,启用AngelShell Ver 1.0里的Fport(用来进行端口转发的服务端,几乎可以转发任何端口),然后在B虚拟机上用FportClient(用来进行端口转发的客户端)监听端口4899。

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

  提示:4899是Radmin的服务端端口。上面的命令是把本机的4899端口转发到7789端口。

天网防火墙

  总结:看到了吧!由于Fport并不是认证放行的,防火墙马上就进行了拦截!(图1)

  2.欺骗测试

  第一步:在虚拟机B上建立一批处理文件go.bat,代码如下:

      @echo off
  ren taskmgr.exe taskmgr1.exe
  ren fport.exe taskmgr.exe
  taskmgr.exe 4899 192.168.1.7 7788
  Del %0
  exit

  说明:上面的代码首先把“任务管理器”程序改名,然后把“fport.exe”更名为“taskmgr.exe”欺骗防火墙进行端口转发。

  第二步:用SqlRootKit把“Fport.exe”和go.bat 一起copy到虚拟机B的c:\windows\system32\(也就是taskmgr.exe所在的目录)在SqlRootKit里执行go.bat(注意如果要改taskmgr.exe的名的话就需要有管理员权限)。

命令行操作

  第三步:当FportClient出现“已经接受到远程计算机的连接!”时(见图2),用A虚拟机的Radmin客户端连接B虚拟机的4899端口,成功连接(见图3)。

成功连接

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

  三、总结:此后我又对其它的主流的防火墙进行的欺骗测试,这些防火墙几乎无一例外地“拥有”这个BUG!虽然这个BUG不会带来什么大的危害,但总是给入侵者多了一个黑我们的机会!我把这个小小的发现写出来,一是可以让我们国内的防火墙有所改进,二是给网管们提个醒,防止局域网内部的防火墙欺骗。

0
相关文章