1、第五章 黑客攻击及防御技术,第五章 黑客攻击及防御技术,本章要点 几种常见攻击的攻击原理 常见攻击手段的防御方式,第五章 黑客攻击及防御技术,5.1 拒绝服务攻击,5.2 恶意软件,5.3 邮件攻击,5.4 电子黑饵,5.5 非法入侵者,5.6 缓冲区溢出攻击,本章内容,5.7 实验,5.1 拒绝服务攻击简介,拒绝服务攻击(DoS)是一种破坏性的攻击方式,它主要针对网络上的各种服务器和设备,其特征是使得攻击目标无法正常工作。拒绝服务攻击的类型 带宽消耗型: 耗尽攻击目标的带宽资源 系统资源消耗型:耗尽攻击目标的系统资源 异常导致性:利用软硬件实现上的编程缺陷,来导致攻击目标出现异常,从而拒绝提
2、供正常服务,5.1 拒绝服务攻击实例Smurf,第一步:攻击者发送伪造的数据包到放大网络。数据包的源地址为受害者的IP地址,目的地址为放大网络的广播地址。,第二步:放大网络中所有开启了echo功能的主机会返回一个应答给受害者,这时受害者就会被大量的响应信息所淹没。,5.1 Smurf攻击防御,禁止路由器转发目标地址为广播地址的数据包,关闭主机的echo功能也可以降低放大网络的放大能力,5.1 拒绝服务攻击实例SYN洪水(1),预备知识:TCP的三次握手过程,第一步:客户端发送一个SYN置位的包到服务器,告诉服务器它的初始序列号。,第二步:服务器返回SYN/ACK包作为响应。同时告诉客户端它的初
3、始序列号。,第三步:客户端返回ACK包作为应答,完成三次握手过程。,5.1 拒绝服务攻击实例SYN洪水(2),“SYN洪水攻击”的攻击过程 攻击者向目标主机发送源地址并不存在的SYN报文,或者在收到对方发送的SYN/ACK报文时不返回ACK报文。 目标主机会等待客户端的响应,并在收不到响应包的情况下进行重发,直到超时为止。 在这个等待的过程中,目标主机还会维护之前为该连接分配的资源。因此只要攻击者在短时间内发起大量的连接,就可以耗尽目标主机上的连接资源,使得目标主机无法提供正常的服务。,5.1 SYN洪水攻击防御,通过判断单位时间内收到的SYN连接次数是否超过了系统的预设值,就能够检测出。当接
4、收到大量的SYN数据包时,可通知防火墙阻断连接请求或丢弃这些数据包,以达到防御效果。,5.1 拒绝服务攻击实例LAND,LAND的攻击过程,1. 攻击者发送伪造的SYN数据包给服务器,该数据包的源地址和目的地址都为服务器的IP地址,2. 服务器针对该伪造的SYN数据包返回SYN/ACK包。由于之前伪造的SYN包的源地址为服务器的IP地址,因此服务器会收到自己发送出的SYN/ACK包,3.服务器发现该包的确认号与期待的确认号差别太大时,会将其丢弃,并重发之前的SYN/ACK包,4.该过程会一直循环,导致服务器性能大大降低,5.1 LAND攻击防御,LAND攻击的检测比较容易,只需简单地判断数据包
5、的源地址和目的地址是否相同即可。对于这种攻击,可通过适当配置防火墙设置或修改路由器的过滤规则来防止。,5.1 拒绝服务攻击实例Teardrop,针对早期未对异常分片进行处理的Linux,偏移量=0,长度=N,偏移量=K,长度=M(KN,MN-K ),分片1,分片2,1. 把分片2的偏移量设为N,使其与分片1的末尾对齐,2. 计算分片2的末尾位置:用对齐前的偏移量加上分片2的数据长度,得到K+M,3. 计算待拷贝数据的长度:用分片2的末尾位置减去对齐后第2个分片的偏移量,得到K+M-N,由于MN-K,计算得出的长度将是一个负数。在计算机中,负数是用反码来表示,其结果是向内核拷贝过多的数据,导致系
6、统重启或崩溃,5.1 Teardrop攻击防御,针对teardrop攻击的特点,可对接收到的分片数据包进行分析,通过计算数据包的片偏移量是否有误来对其进行检测。由于teardrop攻击主要利用早期linux内核中的缺陷,因此可通过安装系统补丁来进行防御。另外,还可以通过设置防火墙或路由器的过滤规则来丢弃此类病态的数据包。,5.1 DDos攻击,主从式的DDoS攻击结构,利用反弹服务器的DDoS攻击结构,5.1 拒绝服务攻击防御方式,加固操作系统:限制操作系统上运行的服务、及时部署操作系统与应用程序补丁。 使用防火墙:防火墙位可对特定的数据包进行阻挡。特别地,还可以使用针对DoS攻击的过滤算法,
7、例如 “随机丢弃”和“SYN魔饼” 算法。 配置边界路由器:部分DoS和DDoS攻击利用了ICMP报文,因此可在边界路由器上将ICMP报文过滤掉。 采用负载均衡技术:将关键业务分布到多台服务器上,这样即便其中一台受到攻击,其他服务器仍然可以继续工作,以保证业务的连续性。,5.2 恶意软件简介,恶意软件(malware)是攻击者植入受害者系统的一段恶意代码,它们使得攻击者可以在受害者毫不知情的状况下控制对方的系统、网络以及数据。恶意代码有很多种形式,常见的有:计算机病毒、蠕虫和特洛伊木马。,5.2 恶意软件计算机病毒的定义和特性,病毒的定义 计算机病毒是一段程序,它能够在计算机系统运行过程中,把
8、自己精确地或者有修改地拷贝到其他程序内。 病毒的特性 感染性、潜伏性、可触发性、破坏性,5.2 恶意软件计算机病毒的感染机制(1),感染对象1:引导扇区 这类病毒用其自身的全部或者部分代码代替正常的引导记录,并将正常的引导记录隐藏在磁盘的其他地方。 在染毒系统的引导过程中,由于病毒占据了引导程序的物理位置,因此控制权会从BIOS转交到病毒程序处。待病毒程序执行完毕后,它会将控制权交还给真正的引导区内容,使得这个带病毒的系统看似处于正常运行的状态。 此类病毒的例子有:“大麻”、“幽灵”、“磁盘杀手” ,5.2 恶意软件计算机病毒的感染机制(2),感染对象2:可执行文件 可执行文件是病毒的首要感染
9、对象,既包括普通的应用程序,又包括操作系统中可独立执行的程序或程序模块。 多种感染技术:伴随式感染技术(如notepad)、覆盖式感染技术、插入式感染技术 ,5.2 恶意软件计算机病毒的感染机制(3),感染对象3:数据文件 虽然数据文件本身不能被执行,但是某些应用程序(比如Microsoft Office、AutoCAD等)能够执行嵌入在数据文件中的脚本。病毒的编写者正是利用这种特性,将病毒代码附着在数据文件中。 例如:宏病毒,5.2 恶意软件计算机病毒的传播机制,病毒只能在本机内寻找感染对象。为了将自己传播到其它主机,病毒必须借助于其他介质。 可移动磁盘 电子邮件 下载 共享目录,5.2 恶
10、意软件蠕虫的定义,蠕虫是一段可自我复制的代码,它通过网络进行传播,且不需要人为的干预。一旦蠕虫占领某台计算机,一方面它会像病毒一样在系统内进行破坏活动;另一方面,它会以这台计算机为平台,继续检测网络上未被感染的计算机,然后将自身程序复制到其上。,5.2 恶意软件蠕虫与病毒的区别,5.2 恶意软件特洛伊木马的定义,特洛伊木马指那些表面上看起来有用,但暗地里执行非法操作的程序。一旦主机被植入木马,攻击者就可以随意控制受害者的主机,进行各种非法操作。两个基本特性 隐藏性:木马会想方设法让自己看起来是一个正常的程序,从而躲避操作员和杀毒软件的检查 非授权性:木马会在目标系统上进行各种非法操作,如窃取口
11、令、删除文件、植入病毒等,5.2 恶意软件木马的工作原理(1),阶段一:传播木马 主要通过电子邮件和软件下载进行传播 为了迷惑用户,木马通常会对自己进行伪装,常见的伪装手段有: 修改程序图标。例如,将程序图标修改成bmp、txt等文件的图标。 伪装成正常的应用程序。 与其他程序捆绑在一起。,5.2 恶意软件木马的工作原理(2),阶段二:运行木马 当用户运行木马或捆绑了木马的程序时,木马就会自动进行安装。 在运行过程中,木马程序会想尽一切办法隐藏自己。例如,在任务栏中隐藏自己。,5.2 恶意软件木马的工作原理(3),阶段三:建立连接 木马是C/S结构的程序。一旦服务器端被运行,就会打开事先定义好
12、的端口,等待客户端与其建立连接。 服务器位于局域网? 通过IRC进行通信 服务器所在主机的IP是通过DHCP获得的? 由于服务器在特定端口上侦听,那么客户端可以通过端口扫描来找到服务器端 服务器端通过电子邮件、FTP等方式告诉客户端它的IP地址。,5.2 恶意软件病毒检测技术(),校验和技术 原理:由于病毒需要修改文件,可将文件当前的校验和与初始校验和进行比较,如果不一致,则表示文件可能被病毒修改过。 优点:既能够发现已知病毒,也能够发现未知病毒。 缺点:会产生过多误报,因为正常程序也会修改文件;对隐藏性病毒没有作用;不能检测新的文件。,5.2 恶意软件病毒检测技术(),模式匹配 原理:通过病
13、毒的特征值来查找病毒。例如,1575病毒代码中包含了“06 12 8C C0 02 1F 07 A3”的字符串 ,因此,可通过查看目标程序是否包含了这样的字符串,来判断其是否1575病毒。 优点:可识别出病毒的名称、误报率低。 缺点:随着病毒特征库的扩大,检查速度会降低;不能检测未知病毒和多态性病毒 ;对隐藏性病毒没有作用。,5.2 恶意软件病毒检测技术(),行为扫描 原理:人们通过观察与研究,发现病毒有一些共同行为,并且这些行为在正常的应用程序中比较少见,因此,可通过监测目标程序是否表现出了某种行为来判断其是否病毒。例如引导型病毒必然截留盗用INT 13H、高端内存驻留型病毒会修改DOS系统
14、数据区的内存总量等 。 优点:能够检测出未知病毒。 缺点:会产生过多误报,因为少数正常程序也有类似病毒的行为 ; 不能识别病毒的具体类型。,5.2 恶意软件病毒检测技术(),启发式扫描 原理:依靠病毒的指令序列,而不是病毒模式进行检测。这种类型的反病毒软件,会首先对目标程序进行反汇编,然后对它的指令序列进行分析,找出其中所蕴藏的真正动机。例如,如果一段程序中包含了“MOV AH, 5; MOV BX, 500H; INT 13H”的指令,表示该程序会进行格式化磁盘的操作,需引起注意。若反病毒软件经过进一步分析,发现这段指令之前并没有用户的交互输入,也没有命令行参数传入,则可以认定这是一段病毒或
15、其它恶意代码。 缺点: 如果孤立地看这些指令 ,不能清晰地界定正常程序和病毒; 在查找时,无法识别指令序列的变化。,5.3 邮件攻击,电子邮件作为最常用的网络应用之一,已经成为网络交流的重要工具。但与此同时,也出现了各种电子邮件的滥用行为,包括利用电子邮件实施攻击。常见的电子邮件攻击手段包括:垃圾邮件邮件炸弹邮件欺骗,5.3 邮件攻击垃圾邮件(1),什么是垃圾邮件? 垃圾邮件是指未请求的、对于收件人来说无用的邮件,其内容包括商业广告、电子杂志和骚扰信息等垃圾邮件带来各种负面影响: 拥塞网络、降低邮件服务器的性能 恶意代码泛滥 降低员工的工作效率 造成巨大经济损失,5.3 邮件攻击垃圾邮件(2)
16、,反垃圾邮件技术 黑名单和白名单 位于黑名单中的发件人发送的任何邮件都被认为是垃圾邮件 位于白名单中的发件人发送的任何邮件都被认为是合法邮件 规则过滤 邮件头分析 群发过滤 关键词精确匹配,5.3 邮件攻击邮件炸弹(1),什么是邮件炸弹? 攻击者在短时间内向某个邮箱发送大量的垃圾邮件,最终使得邮箱或者邮箱所在的系统不堪重负,“爆炸而亡” 。邮件炸弹是一种拒绝服务攻击,其攻击目标包括: 单个用户的邮箱 邮件服务器,5.3 邮件攻击邮件炸弹(2),邮件炸弹的三种实现方式 直接攻击邮箱:在短时间内发送大量邮件到受害者邮箱 利用回复邮件攻击邮箱:以受害者的名义发送大邮件给大量用户,这样受害者的邮箱就会
17、被大量愤怒的回复信息所充满 利用邮件列表攻击邮箱:以受害者的名义申请多个邮件列表,这样受害者的邮箱就会被大量合法邮件所充满,5.3 邮件攻击邮件欺骗(1),什么是邮件欺骗? 攻击者通过伪造发件人的姓名和地址,以达到其私人目的,例如隐藏发件人的身份、骗取收件人的信任、损害其他人的名誉等。,5.3 邮件攻击邮件欺骗(2),邮件欺骗的三种实现方式 使用相似的电子邮件地址:攻击者首先针对仿冒对象的电子邮件地址,申请一个相似的电子邮件帐号,然后在用户代理中将“发件人姓名”设成仿冒对象的姓名,以冒充该用户发送电子邮件 修改邮件客户端的帐号配置:在受害者的邮件客户端软件中,将回复地址修改为攻击者能够访问的邮
18、件地址 直接通过邮件服务器发送邮件:直接登陆到邮件服务器的SMTP端口发送邮件。由于SMTP协议没有认证机制,攻击者可随意修改发件人地址,5.3 安全电子邮件,电子邮件安全需求 为解决电子邮件的安全问题,提出了一系列的安全电子邮件协议,如PEM、PGP、S/MIME、MOSS等,通过这些协议和标准,可提供邮件的机密性、完整性和不可抵赖性等,使电子邮件的安全性得到了充分的保障,从而使在因特网上通过电子邮件传送敏感信息成为可能。安全电子邮件的工作模式,5.4 电子黑饵(1),电子黑饵主要利用人们的心理作用进行犯案。其常见形式包括: 欺诈性的电子邮件:通常以各种紧迫的理由要求用户提供敏感信息 仿冒的
19、网站:利用知名企业的品牌效应,建立与仿冒对象几乎一模一样的网站 捆绑了木马程序、间谍软件的网页或邮件:这类网页或邮件一旦被打开,恶意软件就会被自动安装,并以各种方式来窃取用户的帐号和密码,5.4 电子黑饵(2),电子黑饵的防御方式 不要相信那些以各种紧迫理由要求收件人提供个人账户信息的邮件; 不要直接点开邮件、即时消息、或者网络聊天室中的链接,应养成直接在地址栏中输入网址的习惯; 在通过浏览器提交诸如信用卡号之类的敏感信息时,应确保该网站是一个安全站点; 留意地址栏中显示的地址,攻击者有时会通过伪造相似的网址来欺骗用户 ; 安装浏览器工具栏 。,5.5 非法入侵者扫描技术概述,扫描是黑客入侵的
20、第一步,用来收集被攻击主机或网络的详细信息。常见扫描技术包括 Ping扫射:用于确定网络中各主机的存活状态 端口扫描 :用来检测目标主机上开放了哪些端口、提供了哪些服务 漏洞扫描:在端口扫描的基础上,集中探测某一种服务是否存在漏洞。由于不同的服务具有不同的漏洞,没有统一的扫描方式,5.5 非法入侵者Ping扫射,传统Ping扫射 传统Ping扫射使用的是ICMP类分组。包括:“ICMP 回射”请求、“ICMP时间戳”请求以及“ICMP 地址掩码”请求等。 攻击者向目标系统发送ICMP请求,等待片刻后,如果能收到对方返回的ICMP应答,则表示目标系统处于存活状态,反之,表示目标系统处于关闭状态。
21、TCP扫射 当ICMP类分组被阻塞时,攻击者可用TCP ACK或TCP SYN分组来探测目标主机是否处于存活状态。,5.5 非法入侵者端口扫描(1),在获知主机是否存活后,下一步就是确定主机上运行了哪些服务。这是通过端口扫描来实现的。 什么是端口扫描? 通过与目标系统的TCP或UDP端口建立连接,从而判断某个端口是否处于侦听状态。 常见的端口扫描方法 TCP扫描、TCP SYN扫描、显式隐蔽映射技术,5.5 非法入侵者端口扫描(2),TCP扫描流程,攻击者试图与目标主机 上某个端口建立TCP连接,连接建立 成功?,目标端口 处于侦听状态,目标端口 处于关闭状态,是,否,由于主机通常会记录下那些
22、完成了三次握手的连接。因此,如果在查看系统的日志时发现大量的连接记录,则可能有扫描攻击发生。,5.5 非法入侵者端口扫描(3),TCP SYN扫描流程,攻击者发送一个SYN包 到目标主机的某个端口上,对方返回 RST/ACK包?,对方返回 SYN/ACK包?,表明目标端口处于侦听状态, 此时攻击者将发送RST包关闭连接,表明目标端口 处于关闭状态,是,否,是,由于这种扫描没有真正完成TCP的三次握手过程,因此目标系统将不会记录此连接,故此类扫描不易被发现。,5.5 非法入侵者端口扫描(4),显式隐蔽映射技术 扫描原理根据RFC 793规范中的定义:目标系统应该为所有关闭着的端口返回一个RST分
23、组 具体扫描方法TCP ACK扫描、TCP FIN扫描、TCP Xmas树扫描和TCP空扫描,5.5 非法入侵者端口扫描(5),攻击者发送一个SYN/ACK包到目标主机的某个端口上,对方返回 RST包?,没有收到 响应包?,目标端口处于关闭状态,目标端口处于侦听状态,因为在目标端口关闭的情况下,系统会代其返回RST包,因此TCP是有状态的协议,在端口打开的情况下,它会简单忽略此分组,是,是,显式隐蔽映射技术示例TCP ACK扫描,5.5 非法入侵者端口扫描(6),显式隐蔽映射技术的准确性不高: 部分系统包括Windows、HP-UX等会在端口打开的情况下仍然返回RST分组 即便攻击者收不到RS
24、T分组,也不能确定是目标端口是打开的,因为防火墙可能会过滤掉攻击者发送的分组,5.5 非法入侵者身份窃取(1),什么是身份窃取? 身份窃取是入侵者侵入系统的一种方式。入侵者通过某种渠道获得合法用户的账号和密码,然后利用该账户登陆目标主机并实施攻击活动。具体实现方式包括: 口令破解 网络窃听 通过木马窃取,5.5 非法入侵者身份窃取(2),身份窃取手段1:口令破解 入侵者首先获取有效的用户名,然后使用专门的软件来破解用户口令 在尝试破解密码时有两种方法 远程在线猜测:针对目标主机上某种需要验证的服务,不断与其建立连接,并输入可能的口令,直到正确为止。 本地口令猜测 :首先得到加密后的口令;然后采
25、用相同加密方法对可能的口令进行加密,通过比较加密后的字符串是否相同来进行破解。,5.5 非法入侵者身份窃取(3),身份窃取手段2:网络窃听 在当前的网络环境中,很多协议都是以明文的形式在网络中传输用户名和密码。这就给攻击者提供了可乘之机,通过使用嗅探软件截取本地网络中的数据包,从而得到在网络中传输的用户名和密码。,5.5 非法入侵者身份窃取(4),身份窃取手段3:木马窃取 这类木马专门用来窃取受害主机上的帐户信息。它们或者直接访问缓存在内存中的用户名和密码;或者伪装成其他程序,要求用户输入帐户信息。,5.6 缓冲区溢出攻击攻击原理(1),什么是缓冲区溢出? 缓存区是一片有预定长度限制的临时内存
26、区域,当试着向其中写入超出设定大小的数据时,就会发生缓存区溢出。什么是缓存区溢出攻击? 攻击者用超过预定长度的字符串来填满目标程序的堆栈空间,达到暴力修改函数的返回地址的目的,从而部分甚至完全控制对方的计算机系统。,5.6 缓冲区溢出攻击攻击原理(2),内存高端,内存低端,堆栈高端,堆栈低端,传给被调函数的参数,函数返回地址(EIP),调用者的堆栈基址(EBP),局部变量,void foo(char* str) char buffer16;strcpy(buffer, str); void main( ) char* str=”the current string has more 16 ch
27、aracters”;foo(str);return; ,缓存区溢出实例,发生函数调用时,将会用到堆栈,在执行strcpy函数时,由于main传入的参数大于预设长度,局部变量前的内容会被覆盖掉,从本例不难看出,我们可以通过缓冲区溢出来改变函数的返回地址,从而改变整个程序的执行流程,使它跳转到任意我们希望执行的代码处。,5.6 缓冲区溢出攻击防御方式(1),加强编程行为的安全性。尽管不可能设计和编写完全没有缺陷的程序,但是应尽量最小化缓冲区溢出条件。 在软件的设计阶段就考虑安全因素; 避免使用不安全的函数,例如C库函数中的strcpy( ),这类函数不会对输入字符串的长度进行验证; 使用安全的编译
28、器; 验证输入参数; 避免使用suid程序。,5.6 缓冲区溢出攻击防御方式(2),禁止堆栈执行。 由于攻击者通常以输入参数的形式将希望执行的代码传递给程序,而程序会将传入的参数保存在堆栈中。因此,最简单的解决方式是禁止执行堆栈中的代码。 禁止不用或危险的服务 攻击者不能攻击处于关闭状态的服务,因此可把系统中不用或者危险的服务关闭,从而将系统的暴露程度降到最低。,5.7 个人电脑对黑客的防范,对浏览器攻击的防范技术,对电子邮件攻击的防范技术,对OICQ攻击的防范技术,对病毒攻击的防范技术,5.7 实验: DDoS攻击与防御,实验目的,实验内容,实验步骤,实验过程演示,思考题,5.7.1 实验目
29、的,熟悉DDoS攻击的整个过程 了解用于发动DDoS攻击的软件:tfn2k 熟悉遭受DDoS攻击时主机的症状及其应对措施,5.7.2 实验内容,通过利用tfn2k软件,使得主机B在主机A的控制下向主机C发起DDoS攻击。对受害主机C的症状进行分析,目的在于让试验者清楚主机在遭受DDoS攻击的典型症状及其应对措施。,5.7.3 实验步骤,安装tfn2k软件。 测试tfn2k软件是否能够正常工作 。# ./tfn -f slaves -c 10 -i “mkdir /root/mydir” 模拟黑客,利用主机A控制主机B发动攻击#./tfn -f slaves -c 5 -i 192.168.10
30、.106 -p 80 分析受害主机的症状,确定攻击类型,并给出应对策略。,5.7.4 实验过程演示,TFN2000 DDoS攻击演示,5.7.5 思考题,本实验中,我们是利用TCP/SYN FLOOD攻击模式攻击受害主机80端口的www服务器。假如受害主机不是www服务器,又应该怎么做?受害主机又应当怎么防御? 提示:-c参数可以指定攻击模式,除了TCP/SYN还有ICMP/PING等,以及所有攻击的混合模式。就PC机而言,防御可通过安装天网等防火墙,调整相关的设置来保证自身的安全。,本章小结,本章讨论了几种常见的攻击技术,包括拒绝服务攻击、恶意软件、邮件攻击、电子黑饵、非法入侵者和缓冲区溢出攻击。通过了解这些攻击原理及防御技术有助于发现并防范黑客攻击。,