Назад | Перейти на главную страницу

Переписывают ли NAT ipAddress в полезной нагрузке пакетов ICMP?

Сегодня, когда я тестирую tracert команда (windows + Wireshark) Я вижу исходящий пакет ICMP_ECHO_REQUEST, который имеет sourceIP как "192.168.1.55" - мой локальный IP-адрес.

За ним следует пакет ICMP_TTL_EXCEEDED, отправленный с дикого интернет-хоста в ответ на то, что мой пакет EchoRequest умер на полпути. Ответный пакет "цитирует" первые 28 байтов моего "исходного пакета" в разделе полезной нагрузки, где я могу видеть sourceIP остается "192.168.1.55" - мой локальный ipAddress.

У меня сразу возникает вопрос: «NAT не переписывал« локальный »sourceIP в IP-Header или он его переписывал в payload»?

AFAIK в случае пакетов TCP или UDP, NAT заменит локальный «ip: port» на внешний «IP: PORT» в IP-заголовке пакета. Так что мне интересно:

1 - Заменяют ли NAT их в разделе полезных данных пакетов? (Или просто сделайте это только с пакетом ICMP типа TTL_Exceeded?)

2 - Если 1 не соответствует действительности, является ли это угрозой безопасности?

Ответ в том, что это зависит от обстоятельств.

Я получил сообщения ICMP от систем с устройством NAT, которые пропускают внутренние IP-адреса через сообщения ICMP.

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

Следует обратить внимание на более тонкие аспекты. Когда NAT изменяет IP-адреса, он также должен изменять контрольные суммы внутри пакета. Однако полезная нагрузка ICMP обычно представляет собой усеченный IP-пакет, поэтому контрольные суммы транспортного уровня не могут быть проверены. По этой причине они редко используются, и оставление неизмененными контрольных сумм внутри полезных данных ICMP не приведет к поломке. Однако это приводит к тому, что контрольные суммы изменяются в одном направлении, а не в другом. Таким образом может просочиться небольшая часть информации о внутренних IP-адресах.

Эти утечки можно считать уязвимостями безопасности. Это всего лишь один из видов утечек, которые может вызвать NAT. Возможны и более серьезные утечки, включая возможность отправки фрагментов пакета другому хосту, чем предполагаемый получатель. Это некоторые из причин, по которым NAT - не лучшая идея. Замена NAT на брандмауэр без NAT повысит общую безопасность. Но для этого, конечно, требуется больше IP-адресов.

NAT не затрагивает полезную нагрузку пакетов. Это касается только заголовков IP и TCP / UDP. IP-адреса включены в заголовок IP (источник и место назначения). Заголовок TCP включает порты источника и назначения, аналогично заголовку UDP.

Для случая ICMP вы можете посмотреть эта страница. В нем указано, что в случае сообщения об ошибке (например, превышения TTL) пакет включает заголовок IP (20 байтов) + 8 байтов из полезной нагрузки = 28 байтов, которые вы видели.