第4章 网络攻防实例 复习总结
✨本章重点:拒绝服务攻击Dos、DDoS
知识总览

1️⃣ 拒绝服务攻击
1.1 DoS与DDoS基本概念
- DoS(拒绝服务):任何使服务可用性降低或丧失的行为(如带宽耗尽、系统崩溃、硬盘填满)。
- DDoS(分布式拒绝服务):利用C/S架构,控制大量代理机(肉机)同时向目标发起DoS攻击,成倍提升威力。
- DDoS体系:攻击者 → 主控端(发布命令) → 代理端(实际发包) → 攻击目标。
1.2 经典DoS攻击实例
| 攻击名称 | 攻击原理 | 防御方法 |
|---|---|---|
| Ping of Death | 发送长度超过65535字节的ICMP碎片包,重组时导致TCP/IP堆栈缓冲区溢出崩溃。 | 升级系统阻断超大包;防火墙阻断ICMP及未知协议分组。 |
| Jolt2 | 发送大量相同碎片化IP包(偏移量65520,总长超65535),导致系统死锁。 | 打补丁;边界禁止碎片包通过/限速;确保防火墙重组算法正确。 |
| Land | 发送SYN包,源IP=目的IP,源端口=目的端口(均为目标自身),导致系统不断自我回应形成空连接。 | 打补丁;防火墙过滤从外部进入且含内部源地址的包。 |
| SYN Flood | 发送大量伪造源IP 的SYN请求,目标回应SYN/ACK后等待ACK(形成半开连接),耗尽资源。 | 缩短SYN Timeout;设置SYN Cookie;限制半开连接数量;丢弃重复SYN包。 |

