Chkrootkitはルートキットのチェックの略です。 一方、ルートキットは、サーバーに完全にアクセスして、サーバーに完全にアクセスし、通常のプロセスまたはプログラムに偽装するように設計された悪意のあるアプリケーションです。
chkrootkitシェルスクリプトは、システム管理者が既知のルートキットについてシステムをチェックするのに役立つように設計されています。 この情報で最初に発生する可能性のある質問は次のとおりです。 同じrkunterのようにperlまたはbashしませんか? 開発者は、シェルを使用してすべてのシステムで実行できるように、スクリプトを可能な限り統合するように努めました。 そして、スクリプトの開発が始まった時点では、同じperlはどこからでも遠く離れていました。
検索の本質は簡単です。 文字列やgrepなどのシステムツールを使用する(より正確には、開発者のサイトのFAQに使用されているプログラムがリストされています-awk、cut、echo、egrep、find、head、id、ls、netstat、ps、strings、sed、uname )chkrootkitは、プログラム内の疑わしいコードフラグメントを検索し、実行中のプロセスを/ procからの情報と比較して、矛盾を明らかにします。
このツールは、さまざまな検証方法を担当する多数のモジュールで構成されています
- chkrootkit:ルートキットを使用してシステムバイナリの変更をチェックするシェルスクリプト。
- ifpromisc.c:パケットキャプチャで動作するインターフェイスを検索するためのモジュール。
- chklastlog.c:lastlogログファイルからのエントリの削除の事実をチェックするモジュール。
- chkwtmp.c:前のモジュールと同様に、wtmpログファイルをチェックします。
- chkutmp.c:レコードの削除のトレースについてutmpログファイルをチェックします。
- check_wtmpx.c:Solaris OSに関連します。 wtmpxログからのエントリの削除を確認します。
- chkproc.c:有名なLKMトロイの木馬(Linuxカーネルモジュール)のトレースを検索します。
- chkdirs.c:有名なLKMトロイの木馬(Linuxカーネルモジュール)のトレースを検索します。
- strings.c:文字列ユーティリティの類似物。
残念ながら、ログファイルから行を削除する事実の検索は100%保証されていません。
現在、最新バージョンは2014年6月4日にリリースされた0.50です。開発者は、スキャナーがFreeBSDで動作することを約束します。
CentOSのEPELリポジトリにはバージョン0.49があり、ポート/パッケージにはFreeBSDがありません。 最新バージョンをビルドするには、gccをインストールする必要があります。 CentOS 6.xを例として使用すると、次のようになります。
gccをインストールします。
yum install gcc
公式ftpから最新バージョンをダウンロードします。
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
開梱:
tar -xzf chkrootkit.tar.gz
ディレクトリに移動します。
cd chkrootkit-0.50
モジュールを収集します:
make sense
シェルスクリプトを実行します。
./chkrootkit
また、FreeBSD 10.1でも確認しました。モジュールのアセンブリと検証は問題なく合格しました。
原則として、モジュールを収集することはできません。追加のモジュールが必要なチェックでは、次のようなエラーが発生します。
Checking `ldsopreload'... can't exec ./strings-static, not tested Checking `lkm'... not tested: can't exec Checking `sniffer'... not tested: can't exec ./ifpromisc Checking `wted'... not tested: can't exec ./chkwtmp Checking `z2'... not tested: can't exec ./chklastlog Checking `chkutmp'... not tested: can't exec ./chkutmp
デフォルトでは、利用可能なすべてのテストでシステム全体のチェックが実行されます。テストのリストは、 '-l'スイッチを指定してスクリプトを実行すると取得できます。 残念ながら、実行可能なすべてのテストの説明をドキュメントで見つけることはできませんでしたが、これはコメントで説明できます。
chrootkitは現在のファイルのスナップショットを取得せず、同じrkunterのようにデータベースに保存しないことに注意してください。
起動キーとして、実行するテストを指定できます
例えば
./chkrootkit aliens sniffer
悪意のあるコードを検索し、トラフィックインターセプターを実行します
スキャン中に表示できるメッセージ
- 感染していない-スキャンでは疑わしいものは検出されませんでした
- 感染-ルートキットに関連する可能性の高いプログラム
- 未テスト-テストは実行されませんでした(このOSの場合、検証の可能性、検証モジュールがない、この検証を無効にするコマンドラインパラメーターが設定されています)
- 見つかりません-プログラムが見つからなかったため、テストされませんでした
- 脆弱だが無効-アプリケーションが悪意のある可能性は高いが、検証時には非アクティブであった。
システムを定期的にチェックするには、rootとしてchkrootkitスキャン実行をスケジューラに追加します。
crontab -e
@daily ///chkrootkit | mail -s 'CHROOTKIT Daily Run' @
使用可能なすべてのモジュールおよびテストを含むシステムの毎日のフルスキャンの後に、レポートをメールボックスに送信します。
ISPmanager5では、これは「システム」セクションにある便利なスケジューラーインターフェースから設定できます。
ただし、感染したOSがスキャン中に値を置換できる可能性が高いため、サーバーがリカバリモードまたはブートライブイメージから起動するときにchkrootkitを実行してシステムをチェックすることをお勧めします。
この場合、手順は次のとおりです。
- ライブ画像から起動
- chkrootkitの最新バージョンをダウンロードします
- モジュールをコンパイルする
- (潜在的に)感染したシステムにパーティションをマウントする
- chkrootkit -r / mnt /をスキャンします
プロジェクトの公式ウェブサイト: http : //www.chkrootkit.org/
PS:chkrootkitが常に「nothing found」または「not notinfected」メッセージをシステムに表示することを望みます。