☰
网络攻击五阶段详解:从端口扫描到DoS防御的实战指南
2026/9/30 3:04:43 网站建设 项目流程

简介:这份PPT课件系统讲解了网络安全领域最常见的攻击类型与防范方法,面向网络管理员、安全运维人员及信息安全初学者。内容围绕网络攻击的完整流程展开,涵盖预攻击探测中的Ping扫描与端口扫描(开放扫描、半开放扫描、秘密扫描)、操作系统识别,以及漏洞扫描、木马攻击、拒绝服务攻击、欺骗攻击、蠕虫病毒攻击等典型手法,并结合防火墙、入侵检测、防病毒措施给出对应防范思路,可帮助读者建立从信息收集、系统渗透到攻击防御的完整认知链路。资源包共1个PPT演示文稿,大小2.28MB,页面以图解与流程图方式呈现攻击步骤与检测手段,结构清晰,适合高校信息安全课程、企业安全培训或自学入门。目前已有2664人学习浏览,对希望系统了解常见网络攻击原理及基础防御策略的读者,是一份实用性强、信息密度高的讲义。

1. 网络攻击为什么总防不住:先看懂攻击者的五个阶段

网络攻击从来不是“一条命令打穿一台机器”的短视频桥段。实战里走的是五个阶段:探测(Probe)→ 渗透(Penetrate)→ 驻留(Persist)→ 传播(Propagate)→ 瘫痪(Paralyze)。这份关于最常见网络攻击的讲义,拆的就是这五步里每一步的典型手法——Ping 扫描找活主机、端口扫描找服务、漏洞扫描找软肋、木马与蠕虫负责驻留和传播、拒绝服务攻击负责最后致命一击。对刚入门的安全工程师、运维和准备等保测评的同事来说,这套框架有两个直接价值:一是看告警时能判断攻击者走到哪一步了,二是做加固时知道优先级——先堵探测,再管渗透,最后才是对抗 DoS。这篇文章会把每类攻击的原理、判断方法、实操命令和踩过的坑一条条写清楚。

2. 预攻击探测:Ping 扫描与端口扫描,攻击者的第一只脚

2.1 Ping 扫描:找活主机,不是 ping 通那么简单

预攻击探测的第一件事是确认目标是否在线。Ping 的原理是发 ICMP Echo 报文,等对方回 Echo Reply,能拿到回包就说明主机活着、路由通着。但这里有个常见的误区:ping 不通不等于主机不在线。我排查过太多案例,最后发现是防火墙把 ICMP 全丢了,主机上 HTTP 服务跑得好好的。

# 常见做法:先做一次网段存活探测,确认哪些 IP 在线 nmap -sn 192.168.10.0/24 # -sn 表示只做主机发现,不扫端口 # 输出里 "Host is up" 表示目标在线,"Host seems down" 表示没有响应

ping 不通的典型原因有这么几种:目标主机的网卡配置不对、网关路由缺失、防火墙禁了 ICMP、或者源和目标之间做了 NAT。还有一种历史遗留问题叫 “Ping of death”,往目标发一个超过 65535 字节的巨型 ICMP 包,老版本操作系统直接崩溃。现在主流系统都修复了这类协议栈问题,但在内网扫描时如果遇上极老设备,还是别用太激进的包尺寸参数。

从防御角度看,应对 Ping 扫描的办法不是完全禁用 ICMP,而是限制 ICMP 的类型和速率。完全禁 ping 会连基本的连通性排查都做不了,我一般建议在防火墙 / 路由器上只放行必要的 ICMP 类型,比如 echo-reply、destination-unreachable,其余全丢,并且在边界设备上记录扫描来源 IP,方便事后溯源。

另一个容易被忽略的是 Ping 扫描的变体工具,比如 WS_Ping ProPack、Pinger,它们还会顺带探测 NetBIOS、共享资源和用户列表。也就是说攻击者不用等到端口扫描阶段,光是活着的主机列表和开放共享就能决定下一轮攻击从哪台机器开始。

2.2 端口扫描三种模式:开放、半开与秘密扫描

端口扫描是探测阶段的核心工作,目的是把目标主机开放的端口和服务摸清楚。扫描模式大致分三类,区分依据是 TCP 连接建立到哪一步。

