【问题标题】:Hiding process from process list从进程列表中隐藏进程
【发布时间】:2011-01-29 14:02:33
【问题描述】:

如何从进程列表和 /proc/pid/cmdline 中隐藏进程名称。 如果在进程列表中看到进程名称,那很好,但它的参数不应该出现在列表中。 原因参数包含我想隐藏的纯文本密码和/或少量敏感信息。

TIA, 萨蒂什

【问题讨论】:

  • 不要将密码作为命令行参数提供。
  • 您应该将此问题发布到:unix.stackexchange.comsuperuser.com
  • 不,我认为这在 stackoverflow 上很好。它提出了一个可以通过编程最合理地解决的具体技术问题;不是最终用户的问题(实际上,如果不更改程序以通过替代方法获取密码,最终用户无法正确解决此问题)
  • 什么unix?也许有一个特定于发行版的替代方案可用。

标签: unix command ps


【解决方案1】:

你无法隐藏它。这就是为什么这么多优秀的 CLI 程序不提供在命令行提供密码的原因。

有一种软件可以隐藏进程,它被称为 rootkit,因为它们想要隐藏。

提供密码的更好方法是提供一个只能由进程用户读取的文件,并将密码存储在那里。这是例如通过 mount 完成,带有 credentials 选项。

【讨论】:

  • 如果我使用rootkit,那么还有许多其他工具,如unhide、chkhunter 来找出进程名称及其参数。所以我正在寻找另一种解决方案。但是谢谢你的帮助。
【解决方案2】:

一般来说,不要在命令行上传递敏感信息。将其传递到环境变量*,或文件内容中,或通过文件描述符将其通过管道传递。

可以在程序启动后修改命令行(通过覆盖 argv[1] 指向的内存),但这会在程序启动和其参数被擦除之间留下一个漏洞窗口。一般来说,您无法避免这种情况。所以不要对任何敏感数据使用程序命令行参数。

* - 环境变量的安全性可能因 unix 而异。在 Linux 上它应该是安全的——如果你有能力读取环境变量,你也有能力直接读取进程内存。

【讨论】:

  • -1 进程的环境变量也可以被读出,所以这不是一个选项。
  • @Daniel,至少在 linux 上,环境变量只能由同一个用户读取 - 即使您设法以某种方式隐藏信息,他们也可以简单地 ptrace() in 并直接读取进程内存!
  • +2 @bdonlan:我刚刚检查过,并没有意识到这一点。你知道它在windows上是怎样的吗?目前只有mac。
  • @Daniel,不确定是否了解 windows - 但是在没有提升的情况下运行进程资源管理器会导致它无法获取 SYSTEM 进程的环境。
猜你喜欢
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多