Что мешает отправлять пакеты данных напрямую на частный IP-адрес (для взлома/вирусной атаки/вредоносного ПО)?

Что мешает отправлять пакеты данных напрямую на частный IP-адрес (для взлома/вирусной атаки/вредоносного ПО)?

Я новичок в сетевых технологиях и освоил многие основы, но я не понимаю, как Интернет не может напрямую подключаться к вашим устройствам в локальной сети.

Я знаю, что маршрутизаторы и NAT позволяют всем вашим устройствам иметь один и тот же IP-адрес для вашей сети, и они направляют запросы в Интернет и обратно клиенту, который их запросил, но у меня такой вопрос:

Допустим, я хочу взломать чей-то компьютер и знаю IP его домашней сети (маршрутизатора). Разве я не могу просто передать данные на этот IP с данными, закодированными для отправки на некоторые из наиболее распространенных частных адресов (например, 192.168.1.1-80) и фактически получить данные, отправленные на «частное» устройство?

IP-адреса обычно передают данные напрямую к устройствам, которые сделали запрос, и обратно. Поэтому, если я знаю IP-адрес маршрутизатора и правильно угадал частный IP-адрес, что помешает мне взломать это устройство?

Я предполагаю, что есть другой способ маршрутизации данных нужному клиенту, реализованный в маршрутизаторе/NAT, и это не просто IP, но я не уверен, как это делается.

Или это просто то, что вы МОЖЕТЕ отправить таким образом вредоносные данные, но никакой пользы от этого не будет, если все программное обеспечение в любом случае ничего не сделает с данными (не отправит запрос).

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

Может кто-то объяснить это мне?

решение1

Я не понимаю, как Интернет не может напрямую связаться с вашими устройствами в локальной сети.

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

Помните, что изначально Интернет был задуман так, что именно так все и должно работать: Интернет должен быть «сквозным», а IP-адреса должны быть буквально глобальными, то есть, где бы в мире ни находился определенный IP-адрес, я могу с ним общаться, а он может общаться со мной.

Проблема в том, что у нас закончились адреса IPv4, поэтому пришлось использовать такие схемы, как NAT.

NAT не был тем способом, которым все должно было работать, и хотя он имеет побочный эффект в плане безопасности, он нарушает принцип сквозного соединения Интернета и поощряет сервисы, которые ничего не делают, кроме как выступают в качестве посредников — хорошо для безопасности/сбора арендной платы, плохо для свободы/бедных людей.

Я знаю, что маршрутизаторы и NAT позволяют всем вашим устройствам иметь один и тот же IP-адрес для вашей сети.

Так это выглядит только за пределами вашей сети.

За вашей сетью каждая система имеет уникальный IP-адрес из одного из диапазонов частных IP-адресов.

NAT управляет этой иллюзией на вашем маршрутизаторе, так что системы за вашим маршрутизатором могут подключаться к другим IP-адресам, а IP-адреса могут взаимодействовать с системами за вашим маршрутизатором, если порты переадресованы правильно.

Разве я не могу просто передавать данные на этот IP-адрес, закодировав их так, чтобы они отправлялись на некоторые из наиболее распространенных частных адресов (например, 192.168.1.1-80), и фактически получать данные, отправленные на «частное» устройство?

Неа.

192.168.1.80 не существует в Интернете. Он существует только за маршрутизаторами NAT. Сначала вам нужно оказаться за маршрутизатором NAT. Единственный способ сделать это — сначала обратиться к публичному IP маршрутизатора NAT.

Фактически, если IP-адрес 192.168.1.80 и ваш собственный IP-адрес находятся в одной подсети, то трафик даже не выйдет за пределы вашей сети — ваша система попытается достичь 192.168.1.80 через локальную сетевую карту, но он даже не достигнет вашего маршрутизатора.

Итак, если я знаю IP-адрес маршрутизатора и правильно угадал частный IP-адрес, что помешает мне взломать это устройство?

Маршрутизаторы NAT контролируют и отслеживают входящие соединения.