开放扫描(Open Scanning)是最直接的方式,扫描器调用系统 socket 的 connect() 去和目标端口完成完整的三次握手。握手成功就说明端口开放,失败就说明关闭。优点是实现简单、不需要特殊权限,缺点是服务器会完整记录下连接行为,如果某个客户端对一批端口轮流发起连接,审计日志里一眼就能看出来。我在内网做合规巡检时会用这种方式,因为要的就是留下审计证据。

半开放扫描(Half-Open Scanning)也叫 SYN 扫描,原理是只发 SYN 包。如果目标回 SYN|ACK,就说明端口开放,扫描方随即发一个 RST 掐断连接,不完成第三次握手;如果目标回 RST,则说明端口关闭。因为连接从未建立完整,大多数应用不会记录到这次探测。它的代价是在 UNIX 系系统上需要 root 权限才能构造原始 SYN 包,Windows 上则需要 Npcap 或 WinPcap 驱动支持。

秘密扫描(Stealth Scanning)则完全不涉及 TCP 三次握手的任何部分,典型代表是 FIN、XMAS、NULL 扫描。原理是向目标端口发送带有 FIN、URG、PUSH 等标志位的异常数据包,按 RFC 规范关闭端口应当回 RST,而开放端口通常会静默丢弃。这类扫描隐蔽性更强,但可靠度差,网络上设备丢包、状态检测防火墙干扰都会导致误报。实际渗透测试里,我做信息收集一般先用 SYN 扫描建立全貌,再对个别可疑端口用 FIN 或 ACK 扫描验证,不会一上来就全秘密扫描。

# 常见做法:SYN 半开扫描快速摸清端口状态 nmap -sS -p 1-1024 192.168.10.11 # -sS 指定 SYN 扫描,需要 root 权限 # -p 指定端口范围,实际工作中先扫常见端口,再扫高位端口 # 确认某个端口是不是真的开着,再上用 connect 全连接复核 nmap -sT -p 3389 192.168.10.11 # -sT 是完全三次握手的 connect 扫描 # 适用于没有 root 权限、或者 SYN 扫描结果被防火墙干扰的情况

-sS和-sT的选择逻辑很简单:有权限且追求效率用 SYN,没权限或需要兼容性用 connect。还有一个更隐蔽的变体叫 IP ID header 扫描,攻击者借用第三方主机的 IP 去扫目标,通过观察第三方 IP 序列号增长规律判断目标端口状态,这种手法要求对第三方主机的网络状况有足够了解,现实中很少见,更多是 CTF 和靶场里出现。

2.3 操作系统识别:指纹探测的常见手法

端口扫描能拿到“开了哪些服务”,下一步就是确认操作系统类型和版本。攻击者知道目标是 Windows Server 还是 Linux 发行版,就能缩小漏洞利用的范围。

操作系统识别(OS Fingerprint)分两种思路。主动指纹是发送精心构造的 TCP 包,依据不同系统对异常数据包的不同响应来判定,比如初始 TTL 值、窗口大小、TCP 选项排序。被动指纹则是抓取目标主机发出的正常流量,分析其中的报文特征,不产生额外探测流量,隐蔽性好很多。

nmap 的 OS 探测就属于主动指纹,我一般加上-O参数,但会同时搭配-sV做服务版本探测,一次拿到系统和版本双结果:

# 常见做法:同步探测操作系统和服务版本 nmap -O -sV 192.168.10.11 # -O 是操作系统指纹探测,-sV 是服务版本探测 # 输出中 "Running: Linux 3.X" 就是系统判定结果

操作系统识别结果不一定准,尤其经过防火墙改写或负载均衡分流后,误判很常见。判定结果是 Linux 但实际是 Windows Server 的情况我遇到过多次,遇到这种情况别急着下结论,手动看 TTL 值更直观:Windows 的初始 TTL 通常是 128,Linux 常见是 64,网络设备常见是 255。用 ping 看回包 TTL,误差概率比全自动指纹低不少,也算是一个土办法。

3. 漏洞与综合扫描:从“有什么端口”到“有什么漏洞”

3.1 漏洞扫描的分类与选型理由

端口扫描告诉你目标开了哪些门,漏洞扫描则是去检查这些门上的锁够不够结实。漏洞扫描(综合扫描)主要分两大类:基于特征的扫描和基于配置的核查。基于特征的扫描是把目标服务的版本号和 CVE 漏洞库匹配,比如检测到 OpenSSH 7.2 就关联一批已知漏洞;基于配置的核查是检查系统账号策略、密码复杂度、共享权限这类配置项,对应的是基线核查需求。

