一 防火墙基本原理
首先,我们【men】需要了解一些基本的防火墙实现原理。防火墙目前主要分包过滤,和状态检测的包【bāo】过【guò】滤【lǜ】,应用层代理【lǐ】防火墙。但是他们的基本实现都是类似的【de】。
│ │---路【lù】由【yóu】器-----网卡│防火墙│网卡│----------内部网络│ │
防火墙一般有【yǒu】两个以上的网络卡,一个连到外部(router),另一个是连【lián】到内部网【wǎng】络。当打【dǎ】开主机【jī】网络转发功能时,两个网卡【kǎ】间的网络通讯能直接通过。当有防火墙时,他好比插在网卡之间,对所有的网络通讯进行控制。
说到访问控制,这是防火墙的核心了:),防火墙主要通【tōng】过一个访问控制【zhì】表来判断的,他的形式一般是【shì】一连串的如【rú】下规则【zé】:
1 accept from+ 源【yuán】地址,端口 to+ 目的地址,端口+ 采取的
动作 2 deny ...........(deny就是拒绝。。)
3 nat ............(nat是地址转【zhuǎn】换。后面说)
防火墙在网络【luò】层(包括【kuò】以下的炼路层)接受到网络数据包后,就从上面的规则连表一条一条【tiáo】地匹配【pèi】,如果符合就执行预【yù】先安排的动作了!如丢弃包。。。。
但是,不同的【de】防火墙,在判断攻击行为时,有实现上的差别。下面结合实现原理说说可能【néng】的攻击。
二 攻击包过滤防火墙
包过滤防火墙是最
简单的一【yī】种了【le】,它在网络层截获网络数据包,根据防火墙的规则【zé】表,来检测攻击行为。他根据数据包【bāo】的源IP地址;目的IP地址;TCP/UDP源端口;TCP/UDP目的【de】端口来过滤!!很容易受到如下攻击:
1 ip 欺骗攻击:
这种攻击,主要是修改数【shù】据包的源,目的地址和端【duān】口,模仿一些合法的数【shù】据包来【lái】骗过防火墙的检测。如:外部攻击【jī】者,将他的数据报源【yuán】地址改为内部网络地址,防火墙看到是合法地址就【jiù】放行了:)。可是,如果防火墙能结合接口,地址来匹配,这种攻击就不能【néng】成功了:(
2 d.o.s拒绝服务攻击
简单的包过滤防【fáng】火墙不【bú】能跟踪 tcp的状【zhuàng】态【tài】,很【hěn】容易受到拒绝服务攻击,一旦防火墙受到d.o.s攻击,他可能会忙于处理,而忘记【jì】了他自己的过滤功能。:)你就可以饶过了,不过这样攻击还很少的。!
3 分片攻击
这种攻击的【de】原理是:在IP的分片包中,所有的分【fèn】片包用一个分片偏移字段标志分片包的顺序,但【dàn】是,只有第一个分【fèn】片【piàn】包含有TCP端口号的信息。当IP分片包通过分组过滤【lǜ】防火墙时,防火墙只根据【jù】第一【yī】个分片包的Tcp信息【xī】判断【duàn】是否允许通过,而其他后续的分片不作防火墙检测,直接让它们通过。
这样,攻击者【zhě】就可以通过先发送第一个【gè】合法的IP分片,骗过防火墙的检测,接着
封装了恶意数据的后续分片包【bāo】就可以直接穿透防火墙,直接到达内【nèi】部网络主机,从而威【wēi】胁网络和主机的安全。
4 木马攻击
对于包过滤防火墙最有效的攻击就是木马了【le】,一但你在内部网络安装了木马,防火【huǒ】墙基本上是无能【néng】为力的。
原因是:包过滤防火墙一般只【zhī】过滤低端口(1-1024),而高【gāo】端口他不可能过滤的(因【yīn】为,一些【xiē】服务要【yào】用到高端口,因此防火墙不能关闭高【gāo】端口的),所以很多的木马都在高端口打【dǎ】开等待,如冰河,subseven等。。。
但是木马攻击的前提是必须先上【shàng】传,运行木马,对于简单的【de】包过滤防【fáng】火墙来说,是容易做的。这里【lǐ】不写这个了。大概就是利【lì】用内部【bù】网络主机开放的服务漏洞。
早期的防火【huǒ】墙都是这种简单的包过滤型【xíng】的,到现在已很少了,不过也有。现【xiàn】在的【de】包过滤采用的是状态检测技术,下面谈谈状态【tài】检测的包过滤防火墙。
三 攻击状态检测的包过滤
状态检测技【jì】术最早是checkpoint提出的,在【zài】国内的许多防火墙都声称实现了状态【tài】检测技术。
可是:)很多是没有实现的。到【dào】底【dǐ】什么是状态检测?
一句话,状态检测就是从tcp连接的建立到终止都跟踪检测【cè】的技术。
原先的包过滤,是拿【ná】一个一个单独的数据包来匹配规则的【de】。可是我们【men】知【zhī】道,同一个【gè】tcp连接,他的数据包是前后关联的,先是【shì】syn包,-》数据包=》fin包。数据包的前后序列号是相关的。
如果割裂这些关系,单独的过滤数据包,很容易被精心够造的攻击数据包欺骗!!!如nmap的攻击扫描,就有利用syn包,fin包,reset包来探测【cè】防【fáng】火【huǒ】墙后面的【de】网【wǎng】络。!
相反,一个完全的状态检测防【fáng】火【huǒ】墙,他在发起连接就判断,如果符合规【guī】则,就在内存登记了这个连接的状态信息(地址,port,选项。。),后【hòu】续的属于同一个连接的数据包,就不需要在检测了【le】。直接通过。而一【yī】些精心够造【zào】的攻击数据包由【yóu】于没有在【zài】内存登记相应的【de】状态信息,都被丢弃了。这样这些攻击数据包,就不能饶过防火墙了【le】。
说状态检测必须提到动【dòng】态规则技术。在状态检测里,采用动态规则技术,原先高端口的问题就可以【yǐ】解决了。实现原理是:平时,防火【huǒ】墙可以过滤【lǜ】内【nèi】部网络的所有端口(1-65535),外部攻击【jī】者难于发现入侵的切入点,可是为了不影响正常的服【fú】务,防【fáng】火墙一【yī】但检测到服务必须开放【fàng】高端口时,如(ftp协议,irc等),防火墙在内存就可以动态地天加一条规则打开【kāi】相关的高端口。等服务完成【chéng】后,这条规则【zé】就【jiù】又被防火墙删除。这样,既保障【zhàng】了安全,又不影响正常服务,速度也快。!
一般来说,完全实现了状态检【jiǎn】测技【jì】术【shù】防火墙,智能性都比较高,一些扫描攻击还能自动的反应,因此,攻击【jī】者要很小心才不会被发现。
但是,也有不少的攻击手段对付这种防火墙的。
1 协议隧道攻击
协议隧道的攻击思想类似【sì】与VPN的实现原理,攻击者将一些恶意的攻击数据包隐藏在【zài】一些协议分【fèn】组的头部,从而穿透防火墙系统对内部网【wǎng】络进行攻【gōng】击。
例如,许多简【jiǎn】单地【dì】允【yǔn】许【xǔ】ICMP回射请求、ICMP回射应答和UDP分组通过的防火墙就容易受到ICMP和UDP协议隧道的【de】攻击。Loki和lokid(攻击的客户端和【hé】服务端【duān】)是实施这种攻击【jī】的【de】有效的工具。在实际攻击中【zhōng】,攻击者首先必须设法在内部网络的一个系统上安装上lokid服务端,而后攻击者就可【kě】以通过【guò】loki客户端将希望远程执行的攻击命令(对应IP分组)嵌入在ICMP或UDP包头部,再发送给内部网络服务端lokid,由它执行其中的命令,并以同样【yàng】的方式返回结果。由
于许多防火墙允许【xǔ】ICMP和UDP分【fèn】组自由出入,因此【cǐ】攻击者的【de】恶意数据就能附【fù】带在正常的分组,绕过防火墙的认证,顺利地到达攻击目标主机下【xià】面的命令是用于启动lokid服务器程序:
lokid-p–I–vl
loki客户程序则如下启动:
loki–d172.29.11.191(攻击【jī】目标主机)-p–I–v1–t3
这样,lokid和loki就联合提供了一个穿透防火墙系统访问目标系统的一【yī】个后门。
2 利用【yòng】FTP-pasv绕过防火墙认证【zhèng】的攻击
FTP-pasv攻击是针对防火墙实施入侵的【de】重【chóng】要手段之一。目前很多防火墙不能过滤这种攻击手段。如CheckPoint的Firewall-1,在监视FTP服务器发送给客户端的包的过程中,它在【zài】每个包中寻找"227"这【zhè】个字符串。如果发现这种包,将从中提取目标地址【zhǐ】和【hé】端口,并对目标地址加【jiā】以验证,通过后,将允许建立到该地址【zhǐ】的TCP连接。
攻击者通过这个特性,可以【yǐ】设【shè】法连接受防火墙保护的服务器和服务。详细的描述可【kě】见:
http://www.checkpoint.com/techsupport/alerts/pasvftp.html。
3 反弹木马攻击
反弹木马是对付这种防火墙的最有效的【de】方【fāng】法。攻【gōng】击者在内部【bù】网络的反【fǎn】弹木马【mǎ】定时地【dì】连接外部攻击者控制的主机,由于连接是从内部发起的,防火墙(任何的防火墙)都认为是一个合【hé】法的连接,因此基本上防火墙的盲区就是这里了。防火墙不能区分木马的连接【jiē】和合【hé】法的连接。
但是这种攻击的局限是:必须首先安装这个【gè】木马【mǎ】!!!所有【yǒu】的木马的第一步都是关【guān】键!
四 攻击代理
代【dài】理是运行在应【yīng】用层的防火墙,他实质是启动两个连接,一个是客户到代理,另一个是代【dài】理到目的服务器。
实现上比较简【jiǎn】单,和【hé】前面的一【yī】样也是根据规则过滤。由于运行在应用层速度比较慢/1
攻击代理的方法很多。
这里就【jiù】以wingate为例,简单说【shuō】说了。(太累了)
WinGate是目前应用非常【cháng】广【guǎng】泛的一种Windows95/NT代理
防火墙软件,内部用户可以通过一【yī】台安装有【yǒu】WinGate的主机访问外部网络,但是它也存在着几【jǐ】个安【ān】全脆弱点。
黑客经常利用这些安全漏洞获得WinGate的非授权Web、Socks和Telnet的【de】访问,从【cóng】而伪装成WinGate主机的身【shēn】份对下一个攻击目标发动攻【gōng】击。因此,这种攻击非常难于被跟踪和记录。
导致WinGate安全【quán】漏洞的原因大多数是管理员没有根据网络的实际情况对WinGate代理防火墙软件进行合【hé】理的【de】设置,只是简单地从缺省设置安装完【wán】毕后就让软件运行,这就给攻击【jī】者可乘【chéng】之机【jī】。
1 非授权Web访问
某些WinGate版本(如运行【háng】在NT系【xì】统下的2.1d版本)在误配置情况下,允许外部主机【jī】完全匿名地访问因特【tè】网。因此【cǐ】,外部攻击者就可以利【lì】用WinGate主机来对【duì】Web服务器发动各种【zhǒng】Web攻击( 如CGI的漏洞攻击等),同时由于Web攻击的所有报文都是从80号Tcp端口穿过的,因此,很【hěn】难追踪到攻击者的来源。
检测
检测WinGate主机【jī】是否【fǒu】有这种安全漏洞的方法如下:
1) 以一个不会被过滤掉的连接(譬如说拨号连接【jiē】)连接到因特网上。
2) 把
浏览器的代理服务器地址指向待测试的WinGate主机。
如果浏览器能【néng】访问到因特网,则WinGate主机【jī】存在着非授权Web访【fǎng】问漏洞。
2 非授权Socks访问
在WinGate的缺省配置中,Socks代理(1080号Tcp端口)同【tóng】样是存在安全漏【lòu】洞。与【yǔ】打开的Web代理(80号Tcp端口)一样,外部攻击者可以【yǐ】利用Socks代理访问因特网。
防范
要防止攻击WinGate的这个安全脆弱点,管理员可以限制【zhì】特定【dìng】服务的捆绑。在多宿主(multi homed)系统上,执行以下步骤【zhòu】以限定如何提供代理服务。
1选择Socks或WWWProxyServer属性。
2选择Bindings标签。
3按下Connect
ionsWillBeAcceptedOnTheFollowingInterfaceOnly按钮,并指定本【běn】WinGate服务器的内部接【jiē】口。
非授权Telnet访问
它是WinGate最具威胁的安【ān】全漏洞。通过连接到一个误配置的inGate服务器的Telnet服【fú】务【wù】,攻击者可以使用【yòng】别人的主机隐藏自己的踪迹,随意地发动攻击【jī】。
检测
检测WinGate主机是否有这种【zhǒng】安全【quán】漏洞的方法如下:
1.使用telnet尝试连接到一台WinGate服务器。
[root@happy/tmp]#telnet172.29.11.191
Trying172.29.11.191….
Connectedto172.29.11.191.
Escapech
aracteris‘^]’.
Wingate>10.50.21.5
2.如果接【jiē】受到如上的响应文本,那【nà】就输入待连【lián】接到的网站。
3.如果看到了【le】该新系统的登录【lù】提示【shì】符,那么该服务器是脆弱的。
Connectedtohost10.50.21.5…Connected
SunOS5.6
Login:
对策
防止这种安全脆弱点的方法和防止非授权Socks访问的方法类似。在WinGate中简【jiǎn】单地限制特定服务的捆【kǔn】绑就可以解决这个问题。一【yī】般来【lái】说,在多宿【xiǔ】主(multihomed)系统管理员可以通【tōng】过执行以下步骤来完成:
1.选择TelnetSever属性。
2.选择Bindings标签。
3.按下ConnectionsWillBeAcceptedOnTheFollowingInterfaceOnly按钮,并【bìng】指定本WinGate服务器的内部接口。
五 后话
有防火墙的攻击不单是上面的一点,我有什么写的【de】不对【duì】的,大家指正。
一直以来,黑客都在研【yán】究攻击防火墙的技术和【hé】手段,攻击的手【shǒu】法和技术越来越智能化和多样化。但【dàn】是就【jiù】黑客攻击防火墙的过程上看,大概可以分为三类攻【gōng】击。
第一类攻击防火墙的方法是【shì】探测在目【mù】标网络上安装的是何种防火墙系统并且找出此防【fáng】火墙系统允许哪些服务。我们【men】叫【jiào】它为【wéi】对防火墙的探测攻击。
第二类攻击防火墙的方法是采取地【dì】址欺骗、TCP序号攻击等手法绕过防火墙的【de】认证【zhèng】机制,从而 对【duì】防火墙和内部网络破坏。
第三类攻击防火墙的方法【fǎ】是【shì】寻找、利用防火墙【qiáng】系统实现和设计【jì】上的安全【quán】漏【lòu】洞,从而有针对性地发动攻击。这种攻击难度比较大,可是破坏性很大。