Борьба с rootkit (руткитами) в GNU/Linux [Rootkit Hunter]

Доброго времени суток, дорогие друзья, знакомые, читатели, почитатели и прочие личности.

Сегодня наша статья будет посвящена rootkit. О том, что это за пакость такая знает, надеюсь, каждый, но давайте немного освежим в памяти, что же такое руткиты (rootkit). Руткиты, - это вредоносные программы, созданные для получения доступа на уровне пользователя или суперпользователя, при этом они очень хорошо маскируются от антивирусных программ.

руткиты linux

Если приглядеться к названию, то очень выделяется первая часть слова в названии rootkit, - это root, которая явно указывает, что слово зародилось в мире Unix-компьютеров. Кто такой root в GNU/Linux мы уже описывали здесь.

Сегодня, когда мы говорим о руткитах, то, как правило, речь ведется о Windows-компьютерах (система windows, да простят меня пользователи этих систем, наиболее подвержена заражению), но раз это слово зародилось в мире Unix, то и поговорим, соответственно, о руткитах в GNU/Linux. Как бы красочно (или устрашающе) не называлась статья, разговор пойдет, все таки, не о борьбе как таковой с руткитами в Linux системах, а о способах проверки.

Поехали.

Поиск и удаление руткитов в Linux [Rkhunter]

Для GNU/Linux есть несколько инструментов сканирования руткитов, которые помогают противостоять известным или потенциальным руткитам. Одним из таких инструментов является Rootkit Hunter или сокращенно rkhunter. Это очень простая в использовании утилита, которая проверяет компьютеры под управлением Unix (GNU/Linux) на наличие руткитов. Она имеется во всех GNU/Linux.

Rkhunter конечно не устанавливается по умолчанию, но в репозиториях имеется. Если вдруг, по каким либо причинам, ее там не окажется, то ее всегда можно найти и скачать с официального сайта производителя. Графической оболочкой rkhunter не наделен, поэтому все будем выполнять через... терминал и обязательно с правами суперпользователя (sudo - замена root), будем делать из Вас настоящих линуксоидов, чтобы никто не боялся командной строки :).

Итак, для начала пользования этой утилитой, мы ее установим:

Для установки rkhunter на Debian, Ubuntu или Linux Mint (или любой другой оси, которая берет начало от Debian) достаточно в терминале (командной строке) ввести команду (можно потренироваться и набрать ее самостоятельно или просто скопировать и вставить):

sudo apt-get install rkhunter

Для установки rkhunter на Fedora:

sudo yum install rkhunter

Что может утилита rkhunter: а может она не так уж и мало, а именно, - сравнивает хэши исполняемых системных файлов с известными значениями, содержащимися в базе данных, проверяет на известные руткиты файлы и каталоги, выявляет зловредный код, проводит проверку сетевых портов и интерфейсов, проводит проверку системного boot, проводит проверку групп и аккаунтов, проводит проверку системных конфигурационных файлов, проводит проверку файловой системы в целом.

Единственное, что rkhunter не умеет делать, - это самостоятельно удалять руткиты. Но это скорее плюс, чем минус, потому как утилита не идеальна (кстати, как и не идеальны все антивирусы), и даже она может ошибаться и ложно срабатывать. Вся проверка записывается в файл /var/log/rkhunter/rkhunter .log. О том, что же делать, если rkhunter все же укажет на наличие подозрительных файлов мы поговорим чуть ниже. А пока перейдем к ее работе.

Первое, что надо сделать после установки утилиты - это обновить ее и удостовериться, что у нас актуальная версия (актуальная версия на сегодня - 1.4.2):

sudo rkhunter --update (два дефиса перед update обязательны),
rkhunter --versioncheck

И второе, - раз мы обновили базу, значит изменился конфигурационный файл утилиты (конфигурационный файл расположен в /etc/rkhunter.conf) и нам нужно сказать (показать) программе, что эти изменения внесены в файл конфигурации, вот для этого нужно сделать снимок (слепок, называйте как вам больше нравится) командой:

rkhunter --propupd

Это в Ваших же интересах, чтобы утилита меньше ложно срабатывала.