选型上,商业扫描器像 Nessus、Qualys,漏洞库更新快、覆盖广,适合等保测评和重保前的自查;开源方案 OpenVAS 免费且功能完整,适合预算有限的中小团队。我个人的习惯是平时用 OpenVAS 跑例行巡检,重要检查前再用 Nessus 交叉复核一遍,两类扫描结果取交集,能过滤掉相当一部分误报。

3.2 一次完整的综合扫描流程:任务配置与结果解读

综合扫描不是“装个软件,点开始”这么简单。流程上一般分四步:定义扫描范围、配置扫描策略、执行扫描、人工验证结果。

定义扫描范围最关键。第一次做扫描我就吃过亏,把整个网段直接丢进去,结果扫描器把交换机、打印机、IP 电话全部扫了一遍,策略稍微激进一点,打印机直接死掉。从那以后我每次都先拿存活主机列表做白名单,确认资产归属后再开扫。扫描策略上,低风险场景用温和模式,只做端口探测和常见漏洞检查;内网或靶场环境可以用激进模式,启用 exploit 尝试。

执行扫描后,结果的输出通常是一个报告列表,每一项对应一个漏洞,标着风险等级、受影响的资产、漏洞描述和解决方案。这里最需要留意的是漏洞的“可利用性”和“实际影响”之间的差别。一个高危漏洞如果绑定的服务根本没对外网开放,实际风险就低一个档次;反过来,一个中危漏洞如果处在内网核心网段、旁边就是数据库,优先级要大大提升。

# 常见做法:用 nmap 自带的 NSE 脚本做一次轻量漏洞检查 nmap -sV --script=vulners -p 80,443 192.168.10.11 # --script=vulners 会对比漏洞库给出可能的 CVE 列表 # 适合做快速摸排,替代完整漏洞扫描器,准确度不如 Nessus 但够用

vulners脚本的价值在于快,几分钟内把暴露在公网的服务版本和已知漏洞关联起来;局限是只匹配版本特征,不做实际验证,所以结果里大量“可能受影响”,需要人工判断。要做真正可靠的验证,还是得靠完整漏洞扫描器,它们会尝试实际触发部分漏洞来确认。

3.3 扫描结果的误报与验证:为什么扫描器说话不能全信

把扫描器输出直接当成结论是致命的。我最常见到的三类问题:一是服务识别错误导致的误报,比如把 Apache 误识别成 nginx,匹配到一堆不存在的漏洞;二是版本号本身做了伪装,管理员改了 banner 信息,扫描器却信以为真;三是漏洞存在但无法利用,例如需要特殊触发条件或依赖特定配置文件。

处理误报有个笨但有效的方法:对每一个高危及以上漏洞,手工复核指纹。先确认服务真实类型和版本,再去查这个版本对应的 CVE 是否说得通,最后看漏洞描述的触发条件在当前环境下是否满足。一套流程走下来,高危漏洞数量经常能缩水一半以上。这不是说扫描器无用,而是扫描器的职责是帮你缩小范围,最终判断得靠人。

4. 木马、蠕虫与欺骗攻击:驻留、传播与身份冒用

4.1 木马攻击:从植入到驻留的完整链条

木马的本质是做两件事:伪装和开后门。伪装是为了骗你执行它,开后门是为了让攻击者长期持有控制权。植入途径常见的有三种:钓鱼邮件附件、软件捆绑下载、利用漏洞自动植入。执行之后的行为链条通常是:创建新文件、修改现有文件、设置注册表启动项、安装新服务,最终在系统里留下一个稳定的后门入口。

从防御角度看,对抗木马的重点不在“杀”,而在“不让它起来”。内网里终端只要统一启用了白名单管控,阻止未知程序运行,木马即便落地也执行不了。我检查受感染主机时有一套固定动作:先看启动项和计划任务,再看服务列表,最后用netstat查异常外联。

# 常见做法:排查 windows 主机的异常驻留和连接 netstat -ano | findstr "ESTABLISHED" tasklist /svc | findstr "PID号" # 对照业务白名单看是多出来的进程还是多出来的外联 IP # Linux 环境下用 netstat -antlp 或 ss -antlp 替代

