Программа chkrootkit предназначена для поиска враждебного кода
(rootkit) и иных подозрительных событий в системе. Программа включает
в себя несколько модулей:
* chkrootkit - сценарий проверки системы;
* ifpromisc - поиск интерфейсов, работающих в режиме захвата
пакетов.
* check_wtmpx - обнаружение фактов удаления записей из журнального
файла(только для ОС Solaris).
* chkproc - поиск следов троянских программ LKM (Linux Kernel Module - модуль ядра Linux.)
* chkdirs - поиск следов троянских программ LKM.
* strings - программа для быстрого поиска и замены текстовых строк.
Модули chkwtmp и chklastlog пытаются обнаруживать факты удаления
записей из системных журналов wtmp и lastlog, но полное обнаружение
всех изменений этих файлов не гарантируется.
Предпринимаются попытки поиска файлов, собранных анализаторами (тест
aliens) в обычных местах расположения подобных файлов. Возможность
нестандартного расположения файлов не позволяет гарантировать их
обнаружение во всех случаях.
Модуль chkproc проверяет файлы /proc для обнаружения скрытых от команд
ps и readdir системных вызовов, которые могут быть связаны с
троянскими модулями LKM. Вы можете использовать эту команду с ключом
-v для вывода более подробного отчета.
Chkrootkit может обнаруживать широкий спектр враждебного кода,
перечисленного ниже.
Программа работает на различных программных платформах и была успешно
протестирована на системах
* Linux с ядрами серий 2.0, 2.2, 2.4 и 2.6;
* FreeBSD 2.2.x, 3.x, 4.x и 5.x;
* OpenBSD 2.x и 3.x.;
* NetBSD 1.5.2;
* Solaris 2.5.1, 2.6 и 8.0;
* HP-UX 11;
* Tru64;
* BSDI.
Для использования программы chkrootkit требуются полномочия
пользователя root. Простейший способ проверки обеспечивается
командой
./chkrootkit
(Команда должна выполняться из каталога, в котором хранятся
исполняемые файлы chkrootkit, поскольку сценарий ищет исполняемые
файлы в текущем каталоге, не используя переменную окружения PATH.)
В этом случае программа будет автоматически выполнять весь набор
поддерживаемых тестов. Для выбора отдельных тестов вы можете
воспользоваться параметрами командной строки:
./chkrootkit [опции] [<имя теста>...]
Опции
-h
Выводит справочную информацию о работе с программой.
-V
Выводит сведения о номере версии программы и завершает работу.
-l
Показывает список поддерживаемых программой проверок.
-d
Задает вывод подробной информации о работе программы (режим отладки).
-q
Задает минимальный вывод информации.
-x
Задает вывод дополнительной информации.
-r <каталог>
Задает имя каталога для использования в качестве корневого (root).
Указанный в команде каталог служит стартовой точкой для просмотра
дерева каталогов.
-p dir1:dir2:dirN
Указывает пути к внешним программам, используемым chkrootkit.
-n
Отключает просмотр смонтированных каталогов NFS.
По умолчанию программа пытается выполнить все доступные проверки, а
параметр <имя теста> может содержать одно или несколько имен
поддерживаемых программой тестов:
aliens asp bindshell lkm rexedcs
sniffer wted w55808 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 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
Например, приведенная ниже команда обеспечивает поиск троянских
программ ps и ls, а также обнаружение интерфейсов, работающих в режиме
захвата пакетов.
./chkrootkit ps ls sniffer
С помощью опции -q можно задать работу программы с выводом минимальной
информации. В этом случае отчет будет содержать лишь сведения о
найденных в системе троянских программах или следах работы
анализаторов протоколов и сканеров.
Опция -x позволяет пользователю провести поиск подозрительных строк в
бинарных файлах, которые могут говорить о присутствии в системе
троянских программ. Все решения об идентификации троянских программ
пользователь должен будет принять сам. Поскольку в режиме поиска
текстовых строк на экран будет выводиться значительный объем
информации, целесообразно воспользоваться постраничным выводом:
./chkrootkit -x | more
Команда
./chkrootkit -x | egrep '^/bin'
позволяет найти в бинарных файлах текстовые строки, начинающиеся с
символов /bin, которые могут содержать имена исполняемых файлов.
Программа chkrootkit может использовать для выполнения проверки другие
программы, включая awk, cut, egrep, find, head, id, ls, netstat, ps,
strings, sed, uname. Если эти программы недоступны в пути поиска,
укажите путь к ним с помощью опции -p. Такая возможность позволяет
использовать при проверке системы заведомо нормальные версии
перечисленных программ, которые могут храниться на отдельном диске без
возможности записи на него. Приведенная ниже команда обеспечивает
выполнение тестов chkrootkit с использованием программ, хранящихся в
каталоге /bin на компакт-диске, смонтированном в системе как /cdrom
./chkrootkit -p /cdrom/bin
Вы можете указать в командной строке несколько каталогов для поиска
требуемых для работы программ, разделяя имена каталогов двоеточием (:)
./chkrootkit -p /cdrom/bin:/floppy/mybin
Иногда может возникнуть необходимость проверки диска вашей системы на
другом компьютере, где заведомо нет враждебного кода. Для этого служит
опция -r , позволяющая задать точку монтирования для корневого раздела
проверяемого диска. Например, при монтировании корневого раздела как
/mnt1, можно использовать команду:
./chkrootkit -r /mnt1
Сообщения программы
Ниже перечислены префиксы, используемые программой chkrootkit (за
исключением случаев использования с опциями -x или -q) при выводе
отчета о проверке:
* INFECTED - проверка показала, что данная программа может
относиться к известным образцам враждебного кода (rootkit);
* not infected - проверка показала отсутствие сигнатур известных
rootkit;
* not tested - тест не был выполнен по одной из перечисленных ниже
причин:
a. неприменимость проверки для данной ОС;
b. отсутствие возможности использования требуемой для теста
внешней программы;
c. заданы опции командной строки, отключающие эту проверку
(например, -r).
* not found - программа не была найдена и по этой причине не
проверялась;
* Vulnerable but disabled - программа заражена, но не используется
(не работала в момент проверки или "закомментирована" в
inetd.conf).
Примеры использования chkrootkit для мониторинга
Программа chkrootkit выводит результаты проверки на консоль, а с
помощью стандартных операций вывод может быть направлен в файл.
С помощью chkrootkit можно организовать эффективный мониторинг своей
станции и удаленных хостов с передачей результатов проверки по
электронной почте. Вы можете включить нужные команды в файл заданий
cron для автоматической проверки с желаемой периодичностью. Например,
строка
0 2 * * * cd /usr/local/bin; ./chkrootkit 2>&1 |
mail -s "chkrootkit output for HostName" root
в файле /var/spool/cron/root обеспечит выполнение полного набора
тестов в 2 часа 00 минут ежесуточно с передачей отчета локальному
пользователю root по электронной почте.
Тест LKM позволяет увидеть в системе процессы, скрытые от утилиты ps,
- наличие таких процессов в некоторых случаях может говорить о
непорядке в системе, поэтому можно запускать соответствующую команду
достаточно часто, чтобы увидеть незваных гостей. Включив в файл
заданий cron строку
0,20,40 * * * * cd /usr/local/bin; ./chkrootkit lkm 2>&1 |
mail -s "LKM search for HostName" root@AdminHost
вы обеспечите проверку наличия скрытых в системе процессов с передачей
отчетов по электронной почте на адрес root@AdminHost.
С помощью теста sniffer вы можете увидеть в своей сети компьютеры,
интерфейсы которых работают в режиме захвата пакетов, что может
говорить о сборе трафика с помощью анализатора протоколов. Включив в
список заданий строку
1,5,11,16,21,26,31,36,41,46,51,56 * * * * cd /usr/local/bin;
./chkrootkit sniffer 2>&1 | mail -s "Packet sniffer search result for HostName" root
вы обеспечите проверку наличия в сети собирающих пакеты интерфейсов с
интервалом в 5 минут. Отчеты о результатах проверки будут передаваться
локальному пользователю root по электронной почте. Такого же
результата можно добиться с помощью строки задания
1,5,11,16,21,26,31,36,41,46,51,56 * * * * /usr/local/bin/ifpromisc 2>&1 |
mail -s "Packet sniffer search result for HostName" root
Отмечу, что в режим сбора пакетов интерфейс могут переводить не только
анализаторы протоколов, но и ряд других программ. Например, на
станции, где используются программы Snort, p0f, iplog и arpwatch,
команда ifpromisc будет выдавать следующую строку:
Однако при появлении дополнительной информации уже возникает повод для
настороженности. Например, при активизации программы tcpdump строка
для этого же хоста примет вид