我部分负责大量托管帐户的安全和恶意软件检测(通常)。我们的方法严重依赖 ClamAV 提供的基于签名的检测,我们自己也为此创建了一个相当不错的签名数据库(500 多个样本)。
我们每天会收到多达 30-40 条通知,说明在用户帐户中发现恶意代码。随着时间的流逝,黑客变得更加直观,并且总是设法跟上我们(整个白帽社区)的进展,因为我们试图停止他们利用漏洞的尝试。然而,基于签名的恶意代码检测似乎越来越不够——我们不断发现我们的扫描最初未能检测到的新恶意软件样本。因此,我冒昧地尝试并设计了一个严格的异常检测系统。
我正在征求意见,我目前的计划是否可以被认为是合理的,因为这是我第一次承担这样的任务。
我认为我检查文件的条件越多,我可以获得更好的结果(尽可能消除误报)。到目前为止,我已经创建了以下条件列表:
- 文件位置(5%)
- 文件名(10%)
- 代码整洁/对齐(5%)
- 重复模式(5%)
- 数据结构的奇怪/非逻辑名称(10%)
- 多种功能的叠加(3%)
- 错误报告已禁用(5%)
- 使用错误抑制(2%)
- 包含十六进制(即 \x73)(3%)
其中每个条件都赋予文件一定比例的潜在恶意或其中包含恶意内容。我的问题是:
- 这是开发严格的基于异常的检测系统的好/正确的方法吗?如果不是,为什么?
- 你能给我举例说明我还可以检查文件吗?任何提示或任何有用的信息?
请考虑:
- 它针对 Web 应用程序,主要是 PHP 文件;
- 我们的很多客户都使用 CMS。也许将系统建立在某个 CMS 上会更好?
谢谢你。