BugTraq.Ru
Русский BugTraq
https://bugtraq.ru/library/security/securedhcp.html

Новая система управления IP-адресами в локальной сети
Андрей Орлов
Опубликовано: dl, 31.03.04 20:12

Речь в данной статье пойдет не о простом DHCP (Dynamic Host Protocol) сервере, как вы могли подумать, прочитав название статьи, а о немного более функциональной программе. Надеюсь, Вам будет интересно. Итак, начнем с сути проблемы.

 В локальных сетях часто возникает проблема распределения адресов. Многие люди пытаются получить неправильные или просто понравившиеся адреса.  Если эти адреса в данное время не заняты (компьютеры-владельцы выключены), то им это удается, и настоящий владелец не может получить свой адрес. Таким образом, могут пострадать многие сетевые сервисы, так как адресация происходит именно по IP. Большинство брандмауэров также работает на уровне IP адресов, то есть произойдет подмена компьютеров, и защитные правила не будут работать для конкретной машины.

 Например, одно время на форуме bugtraq.ru была очень популярна тема, в которой автор спрашивал, как "спастись" от пользователей, которые меняют одновременно IP и MAC адрес и получают несанкционированный доступ к 1С бухгалтерии. Так как же спастись?

Справочная информация:

МАС (Media Access Control) адрес, 48-битное число,- физический сетевой адрес, заданный аппаратным образом.

IP (Internet Protocol) адрес, 32-битное число,- логический сетевой адрес, заданный администратором сети или самим пользователем.


В сетях Ethernet существует такое понятие как MAC адрес, благодаря которому драйвер сетевой карты определяет, что данный пакет адресован именно данному компьютеру. Используется логическая адресация при помощи IP адресов. IP адрес преобразуется в MAC адрес средствами отправителя пакета, этим и занимается протокол преобразования адреса.

Справочная информация:

Протокол ARP (Address Resolution Protocol)
RFC-826-Протокол ARP
Протокол преобразования адреса

Недостаток: невозможность централизованного контроля выделения адресов.

Отправитель пакета определяет МАС адрес получателя, посылая широковещательный запрос по протоколу ARP. Давайте рассмотрим ARP запрос.

Типичный пакет ARP запроса

Адрес получателя: FF:FF:FF:FF:FF:FF (широковещательный)
Адрес отправителя: 00:01:02:75:93:33
Тип содержимого пакета: ARP 08-06
Тип оборудования: Тип протокола: IP 00-08, Ethernet 00-01
Длина МАС и IP адресов в битах: 06 и 04
Код операции: ARP запрос 01
Аппаратный адрес отправителя: 00:01:02:75:93:33
Адрес протокола отправителя: 192.168.200.1 (IP-адрес)
Аппаратный адрес цели: 00:00:00:00:00:00 (неизвестен)
Адрес протокола цели: 192.168.200.4 (искомый IP)
Обрамление пакета: 18 байт (Windows)

И что же мы видим? Пакет рассылается широковещательно! Компьютер как будто спрашивает всю сеть, кто имеет нужный IP (логический) адрес, вышлите свой MAC (аппаратный) адрес. Машина в сети, которая считает, что она имеет соответствующий IP адрес, посылает ARP отклик со своим МАС адресом. Рассмотрим ARP ответ.

Типичный пакет ARP ответа

Адрес получателя: 00:60:97:8F:93:5D
Адрес отправителя: 00:01:02:75:93:33
Тип содержимого пакета: ARP 08-06
Тип оборудования: Тип протокола: IP 00-08, Ethernet 00-01
Длина МАС и IP адресов в битах: 06 и 04
Код операции: ARP ответ 02
Аппаратный адрес отправителя: 00:01:02:75:93:33
Адрес протокола отправителя: 192.168.200.1 (IP-адрес)
Аппаратный адрес цели: 00:60:97:8F:93:5D
Адрес протокола цели: 192.168.200.60
Обрамление пакета: 18 байт (Windows)

ARP ответ сообщает запрашивающему МАС адрес, соответствующий IP адресу запроса.
Примерно такой же ARP запрос посылается, когда компьютер включает сетевой адаптер. Посылается "беспричинный" ARP, который настраивает коммутаторы для пропуска нужных отправителю пакетов, а также проверяет уникальность запрашиваемого IP адреса в сегменте сети.

Справочная информация:

Коммутаторы используют аппаратные (МАС) адреса получателей для отправки пакетов в нужные порты.

Концентраторы просто передают весь трафик по всем портам.