查到的结果要重点比对两处:一是连接的目标 IP 是否属于已知业务服务器,二是进程名称是否为系统正常进程。木马经常把自己伪装成 svchost.exe、explorer.exe 这类耳熟能详的名字,但真正的判断依据是进程路径和启动命令行。路径在 System32 目录下的系统进程一般可信,在临时目录、用户目录里出现同名进程则基本坐实了问题。

4.2 蠕虫病毒攻击:自传播模型与抑制手段

蠕虫和木马的定位不同。木马是“潜伏”,蠕虫是“扩散”。蠕虫不需要宿主文件,自身就能通过网络漏洞、弱口令、共享目录批量传播,典型的攻击步骤是:探测网段里的存活主机和开放端口,尝试漏洞利用或口令猜测,成功后写入自身副本并继续向下一批目标扩散。

蠕虫的杀伤力不在于单台机器的破坏,而在于指数级扩散带来的网络拥塞和主机瘫痪。针对蠕虫的抑制核心是“隔离”。发现内网有蠕虫爆发时,第一件事不是杀毒,而是封禁感染的网段与其它网段之间的流量,切断传播路径。传播链断了之后,再逐台清理和补丁。

我整理一个简单的排查和抑制清单:

  • 先按网段确认感染范围,标注已感染 IP 清单
  • 在核心交换机 / 防火墙上对感染 IP 做流量的双向阻断
  • 对未感染的机器,临时封禁蠕虫利用的高危端口(如 445、3389)
  • 清理完单台主机后再解除封禁,避免二次感染
  • 最后统一补漏洞、改弱口令,避免下次复发

这个顺序不能反。先杀毒再封网的做法,在实际爆发里往往一边杀一边继续扩散,越杀越多。

4.3 欺骗攻击:ARP 欺骗与 IP 欺骗的实战边界

欺骗攻击的核心思路是伪造身份。常见的是 ARP 欺骗和 IP 欺骗。

ARP 欺骗发生在局域网内部:攻击者发送伪造的 ARP 报文,把网关的 MAC 地址篡改成自己的 MAC,受害主机的流量就会先经过攻击者再到达网关,实现中间人窃听或篡改。实际场景里,一个办公室里的某台机器中毒后,整个部门上网变得时断时续,抓包一看全是重复的 ARP 应答,就是典型的 ARP 欺骗。

应对办法有两个层级:接入交换机上配置动态 ARP 检测(DAI),通过 DHCP 监听绑定 IP-MAC 关系,非法 ARP 报文直接丢弃;主机层面做 IP-MAC 静态绑定,但大型网络里维护成本太高,还是推荐在网络设备侧做防护。另一种是 IP 欺骗,攻击者伪造源 IP 发包,绕开基于 IP 的认证或实施反射型攻击。这类攻击的缓解在边界防火墙上做——启用反向路径转发(uRPF)检查,源地址不合法的包直接丢。

5. 拒绝服务攻击排查与防御:常见坑与缓解参数

5.1 看现象:连接堆积、CPU 飙升先查什么

拒绝服务攻击(DoS)的目标是耗尽目标系统的资源,让它无法提供正常服务。现象层面最容易识别的是两类:连接数异常堆积和 CPU/带宽被打满。

收到告警后,我第一步是上设备看会话表。防火墙或者负载均衡上如果出现大量 SYN 半连接,源 IP 分散且请求端口集中在某一两个服务,大概率是 SYN Flood;如果连接都是完整建立的,但每个连接只发少量数据、占着连接不释放,则更可能是慢速攻击。这一步不用急着做复杂分析,先确认“攻击面”是什么:是新建连接速率过高,还是并发连接数过高,还是单位流量过大。

# 常见做法:在 Linux 目标主机上快速确认连接状态分布 ss -ant | awk '{print $1}' | sort | uniq -c # 大量 SYN-RECV 说明三次握手被打断,典型 SYN Flood # 大量 ESTABLISHED 且线程繁忙,更可能是慢速连接耗尽资源

5.2 对症缓解:SYN Cookie、连接限速与黑洞路由

确认攻击类型后,对症下药。SYN Flood 的首选缓解是开启 SYN Cookie 机制,让服务器在 SYN 队列满时不再维护半连接状态,而是通过 cookie 校验完成握手。这个开关基本无副作用,生产环境建议默认开启。

