我正在阅读“什么是 rootkit?” 发布后,我对rootkit和后门之间的区别感到困惑。据我了解,两者:
是攻击者编写并注入系统的一段代码
只允许编写代码的用户或至少知道代码的用户访问系统
难以检测和修补
那么,这些术语是否相似并且都可以用来表示同一件事?一个比另一个更通用吗?
我正在阅读“什么是 rootkit?” 发布后,我对rootkit和后门之间的区别感到困惑。据我了解,两者:
是攻击者编写并注入系统的一段代码
只允许编写代码的用户或至少知道代码的用户访问系统
难以检测和修补
那么,这些术语是否相似并且都可以用来表示同一件事?一个比另一个更通用吗?
我认为, Thomas Pornin 对相关问题的回答从一个很好的 rootkit 定义开始:
rootkit 是您在目标机器上运行的一组工具,当您以某种方式以 root 级权限访问它时。rootkit 的重点是将这种短暂的访问转变为一扇永远敞开的门。
首先,让我们看看这如何符合您的观点:
是攻击者编写并注入系统的一段代码。
“注入系统”非常广泛,但准确。但是,它不需要由该攻击者编写;他们本可以得到一个现成的,特别是如果它使用通用工具(如 openssh)来保持提升的权限。
只允许编写代码的用户或至少知道代码的用户访问系统
rootkit 允许未经授权的用户在知道“秘密握手”(无论 rootkit 的触发器是什么)的情况下获得 root 权限。授权用户(例如,系统管理员)仍然能够做他们通常做的事情。另一个攻击者不需要知道 rootkit 实现的细节,只需要知道如何让它工作的细节(用户界面,容我们说)。这种区别的一个很好的例子是Sony 复制保护 rootkit,它隐藏了与特定名称模式匹配的任何进程,并被几个不相关的恶意软件使用。
难以检测和修补
一般来说,是的,因为攻击者具有 root 访问权限以及随之而来的所有特权。
后门是一个更通用的术语,通常指的是未经授权的用户访问系统的某种方式。这个名字来自物理世界,在那里你可能有一个建筑物的前门有人看守,但一个鲜为人知的后门没有看守(或更松散的守卫)。
我认为 rootkit 是后门的子类型。它提供的特定访问权限是在类 Unix 系统上的持久 root 访问权限。
但是,后门可以覆盖更广泛的区域。与后门最常见的关联之一是心怀不满的前雇员。想象一下,您有一位开发人员在您的公司开发某种具有管理面板的 Web 应用程序。通常,面板需要有效的用户名和密码才能访问。然而,这个开发者偷偷添加了代码,允许他们双击左上角并绕过登录屏幕。这将是一个后门(给予他们不应该的访问权限),但不是 rootkit(这里没有 root 帐户)。
攻击者编写并注入系统的一段代码
不一定由攻击者编写,但可能是开发人员故意编写的。“系统”不一定意味着“计算机”,也可以是软件,这意味着您可以在任何地方拥有后门,但只有 rootkit 存在于机器上。
只允许编写代码的用户或至少知道代码的用户访问系统
Rootkit 并不总是允许远程访问。
难以检测和修补
我不确定这一点是否与两者的描述或描述相关。
后门允许知道如何调用后门的人访问,例如,开发人员创建了一种方法来跳过打算使用的身份验证方法,或者打开一个只有他/她知道的“秘密”端口。
根工具包是安装在机器上的一个软件,它允许攻击者做一些恶意的事情,包括打开一个后门。在所有者不知情的情况下,在机器上非法安装了 root 工具包。
将 root 工具包视为可以打开后门的工具。
在每个操作系统上,都有防止访问受保护资源的机制:每个受保护资源都可以通过以提升权限调用的函数进行访问。
rootkit 是一种软件,它会干扰为防止访问受保护资源而编程的机制,因此它可以被视为操作系统的附加部分(无非就是一个工具包)。
如果系统组件的一部分有漏洞(或者安装的反恶意软件的一部分有漏洞),rootkit 可以利用这个漏洞用自己的代码覆盖该机制,因此无法检测到它的存在;在最坏的情况下,它还可以替代受感染机器上的系统组件。
使用 rootkit,您可以提升非特权用户的权限,该用户可以作为系统用户(或根用户,取决于系统)而不是被授予的用户。
如果 rootkit 必须被远程激活或使用,它必须保持一扇敞开的门来接收命令并在受感染的机器上本地执行它们;rootkit 打开的无法检测到的门称为后门。
不幸的是,制造商也可以在所有者不知情的情况下将rootkit预安装在操作系统上。