是否有任何防病毒产品使用“金丝雀文件”来检测 rootkit?

信息安全 杀毒软件 Rootkit
2021-08-15 11:34:59

最近,我了解到一些 rootkit 如何能够从内核或用户模式的程序中隐藏某些文件、服务等。

这让我想知道:是否有任何防病毒程序或其他入侵检测系统使用文件名中带有常见字符串的“金丝雀文件”来检测这些文件?

IE:

1.) MyRootkit.vir已知会隐藏文件名中包含字符串“.vir”的文件。
2.) 在安装(或签名更新)时MyAV放入MyRootkitcanary.virC:\Program Files\MyAV\Canary Files\
3.) 在扫描期间,MyAV运行cmd -c dir "C:\Program Files\MyAV\Canary Files\"
4.) 如果MyRootkitcanary.vir不包含在系统的响应中,MyAV则警告系统可能已被感染与MyRootkit.vir.

3个回答

我不知道有任何常见的防病毒产品可供最终用户执行此操作。

然而,许多根工具包使用绝对路径或将它们的文件放入众所周知的操作系统文件夹中。因此,将金丝雀文件放入任意文件夹的方法不太可能捕获许多根工具包。

但是将金丝雀文件放在反病毒文件夹之外,很可能会引起对真正感染的怀疑。这使得反病毒供应商的生活变得更加困难,因为它会产生额外的支持请求,并且在最坏的情况下可能会导致负面新闻报道:“反病毒 C 发现反病毒 A 感染了 rootkit B”。

专用的 rootkit 检测工具可能会尝试这种方法。然而,快速浏览 chkrootkit主要基于检测不一致:例如,它使用不同的方式列出进程 (chkproc) 和文件夹 (checkdirs)。

一种更强大的检测技术是直接从磁盘读取文件系统目录,并将其报告的内容与询问操作系统有哪些文件的结果进行比较。如果结果以意想不到的方式不同,那么您可能有一个 root 工具包。正如其他人所报告的那样,您提出的机制依赖于根工具包不足以仅隐藏其自己的文件。

请注意,输出存在预期差异:例如,HFS+ 文件系统在其目录文件中有一组文件,用于内部管理,良好的实现不会向操作系统公开。

好主意。正如您所描述的,一些 rootkit 猎人实现了类似的金丝雀测试。让我们稍微正式化一下这个概念。您创建了一个资源,该资源将因 rootkit 的存在而改变。

许多 linux rootkit 基于 uid 或 gid 隐藏进程/等。您可以为每个用户/组创建一个金丝雀:

for uid in {0..65535}; do
 touch /root/tmp/canary_$uid
 chown $uid:$gid /root/tmp/canary_$uid
done

然后统计ie ls看到的文件

if (( $(ls -la | head -n +1 | grep total | cut -d\  -f 2) -ne 65536 )); do
 echo "missing canary file, possible RK detected"
done

此外,一些 rootkit 猎手还会检查哪些资源应该可用,但实际上没有。即套接字和进程ID。您可以轻松地创建一个尝试绑定到每个可用 tcp/udp 端口​​的程序,如果失败,则表明存在已将自身绑定到该端口的“隐藏的东西”。

但这就是这些技术能走多远,并且很容易被颠覆。Rootkit 可以在其他进程中运行(作为线程),并且可以避免为通信分配共享资源(嗅探而不是绑定)。

此外,您可以查看:http ://www.rootkit.nl/projects/rootkit_hunter.html