Потенциально уязвимые места в протоколе TCP/IP
  • Категории
  • Подписка
  • Разместить статью
29/07/10 20 19727 Атаки из сети
-

Потенциально уязвимые места в протоколе TCP/IP

Спросите Вы, зачем нам эта информация? Ведь про модель OSI мы знаем еще с институтской скамьи, ведь это давно пройденный этап, а если понадобиться, то «Вика» всегда под рукой! Давайте, все же посмотрим на стек протоколов TCP/IP c точки зрения злоумышленника.

Как известно базовая концепция TCP/IP позволяет организовать взаимодействие раз­личных компьютерных систем и описывает внутреннюю работу сети Internet.

На сегодня под набором протоколов TCP/IP чаще всего подразумевают четыре основных протокола:

  • IP (Internet Protocol – сетевой протокол);
  • TCP (Transmission Control Protocol — протокол управления передачей);
  • UDP (User Datagram Protocol — протокол пользовательских дейтаграмм);
  • ICMP (Internet Control Message Protocol — протокол управляющих сообщений Internet).

Эти протоколы обеспечивают передачу данных для протоколов более высокого уровня при­ложений, таких как:

  • SMTP (Simple Mail Transfer Protocol — простой протокол электронной поч­ты);
  • HTTP (Hypertext Transfer Protocol — протокол передачи гипертекста);
  • FTP (File Transfer Protocol — протокол передачи файлов).

Протокол IP

Протокол IP описан в документе RFC 791. Протокол IP не ориентирован на установку соеди­нений. Это означает, что каждый пакет передается по сети независимо от других. То есть не га­рантируется, что пакеты придут в пункт назначения и сохранится порядок, в котором они бы­ли отправлены.

Рассмотрим заголовок IP-пакета. Обратите внимание, что размер полей адресов отправителя и получателя равен 32 битам. При отправке пакета адрес узла-отправителя не про­веряется.

Таким образом, злонамеренный пользователь может подменить действительный ад­рес в поле адреса отправителя любым другим адресом. Об этом следует помнить всякий раз, определяя адрес отправителя полученного пакета.

Поле TTL (time-to-live — время жизни) предотвращает создание замкнутых маршрутов пе­редачи пакетов. При прохождении пакета через сетевое устройство (маршрутизатор) значение этого поля уменьшается на единицу. Когда значение поля достигнет нуля, пакет будет отбро­шен и источнику пакета будет отправлено сообщение «время истекло» («time exceded»). Поле TTL может использоваться для определения маршрута передачи сообщения. Программа tracerote отправляет пакет с установленным полем TTL, равным 1. Первый маршрутизатор ответит сообщением «время истекло». Затем один за другим будут отправлены пакеты, в каж­дом из которых значение поля TTL будет увеличиваться на единицу до тех пор, пока пакет не достигнет пункта назначения. Таким образом собирается информация обо всех промежуточных узлах трансляции пакета.

Если пакеты передаются по сетям, в которых размер IP-пакетов превышает максимально допустимое значение размера кадра, то выполняется фрагментация пакетов. Эта операция необходима для передачи информации в различных физических сетях, но она также может быть использована в незаконных целях. Поле MF указывает, является (MF=0) или нет (MF=l) дан­ный пакет последним фрагментом последовательности. Поле «fragment onset» («смещение фраг­мента») указывает на положение фрагмента в исходном пакете. Фрагменты могут быть использо­ваны для попытки обмануть брандмауэр. Например, первый фрагмент отправляется с вполне «невинным» TCP-заголовком (в блоке данных IP-пакета). Второй фрагмент «затеняет» данные первого и заменяет TCP-заголовок. В результате можно провести атаку в обход брандмауэра.

В современных IP-сетях фрагментация пакетов выполняется довольно редко. Поэтому присутствие фрагментированных пакетов, скорее всего, оз­начает или наличие каких-либо проблем в сети, либо попытку проведения атаки, например, атаки в обход брандмауэра (в результате различной сборки пакетов на брендмауэре и на компьютере-получатале) или атаки от­каза в обслуживании.

Блок данных IP-пакета содержит заголовок протокола более высокого уровня (TCP, UDP и т.д.), а также непосредственно сами данные.

Протокол TCP

Формат заголовка TCP-пакета также определен в документе RFC 793. В отличие от IP, протокол TCP является ориентированным на установление соединений.

