Как проверить Linux на руткит
Хотя Linux безопасен и прекрасен, но даже в нем периодически находят критические уязвимости. Период между публикацией данных о дыре и распространением заплатки через службу обновлений используется кибернегодяями для установки на компьютеры честных линуксоидов зловредного программного обеспечения. И последние исследования показывают: зараженных компьютеров с Linux всё больше.
Главным образом, устанавливаются так называемые руткиты (root kit). Руткит — это программа, которая маскирует свое присутствие на компьютере и открывает через сетевой порт root-доступ. Через этот скрытый канал хакер может использовать ваш компьютер для совершения уголовно наказуемых деяний, а отвечать придется вам. Вот почему так важно периодически проверять свой компьютер на наличие руткитов.
Установка chkrootkit
Казалось бы, а в чем проблема? apt-get install chkrootkit и вперед! Но разработчики руткитов этот алгоритм давно предусмотрели. Руткит модифицирует «антивирусную» программу, чтобы та не выдала его присутствие в системе. Следовательно, остается только один работающий способ провести проверку: загрузить исходники, сверить контрольную сумму, скомпилировать и запустить.
- Заходим на сайт http://www.chkrootkit.org/download/и загружаем два файла: исходники в tar.gz (chkrootkit latest Source tarball) и текстовой файл с контрольной суммой MD5 (chkrootkit tarball's MD5 signature).
- Запускаем md5sum и в качестве аргумента передаем имя скаченного архива. Сверяем контрольные суммы. Эта простая операция позволяет убедиться, что код chrootkit не был модифицирован руткитом во время загрузки или сохранения файла.
- Распаковываем архив: tar xf chrootkit.tar.gz.
- Компилируем: make.
- Запускаем проверку: ./chrootkit.
Проверка заключает в следующем:
- сначала chkrootkit проверит системные файлы (/bin/* и /usr/bin/*) на предмет несанкционированной модификации;
- потом программа проверит по списку наличие известных зловредов;
- затем chrootkit проверит систему на подозрительную активность (например, сетевая карта в promisc-режиме);
- и так далее.
При обнаружении проблем программа предложит либо выкорчевать руткит, либо выдаст информацию, которая поможет вручную удалить вредоносное ПО. После проверки можно просто удалить директорию с распакованным chrootkit.
Профессионалам
Людям, которые серьезно занимаются вопросами безопасности в Linux может показаться полезным знакомство с программным пакетом Lynis. Эта свободная программа проводит комплексный аудит безопасности в Linux-системах.
Комментарии
Чингачгук
2 сентября, 2015 - 20:32
chkrootkit на большем количестве ОС раскрывает следующую ложную инфекцию :
Searching for Suckit rootkit... Warning: /sbin/init INFECTED
rkhunter является более надежным
Чингачгук
3 сентября, 2015 - 00:25
так rkhunter похоже не больше не разрабатывается. Последняя активность на sourceforge: 2014-02-24. Впрочем как и chkrootkit — сам пакет от мая 2014.
Чингачгук
3 сентября, 2015 - 00:33
поправка — он лезет за апдейтами в инет, но обновил только базу backdoorports.dat, другие файлы остались старыми. Но это уже неплохо
Agafron
2 сентября, 2015 - 22:13
у меня не запустился
chkrootkit: can't find `ssh'.
Чингачгук
3 сентября, 2015 - 08:52
Такие вещи нужно держать на отдельной живой флешке, а то где гарантия что зараза не заменила make, gcc, md5 и bash.
dk
3 сентября, 2015 - 09:26
а как он с флешки
?
jtad
3 сентября, 2015 - 21:14
ну люди, мы же всетаки линуксоиды. Сканируем, проверяем изменились ли какие нибудь файлы например в /usr/bin ну скажем в течении последних 24 часов
sudo find /usr/bin -type f -mtime -1
у меня было 0 совпадений. Какие там еще можно прочесать — /usr/sbin /usr/lib и тд. Мы же не виндовозники чтобы гадать :). Но мысль была правильная, плюсую
dk
3 сентября, 2015 - 23:12
А откуда предположение то автору руткита не хватит интеллекта поправить время?
jtad
4 сентября, 2015 - 00:05
вот это я прокололся. Это очень интересная проблема, спасибо что сказал. Для rpmовских дистров есть хорошая возможность проверить подлинность пакетов. Вот цитата из мана
При проверке пакета информация о файлах, установленных из пакета, сравнивается с информацией из оригинального пакета. Помимо прочего, при такой проверке проверяется размер, сумма MD5, разрешения, тип, владелец и группа владельца каждого файла.
Проверку пакета выполняет команда rpm -V. Вы можете указать пакет, который хотите проверить, используя любой из перечисленных параметров выбора пакета. Простым примером проверки является команда rpm -V foo, которая проверяет, что все файлы пакета foo находятся там, куда они были изначально установлены. Например:
Чтобы проверить пакет, содержащий конкретный файл, выполните:
rpm -Vf /usr/bin/vim
Чтобы проверить ВСЕ установленные пакеты:
rpm -Va
Чингачгук
4 сентября, 2015 - 00:11
хах. опередил.
Чингачгук
4 сентября, 2015 - 00:11
Можно ещё сделать "rpm -V --all" (наверняка у deb систем такое тоже есть). Работает достаточно быстро, можно даже в крон прописать если уж совсем паранойя.
jtad
4 сентября, 2015 - 00:13
ну да, я тоже про эту возможность вспомнил.
M_o_n_g_o_l
4 сентября, 2015 - 01:08
Пробовал запускать на Мяте "deb -V --all" Чёт не взлетает никак ((
M_o_n_g_o_l
4 сентября, 2015 - 01:09
И deb -Va не катит...
M_o_n_g_o_l
4 сентября, 2015 - 01:11
А chkrootkit тоже гундит, что Warning: /sbin/init INFECTED...
jtad
6 сентября, 2015 - 15:51
я тут занялся этой проблемой замены файлов: rpm -Va было неправильно. Это комманда проверяет подлинность установленных пакетов а не файлов, это разные вещи. Одна из лучших программ, которые отслеживают изменения в файлах называется AIDE (Advanced Intrusion Detection Enviornment), создает базу данных при инициализации куда вносить хеши файлов и может потом выявить их подлинность. Понятно что надо быть увереным перед инициализацией что система чистая, лучше сразу после установки. Хоть поддержу базы в актуальном состоянии можно автоматизировать, мне показалось это слишком долгим и сложным процессом. Кто может еще что добавить по этому поводу, есть ли другие программы или методы проверки?
dk
6 сентября, 2015 - 16:01
Так навскидку (решение кривое, пока главное идея).
1. Ставим систему на комп. (/home — отдельным разделом)
2. Грузимся с live-cd
3. rsyncом копируем / на флешку.
А дальше, при любых подозрениях грузимся с live-cd и тем же rsyncом проверяем какие файлы изменились (ЕМНИП там была опция a la "ничего не делать, только вывести список изменившихся файлов".
А вот как подобное сотворить без live-cd, на живой системе — это вопрос.
jtad
6 сентября, 2015 - 16:54
Тут главное не забыть синхронизировать флешку после каждого обновления, а то перезапишет новые файлы. А так да, в принципе обыкновенный откат, чего то даже в голову не пришло, я все разные системы распознования изменений искал.
dk
6 сентября, 2015 - 17:01
Кстати, а ведб можно же не флешку, можно просто отдельный рздел под архив выделить.
jtad
7 сентября, 2015 - 18:59
я тут все никак не успокоюсь насчет того как проследить делают ли программы, в нашем случае rkhunter и chkrootkit какие либо изменения в файлах, очень важная тема. Хотелось бы не просто заменить файлы, а проследить что именно сделала программа. Наткнулся на очень интересную возможность, предоставляемую нам самим ядром. Для этого нам нужен пакет inotify-tools
после инсталяции получаем распоряжение две команды inotifywatch (более для сбора статистики) и inotifywait которая мониторит в режиме реального времени, которую и возьмем. В одном окне терминала можно запустить inotifywait например так, для отслеживания изменений которые перечисленны после параметра -e
inotifywait -m -r -e modify,attrib,close_write,move,create,delete /usr/bin /usr/lib /usr/sbin
в другом запускаем например rkhunter и наблюдаем. Ну или перенаправляем в файл для дальнейшего изучения.
ps я тут поискал по сайту, есть статья про Incron, который использует тоже inotify.
Комментировать