网络攻击和防火墙详解.docx
- 文档编号:11054410
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:13
- 大小:24.22KB
网络攻击和防火墙详解.docx
《网络攻击和防火墙详解.docx》由会员分享,可在线阅读,更多相关《网络攻击和防火墙详解.docx(13页珍藏版)》请在冰豆网上搜索。
网络攻击和防火墙详解
网络攻击和防火墙详解
题记
接到这个稿约后,笔者感到战战兢兢,因为笔者很清楚,计算机安全就像一个快速进化的野兽,新的威胁不断出现,老的威胁变得过时(但看起来永远不会“死亡”)。
而入侵者的手段比较隐秘,不大为外人所知晓,特别是穿越防火墙实施网络犯罪的活动。
限于笔者的水平和经验所限,实在难以完美展现入侵真相的全部,因为企业的实际网络环境远比实验环境要复杂,而且防火墙的种类多种多样,既有硬件的,也有软件的,断然不是一篇短短的文章所能包容,但万法归宗,它们的原理是一样的。
笔者斗胆写下这篇文章,只希望能起到抛砖引玉的作用,那笔者的目的也就达到了。
前言
信息和网络安全技术历经十多年的发展,无论在广度,还是在深度上,都有了很大的进步,其中一个重要的研究趋势就是注重攻防结合,追求最大化的动态安全。
网络的攻与防,即为矛与盾。
然而,与此相关的信息安全方面的文章大多数却是从盾来入手的,也就是说从防御的角度来论述。
作为网管员来说,他要学习信息安全知识的话,不仅需要了解防护方面的技术,也需要了解检测和相应环节的技术(就是矛)。
无数实践表明,最大的不安全,恰恰就是自以为安全!
因为,信息安全具有很强的对抗性,威胁时刻存在,各种各样的安全问题常会掩盖在表面的平静之下。
有太多的古训,诸如“隐患险于明火”、“知己知彼,百战不殆”……对于今天的网络信息安全防御依然有借鉴意义。
对于实施攻击的黑客手法的洞悉,对于自身脆弱性的意识,都是自身安全的前提。
为帮助广大网管员了解网络攻击和防火墙的方方面面,本文作者将从攻防兼备的角度,尽可能将纷繁复杂、是似而非的攻防思路整理清晰,以飨广大网管员。
防火墙的基础知识
防火墙是由楔和门两类功能部件构成,典型的防火墙包括一外一内两个楔和夹在中间的一个门。
楔通常由路由器承担,而门通常由相当简化了操作系统的主机承担。
换言之,楔强制内部网络和外部网络之间的通信通过门进行,门则执行安全措施并代理网络服务;门与内外楔之间分别链接一个独立的子网,其中,外楔和门之间的子网可以有一个非军事区,这块可部署对外的网络服务如www、ftp、dns等等。
内外楔应阻塞不希望船员防火墙的所有网络服务的分组,
目前有两类主导性的防火墙:
应用代理和分组过滤网关,这同防火墙概念中的门和楔功能部件相对应,但实际上,完善的防火墙需要这两个部件的有机结合,而不是孤立的发挥作用。
防火墙一般有两个以上的网卡,一个连到外部(router),另一个是连到内部网络。
当打开主机网络转发功能时,两个网卡间的网络通讯能直接通过。
当有防火墙时,他好比插在网卡之间,对所有的网络通讯进行控制,示意图如下:
││---路由器-----网卡│防火墙│网卡│----------内部网络││
防火墙主要通过一个访问控制表来判断的,它的形式一般是一连串的如下规则:
1acceptfrom+源地址,端口to+目的地址,端口+采取的动作
2deny...........(deny是拒绝)
3nat............(nat是地址转换)
防火墙在网络层(包括以下的链路层)接收到网络数据包后,就从上面的规则连表一条一条地匹配,如果符合就执行预先安排的动作,如丢弃包等。
矛与盾的较量
几千年前的孙子兵法就写道:
不知彼而知己,一胜一负;不知彼,不知己,每战必殆。
我们作为网络管理员,要做到能够检测并预防相应的攻击,就必须了解入侵者的手段,这样,我们才能有针对性的防范。
我们知道,盗窃者在开始犯罪之前,必须完成三个基本的步骤:
踩点、查点、行动。
比如,有一个盗窃团伙决定抢银行的时候,他们会事先花大量时间去收集这家银行的信息,如武装押运车的路线和押送时间,摄像头的位置和范围,出纳员人数,逃跑路线一起其他任何有助于避免发生意外情况的信息。
对于网络入侵者而言,也是一样的。
他要入侵某个网络,事先也必须收集大量的信息──关于该机构的网络安全情况的各个方面的信息,如果不进行踩点就贸然攻击,这个行为简直就是愚蠢的,就好比径直走进银行开始要钱。
只要想查,任何人都可以获取有关你的网络安全情况──其可用信息数量之多往往会超出你的想像!
入侵防火墙的第一步就是查找和判断防火墙。
然后就是进行攻击防火墙。
踩点之直接扫描查找防火墙
矛
有些防火墙会在简单的端口扫描下原形毕露──防火墙有特定端口在监听──你只需要知道哪些端口应该去扫描,比如,CheckPoint的Firewall-1防火墙在256、257、258号的TCP端口监听,MicrosoftProxyServer2.0防火墙在1080、1745号TCP端口监听……只要知道每个防火墙监听的缺省端口,就可以用端口扫描软件来对特定缺省端口进行扫描来查找防火墙,如使用nmap[S1]程序来扫描:
nmap-n-vv-P0-p256,1080,174510.152.1.1-60.254
因为大多数防火墙不会对ICMP应答,所以上述命令加上了-P0选项来禁止ICMPping。
其他端口扫描软件要视其说明文件来设置禁止ICMPping。
不过,如果该机构部署了入侵检测系统(IDS)的话,用这种方式对目标网络执行大范围的扫描,显然有些愚蠢和鲁莽,所以,水平比较高的入侵者不会这样明目张胆的踩点,他们可能使用多种技巧以避免对方的注意,如对Ping探测分组、目标端口、目标地址和源端口进行随机顺序扫描,执行欺骗性源主机执行分布式源扫描等等。
盾
要彻底防止入侵者对你的网络发起端口扫描这样的探测,很难。
但可以通过将防火墙监听着的端口数缩减到正常运行必需的范围,这要查阅相应的用户手册,也就是在防火墙前面的路由器上阻塞这些端口,若这些路由器是ISP管理的话,就得同ISP联系以阻塞这些端口;如果路由器是自己管理的话,以Cisco路由器为例,可以使用ACL规则显式地阻塞刚才提到的端口:
access-list101denytcpanyanyeq256log!
BlockFirewall-1scans
access-list101denytcpanyanyeq257log!
BlockFirewall-1scans
access-list101denytcpanyanyeq258log!
BlockFirewall-1scans
access-list101denytcpanyanyeq1080log!
BlockSocksscans
access-list101denytcpanyanyeq1745log!
BlockWinsockscans
请参考所使用的路由器的文档,以达到阻塞针对这些特定端口的扫描。
踩点之路径追踪查找防火墙
矛
上面已经说过,对目标网络执行大范围的扫描是愚蠢和鲁莽的做法,高明的入侵者经常会采用Traceroute──路径追踪。
我们知道,在网络中,信息的传送是通过网中许多段的传输介质和设备(路由器,交换机,服务器,网关等等)从一端到达另一端。
每一个连接在Internet上的设备,如主机、路由器、接入服务器等一般情况下都会有一个独立的IP地址。
通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。
当然每次数据包由某一同样的出发点到达某一同样的目的地走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。
一条路径上的每个设备Traceroute要测3次。
输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
Traceroute在UNIX/Linux中为traceroute,而在Windows则为tracert。
例如在Linux中:
lzy@Liuzhiyong:
~$sudotraceroute-I
tracerouteto(10.1.28.4),30hopsmax,40bytepackets
1 10.152.16.3(10.152.16.3) 0.345ms 0.338ms*
2 10.152.1.1(10.152.1.1)5.801ms5.668ms5.106ms
……
12 (10.0.202.1)42.439ms**
13 10.1.28.4(10.1.28.4) 106.813ms**
我们从中可以推测,达到前最后一跳(10.0.202.1)是防火墙的可能性非常大。
但事实是否如此,还需要进一步判断。
如果本地计算机到目标服务器之间的路由器对TTL已过期分组做出响应,那么刚才的例子是没有问题的,但如果路由器和防火墙设置成不返回ICMPTTL已过期分组,那么,做出上述的结论就不够科学,这时能做的就是运行traceroute,查看最后响应的是哪一跳,由此推断是否真正的防火墙,或者至少是路径上开始阻塞路径追踪分组的第一个路由器。
例如:
1 10.152.16.3(10.152.16.3) 0.345ms 0.338ms*
2 10.152.1.1(10.152.1.1)5.801ms5.668ms5.106ms
……
17(10.50.2.1)205.006ms391.682ms
18(10.50.2.5)226.669ms366.211ms
19client-(10.50.3.250)266.223ms!
X**
……
在上述例子中,我们可以看出,ICMP探测分组被阻塞到达目的地之前,client-之后没有响应,就可以知道结论。
盾
知道了路径追踪是怎么回事后,自然就知道这个盾如何打造:
限制尽可能多的防火墙和路由器对TTL已过期分组做出响应,但是,通常有一些路由器是由你的ISP控制,你需要跟他们联系。
将边界路由器配置成接受到TTL值为0或1的分组时,不响应以TTLEXPIRED的ICMP消息。
当然,也可以在边界路由器上阻塞所有不必要的UDP分组。
例如,在Cisco路由器上可以应用如下ACL规策:
access-list101denyicmpanyany110!
ttl-exceeded
查点之攫取旗标查找防火墙
矛
旗标就是显示应用程序名和版本号,用来宣告自身的存在,防火墙也与此类似。
攫取旗标的思路很有用,因为大多数防火墙并不像CheckPoint那样在缺省的端口监听,这时,攫取旗标就可以检测出防火墙。
这里有一个例子:
C:
\DocumentsandSettings\Administrator\nc[S2] -v-n10.152.4.1221
(UNKNOWN)[10.152.4.12]21(?
)open
220SecureGatewayFTPserverready.
看到什么了?
嗯,再链接到23号端口看看:
C:
\DocumentsandSettings\Administrator\nc-v-n10.152.4.1223
(UNKNOWN)[10.152.4.12]21(?
)open
EagleSecureGateway.
Hostname:
还不太肯定这是防火墙吗?
那我们继续链接到25号端口看看:
C:
\DocumentsandSettings\Administrator\nc-v-n10.152.4.1225
(UNKNOWN)[10.152.4.12]21(?
)open
421Sorry,thefirewalldoesnotprovidemailservicetiyou.
至此,获取的信息还不够多吗?
由此可见,攫取旗标可以查找出代理性质的防火墙,很多流行的防火墙只要被连接就会声明自己的存在,甚至包括自己的类型和版本,这恰恰对入侵者提供了有价值的信息,依靠这些信息,入侵者就可以找到网上已公开的薄弱点或者常见的错误配置从而达到入侵目的。
盾
要防住这个“矛”,就是经常变更防火墙的旗标配置文件,但具体的修改方法要取决于所使用的防火墙产品,需要查阅产品说明书或者直接与厂家联系。
通常旗标最好被修改为包含警告信息,而不是宣告程序名和版本号等信息。
如果上述几支矛都不够锋利,无法穿透盾的话,入侵者就会使用更为锋利的矛。
查点之利用nmap判断防火墙
矛
限于笔者的水平及篇幅所限,这里只能简略的讲述,以使网管员有个简单的认识。
nmap是发现防火墙信息的好工具,用nmap扫描时,能看出哪些端口打开着,哪些端口关闭着,还有哪些端口被阻塞着。
盾
因为nmap是将接受到的ICMP分组的有效负载与早先发送的阿嚏内测分组的内容相比较,然后确定这些信息是否关联,所以,要防住这个矛的盾,应该就是禁止防火墙前面的路由器响应以类型为3、代码为13的ICMP分组(详见RFC1812,刚才提到的这个分组是ICMPAdminProhibitedFilter分组,通常是从某个分组过滤路由器发出的),在Cisco路由器可以这样做来达到阻止他们对IP不可抵达消息做出回应:
noipunreachables
另外,这个盾也可以防范hping[S3]攻击的矛。
hping是SalvatoreSanfilippo编写的工具,通过向一个目的端口发送TCP分组,并报告由它引回的分组进行工作。
hping可以发现打开着的,被阻塞着的、被丢弃的或者被拒绝的分组,而这些分组,能部分或全部的提供了防火墙具体访问控制的情况。
攻击之IP欺骗攻击包过滤防火墙
矛
这种矛,说穿了就是修改数据包的源、目的地址和端口,模仿一些合法的数据包来骗过防火墙的检测。
如:
外部入侵者将他的数据报源地址改为内部网络地址,让防火墙看到的是合法地址,从而放行。
盾
包过滤防火墙是防火墙中最简单的一种,如果防火墙能结合接口,地址来匹配,这种矛就失去了它的锋芒。
攻击之木马攻击绕过包过滤防火墙
矛
如果入侵者预先攻破了防火墙后面的某个系统,或者欺骗了某个后端系统上的用户执行一个特洛伊木马程序,这样,入侵者就很有效的绕过所设置的防火墙规则了。
原因是,包过滤防火墙一般只过滤低端口(1-1024),而高端口他不可能过滤的(因为,一些服务要用到高端口,因此防火墙不能关闭高端口的),所以很多的木马都在高端口打开等待。
盾
加强客户端用户的安全意识,这是老生常谈。
对于防火墙而言,应按照自己的配置需求,禁止许多缺省允许的分组类型,小心应对这个防范措施,因为有可能禁止有权穿行的分组通过防火墙,具体做法应根据所使用的防火墙产品的说明书去实施。
攻击之ICMP、UDP隧道绕过防火墙
矛
这种矛的攻击思想与VPN的实现原理相似,入侵者将一些恶意的攻击数据包隐藏在一些协议分组的头部,从而穿透防火墙系统对内部网络进行攻击。
这种矛,依赖于防火墙后面已有一个受害的系统。
例如,许多简单地允许ICMP回射请求、ICMP回射应答和UDP分组通过的防火墙就容易受到ICMP和UDP协议隧道的攻击。
JeremyRauch和MikeShiffman编写的loki和lokid[S4] (攻击的客户端和服务端)是实施这种攻击的有效的工具。
在实际行动中,入侵者首先必须设法在允许ICMP回射请求和回射应答分组穿行的防火墙后面的某一个系统上运行上lokid服务端,而入侵者就通过loki客户端将希望远程执行的攻击命令(对应IP分组)嵌入在ICMP或UDP包头部,再发送给内部网络服务端lokid,由它执行其中的命令,并以同样的方式返回结果。
由于许多防火墙允许ICMP和UDP分组自由出入,因此攻击者的恶意数据就能附带在正常的分组,绕过防火墙的认证,顺利地到达攻击目标主机下面的命令是用于启动lokid服务器程序:
lokid-pCICvl
loki客户程序则如下启动:
lokiCd172.29.11.191(攻击目标主机)-pCICv1Ct3
这样,lokid和loki就联合提供了一个穿透防火墙系统访问目标系统的一个后门。
盾
要防止利用ICMP和UDP隧道的木马绕过防火墙,可以是完全禁止通过防火墙的ICMP访问,也可以是对ICMP分组提供小粒度的访问控制,对于Cisco路由器而言,要禁止穿行不是来往于172.29.10.0子网(DMZ区域)的所有ICMP分组,你可以创建以下ACL规则:
access-list101permiticmpany172.29.10.00.2255.255.2558!
echo
access-list101permiticmpany172.29.10.00.2255.255.2550!
echo-reply
access-list102denyipanyanylog!
denyandlogallelse
攻击之反弹式木马
矛
现在防火墙的包过滤采用的是状态检测技术,一句话,状态检测就是从tcp连接的建立到终止都跟踪检测的技术。
状态检测必须提到动态规则技术。
在状态检测里,采用动态规则技术,原先高端口的问题就可以解决了。
实现原理是:
平时防火墙可以过滤内部网络的所有端口(1-65535),入侵者难于发现切入点,可是为了不影响正常的服务,防火墙一但检测到服务必须开放高端口时,就在内存动态地添加一条规则打开相关的高端口。
等服务完成后,这条规则就又被防火墙删除。
这样,既保障了安全,又不影响正常服务,速度也快。
反弹式木马是对付这种防火墙的最有效的方法。
入侵者在防火墙后面的某个受害系统事先安装好反弹式木马,定时地连接外部攻击者控制的主机,由于连接是从内部发起的,防火墙(任何的防火墙)都认为是一个合法的连接,从而实现了入侵。
防火墙不能区分木马的连接和合法的连接——这是目前防火墙的盲区。
盾
据笔者所知,目前还没有相应的盾来抵住这支矛。
所以保证防火墙后面的系统,不被非法的安装反弹式木马是至关重要的第一步,扼守住这一步,就不会让反弹式木马来传统防火墙被攻击了。
结语
实际上,要绕过配置得当的防火墙是非常困难的。
但是,时下发现的薄弱点的根源在于,防火墙的错误配置和缺乏管理性监视,一旦入侵者通过踩点和查点寻找到并判断出目标网络的路由器和防火墙之间的通路以及防火墙的类型,那么带来的后果可能是毁灭性的。
黑客入侵技术不会因为我们不去了解它而不复存在;黑客们也不会因为我们不去学习、不去掌握抗击技术和工具而放弃对手无寸铁的我们的攻击。
我们作为网管员,切记不能像鸵鸟那样,我们要在知识的获取上与黑客比速度,如果能先于攻击者之前了解这些知识,那么我们的安全就会更有保障。
[S1]namp是一种网络探测和安全扫描器。
它可以让系统管理员或好奇个人扫描大型网络决定那些机器开启并且提供哪些服务。
nmap支持大量的扫描技术例如:
UDP,TCPconnect(),TCPSYN(halfopen),ftpproxy(bounceattack),Reverse-ident,ICMP(pingsweep),FIN,ACKsweep,XmasTree,SYNsweep,andNullscan.更多细节看扫描类型节。
nmap同时提供了大量的高级特性,例如:
通过TCP/IP指纹进行远程操作系统检测,stealthscanning,dynamicdelayandretransmissioncalculations,parallelscanning,detectionofdownhostsviaparallelpings,decoyscanning,portfilteringdetection,fragmentationscanning,andflexibletargetandportspecification.
[S2]即netcat,它被誉为网络安全界的“瑞士军刀”,它是一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据。
它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动。
同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接,还有几个很有意思的内置功能。
[S3]hping是一个基于命令行的TCP/IP工具,它在UNIX上得到很好的应用,不过它并非仅仅一个ICMP请求/响应工具,它还支持TCP,UDP,ICMP,RAW-IP协议,以及一个路由模型HPING一直被用作安全工具,可以用来测试网络及主机的安全,它有以下功能:
1:
防火墙探测、2:
高级端口扫描、3:
网络测试;(可以用不同的协议,TOS,数据包碎片来实现此功能)、4:
手工MTU发掘、5:
高级路由(在任何协议下都可一实现)、6:
指纹判断、7:
细微UPTIME猜测……HPING也可以被研究人员用来学习TCP/IP,在以下OS上它可以运行于LINUX,FREEBSD,NETBSD,OPENBSD,SOLARIS.目前最新版本为HPING3。
官方网站在www.hping.org。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 攻击 防火墙 详解