【Ubuntu/Alma/Rocky対応】chkrootkit完全ガイド(インストール・使い方を徹底解説)

ルートキット感染を素早く検出できる強力なセキュリティツール
- chkrootkit -

この記事では、chkrootkitのインストール手順をディストリビューション別に掲載し、基本的な使い方からスキャン結果の見方まで徹底解説!

さらに、実際にchkrootkitを実行し、ルートキットが見つかった場合の対処方法についても解説しています。

この記事を読んで分かること
  • chkrootkitとは
  • インストール方法
  • コマンドの使い方
  • スキャン結果の見方
  • ルートキットが検出された際に行った対処方法
目次

chkrootkitとは

chkrootkit(Check Rootkit)は、UNIX系OSにおいて、既知のルートキットを検出するための診断ツールです。

ルートキット(rootkit)とは、コンピュータシステムに不正アクセスした攻撃者が、侵入の痕跡を隠蔽し、システムへの持続的なアクセス権限を維持するために使用する悪意あるソフトウェアを指します。

chkrootkitは、システム内部の異常な挙動や、改ざんされたバイナリを検出することで、こうしたルートキットの存在を特定することを目的としています。

主な特徴
  • 1997年に初回リリース
  • ルートキットに特化した検査ツール
  • インストール型(ローカルで実行)
  • 検査方法はシグネチャベース
  • PerlとC言語で開発
  • UNIX系OSに対応
  • フリーソフトウェア
  • 最新バージョンは「0.58b」(2023年リリース)

公式サイト:https://www.chkrootkit.org/
GitHub:https://github.com/Magentron/chkrootkit

chkrootkitの検査項目

検査可能な項目は、-lオプションで確認できます。

例)Ubuntu Server(chkrootkit 0.58b)の場合

$ chkrootkit -l
/usr/sbin/chkrootkit: tests: aliens asp bindshell lkm rexedcs sniffer w55808 wted scalper slapper z2 chkutmp OSX_RSPLUG amd basename biff chfn chsh cron crontab date du dirname echo egrep env find fingerd gpm grep hdparm su ifconfig inetd inetdconf identd init killall ldsopreload login ls lsof mail mingetty netstat named passwd pidof pop2 pop3 ps pstree rpcinfo rlogind rshd slogin sendmail sshd syslogd tar tcpd tcpdump top telnetd timed traceroute vdir w write

検出できるルートキット

The following rootkits, worms and LKMs are currently detected:

01.lrk3, lrk4, lrk5, lrk6 (and variants)、02.Solaris rootkit、03.FreeBSD rootkit、04.t0rn (and variants)、05.Ambient's Rootkit (ARK)、06.Ramen Worm、07.rh[67]-shaper、08.RSHA、09.Romanian rootkit、10.RK17、11.Lion Worm、12.Adore Worm、13.LPD Worm、14.kenny-rk、15.Adore LKM、16.ShitC Worm、17.Omega Worm、18.Wormkit Worm、19.Maniac-RK、20.dsc-rootkit、21.Ducoci rootkit、22.x.c Worm、23.RST.b trojan、24.duarawkz、25.knark LKM、26.Monkit、27.Hidrootkit、28.Bobkit、29.Pizdakit、30.t0rn v8.0、31.Showtee、32.Optickit、33.T.R.K、34.MithRa's Rootkit、35.George、36.SucKIT、37.Scalper、38.Slapper A, B, C and D、39.OpenBSD rk v1、40.Illogic rootkit、41.SK rootkit.、42.sebek LKM、43.Romanian rootkit、44.LOC rootkit、45.shv4 rootkit、46.Aquatica rootkit、47.ZK rootkit、48.55808.A Worm、49.TC2 Worm、50.Volc rootkit、51.Gold2 rootkit、52.Anonoying rootkit、53.Shkit rootkit、54.AjaKit rootkit、55.zaRwT rootkit、56.Madalin rootkit、57.Fu rootkit、58.Kenga3 rootkit、59.ESRK rootkit、60.rootedoor rootkit、61.Enye LKM、62.Lupper.Worm、63.shv5、64.OSX.RSPlug.A、65.Linux Rootkit 64Bit、66.Operation Windigo、67.Mumblehard backdoor/botnet、68.Linux.Xor.DDoS Malware、69.Backdoors.linux.Mokes.a、70.Linux.Proxy.10、71.Rocke Monero Miner、72.Umbreon Linux Rootkit、73.Linux BPFDoor、74.Kovid Rootkit、75.Syslogk Rootkit

