他のユーザーにプロセスを見えないようにする方法は?

他のユーザーにプロセスを見えないようにする方法は?

プロセスを起動してtopコマンドに見えないようにする方法は?プロセスは一般ユーザー(rootではない)によって開始され、他の一般ユーザーには表示されません。

答え1

3.3以降のLinuxカーネルには、他のユーザーからプロセスを隠す機能が含まれています。

これは次の説明に従ってhidepid=行われます。gid=該当する提出そしてドキュメント/ファイルシステム/proc.txt

Debian Wheezyにはこの機能も含まれています。

答え2

このtopコマンドは、カーネルから直接提供されるprocからデータを読み込みます。プロセスを非表示にするには、カーネル内のコードを使用してプロセスをマスクする必要があります。

SELinuxやgrsecurity(他の回答で言及されている)などのセキュリティフレームワークを使用することに加えて、ルートキットスタイルコードは唯一の残りのオプションです。私が「スタイル」と言った理由は、「ルートキット」自体は悪くなく、使い方が重要だからです。他のユーザーからプロセスを隠すには完全に正当な理由があり、これがセキュリティフレームワークにこの機能が存在する理由です。

これを機能させるために従うべき基本的なパスは、データを配布するLinuxカーネルの機能をリンク(または表示する方法に応じてハイジャック)することです/proc/pid/。私は私が書いたセキュリティモジュールでLinuxカーネル機能を接続する方法を示しています。

https://github.com/cormander/tpe-lkm

「上位レベル」コードは のhijack_syscalls()メソッドにあり、security.cその後に隠された詳細な魔法はそのhijacks.cファイルにあります。

fs/proc/Linuxカーネルのソースコードディレクトリに接続したい関数を見つけることができます。 Linux は信頼性の高い ABI を提供しないため、他のバージョンの Linux カーネルで動作するには、コードを一部変更する必要があります。また、このコードを挿入するには、コンピュータへの完全なrootアクセス権が必要であることに注意してください。

修正する:

カーネルシンボルを追加のコードでラップすると、pid_getattrこれを行うのは本当に簡単です。私は最近上記のカーネルモジュールにプロセス隠し機能を追加しました:

https://github.com/cormander/tpe-lkm/commit/899bd5d74764af343d5fee1d8058756ddc63bfe3

ユーザーまたはグループのプロセスをルートとそのユーザーを除くすべての人に見えないようにすることで、同様の操作を実行できます。プロセス名を使用してこれを行うのはもう少し複雑ですが、可能です。この機能を見てくださいexe_from_mm()。で参照してくださいpid_getattr

答え3

2つの主なオプションがあるようです。

  • Selinuxは、異なる人々を異なるセキュリティドメインに配置し、サンドボックス化してお互いの内容を見ることができないようにする方法で動作します。この内容は次のとおりです。この問題。 selinuxはLinuxの世界で事実上のセキュリティフレームワークにすばやく位置づけられているので、おそらくこれが集中しなければならない方向でしょう。

  • もう一つはgrsecurityです。マリオスが言及されている そしてこの質問に尋ねた。一部のディストリビューションには、grsecurity パッチが適用された代替カーネルパッケージがあります。これがある場合は、使用を検討してください。

何らかの理由で、selinuxやgrsecurityなどのセキュリティフレームワークを追加せずにこれを実行したい場合は、現在実行中のタスクがルートキットを作成していないことを説明してください。

答え4

argv [0]を別の名前で上書きすることができますが、厳密に言えば、ある種のルートキットを探しているのです。これは次の点に役立ちます。 http://stupefydeveloper.blogspot.com/2008/10/linux-change-process-name.html

関連情報