[chkrootkit: kicking script kiddies' asses since 1997]

ローカル環境のルートキット検出

  1. chkrootkit はどのように改竄されたコマンドを検出しますか?
  2. chkrootkit はルートキット(rootkit)の新バージョンや改良版・亜種を検出できますか?
  3. どうして chkrootkit は perl で記述されていないのですか?
  4. chkrootkit で使うコマンドはどれですか?
  5. 改竄されたシステム上で使用した場合、表示される結果は信頼できますか?
  6. chkproc の信頼性・正確さは、どの程度ですか?
  7. システム上で PortSentry や klaxon を動作させています。bindshell のチェックで警告が出てしまいましたが、これは何が悪いのですか?
  8. chkrootkit は `.packlist' や`.cvsignore'といった明らかに問題のないファイルやディレクトリに対して警告を出します。このような警告を出さなくできませんか?
  9. cron で chkrootkit を実行できますか?

  1. chkrootkit はどのように改竄されたコマンドを検出しますか?

    chkrootkit lは改竄されたシステムコマンド中に見受けられる"痕跡"を探します。たとえば、ある ps コマンドの改竄プログラムには "/dev/ptyp" という文字列が含まれています。

    攻撃者が特定のルートキット(rootkit)を用いるのであれば、ルートキットのソースコードの情報を元に chkrootkit が痕跡を検出することが可能なことは明らかです。引き続き次の質問と回答をご覧下さい。

  2. chkrootkit はルートキットの新バージョンや改良版・亜種を検出できますか?

    たとえトロイの木馬型ルートキットが組み込まれていたとしても、chkrootkit はファイル中に特定の兆候が見受けられない限り、自動的に検出することはできません。chkrootkit がどのように動作しているかはエキスパート・モード (-x オプション) を試してみてください。そうすると、どのような文字列がファイルに含まれているかによって、痕跡の有無を判別していることが出来ると分かるでしょう。

    たとえば、多くの文字列が表示されてしまいますので、次のようにしてください:

    # ./chkrootkit -x | more
    
    

    システムコマンド中に含まれるパス名のみを見たい場合:

    # ./chkrootkit -x | egrep '^/'
    

  3. どうして chkrootkit は perl で記述されていないのですか?

    すべてのシステムで Perl 言語が動作するとは限りません。最小限のシステム構成で動作できるプログラムを作成することが目的でした。

  4. chkrootkit で使うコマンドはどれですか?

    chkrootkit のスクリプト上で用いるコマンドは以下の通りです:

    awk, cut, echo, egrep, find, head, id, ls, netstat, ps, strings, sed, uname

  5. 改竄されたシステム上で使用した場合、表示される結果は信頼できますか?

    おそらく信頼できないものでしょう。以下の方法のいずれかの方法を試すことをお勧めします、

    1. 信頼できるコマンドがおかれているパスを `-p パス名' オプションで指定することが出来ます。
      
      # ./chkrootkit -p /cdrom/bin
      
      
    2. 信頼できるマシンに改竄されたシステムのハードディスクを取り付けて、 `-r ルートディレクトリ' オプションを使って実行してみてください。
      
      # ./chkrootkit -r /mnt
      
      

  6. chkproc の信頼性・正確さは、どの程度ですか?

    chkproc (chkrootkit がプロセスの状態を確認する為の外部コマンド)は短期間でたくさんのプロセスを動作させているシステム上で実行すると、若干の誤判断があり得ます。 chkprocps/proc の出力結果を比較対象として検査しているためです。特定のプロセスを検査中、短時間の間にプロセスが作成・終了されると PID の違いを指摘する場合もあります。 

  7. システム上で PortSentryklaxon を動作させています。bindshell のチェックで警告が出てしまいましたが、これは何が悪いのですか?

    PortSentryklaxon いった種類のプログラムを動作させていると、chkrootkit はいくつかのポートが bindshell による影響を受けていると指摘する場合があります(対象となるポート番号/プロトコル: 114/tcp, 465/tcp, 511/tcp, 1008/tcp, 1524/tcp, 1999/tcp, 3879/tcp, 4369/tcp, 5665/tcp, 10008/tcp, 12321/tcp, 23132/tcp, 27374/tcp, 29364/tcp, 31336/tcp, 31337/tcp, 45454/tcp, 47017/tcp, 47889/tcp, 60001/tcp).

  8. chkrootkit は `.packlist' や `.cvsignore' といった明らかに問題のないファイルやディレクトリに対して警告を出します。このような警告を出さなくできませんか?

    特定のファイルを除外するようなことは chkrootkit の正確さに影響を与える恐れがあります。侵入者によっては特定のファイルが chkrootkit が検査しない事を良いことに、特定のファイルやディレクトリが用いられる危険性があります。

  9. cron で chkrootkit を実行できますか?

    はい、たとえば、毎日午前3時に chkrootkit を実行して、root にメールを送るようには次のようにして下さい:

    0 3 * * * (cd /path/to/chkrootkit; ./chkrootkit 2>&1 | mail -s "chkrootkit output" root)
Valid
XHTML 1.0! Valid CSS!
$Date: 2006/10/23 18:20 $