Unhideで隠されたLinuxプロセスを明らかにする方法



問題を排除するために楽器を試してください

GNU / Linuxは非常に安全なオペレーティングシステムですが、多くの人が誤った安心感に魅了されます。彼らは、安全な環境で作業しているため、何も起こらないという誤った考えを持っています。 Linux環境にはマルウェアがほとんど存在しないのは事実ですが、Linuxのインストールが最終的に危険にさらされる可能性は非常に高いです。他に何もないとしても、ルートキットや他の同様の攻撃の可能性を考慮することは、システム管理の重要な部分です。ルートキットとは、サードパーティのユーザーが正しくアクセスできないコンピュータシステムにアクセスした後の一連のツールを指します。このキットは、正当なユーザーの知らないうちにファイルを変更するために使用できます。 unhideパッケージは、このような侵害されたソフトウェアをすばやく見つけるために必要なテクノロジーを提供します。



Unhideは、ほとんどの主要なLinuxディストリビューションのリポジトリにあります。 sudo apt-get install unhideなどのパッケージマネージャーコマンドを使用するだけで、DebianおよびUbuntuのフレーバーに強制的にインストールできます。 GUIにアクセスできるサーバーは、Synaptic PackageManagerを使用できます。 FedoraおよびArchディストリビューションには、独自のパッケージ管理システム用にビルド済みバージョンのunhideがあります。 unhideがインストールされると、システム管理者はそれをいくつかの異なる方法で使用できるようになります。



方法1:プロセスIDのブルートフォーシング

最も基本的な手法では、各プロセスIDをブルートフォースして、ユーザーから隠されていないことを確認します。ルートアクセス権がない場合は、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をタックすると、プログラムは冗長モードになります。

このメソッドは、次のようなプロンプトを返します。

[*] / procstatスキャンによる非表示のプロセスの検索

異常が発生した場合は、このテキスト行の後に表示されます。

方法3:ProcとProcfsのテクニックを組み合わせる

必要に応じて、実際に/ bin / psおよび/ proc Unixファイルツリーリストを比較すると同時に、/ bin / psリストのすべての情報を仮想procfsエントリと比較することもできます。これにより、Unixファイルツリールールとprocfsデータの両方がチェックされます。このテストを実行するには、sudo unhide procall -vと入力します。これは、すべての/ proc統計をスキャンし、他のいくつかのテストを実行する必要があるため、かなり時間がかかる場合があります。これは、サーバー上のすべてのものがコパセティックであることを確認するための優れた方法です。

2016-11-02_222832

方法4:procfsの結果を/ bin / psと比較する

以前のテストはほとんどのアプリケーションにはあまりにも複雑ですが、いくつかの便宜のためにprocファイルシステムチェックを個別に実行することができます。 sudo unhide procfs -mと入力します。これにより、これらのチェックに加えて、-mを追加することで提供されるいくつかのチェックが実行されます。

これはまだかなり複雑なテストであり、少し時間がかかる場合があります。 3つの別々の出力行を返します。

2016-11-02_223011

コマンドに-fを追加することで、これらのテストのいずれかを使用して完全なログを作成できることに注意してください。

方法5:クイックスキャンを実行する

詳細なチェックを気にせずにクイックスキャンを実行する必要があるだけの場合は、sudo unhidequickと入力するだけです。名前が示すとおりに実行する必要があります。この手法は、procリストとprocファイルシステムをスキャンします。また、/ bin / psから収集された情報をシステムリソースへの呼び出しによって提供された情報と比較することを含むチェックも実行します。これにより、1行の出力が提供されますが、残念ながら誤検知のリスクが高まります。以前の結果を確認した後、再確認すると便利です。

出力は次のとおりです。

[*]システムコール、proc、dir、psの結果を比較して非表示のプロセスを検索する

このスキャンを実行した後、いくつかの一時的なプロセスが発生する場合があります。

方法6:リバーススキャンの実行

ルートキットをスニッフィングするための優れた手法には、すべてのpsスレッドの検証が含まれます。 CLIプロンプトでpsコマンドを実行すると、端末から実行されたコマンドのリストが表示されます。リバーススキャンは、psイメージを実行する各プロセッサスレッドが有効なシステムコールを示し、procfsリストで検索できることを確認します。これは、ルートキットが何かを殺していないことを確認するための優れた方法です。このチェックを実行するには、sudo unhidereverseと入力するだけです。非常に高速に実行されるはずです。プログラムが実行されると、偽のプロセスを探していることを通知する必要があります。

方法7:/ bin / psとシステムコールの比較

最後に、最も包括的なチェックでは、/ bin / psリストのすべての情報を有効なシステムコールから取得した情報と比較します。 sudo unhide sysと入力して、このテストを開始します。他の人よりも実行に時間がかかる可能性があります。非常に多くの異なる出力行が提供されるため、-f log-to-fileコマンドを使用して、見つかったすべてのものを簡単に振り返ることができます。

読んだ4分