chkrootkit V. 0.38 Nelson Murilo (main author) Klaus Steding-Jessen (co-author) Данная программа проверяет локальное наличие rootkit. chkrootkit доступен на: Основной сайт - http://www.chkrootkit.org/ Русская версия - http://ru.chkrootkit.org/ Разработчики не несут никакой ответственности за то, что вы можете сделать с помощью этой программы. Данный пакет включает программное обеспечение, разработанное DFN-CERT, Univ. of Hamburg (chklastlog and chkwtmp), and small portions of ifconfig developed by Fred N. van Kempen, . 1. Что такое chkrootkit? ------------------------ chkrootkit утилита для локальной проверки на предмет наличия rootkit (руткит). Пакет включает в себя: * chkrootkit: shell-скрипт, который проверяет основные системные файлы на предмет изменения/замены их каким либо из существующих руткитов. Обычно изменения касаются следующих файлов: aliens asp bindshell lkm rexedcs sniffer wted scalper slapper z2 amd basename biff chfn chsh cron date du dirname echo egrep env find fingerd gpm grep hdparm su ifconfig inetd inetdconf identd 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 w write * ifpromisc.c: проверяет, находится ли интерфейс в promiscuous режиме. * chklastlog.c: проверяет, не было ли удалений записей из lastlog. * chkwtmp.c: проверяет, не было ли удалений записей из wtmp. * check_wtmpx.c: проверяет, не было ли удалений записей из wtmpx. (Только Solaris) * chkproc.c: проверяет наличие LKM троянов (процессы). * chkdirs.c: проверяет наличие LKM троянов (каталоги). * strings.c: проверяет на предмет быстрой и неаккуратной замены данных в файлах. chkwtmp и chklastlog *ПЫТАЮТСЯ* обнаружить изменения (попытки удаления) из wtmp и lastlog, но *НЕ ГАРАНТИРУЮТ*, что данные изменения будут обнаруженны. Aliens пытается искать логи от сниферов, а так же конфиги от rootkitов. Поиск идет в тех каталогах, которые по умолчанию используются в rootkit и сниферах, по этому гарантии на 100% обнаружение нет. chkproc проверяет есть ли в /proc скрытые от ps и читает каталог с системными вызовами. Это является индикацией LKM троянов, так же вы можете использовать ключ -v (verbose). 2. На данный момент пакет обнаруживает следующие рут-киты, черви и LKMы: ------------------------------------------------------------------------ 1. lrk3, lrk4, lrk5, lrk6 (и их модификации); 2. Solaris rootkit; 3. FreeBSD rootkit; 4. t0rn (включая некоторые модификации и 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; 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 (FreeBSD/Apache chunked encoding worm); 38. Slapper A and B (Linux/Apache mod_ssl червь); 39. OpenBSD rk v1; 40. Illogic rootkit; 41. SK rootkit. 42. sebek LKM; 43. Romanian rootkit; 44. LOC rootkit; 3. chkrootkit был протестирован на следующих платформах: -------------------------------------------------------- * Linux 2.0.x, 2.2.x, 2.4.x, * FreeBSD 2.2.x, 3.x, 4.x, * OpenBSD 2.6, 2.7, 2.8, 2.9, * 3.0, 3.1, 3.2, * NetBSD 1.5.2, * Solaris 2.5.1, 2.6 и 8.0. 4. Содержимое пакета -------------------- README README.chklastlog README.chkwtmp COPYRIGHT chkrootkit.lsm Makefile chklastlog.c chkproc.c chkdirs.c chkwtmp.c check_wtmpx.c ifpromisc.c strings.c chkrootkit 5. Установка ------------- Для компиляции пакета наберите: # make sense После этого пакет готов к работе, наберите: # ./chkrootkit 6. Использование ----------------- chkrootkit должен запускаться из под рута (root): # ./chkrootkit Данный вариант (./chkrootkit) запустит все тесты сразу. Так же, вы можете запускать тесты по отдельности, запуская отдельные файлы вручную, или же использовать различные ключи: использовать: ./chkrootkit [options] [testname ...] Options: -h показывает это сообщение и завершает работу -V показывает номер версии и выходит -l показывает доступные тесты -d debug -q тихий режим -x эксперт режим -r dir использовать каталог dir в качестве каталога с заведомо чистыми бинарными файлами (ps,netstat ifconfig и т.п.) -p dir1:dir2:dirN пути для внешних комманд, используемых chkrootkit Имена файлов для проверки являются стандартными, далее следуюет их список: aliens asp bindshell lkm rexedcs sniffer wted scalper slapper z2 amd basename biff chfn chsh cron date du dirname echo egrep env find fingerd gpm grep hdparm su ifconfig inetd inetdconf identd 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 w write Например, для проверки ps и ls файлов и интерфейсов на предмет наличия трояна и promiscuous режима, наберите: # ./chkrootkit ps ls sniffer При использовании ключа '-q' сообщения в stdout будут выводиться только в случае обнаружения трояна, червя или подозрительных обьектов. При использовании ключа `-x' пользователь может изучить текстовое содержимое бинарных файлов, но будте внимательны! - на stdout пойдет большое количество текста. Лучше использовать в сочетании с коммандой more: # ./chkrootkit -x | more # ./chkrootkit -x | egrep '^/' Chkrootkit использует следующие системные комманды: awk, cut, echo, egrep, find, head, id, ls, netstat, ps, strings, sed, uname Если есть подозрение на то, что машина вскрыта/заражена, то рекомендуем в подобном случае воспользоваться альтернативными путями обнаружения этой гадости: Исползуйте ключ `-p путь_к_заведомо_чистым_ситемным_файлам'(netstat,ifconfig,ps и т.п.), только не забудте сделать копию на всякий пожарный, после установки системы: # ./chkrootkit -p /cdrom/bin Так же вы можете использовать несколько путей, разделяя их `:' # ./chkrootkit -p /cdrom/bin:/floppy/mybin Или воспользуйтесь ключом `-r rootdir' для mountа каталога с заведомо "чистой" машины: Подмантируйте диск например в /mnt/floppy, а затем: # ./chkrootkit -r /mnt/floppy 7. Сообщения от chkrootkit -------------------------- Следующие сообщения выводятся chkrootkit (при исползовании ключей -x или -q вывод не осуществляется) на протяжении тестирования системы: "INFECTED": найден известный rootkit "not infected": файл либо чист, либо содержит неизвестный руткит. "not tested": тест не был проведеин -- это может произойти в следующих ситуациях: a) специфичный для конкретной OS тест; b) тест делается внешней коммандой, которая в данный момент не доступна; c) указанны какие либо специфичные опции в командной строке. (ключая -r ). "not found": команда для тестирования не доступна; "Vulnerable but disabled": файл инфицирован, но не исползуется в данный момент. 8. Найдены пораженные файлы, что делать? ------------------------------------------------------------ Вы увидели, что Ваша система поражена и какой-то плохой парень получил рута... Ваши действия в самом банальном случае - замена поврежденных фалов на нормальные, поиск back-door sshа, убийство оного и вобщем то все и незабудте отсоединить машину от сети, на время обнавления софта. P.S. не забудьте обнавить ssh, sendmail и т.п. софт, который у вас явно устарел, 9. Вопросы / предожения / новые руткиты ----------------------------------- Ждем с нетерпением на: nelson@pangeia.com.br или jessen@nic.br (только английский), tigr@chkrootkit.com (русский / английский) . 10. Благодарности ------------------- Agustin Navarro, anavarro@vip.eniac.com (debug help) Alberto Courrege Gomide, gomide@gomide.com (debug help) Andre Gustavo de Carvalho Albuquerque, gustavo@visualnet.com.br (debug help, performance and Solaris patches) Dave Ansalvish, davea@jcs.mil (Solaris debug help) Bruno Lopes, bruno@openline.com.br (debug help) Daniel Lafraia, lafraia@iron.com.br (source code addition) Josh Karp, jkarp@jother.com (debug help for Solaris 8) Klaus Steding-Jessen, jessen@acm.org (debug help, lots of good suggestions and Perl code for LKM checks) Paulo C. Marques F., paul@u-netsys.com.br (debug help) Pedro Vazquez, vazquez@iqm.unicamp.br (lots of good suggestions) Richard Eisenman, richarde@tricity.wsu.edu (Red Hat support) Manfred Bartz, mob@logi.cc (debug help) Luiz E. R. Cordeiro, cordeiro@iqm.unicamp.br (debug help) Vince Hillier, vince@lansystems.com (debug help) Steve Campbell, steve@computurn.com (Solaris bug fixes) Strashimir Mihnev, strasho@mail.ru (new rootkit) Patrick Duane Dunston, duane@duane.yi.org (Adore LKM detection) Rudolf Leitgeb, r.leitgeb@kreuzgruber.com (chklastlog bug fix) Marcos Aguinaldo Forquesato, guina@ccuec.unicamp.br (Solaris debug) scz, scz@nsfocus.com (check_wtmpx code) Yaroslav Polyakov, xenon@inetlab.com (inetdconf function) Andreas Tirok, Andreas.Tirok@beusen.de (chklastlog patch) Sean D. True (strings.c) Leif Neland, leif@neland.dk (duarawkz rootkit) Kaveh Goudarzi (Pizdakit rootkit) m0xx (monkit and Bobkit rootkits) Bob Grabowsky and Mihai Sandu (t0rn v8.0 variant) Razvan Cosma (new rootkit) Kostya Kortchinsky (chkproc patch) Frank Haverkamp (new rookit) Ludovic Drolez (new rootkit) Dan Irwin (new rootkit) Anton Chuvakin (new rootkit) Steve Collins (new rootkit) Indra Kusuma (new rootkit) Mark Newby (new rootkit) anonymous (new rootkit) Gerard van Wageningen (chklastlog.c) Morohoshi Akihiko, Kostya Kortchinsky and Aaron Sherman (chkproc.c) Andrey Chernomyrdin (new rootkit) Razvan Cosma (new rootkit) zeno (new rootkits) Hal Pomeranz (chkdirs.c) marc (Bug report) Piete Brooks (patches for chkrootkit) Kostya Kortchinsky (chkproc Solaris port) Jan Brinham (chkrookii additions) Paulo Rodrigo (Bug report) Andreas Unterluggauer (Bug report) Mihnea Stoenescu (ideas for chkrootkit) Anton Chuvakin (new rootkit) 11. ChangeLog ------------- 02/20/1997 - Initial release 02/25/1997 - Version 0.4, formal testing. 03/30/1997 - Version 0.5, suspect files routine added. 06/11/1997 - Version 0.6, minor fixes and Debian compatibility. 06/24/1997 - Version 0.7, FreeBSD compatibility fixed. 08/07/1997 - Version 0.8, yet another FreeBSD compatibility and RedHat PAM fixed. 04/02/1998 - Version 0.9, new r00tkits versions support. 07/03/1998 - Version 0.10, another types of r00tkits supported. 10/15/1998 - Version 0.11, bug found by Alberto Courrege Gomide fixed. 11/30/1998 - Version 0.12, lrk4 support added. 12/26/1998 - Version 0.13, minor fixes for Red Hat and glibc users. 06/14/1999 - Version 0.14, Sun/Solaris initial support added. 04/29/2000 - Version 0.15, lrk5 features added and minor fixes. 07/09/2000 - Version 0.16, new r00tkits types support and contrib patches. 09/16/2000 - Version 0.17, more contrib patches, rootkit types and Loadable Kernel Modules (LKM) trojan checking added. 10/08/2000 - Version 0.18, new rookits types support and many bug fixes. 12/24/2000 - Version 0.19, -r, -p, -l options added. ARK support added. Some bug fixes. 01/18/2001 - Version 0.20, Ramen Worm and latest t0rnkit detection, temporay check for promisc mode disabled on Solaris boxes. 01/19/2001 - Version 0.21, Corrects a bug in the Ramen Worm detection. 01/26/2001 - Version 0.22, chklastlog core dump bug fixed, login and bindshell false positives fixed, cron test improvement. 03/12/2001 - Version 0.23, lrk6, rh[67]-shaper, RSHA and Romanian rootkit detection. Test for shell history file anomalies. More ports added to the bindshell test. 03/15/2001 - Version 0.23a fixes a bug found in the cron and bindshell tests. 03/22/2001 - Version 0.30 lots of new tests added. RK17 and Lion Worm detection. 04/07/2001 - Version 0.31 new tests: gpm, rlogind, mgetty. Adore Worm detection. Some bug fixes. 05/07/2001 - Version 0.32 t0rn v8, LPD Worm, kenny-rk and Adore LKM detection. Some Solaris bug fixes. 06/02/2001 - Version 0.33 new tests added. ShitC, Omega and Wormkit Worm detection. dsc-rootkit detection. Some bug fixes. 09/19/2001 - Version 0.34 new tests added. check_wtmpx.c added. Ducoci rootkit and x.c Worm detection. `-q' option added. 01/17/2002 - Version 0.35 tests added: lsof and ldsopreload. strings.c added. Ports added to the bindshell test. RST.b, duarawkz, knark LKM, Monkit, Hidrootkit, Bobkit, Pizdakit, t0rn v8.0 (variant) detection. 06/15/2002 - Version 0.36 test added: w. chkproc.c additions. Showtee, Optickit, T.R.K, MithRa's Rootkit, George and SucKIT detection. 09/16/2002 - Version 0.37 tests added: scalper and slapper. Scalper Worm, Slapper Worm, OpenBSD rk v1, Illogic and SK rootkit detection. chklastlog.c and chkproc.c improvements. Small chkrootkit bug fix. 12/20/2002 - Version 0.38 chkdirs.c added. chkproc.c improvements. slapper B, sebek LKM, LOC, Romanian rootkit detection. new test added: trojan tcpdump. Minor bug fixes in the chkrootkit script. -------------- Thx for using chkrootkit ----------------