[chkrootkit: kicking script kiddies' asses since 1997]

locally checks for signs of a rootkit

  • Linux情報関連
  • LinuxのFAQ関連
  • Linuxのフォーラム
  • 便利なネットツール
  • 科学技術情報



    1. chkrootkitはどのように改竄されたシステムを認識するでしょうか。
    2. chkrootkitは新しいルートキットを認識できますでしょうか。
    3. なぜchkrootkitはPerl言語を利用しませんでしょうか。
    4. chkrootkitはどのコマンドを利用しますか。
    5. 不正侵入されたサーバにはこれらのコマンドの実行結果を信用できますか。
    6. chkprocコマンドはどの程度正解でしょうか。
    7. 私はPortSentry/klaxonを動作させていますが、bindshellテストは問題ありませんでしょうか。
    8. chkrootkitは特定のファイル名やディレクトリ名(例:.packlist', `.cvsignore)に対して、不正データとして認識しているようですが、これらを無視することができますでしょうか。
    9. crontabの設定からchkrootkitを動作させることができますか。
    10. 不正侵入があったときに、メールで通知メールする方法は?。

    1. chkrootkitはどのように改竄されたシステムを認識するでしょうか

      chkrootkitは 改善されたバイナリシステムにsignaturesの情報を検索します。例えば、psコマンドの改善の場合、"/dev/ptyp"に含まれます。

      確かにchkrootkitの検出を避けるために、アタックの人がrootkit ソースを簡単に修正することができますが、下記にある次の質問をみてください。

    2. chkrootkitは新しいルートキットを認識できますでしょうか。

      もしchkrootkitはファイルのsignatureを認識できない場合、そのファイルが改竄されたと判断されます。再度エクスパートモード( (-xオプション))でchkrootkitを実行ください。このモードで怪しい文字列を認識できる可能性があります。

      すべてのデータを次のように確認できます。

      # ./chkrootkit -x | more
      
      

      パス指定で確認する方法は、

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

    3. なぜchkrootkitはPerl言語を利用しませんでしょうか。

      サーバにPerl言語がインストールされていない場合もありますので、シンプルのツールでPerlなしでも実行できるように作成しました。

    4. chkrootkitはどのコマンドを利用しますか

      chkrootkitは次のUnix コマンドを利用しています。

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

    5. 不正侵入されたサーバにはこれらのコマンドの実行結果を信用できますか。

      信用できないかもしれません。そのために次の方法で行ってください。 below:

      1. -p pathのぷ所んで信用できるバイナリを利用して、次のように行ってください。
        
        # ./chkrootkit -p /cdrom/bin
        
        
      2. 不正侵入がないサーバで不正侵入があったハードディスクをマウントして、-r rootdirのオプションで次のように調査ください。 # ./chkrootkit -r /mnt

    6. chkprocコマンドはどの程度正解でしょうか。

      もしプロセスの時間が短縮で完了するサーバでchkproc が実行される場合、レポートの結果が正確ではないかもしれません。chkprocpsの結果と/procの内容を比較します。もし調査中にプロセスが完了か作成してしまった場合、そのプロセスに対して正確な調査結果がでない恐れがあります。

    7. 私はPortSentry/klaxonを動作させていますが、bindshellテストは問題ありませんでしょうか。

      If you're running PortSentry/klaxon or another program that binds itself to unused ports probably chkrootkit will give you a false positive on the bindshell test (ports 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の調査結果の正確の影響が発生する可能性があります。アタックする人がその設定を知っていいて、設定を利用しする恐れがあります。

    9. crontabの設定からchkrootkitを動作させることができますか

      はい、できます。次のようにcronにて毎日午前3時にchkrootkitを実行して、結果がメールへ報告されます。

      0 3 * * * (cd /path/to/chkrootkit; ./chkrootkit 2>&1 | mail -s "chkrootkit output" root)

    10. crontabの設定からchkrootkitを動作させることができますか

      不正侵入や異常があったときに、メールで通知メールを知らせするために、 次のように設定してください。 ■/etc/cron.daily/chkrootkitを作成する /etc/cron.daily/chkrootkitの内容

      # vi /etc/cron.daily/chkrootkit
      
      ========================================================
      #!/bin/sh
      #
      mv /var/log/chkrootkit_log.3 /var/log/chkrootkit_log.4
      mv /var/log/chkrootkit_log.2 /var/log/chkrootkit_log.3
      mv /var/log/chkrootkit_log.1 /var/log/chkrootkit_log.2
      mv /var/log/chkrootkit_log /var/log/chkrootkit_log.1
      
      /usr/local/bin/chkrootkit > /var/log/chkrootkit_log
      grep "INFECTED" /var/log/chkrootkit_log | mail -s "chkrootkit log" root
      chmod 600 /var/log/chkrootkit_log
      ========================================================
      
      上記の場合、/var/log/chkrootkit_logの4世代のローテーションを行い、 調査を行います。 不正侵入や異常が検出されたときに、rootへ転送されます。
    Power by Bali project