Поиск руткитов в Debian/Ubuntu/ Linux Mint и Red Hat/CentOS/Fedora

 Поиск руткитов в 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

Список что может найти chkrootkit

Установка 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
Сканирование на уязвимости в системе с помощью rkhunter --check

Сканирование на уязвимости в системе с помощью 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 завершен.

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.