Linux глазами хакера - Михаил Флёнов
Шрифт:
Интервал:
Закладка:
Допустим, что вы не нашли никаких лишних процессов, и ни один сервис или программа не изменены. Это еще не значит, что потайного входа нет. Недавно я встретил новый способ прятать процессы от недремлющего ока администратора — модули ядра.
С недавних пор ядро Linux стало действительно модульным. Это удобно, потому что позволяет получить новые возможности, просто подгрузив необходимый блок. Если раньше для этого требовалась перекомпиляция ядра, то теперь всего несколько команд, и все готово.
Как же взломщики используют ядро, чтобы спрятать свой процесс? Программа ps (и подобные ей) для определения запущенных процессов использует ядро. Именно оно знает, что работает в данный момент. Хакерами были написаны разнообразные модули, которые не дают ядру сообщить об определенных процессах, поэтому администратор просто не увидит программу backdoor. Как раз поэтому продолжаем анализировать систему в поисках зло-программ.
Итак, помимо запущенного процесса, программа backdoor должна открыть какой-то порт и ожидать подключения со стороны хакера. Таким образом, мы должны контролировать и это.
Самый быстрый способ определить сервисы, ожидающие подключения — это использовать команду netstat. Но т.к. одноименная программа входит в состав Linux, то ее исходные коды также могут быть изменены. А вот от сканера портов не скроешься, правда, для его работы необходимо больше времени.
Лучший способ спрятать backdoor от сетевых анализаторов — использовать при программировании RAW Sockets (сырые сокеты), как это делают снифферы. На сервере программа backdoor прослушивает весь трафик, и если видит пакеты, помеченные специальным образом, то выполняет инструкции, описанные в этом пакете. Хакеру только остается направлять широковещательные или просто безымянные пакеты, имеющие определенный идентификатор, чтобы сервер выполнял необходимые инструкции.
Утилита netstat и сканеры портов не могут определить снифферы, поэтому они тут бессильны. О снифферах мы поговорим в следующем разделе, а сейчас я только скажу, что для прослушивания трафика сетевая карта должна работать в специализированном режиме, который легко определяется, если просмотреть состояние сетевого интерфейса командой ifconfig.
Единственный недостаток — во время работы сниффера повышается нагрузка на сервер. В этом случае все пакеты, которые проходят мимо сетевой карты, поднимаются до уровня ОС.
Но даже спрятанную программу 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 и др.) для пользователя и приложения.
На рис. 14.1 вы можете увидеть, как должна выглядеть классическая сетевая модель.
Рис. 14.1. Сетевая модель OSI
Если вы внимательно прочитали предложенный список, то наверно заметили, что первые три уровня обеспечиваются оборудованием, таким как сетевые карты, маршрутизаторы, концентраторы, мосты и др. Последние три реализуются на уровне операционной системы или приложения. Четвертый уровень является промежуточным.
Как работает протокол по этой модели? Пакет попадает на прикладной уровень, и к нему добавляется заголовок. Затем пакет отправляется на уровень представления. Здесь ему также добавляется свой собственный заголовок, и пакет пересылается дальше. Так до физического уровня, который занимается непосредственно передачей данных.
Другая машина, получив пакет, начинает обратный отсчет. Пакет с физического уровня попадает на канальный, где убирается соответствующий заголовок, затем пакет поднимает выше. Уровень сети отсекает свой заголовок и передает пакет выше, и так до уровня приложения, где остается чистый пакет без служебной информации, которая была прикреплена на исходной машине перед отправкой.
Передача данных не обязательно должна начинаться с седьмого уровня. Если используемый протокол работает на 4 уровне, то процесс трансляции начнется с него, и пакет будет подниматься вверх до физического уровня для отправки. Количество уровней в протоколе определяет его потребности и возможности при передаче данных.
Чем ниже расположен протокол (ближе к прикладному уровню), тем шире его возможности и, соответственно, выше накладные расходы при передаче данных (больше и сложнее заголовок). Рассматриваемые сегодня протоколы будут находиться на разных уровнях, поэтому будут иметь разные возможности.
14.5.2. Пассивное подслушивание
Пассивный сниффинг — прослушивание пакетов, которые проходят непосредственно через вашу сетевую карту. Такой метод удобен только при соединении компьютеров через общую шину и в сетях с топологией "Звезда", где центром выступает хаб (см. разд. 5.2).
Использование пассивного сниффинга — самое простое занятие. Все пакеты, которые проходят мимо вашей сетевой карты, проверяются на принадлежность узлу. Сетевая карта сверяет адрес получателя в заголовке пакета со своим MAC-адресом, и если они совпадают, то пакет передается операционной системе для анализа. ОС читает из заголовка порт, на который направлен пакет, и далее определяет программу, открывшую порт для приема информации.