В недавнем интервью моего друга спросили о функции рандомизации порядковых номеров TCP в брандмауэрах. Интервьюер упомянул, что мы знаем, что брандмауэр рандомизирует порядковый номер TCP, но злоумышленник в середине все еще может перехватить этот пакет на проводе и отправить его от имени отправителя. Так что же дает рандомизация?
Я изучал эту атаку на порядковые номера в RFC 6528 но не смогли полностью понять концепцию.
Буду признателен за помощь в понимании этого.
Я ничего не имею против ответа Overmind, который, безусловно, является хорошим кратким изложением того, почему была изобретена рандомизация порядковых номеров. Но я не уверен, что это отвечает на вопрос как просили, поэтому я постараюсь это сделать.
Ты прав. Ничто не мешает привилегированному MITM подделать сброс TCP с действительным SN прямо сейчас - рандомизированный SN или нет. Но привилегированному MITM не нужно заходить так далеко, чтобы помешать вашим соединениям через свою сеть - ему нужно только отключить кабель или изменить ACL маршрутизатора.
Рандомизация SN была разработана, чтобы остановить все остальные делать то же самое. Если ваши социальные сети можно угадать, кто угодно может подделать сброс TCP и десинхронизировать ваши соединения. Если их невозможно угадать, требуется доступ к потоку данных.
Как правило, каждое устройство выбирало ISN, используя счетчик с таймером, например часы, который увеличивался каждые 4 микросекунды. Этот счетчик был инициализирован при запуске TCP, а затем его значение увеличивалось на 1 каждые 4 микросекунды, пока не достигло наибольшего возможного 32-битного значения (4Gigs), после чего он «завернулся» в 0 и возобновил приращение. Каждый раз, когда устанавливается новое соединение, ISN берется из текущего значения этого таймера. Поскольку для подсчета от 0 до 4 294 967 295 по 4 мкс за приращение требуется более 4 часов, это фактически гарантирует, что каждое соединение не будет конфликтовать с любыми предыдущими. Основная проблема этого метода в том, что он делает ISN предсказуемыми. Злоумышленник может написать код для анализа ISN, а затем спрогнозировать ISN для последующего TCP-соединения на основе ISN, использованных в более ранних. Поскольку это представляет угрозу безопасности, которая использовалась в прошлом, реализации брандмауэра теперь используют случайное число в процессе выбора ISN. Таким образом, предсказуемость больше не проблема.