文章目录
- 第 1 章 软件与系统安全概述
- 第 2 章 扫描与防御技术
- 2.1 扫描技术概述
- 2.2 常见的扫描技术
- 2.3 扫描工具
- 2.4 扫描的防御
- 第 3 章 网络监听及防御技术
- 3.1 网络监听概述
- 3.2 监听技术
- 3.3 监听的防御
- 第 4 章 口令破解与防御技术
- 4.1 口令的历史与现状
- 4.2 口令破解方式
- 4.3 典型的口令破解工具
- 4.4 口令攻击的综合应用
- 4.5 口令攻击的防御
- 第 5 章 欺骗攻击及防御技术
- 5.1 概述
- 5.2 IP欺骗及防御技术
- 5.3 ARP欺骗及防御技术
- 5.4 电子邮件欺骗及防御技术
- 5.5 DNS欺骗及防御技术
- 5.6 Web欺骗及防御技术
- 第 6 章 拒绝服务攻击与防御技术
- 6.1 拒绝服务攻击概述
- 6.2 典型拒绝服务攻击技术
- 6.3 分布式拒绝服务攻击
- 6.4 拒绝服务攻击的防御
- 6.5 分布式拒绝服务攻击的防御
- 第 7 章 缓冲区溢出攻击及防御技术
- 7.1 缓冲区溢出概述
- 7.2 缓冲区溢出原理
- 7.3 缓冲区溢出的过程
- 7.4 代码植入技术
- 7.5 实例:ida溢出漏洞攻击
- 7.6 缓冲区溢出的防御
- 第 8 章 Web攻击及防御技术
- 8.1 Web安全概述
- 8.2 Web服务器指纹识别
- 8.3 Web页面盗窃及防御
- 8.4 跨站脚本攻击及防御
- 8.5 SQL注入攻击及防御
- 8.6 Google Hacking
- 8.7 网页验证码
- 8.8 防御Web攻击
第 1 章 软件与系统安全概述
网络安全:指网络信息系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的破坏、更改、泄露,系统能连续、可靠、正常地运行,服务不中断
- 狭义解释:信息处理和传输的安全
- 广义解释:网络系统的硬件、软件及其系统中的信息受到保护
网络安全类型:
- 系统安全:侧重保证信息处理和传输系统的安全
- 网络安全:网络上信息系统的安全。包括用户口令鉴别,用户存取权限控制,数据存取权限、方式控制,安全审计、跟踪,计算机病毒防治,数据加密等。
- 信息传播安全:侧重于防止和控制由非法、有害的信息进行传播所产生的后果。
- 信息内容安全:侧重于保护信息的保密性、真实性和完整性。
网络安全的主体:
- 数据安全性:软硬件保护措施,用来阻止对数据进行非授权的泄露、转移、修改和破坏等
- 通信安全性:通信保护措施,要求在通信中采用保密安全性、传输安全性、辐射安全性等措施
网络攻防的核心:
- 攻击:漏洞利用
- 防御:漏洞修复
信息系统自身的安全脆弱性:操作系统的脆弱性、计算机系统的脆弱性、网络通信协议的脆弱性
信息系统面临的安全威胁:信息泄露、完整性破坏、拒绝服务、未授权访问
威胁信息系统的主要方法:冒充、旁路控制、破坏信息的完整性、破坏系统的可用性、重放、截收和辐射侦测、陷门、特洛伊木马、抵赖
网络攻击分类:
- 按照攻击方式:主动攻击、被动攻击
- 按照攻击位置:远程攻击、本地攻击、伪远程攻击
第 2 章 扫描与防御技术
2.1 扫描技术概述
扫描器:一种自动检测远程或本地主机安全性弱点的程序。既是系统管理员保障系统安全的有效工具,又是网络入侵者收集信息的重要手段。因此它是一把双刃剑。
网络扫描器的主要功能:
- 扫描目标主机识别其工作状态(开/关机)
- 识别目标主机端口的状态(监听/关闭)
- 识别目标主机操作系统的类型和版本
- 识别目标主机服务程序的类型和版本
- 分析目标主机、目标网络的漏洞(脆弱点)
- 生成扫描结果报告
扫描三部曲:
- 第一阶段:发现目标主机或网络(Ping扫描)
- 第二阶段:发现目标后进一步搜集目标信息。包括操作系统、运行的服务及其版本。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息(OS扫描、穿透防火墙扫描、端口扫描)
- 第三阶段:根据收集到的信息判断或者进一步测试系统是否存在安全漏洞(漏洞扫描)
扫描工具或命令:
- 主机探测:ping
- 端口探测:nmap
- 漏洞探测:Nessus
2.2 常见的扫描技术
-
常用网络命令:
-
ping命令
Ping命令通过向计算机发送ICMP回应报文并且监听回应报文的返回,以校验与远程计算机或本地计算机的连接。
-
Traceroute
跟踪两台机器之间的路径,显示中间的每一个节点的信息。这个工具可以用来确定某个主机的位置。
traceroute 命令旨在用于网络测试、评估和管理。它应主要用于手动故障隔离。 -
x-firewalk
可以查看路由信息
-
net use
很多的Windows的网络命令都是net开头的。利用net开头的命令,可以实现很多的网络管理功能。
net use 用于将计算机与共享的资源相连接,或者切断计算机与共享资源的连接,当不带选项使用本命令时,它会列出计算机的连接。
-
-
主动扫描技术
- ICMP Echo扫描
- ICMP Sweep扫描
- Broadcast ICMP扫描
- Non-Echo ICMP扫描
-
端口扫描技术
0-1023:熟知端口,被提供给特定的服务使用
1024-49151:注册端口,由IANA记录和追踪
49152-65535:动态端口或专用端口,提供给专用应用程序-
全扫描
扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。
-
半扫描
TCP Connect端口扫描服务端与客户端未建立连接成功(目标端口关闭)过程
-
秘密扫描
- TCP FIN扫描
关闭的端口会返回一个RST,开放则不回复 - SYN | ACK扫描
关闭的端口会返回一个RST,开放则不回复 - ACK扫描
方法一:若返回的RST数据包的TTL值小于或等于64,则端口开放,反之端口关闭
方法二:若返回的RST数据包的WINDOW值非零,则端口开放,反之端口关闭
- TCP FIN扫描
-
认证扫描
-
FTP代理扫描
扫描端先在本地与一个支持代理的FTP服务器来建立控制连接,然后使用PORT命令向FTP服务器说明欲扫描的目标机器的IP地址和端口号,其中IP地址为代理传输的目的地址,而端口号则为传输时所需的被动端口,并发送LIST命令。这时,FTP服务器会尝试向目标主机指定端口发起数据连接请求。
-
-
远程主机OS指纹识别
-
主动协议栈指纹识别
- FIN探测
- ISN采样探测
- Don’t Fragment位探测
- TCP初始窗口大小探测
- ACK值探测
- ICMP出错信息抑制
- ICMP出错消息回射完整性
- TOS服务类型
- 片断处理
-
被动协议栈指纹识别
- TTL值:这个数据是操作系统对出站的信息包设置的存活时间
- Windows Size:操作系统设置的TCP窗口大小,这个窗口大小是在发送FIN信息包时包含的选项。
- DF:可以查看操作系统是否设置了不准分片位。
- TOS:操作系统是否设置了服务类型。
-
-
漏洞扫描
两种方法:
- 基于漏洞库的特征匹配:通过端口扫描得知目标主机开启的端口以及端口上的网络服务后,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否有满足匹配条件的漏洞存在;
- 基于模拟攻击:通过模拟黑客的攻击手段,编写攻击模块,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,若模拟攻击成功,则表明目标主机系统存在安全漏洞。
2.3 扫描工具
https://zhcn.tenable.com/products/nessus
https://www.openvas.org/
https://nmap.org
- SATAN
- Nmap
主机扫描、端口扫描、远程主机OS识别 - Nessus
主机扫描、端口扫描、远程主机OS识别、漏洞扫描 - OpenVAS
主机扫描、端口扫描、远程主机OS识别、漏洞扫描 - X-scan
主机扫描、端口扫描、远程主机OS识别、漏洞扫描
2.4 扫描的防御
防范主动扫描:
- 减少开放端口,做好系统防护
- 实时监测扫描,及时做出告警
- 伪装知名端口,进行信息欺骗
防范被动扫描:
信息欺骗
一些具体方法:
- 在某个不常用的端口进行监听
- 在混杂模式下抓包并进一步分析判断
- 蜜罐系统
- 入侵检测系统
- 防火墙
- 审计
- 修改Banner
一些具体工具:
ProtectX:反黑工具
Winetd和DTK:蜜罐
Snort:轻量级的网络入侵检测系统
第 3 章 网络监听及防御技术
3.1 网络监听概述
网络监听技术又叫做网络嗅探技术(Network Sniffing),顾名思义,这是一种在他方未察觉的情况下捕获其通信报文或通信内容的技术
-
网卡的四种工作模式:
- 广播模式:该模式下的网卡能够接收网络中的广播信息。
- 组播模式:该模式下的网卡能够接受组播数据。
- 直接模式:在这种模式下,只有匹配目的MAC地址的网卡才能接收该数据帧。
- 混杂模式:在这种模式下,网卡能够接受一切接收到的数据帧,而无论其目的MAC地址是什么。
-
网络监听器的分类:
- 软件嗅探器:便宜易于使用,缺点是功能往往有限,可能无法抓取网络上所有的传输数据(比如碎片),或效率容易受限
- 硬件嗅探器:协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,处理速度很高,但是价格昂贵。
-
Sniffer软件的主要工作机制:
- 驱动程序支持
- 分组捕获过滤机制
3.2 监听技术
-
共享式局域网:使用集线器或共用一条总线的局域网,它采用了载波检测多路侦听机制来进行传输控制。
共享式局域网是基于广播的方式来发送数据的,因为集线器不能识别帧,所以它就不知道一个端口收到的帧应该转发到哪个端口,它只好把帧发送到除源端口以外的所有端口,这样网络上所有的主机都可以收到这些帧。
在正常的情况下,网卡应该工作在广播模式、直接模式,一个网络接口(网卡)应该只响应这样的两种数据帧:
- 与自己的MAC地址相匹配的数据帧(目的地址为单个主机的MAC地址)。
- 发向所有机器的广播数据帧(目的地址为0xFFFFFFFFFF)。
-
共享式局域网的监听:在共享式局域网中,集线器会广播所有数据,这时,如果局域网中一台主机将网卡设置成混杂模式,那么它就可以接收到该局域网中的所有数据了。
-
数据包过滤的分类:
信息的过滤包括以下几种:站过滤,协议过滤,服务过滤,通用过滤。
根据过滤的时间,可以分为两种过滤方式:捕获前过滤、捕获后过滤。
-
相关开发库:
- unix系统:libpcap
- windows系统:winpcap
-
交换式局域网:交换式以太网就是用交换机或其它非广播式交换设备组建成的局域网。这些设备根据收到的数据帧中的MAC地址决定数据帧应发向交换机的哪个端口。因为端口间的帧传输彼此屏蔽,因此节点就不担心自己发送的帧会被发送到非目的节点中去。
-
交换式局域网的监听:
- 溢出攻击:
交换机工作时要维护一张MAC地址与端口的映射表。但是用于维护这张表的内存是有限的。如用大量的错误MAC地址的数据帧对交换机进行攻击,交换机就可能出现溢出。这时交换机就会退回到HUB的广播方式,向所有的端口发送数据包,一旦如此,监听就很容易了。 - ARP欺骗:
计算机中维护着一个IP-MAC地址对应表,记录了IP地址和MAC地址之间的对应关系。该表将随着ARP请求及响应包不断更新。通过ARP欺骗,改变表里的对应关系,攻击者可以成为被攻击者与交换机之间的“中间人”,使交换式局域网中的所有数据包都流经自己主机的网卡,这样就可以像共享式局域网一样分析数据包了。
- 溢出攻击:
-
网络监听工具:
- Tcpdump/Windump
- Ngrep
- Ethereal/Wireshark
- Sniffer Pro
- NetXray
3.3 监听的防御
-
通用策略:
- 安全的网络拓扑结构:
- 网络分段:将网络分成一些小的网络,每一个网段的集线器被连接到一个交换器 (Switch) 上,所以数据包只能在该网段的内部被网络监听器截获,这样网络的剩余部分(不在同一网段)便被保护了。网络有三种网络设备是嗅探器不可能跨过的:交换机、路由器、网桥。我们可以通过灵活的运用这些设备来进行网络分段。
- 划分VLAN:使得网络隔离不必要的数据传送,一般可以采用20个工作站为一组,这是一个比较合理的数字。网络分段只适应于中小的网络。网络分段需要昂贵的硬件设备。
- 数据加密技术:
- 数据通道加密:SSH、VPN
- 数据内容加密:PGP
- 对可能存在的网络监听的检测:
- 用错误的物理地址ping,运行监听程序的机器会有响应
- 向网上发大量不存在的物理地址的包,由于监听程序要分析和处理大量的数据包会占用很多的CPU资源,这将导致性能下降。通过比较前后该机器性能加以判断。这种方法难度比较大。
-
共享网络下的防监听:
- 网络和主机响应时间测试:测试原理是处于非监听模式的网卡提供了一定的硬件底层过滤机制,即目标地址为非本地(广播地址除外)的数据包将被网卡所丢弃。这种情况下骤然增加目标地址不是本地的网络通讯流量对操作系统的影响很小。而处于混杂模式下的机器则缺乏底层的过滤,骤然增加目标地址不是本地的网络通讯流量会对该机器造成较明显的影响(不同的操作系统/内核/用户方式会有不同)。实现方法是利用ICMP ECHO请求及响应计算出需要检测机器的响应时间基准和平均值。
- ARP检测:在混杂模式下,网卡不会阻塞目的地址不是自己的分组,而是照单全收,并将其传送给系统内核。然后,系统内核会返回包含错误信息的报文。基于这种机制,我们可以假造一些ARP请求报文发送到网络上的各个节点,没有处于混杂模式的网卡会阻塞这些报文,但是如果某些节点有回应,就表示这些节点的网卡处于混杂模式下。这些处于混杂模式的节点就可能运行嗅探器程序。
-
交换网络下的防监听:
- 不要把网络安全信任关系建立在单一的IP或MAC基础上,理想的关系应该建立在IP-MAC对应关系的基础上。
- 使用静态的ARP或者IP-MAC对应表代替动态的ARP或者IP-MAC对应表,禁止自动更新,使用手动更新。
- 定期检查ARP请求,使用ARP监视工具,例如ARPWatch等监视并探测ARP欺骗。
- 制定良好的安全管理策略,加强用户安全意识。
-
防范ARP欺骗:
- ARP报文检测措施
- ARP网关过滤保护措施
- ARP报文限速措施
第 4 章 口令破解与防御技术
4.1 口令的历史与现状
口令的作用:向系统提供唯一标识个体身份的机制,只给个体所需信息的访问权,从而达到保护敏感信息和个人隐私的作用。
4.2 口令破解方式
-
口令破解方法:
- 手工破解
步骤:
(1)产生可能的口令列表
(2)按口令的可能性从高到低排序
(3)依次手动输入每个口令
(4)如果系统允许访问,则成功
(5)如果没有成功,则重试。
(6)注意不要超过口令的限制次数- 自动破解
只要得到了加密口令的副本,就可以离线破解。这种破解的方法是需要花一番功夫的,因为要得到加密口令的副本就必须得到系统访问权。
步骤:
(1)找到可用的userID
(2)找到所用的加密算法
(3)获取加密口令
(4)创建可能的口令名单
(5)对每个单词加密
(6)对所有的userID观察是否匹配
(7)重复以上过程,直到找出所有口令为止- 其他方式
- 网络嗅探
- 键盘记录器
-
词典攻击:词典是根据人们设置自己账号口令的习惯总结出来的常用口令列表文件
-
强行攻击:又名暴力破解,尝试字母、数字、特殊字符所有的组合
-
组合攻击:组合攻击是在使用词典单词的基础上在单词的后面串接几个字母和数字进行攻击的攻击方式。
-
其它的攻击方式:社会工程学、偷窥、搜索垃圾箱、口令蠕虫、特洛伊木马、网络监听、重放
4.3 典型的口令破解工具
- 口令破解器:口令破解器通常由候选口令产生器、口令加密模块和口令比较模块组成。
- 候选口令产生器:候选口令产生器用来产生认为可能是口令的单词。
- 字典生成脚本:cupp工具
- 操作系统的口令文件:
- unix:/etc/passwd
- windows:SAM:%systemroot%system32\config\sam
- 口令破解工具:
- unix:Crack、John the Ripper 、XIT 、Slurpie
- windows:L0phtcrack、Cain&Abel、NTSweep、NTCrack、PWDump2、RainbowCrack
4.4 口令攻击的综合应用
-
本地口令攻击:
- Windows系统口令攻击:
- 提取SAM文件进行破解
- 用备份的SAM文件替换当前SAM文件
- 使用口令修改软件
- 替换屏保程序
- Unix系统口令攻击:逆向比较法
-
远程口令攻击:
- 建立与目标网络服务的网络连接。
- 选取一个用户列表文件和一个字典文件。
- 在用户列表文件和一个字典文件中,选取一组用户和口令,按照网络服务协议规定,将用户名和口令发给目标网络服务端口
- 检测远程服务返回信息,确定口令尝试是否成功
4.5 口令攻击的防御
-
强口令:基于当前的技术,强口令的特征如下:
- 每45天换一次
- 口令至少包含10个字符
- 必须包含字母、数字、特殊的符号
- 字母、数字、特殊符号必须混合起来,而不是添加在尾部
- 不能包含词典单词
- 不能重复使用以前的五个口令
- 一定次数登陆失败后,口令在一段时间封闭
-
保护口令不被未授权泄漏、修改和删除,口令就不能按纯文本方式存放在系统内,如果系统中存放有包含所有口令的文本文件,很容易被某些人读取并获得所有人的口令。
-
加密
-
一次性口令技术:
-
生物技术口令
第 5 章 欺骗攻击及防御技术
5.1 概述
认证:认证是网络上的计算机用于相互间进行识别的一种鉴别过程,经过认证的过程,获准相互交流的计算机之间就会建立起相互信任的关系。
信任:信任和认证具有逆反关系,即如果计算机之间存在高度的信任关系,则交流时就不会要求严格的认证。而反之,如果计算机之间没有很好的信任关系,则会进行严格的认证。
欺骗:欺骗实质上就是一种冒充身份通过认证骗取信任的攻击方式。攻击者针对认证机制的缺陷,将自己伪装成可信任方,从而与受害者进行交流,最终攫取信息或是展开进一步攻击。
5.2 IP欺骗及防御技术
IP欺骗:攻击者可以使用其他主机的IP地址,并假装自己来自该主机,以获得自己未授权访问的信息。这种类型的攻击称为IP欺骗。
基本的IP欺骗方法:
- 简单的IP地址变化:攻击者将一台计算机的IP地址修改为其它主机的地址,以伪装冒充其它机器。简单的IP地址变化很致命的缺陷是攻击者无法接收到返回的信息流。
- 源路由攻击:保证数据包始终会经过一条经定的途径,而攻击者机器在该途径中。
宽松的源站选择:发送端指明数据流必须经过的IP地址清单,但是也可以经过除这些地址以外的一些地址。
严格的源路由选择:发送端指明IP数据包必须经过的确切地址。如果没有经过这一确切路径,数据包会被丢弃,并返回一个ICMP报文。
- 利用Unix系统的信任关系:在 Unix世界中,不同主机的账户间可以建立一种特殊的信任关系,以方便机器之间的访问。这常常用于对大量机器的系统管理。这里的信任关系是基于IP地址进行认证的,而不是询问用户名和口令。也就是说将会认可来自可信IP地址的任何人。
rlogin:远程登陆
rsh:远程shell
rcp:远程拷贝
A添加对B的信任关系:echo “B usernameB” > ~/.rhosts
,这样主机B可以毫无阻碍地使用r*远程调用命令直接登录到主机A中
IP欺骗高级应用:
- 会话劫持:接管一个现存动态会话的过程,换句话说,攻击者通过会话劫持可以替代原来的合法用户,同时能够监视并掌握会话内容。此时,攻击者可以对受害者的回复进行记录,并在接下来的时间里对其进行响应,展开进一步的欺骗和攻击。会话劫持结合了嗅探及欺骗技术。会话劫持的关键是预测正确的序列号。
- 第二个数据包(B->A)的SEQ = 第一个数据包(A-> B)的ACK;
- 第二个数据包(B->A)的ACK = 第一个数据包(A-> B)的SEQ +第一个数据包(A-> B)的传输数据长度(字节数)。
- 会话劫持过程:
- 发现攻击目标
- 确认动态会话
- 猜测序列号
- 使客户主机下线
- 接管会话
- 会话劫持的危害:就其实现原理而言,任何使用Internet进行通信的主机都有可能受到这种攻击。
危害性大的原因:不依赖于操作系统;可以被用来进行积极的攻击,通过攻击行为可以获得进入系统的可能。
- 实现TCP会话劫持的工具:Juggernaut、Hunt
IP欺骗攻击的防御:
- 防范地址变化欺骗:
方法1:限制用户修改网络配置
方法2:入口过滤
方法3:出口过滤
- 防范源路由欺骗:设置路由器禁止使用源路由
- 防范信任关系欺骗:
方法1:不使用信任关系
方法2:限制拥有信任关系的人员
方法3:不允许通过外部网络使用信任关系
方法4:对UNIX系统,不要使用脆弱的r命令,使用安全的方式,如SSH或VPN来代替r命令。
- 防范会话劫持攻击:
方法1:进行加密
方法2:使用安全协议
方法3:限制保护措施
5.3 ARP欺骗及防御技术
ARP欺骗:主机在实现ARP缓存表的机制中存在一个不完善的地方,当主机收到一个ARP应答包后,它并不会去验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的关系替换掉原有的ARP缓存表里的相应信息。
ARP欺骗的危害:
- 致使同网段的其他用户无法正常上网(频繁断网或者网速慢)
- 使用ARP欺骗可以嗅探到交换式局域网内所有数据包,从而得到敏感信息。
- ARP欺骗攻击可以对信息进行篡改,例如,可以在你访问的所有网页中加入广告。
- 利用ARP欺骗攻击可以控制局域网内任何主机,起到“网管”的作用,例如,让某台主机不能上网。
ARP欺骗工具:Arp cheat and sniffer V2.1
ARP欺骗的检测与防御:
- 如何检测局域网中存在ARP欺骗攻击:
- 网络频繁掉线
- 网速突然变慢
- 使用ARP –a命令发现网关的MAC地址与真实的网关MAC地址不相同
- 使用sniffer软件发现局域网内存在大量的ARP reply包
- 如何发现正在进行ARP攻击的主机
- 如果你知道正确的网关MAC地址,通过ARP –a命令看到的列出的网关MAC与正确的MAC地址不同,那就是攻击主机的MAC
- 使用Sniffer软件抓包发现大量的以网关的IP地址发送的ARP reply包,包中指定的MAC就是攻击主机的MAC地址。
- ARP欺骗攻击的防范:
- MAC地址绑定,使网络中每一台计算机的IP地址与硬件地址一一对应,不可更改。
- 使用静态ARP缓存,用手工方法更新缓存中的记录,使ARP欺骗无法进行。
- 使用ARP服务器,通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
- 使用ARP欺骗防护软件,如ARP防火墙
- 及时发现正在进行ARP欺骗的主机并将其隔离
5.4 电子邮件欺骗及防御技术
基本方法:
- 利用相似的电子邮件地址
- 直接使用伪造的E-mail地址:SMTP建立在假定人们的身份和他们所声称一致的基础之上,没有对邮件发送者的身份进行验证。这使得人们可以随意构造发件人地址来发送邮件。
- 远程登录到SMTP端口发送邮件:攻击者首先找到邮件服务器的IP地址,或者通过运行端口扫描程序来判断哪些机器是25号端口开放的邮件服务器。在攻击者有了一台25号端口开放的机器和一台正在运行的邮件服务器后,输入下面的命令:
telnet IP地址 25
。在连接上以后,再输入下面的内容:MAIL FROM: 欺骗伪装的mail地址 RCPT TO: 收件的受害者mail地址 DATA 邮件的内容
电子邮件欺骗的防御:
- 邮件接收者:做为邮件接收者来说,用户需要合理配置邮件客户端,使每次总能显示出完整的电子邮件地址,而不是仅仅显示别名,完整的电子邮件地址能提供一些迹象表明正在发生一些不平常的事情。
- 邮件发送者:做为邮件发送者来说,必须保护好邮件客户端,防止他人对客户端的设置进行修改。
- 邮件服务器:对于邮件服务器提供方来说,采用的SMTP身份验证机制。
- PGP加密:PGP (Pretty Good Privacy) 是一个可以让您的电子邮件拥有保密功能的程序。藉此你可以将你的邮件加密 ,一旦加密后,邮件看起来是一堆无意义的乱码 。PGP 提供了极强的保护功能,即使是最先进的解码分析技术也无法解读加密后的文字。
5.5 DNS欺骗及防御技术
DNS欺骗:攻击者冒充域名服务器的种欺骗行为。把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。
入侵者欲实现DNS欺骗,关键的一个条件就是在DNS服务器的本地Cache中缓存一条伪造的解析记录。
攻击方法:
- 攻击者可以控制本地的域名服务器
- 攻击者无法控制任何DNS服务器
DNS欺骗主要存在两点局限性:
- 攻击者不能替换缓存中已经存在的记录
- DNS服务器存在缓存刷新时间问题
DNS欺骗的防御:
- hosts文件绑定
- 实施加密和身份验证的安全方法
5.6 Web欺骗及防御技术
Web欺骗:是一种电子信息欺骗,攻击者创造了一个完整的令人信服的Web世界,但实际上它却是一个虚假的复制。虚假的Web看起来十分逼真,它拥有相同的网页和链接。然而攻击者控制着这个虚假的Web站点,这样受害者的浏览器和Web之间的所有网络通信就完全被攻击者截获。
网络钓鱼:黑客们借用电子邮件或是模仿网上银行、网上购物等一切网上交易的页面而制作出假的网页页面,以假乱真,让用户在毫不知情的情况下泄露出自己的相关账户信息(账号、密码),一旦这些黑客们得到了用户的账号信息,后果可想而知。
防范Web欺骗的方法:
- 配置网络浏览器使它总能显示目的URL,并且习惯查看它
- 使用反网络钓鱼软件。
- 禁用JavaScript、ActiveX或者任何其他在本地执行的脚本语言。
- 确保应用有效和能适当地跟踪用户。无论是使用cookie还是会话ID,都应该确保要尽可能的长和随机
- 培养用户注意浏览器地址线上显示的URL的好习惯。培养用户的安全意识和对开发人员的安全教育。
第 6 章 拒绝服务攻击与防御技术
6.1 拒绝服务攻击概述
拒绝服务:是一种简单的破坏性攻击,通常是利用传输协议中的某个弱点、系统存在的漏洞、或服务的漏洞,对目标系统发起大规模的进攻,用超出目标处理能力的海量数据包消耗可用系统资源、带宽资源等,或造成程序缓冲区溢出错误,致使其无法处理合法用户的正常请求,无法提供正常服务,最终致使网络服务瘫痪,甚至系统死机。
DoS攻击类型:
从实施DoS攻击所用的实现思路来看:
- 滥用合理的服务请求
- 制造高流量无用数据
- 利用传输协议缺陷
- 利用服务程序的漏洞
按漏洞利用方式分类:
- 特定资源消耗类
- 暴力攻击类
按攻击数据包发送速率变化方式:
- 固定速率
- 可变速率
按攻击可能产生的影响:
- 系统或程序崩溃类
- 服务降级类
按照攻击对象的协议层划分:
- 网络传输层的DDoS攻
- 应用层的DDoS攻击
6.2 典型拒绝服务攻击技术
- Ping of Death:一旦发送过来的ICMP数据包的实际尺寸超过64KB(65536B),操作系统将收到的数据报文向缓存区填写时,报文长度大于64KB,就会产生一个缓存溢出,结果将导致TCP/IP协议堆栈的崩溃,造成主机的重启动或是死机。
- 泪滴Teardrop:如果入侵者伪造数据报文,向服务器发送含有重叠偏移信息的分段包到目标主机。这样的信息被目的主机收到后,在堆栈中重组时,由于畸形分片的存在,会导致重组出错,这个错误并不仅仅是影响到重组的数据,由于协议重组算法,会导致内存错误,引起协议栈的崩溃。
- IP欺骗DoS攻击:攻击时,攻击者会伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务,从而实现了对受害服务器的拒绝服务攻击。
- UDP洪水:主要是利用主机能自动进行回复的服务(例如使用UDP协议的chargen服务和echo服务)来进行攻击。
- SYN洪水:在TCP连接的三次握手过程中,假设一个客户端向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN/ACK应答报文后是无法收到客户端的ACK报文的,这种情况下服务器端一般会重试,并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout。一般来说这个时间是分钟的数量级。
- Land攻击:向目标主机发送一个特殊的SYN包,包中的源地址和目标地址都是目标主机的地址。目标主机收到这样的连接请求时会向自己发送SYN/ACK数据包,结果导致目标主机向自己发回ACK数据包并创建一个连接。大量的这样的数据包将使目标主机建立很多无效的连接,系统资源被大量的占用。
- Smurf攻击:利用IP欺骗和ICMP回应包引起目标主机网络阻塞,实现DoS攻击。
- Fraggle攻击:与Smurf攻击类似,不同的是Fraggle使用的是UDP应答消息而非ICMP。
- 电子邮件炸弹:传统的电子邮件炸弹只是简单的往你的邮箱里发送大量的邮件,入侵者的目的是要用垃圾邮件填满你的邮箱后,正常的邮件就会因空间不够而被服务器拒收。如果用户的邮箱使用空间不受限制,那么电子邮件炸弹攻击就有可能影响到服务器的正常工作了。
- 畸形消息攻击:是一种有针对性的攻击方式,它利用目标主机或者特定服务存在的安全漏洞进行攻击。
- Slashdot effect:使web服务器或其他类型的服务器由于大量的网络传输而过载,一般这些网络流量是针对某一个页面或一个链接而产生的
- WinNuke攻击
- CC攻击:通过代理服务器或者大量“肉鸡” 模拟多个用户访问目标网站的动态页面,制造大量的后台数据库查询动作,消耗目标CPU资源,造成拒绝服务。
- 反射放大攻击:反射放大攻击中,反射指攻击者并不直接攻击目标服务IP,而是通过向组播地址发送构造的请求报文,将被攻击方的IP地址伪造成报文的源IP地址。放大指这些设备将会数倍于请求报文的回复数据发送给攻击方
DoS常用工具:独裁者、NetBot_Attaker、Synbomb、UDP Flooder
6.3 分布式拒绝服务攻击
分布式拒绝服务:指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DoS攻击,从而成倍地提高拒绝服务攻击的威力。
分布式拒绝服务攻击的软件的组成:
- 客户端:也称攻击控制台,它是发起攻击的主机
- 服务端:也称攻击服务器,它接受客户端发来的控制命令
- 守护程序:也称攻击器、攻击代理,它直接(如SYN Flooding)或者间接(如反射式DDoS)与攻击目标进行通信
入侵者通过客户端软件向服务端软件发出攻击指令,服务端在接收到攻击指令后,控制守护进程向目标主机发动攻击。入侵者先控制多台无关主机,在上面安装守护进程与服务端程序。
DDoS的工具:TFN2K、Trinoo、Stacheldraht、Trinity、Shaft、Mstream、LOIC
6.4 拒绝服务攻击的防御
- 有效完善的设计
- 带宽限制
- 及时给系统安装补丁
- 运行尽可能少的服务
- 只允许必要的通信
- 封锁敌意IP地址
6.5 分布式拒绝服务攻击的防御
- 分布式拒绝服务攻击的监测:
- 大量的DNS PTR查询请求
- 超出网络正常工作时的极限通讯流量
- 特大型的ICMP和UDP数据包
- 不属于正常连接通讯的TCP和UDP数据包
- 数据段内容只包含文字和数字字符(例如,没有空格、标点和控制字符)的数据包。
- 分布式拒绝服务攻击的防御:
- 优化网络和路由结构
- 保护网络及主机系统安全
- 安装入侵检测系统
- 与ISP服务商合作
- 使用扫描工具
第 7 章 缓冲区溢出攻击及防御技术
7.1 缓冲区溢出概述
缓冲区:它是包含相同数据类型实例的一个连续的计算机内存块。是程序运行期间在内存中分配的一个连续的区域,用于保存包括字符数组在内的各种数据类型
缓冲区溢出:向固定长度的缓冲区中写入超出其预告分配长度的内容,造成缓冲区中数据的溢出,从而覆盖了缓冲区周围的内存空间。黑客借此精心构造填充数据,导致原有流程的改变,让程序转而执行特殊的代码,最终获取控制权
缓冲区溢出漏洞的主要产生原因是:C/C++支持数组和指针对于内存数据的访问,然而却没有安全检查来限定访问边界,因此产生了大量的缓冲区溢出问题
7.2 缓冲区溢出原理
-
栈溢出
函数调用时的栈帧:
(内存高地址)
传递给Func的实参
退出Func函数后的返回地址
调用Func函数前的EBP
Func函数中的局部变量
(内存低地址) -
堆溢出
-
BSS溢出:.bss段存放全局和静态的未初始化变量,其分配比较简单,变量与变量之间是连续存放的,没有保留空间。下面这样定义的两个字符数组即是位于BSS段:
static char buf1[16],buf2[16];
如果事先向buf2中写入16个字符A,之后再往buf1中写入24个B,由于变量之间是连续存放的,静态字符数组buf1溢出后,就会覆盖其相邻区域字符数组buf2的值。利用这一点,攻击者可以通过改写BSS中的指针或函数指针等方式,改变程序原先的执行流程,使指针跳转到特定的内存地址并执行指定操作。 -
格式化串溢出:这种溢出漏洞是利用了编程语言自身存在的安全问题。格式化串溢出源自*printf()类函数的参数格式问题(如printf、fprintf、sprintf等)
7.3 缓冲区溢出的过程
攻击者要实现缓冲区溢出攻击,必须完成两个任务,
- 在程序的地址空间里安排适当的代码;
- 通过适当的初始化寄存器和存储器,让程序跳转到安排好的地址空间执行。
- Function Pointers(函数指针)
- Activation Records(函数栈帧)
- Longjmp buffers(长跳转缓冲区)
7.4 代码植入技术
所植入的代码一般由shellcode、返回地址、填充数据这三种元素按照一定的结构和构造类型组成
-
shellcode:是植入代码的核心组成部分,是一段能完成特殊任务的自包含的二进制代码。
-
返回地址:shellcode的入口地址。攻击者如果希望目标程序改变其原来的执行流程,转而执行shellcode,则必须设法用shellcode的入口地址覆盖某个跳转指令。
-
填充数据:由于攻击者不能准确地判断shellcode的入口地址,因此为了提高shellcode的命中率,往往在shellcode的前面安排一定数量的填充数据。
植入代码的构造类型:NSR模式、RNS模式、AR模式
7.5 实例:ida溢出漏洞攻击
7.6 缓冲区溢出的防御
- 源码级保护方法:
- 避免源码中的相关bug
- 源码中溢出bug的查找
- 数组边界检查编译器
- 运行期保护方法:
- 插入目标代码进行数组边界检查
- 返回指针的完整性检查
- 阻止攻击代码执行:
- 非执行缓冲区技术:通过设置缓冲区地址空间的属性为不可执行,使得攻击代码不能执行,从而避免攻击,这种技术被称为非执行的缓冲区技术。
- 加强系统保护:
- 保护系统信息
- 关闭不需要的服务
- 最小权限原则
- 使用系统的堆栈补丁
- 检查系统漏洞,及时为软件打上安全补
第 8 章 Web攻击及防御技术
8.1 Web安全概述
Web安全:
- Web服务器的安全:
- 利用Web服务器的漏洞进行攻击:IIS缓冲区溢出漏洞利用、目录遍历漏洞利用等;
- 利用网页自身的安全漏洞进行攻击:SQL注入,跨站脚本攻击
- Web客户端的安全
- Web通信信道的安全:和其他的Internet应用一样,Web信道同样面临着网络嗅探(Sniffer)和以拥塞信道、耗费资源为目的的拒绝服务攻击(Denial of Service)的威胁。
8.2 Web服务器指纹识别
Web服务器指纹:这个概念应用在Web服务器上,就是通过对服务器上的HTTP应用程序安装和配置等信息进行远程刺探,从而了解远程Web服务器的配置信息,然后根据不同版本的Web服务器进行有目的的攻击。
Banner信息:获取web服务器的版本、欢迎语或其它提示信息,以找出可能的有利于攻击的内容。
模糊Web服务器Banner信息:
- 自定义Http应答头信息
- 增加插件
8.3 Web页面盗窃及防御
Web页面盗窃:通过对各个网页页面源码的详细分析,找出可能存在于代码、注释或者设计中的关键缺陷和脆弱点,以此来确定攻击的突破点。
Web页面盗窃的两种方法:
- 逐页手工扫描
- 自动扫描
防御方法:
- 提高Web页面代码的质量
- 监视访问日志中快速增长的GET请求
- 在Web站点上设置garbage.cgi脚本
- 经常注意网络上新出现的web扫描脚本的攻击内容
8.4 跨站脚本攻击及防御
XSS:攻击者制造恶意脚本,并通过Web服务器转发给普通用户客户端,然后在其浏览器中执行。
分类:反射型、存储型、基于DOM类型
危害:XSS攻击可以搜集用户信息,攻击者通常会在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺骗用户。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告,查看主机信息等。
XSS攻击步骤:
- 寻找XSS漏洞
- 注入恶意代码
- 欺骗用户访问
防御方法:输入做转义;输出做过滤
8.5 SQL注入攻击及防御
SQL注入过程:
- 寻找可能存在SQL注入漏洞的链接
- 测试该网站是否有SQL注入漏洞
- 猜管理员帐号表
- 猜测管理员表中的字段
- 猜测用户名和密码的长度
- 猜测用户名
- 猜测密码
防范方法:
- 程序员加强自身技术水平,使用固定开发的标准
- 在提交服务端处理之前对数据的合法性进行检查
- 封装客户端提交信息
- 替换或删除敏感字符、字符串
- 错误信息不返回给用户
- 数据敏感信息非常规加密,防止信息外泄
- 加强数据库检查
- 不用字串连接建立 SQL 查询,而使用 SQL 变量,因为变量不是可以执行的脚本
- 使用 SQL 注入防范系统
- web 应用部署前使用预防工具进行严格的安全性测试,比如Pangolin
- 防范系统对访问网页提交的关键字(包括Get 、Post 方式以及 cookie )进行过滤,一旦发现违法的关键字的时候 (如‘、;、and 、exec 、select 、insert等)就提示非法访问, 并将该 IP 地址存入服务器黑名单数据库, 使得该 IP 不能再访问该网址。
8.6 Google Hacking
- 搜索语法:
- intext:就是把网页正文内容中的某个字符做为搜索条件
- allintext:使用方法和intext类似
- intitle:和intext相近,搜索网页标题中是否有所要找的字符。
- allintitle:也同intitle类似
- cache:搜索Google里关于某些内容的缓存。
- define:搜索某个词语的定义
- filetype:搜索指定类型的文件
- info:查找指定站点的一些基本信息
- inurl:搜索指定的字符是否存在于URL中
- allinurl:也同inurl类似,可指定多个字符
- link:查找和指定网站做了链接的网站
- site:用来查找与指定网站有关的链接
- related:找到与指定网站相似的页面
- Ext:用来搜索各种后缀格式的文件
- Inanchor:inanchor:关键词。搜索结果中必须出现以
这个关键词为链接关键词的链接- phonebook:电话簿查询美国街道地址和电话号码信
- 操作符:
+ :把Google可能忽略的字列入查询范围
- :把某个字忽略
~ :同意词
. :单一的通配符
* :通配符,可代表多个字母
“” :精确查询
- Google Hacking的防范:
- 禁止目录列表
- 合理设置页面的 NOSNIPPET
- 合理设置站点的 robots.txt
- 阻止网络机器人收集信息
- 欺骗网络机器人
- 自我检测
8.7 网页验证码
验证码技术的主要思想:对验证码字体和背景进行处理,使得信息提交过程必须通过人为参与完成。
验证码的作用主要有:防止暴力破解,防止恶意灌水,防止自动提交等。
8.8 防御Web攻击
- 服务器安全配置:
- 主机系统的安全配置
- Web服务器的安全配置
- Web浏览者的安全措施:
- 经常对操作系统打补丁、升级
- 使用漏洞数较少的浏览器,如Firefox
- 经常对浏览器进行升级
- 不要因为好奇而打开一些不信任的网站