聊安全绕不开的“认识网络攻击”,这是Security+学习笔记的第二篇。不管是准备认证考试,还是日常做运维、开发,甚至只是负责公司内部网络的人,其实都绕不开这个话题。我自己的体会是:很多人不是不会用安全工具,而是对攻击缺乏整体框架,看到告警不知道算什么类型,知道类型又说不清攻击者接下来会做什么。这篇不搞照本宣科,我把常见攻击类型、攻击者的完整思路、以及日常能落地的排查方法一起捋一遍。
1. 为什么认识攻击比记住攻击名字更重要
1.1 一次险些误判的告警
先讲个我值班时真碰到的场景。某个晚上监控平台突然弹告警,一台业务服务器对外发出大量连接,在线状态一直跳变。同事第一反应是“中挖矿木马了”,准备直接隔离服务器。按常规操作,我先登录看了下进程和连接状态,发现发起连接的进程根本不是可疑文件,而是业务方临时部署的同步脚本出了bug,循环重连外部接口而已。这个误判让我印象很深:如果没有建立系统的攻击认知,很容易把所有异常都归因于攻击,反而耽误真正的问题排查。
这也是我坚持先把“认识攻击”单独拎出来讲的原因。攻击类型几十上百种,但真正需要你快速判断的,通常是它属于哪个大类、利用了什么弱点、会在系统里留下什么痕迹、应该从哪条路封堵。这四件事,比单纯记住一个攻击名词重要得多。
1.2 认识攻击的四个维度
我用一个“医生看病”的类比来理解攻击:类型就是“病种”,原理就是“病因”,特征是“症状”,应对是“治疗方案”。只记住类型而不知道原理,等于知道病人发烧,但不知道怎么对症下药;只记住防御命令而不知道攻击特征,等于只会开退烧药,遇到别的病就抓瞎。
所以在后续每个攻击类型里,我都会带上四个维度来讲:它是什么、怎么发生的、有什么迹象、拿什么防。这样不管是备考还是实战,你拿到一个告警,能自己把这段逻辑推出来,而不是等着别人给你结论。
2. 恶意软件家族:病毒、蠕虫、木马与勒索软件
2.1 病毒和蠕虫:传播机制的差异
恶意软件是初学者最容易接触的一类攻击。病毒和蠕虫经常被混在一起说,但传播机制差别很大。病毒需要宿主文件,它会把自己附着在可执行程序或文档上,等用户运行该文件时被触发。这就像搭车客,必须搭上一辆车才能动。蠕虫完全不需要宿主,它利用系统漏洞或者配置缺陷主动在网络里爬,从一个主机扫描到另一个主机,自己就能复制和传播。
一个典型的病毒场景:办公网里有人下载了带宏的文档,打开后宏执行脚本下载后续载荷。蠕虫的场景则是某个未打补丁的服务器暴露在公网,扫描到的攻击流量直接利用漏洞把自己放进去,再扫同类目标。病毒重在“诱骗执行”,蠕虫重在“主动扩散”,理解这点,你就知道为什么蠕虫爆发速度通常远快于病毒。
2.2 木马、间谍软件与rootkit
木马的核心特点是伪装。它看起来像正常程序,甚至能正常使用,但背后会给攻击者开条通道。间谍软件则是更阴的那种,它不破坏系统,而是悄悄收集你的账号、浏览记录、输入内容,持续外传。说完这两个,必须提一下rootkit,这种恶意软件专门隐藏自身痕迹,它会挂钩系统底层调用,让进程、文件、注册表项都“隐身”,常规查杀很难发现。
识别这几类恶意软件,有个常见切入点:开机启动项、计划任务、可疑服务里多了不认识的项目。攻击者想要持久化驻留,基本绕不开这几个地方。我把常见恶意软件类型整理成了一个速查表:
| 类型 | 主要传播/入侵方式 | 典型特征 | 防护重点 |
|---|---|---|---|
| 病毒 | 文档宏、感染可执行文件 | 文件被篡改、杀软频繁报毒 | 禁用宏、保持杀软实时防护 |
| 蠕虫 | 漏洞利用、弱口令扫描 | 网络连接数剧增、内网成片感染 | 及时打补丁、收敛暴露端口 |
| 木马 | 伪装软件诱导安装 | 有未知外联、后台常驻进程 | 只装可信来源、按白名单管控 |
| 勒索软件 | 钓鱼邮件、RDP弱口令、漏洞 | 文件被加密、桌面出现勒索提示 | 离线备份、账号二次认证、限制远程登录 |
2.3 勒索软件的入侵路径与防护
勒索软件几乎每年都是重灾区。我梳理过的入侵路径主要有三条:一是钓鱼邮件附带恶意附件或链接,用户点击后落地;二是暴露在公网的远程桌面或服务用弱口令登录,被爆破后直接投放;三是利用未打补丁的已知漏洞。勒索软件落地后通常会加密本地和共享目录中的文件,然后留下联系方式要求支付赎金。
防护勒索软件,我最想强调的一点是:备份是你真正的底牌。攻击者不怕你防御好,就怕你有干净的历史备份能无损恢复。备份要做到“离线”和“定期验证”,不能长期挂在同一个网络里,否则会被一起加密。与此同时,收敛远程桌面的公网暴露面、开启多因素认证、用EDR监控可疑加密行为,这几种措施组合起来比单靠杀毒软件靠谱得多。
3. 网络层攻击:从DDoS到中间人攻击
3.1 DDoS:耗尽资源的三板斧
DDoS是第一类需要从流量视角理解的攻击。典型的有SYN Flood,攻击者发大量只有握手请求的报文,让服务器保留大量半开连接。你可以想象成一家餐馆,一直有人推门进来说要吃饭,但就是不完成点餐,门口永远站满人,真正想吃饭的顾客根本进不来。服务器会因为半开连接队列被占满,无法再响应正常用户的连接请求。
应对DDoS没有银弹,通常分三层做:在网络设备上做限速和过滤,在系统层面调整TCP参数(比如启用SYN Cookie),在流量超过本地带宽时接入提供流量清洗服务的厂商。判断自己是不是被DDoS打的,最简单的方法就是看流量图:如果某段时间入向流量呈脉冲式暴涨,且来源IP分散,大概率就是流量型攻击。真正被打时,别硬扛,先切断入口或者切上线清洗,再复盘加固。
3.2 中间人攻击与流量嗅探
中间人攻击的典型代表是ARP欺骗。ARP是局域网里把IP翻译成MAC地址的协议,它本身不鉴权,攻击者可以发送伪造的ARP应答,让受害者的数据流经攻击者的机器。我听过的真实例子里,很多就发生在办公楼同一个WiFi下,攻击者伪装成网关,用户访问网站的全部明文流量被看光。
对付这类攻击,思路不是不用网,而是让传输内容本身不容易被偷看:全链路启用HTTPS,校验证书,处理重要业务时尽量避开公共WiFi。在局域网侧,交换机上做静态ARP绑定或者启用动态ARP检测,都能有效抑制ARP欺骗。关键是安全意识:不轻信“免费WiFi无密码”这种便宜,很多嗅探攻击都发生在这种场景。
3.3 端口扫描与指纹识别
攻击者要想打进来,得先知道你的网络里有谁、开着什么端口。端口扫描就是干这个的。扫描工具本身不算恶意,因为安全评估人员做授权测试也用它。但从防御方看,扫描行为往往是攻击链条的第一步。我建议运维同事至少知道怎么看扫描特征:短时间内大量目标地址和端口的连接尝试,连接完马上断开;或者用慢速扫描伪装成正常流量,间隔很长且只扫特定端口。
防范扫描没有一劳永逸的办法,因为扫描本身很难完全禁止。有效做法是收敛暴露面:不用的端口一律不对外开放,管理类服务和业务端口分开,用防火墙将管理口限定到白名单IP。再配合入侵检测系统,对一些高危端口组合的扫描行为做告警。你业务真正打开的端口越少,被种下的攻击面就越小。
4. 密码攻击:撞库、暴力破解与身份防线
4.1 暴力破解、字典攻击与撞库的区别
密码攻击的目标是身份凭证。暴力破解是把所有组合挨个试一遍,理论上最全面但效率最低。字典攻击拿高频密码表去猜,效率高不少。撞库则是拿别处泄露的用户名密码组合,拿到你这里碰运气。撞库的成功率出乎意料地高,因为很多人习惯一个密码走天下。我在排查日志时见过内部账号被异地登录后,顺着历史记录发现同一个密码早就出现在多个平台。
这三类攻击的防护思路也有区别。暴力破解可以靠登录失败锁定和延迟策略缓解;字典攻击需要强制密码复杂度,更重要的是拒绝常见弱口令;撞库这条路基本没法靠密码本身防住,因为你控制不了别人平台是否泄露,只能靠多因素认证和风控手段兜底。
4.2 哈希存储与彩虹表的对抗
很多系统不存明文密码,而是存密码的哈希值。哈希是一种单向算法,从哈希反推原始密码计算量极大。但攻击者有两个绕法:一是使用彩虹表,也就是事先算好了海量密码和哈希的对应关系,拿哈希值反查;二是抓到一个能猜出规律的弱哈希就直接还原。
对付彩虹表,主流办法是加盐。通俗点说,盐就是在原密码后面拼接一段随机字符串再计算哈希,每个用户盐不同,同一个密码在不同账号下的哈希也不同,预计算的彩虹表就失效了。你作为用户端能做的事是:不要在不同平台重复密码,定期用密码管理器生成随机的强密码。攻击者就算拿到一个平台的哈希,也很难横向打通你的其他账号。
4.3 多因素认证为什么是必选项
密码攻击防到最后,你会发现单靠密码永远不够。多因素认证就是再增加一到两个独立因素,最常见的如短信验证码、身份验证器动态码。即使密码被撞库撞出来了,没有第二个因素,攻击者依然进不来。我自己无论公司内部系统还是个人重要账号,凡是支持多因素认证的全都开启。这里有个细节,短信验证码偏弱,如果平台支持独立的身份验证器应用或硬件密钥,优先选这些。
对于管理员来说,强制全员开启多因素认证,再配合异常登录检测(如短时间内异地登录、新设备首登提醒),基本能把密码类攻击挡在门外。密码本身从来不是终点,它只是身份验证的起点。
5. 应用层攻击与社会工程学:防不胜防的入口
5.1 SQL注入
SQL注入攻击的根因是把用户输入当成了代码执行。经典场景是登录框里输入一个特殊构造的字符串,让后台拼接出来的SQL查询逻辑被改变,从而绕过身份校验或拖取额外数据。判断一个输入点是否可能被注入,核心看系统有没有对输入内容做参数化处理。参数化查询就是先把SQL语句结构固定,再把用户输入当成纯数据传给数据库,从原理上避免了拼接注入。
防御SQL注入不是靠过滤一遍输入字符就万事大吉,更推荐的做法是:数据访问层统一使用参数化接口;数据库账号按应用所需最小权限授权;Web应用上线前做一轮注入类的安全测试。我在做安全评审时看到一个最普遍的问题,就是开发为了方便,把数据库高权限账号直接配给业务连接串,一旦注入成功,攻击者控制的不只是某张表,而是整个库。
5.2 XSS与前端安全的坑
XSS则发生在浏览器端。攻击者往页面里注入一段能执行的脚本,当其他用户访问这个页面时,脚本跟着页面一起执行。可以把XSS简单分成反射型和存储型,存储型风险更大,因为它会保存到后台数据库,影响所有访问到该页面的用户。我曾经处理过一个案例,某系统的留言板没有做输出转义,攻击者在留言内容里插入了脚本,任何管理员打开后台查看留言,会话凭证就被悄悄转发走了。
加固XSS的方向,一个是输出侧严格编码,把用户内容里的尖括号、引号等特殊字符转义成安全形式,另一个是配置内容安全策略,限制页面能加载哪些外部脚本。单纯靠开发人员“小心写代码”是防不住的,必须在前端框架、Web应用防火墙等多个层面做约束。
5.3 社会工程学:钓鱼与商业诈骗邮件
聊社会工程学之前得先记住一点:攻击者不只是打“机器”,也在打“人”。钓鱼是最常见的形式,攻击者伪造可信发件人、链接或附件,诱导收件人点击。怎么快速识别钓鱼邮件,我通常看四件事:发件人域名是不是伪装(比如把字母o换成了数字0)、邮件里的链接是否与显示的域名一致、内容是否刻意制造紧急情绪、附件是否要求你启用宏或执行程序。这四条只要有一条中招,就要警惕它是不是假的。
还有一类是商业诈骗邮件,攻击者冒充高管或供应商,以紧急付款、变更收款账户为由骗取转账。这类邮件不依赖恶意代码,纯粹靠话术,所以传统防护设备很难拦。重点在企业流程上补洞:涉及资金变动的指令必须走线下或电话二次确认,不能只看邮件。无论邮件写得多么真实,凡是要求你打破常规流程的动作,都要停下来核实。把“人”当成最后一道防线,这个理念越早建立越好。
5.4 尾随、物理安全与办公环境风险
和线上攻击相比,物理层面的社会工程学攻击显得更“朴素”但同样有效。比如攻击者冒充维修人员、新同事跟着员工刷卡进办公区,然后瞅准没锁屏的工位接个设备或者拷贝文件。对付这类攻击不能只靠监控摄像头,更重要的是办公区准入制度和员工意识:尾随要主动制止、长时间离开工位必须锁屏、陌生人在敏感区域要上前询问。网络保护得再好,如果别人能直接坐到终端前面,之前的努力都会打折。
6. 攻击链视角:攻击者是怎样一步步得手的
6.1 攻击链的七个阶段
把单个攻击类型串起来看,就形成了一条攻击链:侦察、武器化、投递、利用、安装、指挥控制、目标行动。侦察阶段攻击者收集你的网络范围、端口、人员信息;武器化阶段准备攻击载体(比如带着恶意宏的文档);投递阶段把载体发给你(钓鱼邮件、恶意网站);利用阶段触发漏洞或诱导执行;安装阶段在系统里落地后门;指挥控制阶段建立远程指令通道;最后的行动阶段才真正窃取数据或破坏系统。
这个链条最大的价值是告诉你,攻击不是一瞬间的“啪,中毒了”,而是一系列可被观察的中间步骤。每一个阶段留下的痕迹都不同。侦察阶段是扫描请求,投递阶段是邮件附件或下载行为,利用阶段是异常报错或进程崩溃,安装阶段是新的启动项和计划任务,指挥控制阶段是规律性的外联心跳包。能够定位攻击在哪个阶段,你就能知道该优先封堵哪条路径。
6.2 从两条线索判断攻击所处的阶段
我实际排查时,会同时看两条线:一条是网络行为,一条是主机行为。先看网络行为,用流量分析工具查服务器外联情况,重点是“规律性”的通信,很多控制通道为了保持在线都会有周期性心跳包。再看主机行为,登录服务器检查进程、启动项、计划任务、最近创建的账号。这个顺序有个好处:先看网络能帮我快速判断攻击是不是仍然在线,再查主机才能确定它留了哪些后手。
有一回排查疑似失陷主机,我先是看到该主机每5分钟向一个境外IP发一个HTTP请求,日志里出现了从未见过的计划任务,顺藤摸瓜还找到了一个伪装成系统服务的二进制文件。如果没有攻击链这个框架,看到计划任务可能只是当作误报清理掉了,但理解了它处于“指挥控制”阶段,就知道清理完之后还得排查最初是通过哪个漏洞进来的。斩断链条的后端只是止损,找回漏洞入口才算闭环。
7. 日常防护与常见问题排查实录
7.1 常见问题的快速试错表
下面是整理自实战排查经验的常见问题和处理思路,按照“症状—可能原因—处理建议”的方式做了个速查表,适合打印贴在工位上。
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
| 服务器CPU高且对外连接多 | 挖矿木马、业务死循环 | 定位进程,查父进程和启动项,断网隔离后再清除 |
| 收件箱出现大量退信 | 账号被盗发垃圾邮件 | 立即改密,开启多因素认证,检查转发规则是否被篡改 |
| 网页被篡改 | 网站存在漏洞被入侵 | 先备份现场,查找后门文件,再恢复内容并修复漏洞 |
| 登录日志频繁异地登录 | 账号密码泄露 | 改密、上线多因素认证,排查是否有未注销会话 |
| 内网ARP广播剧烈 | ARP欺骗、网络环路 | 检查接入交换机绑定,定位可疑设备,封禁后审计 |
| 主机外联规律性心跳包 | 疑似控制通道 | 捕捉流量样本,查文档记录通信目标,然后断网处置 |
7.2 排查事故时的处置顺序
遇到疑似攻击,很多人第一反应是“赶紧杀毒”。从实战看,更合理的顺序应该是先保留证据、再阻断、最后才修复。原地杀毒可能把关键痕迹直接清掉,后面想溯源就很难了。我的做法是:一旦确认疑似失陷,先把主机从网络隔离(拔网线或者防火墙封禁),再对内存和磁盘做一份镜像,之后才谈清理和恢复。这个顺序适用于大多数 malware 类事件,尤其是涉及勒索软件时,早一秒隔离就能少一片被加密的文件。
排查时务必把时间线记好:什么时候发现、有什么现象、做了什么操作、结果如何。因为很多攻击是潜伏了几个星期才被发现的,时间线能帮你在日志里往前回看,界定真正受影响的窗口。一次完整的排查记录,比一次成功的清理更有价值。
7.3 从哪里开始学“认识攻击”
最后给还在入门的朋友一条路径建议。不要上来就去啃漏洞库或者渗透测试工具,先把本文列的攻击类型和攻击链模型吃透,再用自己搭的实验环境去验证:起一台虚拟机,模拟一次钓鱼附件释放、一次端口扫描、一次破解弱口令,观察它在系统日志、网络连接和进程里留下的特征。自己亲手跑一遍,比背十遍笔记都记得牢。
学习顺序上,我个人的体会是:先认识攻击的“类型”,再理解攻击的“过程”,然后才是防御的工具和策略。这个顺序反了,你很容易陷入“会用工具但不会判断该不该用”的误区。安全这条路没有终点,攻击手法会不断翻新,但底层逻辑始终没变——它永远在找人和系统的弱点。把这两类弱点摸清楚,你对“认识网络攻击”的理解就已经到位了。
我现在自己在值班时还保留一个习惯:再小的告警也会顺手记一笔,记录当时的时间、现象和处置动作。刚开始觉得麻烦,后来发现这些笔记在复盘和追查时非常顶用。如果你也打算认真学这块,不妨从今天起就建一个自己的排查日志。