网络攻防技术

拒绝服务攻击(DoS)

拒绝服务攻击(Denial of Service, DoS)在于对可用性(Availability)发起直接打击

其本质是通过恶意干涉,使得目标系统由于资源枯竭或逻辑崩溃,导致可用性降低或彻底丧失,从而剥夺合法用户获取不中断服务的权利。

  • 定义:DoS是指任何导致系统崩溃、带宽耗尽或存储空间填满,使得其可用性降低或者失去可用性均称为拒绝服务。

DoS攻击通过人为制造极端供需失衡,主要演化为两种形式:带宽攻击连通性攻击。前者侧重于通过海量垃圾流量充塞网络物理通道,而后者则针对操作系统在处理协议逻辑时的计算与存储上限。

特性 带宽攻击 (Bandwidth Attack) 连通性攻击 (Connectivity Attack)
触发机制 以极端通信量冲击网络节点 发送海量连接请求冲击主机
消耗资源 消耗所有可用网络传输带宽 消耗内核资源(如CPU、内存、连接表)
对合法用户影响 合法请求因网络拥塞无法到达 系统忙于处理伪造请求,无法响应合法调用

典型 DoS/DDoS 攻击实例的技术拆解

深入理解网络层(IP/ICMP)与传输层(TCP)的协议缺陷是构建纵深防御体系的战略基石。

攻击者通过利用协议栈在数据包重组、握手状态维护等环节的逻辑漏洞,可以以极小的代价换取目标系统的瘫痪。

  • Ping of Death(ICMP 攻击):
    • 机理: 攻击者发送长度超过 65535 字节的 ICMP Echo Request 碎片。
    • 影响: 目标机在重组 IP 碎片时,会导致事先分配的 65535 字节缓冲区溢出,触发 TCP/IP 堆栈崩溃。
    • 防御: 现代系统已通过边界检查修复;防御策略应在防火墙端阻断非必要的 ICMP 及未知协议分组。
  • Jolt2 碎片攻击(IDS 特征分析):
    • 原理: 循环发送参数高度一致的碎片化 IP 分组。
    • 关键参数: 分片标志 MF=0,偏移量 Offset=65520,分组大小 29 字节,其特有的 IPID=1109 是典型的 IDS 检测特征。
    • 逻辑证明: 根据 IP 分片重组逻辑,计算它的总长度 = 20(IP固定头部) + 65520(偏移量) + 9(最后一片的实际数据大小) = 65549 字节。由于 65549 > 65535,会触发系统层逻辑溢出。
  • Land 攻击:
    • 评估: 攻击者构造源 IP/端口与目的 IP/端口完全一致的 SYN 分组。这使得目标机陷入“自己对自己发起连接”的无限逻辑死循环,迅速耗尽系统资源。
    • 在防火墙上设置过滤规则,坚决丢弃“从外部接口进来的,但源地址却是内部地址”的数据包
  • SYN Flood(TCP 三次握手缺陷):
    • 技术拆解: 利用 TCP “半开连接(Half-open connection)”机制。
    • 攻击方法:
      1. 伪装法: 使用当前不在线的伪造 IP 发起连接。
      2. 阻截法: 在路由器端截获目标机回传的 SYN/ACK 分组。
    • 过程描述: 攻击者发送 SYN,目标机返回 SYN/ACK 并将连接置于半开队列 ,目标机等待永远不会到达的 ACK , 目标机超时(SYN Timeout)并重发 SYN/ACK。

针对协议层攻击,核心防御措施包括:

  1. 时限优化:SYN Timeout 缩短至 20 秒以下,加速释放半开连接占用的资源。
  2. SYN Cookie 技术: 为每个 SYN 请求分配加密 Cookie,仅在收到合法 ACK 后才分配连接资源。局限性: 强制要求攻击者使用真实 IP,无法对抗利用合法 IP 池的攻击。
  3. 连接数阈值: 限制单位时间内同一接口或地址允许的半开连接总数。
攻击名称 核心作案手法(它是怎么使坏的?) 造成的致命后果 核心防御绝招(考试必写)
Ping of Death 发送长度超过65535字节的超大 ICMP Echo 请求碎片分组。 目标机在重组分片时,缓冲区溢出,导致TCP/IP堆栈崩溃死机。 1. 升级系统补丁

2. 配置防火墙阻断未知协议或ICMP包。
Jolt2 发送大量特制 IP 碎片:分片标志位MF=0偏移量设为极大的65520 重组计算总长度(20+65520+9=65549)超过65535极限,系统死锁。 1. 在网络边界禁止碎片包通过或限速

2. 确保防火墙碎片重组算法无漏洞。
Land 攻击 伪造特殊的 SYN 请求包,把源IP和目的IP都写成目标机自己(连端口也一样)。 目标机自己向自己发送连接应答,建立死循环空连接,耗尽资源。 配置防火墙,过滤掉从外部接口进入、但源地址却是内部IP的分组
SYN Flood