Вы можете сами посмотреть насколько хэши исполняемых системных файлов отличаются или не отличаются от известных значений, содержащимися в базе данных. По другому это называется - проверка корректности сигнатур для всех установленных в системе пакетов.

Проверяется это так:

Для дистрибутивов на базе RPM командой:

rpm --verify --all

Для debian-но подобных дистрибутивов программой debsums. По умолчанию эта программа не установлена в системе, ее надо установить:

sudo apt-get install debsums

Какая бы система у вас не была установлена вывод будет примерно одинаковый:

(если везде написано "ОК", значит никаких изменений с файлами не происходило).

Ну мы немного отвлеклись. После установки выполним поиск руткитов (правда тут есть большая вероятность, что мы этих руткитов просто не найдем, по причине того, что их просто не будет в вашей системе)

sudo rkhunter -c или
sudo rkhunter --check или
sudo rkhunter -c --enable all --disable none

Тестирование будет проходить в несколько этапов с выводом сообщений по каждому пункту теста. Вы просто нажимаете Enter для продолжения.

И в конце выведется общий список - информация по тестированию.

Если вы визуально не хотите наблюдать за ходом тестирования, то можно запустить rkhunter с ключом -rwo, в этом случае будут выводиться только предупреждения:

rkhunter -c --enable all --disable none --rwo

Утилита выдала несколько предупреждений, что такие то процессы в данный момент работают. Под процессами подразумеваются открытые программы, которые работают в фоновом режиме. В тот момент у меня были открыты текстовый редактор, запущен антивирус, работал скайп и pidgin, был открыт терминал, и были открыты еще несколько приложений. На все эти процессы и среагировал rkhunter.

Когда сканирование завершится, rkhunter сохранит результат в /var/log/rkhunter/rkhunter.log
Вы можете отобразить выданные предупреждения следующим образом.

sudo grep Warning /var/log/rkhunter/rkhunter.log

Если Вы после введения этой команды на экране увидели это..

..то можете дальше ничего не читать, ибо пока у вас просто всё отлично :)

Теперь вернемся к тому, что следует делать, если rkhunter сообщает о наличии руткита или показывает какие-либо предупреждения. Во-первых, нужно проверить, является ли это ложной тревогой или нет.

Предупреждения могут быть вызваны просто тем, что вы обновили программное обеспечение, или обновили систему в целом, что привело к изменению системных настроек. Поэтому запускать rkhunter --propupd перед сканированием желательно всегда. Во-вторых, надо вспомнить, что вы устанавливали "потустороннего" в систему.

Например, может среагировать на установленный принтер или МФУ. Ведь всё это вы уже устанавливаете в систему дополнительно. Например, пример ложного срабатывания (последние 2 строчки, указывают на то, что после установки системы в домашней директории появились скрытые директории, которых в системе быть не должно, а это был установлен МФУ):

Просто надо детально смотреть по каждому пути (файлу) на который rkhunter "ругается". Если что-то вызывает сильное сомнение у вас, то надо сравнивать оригиналы файлов с теми, на которые ссылается rkhunter. Это долгий и кропотливый процесс. Ставится виртуальная машина, куда пишется чистая ось и открывая поочередно файлы с чистой оси вы их сравниваете с теми, которые вызывают сомнение. Еще раз повторюсь, что в 99 процентах это ложная тревога.

Ну, а если у вас выпал тот 1% и вы полностью уверены, что в системе сидит руткит, то можно предпринять следующее:

Определить к какой программе относится тот файл, на который указал rkhunter и переустановить эту программу

Но если руткит засел в ядре системы, то не пытайтесь самостоятельно его оттуда удалять, если Вы не эксперт по безопасности, который способен просчитать весь механизм, вектор атаки и путь проникновения конкретного руткита. В этом случае, наиболее хорошим решением будет:

Отключение компьютера от сети, перенос всех ваших ценных данных с этой системы и полная переустановка (только не делайте резервных копий исполняемых файлов, ведь вы же не знаете и не можете со сто процентной гарантией подтвердить, что они чистые).

В двух словах как-то так..

Ну, что еще можно сказать в заключение..

