OSX mDNSResponder открытие всех портов на миллиард

Я недавно поменял свой маршрутизатор на миллиард 7800VDOX и заметил некоторые попытки подключения к моему iMac с внешних адресов. При расследовании я обнаружил, что порт uPnP был открыт на маршрутизаторе с диапазоном портов 0-0 (внутренний и внешний.) Это имеет эффект, проверенный с внешним сканером портов, открытия всех номеров портов на маршрутизаторе и направления их к iMac.
Я удалил сопоставление и запустил Wireshark и захватил запрос внешнего адреса одновременно с отображение было восстановлено.

Frame 496: 102 bytes on wire (816 bits), 102 bytes captured (816 bits) on interface 0
Ethernet II, Src: Apple_d0:7e:eb (d4:9a:20:d0:7e:eb), Dst: BillionE_cb:49:27 (00:04:ed:cb:49:27)
Internet Protocol Version 4, Src: 192.168.1.131, Dst: 192.168.1.254
User Datagram Protocol, Src Port: 5353 (5353), Dst Port: 5351 (5351)
Source Port: 5353
Destination Port: 5351
Length: 68
Checksum: 0x8527 [validation disabled]
[Stream index: 0]
Port Control Protocol, Map Request
Version: 2
0... .... = R: Request
.000 0001 = Opcode: Map (1)
Reserved: 0
Requested Lifetime: 7200
Client IP Address: ::ffff:192.168.1.131
Map Request
    Mapping Nonce: f88237920f8cd6c0a3765f39
    Protocol: 6
    Reserved: 0
    Internal Port: 9
    Suggested External Port: 0
    Suggested External IP Address: ::ffff:xxx.181.81.112

этому предшествовал SOAP-запрос на получение внешнего IP-адреса маршрутизатора. Проверяя исходный порт (5353) с помощью lsof, я обнаружил, что он принадлежит mDNSResponder.

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

У кого - нибудь есть другие предложения?

4
задан Clyde
12.04.2023 23:52 Количество просмотров материала 3438
Распечатать страницу

1 ответ

пакет, который вы захватили, показывает протокол управления портами (PCP: IETF standards-track преемник NAT-PMP) запрос сопоставления портов. Порт клиента для запрошенного сопоставления-9 / TCP. У клиента нет никакого предложения для того, каким должен быть внешний порт, таким образом, это оставляет предлагаемое поле внешнего порта равным нулю. IETF RFC 6887, который определяет PCP, ясно дает понять, что ноль означает "нет предложения" в этой области.

Я думаю, что тот, кто реализовал PCP для этого миллиарда маршрутизатора понял РЧЦ. Видите ли, в некоторых очень ограниченных и четко определенных случаях ноль в поле другой порт может означать "все порты". Как и в случае, когда запрошенное время жизни для этого запроса сопоставления равно нулю, нулевой порт клиента будет означать "удалить все сопоставления для всех портов на этом IP-адресе клиента".

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

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

еще одна странная вещь здесь-порт клиента. Традиционно 9 / TCP является discard порт службы, но discard служба устарела, поэтому я не уверен, кто будет ее запускать, или почему что-то будет запрашивать сопоставление портов для нее.

Что касается того, почему mDNSResponder отправляет эти запросы, это просто потому, что mDNSResponder действует как демон PCP/NAT-PMP/UPnP на macOS в дополнение к своим обычным mDNS, Обязанности DNS-SD и распознавателя DNS. Когда какой-либо процесс на macOS инициирует систему, чтобы запросить сопоставление портов от маршрутизатора, это-всегда задание mDNSResponder создать и передать фактические пакеты запроса сопоставления портов.

1
отвечен Spiff 2023-04-14 07:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх