【发布时间】:2011-12-24 22:30:22
【问题描述】:
首先,让我声明,我是一名中级 .NET 开发人员,因此不可能进行低级开发。
基本上我只是想编写一个程序来监控系统的变化并记录/报告这些变化。它不需要阻止任何更改,即使我想考虑编写它的语言,我也不相信我能做到。我只是不确定我需要检查什么。
想到这些想法:
- 检查并存储系统文件的 MD5 总和以及链接到的所有内容 在注册表中启动,如果它们与受信任的 MD5 不匹配,则 使用 VirusTotal 或类似服务进行扫描
- 检查运行进程的可信 MD5 和,上传未知到 病毒总数
- 监控服务
- 监控监听端口
当然,检测 ring3 之外的任何东西是不可能的。
还有什么其他的想法要检查吗?这是可行的还是我应该坚持使用流行的反恶意软件?
编辑:想到的另一个想法是检查正在运行的进程的路径并报告一个不合适的可执行文件。也许正则表达式也会扫描随机文件名。还可能验证正在运行的进程的可执行标头,并报告无效的标头信息,因为我听说绑定文件会使标头的一部分(PE?)无效。也验证文件的证书,虽然我见过带有伪造证书的恶意软件,之前通过了 UAC。
是时候进行更多研究了,谢谢大家!
【问题讨论】:
-
您是否正在尝试创建自己的反恶意软件系统?如果是为了学习目的,还算公平,但如果是为了实际使用,我建议使用已经可用的标准。
MalwareBytes很不错。除了实施之外,流行的主要优点是它们的签名会定期更新。 -
嗯 md5?我猜您并没有真正了解安全性,否则您会知道得更好。
-
@Rook 的 md5 已经被严重破坏,以至于您能够为任意文件生成冲突?一件事是 SSL 证书,可执行二进制文件更大。不想为使用 MD5 辩护,我只是好奇 :)
-
@snemarch 是的 100%。攻击者可以使用 md5 前缀攻击的现代台式机为任意文件创建 md5 冲突。击败绊线正是哈希冲突有用的攻击类型。如果您不理解这一点,那么您绝对没有必要创建这样的安全系统。
-
@snemarch 哇,我想不出比故意使用损坏的原语来执行安全策略更大的密码错误了。任何称职的密码学家都应该在阅读您的陈述时畏缩。