系统调用劫持特定进程

问题描述 投票:0回答:1

我想让来自特定进程的系统调用由另一个进程控制(管理员或同一用户,对我来说并不重要。)我意识到这会产生一些 rootkit 木马的感觉,但我实际上并没有制作恶意软件;我只需要对特定流程进行额外的控制,而不是全部流程。我也不想重新定义每个系统调用(只是,比如读、写、连接等等。)

我不想要的:

  • 劫持内核内存中的系统调用表的大型 rootkit 之一。
  • 类似
    LD_PRELOAD
  • 的任何东西
  • 答案只是说“你不能”

我宁愿不必使用 ptrace 来生成

0x0f 0x05
的所有实例,而是跳转到一些奇特的 shellcode(特别是因为该 shellcode 将通过 UDP 与另一台计算机进行通信。)

任何帮助将不胜感激。网上有关系统调用劫持的所有内容都只是显示了一些重写系统调用表的源代码。

process linux-kernel system-calls
1个回答
1
投票

Systemtap 和 eBPF 是仪器框架,可让您跟踪和分析 Linux 内核和用户空间应用程序的行为。使用这些工具,您可以跟踪特定进程的特定系统调用并应用自定义处理程序。虽然仍然相当先进,但与直接操作系统调用表相比,它们提供了一种更安全、更易于管理的方式来实现系统调用拦截。

或者,Seccomp(安全计算模式的缩写)允许您对进程可以使用的系统调用应用细粒度的限制。通过使用伯克利数据包过滤器 (BPF) 程序,您可以过滤和控制特定进程允许或拒绝的系统调用。虽然 seccomp 最初并不是为动态修改系统调用而设计的,但它可以用于限制和控制目标进程的系统调用行为。

您提到您不想使用 LD_PRELOAD,但值得注意的是,该技术允许您通过预加载共享库来拦截对特定函数(包括系统调用)的调用。虽然您提到您不想重新定义每个系统调用,但您可以使用此方法仅覆盖目标进程中的特定函数。

© www.soinside.com 2019 - 2024. All rights reserved.