描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302492573丛书名: 21世纪高等学校信息安全专业规划教材
本书适合作为信息安全类专业入门教材和网络安全相关专业教材。
目录
第1章网络安全概论
1.1网络安全定义
1.1.1网络信息安全
1.1.2网络运行安全
1.1.3网络安全目标
1.2网络安全的重要性
1.2.1网络安全与国家安全
1.2.2网络安全与个人隐私
1.2.3网络安全威胁
1.3网络安全评价
1.3.1P2DR2动态安全模型
1.3.2网络安全评价标准
1.4《网络安全法》
1.4.1《网络安全法》解读
1.4.2网络安全观
习题1
第2章密码学基础
2.1密码学定义
2.1.1凯撒密码
2.1.2栅栏密码
2.1.3密码学语言
2.1.4凯撒密码解密
2.2DES对称密码
2.2.1DES算法
2.2.2DES算法的优缺点
2.3RSA公钥密码
2.3.1模运算
2.3.2RSA算法
2.3.3RSA用法
2.4椭圆曲线密码
2.4.1实数域上的椭圆曲线
2.4.2有限域上的椭圆曲线
2.4.3椭圆曲线加密解密
2.5数据完整性认证
2.5.1MD5算法
2.5.2MD5应用
2.6数字签名
2.6.1数字签名定义
2.6.2时间戳
2.7公钥基础设施
2.7.1PKI定义
2.7.2认证中心
2.7.3CA结构
2.8网络银行支付安全
2.8.1U盾定义
2.8.2U盾工作原理
2.9国产密码算法
2.9.1SM4分组密码算法
2.9.2SM2公钥密码算法
2.9.3SM3摘要算法
习题2
实验1凯撒密码解密进阶
实验2DES算法和RSA算法性能测试
第3章网络攻防技术
3.1网络攻击概述
3.1.1网络攻击定义
3.1.2网络攻击分类
3.2常见网络攻防方法
3.2.1口令入侵及其防范方法
3.2.2DoS攻击及其防范
3.2.3缓冲区溢出攻击及其防范
3.2.4欺骗攻击及其防范
3.3网络安全扫描
3.3.1网络安全漏洞
3.3.2网络安全扫描定义
3.3.3端口扫描技术
3.3.4网络安全扫描防范
3.4网络监听
3.4.1网络监听的定义
3.4.2网络协议分析器工作原理
3.4.3网络监听防范
习题3
实验3Zenamp网络安全扫描
第4章防火墙与入侵防御
4.1防火墙基础
4.1.1防火墙定义
4.1.2防火墙分类
4.1.3防火墙体系结构
4.1.4新一代防火墙技术
4.2防火墙安全配置实例
4.2.1配置入侵防御功能
4.2.2配置内容过滤功能
4.2.3内网管控与安全隔离
4.3入侵检测技术
4.3.1入侵检测系统定义
4.3.2入侵检测方法与过程
4.4入侵防御系统
4.4.1入侵防御系统的工作原理
4.4.2入侵防御系统种类
4.5入侵诱骗技术
4.5.1蜜罐定义
4.5.2蜜罐技术
习题4
实验4基于IP地址和端口的防火墙安全策略配置
第5章IP安全与Web安全
5.1IP安全
5.1.1IPSec定义
5.1.2IPSec的工作方式
5.2VPN技术
5.2.1VPN的基本原理
5.2.2VPN隧道技术
5.2.3VPN安全性配置
5.3Web安全
5.3.1Web安全实现方法
5.3.2SSL协议
5.4SQL注入攻防
5.4.1SQL注入攻击的定义
5.4.2SQL注入攻击的思路
5.4.3SQL注入攻击预防
5.4.4SQL注入攻击实例
习题5
实验5VPN单臂旁挂于防火墙配置
第6章网络安全方案设计与评估
6.1网络安全方案设计
6.1.1设计框架
6.1.2需求分析
6.1.3解决方案
6.1.4网络安全方案设计实例
6.2网络安全评估
6.2.1评估的意义及服务
6.2.2评估方案实例
习题6
第7章计算机病毒与特洛伊木马
7.1恶意代码
7.1.1恶意代码攻击机制
7.1.2恶意代码实现技术
7.1.3恶意代码防范方法
7.1.4网络蠕虫
7.2计算机病毒
7.2.1计算机病毒的定义
7.2.2计算机病毒的特征
7.3特洛伊木马
7.3.1特洛伊木马的定义
7.3.2网络木马
7.3.3网页挂马
7.3.4加密木马解密
习题7
实验6冰河木马攻击与防范
第8章数字版权保护
8.1信息隐藏
8.1.1信息隐藏的定义
8.1.2信息隐藏与密码学
8.2数字水印技术
8.2.1数字水印模型
8.2.2数字水印分类
8.2.3数字水印的应用
8.3图像数字水印
8.3.1数字图像操作
8.3.2盲水印嵌入提取
8.3.3明水印嵌入提取
8.3.4数字水印攻击方法
8.4数据库数字水印
8.4.1零宽度不可见字符
8.4.2基于ZWJ的版权图像数据库零水印算法
8.4.3双重数据库零水印模型
8.5数字指纹
8.5.1数字指纹盗版追踪模型
8.5.2抗合谋数字指纹编码
8.5.3ECFF编码
8.5.4数字档案盗版追踪系统
习题8
实验7图像数字水印
第9章隐私保护
9.1隐私概述
9.1.1隐私度量
9.1.2隐私保护模型
9.2数据发布隐私保护技术
9.2.1静态匿名技术
9.2.2动态匿名技术
9.3数据存储隐私保护技术
9.3.1同态加密存储技术
9.3.2数据审计技术
9.4数据挖掘隐私保护技术
9.4.1关联规则的隐私保护
9.4.2聚类结果的隐私保护
9.5数据访问控制技术
9.5.1基于角色的访问控制
9.5.2基于属性的访问控制
习题9
实验8基于同态加密的图像编辑
参考文献
在本书第1版出版至今的5年多时间里,网络安全上升为国家安全的战略高度,《网络安全法》正式实施,网络安全一级学科正式设置并确定为新工科专业。这些重大举措推动了高校信息安全专业建设,促进了网络安全教学内容和方法的改革,迫切需要更新教学内容; 另一方面,在教学实践中广大师生提出了很多中肯的建议,促使我们对教材相关章节的安排及内容取舍有了新的认识,也希望通过新版教材得以体现。第2版继承了第1版的优点,体现精讲多练、教为主导、学为主体的原则,由浅入深、循序渐进地介绍网络安全基本原理、基本方法、基本技能,注重学生理论水平和实践技能的同步提高。既有严密、抽象的密码学原理讲解,也有具体、直观的网络安全设备(防火墙、VPN、IPS)配置操作、图像数字水印编程实现等实践内容,能够很好地满足网络安全课程理论教学和实践教学的需求。网络安全教学的发展趋势是培养攻防兼备的人才,新工科教育要求教学更加强调工程实践能力和创新能力的培养,因此本书第2版新增了基于IP地址和端口的防火墙安全策略配置、VPN单臂旁挂于防火墙配置、Zenamp网络安全扫描、冰河木马攻击与防范、DES算法和RSA算法性能测试、凯撒密码解密进阶、图像数字水印、基于同态加密的图像编辑8个实验教学内容,助力师生主动、积极开展实验教学,提倡自主创新拓展实验内容。第2版将第1版的13章精简为9章,删除了第1版的第2章、第9章、第10章、第11章。具体修订内容如下:第1章网络安全概论,按照2015年*“网络安全一级学科论证工作组”制定的知识体系重写了本章,新增《网络安全法》解读和P2DR2网络安全模型。第2章密码学基础,新增椭圆曲线密码、国产密码、网络银行安全支付相关章节,对密码算法增加了例题讲解。第3章网络攻防技术,由第1版的第3章、第4章、第5章内容合并而成。第4章防火墙与入侵防御,新增防火墙入侵防御、内容过滤等网络安全配置实例介绍,培养学生配置网络安全设备,保证网络安全运行的实践能力。第5章IP安全与Web安全,新增SQL注入攻击、VPN安全性配置相关章节,在网络攻防对抗中应用所学理论知识保证网络安全。第6章网络安全方案设计与评估、第7章计算机病毒与特洛伊木马未做内容修改。第8章数字版权保护,新增章节,应用数字水印原理实现数字图像、数据库版权保护,应用抗合谋数字指纹ECFF实现数字资源版权溯源追踪,为打击数字资源盗版提供技术支持。第9章隐私保护,新增章节,介绍隐私保护及其度量方法; 根据数据生命周期隐私保护模型具体讲解数据发布、数据存储、数据挖掘、数据应用4个阶段使用的隐私保护技术; 应用同态加密解密技术实现密文图像编辑,保证云计算环境下用户数据的安全性。本书第4章至第7章由王铁君编写,其余章节由李启南编写,并进行统稿。兰州交通大学电子与信息工程学院吴辰文教授对本书进行了总体规划与设计,提出了再版方案,对内容的安排及实验与习题等方面给出了具体的指导建议,在此表示由衷的感谢。清华大学出版社郑寅堃编辑认真、仔细地多次阅读了本书初稿,详细指出了存在的诸多错误之处,为本书顺利出版付出了巨大心血,在此表示衷心的感谢!本书得到兰州交通大学实验教学改革项目(项目号: 2018016)资助。本书参考理论学时为32学时,实验学时为16学时; 或者理论学时为24学时,讲授前6章后选择第7章、第8章、第9章中的一章讲授; 实验学时为8学时,任意选做4个实验。作为教学交流,我们整理了PPT课件以及习题的参考答案,请各位教师在清华大学出版社网站(http://www.tup.com.cn)免费下载参考。 由于作者水平有限,书中难免会有不当之处,敬请读者提出宝贵意见。编者2018年1月
本章学习要求◆掌握网络攻击概念,理解网络攻击过程和网络攻击防御方法; ◆掌握DoS、DDoS、ARP欺骗、缓冲区溢出攻防方法; ◆掌握网络安全漏洞概念,理解常见漏洞修复方法; ◆掌握网络安全漏洞扫描工具使用方法,理解黑客攻击防范方法; ◆掌握网络安全扫描和网络监听的概念; 理解网络安全扫描与监听防范措施。3.1网络攻击概述3.1.1网络攻击定义
网络攻击是对网络系统的机密性、完整性、可用性、可控性和抗抵赖性产生危害的行为。这些行为可抽象地分为4种基本情形: 信息泄露攻击、完整性破坏攻击、拒绝服务攻击和非法使用攻击。网络安全威胁来自于黑客的攻击,而要保证网络安全,则需要针对网络安全进行有效的防御,因此,网络安全从大的方面可以分为攻击技术和防御技术两大类。这两个技术是相辅相成互相促进而发展的。一方面,黑客进行攻击的时候,需要了解各种防御技术和方法,以便能绕过防御而对目标进行攻击; 另一方面,在进行防御的时候则必须了解黑客攻击的方式方法,这样才能有效地应对各种攻击。攻击和防御永远是一对矛盾。图31用图示的方法说明了网络安全攻防体系所涉及的内容。
图31网络安全的攻防体系结构
1. 网络攻击的一般过程了解网络攻击过程,知己知彼,可以更好地进行网络安全防范工作。通过总结,可以将网络攻击归纳为以下8个步骤。(1) 攻击者的身份和位置隐藏: 利用被侵入的主机作为跳板,如在安装Windows的计算机内利用Wingate软件作为跳板,利用配置不当的Proxy作为踏板、电话转接技术、盗用他人的账号、代理、伪造IP地址、假冒用户账号。通常有两种方法隐藏自己IP: 首先入侵互联网上的一台计算机(俗称“肉鸡”),再利用这台计算机进行网络攻击,这样即使被发现了,也是“肉鸡”的IP地址。 做多级跳板“Socket代理”,在入侵的计算机上留下的是代理计算机的IP地址。比如攻击A国的站点,一般选择离A国很远的B国计算机作为“肉鸡”或者“代理”,这样跨国度的攻击,一般很难被侦破。(2) 收集攻击目标信息: 主要方法有口令攻击、端口扫描、漏洞检测、对目标系统进行整体安全性分析,还可利用如ISS、SATAN和NESSUS等报告软件来收集目标信息。踩点就是通过各种途径对所要攻击的目标进行多方面的了解,确定攻击的时机。扫描的目的是利用各种工具在攻击目标的IP地址或地址段的主机上寻找漏洞。从安全威胁的演进史上来看,传统物理空间和网络空间本来就是联通的,早期黑客针对大型机系统的攻击,很多都是依靠人员混入办公场所踩点的方式完成,就像上世纪凯文·米特尼克装扮成清洁工偷取计算机的操作手册一样。只是随着网络的普及,这种踩点逐步脱离了距离的困扰,并使成本逐渐下降。随着对风险认知的加深,我们需要看到的是,传统的把虚拟世界安全和物理世界安全割裂看待的思维,传统的界定网络风险和现实风险泾渭分明的执念,都会被动摇。我们看到的将只是形形色色攻击者为达成攻击目的所采用的各种攻击手段,至于是单纯地通过网络进行攻击,还是在攻击路径上结合传统的物理和电磁手段,只是高级攻击者的后备选择。(3) 挖掘漏洞信息: 常用的技术有系统或应用服务软件漏洞、主机信任关系漏洞、目标网络的使用者漏洞、通信协议漏洞和网络业务系统漏洞。(4) 获取目标访问权限: 通过一切办法获得管理员口令。得到管理员权限的目的是连接到远程计算机,对其进行控制,达到攻击目的。获得系统及管理员权限的方法有: 通过系统漏洞获得系统权限,通过管理漏洞获得管理员权限,通过软件漏洞得到系统权限,通过监听获得敏感信息进一步获得相应权限,通过弱口令获得远程管理员的用户密码,通过穷举法获得远程管理员的用户密码,通过攻破与目标机有信任关系的另一台机器进而得到目标机的控制权,通过欺骗获得权限以及其他有效的方法。(5) 隐蔽攻击行为: 包括连接隐藏、进程隐藏和文件隐藏等。(6) 实施攻击: 攻击主要包括修改删除重要数据、窃听敏感数据、停止网络服务和下载敏感数据等。(7) 开辟后门: 主要有放宽文件许可权、重新开放不安全的服务(如TFTP)等、修改系统的配置如系统启动文件、替换系统本身的共享库文件、修改系统的源代码、安装各种特洛伊木马、安装Sniffers和建立隐蔽信道等。上传恶意软件,以确保能够重新进入系统。在已经攻破的计算机上植入一些后门程序。(8) 清除攻击痕迹: 一次成功入侵之后,一般在对方的计算机上已经存储了相关的登录日志,这样就很容易被管理员发现。采用的主要方法有篡改日志文件中的审计信息、改变系统时间造成日志文件数据紊乱以迷惑系统管理员、删除或停止审计服务进程、干扰入侵检测系统正常运行和修改完整性检测标签等。2. 网络攻击的防御技术(1) 包过滤技术,也是防火墙基本的技术,包过滤技术是用来控制内、外网络数据流入和流出,通过对数据流的每个包进行检查,根据数据报的源地址、目的地址、TCP和UDP的端口号,以及TCP的其他状态来确定是否允许数据包通过。(2) 行为特征判断技术,属于比包过滤技术更可靠、精确的攻击判断技术,通过对攻击者的一系列攻击数据包行为规律的分析、归纳、总结,结合专家的经验,提炼出攻击识别规则知识库; 模拟专家发现新攻击的机理,通过分布在用户计算机系统上的各种探针,动态监视程序运行的动作,并将程序的一系列操作通过逻辑关系分析组成有意义的行为,再结合应用攻击识别规则知识,实现对攻击的自动识别。(3) 加密技术,是常用的安全保密手段,利用技术手段(加密算法)把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)为原文。(4) OS安全配置技术,通过采用安全的操作系统,并对操作系统进行各种安全配置,以保证合法访问者能够进行操作和访问,隔离和阻断非法访问者的请求。应用以上技术所采用的防御手段(或设备)通常有: (1) 防火墙,一个由软件、硬件或者是二者组合而成,在内部网和外部网之间、专用网与公共网之间的界面上放置的安全设备,通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现网络的安全保护。(2) 应用代理,是彻底隔断通信两端的直接通信的网络安全设备,在安装了应用代理后,所有通信都必须经应用层代理转发,访问者在任何时候都不能与服务器建立直接的连接,应用层的协议会话过程必须符合代理的安全策略要求,而将不符合安全要求的各种连接阻断或屏蔽,保护网络的安全。(3) IDS/IPS(入侵检测系统/入侵防御系统),依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。(4) 安全网闸,是使用带有多种控制功能的固态开关读写媒体连接两个独立主机系统的信息安全设备。物理隔离网闸所连接的两个独立主机系统之间,不存在通信的物理连接、逻辑连接、信息传输命令、信息传输协议,不存在依据协议的信息包转发,只有数据文件的无协议“摆渡”,且对固态存储媒体只有“读”和“写”两个命令,所以,物理隔离网闸从物理上隔离、阻断了具有潜在攻击可能的一切连接,使“黑客”无法入侵、无法攻击、无法破坏,提高了受保护网络的安全性。上面所列的技术是网络安全攻击防御体系中经常用到的技术,除了上述所列的技术以外,网络安全管理技术、身份认证与访问控制技术、病毒及恶意软件防护技术、Web站点安全技术、数据库系统安全技术以及电子商务安全技术等都是网络安全技术所涉及的内容。网络安全的实施过程中需要各种类型的工具,包括扫描类工具、嗅探类工具、防火墙软件、IDS/IPS软件、加密/解密软件等。编写这些工具采用的编程语言主要有C、C 、Perl、Shell等。对于任何系统,网络的安全是根本,因此网络安全的物理基础也是网络安全的根本,网络安全的物理基础包括安全的操作系统,如Windows NT/2000/2003/2008、Linux、UNIX等; 也包括各种网络协议,通常使用的是TCP/IP协议簇各种相关协议和其他相关的通信协议。3.1.2网络攻击分类网络攻击的方式不同,产生的攻击类型不同,后导致的攻击结果也不同。从攻击的方式来看,有利用系统本身的漏洞进行的攻击,有利用各种命令和工具进行的攻击,有利用虚假的IP地址进行欺骗性的攻击,有利用恶意代码或病毒进行的攻击,也有利用网络部署的缺陷和防范措施不到位进行的攻击。从攻击的类型来看,有通过单个计算机进行的攻击,也有通过控制僵尸网络以多个计算机进行的攻击; 有间歇式的攻击,也有连续式的不间断的攻击; 有隐秘的攻击,也有非隐秘式的攻击。从攻击导致的结果来看,轻者导致受攻击者运行速度变慢,无法提供正常的服务; 重者系统崩溃。通过将攻击的方式与攻击类型的结合,攻击类型主要有拒绝服务攻击、利用型攻击、信息收集型攻击、假消息攻击等等。攻击技术包括4类攻击方式。1. 拒绝服务攻击拒绝服务攻击(Denial of Service,DoS)攻击是目前常见的一种攻击类型。从网络攻击的各种方法和所产生的破坏情况来看,DoS算是一种很简单,但又很有效的攻击方式。它的目的就是拒绝用户的服务访问,破坏组织的正常运行,终使网络连接堵塞,或者服务器因疲于处理攻击者发送的数据包而使服务器系统的相关服务崩溃,无法给合法用户提供服务。DoS包括死亡之ping(ping of death)、泪滴(teardrop)、UDP洪水(UDP flood)、SYN洪水(SYN flood)、Land攻击、Smurf攻击、Fraggle攻击、电子邮件炸弹和畸形消息攻击等。DoS详细介绍以及防御方法见3.2.2节。2. 利用型攻击利用型攻击是一类试图直接对用户的机器进行控制的攻击,常见的有3种: (1) 口令猜测。一旦黑客识别了一台主机而且发现了基于NetBIOS、Telnet或NFS等服务的可利用用户账号,就能实现成功的口令猜测。防御: 要选用难以猜测的口令,比如词和标点符号的组合。确保像NFS、NetBIOS和Telnet等可利用的服务不暴露在公共范围。如果该服务支持锁定策略,就进行锁定。(2) 特洛伊木马。特洛伊木马是一种或是直接由一个黑客或是通过一个不会令人起疑的用户秘密安装到目标系统的程序。一旦安装成功并取得管理员权限,安装此程序的人就可以直接远程控制目标系统。防御: 避免下载可疑程序并拒绝执行,运用网络安全扫描软件定期监视内部主机上的TCP服务。(3) 缓冲区溢出。由于在很多的服务程序中大意的程序员使用像与strcpy()和strcat()类似的不进行有效位检查的函数,终可能导致恶意用户编写一小段程序来进一步打开安全缺口,然后将该代码置于缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码,系统的控制权就会被夺取。防御: 利用SafeLib、tripwire这样的程序保护系统,或者浏览的安全公告不断更新操作系统。 3. 信息收集型攻击信息收集型攻击并不对目标本身造成危害,但这类攻击会为进一步入侵提供有用的信息。主要包括扫描技术、体系结构刺探和利用信息服务等。(1) 地址扫描。运用ping程序探测目标地址,对此作出响应的表示对应主机存在。防御: 在防火墙上过滤掉ICMP应答消息。(2) 端口扫描。通常使用一些软件,向大范围的主机连接进行一系列的TCP端口扫描,软件报告它成功地建立了连接的主机所开放的端口。 防御: 许多防火墙能检测到是否被扫描,并自动阻断扫描企图。(3) 反响映射。黑客向主机发送虚假消息,然后根据返回“host unreachable”这一消息特征判断出哪些主机是存在的。目前由于正常的扫描活动容易被防火墙侦测到,黑客转而使用不会触发防火墙规则的消息类型,这些消息类型包括RESET消息、SYNACK消息、DNS响应包。防御: NAT和非路由代理服务器能够自动抵御此类攻击,也可以在防火墙上过滤“host unreachable”ICMP应答。(4) 慢速扫描。由于一般扫描侦测器的实现是通过监视某个时间帧里一台特定主机发起的连接的数目(例如每秒10次)来决定是否在被扫描,这样黑客可以通过使用扫描速度慢一些的扫描软件进行扫描。防御: 通过引诱服务来对慢速扫描进行侦测。(5) 体系结构探测。黑客使用具有已知响应类型的数据库的自动工具,对来自目标主机的、对坏数据包传送所做出的响应进行检查。由于每种操作系统都有其独特的响应方法(例如Windows NT和Solaris的TCP/IP堆栈具体实现有所不同),通过将此独特的响应与数据库中的已知响应进行对比,黑客经常能够确定出目标主机所运行的操作系统。防御: 去掉或修改各种Banner,包括操作系统和各种应用服务的Banner,阻断用于识别的端口,扰乱对方的攻击计划。(6) DNS域转换。DNS协议不对转换信息的更新进行身份认证,这使得该协议被他人以一些不同的方式加以利用。如果你维护着一台公共的DNS服务器,黑客只需实施一次域转换操作就能得到你所有主机的名称以及内部IP地址。防御: 在防火墙处过滤掉域转换请求。(7) finger服务。黑客使用finger命令来刺探一台finger服务器以获取关于该系统的用户信息。防御: 关闭finger服务并记录尝试连接该服务的对方IP地址,或者在防火墙上进行过滤。 (8) LDAP服务。黑客使用LDAP协议窥探网络内部的系统及其用户信息。防御: 对于刺探内部网络的LDAP进行阻断并记录,如果在公共机器上提供LDAP服务,那么应把LDAP服务器放入DMZ。4. 假消息攻击用于攻击目标配置不正确的消息,主要包括DNS高速缓存污染、伪造电子邮件。(1) DNS高速缓存污染。由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以将不正确的信息掺进来并把用户引向黑客自己的主机。防御: 在防火墙中过滤入站的DNS更新内容; 区分内部DNS服务器和外部DNS服务器,禁止外部DNS服务器更改内部DNS服务器对内部机器的DNS解析内容。(2) 伪造电子邮件。由于SMTP并不对邮件的发送者的身份进行鉴定,因此黑客可以对内部客户伪造电子邮件,声称是来自某个客户、声称认识并能取得信任的人,邮件可能附带上可安装的特洛伊木马程序,或者是一个引向恶意网站的链接。防御: 使用PGP等安全工具并安装电子邮件证书。3.2常见网络攻防方法目前网络安全研究趋向于攻防结合,追求动态安全。研究黑客常用攻击手段和工具必然为防御技术提供启示和思路。研究黑客攻击手段并利用这些攻击手段和工具对网络进行模拟攻击,找出网络的安全漏洞也成为网络安全维护手段的一个重要组成部分。3.2.1口令入侵及其防范方法所谓口令入侵,是指使用某些合法用户的账户和口令登录到目的主机,然后再实施攻击活动。这种方法的前提是必须先得到该主机上的某个合法用户的账号,然后再对合法用户的口令进行破译。不过攻击者已大量采用一种可以绕开或屏蔽口令保护的程序来完成这项工作。对于那些可以解开或屏蔽口令保护的程序通常被称为“Crack”。实际上真正的加密口令是很难逆向破解的。1. 口令入侵方法(1) 暴力破解。暴力破解基本上是一种被动攻击的方式。黑客在知道用户的账户号后,利用一些专门的软件强行破解用户口令,这种方法不受网段限制,但需要有足够的耐心和时间。这些工具软件可以自动地从黑客字典中取出一个单词,作为用户的口令输入给远端的主机,申请进入系统,但是这样也容易因为网络数据流量和访问异常而被网络管理员发现。(2) 登录界面攻击法。黑客可以在被攻击的主机上,利用程序伪造一个登录界面,以骗取用户的账号和密码。当用户在这个伪造界面上输入登录信息后,程序可将用户的输入信息记录并传送到黑客的主机,然后关闭界面,给出提示信息“系统故障”或“输入错误”,要求用户重新登录。重新出现的登录界面才是系统真正的登录界面。(3) 网络监听。黑客可以通过网络监听非法得到用户的口令,这类方法有一定的局限性,但危害极大。由于很多网络协议根本就没有采取任何加密或身份认证技术,如在telnet、FTP、HTTP、SMTP等传输协议中,用户账号和密码信息都是以明文格式传输的,此时黑客利用数据包截取工具便可很容易地收集到用户的账号和密码。另外,黑客有时还会利用软件和硬件工具时刻监视系统主机的工作,等待记录用户登录信息,从而取得用户密码。(4) 直接侵入网络服务器,获得服务器上的用户口令文件后,用暴力破解程序对口令文件破译,以获得用户口令。比如在UNIX系统中,用户口令一般都存储在Shadow文件中,Windows系统中则是存储在sam文件内,攻击者侵入服务器后只要获得这些文件,就可以用反编译的方法将这些文件内存储的用户资料还原出来。这种方法是所有的方法中危害的,一是它不需要一遍一遍地访问服务器而引起网络异常,从而被管理员所发现; 二是操作系统的文件记录方式很容易被反编译破解; 三是一旦口令文件被破解,那么这个服务器上的所有用户资料都将暴露在攻击者面前。2. 获取管理员密码用户登录以后,所有的用户信息都存储在系统的一个进程中,这个进程是winlogon.exe,可以利用程序将当前登录用户的密码解码出来。这里用到的两个应用程序是FindPass.exe和pulist.exe。使用FindPass等工具可以对该进程进行解码,然后将当前用户的密码显示出来。将FindPass.exe复制到C盘根目录,执行该程序,将得到当前用户的登录名,如图32所示。
图32获取用户名和密码
如果有多人登录同一台计算机,还可以查看其他用户的密码,语法如下:
FindPass.exe DomainName UserName PID-of-WinLogon。第1个参数DomainName是计算机的名称,通过右击“我的电脑”,选择“属性”命令可以看到它; 第2个参数UserName是需要查看密码的用户名,这个用户必须登录到系统,如果没有登录到系统,在WinLogon进程中不会有该用户的密码; 第3个参数是WinLogon进程在系统的进程号。前两个参数都容易知道,WinLogon的进程号只有到任务管理器中才能看到,也可以利用工具pulist.exe程序查看WinLogon的进程号。使用的方法如图33所示。所以只要可以侵入某个系统,获取管理员或者超级用户的密码就是可能的。
图33查看WinLogon的进程号
3. 防范口令入侵攻击的方法防范口令入侵比较好的方法主要有: (1) 良好的口令设置是防范口令入侵基本、有效的方法。口令设置好是数字、字母、标点符号、特殊字符的随意组合,包含的元素至少包括下列字符集中的3种: 大写字符、小写字符、数字、非数字字母符号; 英文字母可采用大小写混合排列的方式,口令长度应达到8位以上,越长越安全。(2) 注意保护口令安全。例如,不随意丢弃记有口令的纸张,不在手机中存储口令。(3) 保证系统的安全,及时更新漏洞补丁,关闭不必要的服务和端口。(4) 在Windows系统中,可以通过设置密码长期限、短密码长度、短密码期限、密码性、账号锁定等安全的密码策略来进行设置,也可以启动“用户必须登录方能更改密码”的选项,提高抗口令猜测攻击的能力。(5) 不要包含可能含有任何用户信息的元素,如姓名、公司名、生日、年龄、性别、所在城市、亲属姓名、代号、常见词等。(6) 注意在系统中保存的密码应采用加密方式存储。(7) 在Windows中禁止存储LM Hash,而采用NT Hash。3.2.2DoS攻击及其防范1. DoS攻击的基本原理
拒绝服务攻击是攻击者通过各种手段来消耗网络带宽及服务器的系统资源,终导致服务器瘫痪而停止提供正常的网络服务。拒绝服务攻击主要是利用TCP/IP协议本身的漏洞或利用网络中各个操作系统的IP协议栈的实现漏洞来发起攻击。这种攻击主要是用来攻击域名服务器、路由器以及其他网络操作服务,攻击之后造成被攻击者无法正常运行和工作,严重的可以使网络瘫痪。拒绝服务攻击会降低系统资源的可用性,这些资源可以是CPU时间、磁盘空间、打印机,甚至是系统管理员的时间,结果往往是受攻击目标的效率大幅降低甚至不能提供相应的服务。由于使用DoS攻击工具的技术门槛低、效果比较明显,因此成为当今网络中十分流行的一种攻击手段,被黑客广泛使用。DoS攻击的基本过程为: 首先攻击者向服务器发送众多的带有虚假地址的请求,服务器发送回复信息后等待回传信息,由于地址是伪造的,所以服务器一直等不到回传的消息,分配给这次请求的资源就始终没有被释放。当服务器等待一定的时间后,连接会因超时而被切断,攻击者会再度传送新的一批请求,在这种反复发送伪地址请求的情况下,服务器资源终会被耗尽。DoS攻击主要有3种类型: 带宽攻击、协议攻击和逻辑攻击。(1) 带宽攻击是古老、常见的DoS攻击。在这种攻击中,恶意黑客使用数据流量填满网络。脆弱的网络或网络设备由于不能处理发送给它的大量流量而导致系统崩溃和响应速度减慢,从而阻止合法用户的访问。攻击者在网络上传输任何流量都要消耗带宽。基本的带宽攻击能够使用UDP或ICMP数据包消耗掉所有可用带宽。简单的带宽攻击能够利用服务器或网络设备有吞吐量限制而达到目的——发送大量的小数据包。快速发送大量数据包的攻击通常在流量达到可用带宽限制之前就淹没了网络设备。路由器、防火墙、服务器都存在输入/输出处理、中断处理、CPU、内存资源等方面的约束。读取包头进行数据转发的设备在处理大速率数据包时面临压力,而对数据包吞吐实现,并不仅仅靠大的数据流量。(2) 协议攻击是利用网络协议的弱点进行的网络攻击。其中,在TCP/IP协议中,较为常见的攻击是攻击者发送大量的SYN数据包来对目标主机进行攻击。图34表示了正常的TCP流量,图35显示了当发生SYN洪流协议攻击时的情况,由于服务器(图中为目标主机B)用于等待来自客户机(图中为源主机A)的ACK信息包的TCP/IP堆栈是有限的,如果缓冲区被等待队列充满,它将拒绝下一个连接请求。因此,攻击者就可以利用这个漏洞,在瞬间伪造大量的SYN数据报,而又不回复服务器的SYN ACK信息包,从而达到攻击的目的。目前来看,SYN洪流是同时进行了协议攻击和带宽攻击的一种攻击。
图34正常的TCP流量
图35SYN洪流
(3) 逻辑攻击。这种攻击包含了对组网技术的深入理解,因此也是一种的攻击类型。逻辑攻击的一个典型示例是LAND攻击,这里攻击者发送具有相同源IP地址和目的IP地址的伪数据包。很多系统不能够处理这种引起混乱的行为,从而导致崩溃。从另外一个角度又可将拒绝服务攻击分为两类: 网络带宽攻击和连通性攻击。带宽攻击是以极大的通信量冲击网络,使网络瘫痪。连通性攻击是用大量的连接请求冲击网络,达到破坏目的。拒绝服务攻击与其他的攻击方法相比较,具有以下特点: (1) 难确认性。拒绝服务攻击很难被判断,用户在自己的服务得不到及时响应时,一般不会认为是自己受到攻击,而是认为可能是系统故障造成一时的服务失效。(2) 隐蔽性。正常请求服务会隐藏掉拒绝服务攻击的过程。(3) 资源有限性。由于计算机资源有限,容易实现拒绝服务攻击。(4) 软件复杂性,由于软件所固有的复杂性,难以确保软件没有缺陷,因而攻击者有机可乘,可以直接利用软件缺陷进行拒绝服务攻击。2. 常见的DoS攻击方式及其防范措施1) DoS攻击的检测DoS攻击通常是以消耗服务器端资源、迫使服务停止响应为目标,通过伪造超过服务器处理能力的请求数据造成服务器响应阻塞,从而使正常的用户请求得不到应答,以实现其攻击目的。这类攻击的特点在于: 易于从受攻击的目标来判断是否发生了攻击,而难以追踪攻击源,因此对于普通用户,需要正确地检测出DoS攻击,并对其进行防范。通常来说,检测出DoS攻击相对比较直观,但如果攻击是持续缓慢进行的,则很难在攻击开始的时间就被发现。一般来说,可以通过以下症状来判断是否发生了DoS攻击: 频繁的网络活动; 很高的CPU利用率; 计算机无响应; 计算机在不确定的时间崩溃。2) DoS攻击常用的工具DoS攻击通常通过一些攻击工具来进行,了解了这些攻击工具,可以更有效地进行防范。下面是一些常用的DoS攻击工具。(1) SYN Flood工具。依据SYN Flood攻击的原理。(2) IP碎片类攻击工具,包括Jot2、Teardrop和Newtear。Jot2通过向攻击对象发送分片的ICMP数据报,当分片合成完整的IP数据报时,其长度为65538,比IP数据报长度65535大,则系统在重组数据报时,因发生错误而崩溃。Teardrop向被攻击对象发送被分成两个分片的IP数据报。这两个分片在重组时,发生重叠,即第二个IP分片包含在片中,系统在重组数据报时,因发生错误而崩溃。Newtear由Teardrop衍生而来,两者原理基本相同,只是将用于填充的数据大小由28改为20。此外,该类工具还有Opentear、Overdrop、Bonk、Boink、Syndrop、Ssping等攻击工具。(3) 网络放大攻击工具。这里主要有两种工具: Smurf和Fraggle。(4) 系统漏洞攻击工具。这里的漏洞一般指协议漏洞。常用的工具有Land、Blat、Kod、Kox、Winnuke、Killwin等。3) DoS攻击典型类型及其防范措施(1) 同步风暴(SYN Flood)。在同步风暴攻击中,利用TCP三次握手协议的缺陷,攻击者向目标主机发送大量伪造源地址的SYN报文,目标主机分配必要的资源,然后向源地址返回SYN+ACK包,并等待源端返回ACK包。由于源地址是伪造的,所以源端永远都不会返回ACK报文,受害主机继续发送SYN+ACK包,并将TCP半连接放入端口的积压队列中。虽然一般的主机都有超时机制和默认的重传次数,但由于端口的TCP半连接队列的长度是有限的,如果不断向受害主机发送大量的TCP SYN报文,那么TCP半连接队列很快就会被填满,服务器拒绝新的连接,将导致该端口无法响应其他机器进行的连接请求,终使受害主机的资源耗尽。防范措施: 为了有效地防范TCP SYN Flood攻击,在保证通过慢速网络的用户可以正常建立到服务端的合法连接的同时,需要尽可能减少服务端TCP Backlog的清空时间,并采用TCP连接监控的工作模式,在防火墙处就能够过滤掉来自同一主机的后续连接,当然还要根据实际的情况来判断。(2) Smurf攻击。一种简单的Smurf攻击是,将回复地址设置成目标网络的广播地址,利用ICMP应答请求数据包,使该网络的所有主机都对此ICMP应答请求做出应答,导致网络阻塞,该攻击方式比Ping of Death洪流攻击的流量高出一到两个数量级。更加复杂的Smurf攻击将源地址改为第三方的目标地址,终导致第三方网络阻塞。防范措施: 去掉ICMP服务。(3) 垃圾邮件。攻击者利用邮件系统制造垃圾邮件信息,甚至通过专用的邮件炸弹程序给受害用户的信箱发送垃圾邮件,耗尽用户信箱的磁盘空间,使用户无法使用这个邮箱。防范措施: 限制邮件的转发功能。即将凡是来自管理域范围之外的IP地址通过本地SMTP服务进行的中转邮件转发请求一概予以拒绝。 发送邮件认证功能。扩展的SMTP通信协议(RFC 2554)中包含了一种基于SASL的发送邮件认证方法,目前多数邮件系统都支持明文口令、MD5认证,甚至基于公钥证书的认证方式。发送邮件认证功能只是在方便用户使用的条件下限制了邮件转发功能,但是无法拒绝接收以本地账号为地址的垃圾邮件。邮件服务器的反向域名解析功能。启动该功能,可以拒绝接收所有没有注册域名的地址发来的信息。目前,多数垃圾邮件发送者使用动态分配或者没有注册域名的IP地址来发送垃圾邮件,以逃避追踪。因此在邮件服务器上拒绝接收来自没有域名的站点发来的信息可以大大降低垃圾邮件的数量。设置邮件过滤功能,对邮件进行过滤。垃圾邮件的过滤可以基于IP地址、邮件的信头或者邮件的内容,过滤位置可以在用户、邮件接收工具、邮件网关、网络网关/路由器/防火墙等多个层次实施。3. 防范DoS攻击的专用网络安全设备DoS攻击的目的是阻止合法用户访问他们所需要的服务,使提供服务的系统和网络无法正常运行。有效地检测这种攻击,并对这类攻击进行防范的主要方法是使用多种网络安全的专用设备和工具,这些设备和工具主要有防火墙、基于主机的IDS——入侵检测系统、基于特征的网络入侵检测系统NIDS、网络异常行为检测器。例如,Cisco PIX Firewall提供了一种称为Flood Defender的功能,能够抵御TCP SYN洪流的攻击。Flood Defender的工作原理是: 检查连接到指定服务上的未回答SYN的数量,如果出现异常情况,则对之后的连接采取限制,即当达到限制数量时,所有其他连接都被丢弃,以保护内部服务器。关于防火墙、IDS、NIDS将在第4章专门介绍。这里简单介绍网络异常检测器。尽管入侵检测系统能够被用于抵御大部分普通的DoS攻击,但对抵御0day类型的攻击效果不好。针对这样的需求,出现了网络异常检测器。网络异常检测器主要设计用于观察不寻常的网络流量,观察的结果与参考点相对照,如果流量超出了一定的限度,则进行报警,并采取相应的应对措施。例如,Cisco Traffic Anomaly Detector XT就是一款这样的网络异常检测器,它能够监测拒绝服务攻击乃至分布式拒绝服务攻击(DDoS)的网络流量。4. 防范DoS攻击的其他方法检测是否发生了DoS攻击,只是阻止此类攻击的步。如果能对DoS攻击进行预防,则可以大幅度减少DoS攻击的范围,显著地降低系统受DoS攻击影响的程度。实际上,再好的防护系统也无法阻止所有的攻击,只能减少攻击的发生概率,因此应该首先提高系统的安全性,使系统本身具有较好的攻击抵抗性。提高系统安全性的方法通常有: 安装服务包和修补包; 只运行必要的服务; 安装防火墙; 安装入侵检测系统; 安装防病毒软件; 关闭穿越路由器和防火墙的ICMP。一个设计较好的安全性高的系统,通常是上述这些方法的组合,某个单独的产品或方法很难做到全面的防护。通过安装服务包,能够限度地减少因应用程序和协议的漏洞被攻击的机会。通常,软件厂商会定期发布修复安全漏洞的服务包和修补包。此外,还应对系统的安全性进行强化配置。强化系统的安全性包括两部分: 强化网络设备的安全性和强化应用程序的安全性。对于网络设备来说,其设备本身应具备一定的安全性,以便抵御各种攻击对设备本身的破坏,因为一旦设备受到破坏,则整个网络系统就会产生薄弱点,易于成为攻击者进入的入口。对于应用程序来说,则需要加强自身的安全性能,以防被攻击者控制或植入其他攻击程序。5. 分布式拒绝服务(DDoS)攻击及其防范1) DDoS攻击的基本原理DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式,当被攻击目标的CPU速度低、内存小或者网络带宽小等等各项性能指标不高时,其效果是明显的。然而,随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别乃至万兆级别的网络,这就使得DoS攻击的困难程度加大了,因为目标对恶意攻击包的消化能力大大提高,所以一对一的攻击方式就不会产生什么效果。在这种情况下,分布式拒绝服务攻击手段(DDoS)应运而生。假如被攻击目标的计算机与网络的处理能力提高了10倍,采用原来的一对一方式时用一台攻击机来攻击不再能起作用的话,此时若攻击者使用10台甚至更多的攻击机同时进行攻击,则一定会实现攻击的目的,因此,DDoS攻击就是利用更多的攻击机(又称傀儡机)来发起进攻,以比从前更大的规模来进攻受害者的一种攻击方式。DDoS攻击的示意图如图36所示。DDoS与DoS攻击的原理基本相同。攻击者首先通过植入某种特定程序(僵尸程序或bot程序,一段可以自动执行预先设定功能,可以被控制,具有一定人工智能的程序,该程序可以通过木马、蠕虫等进行传播)控制若干台机器作为主控端(控制傀儡机),然后通过该主控端向更多的机器植入某种攻击程序,由这些代理端(攻击傀儡机)向目标主机发起攻击的一种攻击方式。由于在DDoS攻击中,攻击者和受攻击机器的力量对比非常悬殊,在这种悬殊的力量对比下,被攻击的主机很快失去反应能力,无法提供服务,从而达到攻击的目的。目前,这种攻击方式是实施为快速、攻击能力强、破坏性的一种方式。
图36DDoS攻击过程示意图
2) 僵尸网络由攻击者植入僵尸程序的计算机(这些计算机受黑客控制,也称为“肉鸡”)组成的网络称为僵尸网络(Botnet),该网络由大量能够实现恶意功能的Bot、Command & Control Server(命令和控制服务器,控制者通过该服务器发送命令,进行控制)和控制者组成,能够受攻击者控制。Botnet并不是指物理意义上具有拓扑架构的网络,它具有一定的分布性,该网络会随着Bot程序的不断传播,而不断有新位置的僵尸计算机添加到这个网络中来,从而可以使网络节点的规模快速扩大。僵尸程序与蠕虫的区别就在于蠕虫具有主动传播性,另外蠕虫的攻击行为不受人控制,而相反僵尸程序的存在就是为了使得攻击者能够控制受感染的计算机。僵尸程序和木马有着功能的相似性——远程控制计算机,但在功能实现上略有区别,僵尸程序都能突破内网和防火墙限制,这是传统正向连接的木马无法比拟的。僵尸程序使用特有的IRC协议下的DCC命令或者其他载体进行传播,由于预设指令的存在,传播过程更显主动,且受感染的计算机仍受控制,这些比起木马技术来说更加先进和隐蔽。Botnet的主要的特点: 它有别于以往简单的安全事件,是一个具有极大危害性的攻击平台。它可以一对多地执行相同的恶意行为,将攻击源从一个转化为多个,乃至一个庞大的网络体系,通过网络来控制受感染的系统,造成更大程度的网络危害,比如可以同时对某目标网站进行DDoS攻击,同时发送大量的垃圾邮件,在短时间内窃取大量敏感信息、抢占系统资源甚至进行非法目的牟利等。僵尸网络正是这种一对多的控制关系,使得攻击者能够以极低的代价高效地控制大量的资源为其服务,在执行恶意行为的时候,Botnet充当了一个攻击平台的角色,这也就使得Botnet不同于简单的病毒和蠕虫,也与通常意义的木马有所不同。目前,僵尸网络已经成为网络钓鱼、传播垃圾邮件和色情文学、实施点击欺诈和经济犯罪的重要平台。2008年8月,在我国发现的的一个“僵尸网络”控制着约15万台计算机; 国外曾经出现过40多万用户被“僵尸网络”控制的事件。僵尸网络的危害主要有: (1) 远程完全控制系统。僵尸程序一旦侵入系统,会像木马一样隐藏自身,企图长期潜伏在受感染系统中,随时等待远程控制者的操作命令。(2) 释放蠕虫。传统蠕虫的初次传播属于单点辐射型,如果疫情发现得早,可以很好地定位并抑制蠕虫的深度传播; 而僵尸网络的存在,使得蠕虫传播的基点更高。在很大的范围内,将可能同时爆发蠕虫疫情。僵尸计算机的分布广泛且数量极多,导致破坏程度成几何倍数增长,使蠕虫起源更加具有迷惑性,给定位工作增大了难度。(3) 发起分布式拒绝服务攻击。DDoS已经成为僵尸网络造成的、直接的危害之一。攻击者通过庞大的僵尸网络发送攻击指令给活跃的(甚至暂时处于非活跃状态的)僵尸计算机,可以同时对特定的网络目标进行持续的访问或者扫描,由于攻击者可以任意指定攻击时间、并发任务个数以及攻击的强度,使这种新式的拒绝服务攻击具有传统拒绝服务攻击所不可比拟的强度和危害。(4) 窃取敏感信息。由于僵尸计算机被远程攻击者完全控制,存储在受感染计算机上的一切敏感信息都将暴露无遗,用户的一举一动都在攻击者的监视之中。(5) 发送垃圾邮件。垃圾邮件给人们的日常生活造成了极大的障碍,而利用僵尸网络发送垃圾邮件,首先可以隐藏自身的真实IP,躲避法律的追究; 其次可以在短时间内发送更多的垃圾邮件; 后反垃圾邮件的工作和一些过滤工具无法完全拦截掉这些垃圾邮件。(6) 强占滥用系统资源,进行非法牟利活动。僵尸网络一旦形成,就相当于给控制者提供了大量免费的网络和计算机资源,控制者利用这些资源进行非法的暴利谋取。暴利谋取的手段包括发送广告邮件、增加网站访问量、参与、下载各类数据资料、建立虚假网站进行网络钓鱼等等。(7) 作为跳板,实施二次攻击。攻击者利用僵尸程序,在受感染主机打开各种服务器代理或者重定向器,发起其他攻击破坏,而这样可以隐藏自己的真实位置,不容易被发现。总之,僵尸网络不是一种单一的网络攻击行为,而是一种网络攻击的平台和其他传统网络攻击手段的负载综合,通过僵尸网络可以控制大量的计算机进行更快、更猛烈的网络攻击,这给普通用户和整个互联网的健康发展造成了严重的危害。当前,新一代的僵尸网络更加智能化和追求利益化。传统的僵尸网络更多的是进行DDoS攻击,而从2008年开始,已经转变到利用庞大的僵尸兵团来完成点击广告、刷网络流量等以谋求经济利益的目的上来,僵尸网络控制技术更是由原来的不可控型变成了可控制,实现指哪打哪的新型战术,这对防范僵尸网络带来了更大的挑战。对于僵尸网络攻击的防范,主要有以下措施: (1) 对网络和主机的各种运行状态时刻保持警惕,提高警觉性,注意定期查看系统日志,监控连接到网络和主机的各种链接。对个人Windows用户而言,还应做到自动升级、设置复杂口令、不运行可疑邮件,这样,可以避免多数恶意代码的侵袭。(2) 监测端口。因为即使是的bot程序进行通信时,它们也是需要通过端口来实现的。绝大部分的Bot仍然使用IRC(端口6667)和其他端口号较大的端口(如31337和54321)。1024以上的所有端口通常应设置为阻止Bot进入。另外,还可以对开放的端口制定通信政策“只在办公时间开放”或者“拒绝所有访问,除了以下IP地址列表”等。 (3) 禁用JavaScript。当一个Bot程序感染主机的时候,往往是基于Web利用漏洞执行JavaScript来实现。可以设置浏览器在执行JavaScript之前进行提示,这样有助于化地减少因JavaScript而感染Bot的机会。(4) 多层面防御,采用多个不同层次、不同作用的防御工具,可以提高综合防御效果。(5) 安全评估。通常,厂商都会提供免费的安全评估工具,这些工具可以评估用户网络所面临的不同类型的安全风险和安全漏洞,并提供安全措施的建议。6. DDoS攻击的检测与防范要判断是否受到DDoS攻击,首先应该对攻击进行检测,一般情况下,有下列情况时,就有可能出现了DDoS攻击。(1) 系统服务器CPU利用率极高,处理速度缓慢,甚至宕机; (2) 高流量无用数据造成网络拥塞,使受害主机无法正常和外界通信; (3) 反复高速地发出特定的服务请求,使受害主机无法及时处理所有正常请求; (4) 被攻击主机上有大量等待的TCP连接; (5) 被DDoS攻击后,服务器出现木马、溢出等异常现象。当然,有时候DDoS攻击比较隐蔽,检测比较困难,这时,就要对系统进行综合测试和评估,并采用专业的工具进行检测。防范DDoS攻击是一个系统工程,必须对系统进行全面的安全检查,仅仅依靠某种系统或产品防范全部的DDoS攻击是不现实的。尽管完全杜绝DDoS攻击无法做到,但通过安装网络安全设备,并采取相应的安全措施,可以抵御90%以上的DDoS攻击。防范DDoS攻击的措施很多,前面介绍的防范僵尸网络攻击的措施大部分也适用于防范DDoS攻击。此外,还应采取以下措施: (1) 采用高性能的网络设备。要保证网络设备不能成为性能瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好、性能优异的产品,这样可以在一定程度上提高抗攻击的程度。(2) 安装专业抗DDoS攻击的防火墙。专业抗DDoS攻击的防火墙采用内核提前过滤技术、反向探测技术、指纹识别技术等多项技术来发现和提前过滤DDoS非法数据包,可以智能抵御DoS攻击。另外,对于防火墙还应进行相应的设置,包括: 禁止对主机的非开放服务的访问,限制同时打开的SYN连接数,限制特定IP地址的访问,启用防火墙的防DDoS攻击的属性,严格限制对外开放的服务器的向外访问等。(3) 对于主机,应进行相应的设置,包括: 关闭不必要的服务,限制同时打开的SYN半连接数目,缩短SYN半连接的超时(time out)时间,及时更新系统补丁等。3.2.3缓冲区溢出攻击及其防范1. 缓冲区溢出攻击概述
缓冲区(buffer)是程序运行时机器内存中的一个连续块(进程分配的一段内存区域),它保存了给定类型的数据。缓冲区溢出(buffer overflow)是指通过向缓冲区写入超出其长度的内容,进而改变进程执行流程,终获得进程特权,甚至控制目标主机。向一个有限空间的缓冲区中植入超长的字符串可能会出现两个结果: 一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃; 另有一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root权限。从上面的缓冲区溢出的概念可以看出,缓冲区溢出就是将一个超过缓冲区长度的字符串植入缓冲区的结果,这是由于程序设计语言的一些漏洞造成的,如C/C 语言中,不对缓冲区、数组及指针进行边界检查,(strcpy()、strcat()、sprintf()、gets()等语句)。例如:void function(char *str) {
char buffer[16]; strcpy(buffer,str); }中strcpy()将直接把str中的内容复制到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。缓冲区溢出通常在动态分配变量时发生。为了不占用太多的内存,一个有动态分配变量的程序在运行时才决定给它们分配多少内存。现在假设,如果一个程序要在动态分配缓冲区放入超长的数据,数据就会溢出。一个缓冲区溢出程序使用这个溢出的数据将汇编语言代码放到机器的内存里,通常是产生root权限的地方,这就会给系统造成极大的威胁。这样看来,缓冲区溢出并不是产生威胁的根本原因,而是当溢出到能够以root权限运行命令的区域,那样攻击者就相应地拥有了目标主机的使用权限。大多造成缓冲区溢出的原因是程序中没有仔细检查用户输入参数而造成的。如果向程序的有限空间的缓冲区中植入过长的字符串,造成缓冲区溢出,从而破坏程序的堆栈,使程序转去执行其他的指令,如果这些指令是放在有Root权限的内存里,那么一旦这些指令得到了运行,入侵者就以Root的权限控制了系统,这也是我们所说的U2R攻击(User to Root Attacks)。例如在UNIX系统中,使用一些精心编写的程序,利用SUID程序(如FDFORMAT)中存在的缓冲区溢出错误就可以取得系统超级用户权限,在UNIX中取得超级用户权限就意味着黑客可以随意控制系统。以缓冲区溢出为攻击类型的安全漏洞是为常见的一种形式,更为严重的是缓冲区漏洞占了远程网络攻击的绝大多数,这种攻击可以使得一个匿名的网上用户获得一台主机的部分和全部的控制权。当用户拥有了管理员权限的时候,将会给主机带来极其严重的安全威胁。缓冲区溢出之所以成为一种常见的攻击手段,其原因在于很容易找到缓冲区溢出漏洞。缓冲区溢出能够成为远程攻击的主要手段,原因在于攻击者利用缓冲区溢出漏洞,植入并且执行攻击代码——含有缓冲区溢出的代码,被植入的代码在一定的权限下运行之后,攻击者就可以获得攻击主机的控制权。一个利用缓冲区溢出而企图破坏或非法进入系统的程序通常由如下几部分组成: (1) 准备一段可以调用一个shell的机器码形成的字符串,称为shellcode。(2) 申请一个缓冲区,并将机器码填入缓冲区的低端。(3) 估算机器码在堆栈中可能的起始位置,并将这个位置写入缓冲区的高端。这个起始的位置也是我们执行这一程序时需要反复调用的一个参数。(4) 将这个缓冲区作为系统一个有缓冲区溢出错误程序的入口参数,并执行这个有错误的程序。在UNIX系统中,使用一类精心编写的程序,利用suid程序中存在的这种错误可以很轻易地取得系统的超级用户的权限。当服务程序在端口提供服务时,缓冲区溢出程序可以轻易地将这个服务关闭,使得系统的服务在一定的时间内瘫痪,严重的可能使系统立刻死机,从而变成一种拒绝服务的攻击。这种错误不仅是程序员的错误,系统本身在实现的时候出现的这种错误更多。#include
#include
#include
#include
int k;
void fun(const char* input)
{char buf[8];strcpy(buf,input);
k=(int)&input-(int)buf;printf(“%s\n”,buf); }
void haha()
{printf(“\nOK!success”);}
int main(int argc,char*argv[])
{printf(“Address of foo=%p\n”,fun);
printf(“Address of haha=%p\n”,haha);
void haha();
int addr[4];char s[]=”FindK”;
fun(s);
int go=(int)&haha;//由于EIP地址是倒着表示的,所以首先把haha()函数的地址
//分离成字节
addr[0]=(go<<24)>>24;addr[1]=(go<<16)>>24;addr[2]=(go<<8)>>24;addr[3]=go>>24;
char ss[]=”aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”;
for(int?j=0;j<4;j ){
ss[k-j-1]=addr[3-j];}
fun(ss);
return 0;
图37缓冲区溢出攻击
这段程序的运行结果如图37所示。其执行过程为: void fun()函数中buf只分配了8B的空间,通过写超出其长度的字符串ss,并传入void fun()函数对buf赋值,使调用fun()函数时的堆栈溢出,覆盖了返回地址,令构造的ss输入部分使覆盖返回地址部分的内容正好指向haha()函数入口,这样程序就不会返回之前的步骤(也就是主函数中调用fun()函数下边的指令),而是进入了haha()函数,同时执行haha()函数中的printf(“\nOK!success”)指令,在屏幕上打印出“OK!success”。如何寻找待构造的ss值?首先通过定义一个全局变量k,它代表传入的ss和buf之间内存地址(彼此相对的地址)的距离,然后在主函数中首先定义一个任意ss(经测试,传入什么ss并不影响ss和buf之间的距离),调用fun(),这样可以得到在本机上二者地址相差的距离,然后用go记录haha()的代码段地址,这里需要说明一点: 当调用一个函数的时候,首先是参数入栈,然后是返回地址; 并且,这些数据都是倒着表示的,因为返回地址是4个字节,所以实际上返回地址就是: buf[k-1]*256*256*256 buf[k-2]*256*256 buf[k-3]*256 buf[k-4]。 将go拆分成4部分后赋给ss相应位置,得到的ss就是我们所想要的可以令fun()函数执行后直接跳到haha()函数的字符串。 2. 缓冲区溢出攻击的类型缓冲区溢出的目的在于扰乱具有某些特权运行程序的功能,这样就可以让攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机甚至服务器就被控制了。一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的代码来获得root的shell。为了达到这个目的,攻击者必须实现如下两个目标: 在程序的地址空间里安排适当的代码; 通过适当地初始化寄存器和存储器,让程序跳转到安排好的地址空间执行。可以根据这两个目标来对缓冲区溢出攻击进行分类。1) 在程序的地址空间里安排适当的代码(1) 植入法。攻击者向被攻击的程序输入一个字符串,程序会把这个字符串放到缓冲区里。这个字符串所包含的数据是可以在这个被攻击的硬件平台运行的指令流。在这里攻击者用被攻击程序的缓冲区来存放攻击代码,具体方式有以下两种差别: 攻击者不必为达到此目的而溢出任何缓冲区,可以找到足够的空间来放置攻击代码; 缓冲区可设在任何地方: 堆栈(存放自动变量)、堆(动态分配区)和静态数据区(初始化或未初始化的数据)。(2) 利用已经存在的代码的方法。有时候攻击者所要的代码已经存在于被攻击的程序中了,此时攻击者所要做的只是对代码传递一些参数,然后使程序跳转到想要执行的代码那里。比如,攻击代码要求执行“exec(‘bin/sh’)”,而在libc库中的代码执行“exec(arg)”,其中arg是一个指向字符串的指针参数,那么攻击者只要把传入的参数指针改为指向“/bin/sh”,然后跳转到libc库中相应的指令序列即可。2) 控制程序转移到攻击代码的方法所有这些方法的目的都是试图改变程序正常的执行流程,使之跳转到攻击代码。常用的方法就是给没有边界检查的程序缓冲区赋值超过缓冲区长度的字符串,实现缓冲区溢出,从而扰乱程序正常执行顺序。通过溢出一个缓冲区,攻击者可以用穷举法改写相邻的程序空间而直接跳过系统的检查。这里的分类基准是攻击者所寻求的缓冲区溢出的程序空间类型,原则上可以是任意的空间。3) 综合代码植入和流程控制技术简单和常见的缓冲区溢出攻击类型就是在一个字符串里综合了代码植入和激活记录。攻击者定位了一个可供溢出的自动变量,然后向程序传递一个很大的字符串,在引发缓冲区溢出改变激活记录的同时植入了代码(因为C语言程序员通常在习惯上只为用户和参数开辟很小的缓冲区)。代码植入和缓冲区溢出不一定要在一次动作内完成,攻击者可以在一个缓冲区内放置代码(这个时候并不能溢出缓冲区),然后攻击者通过溢出另一个缓冲区来转移程序的指针。这样的方法一般用来解决可供溢出的缓冲区不够大(不能存放全部的代码)的问题。如果攻击者试图使用常驻的代码而不是从外部植入代码,他们通常必须将代码作为参数。3. 缓冲区溢出防范缓冲区溢出攻击的防范是和整个系统的安全性分不开的。如果整个网络系统的安全设计很差,则遭受缓冲区溢出攻击的机会也大大增加。针对缓冲区溢出,我们可以采取多种防范策略。1) 系统管理上的防范策略(1) 关闭不需要的特权程序。由于缓冲区溢出只有在获得更高的特权时才有意义,所以带有特权的UNIX下的suid程序和Windows下由系统管理员启动的服务进程都经常是缓冲区溢出攻击的目标。这时候,关闭一些不必要的特权程序就可以降低被攻击的风险。(2) 安装程序补丁。这是漏洞出现后迅速有效的补救措施。大部分的入侵都是利用一些已被公布的漏洞完成的,如能及时补上这些漏洞,无疑会极大地增强系统抵抗攻击的能力。这两种措施对管理员来说,代价都不是很高,但都能很有效地防止大部分的攻击企图。2) 软件开发过程中的防范策略发生缓冲区溢出的主要原因有: 数组没有边界检查而导致的缓冲区溢出; 函数返回地址或函数指针被改变,使程序流程的改变成为可能; 植入代码被成功地执行等等。所以针对这些要素,从技术上可以采取一定的措施来防范,采取的措施主要有: (1) 编写正确的代码。由于缓冲区溢出主要发生在进行数据复制等一些操作中,所以只要在所有复制数据的地方进行数据长度和有效性的检查,确保目标缓冲区中数据不越界并有效,就可以避免缓冲区溢出,更不可能使程序跳转到恶意代码上。但是诸如C/C 等是一种不进行数据类型和长度检查的一种程序设计语言,而程序员在编写代码时由于开发速度和代码的简洁性,往往忽视了程序的健壮性,从而导致缓冲区溢出,因此必须从程序语言和系统结构方面加强防范。很多不安全程序的出现都是由于调用了一些不安全的库函数,这些库函数往往没有对数组边界进行检查。如函数strcpy(),所以一种简单的方法是进行搜索源程序,找出对这些函数的调用,然后代之以更安全的函数。进一步地查找可以是检查更广范围的不安全操作,如在一个不定循环中对数组的赋值等。(2) 缓冲区不可执行。通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不可能执行被植入攻击程序输入缓冲区的代码,这种技术被称为缓冲区不可执行技术。事实上,很多老的UNIX系统都是这样设计的,但是近来的UNIX和MS Windows系统为实现更好的性能和功能,往往在数据段中动态地放入可执行的代码。为了保持程序的兼容性,不可能使得所有程序的数据段都不可执行。但是可以设定堆栈数据段不可执行,这样就可以限度地保证程序的兼容性。非执行堆栈的保护可以有效地对付把代码植入自动变量缓冲区的溢出攻击,而对于其他形式的攻击则没有效果。通过引用一个驻留的程序的指针,就可以跳过这种保护措施。其他的攻击可以采用把代码植入堆或者静态数据段中来跳过保护。(3) 数组边界检查。可以说缓冲区溢出的根本原因是没有数组边界检查,当数组被溢出的时候,一些关键的数据就有可能被修改,比如函数返回地址、过程指针、函数指针等。同时,攻击代码也可以被植入。因此,对数组进行边界检查,使超长代码不可能植入,这样就完全没有了缓冲区溢出攻击产生的条件。只要数组不能被溢出,溢出攻击就无从谈起。为了实现数组边界检查,则所有的对数组的读写操作都应当被检查,以确保对数组的操作在正确的范围内。直接的方法是检查所有的数组操作,但是会使性能下降很多,通常可以采用一些优化的技术来减少检查的次数。(4) 程序指针完整性检查。程序指针完整性检查是针对上述缓冲区溢出的另一个要素——阻止由于函数返回地址或函数指针的改变而导致的程序执行流程的改变。它的原理是在每次程序指针被引用之前先检测该指针是否已被恶意改动过,如果发现被改动过,程序就拒绝执行。因此,即使一个攻击者成功地改变了程序的指针,由于系统事先检测到了指针的改变,因此这个指针不会被使用。与数组边界检查相比,这种方法不能解决所有的缓冲区溢出问题。但这种方法在性能上有很大的优势,而且兼容性也很好。3.2.4欺骗攻击及其防范网络欺骗从安全学角度上说就是使入侵者相信信息系统存在有价值的、可利用的安全弱点,并具有一些可攻击窃取的资源(当然这些资源是伪造的或不重要的),并将入侵者引向这些错误的资源。它能够显著地增加入侵者的工作量、入侵复杂度以及不确定性,从而使入侵者不知道其进攻是否奏效或成功。而且,它允许防护者跟踪入侵者的行为,在入侵者之前修补系统可能存在的安全漏洞。相对地,欺骗攻击就是利用假冒、伪装后的身份与其他主机进行合法的通信或发送假的报文,使受攻击的主机出现错误,或者是伪造一系列假的网络地址和网络空间顶替真正的网络主机为用户提供网络服务,以此方法获得访问用户的合法信息后加以利用,并转而攻击主机。常见的网络欺骗攻击主要方式有ARP欺骗、DNS欺骗、Web欺骗、电子邮件欺骗等。1. ARP欺骗互联网使用第三层逻辑地址(IP地址)路由,实现网间通信,然后在局域网内使用第二层物理地址(即MAC地址)寻址,实现局域网内通信。因此存在IP地址和MAC地址相互转换的问题。ARP(Address Resolution Protocol,地址解析协议)就是实现IP地址转化成物理地址的协议。ARP协议实现依赖于局域网内每台主机的ARP缓存表,每台主机中都有一张ARP表,它记录着主机的IP地址和MAC地址的对应关系,如表31所示。
表31ARP缓存表
IP地址MAC地址
192.168.1.1010101010101192.168.1.2020202020202192.168.1.3030303030303……如图38所示,以主机D(192.168.1.4)向目标主机C(192.168.1.3)、目标主机B(192.168.1.2)发送数据为例介绍ARP工作原理。
图38ARP工作原理
(1) D发送数据给主机C、B。D首先检查自己的ARP缓存表,查看是否有目标主机的IP地址和MAC地址的对应关系。如果有(主机C: 192.168.1.3),则会将C的MAC地址(030303030303)作为目的MAC地址封装到数据帧中发送; 如果没有(主机B: 192.168.1.2),D会发送一个ARP查询帧(192.168.1.2,FFFFFFFFFFFF),这表示向同一网段的所有主机发出这样的询问: “192.168.1.2的MAC地址是什么?”查询帧请求的目标IP地址是B的IP地址(192.168.1.2),目标MAC地址是MAC地址的广播帧(即FFFFFFFFFFFF),源IP地址和MAC地址是D的IP地址和MAC地址。(2) 当交换机接收到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。(3) 当C、B接收到此数据帧后,会校对IP地址是否是自己的,是则将D的IP地址和MAC地址的对应关系增加到自己的ARP缓存表中,同时会发送一个ARP应答帧,其中包括自己的MAC地址和IP地址的对应关系: (192.168.1.2,020202020202); 否则丢弃此帧,拒绝回复此帧。(4) D在收到应答帧后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。这样以后再向B发送数据时,直接在ARP缓存表中查找就可以了。此时交换机也已经学习到了主机D和主机B的MAC地址了。ARP实现时存在如下缺陷: ARP协议并不只在发送了ARP请求后才接收ARP应答,当主机收到一个ARP应答包时,它不验证自己是否发送过对应ARP请求包,就会对本地的ARP缓存表进行更新,直接用应答包里的MAC地址与IP地址对应的关系更新主机ARP缓存表,构成新的MAC地址与IP地址对应关系。利用这一缺陷, ARP欺骗主机就可通过向ARP被攻击主机(主要是网关)发送伪造的ARP应答包(伪造IP地址或MAC地址)从而截获应发往ARP被攻击主机数据,实现ARP欺骗。ARP欺骗在局域网内广泛传播,欺骗者利用它可进行DoS、MIM攻击、DNS欺骗等多种方式的网络攻击,造成局域网通信中断、敏感数据泄露、数据被窜改、网页劫持等网络安全危害,已成为局域网安全的首要威胁。ARP欺骗分为: 1) 劫持数据包再转发,起到获取用户数据包信息以及分发恶意内容的作用假定主机B是一个攻击者,他把网关C的MAC换成B自己的,那么B就可以截获到主机A与C的通信,也就完成了一次简单的ARP欺骗。进一步攻击者可将这些流量另行转发到真正的目的地址(被动式分组嗅探,passive sniffing),隐蔽自己的嗅探行为或是篡改后再转送(中间人攻击,maninthemiddle attack)。(1) 如图39所示,B向网关C发送伪造的ARP应答(192.168.1.2,030303030303)。网关接收到B伪造的ARP应答后,就会更新网关的ARP缓存表,增加一行(192.168.1.2,030303030303),以后网关收到发往A(192.168.1.2)的数据将会发给B(030303030303),而不是真实的A(020202020202),从而实现ARP欺骗。更加隐蔽的做法是: B再主动将收到的数据包转发给真实的A(020202020202),从而隐藏欺骗行为,实现中间人攻击。
图39ARP欺骗攻击——劫持数据
(2) 如图39所示,B向A发送伪造的ARP应答(192.168.1.1,030303030303)。A接收到B伪造的ARP应答后,就会更新A的ARP缓存表,增加一行(192.168.1.1,030303030303)。由于局域网通信不是根据IP地址进行,而是按照MAC地址进行传输,这样以后A发给网关(192.168.1.1)的数据将会由网关转发给B(030303030303),实现劫持数据,获取A的信息。 2) 劫持数据包至不存在的MAC,起到阻断用户网络通信的作用攻击者发送一系列伪造的ARP应答包(包含错误的内网MAC地址和正确的IP地址对应关系)到网关,并按照一定的频率不断进行,使真实ARP应答包无法通过定时更新保存在网关中,结果网关收到的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。如果伪造的MAC是一个不存在的MAC地址,就会造成网络不通,达到阻断服务攻击的效果。3) 伪造网关它的原理是建立假网关,让被它欺骗的主机向假网关发送数据,而不是通过正常的路由器途径上网。由于假网关通常都不是网关物理设备,而仅仅是一台普通主机,数据转发速度不能满足线速转发要求,所以其他主机就会出现网速极慢或者根本上不了网、时常掉线的状况,严重时更会出现大面积掉线的恶劣后果。综上所述,ARP协议建立在信任局域网内所有节点的基础上,是一种高效但不安全的无状态协议,在实现时存在广播性、无连接性、无序性、无认证和动态性等安全漏洞,这使得ARP欺骗具有合法性、隐蔽性和欺骗性,对其进行入侵检测和防范难度很大,难以彻底解决。加之ARP欺骗技术门槛低,所以对ARP欺骗的防范是一个长期的日常性工作。2. 如何判断已感染了ARP病毒(1) 进行网络流量分析。ARP缓存表采用老化机制,表中的每一项都有生存周期: 每一项2 min未使用则删除,这样可以减少ARP缓存表的长度,加快查询速度; 每一项多存活10 min,每个ARP缓存表需要周期性更新,网络中ARP网络流量呈现自相似性特征,如图310所示。根据图310中的流量曲线计算Hurst指数值为0.87,说明流量具有自相似性。
图310ARP正常网络流量
由于 ARP 缓存表采用老化机制定时进行数据更新,为了保持攻击状态, ARP欺骗主机就需要周期性发送大量伪造的ARP应答包以淹没正常的 ARP应答包,使得主机的ARP 缓存表内保持假的MAC地址与IP地址对应关系,从而达到ARP 欺骗的目的。这将导致 ARP 网络流量表现为强烈的局部突发、网络流量呈现重尾分布的特征,如图311所示。据此可较准确判断网络中是否存在ARP攻击。
图311ARP异常网络流量
(2) 直观观察是否存在以下现象: 网络不稳定——网络突然无法连接,过一段时间后会自动正常; 网络无法连接,但重新启动计算机或通过“开始”|“运行”命令输入cmd,进入DOS窗口,再输入“arp–d”命令后又恢复正常,但一段时间又会无法连接。(3) 检测ARP缓存表中是否有重复的MAC地址。方法是在DOS命令行窗口输入cmd,再输入“arp–a”命令看是否有重复的MAC地址。3. ARP欺骗的防范(1) 不用把计算机的网络安全信任关系单独建立在IP基础上或MAC基础上,理想的关系应该建立在IP MAC基础上。(2) 在客户端使用ARP命令绑定网关的真实MAC地址。(3) 在交换机上设置端口与MAC地址的静态绑定。(4) 在路由器设置IP地址与MAC地址的静态绑定。(5) 管理员定期用响应的IP包中获得一个RARP请求,然后检查ARP响应的真实情况,发现异常立即处理。同时,管理员要定期轮询,经常检查主机上的ARP缓存。(6) 使用防火墙连续监控网络。注意使用SNMP时,ARP的欺骗可能导致陷阱包丢失。3.3网络安全扫描3.3.1网络安全漏洞
网络安全漏洞是指任何会引起网络系统的安全性受到破坏的事物,是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,包括不恰当的操作、配置不当和弱口令等,从而可以使攻击者能够在未授权的情况下访问或破坏系统。任何网络系统都存在漏洞,没有安全。漏洞经常被黑客利用,从而进行网络攻击。漏洞具有如下3个特性: (1) 长久性。漏洞与时间紧密相关。一个系统从发布的天起,随着用户的深入使用,其中存在的漏洞会被不断暴露出来,随之被发现的漏洞也会不断被系统供应商发布的补丁修补,或在以后发布的新版本中得以纠正。随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。例如微软的Windows自发布以来,微软就不断地给系统打补丁、升级。(2) 多样性。漏洞会影响到很大范围的软硬件设备,包括系统本身及其支撑软件、网络客户和服务器软件、网络路由器和安全防火墙等。在不同种类的软硬件设备之间、同种设备的不同版本之间、由不同设备构成的不同系统之间以及同种系统在不同的设置条件下,都会存在各自不同的漏洞问题。(3) 隐蔽性。漏洞是在系统具体使用和实现过程中产生的错误,只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害,只有在某些条件下被人利用时才会影响系统安全。漏洞不是自己出现的,而是被使用者发现的。攻击者往往是系统漏洞的发现者和使用者。从某种意义上讲,是攻击者使网络系统变得越来越安全。这里需要注意漏洞与不同安全级别计算机系统之间的关系。从理论上说,系统的安全级别越高,该系统也越安全。但实际上漏洞是独立于操作系统本身的理论安全级别而存在的。并不是说,系统所属的安全级别越高,该系统中存在的漏洞就越少。而是在安全性较高的系统中,入侵者如果希望进一步获得特权或对系统造成较大的破坏时,必须要克服更大的障碍。1. 漏洞产生的原因如今在Internet上,网络的安全性问题越来越严重。一方面,黑客利用安全漏洞引起的安全事件数量呈上升趋势。“千里堤坝,毁于蚁穴。”黑客一旦找到网络中的薄弱环节,就能轻而易举地闯入系统。所以,了解系统中哪里存在安全隐患,并及时修补漏洞至关重要。通常,“蚁穴”主要表现在软件或协议设计存在缺陷、软件或协议实现的漏洞以及系统或网络配置不当等方面。另一方面,似乎越是大型软件,其后推出的补丁数量也呈上升趋势,其中大部分的补丁是针对漏洞的。漏洞产生的原因,归纳起来有以下几个方面。(1) 早期Internet设计的缺陷。Internet设计的初衷是为了相互交流,实现资源共享。设计者并未充分考虑网络安全需求。Internet的开放性使得其在短期内得到蓬勃发展。也正因如此,攻击者能快速、低成本地对网络进行攻击,而把自己隐藏起来,不被觉察和跟踪。协议是定义网络上计算机会话和通信的规则,如果协议的设计存在漏洞,那么无论使用该协议的应用服务设计得多完美,它仍然是存在漏洞的。如TCP/IP协议的缺陷,TCP/IP协议现在已经广为应用,它早期设计存在的不足造成的安全漏洞在所难免。例如,smurf攻击、IP地址欺骗等。然而,的问题在于IP协议是非常容易轻信的,就是说入侵者可以随意地伪造及修改IP数据包而不被发现。IPSec协议可以用来克服这个不足,现在已得到广泛应用。(2) 软件自身缺陷。即使是协议设计得足够完美,但在实现过程中引入漏洞也是不可避免的。如邮件协议的一个实现中能够让攻击者通过与受害主机的邮件端口建立连接,达到欺骗受害主机执行非法任务的目的,或者使入侵者具有访问受保护文件和执行服务器程序的权限。这样的漏洞往往会导致攻击者不需要访问主机的凭证就能够从远程控制服务器。随着Internet的发展,各种各样新型、复杂的网络服务和软件层出不穷,这些服务和软件在设计、部署和维护上都可能存在各种安全问题。为保证在市场竞争中占得先机,任何设计者都不能保证产品中没有错误,这就造成了软件本身存在的漏洞。同时,商业系统为迎合用户需求的易用性、维护性等要求,大多数情况下,不得不牺牲安全性和可靠性。(3) 系统或网络配置不当。许多系统安装后都有默认的安全配置信息,默认配置往往存在不足。所以管理员要及时更改配置,避免入侵者利用这些配置对服务器进行攻击。如FTP的匿名账号就曾给不少管理员带来麻烦。又如,有时为了测试使用,管理员会在机器上打开一个临时端口,但测试完后却忘记了关闭它,这样就会给入侵者有漏洞可钻。通常的解决策略是: 除非一个端口是必须使用的,否则应该关闭此端口。(4) 网络开源。网络的开源使得攻击者技术不断提高,攻击的教程和工具在网上可以轻易找到。这样就造成攻击事件增多,而且攻击早期不易被网络安全人员发觉。2. 漏洞的分类等级一般来说,漏洞威胁的类型基本上决定了它的严重性,根据漏洞所造成的影响和危害程度可把严重性分成高、中、低3个级别。(1) 低级别漏洞,允许拒绝服务的漏洞。这种攻击几乎总是基于操作系统的,也就是说,这些漏洞存在于操作系统网络本身。存在这种漏洞时,必须通过软件开发者或销售商的弥补予以纠正。(2) 中级别漏洞,允许本地用户非法访问的漏洞。中级漏洞允许本地用户获得增加的和未授权的访问,这种漏洞一般可在多种平台的应用程序中发现,大多数中级别漏洞是由应用程序的缺陷引起的。(3) 高级别漏洞,允许远程用户未经授权访问的漏洞。高级别漏洞是威胁的漏洞。大多数高级别漏洞是由于较差的系统管理或设置有误造成的。例如,远程和本地管理员权限应该对应高级,普通用户权限、权限提升、读取受限文件、远程和本地拒绝服务对应中级,远程非授权文件存取、恢复、欺骗、服务器信息泄露对应低级。3.3.2网络安全扫描定义网络安全扫描是一种基于Internet远程检测目标网络或本地主机安全漏洞的技术。对于系统管理员来说,通过网络安全扫描,能够发现所维护的Web服务器的各种TCP/IP端口的分配、开放的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞; 对于黑客来说,网络安全扫描技术则能够发现攻击目标的脆弱性和漏洞,便于下一步实施攻击。因此,对于网络系统管理员来说,利用网络安全扫描,可以用积极的、非破坏性的办法来检验系统是否有可能被攻击而崩溃。网络安全扫描技术利用了一系列的脚本模拟对系统进行攻击的行为,并对结果进行分析。这种技术通常被用来进行模拟攻击实验和安全审计。网络安全扫描技术通常与防火墙、安全监控系统互相配合,才能为网络提供较高的安全性。网络安全扫描是黑客攻击的第二步。其原理是采取模拟攻击的形式对目标可能存在的已知安全漏洞逐项进行检查,目标可以是工作站、服务器、交换机、路由器和数据库应用等对象,后根据扫描结果向扫描者或管理员提供周密可靠的分析报告。一次完整的网络安全扫描分为3个阶段: (1) 发现目标主机或网络。(2) 发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息。(3) 根据搜集到的信息判断或者进一步测试系统是否存在安全漏洞。扫描通常采用两种策略: (1) 被动式策略,就是基于主机之上,对系统中不合适的设置、脆弱的口令以及其他同安全规则抵触的对象进行检查。(2) 主动式策略,它是基于网络的,通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。被动式扫描不会对系统造成破坏,而主动式扫描对系统进行模拟攻击,可能会对系统造成破坏。利用被动式策略扫描称为系统安全扫描,利用主动式策略扫描称为网络安全扫描。常见的安全扫描检测技术主要包括以下4个方面。(1) 基于应用的检测技术,它采用被动的、非破坏性的办法检查应用软件包的设置,发现安全漏洞。(2) 基于主机的检测技术,它采用被动的、非破坏性的办法对系统进行检测。通过在主机本地的代理程序对系统配置、注册表、系统日志、文件系统或数据库活动进行监视扫描,然后与系统的漏洞库进行比较,如果满足匹配条件,则认为漏洞存在。例如,利用低版本的DNS Bind漏洞,攻击者能够获得root权限,侵入系统,或在远程计算机中执行恶意代码。(3) 基于目标的漏洞检测技术,它采用被动的、非破坏性的办法检查系统属性和文件属性,如数据库、注册号等。(4) 基于网络的检测技术,它采用积极的、非破坏性的办法来检验系统是否有可能被攻击而崩溃。它利用了一系列的脚本模拟对系统进行攻击的行为,然后对结果进行分析。它还针对已知的网络漏洞进行检验。基于网络的检测技术常被用来进行穿透实验和安全审记。这种技术可以发现一系列平台的漏洞,也容易安装。但是,它可能会影响网络的性能。网络漏洞虽多,但并不全是无法阻止的。防火墙技术是被动防御,而网络安全扫描是主动防御。若采用多种扫描技术相结合,增强漏洞识别的准确度,网络安全性就会得到很大的提升。网络安全扫描技术包括有PING扫射(Ping sweep)、操作系统探测(Operating system identification)、访问控制规则探测(firewalking)、端口扫描(Port scan)以及漏洞扫描(vulnerability scan)等。这些技术在网络安全扫描的3个阶段中各有体现。3.3.3端口扫描技术1. 端口的概念
Windows中的端口是指TCP/IP协议中的端口,范围为0~65535。在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的IP地址来进行互联网络中的路由选择,通过端口将数据包发送给进程。本地操作系统会给有需求的进程分配协议端口,每个协议端口由一个正整数标识,如80、139和445等。当目的主机接收到数据包后,将根据报文的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会接收数据并等待下一组数据的到来。端口可以认为是一个队列,操作系统为各个进程分配了不同的队列,数据包按照目的端口被列入相应的队列中,等待被进程调用,在特殊的情况下,这个队列有可能溢出,不过操作系统允许每个进程指定和调整自己队列的大小。不是只有接收数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识出源端口,以便接收方能顺利地回传数据包到这个端口。端口分类有两种分法。1) 按端口号可分为三大类(1) 公认端口(熟知端口): 0~1023,它们专门为一些应用程序提供服务。通常这些端口的通信明确表明了某种服务的协议,例如,80端口实际上总是HTTP通信。(2) 注册端口: 1024~49151,它们随机地为应用程序提供服务,许多服务绑定于这些端口,这些端口同样可以用于其他目的。例如,许多系统处理动态端口从1024左右开始。(3) 动态和/或私有端口: 从49152~65535。从理论上来讲,不需要为服务分配这些端口,实际上,机器通常从1024起分配动态端口。但也有例外: Sun的RPC端口从32768开始。2) 按对应的协议类型端口有两种TCP端口和UDP端口。由于TCP和UDP两个协议是独立的,因此各自的端口号也相互独立,比如TCP有110端口,UDP也可以有110端口,两者并不冲突。 2. 常被黑客利用的端口一些端口常常会被黑客利用,还会被一些木马病毒利用,对计算机系统进行攻击。(1) 端口: 8080; 服务: WWW代理服务; 8080端口同80端口,可以被各种病毒程序所利用,比如Brown Orifice(BrO)特洛伊木马病毒可以利用8080端口完全遥控被感染的计算机。一般我们是使用80端口进行网页浏览的,为了避免病毒的攻击,可以关闭该端口。 (2) 端口: 21; 服务: FTP; FTP服务器所开放的端口,用于上传和下载。常见的攻击者用这个端口寻找打开anonymous的FTP服务器的方法。这些服务器带有可读写的目录。木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner利用这个开放的端口进行攻击。 (3) 端口: 22; 服务: SSH; 说明: PcAnywhere建立的TCP和这一端口的连接是为了寻找SSH。这一服务有许多弱点,如果配置成特定的模式,那么许多使用RSAREF库的版本会有不少的漏洞存在。 (4) 端口: 23; 服务: Telnet; 远程登录,入侵者可以搜索远程登录UNIX的服务。大多数情况下扫描这一端口是为了找到机器运行的操作系统。还有使用其他技术,入侵者也会找到密码。木马Tiny Telnet Server就使用这个端口。 (5) 端口: 25; 服务: SMTP; SMTP服务器所开放的端口,用于发送邮件。入侵者寻找SMTP服务器是为了传递他们的SPAM。入侵者的账户被关闭,他们需要连接到高带宽的EMall服务器上,将简单的信息传递到不同的地址。木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口。(6) 端口: 80; 服务: HTTP; 用于网页浏览。木马Executor开放此端口。 (7) 端口: 119; 服务: Network News Transfer Protocol; NEWS新闻组传输协议,承载USENET通信。这个端口的连接通常是人们在寻找USENET服务器。多数ISP限制该服务,只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送SPAM。 (8) 端口: 137、138、139; 服务: NETBIOS Name Service; 137、138是UDP端口,当通过网络邻居传输文件时用这个端口。而通过139端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows文件、打印机共享和SAMBA。另外也用于WINS Regisrtation。 (9) 端口: 161; 服务: SNMP; SNMP允许远程管理设备。所有配置和运行的信息都储存在数据库中,通过SNMP可获得这些信息。许多管理员的错误配置将被暴露在Internet中。黑客将会尝试使用默认的密码public、private访问系统。他们可能会尝试所有可能的组合。SNMP包可能会被错误地指向用户的网络。查看端口的方法有两种: 一种是利用操作系统内置的命令,另一种是使用端口扫描软件。使用“netstat an”操作系统内置命令是查看自己所开放端口的方便的方法,可以在cmd中输入这个命令。使用该命令后结果如下所示:
C:\Documents and Settings\Administrator>netstat -an
Active Connections
ProtoLocal AddressForeign AddressState
TCP0.0.0.0:61950.0.0.0:0LISTENING
TCP127.0.0.1:10320.0.0.0:0LISTENING
TCP219.246.5.206:1390.0.0.0:0LISTENING
TCP219.246.5.206:445219.246.5.94:7101ESTABLISHED
UDP0.0.0.0:161 *:*
UDP0.0.0.0:445*:*
…3. 端口扫描所谓端口扫描,就是利用Socket编程与目标主机的某些端口建立TCP连接、进行传输协议的验证等,从而获知目标主机的被扫端口是否是处于激活状态、主机提供了哪些服务、提供的服务中是否含有某些缺陷等等。TCP/IP协议中的端口,是网络通信进程的一种标识符。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。端口扫描的方法是: 向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。端口扫描主要有全连接扫描、半连接扫描、SYN扫描、间接扫描和隐蔽(秘密)扫描等。(1) 全连接扫描。这种方法简单,直接连到目标端口并完成一个完整的3次握手过程(SYN、SYN/ACK和ACK)。操作系统提供的connect()函数完成系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()函数就能成功; 否则,这个端口是不能用的,即没有提供服务。这个技术的一个的优点是不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处是速度较快。如果对每个目标端口以线性的方式使用单独的connect()函数调用,那么将会花费相当长的时间; 为了加快速度,可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许你设置一个低的时间周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且很容易被过滤掉。目标计算机的日志文件会显示一连串的连接和连接出错的服务消息,目标计算机用户发现后就能很快关闭它。(2) 半连接扫描。这种扫描是指在源主机和目的主机的3次握手连接过程中,只完成前两次,不建立一次完整的连接。这种方法向目标端口发送一个SYN分组(packet),如果目标端口返回SYN/ACK标志,那么可以肯定该端口处于检听状态; 否则,返回的是RST/ACK标志。这种方法比种更具隐蔽性,可能不会在目标系统中留下扫描痕迹。但这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。(3) SYN扫描。SYN扫描首先向目标主机发送连接请求,当目标主机返回响应后,立即切断连接过程,并查看响应情况。如果目标主机返回ACK信息,则表示目标主机的该端口开放; 如果目标主机返回RESET信息,则表明该端口没有开放。(4) ID头信息扫描。这种扫描方法需要用一台第三方机器配合扫描,并且这台机器的网络通信量非常少,即dumb主机。首先由源主机A向dump主机B发送连接的Ping包,并且查看主机B返回的数据包的ID头信息。一般而言,每个按顺序返回的数据包的ID头的值会按顺序增加1,然后由源主机A假冒主机B的地址向C的任意端口发送SYN数据包。这时,主机C向主机B发送的数据包有两种可能的结果: SYN/ACK,表示该端口处于监听状态; RST/ACK,表示该端口处于非监听状态。那么,由后续Ping数据包的响应信息的ID头信息,可以看出,如果主机C的某个端口是开放的,则主机B返回A的数据包中,ID头的值不是以1递增的,而是大于1的值。如果主机C的某个端口是非开放的,则主机B会返回A的数据包,ID头的值递增1,非常规律。(5) 隐蔽扫描。隐蔽扫描是指能够成功地绕过IDS、防火墙和监视系统等安全机制,取得目标主机端口信息的一种扫描方式。(6) SYN/ACK扫描。SYN/ACK扫描是指由源主机向目标主机的某个端口直接发送SYN/ACK数据包,而不是先发送SYN信息包。由于这种方法不发送SYN包,目标主机会认为这是一次错误的连接,从而会报错。如果目标主机的该端口没有开放,则会返回RST信息; 如果该端口处于开放状态,则不会返回任何信息,而直接将这个数据包抛弃。(7) FIN扫描。这种扫描方式不依赖于TCP的3次握手过程,而是TCP连接的FIN(结束)位标志。原理在于TCP连接结束时,会向TCP端口发送一个设置了FIN位的连接终止数据报,关闭的端口会回答一个设置了RST的连接复位数据报; 而开放的端口则会对这种可疑的数据报不加理睬,将它丢弃。可以根据是否收到RST数据报来判断对方的端口是否开放。此扫描方式的优点比前几种都要隐秘,不容易被发现。该方案有两个缺点: 首先,要判断对方端口是否开放必须等待超时,增加了探测时间,而且容易得出错误的结论; 其次,一些系统并没有遵循规定,典型的就是Microsoft公司所开发的操作系统。这些系统一旦收到这样的数据报,无论端口是否开放都会回答一个RST连接复位数据报,这样一来,这种扫描方案对于这类操作系统就是无效的。(8) ACK扫描。ACK扫描是指首先由主机A向目标主机B发送FIN数据包,然后查看反馈数据包的TTL值和WIN值。开放端口所返回的数据包的TTL值一般不小于64,而关闭端口的返回值一般大于64。开放端口所返回数据包的WIN值一般大于0,而关闭端口返回的值一般等于0。(9) NULL扫描。NULL扫描是指将源主机发送的数据包中的ACK、FIN、RST、SYN、URG、PSH等标置位都置空。如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回RST信息,则端口是关闭的。(10) XMAS扫描。XMAS扫描的原理与NULL扫描相同,只是将主机发送的数据包中的ACK、FIN、RST、SYN、URG、PSH等标置位都置1。如果目标主机没有返回任何信息,则表明该端口是开放的。对于所有关闭的端口,目标系统应该返回RST标志。端口扫描是攻击者的技术,通过扫描可以掌握攻击目标的开放服务,根据扫描所获得的信息,为下一步攻击做好准备。nmap是一个经典的端口扫描器,能实现上述多种扫描技术和方法。需要强调的是,网络安全扫描工具是把双刃剑,黑客利用它入侵系统,而系统管理员掌握它以后又可以有效地防范黑客入侵。4. 端口扫描攻击技术的防范对于端口扫描攻击的防范,仍然是通过监听端口的状态进行的。首先,可以关闭闲置和有潜在危险的端口。在Windows NT核心系统(Windows 2000/XP/2003)中要关闭掉一些闲置端口是比较方便的,可以采用“定向关闭指定服务的端口”和“只开放允许端口的方式”。计算机的一些网络服务会有系统分配默认的端口,将一些闲置的服务关闭掉,其对应的端口也会被关闭了。操作方法为: 进入“控制面板”|“管理工具”|“服务”项内,关闭掉计算机的一些没有使用的服务(如FTP服务、DNS服务、IIS Admin服务等等),它们对应的端口也被停用了。至于“只开放允许端口的方式”,可以利用系统的“TCP/IP筛选”功能实现,设置的时候,“只允许”系统的一些基本网络通信需要的端口即可。其次,可以定期检查各端口,如发现有端口扫描的症状时,则应立即屏蔽该端口。当然,如果靠人工进行检查,效率非常低,因此一般要采用相应的工具或者设备,而防火墙就是有效的设备之一。防火墙对扫描类攻击的判断依据是: 设置一个时间阈值(时间,微秒级),若在规定的时间间隔内某种数据包的数量超过了某个设定值,即认定为进行了一次扫描,那么将在接下来的一个特定时间内拒绝来自同一源的这种扫描数据包。3.3.4网络安全扫描防范防止黑客恶意攻击的步是防范网络安全扫描。而网络中96%的扫描集中在端口扫描。所以,采取适当措施来防范端口扫描是防范网络安全扫描的重点。下面以Windows为例,介绍一下端口扫描的几种防范措施。(1) 禁用不必要的端口。一般来说,仅打开需要使用的端口会比较安全,但关闭端口意味着减少功能,所以需要在安全和功能上面做一些平衡。一些系统必要的通信端口,如访问网页需要HTTP(80端口)不能被关闭。(2) 禁用不必要的协议。在配置系统协议时,不需要的协议统统删除。对于服务器和主机来说,一般只安装TCP/IP协议就够了。方法是: 右击“网上邻居”,选择“属性”,然后右击“本地连接”,选择“属性”,卸载不必要的协议。对于协议和端口的限制,也可采用以下方法: “网络邻居”|“属性”|“本地连接”|“属性”|“Internet协议TCP/IP”|“属性”|“高级”|“选项”|“TCP/IP筛选”|“属性”,选中“启用TCP/IP筛选(所有适配器)”,只允许需要的TCP、UDP端口和协议即可。如图312所示。(3) 禁用NetBIOS。NetBIOS是很多安全缺陷的源泉,对于不需要提供文件和打印共享的主机,还可以将绑定在TCP/IP协议的NetBIOS关闭,避免针对NetBIOS的攻击。方法是: 右击“网上邻居”,依次选择“属性”|“TCP/IP协议”|“属性”|“高级”,进入“高级TCP/IP设置”对话框,选择WINS标签,选中“禁用TCP/IP上的NetBIOS”一项,关闭NetBIOS。如图313所示。(4) 禁用不必要的服务。服务开的多可以给管理带来方便,但开的太多也存在很多风险,特别是对于那些管理员都不用的服务,好关掉,免得给系统带来灾难。以TCP/IP NetBIOS Helper(不需文件和打印共享的用户可禁用)为例,禁用TCP/IP 上的NetBIOS 服务。首先,进入“控制面板”的“管理工具”界面,运行“服务”,进入服务界面,双击右侧列表中需要禁用的服务,在打开的服务属性的“常规”选项卡的“启动类型”一栏,选择“已禁用”,后确定即可。
图312限制协议和端口
图313禁用NetBIOS
禁用其他不必要的服务方法类似,禁用之后不仅能保证Windows系统的安全性,还可以提高其运行速度,可谓一举两得。
3.4网 络 监 听3.4.1网络监听的定义
网络监听(Network Listening)也称网络嗅探(Network Sniffing)。网络监听的目的是截获通信的内容,监听的手段是对协议进行分析。网络监听可以在网上的任何一个位置实施,如局域网中的一台主机、网关上或远程网的调制解调器之间等,但监听效果好的地方是在网关、路由器、防火墙等设备处,通常由网络管理员来操作。网络监听原理: 我们通常所说的Packet Sniffer是指一种插入到计算机网络中的“偷听”网络通信的设备,就像是电话监控能听到其他人通过电话的交谈一样。与电话线路不同,计算机网络是共享通信通道的。共享意味着计算机能够接收到发送给其他计算机的信息。捕获在网络中传输的数据信息就称为Sniffing(嗅探)。传统的局域网使用共享传输介质,使用广播方式工作,在报头中包含目标机的正确地址,所以只有与数据包中目标地址一致的那台主机才会接收数据包,其他的机器都会将包丢弃。但是,当主机工作在监听(又称混杂)模式下时,无论接收到的数据包中目标地址是什么,主机都将其接收下来,然后对数据包进行分析从而得到局域网中通信的数据。由于在一个普通的网络环境中,账号和口令信息以明文方式在以太网中传输,一旦入侵者获得其中一台主机的root权限,并将其置于监听模式以窃听网络数据,便有可能入侵网络中的所有计算机。注意,一台计算机可以监听同一网段所有的数据包,但不能监听不同网段的计算机传输的信息。在网络中通信时,若利用工具,将网络接口设置在监听模式,便可将网络中正在传播的信息截获,从而进行攻击。网络监听技术的初衷是提供给网络安全管理人员进行管理的工具,可以用来监视网络的状态、数据流动情况以及网络上传输的信息等。现在网络监听技术作为一种工具,总是扮演着正反两方面的角色,尤其在局域网中,这种表现更为突出。对于入侵者来说,通过网络监听可以很容易地获得用户的关键信息。当信息以明文的形式在网络上传输时,只要将网络接口设置成监听模式,便可以源源不断地将网上传输的信息截获。而对于入侵检测和追踪者来说,网络监听技术又能够在与入侵者的斗争中发挥重要的作用,因此他们也常常采取网络监听技术来防范黑客的非法入侵。网络监听可能造成的危害包括以下4个方面。(1) 能够捕获口令。(2) 能够捕获专用的或者机密的信息。(3) 可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限。(4) 分析网络结构,进行网络渗透。在Windows下,比较常用的抓包工具有Sniffer Pro、 Wireshark(前身Ethereal)、 Omnipeek(以前的Etherpeek)、WinDump、Analyzer等。网络嗅探软件种类很多,主要是依靠一些特性来区分的。例如,一些网络嗅探软件只支持以太网适配器或无线适配器,而有些却支持多种类型的适配器,并且允许用户定制; 还有,尽管许多网络嗅探软件可以解码相同的网络协议,但是,其中的某些嗅探软件有可能比其他的嗅探软件更适合你的网络结构。所以要结合自己的需要和对网络嗅探软件功能的了解,终选择使用哪一款网络嗅探软件。3.4.2网络协议分析器工作原理网络分析(Network analysis)是指通过捕捉网络流动的数据包,查看包内部数据,进而发现网络中出现的各种问题的过程。1. 捕获数据包的基础网络分析系统首先依赖于一套捕捉网络数据包的函数库。这套函数库工作在网络分析系统模块的底层。其作用是从网卡取得数据包或者根据过滤规则取出数据包的子集,再转交给上层分析模块。从协议上说,这套函数库将一个数据包从链路层接收,至少将其还原至传输层以上,以供上层分析。在Linux系统中,Libpcap是一个基于BPF的开放源码的抓包函数库。现有的大部分Linux抓包工具都是基于这套函数库或者是在其基础上做一些有针对性的改进。同样在Windows系统中,有这样一个基本函数库——Winpcap,在Windows运行的抓包工具都以它为基础,完成捕获数据包、解码,并显示网络流量的功能。2. 包捕获机制从广义的角度看,一个包捕获机制包含3个主要部分: 底层是针对特定操作系统的包捕获机制,层是针对用户程序的接口,第三部分是包过滤机制。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、IP层、传输层,后到达应用程序。而包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等相关处理,后直接传递到应用程序。值得注意的是,包捕获机制并不影响操作系统对数据包的网络处理。对用户程序而言,包捕获机制提供了一个统一的接口,使用户程序只需要简单地调用若干函数,就能获得所期望的数据包。这样一来,针对特定操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。包过滤机制是对所捕获到的数据包根据用户的要求进行筛选,终只把满足过滤条件的数据包传递给用户程序。3. 网络分析软件的原理首先了解一下网卡的工作方式。在以太网络中,所有通信都是以广播方式工作的,同一个网段内的所有网络接口都可以访问在物理媒体上传输的所有数据,而每一个网络接口都有一个的硬件地址,即MAC地址。在正常的情况下,一个网络接口只可能响应以下两种数据帧: 与自己MAC地址相匹配的数据帧和发向所有机器的广播数据帧。但在实际的系统中,数据的收发一般都是由网卡完成的,而网卡的工作模式有以下4种。(1) 广播: 这种模式下的网卡能接收发给自己的数据帧和网络中的广播数据帧; (2) 组播(默认): 这种模式下的网卡只能够接收组播数据帧; (3) 直接: 这种模式下的网卡只能接收发给自己的数据帧; (4) 混杂: 这种模式下的网卡能接收通过网络设备上的所有数据帧。虽然网卡在默认情况下仅能接收发给自己的数据和网络中的广播数据,但我们可以强制将网卡置于混杂模式工作,那么此时该网卡便会接收所有通过网络设备的数据,而不管该数据的目的地是哪里。嗅探技术: 通过将网卡的工作模式置为混杂模式,并接收通过网卡的所有数据包,从而达到嗅探(监听)的目的,这种技术就是嗅探(监听)技术。结合以上描述的工作原理,网络分析软件就是遵循以太网工作模式,它基于以太网嗅探技术,以旁路接入的方式进行工作。系统首先将本地机器上的网卡置为混杂模式,使其通过嗅探技术捕获网络中传输的所有数据包,然后将这些数据包传递到系统内部进行分析,再将分析结果以文本、图表等不同的方式实时显示在界面中。4. 常用网络监听工具Sniffer ProSniffer Pro是NAI公司推出的功能强大的协议分析软件,具有捕获网络流量进行详细分析、实时监控网络活动、利用专家分析系统诊断问题、收集网络利用率和错误等功能。下面通过捕获FTP数据包为例,说明如何使用Sniffer Pro。(1) 设置监听网卡。Sniffer Pro进行抓包时,会自动检测出PC上使用的网络适配器,只要选择要监听网络的适配器,就可以实现抓取数据包。(2) 设置过滤规则。在默认情况下,Sniffer将捕获其接入碰撞域中流经的所有数据包,但为了快速确定网络问题的位置,有必要对所要捕获的数据包作过滤。Sniffer提供了捕获数据包前的过滤规则的定义,过滤规则包括2、3层地址的定义和几百种协议的定义。在捕获流量时,使用者可以根据自己的需要在不同时间设置过滤器。一种是在抓包之前,先定义一个过滤器,只捕获与你正在分析的问题有关的数据包; 一种是先让Sniffer Pro捕获可以看到的所有数据包,然后用过滤器选择你感兴趣的部分。
种方式的操作方法: 在主界面依次选择File|Select Settings,选择对应的网卡,界面如图314所示; 在主界面依次选择Capture|Define Filter,
图314选择监听的网卡
出现如图315所示窗口,可在其中进行相关设置。在此窗口有5个选项卡,可分别对过滤规则中相关的“地址”“协议”“缓存”文件进行设置。在捕获FTP数据包时,FTP服务器的地址是219.246.5.126,使用协议是TCP中的FTP,捕获到的数据包缓存的位置和缓存区的大小依据情况进行设置。
图315设置数据包分析文件保存的位置
首先可选定数据包分析文件保存的位置,并将其命名为FTP,具体方法是: 在Sniffer运行界面中,先单击菜单栏中的Profile|New新建文件,并输入文件名字,单击OK按钮就可完成。当然,也可以直接使用Default的默认设置。下一步,在打开的Define Filter窗口中,选择Address选项卡,在这里可进行常用的过滤规则定义,其中包括MAC地址、IP地址和IPX地址的定义,如图316所示。
图316设置依据IP地址的过滤规则
在打开的Define Filter窗口中,选择Advanced选项卡,在这里可以定义希望捕获何种协议的数据包; 选择Buffer选项卡,在此界面可定义捕获到的数据包存放地方以及缓冲区的大小。(3) 应用过滤规则,开始抓包。在Sniffer运行界面中,单击菜单栏上的Capture|Select Filter,在出现的窗口中选择刚刚设置好的过滤规则。然后通过单击Capture|Start或者单击工具栏上的三角箭头,表示开始抓包。当要停止捕获时,同样可以有两种方式,单击工具栏上的停止按钮,也可以选择Capture中的相应选项。抓包结果如图317所示。
图317抓包结果
(4) 协议分析。在停止抓包的时候,出现如图317所示的界面后,单击Decode后,出现捕获到的数据包。因为FTP协议工作的过程需要传输层TCP协议的支持,所以首先要通过TCP的3次握手建立连接,才可以进行数据交换。如图318所示的信息,清楚地表示了FTP连接建立的过程。
图318协议分析
个数据包: 源端1619向目的端的21(FTP默认端口)端口发送数据,标志位为SYN表示同步,SEQ=369724012表示IP为219.246.5.110的主机随机选择的一个数据包序号。第二个数据包: 源端21向目的端的1619号端口发送回执号为369724013来发送回执对话,这个序号比上个数据包的SEQ号大1,同时服务器端自己产生一个随机选择的序号814426062来识别这次会话。第三个数据包: 3次握手的后一个帧。工作站会发送一个回执数据包(ACK=814426063),确认收到来自服务器上的帧。这样就成功建立了会话。两者可以互通信息。3.4.3网络监听防范网络监听很难被发现,因为运行网络监听的主机只是被动地接收在局域网上传输的信息,不会主动与其他主机交换信息,也没有修改在网上传输的数据包。攻击者会出卖利用网络监听工具得到的某些重要信息,或者根据监听到的信息来决定下一步采取什么样的行动。这样,就会使企业或用户蒙受巨大的损失。所以,网络监听的检测与防范在网络安全中也是不可忽视的。1. 检测网络监听的方法检测单独一台主机是否正在被监听,相对来说是比较简单的。可以通过查看系统进程,或者通过检查网络接口卡的工作模式是否为混杂模式来决定是否已经被监听。而对于整个网络来说,检测就要复杂得多。下面介绍几种检测网络监听的方法。(1) 对于怀疑运行监听程序的机器,用正确的IP地址和错误的物理地址进行ping操作,运行监听程序的机器通常会有响应。这是因为正常的机器不接收错误的物理地址,而处于监听状态的机器能够接收。(2) 向网上发送大量的不存在的物理地址的包,由于监听程序要分析和处理大量的数据包,所以会占用很多的CPU资源,这将导致性能下降。通过比较该机器前后的性能加以判断。但这种方法操作难度比较大,判断也较为困难。 (3) 可以使用反监听工具如antisniffer等进行检测。(4) 检查网络接口卡是否为混杂模式(PROMISC)。要想监听整个网络中报文,需将网卡工作方式设为混杂模式。检查网卡是否工作在混杂模式的方法如下: 在Linux系统中,以根用户root权限进入字符终端,在提示符下输入“ifconfig–a”,可显示系统中所有接口卡的详细信息。检查每一个接口所显示的信息,当发现某一个接口信息中出现了PROMISC标志,就说明这个接口卡已经工作在混杂模式下了。在Windows系统下检查网卡的工作模式,需使用第三方软件来检测网卡的工作模式。如PromiScan软件。但有些监听器会将表示网卡混杂模式的字符PROMISC隐藏起来,以躲避上述这种检测方式。这样,就必须使用其他方法来检测网络中是否有网络监听器在运行了。(5) 监视DNS Reverse Lookup。一些监听器在收到一个网络请求时,就会执行DNS反向查询(即IP地址到域名的查询),试着将IP地址解释为主机名。因此,若在网络中执行一个Ping扫描或者Ping一个不存在的IP地址,就会触发这种活动。如果得到回答,就说明网络中安装有网络监听器; 如果没有收到任何回答,表明没有监听器在运行。(6) 发送一个带有网络中不存在的MAC地址的广播包到网络中的所有主机。正常情况下,网络中的主机接口卡在收到带有不存在的MAC地址的数据包时,会将它丢弃,而当某台主机中的网络接口卡处于混杂模式时,它就会回答一个带有RST标志的包。这样,就可以认为网络中已经有监听器在运行。注意,在交换网络环境当中,由于交换机在转发广播包时不需要MAC地址,所以也有可能做出与上述相同的响应,应根据实际情况来决定。(7) 监控网络中各种交换机和路由器的运行情况,来及时发现这些网络设备出现的某种不正常的现象。比如有些本来关闭了的端口又被启用,而某些端口连接的主机在运行却没有流量时,就要重新登录交换机或路由器,仔细查看它现在的系统设置和端口设置情况,并和之前的记录对比,以此来发现交换机或路由器是否已经被入侵。(8) 监视网络中的主机,经常查看主机中的硬盘空间是否增长过快,CPU资源是否消耗过多,系统响应速度是否变慢,以及系统是否经常莫名其妙地断网等。2. 网络监听的防范措施(1) 从逻辑或物理上对网络分段。网络分段通常被认为是控制网络广播风暴的一种基本手段,但其实也是保证网络安全的一项措施。其目的是将非法用户与敏感的网络资源相互隔离,从而防止可能的非法监听。(2) 以交换式集线器代替共享式集线器。对局域网的中心交换机进行网络分段后,局域网监听的危险仍然存在。这是因为网络终端用户的接入往往是通过分支集线器而不是中心交换机,而使用广泛的分支集线器通常是共享式集线器。这样,当用户与主机进行数据通信时,两台机器之间的数据包(称为单播包,Unicast Packet)还是会被同一台集线器上的其他用户所监听。因此,应该以交换式集线器代替共享式集线器,使单播包仅在两个节点之间传送,从而防止非法监听。当然,交换式集线器只能控制单播包而无法控制广播包(Broadcast Packet)和多播包(Multicast Packet)。(3) 使用加密技术。数据经过加密后,通过监听仍然可以得到传送的信息,但显示的是乱码。使用加密技术的缺点是影响数据传输速度以及使用一个弱加密术比较容易被攻破。系统管理员和用户需要在网络速度和安全性上进行折中选择。由于网络监听属于被动地窃取,通过数据加密技术,是好的防范监听的手段。(4) 划分VLAN。运用VLAN(虚拟局域网)技术,将以太网通信变为点到点通信,可以防止大部分基于网络监听的入侵。习题33.1网络攻击概述1. 网络攻击是()。2. 网络系统的防御技术主要包括哪几种技术?3. 攻击类型分为()、()、()、()、()。4. 信息收集型攻击主要包括哪些?5. 简述网络攻击的8个步骤。3.2常见网络攻防方法1. 什么是口令入侵方法?对它的主要防范方法有哪些?2. 简述网络安全扫描技术的基本原理。3. 简述拒绝服务DoS攻击的基本原理以及防范方法。4. 简述DDoS攻击的基本原理。5. 什么是缓存区溢出攻击?6. 简述欺骗攻击及其他的防范方法。3.3网络安全扫描1. 漏洞的3个主要特性为()、()、()。2. 漏洞产生的原因主要有哪些?3. 漏洞主要分为哪几类?它有哪些等级?4. Windows系统常见漏洞有哪些?5. 常见的安全扫描检测技术主要有哪些?6. 端口扫描的防范措施主要有哪些?3.4网络监听1. 网络监听可能造成的危害包括()、()、()、()。2. 简述网络监听的原理。3. 检测网络监听的方法有哪些?4. 简述网监听的主要防范措施。实验3Zenamp网络安全扫描【实验目的】
了解网络安全扫描目的,理解网络安全扫描原理,掌握网络安全扫描工具Zenamp的使用方法,学会分析扫描结果。【实验内容和要求】(1) 安装Zenamp软件。Zenamp(端口扫描器)是一个开放源代码的网络探测和安全审核的工具。它是Namp安全扫描工具的图形界面前端,它可以支持跨平台。使用Zenamp工具可以快速地扫描大型网络或单个主机的信息。其基本功能有3个: 一是探测一组主机是否在线; 二是扫描主机端口,嗅探所提供的网络服务; 三是推断主机所用的操作系统。从Nmap的官网下载Nmap 7.5,安装完成后就可使用Zenamp。(2) 局域网主机发现。列表扫描命令:
Zenamp局域网地址
扫描结果如图319所示。进一步选择图319的“拓扑”选项卡可直观表示网络拓扑结构为图320。图320表明: 实验局域网中有10台运行的主机,IP地址对应的圆的大小表示主机打开的端口数,圆面积越大表示该主机打开的端口数越多。网络攻防的重点是打开端口数多的主机,如图中的129.9.1.105、129.9.1.102主机。
图319扫描结果——Nmap输出
图320扫描结果——拓扑
(3) 扫描目标主机端口。扫描目标主机端口命令: namp-r 目标主机IP地址或名称
结果截图:开放端口:结果分析:(4) 服务和版本检测。目标主机服务和版本检测命令:namp-sV 目标主机IP地址或名称
结果截图:OS版本:结果分析:(5) 操作系统检测目标主机操作系统检测命令:
namp-O 目标主机IP地址或名称
结果截图:结果分析:
评论
还没有评论。