(最常考)
利用TCP三次握手缺陷,伪造大量虚假IP发送 SYN 连接请求。 服务器傻等最后一次确认,产生大量“半开连接”,撑爆TCP队列,合法用户无法连入。 1. 缩短 SYN Timeout(超时时间)

2. 使用 SYN Cookie 技术

3. 限制半开连接数。

分布式拒绝服务(DDoS)

DDoS 攻击利用客户/服务器架构,通过主控端(Master)调度分布在全球的代理端(Agent/Zombie,俗称“肉鸡”)发起协同攻击。将多个计算机联合起来作为攻击平台,对一个或多个目标发动DoS 攻击,从而成倍地提高拒绝服务攻击的威力

  • 四部分结构: 攻击者(幕后)、主控端(发布命令)、代理端(运行 Daemon 进程发起实际攻击)、攻击目标。
  • 主控端和代理端分别用于控制和实际发起攻击
  • 其中主控端只发布命令而不参与实际的攻击,代理端发出DDoS的实际攻击包。
  • 攻击阶段分解:
    1. 安置阶段: 利用漏洞在海量物联网节点安置端口监督程序(Daemon)。
    2. 指令阶段: 攻击者向主控端下发激活指令,主控端可在指令发出后立即下线以实现身份隐藏。
    3. 执行阶段: 数百个代理端同时向目标发起伪装过的残缺数据包或连接请求,形成流量洪峰。、

TFN2K是一个DDoS工具,由客户端和守护程序两部分组成。

TFN2K 记住它最牛的三个特征:① 主控端和打手之间加密通讯;② 能发动 SYN、Ping、Smurf 等多种混合攻击;③ 进程名是随机的,很难被杀毒软件揪出来。

攻击名称 攻击派系 核心作案手法(怎么使坏?) 主要消耗的目标资源 ★ 考试必背题眼 / 关键特征
SYN Flood TCP机制类 发送海量伪造源IP的SYN报文,故意不完成最后一步确认。 系统的半开连接队列 当前最常见的DDoS攻击;利用TCP三次握手缺陷。
Connection Flood TCP机制类 利用真实IP与服务器建立完整TCP连接,且长时间不释放 服务器的残余连接数(使其处于WAIT状态)。 小流量冲击大带宽的典型;“占着茅坑不拉屎”。
UDP Flood UDP流量类 发送大量伪造源IP的小 UDP 数据包疯狂冲击目标。 网络带宽。 简单粗暴的流量型攻击;常针对流媒体视频或认证服务器。
UDP DNS Query Flood UDP流量类 向目标发送海量随机生成或根本不存在的假域名解析请求。 DNS服务器的算力与解析能力。 每秒请求超限会导致正常的DNS解析超时瘫痪。
HTTP Get 攻击 应用脚本类 建立正常TCP连接后,不断向存在ASP/PHP等脚本的程序提交查询调用。 后台数据库资源。 能绕过普通防火墙;致命缺点是会暴露黑客真实IP,且对静态网页效果不佳。
ICMP Flood 传统流量类 利用大流量的 ICMP 报文(如Ping包)给服务器带来极大负载。 服务器负载与带宽。 由于目前很多防火墙直接过滤ICMP报文,该攻击出场率已较低

“迄今为止人们还没有找到对DDoS攻击行之有效的(彻底)解决方法”。这是因为 DDoS 攻击大多利用了正常的网络协议(如 TCP、HTTP),防御方很难在海量流量中精准区分哪个是正常用户的请求,哪个是“肉鸡”发来的恶意请求。

防线一:主机系统的“强身健体”(防自身沦为肉鸡)

  • 堵漏洞:及早发现漏洞,及时打补丁。
  • 管权限:给管理员等特权账号设置强密码,防止被轻易爆破。
  • 关服务:关闭不必要的网络服务(比如不用的端口直接封死),减少黑客的可乘之机。

防线二:网络边界的“设卡拦截”(控制流量进出)

  • 部署防火墙:在系统边界加装防火墙,利用规则对所有出入的数据包进行严格过滤,限制异常包的进出。
  • 网络与路由优化:合理设置路由器,优化对外提供服务的主机,对公开服务加以并发限制。

防线三:事中与事后的“监控报警”(异常行为感知)

  • 引入 IDS(入侵检测系统):安装如 NIPC、NGREP 等入侵检测工具,经常扫描系统漏洞。
  • 日志与文件监控:每天查看安全日志,对核心系统文件加密,并定期检查文件是否被黑客偷偷篡改。

系统漏洞与应用层攻击

软件实现层面的缺陷(如 C/C++ 的内存管理、SQL 拼接逻辑)是防御体系中最不稳定的变量。即便协议层安全,应用层的设计失误仍会导致核心业务资产泄露。

