¿Por qué mi dirección IP interna (privada) es visible desde Internet?

122

Al visitar algunos sitios web como enlace o enlace , Obtengo el siguiente resultado:

Your current IP Address
 - IP:    197.158.x.x
 - Internal IP:    192.168.x.x

Entiendo que puedo ver mi dirección IP pública (197.158.x.x). Lo que no puedo entender es que ¿por qué mi dirección IP interna es visible a través de Internet ?

Esos sitios web no parecen utilizar un Flash , un applet de Java u otros scripts. Mi ISP está realizando un NAT de mi dirección IP interna para acceder a Internet:

3G Wireless Modem [192.168.x.x] -------- ISP [NAT to 197.158.x.x] ------- Internet

Entonces, ¿cómo es posible que un sitio web vea mi dirección IP interna?

    
pregunta Lova Nirina Andrianasolo 24.07.2015 - 10:40
fuente

7 respuestas

111

La fuente más probable de esta información es la implementación WebRTC de su navegador.

Puede ver esto en el código fuente de ip-api.com.

De enlace , que también proporciona una demostración de esta técnica:

  

Firefox y Chrome han implementado WebRTC que permite realizar solicitudes a servidores STUN que devolverán las direcciones IP públicas y locales para el usuario. Estos resultados de solicitud están disponibles para javascript, por lo que ahora puede obtener las direcciones IP públicas y locales de los usuarios en javascript.

Recientemente se notó que el New York Times estaba usando esta técnica para ayudar a distinguir entre visitantes reales y bots (es decir, si la API de WebRTC está disponible y devuelve información válida, es probable que sea un navegador real).

Hay un par de Chrome extensions que pretenden bloquear este API, pero no parecen ser efectivos en este momento. Posiblemente esto se deba a que aún no hay ganchos en el navegador, ya que GitHub README alude a:

  

Además, estas solicitudes de STUN se realizan fuera del procedimiento normal de XMLHttpRequest, por lo que no son visibles en la consola del desarrollador ni pueden ser bloqueadas por complementos como AdBlockPlus o Ghostery.

    
respondido por el Christopher 24.07.2015 - 12:27
fuente
47

Un método común para obtener la dirección IP interna es utilizar RTCPeerConnection en JavaScript.

enlace , por ejemplo, está llamando a una función de javascript llamada "gi" que contiene el siguiente código:

...
 o = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection,
...

Técnicamente, esto se hace estableciendo una devolución de llamada en la conexión RTC (objeto o) con "onicecandidate" y obteniendo el atributo candidato.candidate del evento. Esto mostrará una lista de todas las direcciones IP locales de sus interfaces de red.

Eche un vistazo a Módulo: Obtenga IP interna WebRTC .

El script de JavaScript puede enviar esta información a un servidor de Internet, pero enlace , como ejemplo, solo la muestra a la cliente.

    
respondido por el r00t 24.07.2015 - 12:18
fuente
22

WebRTC es solo una de las varias formas en que se pueden descubrir las direcciones IP de LAN.

Hubo una agradable charla sobre Black Hat 2012 sobre este tema, llamada Amenazas combinadas y JavaScript: un plan para un compromiso de red permanente , en el que Phil Purviance y Josh Brashars presentó un método automatizado para encontrar y borrar el enrutador wifi de su hogar con un solo clic en un sitio web.

Este WebRTC anterior, por lo que tuvieron que descubrir la dirección IP de su enrutador de otra manera. Esto se puede hacer con escáneres de JavaScript como jslanscanner , JSScan , JS-Recon , pero una colección simple (pero grande) de objetos incrustados que simplemente adivine la dirección del enrutador (por ejemplo, incrustando una imagen de enrutador esperada y observando cuándo se carga con éxito). Una vez que tenga la dirección, puede adivinar la contraseña (comenzando con el valor predeterminado esperado) utilizando RouterPasswords.com o incluso omitiendo la autenticación mediante Routerpwn.com .

Como prueba de concepto, su demostración descubrió la IP del enrutador, buscó su contraseña predeterminada, inició sesión e instaló automáticamente el firmware de reemplazo (DD-WRT). Un ataque real podría tener cualquier número de capacidades maliciosas en el nuevo firmware y podría hacer que parezca ser el sistema de enrutador original sin modificar.

(Es cierto que esto identifica la dirección IP de LAN de su enrutador wifi doméstico en lugar de la dirección IP de LAN local, pero es bastante cercana y posiblemente más alarmante).

    
respondido por el Adam Katz 25.07.2015 - 03:54
fuente
6

Lo más probable es que su navegador (o su ISP) esté enviando un encabezado X-Forwarded-For Eso revela su dirección IP interna. Consulte un sitio como éste para ver qué encabezados está enviando.

    
respondido por el Mark 24.07.2015 - 10:46
fuente
3

El primero de tus dos enlaces no funcionó para mí, pero el segundo sí lo hizo. Al ver el código JavaScript del segundo enlace, descubrí que está usando window.RTCPeerConnection .

No todos los navegadores admiten RTCPeerConnection , pero en aquellos que lo hacen se pueden usar para identificar las direcciones IP locales del navegador. Esta respuesta en Stack Overflow da un ejemplo de cómo se puede usar la API asíncrona de RTCPeerConnection para encontrar una dirección IP local .

    
respondido por el kasperd 24.07.2015 - 13:43
fuente
1

Es probable que el sitio aloje algún JavaScript que se esté ejecutando en su máquina y descubra su dirección interna y la ponga en la pantalla.

El servidor remoto no verá su dirección interna y es poco probable que se reenvíe en un encabezado HTTP.

    
respondido por el kevino_17 24.07.2015 - 10:59
fuente
1

El protocolo TCP / IP subyacente no divulgará su dirección interna; no se usa para enrutar a través de la Internet pública y no se captura / almacena en los paquetes de protocolo en la capa 3, ya que los paquetes son creados por tu enrutador perimetral Cualquier número de servicios o clientes que esté ejecutando puede divulgar esto en la capa 7 en encabezados, banners de servicio, etc.

La forma definitiva de descubrir qué es lo que está filtrando esta información es usar un programa de descarga de tráfico de red en su red interna (como wireshark o tcpdump) y verificar el contenido de los paquetes en la capa 7, es decir, la carga útil de datos, y la dirección interna no se registra en algún lugar de la carga útil de datos de su cliente, por lo que probablemente provenga de su enrutador perimetral (aunque es poco probable) y necesitará capturar el tráfico de la red en el lado de Internet del enrutador en algún lugar para ver cómo está sucediendo.

    
respondido por el David Scholefield 24.07.2015 - 12:05
fuente

Lea otras preguntas en las etiquetas