Руткиты
Метки: LKM
Среда, 21 января 2009 г.
Просмотров: 2881
Подписаться на комментарии по RSS
Получение доступа к системе - это только половина битвы. Крекер должен убедиться в том, что администратор не подозревает о его присутствии, удалить все «ненужные» записи из журналов системы и позаботиться о возможности повторного входа в систему.
Для этой цели предназначены руткиты. Руткит - это набор небольших системных программ, которые существенно упрощают (а чем проще, тем быстрее) процесс «заметания» следов крекера.
Обычно в состав руткитов входит уборщик журналов (log cleaner), удаляющий из журналов системы все следы пребывания крекера в системе, и троянские версии часто используемых команд (ls, ps, netstat и др.). Часто также в состав руткита входит демон SSHD, работающий на нестандартном порту, - он предназначен для повторного входа крекера в систему.
Существует два типы руткитов: стандартные и LKM-руткиты. Стандартные руткиты просто заменяют программы оболочки (ls, ps и др.) их троянскими версиями. Данные программы предназначены для скрытия файлов и процессов крекера. Какие именно файлы/процессы должны скрываться руткитами, - указывается в специальном отдельном файле (хотя файлы и процессы могут быть явно указаны при компиляции руткита).
Обычно используется первый способ (чтение имен файлов и процессов из отдельного файла), поскольку это позволяет крекеру быстро менять список файлов/программ без перекомпиляции руткита. Стандартный руткит не очень сложно обнаружить.
Первое, на что нужно обратить внимание, - это на размер стандартных программ оболочки - он будет изменен (обычно в большую сторону). А с помощью программы strings очень просто вычислить, какие файлы скрыты троянскими версиями программ (в случае, если имена файлов «зашиты» в программу), или месторасположения конфигурационного файла руткита (если имена файлов и процессов прописываются в отдельном файле). После того, как будут уничтожены файлы руткита, администратору нужно приступить к поиску «черных ходов» - после удаления руткита их обычно легко обнаружить.
Второй тип руткитов - это LKM-руткиты. LKM (Loadable Kernel Module) означает «загружаемый модуль ядра», то есть руткит выполнен не в виде небольших троянских программок, а как часть ядра - модуль ядра. Обнаружить такой руткит намного сложнее, чем стандартный руткит.
Обычно LKM-руткиты перехватывают системные вызовы нормальных программ (ps, netstat, ls) и возвращают им нужные крекеру значения. То есть программа ps - это та же исходная программа, она обращается к ядру, а ядро, «благодаря» LKM-руткиту, возвращает ей модифицированную таблицу процессов, в которой скрыты процессы крекера. Следовательно, техника обнаружения стандартных руткитов просто бесполезна в случае с LKM-руткитами.
Руткиты являются настолько распространенным явлением, что некоторые администраторы до сих пор не подозревают, что в их системе установлен руткит.