Если новое TCP-соединение пытается подключиться к перенаправленному порту, тогда и только тогда оно перешлет данные в систему за маршрутизатором.

UDP не требует установления соединения, поэтому маршрутизатор NAT, если он выполняет свою работу правильно, не будет пересылать трафик UDP, который он не видел некоторое время, в систему за ним. Можно обмануть маршрутизаторы NAT с помощью UDP из-за его природы отсутствия соединения, но только если вы сначала сможете заставить систему за ним отправить что-то на этот порт и убедить маршрутизатор NAT, что входящий трафик может вернуться. Есть несколько протоколов, которые зависят от чего-то подобного, например, STUN.

решение2

Тот факт, что вы знаете публичный IP-адрес маршрутизатора, а также внутренний адрес, не делает автоматически внутренний адрес общедоступным.

IP позволяет вам подключаться к публичному адресу, но это не означает автоматически, что за этим публичным адресом существуют адреса или что он предоставляет какие-либо средства для пересылки данных, даже если бы они были.

Адрес — «перейти к этой машине и этому порту», ​​а не «перейти к этой машине и этому порту, а оттуда переслать на другую машину и этот порт, а оттуда — на этот».другойадрес и порт"

Думайте об этом, как будто кто-то отправляет вам письмо. Почта не заботится оВОЗнаходится по адресу, просто они кладут почту в нужную щель. Если почта проходит через щель, то кто-то по адресу должен посмотреть на письмо и выяснить, кому оно должно быть отправлено.

То же самое происходит в сети, но NAT не позволяет использовать "Jim" в качестве постоянного внутреннего адреса, внутренние и внешние сопоставления происходят, когда что-то внутри сети обращается к Интернету, запрашивая соединение. В это время он фактически создает почтовый ящик "jimTmp12345@PublicIP", который используется до тех пор, пока соединение не закроется, после чего адрес становится недействительным, а все, что адресовано ему, сбрасывается на локальную свалку.

решение3

Большинство маршрутизаторов NAT также будут настроены на работу в качестве межсетевого экрана, а не только маршрутизатора.

Рассмотрим следующую сеть:

пример сети


Без NAT устройства должны взаимодействовать напрямую:

  • 192.168.1.2хочет поговорить с192.168.0.2
    • Его маршрут по умолчанию — 192.168.1.1(Маршрутизатор A)
    • Маршрутизатор A знает, что 192.168.0.0/24он доступен через 198.51.100.2 (маршрутизатор B)
    • Маршрутизатор B напрямую подключен к сети 192.168.0.0/24и доставляет пакет
  • 192.168.0.2хочет ответить на192.168.1.2
    • Его маршрут по умолчанию — 192.168.0.1(Маршрутизатор B)
    • Маршрутизатор B знает, что 192.168.1.0/24он доступен через198.51.100.1
    • Маршрутизатор A напрямую подключен к сети 192.168.1.0/24и доставляет пакет

С NAT на маршрутизаторе A, нонетмаршрутизатор B, ситуация немного меняется:

  • 192.168.1.2хочет поговорить с192.168.0.2
    • Его маршрут по умолчанию — 192.168.1.1(Маршрутизатор A)
    • Маршрутизатор A настроен на "Маскировка IP-адреса", поэтому переписывает исходный адрес как 192.51.100.1(его внешний интерфейс)
    • Маршрутизатор A знает, что 192.168.0.0/24он доступен через 198.51.100.2(маршрутизатор B)
    • Маршрутизатор B напрямую подключен к сети 192.168.0.0/24и доставляет пакет
  • 192.168.0.1хочет ответить на198.51.100.1
    • Его маршрут по умолчанию — 192.168.0.1(Маршрутизатор B)
    • Маршрутизатор B напрямую подключен к сети 198.51.100.0/24и доставляет пакет
    • Маршрутизатор A просматривает свою таблицу трансляции и перезаписывает пункт назначения следующим образом:192.168.1.1
    • Маршрутизатор A напрямую подключен к сети 192.168.1.0/24и доставляет пакет