连接速率限制方面,可以用 iptables 对单个源 IP 做并发连接数限制,或者在上游防火墙里配置连接速率阈值。

# 常见做法:防火墙层面对单 IP 做连接数限制 iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 100 -j DROP # --connlimit-above 100 表示单个源 IP 超过 100 个并发 SYN 就直接丢 # 数值需要根据业务实际情况调整,防止误伤正常用户

带宽型攻击靠单台设备硬扛是不现实的,UDP Flood 或放大攻击的流量动辄几十 Gbps,必须在运营商侧或高防节点做流量清洗。如果攻击流量已经大到链路饱和,只能在上游把被攻击 IP 的流量黑洞掉,牺牲可用性换网络整体存活,这也是云服务商默认的处理策略。

5.3 四个高频踩坑记录

踩坑一:开启 SYN Cookie 后业务报连接超时。 现象是 SYN Flood 攻击时把 cookie 打开,攻击结束后业务反而访问异常。原因是攻击期间大量合法连接也走了 cookie 校验流程,超时参数默认偏短,攻击结束后遗留的 | 半开连接清理需要时间。 解决:攻击结束后适当调大tcp_synack_retries,让合法重试能顺利完成;等连接池恢复后再调回原值。

踩坑二:iptables 限制误伤 NAT 后面的用户。 现象是封了某个源 IP 后,整片办公区都上不了网。原因是公司出口做了 NAT,大家出去都是同一个公网 IP,限速针对的是源 IP 而不是真实用户。 解决:这种场景应优先放在应用层或负载均衡层做限速,按会话维度控制,不用 iptables 按 IP 控制。

踩坑三:黑洞路由把所有流量都丢了,包括正常业务。 现象是抗 D 设备把攻击 IP 引到黑洞后,业务完全中断。原因是只看了攻击流量峰值,没评估黑洞对正常业务链路的影响。 解决:黑洞前先确认业务是否有多线路或多节点容灾,黑洞只影响单线单点才能接受,否则宁可降级限速也不盲目全黑洞。

踩坑四:攻击结束但 CPU 持续高位。 现象是流量已经恢复正常,主机 CPU 依旧 100%。原因多半是攻击期间积压的大量半连接或日志处理任务还在占用资源。 解决:攻击结束后手工清理连接表、轮转日志、重启一遍业务进程,恢复时间能从小时级缩短到分钟级。

6. 攻击链复盘:用五个阶段做溯源与加固

6.1 把告警映射到攻击阶段

平时收到零零散散的告警,最难判断的是“到底有没有被攻击”。我现在的做法是拿五阶段框架做归类:探测阶段对应扫描日志、异常 ICMP 流量;渗透阶段对应漏洞利用尝试、异常登录行为;驻留阶段对应新启动的服务、异常的进程和计划任务;传播阶段对应内网横向连接;瘫痪阶段对应资源耗尽和业务中断。

归类完之后,攻击者的意图就很清晰了。如果只有探测阶段的告警,说明攻击者还在踩点,加固还来得及;如果有驻留阶段的迹象,那就不是“要不要处理”的问题,而是“已经失陷多久”的问题,要立即启用应急响应流程。这个映射表我不只自己用,也给运维团队做了个简化版,贴在告警处理手册里,新人收到告警先归阶段,再决定处理等级。

6.2 加固清单与验证方法

基于五阶段做防守,顺序是反着来的:先防探测,再防渗透,最后处理驻留和传播。对应的具体措施包括:边界防火墙收紧对外端口,只暴露必要服务;对内网开启主机存活探测的日志记录;高危服务强制启用堡垒机统一入口;终端启用应用白名单;域内禁用共享弱口令。

验证加固效果不是“改完配置就完事”,而是要实际模拟一遍攻击链。我从那以后每次做完加固都强制走一遍流程:先用 nmap 从外部扫一遍,确认暴露面收敛;再用 Nessus 扫一遍,确认高危漏洞清零;最后对内网几台关键主机做一次弱口令和匿名共享检查,确认横向渗透的通路被堵上。全套跑完,我才敢把加固结果填进报告里。

攻击者和防守者之间的角力永远在变,但五阶段框架是相对稳定的坐标系。把一个告警放到坐标系里看,该优先处理什么、下一步可能发生什么,判断就快得多。希望这篇来自一线排查的笔记能帮你在接到告警时少走弯路,也让你对内网资产心里更有底。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询