出典:https://www.chkrootkit.org/

検証環境のシステム構成

この記事では、Debian系、およびRed Hat系の代表的なディストリビューションを用いて、chkrootkitの検証を行っています。

各ディストリビューションのバージョンは、下記のとおりです。

Kali Linux

$ cat /etc/os-release | grep VERSION=
VERSION="2025.2"

Ubuntu Server

$ cat /etc/os-release | grep VERSION=
VERSION="24.04.2 LTS (Noble Numbat)"

AlmaLinux

# cat /etc/redhat-release
AlmaLinux release 9.6 (Sage Margay)

Rocky Linux

# cat /etc/redhat-release
Rocky Linux release 9.6 (Blue Onyx)

なお、これらのOSは、Windows上のVirtualBoxを用いて、仮想マシンとして稼働させています。

chkrootkitのインストール方法

多くのLinuxディストリビューションでは、chkrootkitはプリインストールされていませんが、比較的簡単にインストールできます。

インストール済みの場合、chkrootkit -Vコマンドを実行すると、バージョン情報が表示されます。

以下では、代表的なディストリビューションのインストール方法を具体的に解説します。

  • Debian系
    • Kali Linux
    • Ubuntu Server
  • Red Hat系
    • AlmaLinux
    • Rocky Linux

Kali Linux

Kali Linuxの場合、公式リポジトリにchkrootkitが含まれているため、APTパッケージマネージャを使ってインストールできます。

STEP

パッケージ情報を最新化

$ sudo apt update
STEP

chkrootkitのパッケージ情報を確認

$ sudo apt show chkrootkit
Package: chkrootkit
Version: 0.58b-4+b5
Built-Using: glibc (= 2.41-9)
Priority: optional
Section: misc
Source: chkrootkit (0.58b-4)
Maintainer: Debian Security Tools <team+pkg-security@tracker.debian.org>
Installed-Size: 989 kB
Depends: libc6 (>= 2.34)
Recommends: binutils, default-mta | mail-transport-agent, iproute2 | net-tools, mailx, procps, systemd-sysv | cron | anacron | cro>
Enhances: bcron, biff, bind9, bsdextrautils, busybox-syslogd, citadel-server, coreutils, courier-mta, cron, cronie, dma, esmtp-run>
Homepage: https://www.chkrootkit.org/
Tag: implemented-in::c, interface::commandline, role::program,
 scope::utility, security::ids
