Young Leaves

CentOS8 にchkrootkit を導入しrootkit のスキャンを行う方法

今回はCentOS 8 にrootkit のスキャンを行うchkrootkit を導入し、実際にスキャンする方法について書いていきます。本記事の内容は2023年11月11日現在、サポート切れのOS での手順のため、手順を参考にする時はOS の内容を考慮した上で参考にいただくようお願いします。

実施環境

OS

CentOS 8 最小限のインストール

chkrootkit

0.53

rootkit とは

rootkit とは、攻撃者が対象への侵入等を手助けするためのソフトウェアの集合です。rootkit 自体は特定のマルウェアを示しているわけではありません。rootkit を設置されると、侵入経路を確保するバックドアを設置される、root 権限を掌握される、コマンドを改ざんされる等、対象のホストを危険な状態にしてしまいます。rootkit の侵入を許してしまうと場合によってはOS の再インストールを行わなければいけない状態になることもあります。また、rootkit は自身を隠蔽する機能を持っていることが多く、OS の奥深くへ侵入することもあるため通常のセキュリティ対策ソフトで検出が難しいとも言われています。そのため、rootkit の検出には専用のスキャンツールを使用して対策することがあります。

chkrootkit とは

chkrootkit

chkrootkit はUnix ベースのrootkit を検出するスクリプトです。chkrootkit の実行ファイルの中身はシェルスクリプトであり、コアシステムのシグネチャからファイルシステムのトラサーバルをコマンドの出力内容と比較し不一致となる部分を探し出す仕組みでrootkit を検出します。

chkrootkit のダウンロード

chkrootkit スクリプトは以下のコマンドを使用するため、事前にインストールを行う必要があります。

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

CentOS8 の最小限のインストールでは、netstat とstrings コマンドが入っていないためインストールします。また、tarball をダウンロードし展開するためにwget とtar コマンドもインストールします。

# wget、tar、netstat、stringsコマンドをインストールする
dnf -y install wget tar net-tools binutils

各種コマンドをインストール後、chkrootkit のtarball をダウンロードします。ダウンロード後は/usr/bin 配下にスクリプトを配置します。

chkrootkit download

# chkrootkitのtarballをダウンロードし展開する
cd /usr/local/src
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxf chkrootkit.tar.gz
cd chkrootkit-0.53

# chkrootkitスクリプトを/usr/binへ移動する
mv chkrootkit /usr/bin

chkrootkit のスキャン

chkrootkit でスキャンを行うにはchkrootkit コマンドを実行します。

# chkrootkitスクリプトでrootkitのスキャンをする
chkrootkit
# chkrootkitスクリプトでrootkitのスキャンをする
chkrootkit

ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
<省略>
Checking `z2'... not tested: can't exec ./chklastlog
Checking `chkutmp'... not tested: can't exec ./chkutmp
Checking `OSX_RSPLUG'... not tested

スキャン結果でinfected が表示された場合、rootkit に感染している可能性があります。not infected やnot found 等の場合、rootkit は見つからなかったということになります。

chkrootkit は毎日スキャンを実行しrootkit が無いかチェックする必要があるため、実行結果でinfected が表示された行だけログに出力するシェルをcron あたりに入れて行うのが良いかと思います。

chkrootkit のオプション

chkrootkit コマンドは以下のオプションがあります。

-h

chkrootkit のヘルプを表示する

-V

chkrootkit のバージョン情報を表示する

-l

デバッグをする

-d

chkrootkit が利用可能なテストを表示して終了する

-q

quickモードでスキャンする

-x

expertモードでスキャンする

-r

指定したディレクトリをルートとしてスキャンする

-p dir1:dir2:dirN

chkrootkitが使用する外部コマンドを指定する

-n

NFSでマウントされたディレクトリをスキップする

chkrootkit の注意点

chkrootkit には以下のデメリットもあります。

新しいバージョンが出るまで最新のrootkit に対応できない

chkrootkit の中身はシェルスクリプトであり、ウィルス対策ソフトのようにアップデートを行って最新のrootkit に対応できるように、という機能はありません。そのため、chkrootkit に記載されていない最新のrootkit をスキャンで検出することはできません。

誤検知することがある

chkrootkit の実行結果でinfected が表示されることがありますが、infected が表示されたからといって絶対にrootkit があるというわけではありません。chkrootkit も誤検知をすることがあるため、スキャン結果を参考にファイル等のチェックを行う必要があります。