Потенциально уязвимые места в протоколе TCP/IP
Спросите Вы, зачем нам эта информация? Ведь про модель OSI мы знаем еще с институтской скамьи, ведь это давно пройденный этап, а если понадобиться, то «Вика» всегда под рукой! Давайте, все же посмотрим на стек протоколов TCP/IP c точки зрения злоумышленника.
Как известно базовая концепция TCP/IP позволяет организовать взаимодействие различных компьютерных систем и описывает внутреннюю работу сети Internet.
- 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-пакета содержит заголовок протокола более высокого уровня (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 для доставки пакетов конкретному компьютеру. Номера портов используются для доставки пакетов определенным прикладным программам, запушенным на удаленном компьютере.
Протокол IСМР
Описанный в документе RFC 792 протокол ICMP предназначен для извещения о затруднениях в процессе передачи данных другими протоколами. Каждое ICMP-сообщение имеет идентификатор типа, по которому можно определить причину проблемы, например, недоступность адресата или сообщение о недостижимости порта. Кроме того, с помощью ICMP можно определить, работает ли тот или иной компьютер (ping-запрос).
На многих узлах используется блокирование ICMP-сообщений на брандмауэре и на граничном маршрутизаторе. Это обычная практика для предотвращения разглашения информации о компьютерах локальной сети. Однако блокирование всех ICMP-сообщений может повлиять на производительность сети. Например, при блокировании сообщений типа Destination Unreachable («Адресат недоступен») Web-браузеры будут ожидать превышения лимита времени вместо того, чтобы сразу выдать сообщение о недоступности адресата запроса. Поэтому должен быть выбран разумный компромисс между производительностью и риском предоставления потенциально опасной информации или даже компрометации компьютера.
Интересная статья. Когда учился на информационных технологиях в экономике и проходили тему протоколов передачи данных. Наш лектор показывал как перехватывать и сниффать пакеты по локальной сети.
Спасибо за статью. Оказывается я не все знал Теперь про этот протокол знаю многое
угу) мне тоже в институте про это говорили, но я не особо посещал лк и пз поэтому часть для меня новое)) и кстати мне тоже понравилось оформление на сайте, особенно в анонсах картинки прикольные
Читал нам препод по защите инф. про этот протокол, так там таких делов можно натворить что ппц!
Так как UDP не устанавливает соединения, то он и предназначается для передачи некритичной информации, т.е. видео, аудио, в общем мультимедийную информацию. Если и потеряется блок информации то это никак не скажется на всей информации. Ну икнет звук, ну увидит пользователь «артефакт», но функция передачи будет выполнена.
отличная статья, но увы для новичков
Интересно, почитал…
Расширяемый дизайн для блога не пробовали использовать?) Читать не очень удобно….
Отличная статья, написано очень информативно, реально начинаешь хоть немного понимать что такое TCP/IP протокол.
Спасибо за статью. Оказывается я не все знал о TCP-IP
Хорошо все расписано так! так уязвимости есть почти везде, и для находок таких уязвимостей есть хакеры) которые на этом и зарабатывают не плохо