На данный момент естьничегочтобы запретить хосту использовать его 192.51.100.1в качестве маршрутизатора и попросить его переслать пакет 192.168.1.2...Ничего. Ответы, скорее всего, будут замаскированы, поэтому общение может быть немного "испытывающий", но общение есть общение.

Расширяя это до "Интернет" может изменить мой "Ничто не может остановить..." заявление в некоторой степени. У меня нет подтверждающих материалов, но я был бы очень удивлен, если бы интернет-маршрутизаторы были действительно настроены на пересылку трафика, нацеленного на частный сетевой адрес. Вместо этого они, скорее всего, просто отбрасывают такие пакеты. Вывод в том, что попытка сделать это в Интернете вряд ли сработает, даже если маршрутизатор был плохо настроен.

В дополнение к этому, из-за особенностей работы маршрутизации (например, если хост не находится в локальной сети, MAC-адрес указывает на маршрутизатор, а IP-адрес указывает на конечный хост), нет способа использовать его в 192.51.100.1качестве маршрутизатора, если только A) вы не подключены к нему; или B) существующие маршруты не будут направлять ваш трафик в его направлении.


Чтобы другие хосты не могли использовать его 198.51.100.1в качестве простого маршрутизатора, необходимы правила брандмауэра.

Один из подходов заключается в отклонении (или сбрасывании) входящих пакетов на внешнем интерфейсе маршрутизатора A ( 198.51.100.1), которые явно не нацелены на его адрес.

Это также решитмодель слабого хозяиначто Linux реализует (например: Маршрутизатор B может взаимодействовать с Маршрутизатором A через свойвнешнийинтерфейс, используя адрес, назначенныйвнутреннийинтерфейс).

решение4

[NAT] направляет запросы в Интернет и обратно клиенту, который их запросил

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

Проблема номер 1:

Я думаю, если вы подробно разберетесь, как работает NAT, это поможет ответить на некоторые из ваших вопросов. Наиболее типичная реализация, которую я видел, — это NAPT («Network Address Port»-based Translation). Когда вы отправляете данные с частного адреса, маршрутизатор берет этот частный адрес и добавляет эту информацию в таблицу/диаграмму в памяти маршрутизатора. Маршрутизатор также выбирает номер порта TCP или UDP (вероятно, выбранный довольно случайно) и отслеживает его в той же таблице/диаграмме. Затем маршрутизатор отправляет информацию в Интернет, используя публичный IP-адрес, и идентифицирует номер «исходного порта» как выбранный им номер. (Как TCP, так и UDP используют два номера портов: номер «источника» и номер «назначения».) Когда пункт назначения (например, веб-сервер, прослушивающий порт TCP 443) замечает трафик, идущий на порт TCP 443 и исходящий с другого порта TCP (например, порта TCP 53874), этот сервер может ответить отправкой трафика обратно на публичный IP-адрес исходного маршрутизатора на том же порту TCP (например, порту TCP 53874). Затем маршрутизатор ищет информацию в своей таблице/диаграмме и знает, на какой частный IP-адрес отправить информацию.

Если вы просто выбрали частный IP-адрес наугад, маршрутизатор не должен иметь этот частный IP-адрес в своей таблице/диаграмме, поэтому это не сработает.

Я предполагаю, что есть другой способ маршрутизации данных нужному клиенту, реализованный в маршрутизаторе/NAT, и это не просто IP, но я не уверен, как это делается.

Нет.

Я имею в виду, ну, да, есть. Есть и другая маршрутизация, которая может возникнуть, и поэтому я просто быстро это признаю. Используется маркировка 802.1q "VLAN" и другие технологии, которые могут использоваться для некоторых облаков данных/сигнализации и могут повлиять на то, как трафик в конечном итоге проходит через сеть. Однако эти дополнительные методы маршрутизации обычно развертываются в целях скорости, безопасности или совместимости (в основном с сетями без IP, например, с некоторыми старыми сетями внутри телефонной компании). Вам не нужно думать, что эти продвинутые сетевые методы профессионального уровня введут новую и необходимую часть понимания того, как работает базовая маршрутизация, потому что базовая простая IP-маршрутизация может использоваться для объяснения того, о чем вы спрашиваете.

