如何检测Linux中的隐藏进程?

如何检测Linux中的隐藏进程?

我们怀疑一个盒子已经在工作中扎根了。问题是我们如何找到它?我不是系统管理员,但我被带入团队来解决这个问题,我很好奇在哪里可以找到这样的问题?

我们怀疑这一点的原因是我们注意到机器上高端口(似乎是随机的)的网络利用率高于正常水平。

我们该怎么做才能找到问题儿童?我们该怎么做才能在将来避免这种情况?我们是否可以进行监控以便将来意识到这一点?(除了我们已经在密切关注的网络监控之外。)

提前致谢,如有需要,我可以提供更多详细信息。感谢您的时间。

答案1

您不能信任机器上的任何系统工具。Rootkit 将替换 ps、netstat、ls 等来隐藏其存在。您应该将机器脱机,取出硬盘,制作取证副本(例如 dd),然后在第二台机器上扫描 rootkit。

如果您坚持在实时机器上工作(这通常是徒劳的),那么您可以尝试在 CD 上下载救援发行版(副本必须是只读的,这一点非常重要)并使用其 ps、lsmod 等的副本。

即使这样也可能会失败,因为 rootkit 可以安装内核模块来隐藏 /proc 中的条目,而 ps 等工具通常会在该条目上运行。

祝你好运!

答案2

精心构建的 rootkit 的问题在于它们会修改系统的命令;例如 ps 和 top 不会显示 rootkit 的进程,ls 不会显示 rootkit 的文件。

因此,您需要做的是从源代码或二进制文件形式获取这些命令。(确保签名正确)。但是 root kit 的诡计(我见过)是它们可能也会破坏您的编译器。因此,当编译器知道他正在编译 ls 或 ps 或任何命令时,他也会感染它们。

当我看到这个问题时,我说好吧让我们重新编译 gcc,但是我不需要编译 gcc...感染 gcc....所以当他知道他正在编译自己时他就感染它,这样它就可以感染命令。

您可能会说,这种 root 工具包规模很大并且难以检测,是的,但是很少有 root 工具包能够如此坚不可摧,我只是给您提供了最坏的情况。

认真地说,如果您确定您的服务器中有一个 root 工具包,请重新安装它!

答案3

了解服务器是否已被“root”的最佳方法是运行基于主机的入侵检测系统 (HIDS)。不幸的是,如果你现在没有运行 HIDS,那么安装它就太晚了。安装 HIDS 的正确时间是服务器首次安装时,并且它被放到网络上。

简而言之,大多数 HIDS 的工作原理是计算所有系统二进制文件的加密哈希值,并将这些哈希值(以及许多其他文件统计信息)存储到称为基线数据库的数据库中。然后,HIDS 会定期重新扫描您的系统,将其基线数据库中的所有文件与实际系统文件进行比较。

是的,当然,rootkit 有可能修改你的基线数据库,这就是为什么你需要复制该数据库并将其存储在服务器之外您将服务器置于在线状态。然后,如果您怀疑自己已被“root”(并且您怀疑您的基线数据库也被篡改),您可以从安装介质启动系统,从备份中恢复已知良好的数据库,然后对已知良好的数据库进行扫描。然而,更可能的是,rootkit 不会预料到必须击败您的特定 HIDS,因此您将收到来自 HIDS 的通知,告知您系统文件已更改,这表明可能存在系统入侵。

由于您没有运行 HIDS,因此您无法快速确定您是否已被 root,或者哪些系统文件已被修改。您可以花费大量时间将系统文件与从已知良好的安装介质中提取的已知良好文件进行比较,但这段时间最好花在从该介质重新安装系统上。如果您想在事后调查您是如何被 root 的,最好的方法是在擦除并重新安装之前拍摄系统映像。

答案4

随机高端口是临时端口,这表明您可能有一个或多个程序从该系统向外连接。

如果它没有根植,那么netstat -np | grep -v ^unix可能会提示您哪些程序正在产生流量。

您还可以使用 tcpdump 扫描附近系统的流量,转储您认为是 root 的系统发出的数据包。如果问题程序不是以 root 身份运行的,您可以从受感染的系统执行此操作。

有几件事你可以做来避免被 root:

  • 保持系统补丁更新,尤其是内核补丁。监控内核发布的原因以确定攻击媒介。
  • 仅安装和使用必需的程序。尽可能进行最少的安装。
  • 尽量少以 root 身份运行。许多程序在完成需要 root 权限的设置后,将更改为非特权用户 ID。

编辑:如果您已 root,则使用静态链接的 ps 和 ls 程序可能会指示这两个工具找到的正在运行的程序之间存在差异。列表中的差异也可能随着短暂程序的消亡而出现。

相关内容