安全運行維持之:Linuxバックドア侵入検出ツール1

5429 ワード

アリ大神のhttp://ixdba.blog.51cto.com/2895551/1557983
一、rootkitの概要
rootkitはLinuxプラットフォームの下で最もよく見られる木馬の裏口ツールであり、主にシステムファイルを置き換えることで侵入と隠蔽の目的を達成している.この木馬は普通の木馬の裏口よりも危険で隠蔽されており、普通の検出ツールと検査手段ではこの木馬を発見することは難しい.rootkitは攻撃能力が非常に強く、システムに大きな危害を及ぼし、ツールを通じてバックドアを構築し、行跡を隠すことで、攻撃者に権限を維持させ、いつでもroot権限を使用してシステムにログインできるようにします.
rootkitには主に2つのタイプがあります.ファイルレベルとカーネルレベルです.以下、それぞれ簡単に説明します.
1、ファイルレベルrootkit
ファイルレベルのrootkitは、一般的にプログラムの脆弱性やシステムの脆弱性を通じてシステムに入った後、システムの重要なファイルを修正することで、自分を隠す目的を達成します.システムがrootkit攻撃を受けた後、合法的なファイルは木馬プログラムに取って代わられ、ハウジングプログラムになり、その内部は隠れた裏口プログラムになった.通常rootkitに置き換えられやすいシステムプログラムはlogin、ls、ps、ifconfig、du、find、netstatなどがあり、その中でloginプログラムが最も頻繁に置き換えられる.Linuxにアクセスすると、ローカルログインでもリモートログインでも/bin/loginプログラムが実行され、システムは/bin/loginでユーザーのアカウントとパスワードを収集し、チェックするため、rootkitはこのプログラムの特徴を利用して、ルート権限のあるバックドアパスワードの/bin/loginを使用してシステムの/bin/loginを置き換え、攻撃者は設定したパスワードを入力することで簡単にシステムに入ることができます.この場合、システム管理者がrootパスワードを変更したり、rootパスワードをクリアしたりしても、攻撃者はrootユーザーを通じてシステムにログインすることができます.攻撃者は通常Linuxシステムに入ると、一連の攻撃動作を行い、最も一般的なのは嗅覚器をインストールして自機やネットワーク内の他のサーバの重要なデータを収集することです.デフォルトではLinuxにもifconfigコマンドなどのツール動作を監視するシステムファイルがあります.そのため、攻撃者は発見を避けるために他のシステムファイルを交換しようとします.よくあるのはls、ps、ifconfig、du、find、netstatなどです.これらのファイルが置き換えられると、rootkitがシステムで実行されていることをシステムレベルで発見するのは難しい.
これがファイルレベルのrootkitであり、システムのメンテナンスが大きく、現在最も効果的な防御方法は定期的にシステムの重要なファイルの完全性を検査することであり、ファイルが修正されたり置換されたりすると、システムがrootkitに侵入された可能性が高い.デバイスの整合性をチェックするツールは多く、Tripwire、aideなどが一般的であり、これらのツールを使用してファイルシステムの整合性を定期的にチェックして、システムがrootkitに侵入されたかどうかを検出することができます.
2、カーネルレベルのrootkit
カーネルレベルrootkitは、ファイルレベルrootkitよりも高度な侵入方式であり、攻撃者にシステムの下部に対する完全な制御権を与えることができる.この場合、攻撃者はシステムカーネルを修正し、実行プログラムがカーネルに提出したコマンドをキャプチャし、侵入者が選択したプログラムにリダイレクトしてこのプログラムを実行することができる.すなわち、ユーザがプログラムAを実行する場合、侵入者によって修正されたカーネルはAプログラムを実行するふりをし,実際にはプログラムBを実行した.
カーネルレベルrootkitは主にカーネルに依存し、システムファイルを変更しないため、一般的な検出ツールではその存在を検出することは困難であり、システムカーネルがrootkitに移植されると、攻撃者はシステムに対して任意のことをして発見されないようにすることができる.現在、カーネルレベルのrootkitには良い防御ツールがありません.そのため、システムのセキュリティ対策をしっかりと行うことが重要です.システムを最小限の権限内で動作させ、攻撃者がroot権限を取得できない限り、カーネルにrootkitを植え込むことはできません.
二、rootkitバックドア検出ツールchkrootkit
chkrootkitはLinuxシステムの下でrootkitバックドアを検索して検出するツールで、その公式アドレス:http://www.chkrootkit.org/. chkrootkitは公式のCentOSソースに含まれていないので、手動でコンパイルする方法でインストールしますが、このインストール方法もより安全です.chkrootkitのインストール手順を簡単に説明します.
1.gccコンパイル環境の準備
CentOSシステムでは、gccコンパイル環境をインストールし、次の3つのコマンドを実行する必要があります.[root@server ~] # tar zxvf chkrootkit.tar.gz [root@server ~] # cd chkrootkit-* [root@server chkrootkit-0.50] # make sense
[root@server chkrootkit-0.50] # cd .. [root@server ~] # cp -r chkrootkit-* /usr/local/chkrootkit [root@server ~] # rm -rf chkrootkit-*
3、chkrootkitを使う
インストールされたchkrootkitプログラムは/usr/local/chkrootkitディレクトリの下にあり、次のコマンドを実行するとchkrootkitの詳細な使い方が表示されます.
[root@server chkrootkit]#/usr/local/chkrootkit/chkrootkit  -h
chkrootkitの各パラメータの意味は以下の通りである.
パラメータの意味
-hヘルプ情報の表示
-vバージョン情報の表示
-lテスト内容を表示
-ddebugモード、検出プロセスに関する命令プログラムを表示
-qサイレントモード、問題のある内容のみ表示
-x拡張モード、すべての検出結果を表示
-r dir指定ディレクトリをルートディレクトリに設定
-p dir 1:dir 2:dirN chkrootkit検出時にシステムコマンドを使用するディレクトリを指定
-n NFS接続のディレクトリをスキップ
chkrootkitの使用は比較的簡単で、chkrootkitコマンドを直接実行すると自動的に検出システムを開始することができます.次はシステムの検出結果です.[root@server chkrootkit] # /usr/local/chkrootkit/chkrootkit Checking ` ifconfig '... INFECTED Checking ` ls '... INFECTED Checking `login'... INFECTED Checking ` netstat '... INFECTED Checking ` ps '... INFECTED Checking ` top '... INFECTED Checking `sshd'... not infected Checking `syslogd'... not tested Checking ` tar '... not infected Checking `tcpd'... not infected Checking `tcpdump'... not infected Checking `telnetd'... not found
出力から、このシステムのifconfig、ls、login、netstat、ps、topコマンドが感染していることがわかります.rootkitに感染したシステムに対して、最も安全で有効な方法はデータをバックアップしてシステムを再インストールすることです.
4、chkrootkitの欠点
chkrootkitはrootkitをチェックする過程で一部のシステムコマンドを使用しているため、サーバがハッカーに侵入された場合、依存するシステムコマンドも侵入者に置き換えられた可能性があり、chkrootkitの検出結果は完全に信頼できなくなる.chkrootkitのこの問題を回避するために、サーバが公開される前に、chkrootkitが使用するシステムコマンドを事前にバックアップし、必要に応じてバックアップの元のシステムコマンドを使用してchkrootkitにrootkitを検出させることができます.このプロセスは、次の操作によって実現できます.[root@server ~] # mkdir /usr/share/.commands [root@server ~] # cp `which --skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname` /usr/share/.commands [root@server ~] # /usr/local/chkrootkit/chkrootkit -p /usr/share/.commands/ [root@server share] # cd /usr/share/ [root@server share] # tar zcvf commands.tar.gz .commands [root@server share] #  rm -rf commands.tar.gz
上記の操作は、/usr/share/の下に.commands非表示ファイルを作成し、chkrootkitが使用するシステムコマンドをこのディレクトリにバックアップします.安全のため、.commandsディレクトリを圧縮してパッケージ化し、安全な場所にダウンロードしてバックアップし、サーバが侵入した場合は、このバックアップをサーバの任意のパスにアップロードし、chkrootkitコマンドの「-p」パラメータでこのパスを指定して検出すればよい.