Проблема №2: Внутренняя защита маршрутизатора

Теперь давайте просто представим, что маршрутизатор не выполняет NAPT, поэтому мы просто проигнорируем всю таблицу/диаграмму, которая сопоставляет номера публичных портов TCP/UDP с частными адресами. Давайте просто представим, что вы сидите у провайдера клиента и хотите злонамеренно отправить пакет через маршрутизатор на частные IP-адреса клиента.

Большинство маршрутизаторов, выполняя некоторые очень простые действия, подобные действиям брандмауэра, заметят, что входящий трафик поступает на порт с меткой «WAN» (что означает «Wide-Area Network»). Чтобы обеспечить некоторую защиту, маршрутизаторы поймут, что входящий трафик на этом сетевом порту должен использовать публичный IP-адрес маршрутизатора, а не какой-либо из распространенных диапазонов «частных» IP-адресов.

Таким образом, маршрутизатор будет защищать сеть, отбрасывая пакет.

Проблема 3: Интернет-провайдеры защищают нас лучше

Стандартом для любого интернет-провайдера является запрет на любой трафик в диапазоне частных IP-адресов (диапазоны сетевых адресов, указанные вIETF RFC 1918 Раздел 3для IPv4 или адреса, начинающиеся с «fd» для IPv6).

Итак, если вы пытаетесь отправить трафик из своего дома через своего интернет-провайдера, а затем через остальную часть основной магистрали интернет-провайдеров, затем через интернет-провайдера жертвы, затем через маршрутизатор вашей жертвы и, наконец, на «частный IP»-адрес по вашему выбору, то вы должны потерпеть неудачу. Это потому, что интернет-провайдеры обычно следуют соглашению о блокировке трафика, включающего частные IP-адреса. (Интернет-провайдеры были бы сумасшедшими, если бы не делали этого.)

В приведенном выше сценарии защита не предоставляется провайдером целевой жертвы. Конечно, провайдер целевой жертвы, скорее всего, настроен на отбрасывание пакетов, тем самым защищая маршрутизатор целевой жертвы. Однако ваш провайдер также, скорее всего, будет отбрасывать пакеты, поэтому пакеты даже не дойдут до провайдера целевой жертвы.

Проблема 4: Мотивация интернет-провайдера

Почему интернет-провайдеры должны быть настолько безумны, чтобы разрешать трафик с использованием частных IP-адресов?

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

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

Если интернет-провайдер нарушит эти правила, он, скорее всего, будет пропускать вредоносный трафик, который, скорее всего, не окажет никакого эффекта (кроме использования полосы пропускания), но если какой-либо эффект и будет, то это, скорее всего, будет плохо для интернет-провайдера.

Вопрос 5: Что произойдет на самом деле

До сих пор я объяснял, почему Интернет будет блокировать трафик. Но давайте посмотрим, что произойдет на самом деле.

Что произойдет, если вы сидите за своим компьютером и решите отправить вредоносный пакет на частный IP-адрес?

Если трафик дойдет до вашего местного интернет-провайдера, этот местный интернет-провайдер немедленно заблокирует трафик, как уже объяснялось.

Однако, что действительно вероятно, так это то, что трафик не дойдет до вашего локального провайдера. Вместо этого ваш локальный маршрутизатор сам разберется, что делать с этим трафиком.

Если вы сами не используете тот же «частный» IP-адрес, то ваш маршрутизатор, вероятно, не будет знать, что делать с трафиком, поэтому трафик будет отброшен.

В противном случае, если вы сами используете тот же самый "частный IP" адрес, то вы, скорее всего, атакуете устройство в сети, в которой находитесь. Если вы администратор этой сети, то вы атакуете свою собственную сеть!

В любом случае ваш маршрутизатор вряд ли (при использовании обычных конфигураций по умолчанию) будет передавать трафик через Интернет.

Обзор:

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

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

Связанный контент