То есть TCP гаран­тирует доставку и сохранение порядка отправленных пакетов. Это достигается за счет использо­вания порядковых номеров и номеров подтверждения. В то время как протокол IP использует IP-адреса для доставки пакетов указанному компьютеру, протокол TCP использует номера пор­тов для отправки пакета нужному процессу на компьютере-получателе и идентификации про­цесса-отправителя на компьютере-отправителе. Как и IP-адрес, порт отправителя не проверя­ется и поэтому может быть подменен нарушителем.

По заголовку TCP можно определить тип отправленного пакета. Тип пакета зависит от на­бора установленных флагов, которых всего шесть: Urgent, Ack, Push, Reset, Syn и Fin. Флаги Urgent и Push используются довольно редко. Большинство флагов и их комбинаций использу­ются при установлении и разрыве соединений.

Другие наборы флагов могут приме­няться хакерами для выявления работающих компьютеров или определения типа операционной систе­мы удаленного компьютера.

Протокол UDP

Как определено в документе RFC 768, протокол UDP является эквивалентом TCP, не ори­ентированным на установление соединений. Как и IP, UDP не гарантирует доставки пакетов получателю и правильность их порядка. Заголовок UDP-пакета очень простой и не содержит флагов или порядковых номеров

Как и TCP, протокол UDP базируется на возможностях, предоставляемых протоколом IP для доставки пакетов конкретному компьютеру. Номера портов используются для доставки па­кетов определенным прикладным программам, запушенным на удаленном компьютере.

Поскольку компьютер-отправитель не выполняет проверку заголовка UDP, то в качестве номера порта отправителя взломщик может указать любой удобный ему номер. Так как для UDP не требуется установления соединения, то гораздо проще подменить как IP-адрес, так и порт от­правителя пакетов.

Протокол IСМР

Описанный в документе RFC 792 протокол ICMP предназначен для извещения о затрудне­ниях в процессе передачи данных другими протоколами. Каждое ICMP-сообщение имеет идентификатор типа, по которому можно определить причину проблемы, например, недос­тупность адресата или сообщение о недостижимости порта. Кроме того, с помощью ICMP можно определить, работает ли тот или иной компьютер (ping-запрос).

На многих узлах используется блокирование ICMP-сообщений на брандмауэре и на гра­ничном маршрутизаторе. Это обычная практика для предотвращения разглашения информа­ции о компьютерах локальной сети. Однако блокирование всех ICMP-сообщений может по­влиять на производительность сети. Например, при блокировании сообщений типа Desti­nation Unreachable («Адресат недоступен») Web-браузеры будут ожидать превышения лимита времени вместо того, чтобы сразу выдать сообщение о недоступности адресата запроса. Поэтому должен быть выбран разумный компромисс между производительностью и риском предоставления потенциально опасной информации или даже компрометации компьютера.

Для создания интерактивных сеансов связи с помощью ICMP-пакетов зло­умышленник может воспользоваться программой, наподобие ISHELL. Блокирование ICMP-пакетов сделает невозможным такой «скрытый» сеанс связи.


20 комментариев на «“Потенциально уязвимые места в протоколе TCP/IP”»

  1. Интересная статья. Когда учился на информационных технологиях в экономике и проходили тему протоколов передачи данных. Наш лектор показывал как перехватывать и сниффать пакеты по локальной сети. :)

  2. Александр:

    Спасибо за статью. Оказывается я не все знал :) Теперь про этот протокол знаю многое :)

  3. Александр:

    угу) мне тоже в институте про это говорили, но я не особо посещал лк и пз :) поэтому часть для меня новое)) и кстати мне тоже понравилось оформление на сайте, особенно в анонсах картинки прикольные

  4. Artur:

    Читал нам препод по защите инф. про этот протокол, так там таких делов можно натворить что ппц!

  5. Так как UDP не устанавливает соединения, то он и предназначается для передачи некритичной информации, т.е. видео, аудио, в общем мультимедийную информацию. Если и потеряется блок информации то это никак не скажется на всей информации. Ну икнет звук, ну увидит пользователь «артефакт», но функция передачи будет выполнена.

  6. отличная статья, но увы для новичков

  7. Интересно, почитал…
    Расширяемый дизайн для блога не пробовали использовать?) Читать не очень удобно….

  8. Сергей:

    Отличная статья, написано очень информативно, реально начинаешь хоть немного понимать что такое TCP/IP протокол.

  9. Спасибо за статью. Оказывается я не все знал о TCP-IP

  10. Александр:

    Хорошо все расписано так! так уязвимости есть почти везде, и для находок таких уязвимостей есть хакеры) которые на этом и зарабатывают не плохо

Добавить комментарий

Яндекс.Метрика