Unhide で隠れた Linux プロセスを発見:システムのセキュリティを強化
GNU/Linux は非常に安全なオペレーティング システムですが、多くの人が誤った安全感に誘惑されています。彼らは、安全な環境で作業しているため、何も起こらないという誤った考えを持っています。 Linux 環境にはマルウェアがほとんど存在しないのは事実ですが、Linux インストールが最終的に侵害される可能性は依然として非常に高いです。少なくとも、ルートキットやその他の同様の攻撃の可能性を考慮することは、システム管理の重要な部分です。ルートキットとは、サードパーティのユーザーが、正当にアクセス権を持たないコンピュータ システムにアクセスした後に使用できる一連のツールを指します。このキットを使用すると、正当なユーザーに知られずにファイルを変更できます。 unhide パッケージは、そのような侵害されたソフトウェアを迅速に見つけるために必要なテクノロジーを提供します。
Unhide は、ほとんどの主要な Linux ディストリビューションのリポジトリにあります。 sudo apt-get install unhide などのパッケージ マネージャー コマンドを使用すると、Debian および Ubuntu のフレーバーに強制的にインストールするのに十分です。 GUI アクセスのあるサーバーは、Synaptic パッケージ マネージャーを使用できます。 Fedora および Arch ディストリビューションには、独自のパッケージ管理システム用に事前に構築されたバージョンの unhide が含まれています。非表示解除をインストールすると、システム管理者はそれをさまざまな方法で使用できるようになります。
方法 1:プロセス ID のブルートフォース攻撃
最も基本的な手法には、各プロセス ID がユーザーに対して隠蔽されていないことを確認するためにブルートフォース攻撃が含まれます。 root アクセス権がない場合は、CLI プロンプトで sudo unhide brute -d と入力します。 d オプションは、テストを 2 倍にして、報告される誤検知の数を減らします。
出力は非常に基本的なものです。著作権メッセージの後に、unhide が実行するチェックについて説明します。次のような行が表示されます。
[*]fork() を使用して PIDS に対してブルート フォースを使用してスキャンを開始します
そして別の記述:
[*]pthread 関数を使用して PIDS に対してブルート フォースを使用してスキャンを開始します
他に出力がない場合でも、心配する必要はありません。プログラムのブルート サブルーチンが何かを見つけると、次のような内容を報告します。
隠し PID が見つかりました:0000
4 つのゼロは有効な数値に置き換えられます。一時的なプロセスであるとだけ表示される場合、これは誤検知である可能性があります。きれいな結果が得られるまで、テストを何回か実行してください。さらに詳しい情報がある場合は、追跡調査が必要になる可能性があります。ログが必要な場合は、-f スイッチを使用して現在のディレクトリにログ ファイルを作成できます。プログラムの新しいバージョンでは、このファイルは unhide-linux.log と呼ばれ、プレーン テキスト出力が特徴です。
方法 2:/proc と /bin/ps を比較する
代わりに、unhide に /bin/ps プロセス リストと /proc プロセス リストを比較するように指示して、Unix ファイル ツリー内のこれら 2 つの別々のリストが一致することを確認することができます。何か問題がある場合、プログラムは異常な PID を報告します。 Unix ルールでは、実行中のプロセスがこれら 2 つのリストに ID 番号を提示する必要があると規定しています。 「sudo unhide proc -v」と入力してテストを開始します。 v を追加すると、プログラムが冗長モードになります。
このメソッドは次のようなプロンプトを返します。
[*]/proc stat スキャンによる隠しプロセスの検索
何か異常が発生した場合は、このテキスト行の後に表示されます。
方法 3:Proc テクニックと Procfs テクニックを組み合わせる
必要に応じて、実際に /bin/ps と /proc Unix ファイル ツリー リストを比較すると同時に、/bin/ps リストのすべての情報を仮想 procfs エントリと比較することもできます。これにより、Unix ファイル ツリー ルールと procfs データの両方がチェックされます。このテストを実行するには、「sudo unhide procall -v」と入力します。これには、すべての /proc 統計をスキャンし、他のいくつかのテストを実行する必要があるため、かなり時間がかかる場合があります。これは、サーバー上のすべてが安定していることを確認するための優れた方法です。
方法 4:procfs の結果を /bin/ps と比較する
前述のテストはほとんどのアプリケーションにとって複雑すぎますが、便宜的に proc ファイル システム チェックを独立して実行することもできます。 「sudo unhide procfs -m」と入力すると、これらのチェックに加えて、-m を追加することで提供されるさらにいくつかのチェックが実行されます。
これはまだかなり複雑なテストであるため、少し時間がかかる場合があります。 3 つの別々の出力行が返されます。
コマンドに -f を追加すると、これらのテストのいずれでも完全なログを作成できることに注意してください。
方法 5:クイック スキャンを実行する
詳細なチェックを気にせずに、単にクイック スキャンを実行する必要がある場合は、単に sudo unhide Quick と入力するだけです。これは、名前が示すとおり迅速に実行されるはずです。この手法では、proc リストと proc ファイル システムがスキャンされます。また、/bin/ps から収集された情報とシステム リソースへの呼び出しによって提供される情報を比較するチェックも実行されます。これにより出力は 1 行になりますが、残念ながら誤検知のリスクが増加します。以前の結果を確認した後で再確認すると便利です。
出力は次のとおりです。
[*]システムコール、proc、dir、psの結果を比較して隠しプロセスを検索
このスキャンの実行後、いくつかの一時的なプロセスが起動することがあります。
方法 6:逆スキャンを実行する
ルートキットを嗅ぎ分ける優れた手法には、すべての ps スレッドの検証が含まれます。 CLI プロンプトで ps コマンドを実行すると、ターミナルから実行されたコマンドのリストが表示されます。逆スキャンでは、ps イメージの各プロセッサ スレッドが有効なシステム コールを示し、procfs リストで検索できることを検証します。これは、ルートキットによって何かが破壊されていないことを確認するための優れた方法です。このチェックを実行するには、「sudo unhide reverse」と入力するだけです。非常に高速に実行されるはずです。実行すると、プログラムは偽のプロセスを探していることを通知するはずです。
方法 7:/bin/ps とシステム コールを比較する
最後に、最も包括的なチェックでは、/bin/ps リストのすべての情報を有効なシステム コールから取得した情報と比較します。 「sudo unhide sys」と入力して、このテストを開始します。他のものよりも実行に時間がかかる可能性が高くなります。非常に多くの異なる出力行が提供されるため、-f log-to-file コマンドを使用して、見つかったすべてを簡単に振り返ることができます。
著者について
ケビン・アロウズ
Kevin Arrows は、10 年以上の業界経験を持つ、経験と知識が豊富なテクノロジー スペシャリストです。彼は Microsoft Certified Technology Specialist (MCTS) 認定を取得しており、最新の技術開発について常に最新の情報を入手することに深い情熱を持っています。 Kevin は、ソフトウェア開発、サイバーセキュリティ、クラウド コンピューティングなどの分野での専門知識と専門知識を示し、テクノロジー関連の幅広いトピックについて幅広く執筆しています。テクノロジー分野への彼の貢献は同僚から広く認められ、尊敬されており、複雑な技術概念を明確かつ簡潔に説明する能力が高く評価されています。
-
Linux の「apt」について:定義と目的
Debian ベースの Linux ディストリビューションのユーザーであれば、おそらく apt という言葉をよく目にするでしょう。これは、Ubuntu、さまざまな Ubuntu スピン、Linux Mint、LXLE、Trisquel GNU/Linux のユーザーにも当てはまります。これはシステムにソフトウェアをインストールするのに役立つパッケージ マネージャーを指しますが、この名前は apt ディレクトリ、apt-cache、その他多くの場所で使用されます。 「apt とはどういう意味ですか?」は、Linux ターミナルを使用したばかりのユーザーが尋ねる最も一般的な質問の 1 つです。現時
-
Unix Epoch を使用したシステムの日付と時刻の設定:ステップバイステップの手順
Unix エポックは、1970 年 1 月 1 日木曜日の 00:00:00 UTC に始まりました。それ以来、Unix システムは、その日付が発生してからの秒数をカウントすることで時間を追跡してきました。 Unix、および Linux や FreeBSD などのさまざまな実装は、それ以降の文字通りの秒数から発生したうるう秒の数を引いたものとして時間を追跡します。 これは、多くのユーザーやプログラマーさえも日常的に触れる概念ではありません。それでも、Unix エポックの開始から経過した秒数がわかっている場合は、実際にシステムの時刻をその秒数に設定することができます。コマンドラインインターフェ