Поиск руткитов в Debian/Ubuntu/ Linux Mint и Red Hat/CentOS/Fedora
Руткит (rootkit) представляет собой скрытый тип программного обеспечения, как правило вредоносного и который разработан, чтобы скрыть существование определенных процессов или программ от нормальных методов обнаружения и включить постоянный привилегированный доступ к компьютеру. Термин руткит представляет собой объединение «root» ( традиционное название из привилегированной учетной записи на операционных системах Unix) и слово «kit» (которая относится к программным компонентам, которые реализуют функции). Термин «руткит» имеет негативные коннотации через свою ассоциацию с вредоносными программами.
Установка руткитов могут быть автоматизированы или злоумышленник может установить его, как только он получит пользовательский доступ от администратора системы ( доступ рута). Получение этого доступа является результатом прямого нападения на систему (т.е. эксплуатируя известную уязвимость, пароль (либо «трещин», привилегий или социальной инженерии)). После установки, становится возможным скрыть вторжение а также поддерживать привилегированный доступ. Хакер может обойти разные защиты узнав какую то уязвимость системы, различных утилит, портов.
Обнаружение руткитов занимает довольно много времени, так как руткит можно хорошо замаскированть под программное обеспечение и которое может скрыть свое разоблачение. Методы обнаружения включают в себя использование альтернативных и надежных операционных систем, поведенческие методы, основанные на сканирование подписей и анализ дампа памяти.
Классификация руткитов.
Приведу наглядный рисунок на котором все классифицируется и все становится понятным.
Не буду уделять много внимания на этом. если кому интересно именно по классификации руткитов, то погуглите и более детальную информацию. А я лучше расскажу как же найти их и как можно обезопасить свою систему, так же что же делать если уже «заразился»? На эти вопросы я отвечу немного позже. Существует довольно много решений как найти и устранить руткиты в Linux. Приведу наглядные примеры хороших программ которые справляются с этой задачей.
Инструмент chkrootkit (Check Rootkit).
chkrootkit (Check Rootkit) — является Unix-программой которая призвана помочь системным администраторам проверить свою систему на наличие известных руткитов. Это скрипт с помощью обычных инструментов UNIX / Linux (таких как strings и grep команд) дают возможность искать основные системные программы для сетей/ подписей сравнивая в файловой системе /proc файлов с выводом команды ps (состояние процесса), чтобы искать разные расхождения. Утилита может быть использована с запуском «спасательного диска» (как правило, Live CD) или утилиту можно установить в систему.
Утилита имеет в себе модули для различного сканирования:
* chkrootkit — Модуль который проверяет вашу ОС.
* ifpromisc — Служит для поиска интерфейса (ов), которые работают в режимах захвата пакетов.
* chklastlog — Служит для обнаружения различных фактов удаления записей из журнального файла lastlog.
* chkwtmp — Служит для обнаружения фактов удаления записей из журнального файла wtmp.
* check_wtmpx — Служит для обнаружения фактов удаления записей из журнального файла (только в Solaris).
* chkproc — Ищет следы от троянов LKM (Linux Kernel Module — модуль ядра Linux.)
* chkdirs — Ищет следы от троянов LKM.
* strings — Утилита для быстроты поиска и замены текстовых строк.
В сhkrootkit имеется очень хорошая база для обнаружения различного нежелательного ПО и руткитов, я приведу список и покажу на рисунке внизу.
Установка chkrootkit для Debian/Ubuntu/Linux Mint.
Чтобы запустить установку достаточно выполнить команду:
# sudo apt-get install chkrootkit
Установка chkrootkit на RedHat/CentOS/Fedora
Для начала нужно подключить и установить репозиторий EPEL, затем выполнить команду:
# yum install chkrootkit
Установка для других операционных системах.
Идем на официальный сайт и качаем последнюю версию исходников программы chkrootkit, это можно сделать следующим образом:
# cd /usr/local/src # wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
После чего нужно распаковать архив и скомпилировать утилиту:
# tar xfvz chkrootkit.tar.gz # cd chkrootkit* # make sense
Как только программа скомпилируется, запускаем ее и сканируем.
Использование утилиты chkrootkit.
Чтобы запустить утилиту, достаточно выполнить команду ( только нужно запустить ее от рута):
# chkrootkit
Опции
-х : Показывает справку о работе с программой.
-V : Покажет версю утилиты.
-l : Выведет список проверок которые поддерживает программа.
-d : Режим отладки.
-q : Опция которая может задать минимальный вывод информации.
-x : Опция с помощью которой задается вывод дополнительной информации.
-r : <каталог>Задается имя каталогов для использования в качестве корневого (root).
-p : dir_1:dir_2:dir_N С помощью этой опции задаются пути для внешних программам, используемым chkrootkit.
-n : С помощью этой опции можно отключить просмотр всех смонтированных каталогов NFS.
Примеры использования:
1. Например, мы хотим начать поиск троянских программ в ps и ls и обнаружение интерфейсов которые работают в режиме захвата пакетов, то утилиту нужно запустить так:
# chkrootkit ps ls sniffer
2. Нужно найти все подозрительные строки в бинарных файлах, то нужно выполнить следующую команду:
# chkrootkit -x | more
Будет вывод осуществляться по страницам. Как по мне это удобно очень.
3. Нужно найти все подозрительные строки в бинарных файлах по имени «bin»:
# chkrootkit -x | egrep '^/bin'
Утилита chkrootkit может использовать и другие утилиты для проверки, такие как awk, cut, egrep, find, head, id, ls, netstat, ps, strings, sed, uname. Если эти утилиты недоступны в пути поиска, то нужно указать путь к ним с помощью опции -p.
4. Команда что будет приведена ниже будет выполнять тесты chkrootkit с использованием утилит которые хранятся в директории /bin на компакт-диске и смонтированы в системе как /cdrom:
# chkrootkit -p /cdrom/bin
5. Можно смонтировать раздел с помощью команды:
# chkrootkit -r /mnt1
Это нужно когда, например, вам нужно просканировать ХДД, на другом ПК на котором нет зараженных файлов ( если вы уверены на 100%).
6. Так же можно перенаправить вывод команды в файл. Например вы хотите что бы посте сканирования вашей системы вам отправился отчет на мыло:
0 3 * * * cd /usr/local/bin; ./chkrootkit 2>&1 | mail -s "chkrootkit output for HostName" captain
Каждые день в 3.00 часа будет выполняться проверка, после окончания будет выслан отчет локальному юзеру captain на мыло.
7. Тест LKM позволяет увидеть в вашей ОС все процессы которые скрыты от программы ps:
0,10,30 * * * * cd /usr/local/bin; ./chkrootkit lkm 2>&1 | mail -s "LKM search for HostName" captain@AdminHost
Отчет будет выслан на мыло.
8. С тестом 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" captain
Инструмент rkhunter (Rootkit Hunter).
RkHunter (Rootkit Hunter) является Unix-инструментом, который сканирует вашу систему на наличие руткитов, бэкдоров и возможных локальных эксплойтов. Она делает это путем сравнения SHA-1 хэшей важных файлов с известными хорошими базами данных в онлайновом режиме, а так же поиск каталогов по умолчанию (руткитов), неправильных разрешений, скрытых файлов, подозрительных строк в модулей ядра для Linux и FreeBSD.
Установка RkHunter для Debian/Ubuntu/Linux Mint.
Чтобы установить утилиту выполните команду что ниже, данная программа доступна в стандартном репозитории системы:
# apt-get install rkhunter
После того как установили эту утилиту нужно обновить базы данных вирусов:
# rkhunter --update
Затем, подредактируем конфигурационный файл RkHunter:
# vim /etc/rkhunter.conf
В этом файле есть некоторые настройке, например отправлять критические уведомления на почту. Настраиваем на свое усмотрение.
После конфигурирования конфига нужно создать «слепок» нашей ОС (первоначальная база данных свойств различных системных команд), для того, чтобы RootKit Hunter мог сравнивать текущее состояние команд в системе с созданной базой:
# rkhunter --propupd
Затем можно приступать к сканированию системы:
# rkhunter --check
По желанию можно добавить программу в кронтаб на выполнение по заданному расписанию, вот пример:
0 11 * * * /usr/bin/rkhunter --update; /usr/bin/rkhunter -c --createlogfile --cronjob
В кроне я прописал выполнение 1 раз в сутки в 11.00. Вы можете установить любое другое время и дату. Утилита ведет логи которые можно найти и почитать по пути:
# vim /var/log/rkhunter.log
Установка RkHunter на RedHat/CentOS/Fedora
Для того чтобы установить RkHunter нужно выполнить команду в консоле только для начала подключите репозиторий EPEL:
# yum install rkhunter
После того как установили эту утилиту обновим БД вирусов:
# rkhunter --update
Можно немного подредактировать конфигурационный файл RkHunter для своих нужд:
# vim /etc/rkhunter.conf
В файле имеются некоторые настройки, например отправлять критические уведомления на почту. Настраиваем на свое усмотрение.
Создадим «образ» нашей ОС (первоначальная БД со свойствами различных системных команд), для того, чтобы RootKit Hunter мог сравнивать текущее состояние команд в системе с созданной базой:
# rkhunter --propupd
Собственно теперь можно приступать к сканированию системы:
# rkhunter --check
Сканирование выполняется в нескольких режимах:
- Ищет уязвимости в командах;
- Поиск rootkits;
- Проверка network сети;
- Проверка локального хоста;
После чего нам покажут полную статистику, вот что получилось у меня:
С рисунка можно определить и понять что он проверил файлы и не нашел никаких уязвимостей. Если бы нашел хоть то то, то пришлось бы искать решение этой проблемы, т.к вирусов и руткитов много, я не могу описать о каждом из них по поводу их одоления. По этому гугл Вам в помощь, но если уж все так плохо, то пишем мне и я помогаю Вам.
По желанию можно добавить программу в cron на выполнение по заданному расписанию, вот пример:
0 22 * * * /usr/bin/rkhunter --update; /usr/bin/rkhunter -c --createlogfile --cronjob
Выполняться утилита будет 1 раз в сутки в 22.00, но вы настраивайте для своих нужд, как кому будет удобно.
В случаи необходимости можно всегда глянуть лог:
# vim /var/log/rkhunter.log
Еще очень простой способ установить сканер rkhunter на ваш сервер:
# cd /usr/local/src && wget http://vorboss.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz
Распакуем скачанный архив и запустим установочный скрипт:
# tar -xvf rkhunter-*.tar.gz && cd rkhunter-* && ./installer.sh --layout default --install
После чего нужно обновить базы и запустить сканер, я описывал это немного выше.
Можно еще добавить скрипт в кронтаб для отправки уведомлений на почту, для этого, я создам скрипт в папке /etc/cron.daily/. Данный скрипт будет сканировать ОС каждый день и будет отправлять уведомления на указанный электронный адрес. И так, создаем скрипт:
# vim /etc/cron.daily/rkhunter.sh
И прописываем в скрипт следующие строки:
#!/bin/sh ( /usr/local/bin/rkhunter --versioncheck /usr/local/bin/rkhunter --update /usr/local/bin/rkhunter --cronjob --report-warnings-only ) | /bin/mail -s 'rkhunter Daily Run (Your_Server_Name_Here)'your_email@address.com
ВНИМАНИЕ! Нужно изменить некоторые параметры в данном скрипте:
Your_Server_Name_Here — имя вашего сервера.
your_email@address.com — ваш почтовый адрес для получения алертов.
Выставляем нужные права на данный скрипт
# chmod 755 /etc/cron.daily/rkhunter.sh
Что делать если руткит обнаружен?
Chkrootkit помогает обнаружить руткиты, но удалить он многие из них удалению не поддержат. Когда вы обнаружили руткита в вашей системе в первую очередь нужно разорвать сетевое соединение чтобы не дать ему распространяться по сети. Перед удалением руткитов, на всякий случай, нужно сделать бэкап всех нужных файлов/ папок и после чего переустановить вашу ОС. Другой вариант — тщательное изучение каждого найденного руткита и проведение ряда действий по его полному удалению из системы на основе данных о пути его проникновения в систему и функционирования.
Много руткитов которых можно удалить вручную, но есть и такие, которые могут быть удалены только в ходе полной переустановки ОС, особенно в тех случаях, когда руткит «проживает» в ядре и переустановка операционной системы может быть единственным доступным решением проблемы.
Поиск руткитов в Debian/Ubuntu/ Linux Mint и Red Hat/CentOS/Fedora завершен.