Можно задать автоматическое сканирование, чтобы rkhunter запускалась строго по расписанию. Для этого нужно добавить задание в cron (об этом планировщике заданий мы поговорим в другой раз). Откройте файл (от себя, от суперпользователя не надо) /etc/crontab командой:

crontab -e

и добавьте туда следующие строки (Вы можете поставить свои удобные числа):

# Обновляет базу rkhunter раз в неделю в 11:00
0 11 * * 1 root rkhunter --update --cronjob
# Сканирует на руткиты каждый день в 11:30
30 11 * * * root rkhunter --check --cronjob

Автоматически откроется текстовый редактор vi, где Вы сможете вводить текст Вашего первого (а может уже и не первого) маленького сценария для cron.
Краткая справка по редактору vi:

 

    • чтобы вставить текст надо нажать i, затем можно вводить текст
    • чтобы удалить символ(ы) сначала нажать ESC, а затем набрать x
    • чтобы выйти из vi без сохранения нужно нажать ESC, а затем набрать :q!
    • чтобы сохранить и выйти надо нажать ESC, а затем набрать :wq

 

А теперь удостоверимся, что мы внесли задания в cron. Введите команду:

crontab -l

Задание для cron создано.

Послесловие

На этом можно поставить точку, а значит, что на этом животрепещущем вопросе мы сегодня закончим наше повествование.

Ну как, очень было сложно? Думаю, что нет. Но, как и всегда, если есть какие-то вопросы, мысли, дополнения и всё такое прочее, то добро пожаловать в комментарии к этой записи.

Оставайтесь с проектом, здесь Вам всегда рады ;)

PS: За существование данной статьи спасибо члену команды Pantera

Оценить —

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(5 голосов, в среднем: 5 из 5)

Подписаться —

RSS Email Facebook Twitter G+ YouTube
Темы:  , ,

