任何 rootkit 检测软件的问题在于,如果 rootkit 真的很厉害,它也会试图向检测软件隐藏自己的痕迹。
我认为,通过观察从另一台计算机发出的可能受感染的计算机的流量,可以更准确地检测出 rootkit。例如:
- 配置备用计算机(我称之为“监控计算机”)以路由受感染计算机的所有流量(通过有线或无线)
- 配置受感染的计算机以使用监控计算机作为其网关或无线接入点
- 监控计算机上的软件对可能表明感染的流量有定义(例如病毒签名、IRC 协议模式、出站垃圾邮件的 smtp 模式)
- 如果监控计算机检测到问题,它会报告该问题并丢弃可疑流量。
- 所有无辜的流量都会被转发。
此类软件适用于任何平台吗?受感染的计算机可能运行 Windows,但监控计算机可以运行任何操作系统,因为它充当路由器。
答案1
监控流量的方法有无数种:如果你在中间放置一台计算机,你就可以解析所有流量。你可以使用 Ethereal(现在是 Wireshark)或 Snort,甚至 IPTraf。如果你有一个处于混杂模式的集线器,你甚至不需要在中间放置一台机器。
问题出现在第二部分。如何知道哪些流量是恶意的,哪些流量不是?企业网络中常用的方法是默认阻止每个端口,只允许特定(通常是无害的)端口上的流量,但显然这是一种蛮力方法。
您可以做的一件事就是监视活动并在其超过某个阈值时将其丢弃,但这假设您的 rootkit 足够愚蠢,可以用流量淹没网络,但情况并非总是如此。
我的做法是两者结合。我封锁所有端口,只允许特定流量,并让上游路由器每天生成流量报告,可以与以前的报告进行比较,以显示可能的感染(我使用呼噜和阿古斯...我更喜欢 Ethereal/Wireshark 用于主动测试而不是长期监控。)
答案2
我不知道是否存在类似的东西,但我猜自己做应该不是什么大问题。前两个步骤和后两个步骤相当简单(也许,你甚至不必使用真正的计算机,一些虚拟机就足够了),至于第三个步骤,我不知道任何类型的流量扫描器,虽然它们肯定存在,但为了简便起见,你可以使用 IPTables(假设“路由”计算机使用 Linux)。
但我不是这方面的专家,谁知道呢。:)