Linux глазами хакера
Шрифт:
Допустим, что вы не нашли никаких лишних процессов, и ни один сервис или программа не изменены. Это еще не значит, что потайного входа нет. Недавно я встретил новый способ прятать процессы от недремлющего ока администратора — модули ядра.
С недавних пор ядро Linux стало действительно модульным. Это удобно, потому что позволяет получить новые возможности, просто подгрузив необходимый блок. Если раньше для этого требовалась перекомпиляция ядра, то теперь всего несколько команд, и все готово.
Как же взломщики используют ядро, чтобы спрятать свой процесс? Программа ps (и подобные
Итак, помимо запущенного процесса, программа backdoor должна открыть какой-то порт и ожидать подключения со стороны хакера. Таким образом, мы должны контролировать и это.
Самый быстрый способ определить сервисы, ожидающие подключения — это использовать команду
Лучший способ спрятать backdoor от сетевых анализаторов — использовать при программировании RAW Sockets (сырые сокеты), как это делают снифферы. На сервере программа backdoor прослушивает весь трафик, и если видит пакеты, помеченные специальным образом, то выполняет инструкции, описанные в этом пакете. Хакеру только остается направлять широковещательные или просто безымянные пакеты, имеющие определенный идентификатор, чтобы сервер выполнял необходимые инструкции.
Утилита netstat и сканеры портов не могут определить снифферы, поэтому они тут бессильны. О снифферах мы поговорим в следующем разделе, а сейчас я только скажу, что для прослушивания трафика сетевая карта должна работать в специализированном режиме, который легко определяется, если просмотреть состояние сетевого интерфейса командой
Единственный недостаток — во время работы сниффера повышается нагрузка на сервер. В этом случае все пакеты, которые проходят мимо сетевой карты, поднимаются до уровня ОС.
Но даже спрятанную программу backdoor можно найти. В данном случае можно поступить по правилу "клин клином вышибают". Запускаем сниффер и просматриваем, что проходит через нашу сетевую карту. Если мы видим пакеты, которые отсылают закрытую информацию или пароли, то это может указывать на наличие в системе программы backdoor. От сниффера может скрыться только зашифрованный трафик.
Но самый лучший способ защиты от backdoor — хорошо настроенный сетевой экран. Если в применяемой вами политике безопасности по умолчанию все запрещено, а разрешен только доступ к публичным ресурсам, то даже если сторонняя программа откроет какой-то порт, то подключиться к нему будет невозможно без изменения фильтров в сетевом экране. Следите за тем, чтобы никакие лишние записи там не появлялись, и все мучения хакера станут напрасными.
14.5. Подслушивание трафика
Мы уже говорили в разд. 1.4.4
Как мы уже знаем, снифферы перехватывают пакеты, которые адресуются другим компьютерам. Так как большинство протоколов создавались на заре становления Интернета и не используют шифрования, то в проходящих пакетах можно увидеть в открытом виде пароли доступа, номера кредитных карт и другую приватную информацию.
Изначально программа сниффер создавалась как помощник в работе администраторов. Но хакеры нашли ей другое применение, и простой анализатор работы сети превратился в мощное оружие взломщика.
Снифферы могут работать в активном или пассивном режиме. В разд. 14.5.2 и 14.5.3 нам предстоит познакомиться с обоими типами, но чтобы наш разговор был более понятным, вам необходимо знать, что такое модель OSI (Open Systems Interconnection, взаимодействие открытых систем).
14.5.1. Open Systems Interconnection
Каждый раз, когда вы передаете данные по сети, они как-то перетекают от вашего компьютера к серверу или другому компьютеру. Как это происходит? Вы, наверное, скажете, что по специальному сетевому протоколу, и будете правы. Но существует множество их разновидностей. Какой и когда используется? Зачем они нужны? Как они работают? Вот на эти вопросы я и постараюсь ответить в этом разделе.
Прежде чем разбираться с протоколами, нам необходимо узнать, что такое модель взаимодействия открытых систем, которая была разработана Международной Организацией по Стандартам (ISO, International Organization for Standardization). В соответствии с этой моделью сетевое взаимодействие делится на семь уровней.
1. Физический уровень — передача битов по физическим каналам (витая пара, коаксиальный или оптоволоконный кабель). Здесь определяются характеристики физических сред и параметры электрических сигналов.
2. Канальный уровень — передача кадра данных между любыми узлами в сетях типовой архитектуры или соседними узлами произвольной топологии. В качестве адресов на канальном уровне используются MAC-адреса.
3. Сетевой уровень — доставка (без каких-либо гарантий) пакета любому узлу в сетях произвольной топологии.
4. Транспортный уровень — доставка пакета любому узлу с произвольной архитектурой сети и заданной степенью надежности доставки. На этом уровне имеются средства для установления соединения, буферизации, нумерации и упорядочивания пакетов.
5. Сеансовый уровень— управление диалогом между узлами. Обеспечена возможность фиксации активной на данный момент стороны.
6. Уровень представления — здесь возможно преобразование данных (цифрация, компрессия).
7. Прикладной уровень — набор сетевых сервисов (FTP, E-mail и др.) для пользователя и приложения.