То, что операционная система Linux не очень распространена среди обычных пользователей, вовсе не говорит о том, что Linux не интересен для злоумышленников. Согласно данным, представленным на сайте W3Techs, Unix-подобные системы использует 81,2% всех веб-сайтов, из них Linux установлен на 38,5% серверов. И если перевести проценты в количество, то получится внушительная цифра. Вот где Linux является лакомым кусочком для всякого рода киберпреступников. Для того, чтобы захватить управление сервером, они внедряют зловредный код, который запускает скрытые процессы. Помочь в обнаружение таких скрытых процессов может инструмент — unhide, который сканирует систему на предмет всяких несоответствий на уровне ядра.
Unhide — общее название для серии родственных терминальных команд, предназначенных для обнаружения скрытых процессов с помощью набора из более чем 30 тестов. Существуют версии для Windows и для Linux. Вторая, безусловно, является наиболее развитой. Первоначально версия для Linux называлась unhide-linux, но в репозиториях большинства дистрибутивов Linux она обычно называется просто unhide. В некоторых дистрибутивах он может быть даже установлен по умолчанию или как часть другой утилиты безопасности.
Все тесты unhide имеют примерно схожую структуру. В одном тесте программа сравнивает содержимое директории /proc, виртуальной файловой системы, отображающей информацию о системе, и вывод команды /bin/ps, которая содержит все процессы, запущенные в данный момент в системе. В другом случае утилита сравнивает вывод /bin/ps с системными вызовами между ядром Linux и /bin/proc, который содержит данные о процессах. А ещё он может сравнивать структуру идентификаторов процессов (PID) с обычной структурой и размером других PID. Эти источники информации работают в основном независимо друг от друга, поэтому различия между ними могут выявить незаконное внедрение в систему. Однако результаты работы unhide могут содержать и ложные срабатывания, поэтому они должны быть тщательно проверены, прежде чем вы начнёте предпринимать какие-либо действия.
Стандартные тесты
Проверить систему можно одним или несколькими из представленных ниже тестов. Стандартные тесты являются совокупностью одного или нескольких тестов. Для unhide существует семь стандартных тестов:
- brute: Запускает сканирование методом перебора уникальных номеров (идентификаторов) процесса . Этот процесс может занять 5-10 минут даже на современном компьютере, но он чрезвычайно эффективен.
- proc: Сравнивает директорию /proc с выводом /bin/ps.
- procfs: Сравнивает информацию, полученную из /bin/ps, с информацией, собранной procfs.
- procall: Комбинирует методы proc и procfs.
- quick: Объединяет методы proc, procfs и sys, что примерно в 20 раз быстрее, чем выполнение этих трёх методов по отдельности. Из-за своей скорости он может давать ложные срабатывания. Однако, если результат выполнения команды был положительным, необходимо выполнить ещё один тест, для его подтверждения.
- reverse: Проверяет, что все потоки, видимые ps, также видны в procfs и системных вызовах. Его цель — проверить, что руткит не отключил инструмент безопасности и не заставил ps показать ложный процесс.
- sys: Сравнивает /bin/ps с системными вызовами.
Кроме стандартных тестов unhide может запустить и элементарные тесты, коих у него имеется в количестве 19 штук. Многие из них запускаются только в версии для Linux. Разница между элементарными и стандартными тестами заключается в деталях. Все тесты, как и упоминалось ранее, имеют схожую структуру. Они сообщают, когда переходят от одного этапа к другому, и перечисляют все положительные результаты. Если результатов совсем нет, команда завершается без сообщения. При обнаружении скрытого процесса, unhide укажет идентификатор процесса (PID), а также информирует вас — запускается ли процесс из командной строки (что делает его потенциально опасным) или является ли процесс исполняемым (что ещё опаснее), а также выведет собственную диагностику процесса.
Опции
Опции размещаются сразу после самой команды unhide. В большинстве тестов опции уже включены по умолчанию. Некоторые опции включают для более глубокого тестирования. К примеру опция:
- -d: В брут-тесте эта опция автоматизирует то, что вы сделали бы вручную при положительном результате теста, — это повторный запуск теста, чтобы избежать ложные срабатывания. Если оба запуска теста дают одинаковый результат, вы можете быть уверены в результатах теста. Если же результаты отличаются, то для получения более чёткой картины следует выполнить другие стандартные тесты.
- -f: Записывает в текущий каталог лог-файл с именем unhide-linux_YYYY-MM-DD, показывающий время и структуру выполнения теста, а также любые результаты. Если вы попытаетесь разобраться со скрытыми процессами, обнаруженными после выполнения unhide, то этот файл вам поможет вам в ходе ваших исследований.
- -H: Обеспечивает более удобный для чтения вывод. Эта опция добавляет завершающие сообщения к тестам и указывает, когда скрытый процесс не найден.
Пример тщательного теста unhide с опциями и несколькими стандартными тестами:
sudo unhide -m -d sys procall brute reverse
Другие варианты
При работе с unhide существует несколько других вариантов команды, которые вы, возможно, захотите изучить:
- unhide-tcp: Определяет не внесенные в список TCP/UDP-порты, которые прослушиваются, но не внесены в список. Структура и команды несколько схожи с командой unhide.
- unhide-posix: Версия unhide для Unix-подобных систем, отличных от Linux, но она не такая подробная, как версия для Linux.
- unhide-gui: Одна из последних версий unhide для настольных систем. В репозиториях присутствует и её тоже можно установить. К сожалению, на моём Ubuntu запустить её у меня не получилось.
Кроме того, вы можете найти unhide в комплекте с другими инструментами безопасности, такими как Rootkit Hunter (rkhunter).
В результате
Выполняя команду unhide, помните, что результаты выполнения не всегда являются истинными. При получении положительных результатов следует подтвердить их повторными и дополнительными тестами, а также использовать некоторые опции команды. Также обратите внимание на предварительный диагноз в тесте и проверьте, не увеличился ли трафик в системе. Возможно, вы сможете определить PID с помощью поиска, если он является легитимным.
Если вы пришли к выводу, что компьютер был взломан, немедленно изолируйте его. Не пытайтесь исследовать возможные вторжения непосредственно со взломанного компьютера, так как вы не получите надёжных результатов и только зря потратите время. Вместо этого загрузитесь с Live DVD или USB флешки, чтобы исследовать взломанную машину. К сожалению, это, скорее всего, будет медленный процесс, требующий длительных исследований в Интернете. В конце концов, самым быстрым способом восстановления является переустановка системы или откат к последней резервной копии.
Что мы имеем в итоге? Unhide — поможет вам выявить потенциальную угрозу и предупредит вас об этом, но никак не устранит проблемы. Но с другой стороны — анализ одного взломанного компьютера может помочь вам более тщательно подготовить новую систему.
Что вы думаете?
Показать комментарии / Оставить комментарий