來源:量子位
工作電腦被偷的 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/