Perché il mio indirizzo IP interno (privato) è visibile da Internet?

125

Quando visiti alcuni siti web come link o link , Ottengo il seguente risultato:

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

Capisco che posso vedere il mio indirizzo IP pubblico (197.158.x.x). Quello che non riesco a capire è che il mio indirizzo IP interno è visibile attraverso Internet ?

Questi siti non sembrano utilizzare un plug-in Flash , un'applet Java o altri script. Il mio ISP sta eseguendo un NAT del mio indirizzo IP interno per accedere a Internet:

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

Quindi, come è possibile che un sito web veda il mio indirizzo IP interno?

    
posta Lova Nirina Andrianasolo 24.07.2015 - 10:40
fonte

7 risposte

111

La fonte più probabile di queste informazioni è l'implementazione WebRTC del tuo browser

.

Puoi vedere questo nel codice sorgente di ip-api.com.

Da link , che fornisce anche una demo di questa tecnica:

Firefox and Chrome have implemented WebRTC that allow requests to STUN servers be made that will return the local and public IP addresses for the user. These request results are available to javascript, so you can now obtain a users local and public IP addresses in javascript.

Recentemente è stato notato che il New York Times utilizzava questa tecnica per aiutare a distinguere tra visitatori reali e robot (cioè se l'API WebRTC è disponibile e restituisce informazioni valide, è probabile che sia un vero browser).

Ci sono un paio di Chrome estensioni che intendono bloccare questa API, ma al momento non sembrano essere efficaci. Forse è perché non ci sono ancora gli hook nel browser, come allude a GitHub README:

Additionally, these STUN requests are made outside of the normal XMLHttpRequest procedure, so they are not visible in the developer console or able to be blocked by plugins such as AdBlockPlus or Ghostery.

    
risposta data 24.07.2015 - 12:27
fonte
47

Un metodo comune per ottenere l'indirizzo IP interno è usando RTCPeerConnection in JavaScript.

link , ad esempio, sta chiamando una funzione javascript denominata "gi" che contiene il seguente codice:

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

Tecnicamente, ciò avviene impostando una callback sulla connessione RTC (oggetto o) con "onicecandidate" e ottenendo l'attributo candidate.candidate dall'evento. Questo elencherà tutti gli indirizzi IP locali delle tue interfacce di rete.

Dai un'occhiata a Modulo: Ottieni WebRTC IP interno .

Lo script JavaScript può inviare queste informazioni a un server Internet, ma link , ad esempio, lo sta semplicemente visualizzando cliente.

    
risposta data 24.07.2015 - 12:18
fonte
23

WebRTC è solo uno dei tanti modi in cui è possibile scoprire gli indirizzi IP della LAN.

C'è stato un bel discorso su Black Hat 2012 su questo argomento, chiamato Blended Minacce e JavaScript: un piano per il compromesso permanente della rete , in cui Phil Purviance e Josh Brashars ha presentato un metodo automatico per trovare e cancellare il router Wi-Fi di casa con un solo clic su un sito Web.

Questo predecessore WebRTC, quindi hanno dovuto scoprire l'indirizzo IP del router in un altro modo. Questo può essere fatto con scanner JavaScript come jslanscanner , JSScan , JS-Recon , ma una semplice (ma ampia) raccolta di oggetti incorporati che semplicemente indovinare l'indirizzo del router (ad esempio incorporando un'immagine del router prevista e annotando quando viene caricato con successo). Una volta ottenuto l'indirizzo, puoi indovinare la password (iniziando dall'impostazione predefinita prevista) utilizzando RouterPasswords.com o ignorando l'autenticazione tramite Routerpwn.com .

Come dimostrazione del concetto, la loro dimostrazione ha scoperto l'IP del router, cercato la sua password predefinita, effettuato l'accesso e installato automaticamente il firmware sostitutivo (DD-WRT). Un vero attacco potrebbe avere un numero qualsiasi di funzionalità dannose sul nuovo firmware e potrebbe facilmente far sembrare il sistema di router originale non modificato.

(Certo, questo identifica l'indirizzo IP LAN del router Wi-Fi domestico piuttosto che l'indirizzo IP LAN locale, ma è piuttosto vicino e probabilmente più allarmante.)

    
risposta data 25.07.2015 - 03:54
fonte
6

Molto probabilmente, il tuo browser (o il tuo ISP) sta inviando un'intestazione X-Forwarded-For che rivela il tuo indirizzo IP interno. Controlla un sito come questo per vedere quali intestazioni stai inviando.

    
risposta data 24.07.2015 - 10:46
fonte
3

Il primo dei due link non ha funzionato per me, ma il secondo ha fatto. Visualizzando il codice JavaScript del secondo link, ho scoperto che sta utilizzando window.RTCPeerConnection .

Non tutti i browser supportano RTCPeerConnection , ma in quelli che lo fanno può essere utilizzato per identificare gli indirizzi IP locali del browser. Questa risposta su Stack Overflow fornisce un esempio di come l'API asincrona di RTCPeerConnection può essere utilizzata per trovare un indirizzo IP locale .

    
risposta data 24.07.2015 - 13:43
fonte
1

È probabile che il sito stia ospitando un codice JavaScript in esecuzione sul tuo computer e che trovi il tuo indirizzo interno e lo metta sullo schermo.

Il server remoto non vedrà il tuo indirizzo interno ed è improbabile che venga inoltrato in un'intestazione HTTP.

    
risposta data 24.07.2015 - 10:59
fonte
1

Il protocollo TCP / IP sottostante non rivelerà il tuo indirizzo interno - non è utilizzato per il routing su Internet pubblico e non viene catturato / archiviato nei pacchetti di protocollo stessi al livello 3 man mano che i pacchetti vengono creati da il tuo router perimetrale. Qualsiasi numero di servizi o client che stai utilizzando può divulgare questo nel livello 7 in intestazioni, banner di servizio, ecc.

Il modo definitivo di scoprire che cosa sta perdendo questa informazione è di utilizzare un programma di dumping del traffico di rete sulla rete interna (come wireshark o tcpdump) e controllare il contenuto dei pacchetti al livello 7, cioè il carico utile dei dati, e se il l'indirizzo interno non viene registrato da qualche parte nel carico di dati del tuo cliente, quindi probabilmente verrà dal tuo router perimetrale (anche se è improbabile) e dovrai catturare il traffico di rete sul lato Internet del router da qualche parte per vedere come questo sta succedendo.

    
risposta data 24.07.2015 - 12:05
fonte

Leggi altre domande sui tag