问题描述
我正在努力通过 WMI 在主机上获取唯一的硬件指纹。 但是,我发现这种方法非常脆弱。
至少有两个攻击向量:
- 通过内存操作攻击内核空间 https://github.com/Alex3434/wmi-static-spoofer
- 通过 dll-hooking 攻击用户空间 https://dzone.com/articles/windows-api-hooking-and-dll-injection
最终,我将 TPM 技术作为硬件识别解决方案进行了调查。 令我惊讶的是,基于软件的 TPM 攻击是如此罕见。
我的问题是
- 为什么 TPM 可以防御基于软件的攻击,例如 dll 挂钩和内存操作?
解决方法
TPM 中有一些功能(至少在 2.0 中)有助于防止此类攻击。
- 您可以使用证明来检查密钥是否受 tpm 保护。
- 您可以使用基于会话的加密/解密来保护您的应用程序和 TPM 之间的至少一些数据。
但是如果攻击者可以执行您列出的任何攻击,他必须设法获得系统的管理员或 root 权限,因此可以执行其他攻击来窃取您的数据。