[chkrootkit: kicking script kiddies' asses since 1997]

locally checks for signs of a rootkit

What's chkrootkit?

chkrootkit is a tool to locally check for signs of a rootkit. It contains:

The following rootkits, worms and LKMs are currently detected:
  1. lrk3, lrk4, lrk5, lrk6 (and some variants);
  2. Solaris rootkit;
  3. FreeBSD rootkit;
  4. t0rn (including some variants and t0rn v8);
  5. Ambient's Rootkit for Linux (ARK);
  6. Ramen Worm;
  7. rh[67]-shaper;
  8. RSHA;
  9. 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.

chkrootkit has been tested on: Linux 2.0.x, 2.2.x, FreeBSD 2.2.x, 3.x and 4.x, OpenBSD 2.6, 2.7 and 2.8, Solaris 2.5.1, 2.6 and 8.0.

More details can be found on the chkrootkit's README.

What's New

chkrootkit 0.33 is now available! (Release Date: Sat, Jun 2 2001) This version includes:

Download

The following files are available for downloading:

License Information

chkrootkit is free software. License information is available at chkrootkit's COPYRIGHT file.

Mailing List

To subscribe:


echo "subscribe users your email" | mail majordomo@chkrootkit.org

FAQ

  1. How does chkrootkit detect a trojaned system command?

    chkrootkit looks for known "signatures" in trojaned system binaries. For example, some trojaned versions of ps have "/dev/ptyp" inside them.

    Obviously an attacker can easily modify the rootkit sources to change its signatures and avoid chkrootkit detection. See next question.


  2. Can chkrootkit detect modified (or new) rootkit versions?

    If chkrootkit can't find a known signature inside a file, it can't automatically determine if it has been trojaned. Try to run chkrootkit in expert mode (-x option) -- in this mode the user can examine suspicious strings in the binary programs that may indicate a trojan.

    For example, lots of data can be seen with:

    # ./chkrootkit -x | more
    
    Pathnames inside system commands:
    # ./chkrootkit -x | egrep '^/'
    


  3. Why haven't you written chkrootkit in Perl?

    Not all systems have Perl available. The motivation was to write a simple tool that could be run in systems with minimal installation.


  4. Which commands does chkrootkit use?

    The following commands are used by the chkrootkit script:

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


  5. Can I trust these commands on a compromised machine?

    Probably not. We suggest you follow one of the alternatives below:

    1. Use the `-p path' option to supply an alternate path to binaries you trust:
      
      # ./chkrootkit -p /cdrom/bin
      
      
    2. Mount the compromised machine's disk on a machine you trust and specify a new rootdir with the `-r rootdir' option:
      
      # ./chkrootkit -r /mnt
      
      

  6. How accurate is chkproc?

    If you run chkproc on a server that runs lots of short time processes it could report some false positives. chkproc compares the ps output with the /proc contents. If processes are created/killed during this operation chkproc could point out these PIDs as suspicious.


  7. I'm running PortSentry/klaxon. What's wrong with the bindshell test?

    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, 5665/tcp, 10008/tcp, 12321/tcp, 23132/tcp, 27374/tcp, 29364/tcp, 31336/tcp, 31337/tcp, 45454/tcp, 47017/tcp, 47889/tcp, 60001/tcp).

Contacting the Authors

Please send comments, new rootkits, questions and bug reports to Nelson Murilo <nelson@pangeia.com.br> (main author) and Klaus Steding-Jessen <jessen@nic.br> (co-author).

Related Links

Acknowledgments

Valid HTML 4.01! Last modified: Sun Jun 3 13:54:46 2001