14.4. backdoor
14.4. backdoor
Если взломщик получил доступ к серверу, то, чтобы оставаться незаметным, он устанавливает в системе программы backdoor (потайные двери). Такие программы чаще всего действуют следующим образом:
? на каком-либо порту открывается прослушивание, и программа ожидает подключения хакера;
? когда соединение состоялось, то программа открывает для хакера командную оболочку на этом порту, чтобы можно было выполнять директивы.
Это вам ничего не напоминает? Да, троянские программы работают подобным образом, но троянов подбрасывают как вирусы и ожидают, что администратор сам их запустит, a backdoor взломщик закачивает на сервер и запускает сам.
Есть сходство и с программами rootkit. В настоящее время стирается грань между разными хакерскими утилитами. Одна программа может выполнять сразу несколько функций. Так rootkit и backdoor уже давно соединяют в одно целое, хотя остаются еще и классические утилиты.
Надо уточнить, что программы backdoor нельзя купить в ближайшем магазине. Взломщики пишут их для собственного использования. И все же на закрытых сайтах можно встретить некоторые из этих разработок.
Хакеры не очень любят раскрывать свои программы, потому что если они станут достоянием общественности, то лазейки, через которые взломщик проникает в систему, закроют.
Так как основа этой книги — организация безопасной системы, то я не стану рассматривать процесс создания и открытия потайных дверей. Мы будем обсуждать проблему их поиска и уничтожения.
Самый простой и быстрый способ найти чужую программу — просмотреть процессы, работающие в системе, и открытые порты. Как следует из определения, backdoor — это программа, которая ожидает подключения взломщика, а значит, должен присутствовать работающий процесс этой программы. Выполняем команду ps и смотрим, что сейчас работает в системе. После этого сканируем открытые порты, используя утилиту netstat, и ищем злостную программу.
При просмотре процессов нужно убедиться, что файл программы ps не модифицирован хакером. Так как исходные коды ОС Linux доступны, злоумышленник может изменить программу ps так, чтобы она не отображала процесс backdoor, и подбросить свой вариант в вашу систему.
Доступность исходных кодов позволяет хакеру изменять и любые другие программы. Например, может быть трансформирован демон telnetd, и после этого, помимо основных своих функций, программа будет играть роль потайного входа. Убедитесь, что исполняемые файлы всех работающих процессов не изменены.
Некоторые демоны могут работать с подгружаемыми модулями. Злоумышленник может написать и подключить свой модуль вместо или в дополнение к стандартным, и его определить уже сложнее, т.к. основной процесс не модифицирован.
Изменение исходных кодов достаточно сложное занятие, и нужно обладать хорошими знаниями в программировании, поэтому данный метод является наиболее опасным, но мало распространен. И все же, его нельзя сбрасывать со счетов, потому что никогда не знаешь, какой квалификации взломщик проник в систему.
При просмотре процессов будьте внимательны. Хакер может назвать свою утилиту telnetd, и тогда в вашей системе будет две программы с таким названием. Одна будет системной, а другая — хакерская, которая выполняет функции backdoor. Будьте бдительны при просмотре списка открытых процессов.
Если ваш сервер работает постоянно, то хакер может смело запускать свой процесс backdoor и уходить восвояси. Если сервер хоть иногда выключается, то злоумышленник должен позаботиться о том, чтобы после перезагрузки backdoor тоже запустился, иначе потайной вход в систему будет закрыт.
Обязательно проверьте все сценарии, отвечающие за загрузку сервисов, на предмет изменений. Они находятся в директории /etc/rc.d/init.d. Это может быть сложно, потому что в ОС Linux таких сценариев достаточно много. Но хакер в любой из них может добавить команды загрузки своей утилиты.
Допустим, что вы не нашли никаких лишних процессов, и ни один сервис или программа не изменены. Это еще не значит, что потайного входа нет. Недавно я встретил новый способ прятать процессы от недремлющего ока администратора — модули ядра.
С недавних пор ядро Linux стало действительно модульным. Это удобно, потому что позволяет получить новые возможности, просто подгрузив необходимый блок. Если раньше для этого требовалась перекомпиляция ядра, то теперь всего несколько команд, и все готово.
Как же взломщики используют ядро, чтобы спрятать свой процесс? Программа ps (и подобные ей) для определения запущенных процессов использует ядро. Именно оно знает, что работает в данный момент. Хакерами были написаны разнообразные модули, которые не дают ядру сообщить об определенных процессах, поэтому администратор просто не увидит программу backdoor. Как раз поэтому продолжаем анализировать систему в поисках зло-программ.
Итак, помимо запущенного процесса, программа backdoor должна открыть какой-то порт и ожидать подключения со стороны хакера. Таким образом, мы должны контролировать и это.
Самый быстрый способ определить сервисы, ожидающие подключения — это использовать команду netstat. Но т.к. одноименная программа входит в состав Linux, то ее исходные коды также могут быть изменены. А вот от сканера портов не скроешься, правда, для его работы необходимо больше времени.
Лучший способ спрятать backdoor от сетевых анализаторов — использовать при программировании RAW Sockets (сырые сокеты), как это делают снифферы. На сервере программа backdoor прослушивает весь трафик, и если видит пакеты, помеченные специальным образом, то выполняет инструкции, описанные в этом пакете. Хакеру только остается направлять широковещательные или просто безымянные пакеты, имеющие определенный идентификатор, чтобы сервер выполнял необходимые инструкции.
Утилита netstat и сканеры портов не могут определить снифферы, поэтому они тут бессильны. О снифферах мы поговорим в следующем разделе, а сейчас я только скажу, что для прослушивания трафика сетевая карта должна работать в специализированном режиме, который легко определяется, если просмотреть состояние сетевого интерфейса командой ifconfig.
Единственный недостаток — во время работы сниффера повышается нагрузка на сервер. В этом случае все пакеты, которые проходят мимо сетевой карты, поднимаются до уровня ОС.
Но даже спрятанную программу backdoor можно найти. В данном случае можно поступить по правилу "клин клином вышибают". Запускаем сниффер и просматриваем, что проходит через нашу сетевую карту. Если мы видим пакеты, которые отсылают закрытую информацию или пароли, то это может указывать на наличие в системе программы backdoor. От сниффера может скрыться только зашифрованный трафик.
Но самый лучший способ защиты от backdoor — хорошо настроенный сетевой экран. Если в применяемой вами политике безопасности по умолчанию все запрещено, а разрешен только доступ к публичным ресурсам, то даже если сторонняя программа откроет какой-то порт, то подключиться к нему будет невозможно без изменения фильтров в сетевом экране. Следите за тем, чтобы никакие лишние записи там не появлялись, и все мучения хакера станут напрасными.
Данный текст является ознакомительным фрагментом.