BugCheck7b's recent timeline updates
BugCheck7b

BugCheck7b

V2EX member #295987, joined on 2018-03-02 17:40:33 +08:00
Today's activity rank 19108
BugCheck7b's recent replies
懒了不想研究这个了,反正我不用 TPM ,随他去
(也许还能想象其他玩法比如加载驱动 bootkit ,串口调试注入代码等等)
(绕过,就是类似 kon-boot 那种 Windows 账户密码绕过吧。Windows 账户密码跟 TPM bitlocker 算是一个体系的,正常启动就必须输入 Windows 账户密码,U 盘 winpe 等其他启动路径 TPM 就不释放密钥不给解 bitlocker )
另外好多年前我就观察到一件事。如果 bitlocker 只用密码加密,不用 TPM ,然后 bcdedit 设置 bootmenupolicy 为 legacy 让 F8 复活,就可以看到按 F8 时 bootmgr 也和正常启动时一样会提示你输入密码解锁 C 盘。
这个也有点让我不明白说实话……只是显示个 F8 菜单而已,菜单里有什么,必须解锁 C 盘才行?

上面这个现象我姑且理解为,可能是 F8 菜单允许临时修改启动参数,于是就害怕出现绕过,于是就要求你先解锁 bitlocker ,你解得了 bitlocker 自然就证明你有权限干任何事情。

但今天还进一步观察到更奇怪的现象。如果用了 TPM ,按 F8 好像就会直接让 bootmgr 放弃 TPM 解锁,不会提示输入 TPM PIN ,而是直接提示你输入恢复密钥。
而且一旦按过一次 F8 ,除非重启,否则本次启动就只能用恢复密钥解锁了,无法使用 TPM+PIN 解锁启动。必须重启才能再次使用 TPM+PIN 。
今天又试了一下,还是没复现成功。

不过我今天开启了一下 TPM+PIN (而且还是可以使用字母符号复杂密码的强化 PIN ,需要额外多改一项组策略),感觉有一点可能未必如我之前所想。
我看到按 SHIFT 重启进 WinRE 时一样在 bootmgr 环境里就提示输入 PIN ,那么在进 WinRE 时至少 bootmgr 也和正常启动一样,有向 TPM 请求释放密钥,但 TPM 有没有给释放就不知道了。可能需要开启 bootdebug 串口调试才能知道(哦这个估计还跟 TPM PCR 策略犯冲,得调?)
我这边的 WinRE 默认安装在未加密的隐藏恢复分区里,启动它按理说也不需要 bitlocker 解锁……所以我有点不明白。按理说不加密的 BCD 和恢复分区已经足够它启动了。
总之进了 WinRE 也一切如常,还是微软的向导界面,还是 C 盘未解锁。

从 GitHub 那边看到微软 MSRC 已经把这个列为一个漏洞在追踪了。
之前试的时候,还看到评论区提到(尤其是利用成功时) FsTx 应该会被吃掉消失,但我这边也从来没观察到这个现象。
YellowKey 我用 VMware 尝试复现了一次,没成功。
而且我看到按 SHIFT 键重启后,系统重新从 UEFI 固件走了,然后引导 WinRE (而不是正常的引导途径)自然就不会让 TPM 释放密钥。
热端被黑是不是就能阻隔冷端防止其被传染我觉得也不好说。

比如 U 盘传递交易信息,众所周知 U 盘很容易传毒,不仅 Windows ,我记得 Linux 桌面都爆过类似漏洞,甚至都不需要点击触发: https://www.bitdefender.com/en-us/blog/hotforsecurity/uh-oh-how-just-inserting-a-usb-drive-can-pwn-a-linux-box

交易信息在冷热两端之间传递时,从应用层的钱包内部逻辑,到钱包接受书籍的接口,再到操作系统的网络栈,各种固件……用怀疑眼光去看其实每一个层次都可能存在逻辑 bug
我还稍微反思过这个体系到底安全不安全。目前的感觉是,没想象中那么安全,甚至有点鸡肋,但好像也不是一点提升没有。

(在冷端干净前提下)热机就算被黑也不能直接偷走助记词,无法一锅端。(但也有可能中招收款地址替换这种)

感觉搞冷热分离有点用,但也就上述这一点。

而且还得依赖冷端干净作为前提。

这个体系给人感觉好像“冷机不触网所以不可能黑”,但这完全是个错觉。
如果冷机最初就被做了手脚,从生成助记词时用假随机数,到在交易数据里夹带私货(甚至 btc 用的 ecdsa 签名本身就存在隐蔽的侧信道泄漏 kleptography 问题,可以把泄露的信息藏在交易签名数据本身里,外界看来毫无异样,而且还能只泄露给黑客一个人知道),能搞的事情还是太多了。根本没办法防。
@wxmomomowx
热机联网监控钱包余额,新收款地址是用 BIP32 HD 钱包原理生成的。(不过老实说我看到 gap limit 问题之后就感觉 BIP32 这设计远不如想象中那么神奇,蛮蛋疼)

热机写出未签名的新交易。
然后冷热机之间归根到底还是得有数据交互,不直接联网,也得二维码 蓝牙 U 盘 甚至好像还有音频 modem amodem (很多年前用过支付宝咻咻咻,不知道现在还有没有)
冷机作为一个比较固定的(不会跑乱七八糟软件),与外界隔绝的,干净安全的环境,所以可以再次审核一下交易内容,确认无误再签名,类似有屏幕的 U 盾。
签名好了,再用二维码等手段传出去,给热机广播,然后等进链确认。

你自己用 electrum 组一下体会一下就知道了……我记得还有 testnet 模式,不用真钱也可以。
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1044 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 18:47 · PVG 02:47 · LAX 11:47 · JFK 14:47
♥ Do have faith in what you're doing.