Download-Size: 321 kB
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Description: rootkit detector
 The chkrootkit security scanner searches for signs that the system is
 infected with a 'rootkit'. Rootkits are a form of malware that seek
 to exploit security flaws to grant unauthorised access to a
 computer or its services, generally for malicious purposes.
 .
 chkrootkit can identify signs of over 70 different rootkits (see the
 project's website for a list).
 .
 Please note that an automated tool like chkrootkit can never
 guarantee a system is uncompromised. Nor does every report always
 signify a genuine problem: human judgement and further investigation
 will always be needed to assure the security of your system.
STEP

chkrootkitをインストール

$ sudo apt install chkrootkit
STEP

インストール後の確認

$ which chkrootkit
/usr/sbin/chkrootkit

$ chkrootkit -V
chkrootkit version 0.58b

Ubuntu Server

Ubuntuの場合、Kali Linux同様、Ubuntu公式のAPTリポジトリに含まれているため、追加リポジトリの設定や外部ソースからのビルドは不要です。

STEP

パッケージ情報を最新化

$ sudo apt update
STEP

chkrootkitのパッケージ情報を確認

$ sudo apt show chkrootkit
Package: chkrootkit
Version: 0.58b-1
Built-Using: glibc (= 2.38-3ubuntu1)
Priority: optional
Section: universe/misc
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Security Tools <team+pkg-security@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,016 kB
Depends: libc6 (>= 2.34)
Recommends: binutils, procps, iproute2 | net-tools, systemd-sysv | cron | anacron | cron-daemon, mailx, default-mta | mail-transport-agent
Enhances: bcron, biff, bind9, bsdextrautils, busybox-syslogd, citadel-server, coreutils, courier-mta, cron, dma, esmtp-run, exim4-daemon-heavy, exim4-daemon-light, fetchmail, findutils, fingerd, finit-sysv, gpm, grep, hdparm, inetutils-syslogd, inetutils-telnetd, login, lsof, mailutils, masqmail, mingetty, msmtp-mta, net-tools, nullmailer, openbsd-inetd, opensmtpd, openssh-client, openssh-server, passwd, postfix, procps, psmisc, rpcbind, rsh-redone-server, runit-init, rust-findutils, ssmtp, systemd-cron, systemd-sysv, sysvinit-core, sysvinit-utils, tar, tcm, tcpd, tcpdump, traceroute, util-linux
Homepage: https://www.chkrootkit.org/
Download-Size: 353 kB
APT-Sources: http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
Description: rootkit detector
 The chkrootkit security scanner searches for signs that the system is
 infected with a 'rootkit'. Rootkits are a form of malware that seek
 to exploit security flaws to grant unauthorised access to a
 computer or its services, generally for malicious purposes.
 .
 chkrootkit can identify signs of over 70 different rootkits (see the
 project's website for a list).
 .
 Please note that an automated tool like chkrootkit can never
 guarantee a system is uncompromised. Nor does every report always
 signify a genuine problem: human judgement and further investigation
 will always be needed to assure the security of your system.
STEP

chkrootkitをインストール

$ sudo apt install chkrootkit

Ubuntu環境下では、システム構成によってPostfixの設定画面が表示される場合があります。

Postfixの設定画面

Postfix Configuration
Please select the mail server configuration type that best meets your needs.
  No configuration:
    Should be chosen to leave the current configuration unchanged.
  Internet site:
    Mail is sent and received directly using SMTP.
  Internet with smarthost:
    Mail is received directly using SMTP or by running a utility such as fetchmail.
    Outgoing mail is sent using a smarthost.
  Satellite system:
    All mail is sent to another machine, called a 'smarthost', for delivery.
  Local only:
    The only delivered mail is the mail for local users. There is no network.
General mail configuration type:
  No configuration
  Internet Site
  Internet with smarthost
  Satellite system
  Local only

Postfixの設定
ニーズに最も合ったメールサーバーの設定タイプを選択してください。
  設定なし:
    現在の設定を変更しない場合は、こちらを選択してください。 
  インターネットサイト:
    メールはSMTPを使用して直接送受信します。
  スマートホストを使ったインターネット:
    メールはSMTPを使って直接受信するか、fetchmailのようなユーティリティを使用して受信します。
    送信メールはスマートホストを使って送信します。
  サテライトシステム:
    すべてのメールは「スマートホスト」と呼ばれる別のマシンに配送されます。
  ローカルのみ:
    配送されるメールはローカルユーザー宛のみです。ネットワークを使用しません。
一般的なメール設定タイプ:
  設定なし
  インターネットサイト
  スマートホストを使ったインターネット
  サテライトシステム
  ローカルのみ

STEP

インストール後の確認

$ which chkrootkit
/usr/sbin/chkrootkit

$ chkrootkit -V
chkrootkit version 0.58b

AlmaLinux、Rocky Linux

AlmaLinux、およびRocky Linuxでは、公式リポジトリやEPELリポジトリにchkrootkitが含まれていないため、GitHubからインストールします。

STEP

前提条件

AlmaLinux、およびRocky Linuxでは、gitコマンドを用いてchkrootkitをインストールします。まだgitをインストールしていない場合、まずgitをインストールして下さい。

# dnf install git
STEP

chkrootkitをダウンロード

# git clone https://github.com/Magentron/chkrootkit.git
STEP

chkrootkitを実行パスにコピー(インストール)

# cp chkrootkit/chkrootkit /usr/local/bin/
STEP

インストール後の確認

# which chkrootkit
/usr/local/bin/chkrootkit

# chkrootkit -V
chkrootkit version 0.53-github2

2025年6月30日現在、GitHubで配布されているファイルは最新バージョンではありません。最新バージョンをインストールする場合、公式サイトからソースコードをダウンロードして、インストールする必要があります。ソースコードのダウンロード、およびインストール手順は、公式サイトをご確認ください。

STEP

ダウンロードしたファイル一式(ディレクトリ)を削除

# rm -rf chkrootkit

chkrootkitの使い方

基本コマンド

chkrootkitの使い方は、非常にシンプルです。root権限で実行するだけで、システム全体をスキャンし、既知のルートキットを検出します。

例)一般ユーザーの場合
$ sudo chkrootkit [オプション] [検査項目]

例)rootユーザーの場合
# chkrootkit [オプション] [検査項目]

