the1812 / Malware-Patch

阻止**流氓软件的管理员授权. / Prevent UAC authorization of Chinese malware.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

两次被卡巴斯基标记为“有害软件” 、以及一些想法

HuengchI opened this issue · comments

分享我的使用经历

  • 一直在用这种“证书防御”的方法来“保卫”家中长辈们的电脑。不用配置复杂的HIPS规则,就可以免遭大部分流氓软件的侵袭。
  • 最近卡巴斯基总是将mwp.exe标记为恶意软件,软件更新后又要重新添加信任。长辈们不会操作,每次都是我远程帮他们重新部署。杀软”狙击“的行为是很奇怪的,但是长辈们的电脑不得不安装杀毒软件。早期我使用的是github上的另一个项目chinawareblock,使用shell脚本安装证书的方式一直没出过问题,但是这个项目年久失修,证书仓库很久没有更新了。
  • 因此我想为了避免杀软狙击,可以改用shell脚本下载、上传和安装,通过windows计划任务定期运行,形成“云证书防火墙”。
  • 另外,这类项目最有价值的地方就是不断更新的证书仓库,若是能侧重于malware证书的提取和上传,用户使用类似订阅连接的功能从网络下载最新的证书库,那这个防御体系的威力就很可观了。
    以上是我结合自身的使用体验,提出的一些看起来美好但也许不成熟的想法,供社区批判性讨论。

关于shell的想法我也进行过研究,但是由于技术有限,遇到了难点,我将一些进展列于下方。

shell实现方案的“研究进展”

  • windows自带相关的CLI证书管理工具,安装和删除操作都能够比较轻松的实现。关于证书提取,类似于C#的CreateFromSignedFile()这一接口,powershell有Get-AuthenticodeSignature这一cmdlet。
  • 但是难点在于全部数字证书的自动提取,具体来说:使用powershell的相关命令只能提取出文件的第一个证书,而现在的软件(比如说QQ)都具有2个或多个证书,只要有一个证书没有被屏蔽,程序就照样能够运行,这也是windows证书机制比较坑爹的地方。
  • 当然还有一个方法是用户手动提取证书,然后选择上传到公共仓库。我将查阅到的方法附于下:
  1. 鼠标右击任意一个exe、msi或dll文件,选择“属性”。
  2. 如果文件经过数字签名,将会出现一个标题为“数字签名”的选项卡,选择该选项卡。
  3. 在“签名列表”中可以看到一个或多个签名文件,通常是 sha1 或 sha 256 。选中其中一个。
  4. 在步骤 3 中做出选择后,单击“详细信息”按钮。
  5. 在新弹出的“数字签名详细信息”页面上,选择“查看证书”按钮。
  6. 在新弹出的证书页面中,选择“详细信息”选项卡,然后点击“复制到文件”按钮。
  7. 在新弹出的证书导出向导中,单击第一页上的“下一步”按钮。
  8. 在“导出文件格式”页面上,选择 DER 或 Base-64 编码的 x.509 (.CER) 选项,然后按“下一步”按钮。
  9. 在要导出的文件页面上,使用“浏览”按钮设置证书文件的放置位置以及文件名。
  10. 单击“下一步”按钮。
  11. 在完成证书导出向导页面,点击“完成”按钮,出现弹出框后点击“确定”按钮。证书文件导出完成。
  • 最后关于上传与下载,这些都是shell的拿手好戏。

可以定时 git clone 这个仓库, 证书都在 src/MalwarePatch/Certificates 下, 因为证书的更新周期没有这么频繁, 我是每两个月才来检查一下, 更新后也可以用 mwp.exe --disallow-all 来自动安装新的证书.

至于杀软, 我不知道卡巴斯基的信任设置是怎么样的, Windows Defender 可以添加文件/文件夹为信任, 并且更新不会丢失. 目前软件的这个载体很难避免被杀软误报, 毕竟是各种有毒的数字签名塞在一个 exe 里.

这样的话把证书文件放到exe外面会不会好些呢?

应该能解决误报的问题

打疫苗引起免疫反应了属于是