缓冲区溢出(Buffer Overflow)

  • 根本原因: C/C++ 语言在处理数组和指针时缺乏强制边界检查。
  • 最轻的是程序崩溃、系统死机;最致命的是黑客可以通过溢出,执行非授权的恶意指令,直接取得系统最高特权(Root权限)
  • 防范策略
    • 打补丁:最直接的方法,及时安装操作系统和软件的安全补丁
    • 编写安全的代码:手动检查变量大小和数组边界,使用具有边界检测功能的 C 编译器
    • 系统安全策略配置:要防止系统信息泄露

案例:Heartbleed(心脏滴血,CVE-2014-0160):

  • 技术深度还原: 在处理 TLS Heartbeat 消息时,memcpy() 调用未对长度进行验证。
  • 内存泄露逻辑: 攻击者控制了 HeartbeatMessage 结构中的 Payload Length。当 SSL3_RECORD 结构中的实际记录长度(Actual Record Length)未被验证时,服务器会根据攻击者伪造的超大 Payload 长度,从内存缓冲区中提取数据,导致每次泄露 64KB 敏感数据(如密钥、明文密码)。
  • 修复手段极其简单,仅仅是在 OpenSSL 1.0.1g 版本中加了一行“边界检查”代码

SQL 注入(SQL Injection)

SQL 注入则是利用了“数据库分不清什么是数据、什么是命令”的应用层漏洞

  • 当网页后台把用户输入的内容(比如用户名),直接拼接到 SQL 查询语句中时,灾难就发生了。
  • ★ 必考经典案例(or 'a'='a' )
  • 原本后台的查询逻辑是:Select * from items where owner = '输入的用户名' and itemname = '输入的密码'
  • 黑客故意在用户名里输入:wiley' and itemname = 'name' or 'a' = 'a
  • 拼接后,最后面多出了一个 or 'a'='a'。因为字母 a 永远等于 a(恒为真),这就导致整个查询条件瞬间全部成立,等价于 select * from items。黑客不需要知道密码,就直接绕过了验证,越权访问了整个数据库

  • 防御逻辑:

    • 严格区分用户权限(最小特权原则):不要给普通用户分配建表、删表(Drop Table)等高级权限
    • 强迫使用参数化语句(★ 最核心防御):绝对不能把用户的输入“直接嵌入”到 SQL 语句中;而是通过参数传递拼接到SQL语句
    • 严格验证用户输入(设卡过滤)坚决拒绝包含分号(**;**)、注释符、转义序列等容易引发注入的特殊符号
    • 善用数据库自带的安全参数集合:SQL Server 提供的 Parameters 集合。它自带类型检查和长度验证功能

恶意软件

恶意软件就是专门为“恶意目的”而开发的软件

  • 要么利用另一个程序的系统漏洞(比如之前讲过的缓冲区溢出),
  • 要么利用用户的天真(比如伪装成正常文件诱骗点击),
  • 最终目的是造成系统或文件的损坏,以及欺骗/窃取数据

第一梯队:最爱混淆的“传统三剑客”(★ 必考辨析)

  • 病毒(Virus)必须要有“宿主”。它像寄生虫一样感染正常的可执行文件,通常需要用户“主动去点击/运行”才会发作并感染其他文件。
  • 蠕虫(Worm)能“自动”疯狂繁衍。它不需要宿主文件,也不需要用户干预,专钻网络的空子(漏洞)进行自我复制和主动传播,常常会导致网络严重拥塞。
  • 木马(Trojan)靠“伪装和欺骗”。它把自己包装成极具诱惑力的正常软件(如游戏外挂、破解补丁),诱骗“天真的用户”下载安装。它一般不自我复制,但会在后台偷偷打开缺口,窃取密码。

第二梯队:DDoS 攻击的幕后黑手

  • 机器人 / 僵尸电脑(Botnet / Zombie):这正好和我们前面学的 DDoS 攻击闭环了!黑客利用木马或蠕虫感染成千上万台普通用户的电脑,把它们变成“代理端(肉鸡)”。一旦主控端下达指令,这些僵尸电脑就会同时向目标发起洪泛攻击。

第三梯队:潜伏的刺客与间谍

  • 逻辑炸弹(Logic Bomb):平时潜伏不动,只有当满足特定触发条件(比如到了某个特定的日期、或是公司开除了某个员工)时,才会瞬间引爆,执行破坏代码。
  • 后门(Backdoor)与 Rootkit:黑客在攻破你的系统后,为了防止以后进不来,特意留下的“隐蔽通道”。Rootkit 更是高级,它能把自己深度隐藏在操作系统底层,连杀毒软件都查不出来。
  • 间谍软件(Spyware)与 广告软件(Adware):这类通常不搞破坏,但非常烦人。它们潜伏在后台偷偷记录你的键盘输入(窃取账号),或者疯狂弹窗给你强行推送广告。

©OZY all right reserved该文件修订时间: 2026-06-25 14:57:49

评论区 - 04_网络攻防实例

results matching ""

    No results matching ""