特定の検査だけを実行したい場合は、検査項目を引数として指定することで、個別チェックが可能です。例えば、chkrootkit sshdのように実行することで、sshdバイナリに改ざんの痕跡があるかどうかのみをチェックします。

chkrootkitはシステムのコア領域へアクセスするため、root権限で実行する必要があります。

この記事では、

  • Debian系ディストリビューションの場合、sudoコマンド$ sudo chkrootkit
  • Red Hat系ディストリビューションの場合、rootユーザー# chkrootkit

を使用しています。

よく使うオプション

オプション機能概要
-hヘルプを表示
-Vバージョン情報を表示
-l検査可能な項目を表示
-dデバッグモード(トラブルシューティング用)
-q異常が検出された箇所だけ出力
-xエキスパートモード(詳細出力)

chkrootkitには、ファイル出力のオプションがないため、リダイレクトを使用してファイル出力します。

ファイル出力の例

$ sudo chkrootkit > /var/log/chkrootkit_$(date +%F).log

スキャン結果の見方

スキャン結果には、チェック項目とともにnot infectedINFECTEDといった診断結果が表示されます。特に注意が必要なのは、INFECTEDと表示された場合であり、これは該当バイナリやプロセスにルートキットの兆候があることを示しています。

ただし、chkrootkitはシグネチャベースのツールであるため、誤検知も一定数存在します。INFECTEDと表示されたとしても、誤検知である可能性もあるため、結果を鵜呑みにせず、該当プロセスやファイルの挙動をさらに調査することが重要です。

スキャン結果の一例

Checking `chsh'... INFECTED
Checking `find'... not infected
Checking `ifconfig'... not found
Checking `syslogd'... not tested

診断結果の意味

INFECTED「感染の兆候がある」と判断したことを意味します。確実に感染していると断定するものではなく、誤検知の場合もありますが、緊急性が高いので調査が必要です。
not infected検査した結果、問題が見つからなかった(感染の兆候がない)ことを意味します。
not found検査対象のバイナリ(コマンドやファイル)がシステム上に見つからなかったことを意味します。
例)/usr/sbin/ifconfigを検査しようとしたが、そのファイル自体が無い。
not tested検査は実行されなかった、またはスキップされたことを意味します。
例)「検査に必要なツールやファイルが不足している」「実行環境のOSではサポートされていない」など

実際にchkrootkitを実行してみた

上記で提示した検証環境にて、実際にchkrootkitを実行してみました。

chkrootkitを実行

Kali Linux

$ sudo chkrootkit | grep INFECTED
(出力なし)

Ubuntu Server

$ sudo chkrootkit | grep INFECTED
(出力なし)

AlmaLinux

# chkrootkit | grep INFECTED
Checking `chsh'... INFECTED

Rocky Linux

# chkrootkit | grep INFECTED
Checking `chsh'... INFECTED

AlmaLinuxとRocky Linuxで、INFECTED(感染の疑い)が検知されました。誤検知の可能性もあるので、次のセクションで感染の有無を検証します。

chshの感染有無を検証

RPMデータベースの情報と比較

まず、システムにインストールされているパッケージと、RPMデータベースの情報を比較します。

AlmaLinux

--- chshのRPMパッケージを確認 ---
# rpm -qf $(which chsh)
util-linux-user-2.37.4-21.el9.x86_64

--- 指定したパッケージがインストールされた時と比べて、改変されていないかを検査する ---
# rpm -V util-linux-user
出力なし(差異がない場合、何も出力されません)

Rocky Linux

--- chshのRPMパッケージを確認 ---
# rpm -qf $(which chsh)
util-linux-user-2.37.4-21.el9.x86_64

--- 指定したパッケージがインストールされた時と比べて、改変されていないかを検査する ---
# rpm -V util-linux-user
出力なし(差異がない場合、何も出力されません)

AlmaLinux、Rocky Linuxいずれも、差異は見つかりませんでした。

クリーン環境のハッシュ値と比較

次に、同じOSバージョンのクリーン環境(別の仮想マシン)を用意し、chshのハッシュ値を比較します。

AlmaLinux