Комментарии к статье

  1. Неуловимый_Джо

    58-й!
    А где же САМЫЙ первый коммент от Соника? :-)
    А Гале спасибо за статью, не даёт она нам забывать, что такое Линукс!
    Только что-то давно статей от нее не было...

    • Неуловимый_Джо

      ЗЫ Немношшко оффтоп...
      Что самое интересное, вчера, когда "ваял нетленку"(С) :-), почему-то вспомнилась Галина... Думаю, "Вот бы ей показать!" Сегодня, захожу на сайт - свежая статья от неё! А говорят, совпадений не бывает... :-)
      ЗЫ2 Выложил на форум...

      • Pantera

        Нетленку видела (если о стихах речь идет) - даже нажала "Сказать спасибо" ))).

        • Неуловимый_Джо

          Спасибо за спасибо, ага. :)
          Но меня поразило удивительное совпадение событий... Мистика!

  2. вадим

    Всем привет.
    Галина , у меня на Ubuntu 14.04 , фигня какая-то получается :(
    после команды --sudo apt-get install rkhunter-- комп. поругался и сказал :
    E: Работа dpkg прервана, вы должны вручную запустить «sudo dpkg --configure -a» для устранения проблемы.
    Я так и сделал , ( Линукс дружелюбная система :) ) после чего было предложено выполнить
    команду --sudo apt-get install rkhunter --
    и в итоге вот что получается :
    E: Не удалось получить доступ к файлу блокировки /var/cache/apt/archives/lock - open (11: Ресурс временно недоступен)
    E: Невозможно заблокировать каталог /var/cache/apt/archives/

    • вадим

      P.S всё получилось , ребутнул систему и проделал тоже самое ,
      в итоге : -- /usr/bin/unhide.rb ------ [ Warning ]
      ---------------------------------------------------------
      System checks summary
      =====================

      File properties checks...
      Files checked: 135
      Suspect files: 1

      Rootkit checks...
      Rootkits checked : 292
      Possible rootkits: 0

      Applications checks...
      Applications checked: 2
      Suspect applications: 0

      The system checks took: 3 minutes and 17 seconds

      All results have been written to the log file: /var/log/rkhunter.log

      One or more warnings have been found while checking the system.
      Please check the log file (/var/log/rkhunter.log)
      Пока не знаю , хорошо это или плохо :)

      • Pantera

        Вадим, у Вас все нормально. Утилита сказала, что она нашла один подозрительный файл, но это ложная тревога.

    • Pantera

      Да, обычно, нужно обновить всю систему и перезагрузить компьютер.

  3. Неуловимый_Джо

    Интересно, а вот если взять кастрированное ядро Линукс для Ведроида, откуда хитрый дядюшка Ляо выпилил все "лишние" команды, и скопировать туда с рабочего компа нужные, например -sudo, -su и прочие, они будут работать? Процессор Интел.

    • Pantera

      Честно сказать не знаю. Андроид это самостоятельная штучка. Что его объединяет с Linux это, как вы сказали, кастрированное ядро и то объединяет с большой натяжкой :-).

      • Неуловимый_Джо

        Ведроид тихо ржавеет в углу!
        Я имел ввиду внешние команды интерпретатора, когда напрямую работаешь с файлами Линукс через Терминал или ADB канал...
        Можно их добавлять в папку /bin/sh?
        Или надо создать в каталоге /bin отдельную папку и полностью перенести в нее содержимое папки /bash(/sh) из рабочей системы?
        И передать управление другому интерпретатору, ага. :)

        • Pantera

          Этот метод называется - метод через одно место)).

          • Sonikelf

            Даже более чем :)

        • Неуловимый_Джо

          Вместо того, чтобы скабрезно смайлить, могли бы подсказать правильный метод, если знаете, конечно... :)

          • Неуловимый_Джо

            Правильнее было написать "скабрезно смайлиться", ага.
            Но свой вопрос не снимаю...

  4. Андрей

    Респект и уважуха Pantera. Радуйте почаще "красноглазых" :-) Воспользуюсь вашими советами обязательно.

    • Pantera

      Буду стараться радовать :-). А Вы почаще заглядывайте на огонек :-).

  5. toscha_sv

    Галина статейку накидала, спасибо, познавательно :)

    • Sonikelf

      Она у нас талант, не то что я лентяй :)

      • Неуловимый_Джо

        О, сразу видно, чел достойно встретил Первомай!
        Традиции не пропьешь...
        584541

        • Sonikelf

          Я такие праздники не отмечаю, да и вообще в них работаю обычно :)

          • stalker

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

  6. Viccy

    В дополнение есть еще утилита chkrootkit.
    Для Debian:
    sudo apt-get install chkrootkit
    sudo chkrootkit
    Как-то так.
    "В силу большой вероятности того, что инфицированная ОС может подменять значения при сканировании, рекомендуется запускать chkrootkit для проверки системы при загрузке сервера в режиме восстановления или с загрузочного live-образа.
    В этом случае порядок действий таков:

    загрузиться с live-образа
    скачать последнюю версию chkrootkit
    скомпилировать модули
    подмонтировать разделы диска с (потенциально) инфицированной системой
    провести сканирование chkrootkit -r /mnt".

  7. NN

    Если руткит засел в ядре (kernel), то очень легко переустановить это ядро. Зайти в систему с другим ядром (например, с яжром в режиме восстановления системы), удалить ядро с руткитом и установить его заново. Делов-то...

  8. zhe

    Приветствую. Не обновляется программа:

    sudo rkhunter --versioncheck
    [ Rootkit Hunter version 1.4.0 ]
    Checking rkhunter version...
    This version : 1.4.0
    Latest version: 1.4.2
    Update available

    sudo rkhunter --update
    [ Rootkit Hunter version 1.4.0 ]

    Checking rkhunter data files...
    Checking file mirrors.dat [ No update ]
    Checking file programs_bad.dat [ No update ]
    Checking file backdoorports.dat [ No update ]
    Checking file suspscan.dat [ No update ]
    Checking file i18n/cn [ No update ]
    Checking file i18n/de [ No update ]
    Checking file i18n/en [ No update ]
    Checking file i18n/tr [ No update ]
    Checking file i18n/tr.utf8 [ No update ]
    Checking file i18n/zh [ No update ]
    Checking file i18n/zh.utf8 [ No update ]

    ...и в итоге остается Rootkit Hunter version 1.4.0

    Есть соображения?

* - комментарии могут появляться не сразу (или попасть в спам)