之前写过一篇文章讲如何使用 TPM 进行 SSH 认证, 告别了用着 id_rsa
/id_ed25519
裸奔的年代, 解决了我的一个心头大患.
不过电脑中除了 SSH 私钥, 还有一些其他较为关键/隐私的文件夹需要保护, 比如浏览器 User Data
, XShell 配置文件夹, 开始菜单启动项等. 既然 Windows (因为一堆历史包袱) 不做应用隔离, 我就自己来做.
我最早接触的这类主动防御/入侵防御/文件夹保护/HIPS功能(我也不知道叫啥好, 下文统称 HIPS)是火绒的文件夹防护. 当年 QQ 被曝光读取浏览器历史, 很多人开始使用火绒限制 QQ 读取浏览器数据等隐私文件夹.
小插曲: 开源的尝试
当时看到这个功能就觉得挺不错的, 但是用火绒限制 QQ 多少有点以毒攻毒, 网上找了一圈没有找到一些看起来比较可信的替代品… 秉持着万物皆可开源的精神, 我打算自己写一个: MiniHIPS. 我开始尝试用了 Minifilter 直接过滤 IRP 请求, 但是现在 Windows 的驱动需要(价格十分昂贵的)微软签名, 否则只能在测试模式下运行, 对我自己和其他用户都非常不友好.
后来我一转思路, 直接注入 DLL 到所有进程中, Hook ntdll.dll
中一系列文件相关的 API, 这样可以不要进内核的情况下拦截 syscall.
当然用户态拦截也用用户态处理的问题, 比如有一些已知的方法绕过这种 Hook, 然后入侵性更强会导致一堆兼容性问题(总有一些应用出于各种原因不愿意被别人 Hook), 然后还得确保当前进程创建的一些子进程也被 Hook 到, 还要处理复杂的文件规则.
所以目前我完成了一个非常基本的概念验证, 在我的电脑上粗糙的测试下似乎没有问题, 但是要达到能用水平还要很多很多工作和测试. (比如配置用的前端, 各种 corner case 的处理.)
由于最近不是非常空, 而且感觉写出来还有亿个玄学 bug 要 de, 所以暂时🕊了.
投靠卡巴斯基
原地放弃开源转向商业方案, 经过一番简单的搜索和对比, 又去卡饭转了一圈, 当即花了 118 元买下了三年 KIS 订阅.
Kaspersky Internet Security(KIS) 或卡巴斯基 Standard 及以上的版本中, 支持一个”入侵防御”的功能, 其中可以自己定义类似火绒的文件规则, 还支持更多行为的过滤(比如访问其他进程内存).
默认情况下 Kaspersky 处于”自动模式”, 会自动根据 KSN 中的信誉评分和数字签名等情况来判断一个应用是否可信, 并完全自动的做出判断, 放行大部分文件访问, 只对于很少数的可疑访问询问用户或直接拦截. 然而我并不相信数字签名或所谓的 Machine Learning 病毒检测, 所以我主动关闭了 自动执行推荐操作
和 信任具有数字签名的应用程序
两个选项, 切换到手动挡自己配置.
(p.s. 其实这也是一种”钓鱼”行为, 有任何应用尝试访问敏感文件夹都会立即弹窗提示我, 如果有可疑应用出现我能立即发现.)
以下举几个我配置的例子:
按应用限制 - 限制一些不信任的软件
我的笔记本目前是 Lenovo 国行的小新 Pro14 2021, 虽然我已经格盘重装过了系统, 并且没有主动下载安装过任何来自联想的软件, 但 Windows 自动更新还是帮我装了好几个 OEM 提供的软件, 我懒得逆向, 根据名字推测他们是一些电源管理和快捷键相关的功能. (比如小新可以 Fn+Q 切换性能模式.)
虽然这些软件经过了 Lenovo 和 Microsoft 的双重签名, 但对于这种可信程度处于薛定谔状态的闭源驱动软件, 还是可以根据他们的功能, 限制大部分不需要的访问.
如果你电脑中有其他你不信任的软件(点名 QQ/微信), 都可以以此类推加以限制.
按资源限制 - 限制特定文件夹访问(如浏览器 User Data)
除了浏览器本身, 其他应用几乎没什么合理理由访问浏览器数据文件夹. 所以我可以在卡巴斯基 管理资源
设置中为某个资源设定白名单规则.
如果有其他应用访问 User Data 就会弹窗提醒. 然后我就发现了 IDM 每次都会试图访问浏览器文件夹安装其拓展. 于是我直接手动拒绝其访问(上图中的红叉), 就不会反复弹窗提醒, IDM 也能正常使用.
小结
虽然我有着应该还算良好的电脑使用习惯, 电脑上的软件也大部分都是可信来源/开源的. 但是直觉告诉我, 我不能相信未来某一天手欠的我自己.
经过一些波折最终还是设置好了我电脑上的 HIPS. 偶尔会有几个弹窗, 但规则合理的话, 基本不影响正常使用. 解决了第二个心头大患(不)
本文采用 CC BY-NC-SA 4.0 许可协议发布.
作者: lyc8503, 文章链接: https://blog.lyc8503.net/post/kaspersky-hips/
如果本文给你带来了帮助或让你觉得有趣, 可以考虑赞助我¬_¬