--- 検証環境のハッシュ値 ---
# which chsh
/usr/bin/chsh
# sha256sum /usr/bin/chsh
d0ec05340501d90a8dfc9a13d89df923929707b8bc8947dcc31e778cf71eac5b  /usr/bin/chsh

--- クリーン環境のハッシュ値 ---
# sha256sum /usr/bin/chsh
d0ec05340501d90a8dfc9a13d89df923929707b8bc8947dcc31e778cf71eac5b  /usr/bin/chsh

Rocky Linux

--- 検証環境のハッシュ値 ---
# which chsh
/usr/bin/chsh
# sha256sum /usr/bin/chsh
86513c907809f508b2bf32476771dfa86ed4fdbc4ddb8e7c2d4520bc166ef182  /usr/bin/chsh

--- クリーン環境のハッシュ値 ---
# sha256sum /usr/bin/chsh
86513c907809f508b2bf32476771dfa86ed4fdbc4ddb8e7c2d4520bc166ef182  /usr/bin/chsh

ハッシュ値についても差異が見つからなかったため、誤検知と判断できます。

ルートキットが見つかった場合の対処方法

ルートキットが検出された場合、それはシステムがすでに攻撃者の手に落ちている可能性を示唆しています。ルートキットは、攻撃者が痕跡を隠蔽しつつ、システムへの持続的なアクセスを維持するために使用されるマルウェアであり、単なる不審ファイルの存在とは異なる深刻な事態です。

検出結果が誤検知か否か判断する

chkrootkitはシグネチャベースの検出ツールであるため、誤検知が発生する場合があります。そのため、INFECTEDと判定された場合でも、誤検知の可能性を考慮し、当該プロセスやファイルについて追加の調査を行います。

上記の検証では、「RPMデータベースの情報」および「クリーン環境のハッシュ値」と照合することで、誤検知かどうかを判断しました。

万が一、感染の可能性が認められた場合、速やかにインシデント対応チーム(CSIRT)や関係部門と連携し、対応を開始します。

感染システムを隔離

感染の可能性がある場合、当該システムをネットワークから切り離します。

ルートキットは、外部とのC2(コマンド&コントロール)通信を行っている可能性が高く、ネットワーク接続を維持したままだと、更なる情報漏えいやマルウェア拡散のリスクが高まります。

また、再起動やシャットダウンは、証拠を失う恐れがあるため、法的対応や後続調査を考慮する場合には避けるべきです。

同一ネットワークの他ホストも確認

ルートキット感染が確認された場合、同じセグメント内の他ホストもすでに攻撃者のターゲットになっている可能性があります。

システムの再構築を検討

ルートキットの対応について、除去ではなく、システムを再構築することが推奨されます。ルートキットはカーネルモジュールやブートローダーまで侵入している可能性があり、技術的に完全な除去は困難です。

手段メリットリスク
感染ファイルの削除一時対応が可能隠れている別の感染ファイルが残る恐れ
バックアップからの復元ダウンタイムの短縮バックアップ自体が感染している可能性
クリーンインストールシステム全体の信頼回復時間がかかる

侵入経路の調査、および再発予防策の検討

「ルートキットに感染している」ということは、システムに何らかの侵入口が存在する可能性が極めて高いです。それを修正しない限り、攻撃者に再び侵入され、同様の被害を受ける可能性があります。

多くの場合、パッチ未適用の脆弱性やアプリケーションの設定ミス、SSHブルートフォース攻撃などが侵入の糸口となります。

ログの調査や侵入検知システム(IDS)のアラート履歴を確認し、侵入のタイミングと手法を特定することで、今後の再発防止策を具体的に設計できます。

サーバーをより堅牢化するためには

chkrootkitは、すでに侵入された痕跡を検出するためのツールですが、これだけではサーバーへの不正アクセスを未然に防ぐことはできません。サーバーをより堅牢化するための対策として有効なのが、Fail2Banとの併用です。

Fail2Banは、ログファイルを監視し、不正なアクセスが一定回数繰り返された場合に、そのIPアドレスを自動的にブロックするセキュリティツールです。例えば、「SSHへのブルートフォース攻撃に対しては、5回連続でログインに失敗したIPアドレスを一定時間遮断する」といった対応が可能です。

Fail2Banの導入により、chkrootkitで検出されるようなルートキットが仕込まれる以前の段階、すなわち攻撃の初動段階で攻撃元を排除することができます。これにより、サーバー全体のセキュリティ水準を向上させることが可能です。

デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次