【发布时间】:2011-10-17 01:44:58
【问题描述】:
我为网络托管服务商工作,我的工作是查找和清理被黑的帐户。我找到 90% 的 shell\malware\injections 的方法是查找“不合适”的文件。例如,eval(base64_decode(.......)),其中“.....”是一大堆 base64 化的文本,通常不会很好。当我在文件中查找关键字符串时,奇怪的文件突然出现在我面前。
如果这些文件作为人类突然出现在我面前,我确信我可以在 python 中构建某种分析器来查找统计上“不合适”的东西并将它们标记为手动审查。首先,我想我可以比较包含关键字符串的 php 文件中的行长度(eval、base64_decode、exec、gunzip、gzinflate、fwrite、preg_replace 等)并寻找偏离平均值 2 个标准差的线。
行长变化很大,我不确定这是否是一个很好的统计数据。另一种方法是将加权规则分配给 cretin 事物(超过或低于阈值的行长 = X 点,包含单词上传 = Y 点)但我不确定我实际上可以用分数做什么或如何对每个分数进行评分属性。我的统计数据有点生疏了。
谁能为我指出正确的统计分析方向(指南、教程、库)?
【问题讨论】:
-
这个建议有点宽泛,实际上很有用,但您可能想尝试贝叶斯方法。建立一个“好”代码语料库和一个“坏”代码语料库,并构建或使用分类器(您可能可以直接使用各种垃圾邮件过滤器之一)来预测特定的新代码是否更有可能成为“好”或“坏”语料库的成员。 Google 用于贝叶斯学习、垃圾邮件过滤等。我愿意您可以直接使用垃圾邮件过滤项目来执行此操作,而不是从头开始编写一些东西。
-
@Joe, Josh -- 如果您选择贝叶斯方法,我过去曾使用 reverend 成功解决类似问题。如果您可以正确获取数据集,则很容易获得合理的结果。 reverend.sourceforge.net
标签: python machine-learning statistics intrusion-detection