В пакете совпадают IP адреса отправителя и получателя, он также широковещательный. Если в сети уже есть компьютер, настроенный на использование запрашиваемого адреса, то он воспринимает "беспричинный" ARP как обычный ARP запрос и посылает ARP ответ, в котором указывает свой МАС адрес. Включившийся компьютер не ожидает получения ответа, а если получает, то мы видим:

На самом деле, у нас есть возможность программно генерировать подобные ARP ответы и не пускать компьютер в сеть, то есть якобы присвоить себе все адреса сети. По каким критериям мы можем не давать или давать получить адрес? Посмотрим на ARP запрос. Ага, нам предоставляется только МАС адрес, а поскольку его можно легко подделать этот параметр является недостаточным.

На помощь нам приходит протокол DHCP. Он позволяет получить большее количество параметров конфигурации от клиента и уже по ним сделать выбор: пускать или не пускать в сеть.

Справочная информация:

DHCP (Dynamic Host Configuration Protocol) протокол динамической настройки сети системы, клиент для этого протокола существует во всех современных ОС.
RFC-2131- Стандарт DHCP
RFC-2132- Опции и расширения DHCP
Недостаток: невозможность проверки подлинности сообщений DHCP сервера.

DHCP действует так: сначала клиент посылает широковещательное сообщение DHCP Discover, в котором определяет желаемые параметры инициализации сети. Сервер (или несколько) отвечает DHCP Offer, где предлагает параметры инициализации, затем клиент принимает параметры и отвечает сообщением DHCP Request. Процесс завершается сообщением сервера DHCP Ack. Существуют еще другие типы сообщений, но подробное описание протокола DHCP выходит за рамки данной статьи.
Рассмотрим поле опций сообщения DHCP Discover, какие параметры мы можем получить из него?

Поле опций DHCP Discover

Magic Cookie: 63-82-53-63 (идентификатор опций)
Тип сообщения(35): DHCPDISCOVER(01)(1 байт)
Windows расширение(74):DHCPDISCOVER(01)(1 байт)
Идентификатор клиента(3D):01-00-0С-6E-CD-B7-DF(7 байт)(MAC)
Имя компьютера(0С):Sophia(6 байт)
Имя производителя(3C): MSFT 5.07 -> Windows XP without SP1
Запрос параметров у сервера(37): Параметры(11 байт)
Код окончания посылки(FF):1 байт
Обрамление пакета: 13 байт (Windows)

Ну вот, уже намного больше параметров. Здесь мы можем использовать не только МАС адрес, а имя компьютера и тип операционной системы, также возможны манипуляции с идентификатором клиента.

По этому принципу я и решил сделать программу, так как не нашел подобных разработок. Рабочее название системы - SecureDHCP.


Это DHCP сервер с возможностью контроля выделения статических адресов по МАС адресу и времени входа в сеть.
Динамические адреса выделяются по МАС адресу, имени компьютера, типу операционной системы, идентификатору клиента и времени.
Сервер поддерживает перехват клиентов других конкурирующих DHCP серверов.
Постоянное ARP ping сканирование(посылаются ARP запросы и ожидаются ответы) своих клиентов позволяет собирать точные данные о времени проведенном в сети каждым из них. По этим данным можно строить графики.
Также блокируется хакерская смена МАС и IP адреса на адреса компьютера, уже вошедшего в сеть, так как его статус постоянно проверяется ARP ping.
Реализован web-интерфейс с поддержкой SSL(при помощи OpenSSL).
В качестве обработчика веб-страниц используется PHP.
Сейчас в системе используется база данных Microsoft Jet, а раньше настройки и данные находились в файлах, Вы можете посмотреть их (хотя они уже устарели):
Конфигурационный файл
Файл сетевых адаптеров
Файл выделения адресов
Файл отчета


Cкриншоты:

Процесс разработки Вход в систему
 
Окно простой статистики Суточный график суммарного времени пребывания в сети

Система находится в стадии альфа-тестирования, разрабатывается сайт http://www.ethersec.net/.

Так что coming soon...

Дальнейшее развитие системы подразумевает доработку сервера и написание клиентских программ для различных ОС, чтобы точно и однозначно идентифицировать систему в момент входа в сеть на низком уровне. Будут использованы цифровые сертификаты и пароль входа. Появится возможность не допускать смену МАС адреса и имени компьютера без ведома администрации сети.
Приветствуются все комментарии и вопросы по данной теме.
Спасибо за проявленное внимание!
Удачи!



обсудить  |  все отзывы (10)

[46033; 303; 6.17]




  Copyright © 2001-2024 Dmitry Leonov Design: Vadim Derkach