1.3 放大攻击
- Smurf :发送源地址为目标机、目的地址为广播地址的ICMP Echo包。网络内所有主机向目标机回复,导致目标被淹没。
- Fraggle :原理同Smurf,但使用的是UDP包。
- 防御:禁止路由器IP广播功能;过滤边界路由器的回音应答包。
1.4 常见DDoS攻击方式
- SYN Flood:占满半开连接队列。
- UDP Flood:大量伪造源IP的小UDP包冲击服务器(如DNS服务器)。
- ICMP Flood:大流量ICMP包增加服务器负载。
- Connection Flood:用真实IP建立大量连接且长期不释放,占满WAIT状态连接。
- HTTP Get:与服务器建立正常TCP连接,不断提交耗费数据库资源的查询(绕过普通防火墙,但易暴露IP)。
- UDP DNS Query Flood:发送大量随机/不存在的域名解析请求,导致DNS服务器超时。
1.5 DDoS工具与防御
- TFN2K特征:主控端与代理端通信加密;支持多种攻击;守护进程名编译时指定(隐蔽)。
- 防御策略:及早发现漏洞打补丁;关闭不必要服务;加装防火墙过滤数据包;优化路由和网络结构;安装入侵检测系统(IDS)。
2️⃣ 典型系统安全威胁
2.1 缓冲区溢出
- 原理:向缓冲区填充数据超过其容量,溢出数据覆盖合法数据。
- 根本原因 :C/C++中数组和指针没有边界检查。
- 直接结果:程序失败、死机、执行非授权指令、取得系统特权。
- 经典案例:Heartbleed (心血漏洞)
- 成因 :OpenSSL未对
memcpy()调用进行边界检查。攻击者在Heartbeat请求中发送1字节有效负载,但声明长度为65535字节,导致服务器每次泄露64KB内存内容(含密码、密钥等)。 - 修复:加入边界检查,使用正确的长度记录。
- 成因 :OpenSSL未对
- 防范 :安装补丁;编写安全代码(检查变量大小/边界);设置安全策略隐藏系统信息(如改写
inetd.conf和rc.local)。
2.2 SQL注入攻击
- 原理 :构造特殊SQL语句插入查询参数中,改变原SQL逻辑,实现越权访问。
- 例 :
... and itemname = 'name' or 'a'='a'(恒真条件绕过)。
- 例 :
- 防范措施 :
- 权限严格区分:普通用户与管理员权限分离,禁用Drop等危险权限。
- 参数化语句:用户输入不直接嵌入SQL,通过参数传递(杜绝大部分注入)。
- 输入验证与过滤:测试类型、长度、格式;利用存储过程拒绝特殊符号(如分号、注释符)。
- 使用安全参数 :如SQL Server的
Parameters集合(类型检查+长度验证)。 - 多层验证:客户端与数据库端双重校验。
- 漏洞扫描工具:寻找可能被注入的点。
3️⃣ 恶意软件
为恶意目的开发的软件,利用漏洞或用户天真造成损坏/欺骗。
- 分类:后门、Rootkit、间谍软件、木马、逻辑炸弹、蠕虫、犯罪软件、病毒、广告软件、机器人(僵尸)。
4️⃣ TCP/IP网络安全威胁
4.1 IP与MAC欺骗
- IP欺骗 :假冒他人IP发送数据包。防范:IP/MAC/端口绑定。
- MAC欺骗 :假冒他人MAC地址,导致交换机MAC地址表映射错乱(将发往A的包发给B)。
- 防范:MAC与端口静态绑定(手工/自动);改变地址学习策略(优先保持原有映射不立即更新);设置端口地址学习优先级。
4.2 ARP欺骗 (ARP毒药)
- 原理:ARP缓存表会被非法修改。攻击者假冒网关或目标主机的MAC地址回应ARP请求,实现数据监听/篡改。
- 关键 :必须实现双向欺骗(同时欺骗网关和主机)。
- 防范 :主机静态绑定网关MAC (
arp -s);网关IP+MAC绑定;使用ARP服务器。
4.3 ICMP欺骗
- 攻击方式 :
- 死亡之Ping:超大ICMP包致崩溃。
- 路由重定向欺骗:发送伪造的ICMP重定向报文,改变主机路由表,将数据引向攻击者。
- 穿透防火墙:利用IP源路径选项,使报文绕过防火墙规则到达内部主机。
- 防范 :路由器关闭相关ICMP响应(如
ICMP redirect disable);主机配置不处理ICMP重定向消息。
4.4 路由欺骗
- RIP路由欺骗:RIP协议不验证路由更新,攻击者声称自己有最快路由,诱使数据经其转发。
- IP源路由欺骗:在IP包中指定源路由路径,绕过防火墙/信任关系验证。
- 防范:路由器验证路由可达性;抛弃外部流入的内部主机报文;关闭源路由功能。
4.5 IP包碎片攻击
- 原理:IP分片偏移量/长度矛盾,导致重组异常。
- TearDrop:发送偏移量重叠的碎片,导致系统崩溃(蓝屏)。
- Jolt2:死循环发送ICMP/UDP碎片,致系统死锁并增加网络流量。
- 防范:打补丁;边界禁止碎片包/限速;确保防火墙重组算法安全。
4.6 TCP攻击集锦
| 攻击类型 | 攻击原理与过程 | 防御策略 |
|---|---|---|
| SYN Flooding | 大量伪造SYN请求占满TCP半开连接队列,阻止正常连接。 | 缩短Timeout,SYN Cookie,限制半开连接数。 |
| 初始序号(ISN)预测 | TCP连接基于序列号,若能预测目标主机的ISN,即可伪造合法数据包。 | 使用随机化ISN:ISN = M + F(连接标识符+随机数)。 |
| 端口扫描 | 探测目标开放的端口和服务。 1. Connect()扫描:全连接,易被发现。 2. SYN扫描:半开连接,较隐蔽。 3. FIN扫描:关闭端口回RST,打开端口忽略(区分Unix/NT)。 4. 慢速扫描:延时间隔长,躲避IDS检测(如Netcat工具)。 |
统计分析流量;审查IDS日志寻找长周期规律扫描。 |
| Land攻击 | 同1.2,源目IP/端口一致,自我死循环。 | 补丁升级;防火墙过滤源目地址相同的包。 |
| TCP欺骗 | 非盲攻击 :同一网络,用嗅探器抓取序列号。 盲攻击:不同网络,需预测序列号,难度大。 | 随机化ISN;路由器拒绝外网源内网IP包;TCP段加密。 |
| TCP会话劫持 | 结合嗅探+欺骗,在正常连接建立后,强行接管会话(预测Seq/Ack,插入恶意数据)。 分中间人攻击(MITM)和注射式攻击。 | 使用交换式网络防嗅探(但Hunt等工具仍可劫持);加密(IPsec/SSH/HTTPS)。 |
| RST攻击 | 伪造带RST位的TCP包发给服务器,服务器清空合法用户的连接。 | 防火墙丢弃带RST位的异常包。 |
| FIN攻击 | 伪造FIN包,让目标误以为通信结束,丢弃后续数据。 | Anti-DDoS设备检查会话状态与序列号,丢弃异常FIN/RST包。 |
5️⃣ 应用层安全
5.1 E-Mail欺骗
- 目的:隐藏身份;冒充他人;社会工程学(如冒充老板索要机密)。
- 手段:内容欺骗(冒充管理员);程序攻击(附带木马)。
5.2 DNS欺骗/攻击
- Hosts文件篡改:修改本地Hosts文件,将域名指向错误IP(常用于屏蔽网站或恶意劫持)。
- 本机DNS劫持:拦截解析请求,返回假IP或无响应。
- DNS序列号(ID)欺骗 :
- 原理:DNS查询包有标识ID。攻击者嗅探到ID,抢在真实DNS服务器前发送伪造的应答包(预测ID+1),客户端接收伪造包并丢弃晚到的真实包。
- 限制:不能替换缓存中已存在的记录(但可累加A记录);受缓存刷新时间(TTL)限制。
- 防御 :使用最新DNS软件/补丁;关闭DNS递归功能;保护内部设备;手动指定Hosts;使用IDS;使用DNSSEC(数字签名验证,未来方向)。
5.3 网络钓鱼
- 原理:伪造Web站点/邮件,诱使用户输入敏感信息(账号、密码、信用卡)。不是独立技术,而是社会工程学+技术的诈骗。
- 实现步骤 :
- 申请相似域名和空间(如
yaho.com代替yahoo.com)。 - 复制目标网站登录页HTML代码,修改表单提交地址指向攻击者服务器。
- 编写后台脚本存储窃取的账号密码。
- 申请相似域名和空间(如
- 防范:硬件级保护(U盾/动态令牌);验证工商红盾/ICP标志;仔细核对URL域名。
模拟复习题
一、 单项选择题
1. Smurf攻击和Fraggle攻击的共同特点是( )
A. 都利用TCP协议建立半开连接
B. 都利用广播地址进行攻击放大
C. 都是针对应用层的HTTP Get攻击
D. 都需要攻击者预测TCP序列号
【答案】B
解析:Smurf发送源地址为目标机的ICMP Echo包到广播地址,Fraggle发送的是UDP包到广播地址,两者都是利用广播地址将攻击放大,让网络内所有主机向目标机回复,从而淹没目标机。
2. 著名的Heartbleed(心脏滴血)漏洞产生的主要原因是没有对memcpy()调用进行边界检查,这属于哪种典型的系统安全威胁?( )
A. SQL注入攻击
B. 缓冲区溢出攻击
C. IP包碎片攻击
D. 恶意软件感染
【答案】B
解析 :Heartbleed漏洞是由于OpenSSL未对
memcpy()的长度参数进行边界检查,导致攻击者可以读取超出合法范围的内存数据(每次64KB),这属于典型的缓冲区溢出攻击。
3. 在TCP端口扫描技术中,通常被认为是"半开放"扫描,且一般不会在目标计算机上留下完整连接记录的扫描方式是( )
A. TCP connect() 扫描
B. UDP ICMP端口不能到达扫描
C. TCP SYN 扫描
D. TCP FIN 扫描
【答案】C
解析:TCP SYN扫描只发送SYN包,若收到SYN/ACK则表示端口开放,扫描者随后发送RST关闭连接,而不完成完整的三次握手,因此称为"半开放"扫描,不易在系统日志中留下完整连接记录。
4. DNS序列号(ID)欺骗攻击的核心原理是( )
A. 篡改本地主机的Hosts文件
B. 伪造DNS应答包,抢在真实DNS服务器之前将虚假IP返回给客户端
C. 向DNS服务器发送大量不存在的域名解析请求耗尽其资源
D. 修改DNS服务器的域数据库内容
【答案】B
解析:DNS ID欺骗是攻击者嗅探到客户端的DNS请求包ID后,抢在真实DNS服务器回应前,发送带有相同ID的伪造应答包,客户端接收先到达的假包而丢弃后到达的真包。A是Hosts篡改,C是UDP DNS Query Flood,D是内应攻击。
二、 判断题(共3题)
5. 缓冲区溢出攻击的根本原因在于C/C++语言中数组和指针缺乏边界检查。( )
【答案】正确(√)
解析:PPT原文明确指出,缓冲区溢出攻击的根本原因就是C/C++中数组和指针没有边界检查,假设数据长度总是与所分配的储存空间相匹配。
6. 要完成一次有效的ARP欺骗,关键点是只需要欺骗目标主机即可,不需要欺骗网关。( )
【答案】错误(×)
解析 :要完成一次有效的ARP欺骗的关键点是双向欺骗,也就是说欺骗者必须同时对网关和主机进行欺骗,才能截获双向的通信数据。
7. 在TCP欺骗攻击中,"盲攻击"是指攻击者与被欺骗的目的主机在同一个网络上,可以简单地使用嗅探器捕获TCP报文段从而获得序列号。( )
【答案】错误(×)
解析 :能使用嗅探器捕获TCP报文段获得序列号的属于非盲攻击(在同一网络)。盲攻击是攻击者与目标不在同一网络,无法使用嗅探器,只能依靠TCP初始序列号预测技术。
三、 简答题(共3题)
8. 简述SYN Flood拒绝服务攻击的原理,并提出至少三种有效的防御方法。
【答案要点】
- 原理 :利用TCP三次握手缺陷。攻击者向目标发送大量伪造源IP的SYN请求,目标机回应SYN/ACK后等待客户端回复ACK。由于源IP是伪造的(不在线或不可达),目标机无法收到ACK,导致大量半开连接驻留在内存中,耗尽TCP连接队列资源,使其无法处理正常的合法请求。
- 防御方法 (任选3点即可):
- 缩短SYN Timeout(连接等待超时)时间;
- 设置SYN Cookie;
- 设置路由器和防火墙,限制单位时间内发往主机的半开TCP连接数量;
- 根据源IP记录SYN连接,丢弃短时间内重复SYn报文的IP包。
9. 针对SQL注入式攻击,请列举出至少四种有效的预防措施。
【答案要点】(任选4点即可)
- 权限严格区分:普通用户与系统管理员用户的权限要有严格的区分,限制普通用户的Drop等危险权限。
- 强迫使用参数化语句:用户输入的变量不直接嵌入SQL语句,而是通过参数传递,杜绝大部分注入。
- 加强用户输入验证:测试输入的大小、类型、格式,过滤分号、注释符等特殊符号。
- 使用数据库自带安全参数:如SQL Server的Parameters集合,提供类型检查和长度验证,将输入视为字符值而非可执行代码。
- 多层环境验证:客户端与数据库端双重验证,不盲目信任前端数据。
- 使用专业漏洞扫描工具寻找可能被攻击的点。
10. 简述TCP会话劫持攻击的原理及其最有效的防范手段。
【答案要点】
* 原理 :攻击者作为第三方介入已经建立TCP连接的两台主机之间。通过嗅探获取双方通信的TCP报文,推算出下一个数据包的序号(SEQ)和确认序号(ACK SEQ)。然后冒充其中一方,在合法主机发送数据前,抢先向另一方发送带有正确序号的伪造TCP数据包,从而接管(劫持)当前的TCP会话,而合法主机的后续数据包则因序号不匹配被拒绝。
* 最有效的防范手段 :加密。包括使用IPsec/VPN进行网络层加密,或使用SSH替代Telnet、HTTPS替代HTTP等应用层加密,使攻击者无法窥探和伪造有效的TCP报文。