chkrootkit is a lightweight, locally-run scanner that checks a Unix or Linux system for the tell-tale signs of a rootkit — a stealthy compromise that hides its own processes, files and network activity from the operating system. Written by Nelson Murilo with co-author Klaus Steding-Jessen and maintained by the AMS Foundation, it has been a standard item in the Unix administrator’s toolkit since the late 1990s.
The tool is deliberately simple: mostly a shell script plus a handful of small compiled helpers. There is no agent, no daemon and no network component — you run it as root on the host you want to inspect, and it reports what it found. The latest upstream release, 0.59, shipped in January 2026 and added checks for processes executed from memory, the nologin command, the XZ backdoor and the Bootkitty UEFI bootkit.
/proc and kernel module tables for 70+ named rootkits, worms and LKMs, including t0rn, Ambient’s Rootkit, Ramen, Lion, Adore, knark, SucKIT, Scalper, Slapper, sebek, Umbreon, BPFDoor and the Operation Windigo / Mumblehard families.chkproc and chkdirs compare a walk of /proc against the output of ps, and look for Linux kernel module (LKM) trojan activity that a compromised process table would conceal.chklastlog, chkwtmp, chkutmp and (on Solaris) check_wtmpx detect gaps left behind when an intruder edits lastlog, wtmp or utmp to erase their tracks.ifpromisc flags interfaces running in promiscuous mode or holding packet-sniffer sockets, the classic network-tap symptom.-r) or run it from a rescue disc, so it uses its own copies of strings, grep, find and friends instead of the potentially compromised ones on the host.Rootkits are designed to be invisible: a compromised ps hides the attacker’s processes, a trojaned ls hides their files, and an edited wtmp hides their logins. chkrootkit’s value is that it looks for exactly those tells and cross-checks them against each other, in a fraction of the time a manual audit would take. On a live host it is usually the first thing an administrator runs after a suspicious alert or an unexplained authentication failure, and it is small enough to keep on a rescue USB.
Two honest caveats. First, no signature-based checker can be relied on against a rootkit that already knows about the checker, so chkrootkit should be run from trusted media (or an alternate ROOTDIR) and combined with an independent file-integrity tool. Second, false positives are normal — the sniffer check in particular fires on legitimate daemons such as dhclient/dhcpcd, which do hold packet sockets. Read the WARNING output rather than treating it as a verdict.
-r at its root filesystem and scan with trustworthy binaries.chkrootkit targets Unix-like systems: Linux, FreeBSD, OpenBSD, NetBSD, Solaris/SunOS, HP-UX, Tru64, BSD/OS (BSDI), AIX and macOS. It is packaged by every major Linux distribution (Debian/Ubuntu, Fedora/RHEL, Arch and others), so installation is normally a single package-manager command; it must be run with root privileges to inspect the whole system.
Free and open source. chkrootkit is distributed under a BSD 2-Clause licence — the upstream COPYRIGHT file permits redistribution and use in source and binary forms provided the copyright notice and disclaimer are retained. Copyright is held by the AMS Foundation and contributors. A few bundled helper files carry their own permissive notices (for example the DFN-CERT helpers used by chklastlog/chkwtmp), which is what Debian’s own copyright analysis records for the package.