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


19

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


1
そのようなことはtopの目的を無効にし、悪用するのは簡単すぎるでしょう。プロセスの名前を単純に変更しないのはなぜですか?this_is_not_the_process_you_are_looking_for

私は、ユーザーを隠すのはどうですか?

5
ルートキットを作成しようとしていないことを教えてください。シナリオを説明して、一般的に「悪」な動作と考えられているものよりも、より優れたセキュリティアーキテクチャを提案できるようにしてください。
カレブ

2
grsecurityまたはSELinuxを使用できます。両方とも、初期セットアップのためにルートの介入が必要です。
ジル 'SO-悪であるのをやめる'

回答:



11

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

SELinuxやgrsecurityのようなセキュリティフレームワーク(他の回答で説明)を使用する以外に、ルートキットスタイルのコードが唯一の残りのオプションです。「スタイル」と言うのは、「ルートキット」自体は悪くなく、それがどのように使用されるかです。他のユーザーからプロセスを隠す背後には完全に正当な理由があります。そのため、この機能はセキュリティフレームワークに存在します。

これを機能させるために従う必要がある基本的なルートは、/proc/pid/データを渡すLinuxカーネルの関数にフック(または見方によってはハイジャック)することです。私が書いたセキュリティモジュールでLinuxカーネル関数にフックする1つの方法を示します。

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

このための「高レベル」コードはのhijack_syscalls()メソッドにありsecurity.c、その背後にある悪魔の魔法はhijacks.cファイルにあります。

おそらくfs/proc/、Linuxカーネルのソースコードのディレクトリで、フックしたい関数を見つけるでしょう。Linuxは安定したABIを提供しないため、Linuxカーネルの異なるバージョンで動作させるには、コードを多少変更する必要があることに注意してください。また、このコードを挿入できるようにするには、マシンへの完全なルートアクセスが必要であることに注意してください。

更新:

pid_getattrカーネルシンボルをいくつかの追加コードでラップすると、簡単に実行できます。最近、上記のカーネルモジュールにプロセスを隠すものを追加しました。

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

特定のユーザーまたはグループのプロセスを、rootおよびそのユーザー以外のユーザーが表示できないようにすることで、同様のことができます。プロセス名で行うのはもう少し複雑ですが、可能です。exe_from_mm()機能をご覧ください。の内部で使用するとパフォーマンスに影響する可能性があることに注意してくださいpid_getattr


4

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

  • Selinuxは、さまざまな人々をさまざまなセキュリティドメインに配置し、ある意味でサンドボックス化して、互いを見ることができないようにします。これはこの質問でカバーされています。selinuxはLinuxの世界で事実上のセキュリティフレームワークになりつつあるため、これはおそらくあなたが見るべき方向です。

  • 他はGrsecurityにより開発されmariooshで述べた とのように、この質問に尋ねました。一部のディストリビューションには、grsecurityパッチが適用された代替カーネルパッケージがあります。あなたがこれを持っているなら、あなたはそれらを使うことを検討するかもしれません。

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


1

標準のLinuxボックスではそれほど単純ではありません。grsecurityを見てくださいが、カーネルなどにパッチを当てる必要があります。


2
これはselinuxカーネルに標準で付属していると思います。
user606723


0

のようtopに機能する同等のコマンドを作成できますが、特定の名前に一致するプロセスは表示しません。または、topコマンドのソースコードを取得して、それに応じて変更することもできます。その後、topコマンドを/usr/sbin(またはそれがどこにあっても)ご使用のバージョンに置き換えることができます。


2
「top」を置き換えても、ユーザーがtopの動作を停止することはありません。
ティムポスト

2
いいえ、しかし質問はプロセスがtopコマンドに対して見えないようにする方法を尋ねました。
ローレンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.