Guida Guida completa all'anonimato - Parte 2

Stato
Discussione chiusa ad ulteriori risposte.

WarCrimeLover69

Utente Emerald
3 Maggio 2012
580
61
305
483
Introduzione

Dopo un primo accenno alle basi della navigazione ed all'unicità di un client all'interno della rete, ho deciso di parlare di tutti i fattori tramite i quali un client viene identificato oltre all'indirizzo IP (di cui ho parlato nella parte precedente), partiremo dai fattori di identificazione locali fino ad arrivare a quelli online

Fattori di identificazione

Locale
Il primo fattore identificativo da cui tenere conto in una connessione locale (quindi tra il tuo pc ed il router) è sicuramente il Mac Address, di cui ho parlato nel capitolo precedente, questo indirizzo non verrà mai comunicato al di fuori della vostra connessione locale ed identifica il vostro adattatore di rete, quindi, comprando un pc usato (non rivelando l'identità al venditore) nessuno potrà mai arrivare al nostro adattatore. Comprare un PC od una scheda di rete usata non è per forza la soluzione migliore, l'indirizzo Mac può essere di fatti cambiato temporaneamente, questa tecnica viene chiamata Mac Address Spoofing, in base al vostro sistema operativo ci sono più tecniche, di solito si può fare tranquillamente da terminale (un esempio classico di mac address spoofato è 00:11:22:33:44:55)

Sempre parlando di connessione locale, oltre al mac address comunichiamo anche l'hostname del nostro pc, quindi il nostro nome utente, potrebbe essere "Alberto-PC" o "iPhone di Chiara" e così via, in termini di identificazione non è per forza così grave lasciare il nome del proprio PC (salvo che abbiamo il nostro cognome al suo interno), ma, come già spiegato nel capitolo precedente, quante persone che si chiamano Alberto ci sono in Italia? E quante vivono abbastanza vicino a casa mia da poter usufruire del mio PC? Oppure, quante lavorano nel mio ufficio (Presupponendo che qualcuno dell'ufficio ha visitato un sito nella blacklist con mac address spoofato)?

Remota

Nelle connessioni remote invece il 'gioco' si fa più complicato, o meglio, non sarebbe così tanto più complicato, inviamo e riceviamo pacchetti contenenti una porta (ex 80 per il web), il protocollo usato (TCP,UDP), un indirizzo di origine ed uno di destinazione, infine i dati da trasmettere... ma, soprattutto quando ci colleghiamo ad un sito web o ancora peggio quando apriamo un'applicazione di cui non abbiamo la sorgente (o non l'abbiamo controllata), non possiamo sapere cosa contengano quei dati. Vi faccio un esempio, apriamo un applicazione x sotto vpn prendendo tutte le accortezze possibili, questa applicazione potrebbe tranquillamente leggere l'indirizzo mac del router a cui siamo connessi ed inviarlo ad un server remoto, così come il nostro. Purtroppo in questi casi non possiamo fare molto, se non reversare l'applicazione e capire cosa va a leggere, un consiglio generale è comunque quello di non aprire nessuna applicazione dove sia stato salvato qualche login automatico (ad esempio steam), cercando di evitare di non aprire in generale nessun applicativo di cui non conosciamo il contenuto (che si collega in rete).​

Ma parliamo piuttosto del browser, durante una normale navigazione si aggiungono fattori che non sono necessari per altri tipi di connessioni, per esempio lo user-agent, che comunica il browser che stiamo usando, assieme alla versione ed al sistema operativo in uso.. Calcolando che ci sono solo 5 browser considerabili 'principali' (Firefox, Chrome, Opera, Edge e Safari), usati in percentuali che non conosco al momento, anche solo usare il browser che usiamo di solito è sbagliato, per il semplice fatto che favorisce la nostra identificazione, come già detto bisogna cercare di fingere un'appartenze ad una cerchia di utenti a cui in realtà non ci avviciniamo nemmeno.

Altro fattore importante e presente in tutte le richieste è l'Accept-Language, consiste semplicemente nelle lingue preferite dal nostro browser, così a primo impatto può sembrare una cosa da poco, ma non va sottovalutata, da quello si può capire la nostra nazionalità, e, pur quanto non siamo proprio 4 gatti in Italia, si restringe il campo di ricerca. Ci sono anche Accept, Accept-Encoding e, nei siti dinamici, la risoluzione dello schermo

Questi erano i fattori onnipresenti nelle richieste rilevanti la navigazione web, passiamo adesso ad altri fattori identificativi che i siti più usati usano.

HTML5 Fingerprint, penso sia uno tra i più infami, il modo in cui funziona è un po' complicato da spiegare, l'HTML5 Fingerprint cambia principalmente in base a browser, sistema operativo e scheda grafica.. Vi starete domandando probabilmente, data l'esistenza dello user-agent, come mai la semplice aggiunta del modello di scheda grafica possa fare così tanto la differenza, beh, non è solo quello: Ormai cambiare user-agent è una tecnica usata in modo sempre più frequente, non è difficile farlo,
ci sono mille estensioni che permetto di cambiarlo, ma l'htm5 fingerprint (o canvas fingerprint) è un elemento spesso tralasciato da molti, che tra l'altro, anche se venisse alterato, ci renderebbe ancora più unici, così come se durante una sessione continuasse a cambiare, l'unica soluzione è usare un plugin che ti permetta di cambiarlo quando vuoi tu, in modo da effettuare cambi solo se necessari

DNS Leaks, questi sono abbastanza particolari, al giorno d'oggi quasi tutte le vpn riescono a fermarli, ma, per la cronaca, vi spiego ugualmente come funzionano: Spesso (al tempo) le VPN permettevano comunque all'interfaccia locale (fuori dalla vpn) di inviare e ricevere pacchetti e le richieste DNS venivano inviate senza VPN, ciò significa che il nostro ISP poteva sapere quali siti visitavamo (senza però conoscere il contenuto della nostra sessione)

WebRTC Leaks, in sostanza il WebRTC permette le connessioni RTC all'interno del browser (peer-to-peer), tramite questa API Javascript un sito web può conoscere il nostro indirizzo IP locale, quindi quello che ci offre il nostro Router tramite DHCP. Potrebbe sembrare una cosa da poco ma, nel caso della connessione 3g del telefono (come qualsiasi altra tecnologia che sfrutta delle celle alle quali possiamo collegarci senza fili), l'IP remoto sarà quello della cella, quindi per scoprire la nostra identità andrebbe chiesto al provider (ISP) di controllare le connessioni all'interno di una determinata cella che puntassero al server che ha fatto la richiesta, mentre, sapendo il nostro indirizzo ip locale, basta fornire un orario e si può sapere chi aveva ottenuto quell'IP a quella determinata ora.

C'è veramente tanto di cui parlare ma per adesso mi fermo qui, alla prossima :D

 
Introduzione

Dopo un primo accenno alle basi della navigazione ed all'unicità di un client all'interno della rete, ho deciso di parlare di tutti i fattori tramite i quali un client viene identificato oltre all'indirizzo IP (di cui ho parlato nella parte precedente), partiremo dai fattori di identificazione locali fino ad arrivare a quelli online

Fattori di identificazione

Locale
Il primo fattore identificativo da cui tenere conto in una connessione locale (quindi tra il tuo pc ed il router) è sicuramente il Mac Address, di cui ho parlato nel capitolo precedente, questo indirizzo non verrà mai comunicato al di fuori della vostra connessione locale ed identifica il vostro adattatore di rete, quindi, comprando un pc usato (non rivelando l'identità al venditore) nessuno potrà mai arrivare al nostro adattatore. Comprare un PC od una scheda di rete usata non è per forza la soluzione migliore, l'indirizzo Mac può essere di fatti cambiato temporaneamente, questa tecnica viene chiamata Mac Address Spoofing, in base al vostro sistema operativo ci sono più tecniche, di solito si può fare tranquillamente da terminale (un esempio classico di mac address spoofato è 00:11:22:33:44:55)

Sempre parlando di connessione locale, oltre al mac address comunichiamo anche l'hostname del nostro pc, quindi il nostro nome utente, potrebbe essere "Alberto-PC" o "iPhone di Chiara" e così via, in termini di identificazione non è per forza così grave lasciare il nome del proprio PC (salvo che abbiamo il nostro cognome al suo interno), ma, come già spiegato nel capitolo precedente, quante persone che si chiamano Alberto ci sono in Italia? E quante vivono abbastanza vicino a casa mia da poter usufruire del mio PC? Oppure, quante lavorano nel mio ufficio (Presupponendo che qualcuno dell'ufficio ha visitato un sito nella blacklist con mac address spoofato)?

Remota

Nelle connessioni remote invece il 'gioco' si fa più complicato, o meglio, non sarebbe così tanto più complicato, inviamo e riceviamo pacchetti contenenti una porta (ex 80 per il web), il protocollo usato (TCP,UDP), un indirizzo di origine ed uno di destinazione, infine i dati da trasmettere... ma, soprattutto quando ci colleghiamo ad un sito web o ancora peggio quando apriamo un'applicazione di cui non abbiamo la sorgente (o non l'abbiamo controllata), non possiamo sapere cosa contengano quei dati. Vi faccio un esempio, apriamo un applicazione x sotto vpn prendendo tutte le accortezze possibili, questa applicazione potrebbe tranquillamente leggere l'indirizzo mac del router a cui siamo connessi ed inviarlo ad un server remoto, così come il nostro. Purtroppo in questi casi non possiamo fare molto, se non reversare l'applicazione e capire cosa va a leggere, un consiglio generale è comunque quello di non aprire nessuna applicazione dove sia stato salvato qualche login automatico (ad esempio steam), cercando di evitare di non aprire in generale nessun applicativo di cui non conosciamo il contenuto (che si collega in rete).​

Ma parliamo piuttosto del browser, durante una normale navigazione si aggiungono fattori che non sono necessari per altri tipi di connessioni, per esempio lo user-agent, che comunica il browser che stiamo usando, assieme alla versione ed al sistema operativo in uso.. Calcolando che ci sono solo 5 browser considerabili 'principali' (Firefox, Chrome, Opera, Edge e Safari), usati in percentuali che non conosco al momento, anche solo usare il browser che usiamo di solito è sbagliato, per il semplice fatto che favorisce la nostra identificazione, come già detto bisogna cercare di fingere un'appartenze ad una cerchia di utenti a cui in realtà non ci avviciniamo nemmeno.

Altro fattore importante e presente in tutte le richieste è l'Accept-Language, consiste semplicemente nelle lingue preferite dal nostro browser, così a primo impatto può sembrare una cosa da poco, ma non va sottovalutata, da quello si può capire la nostra nazionalità, e, pur quanto non siamo proprio 4 gatti in Italia, si restringe il campo di ricerca. Ci sono anche Accept, Accept-Encoding e, nei siti dinamici, la risoluzione dello schermo

Questi erano i fattori onnipresenti nelle richieste rilevanti la navigazione web, passiamo adesso ad altri fattori identificativi che i siti più usati usano.

HTML5 Fingerprint, penso sia uno tra i più infami, il modo in cui funziona è un po' complicato da spiegare, l'HTML5 Fingerprint cambia principalmente in base a browser, sistema operativo e scheda grafica.. Vi starete domandando probabilmente, data l'esistenza dello user-agent, come mai la semplice aggiunta del modello di scheda grafica possa fare così tanto la differenza, beh, non è solo quello: Ormai cambiare user-agent è una tecnica usata in modo sempre più frequente, non è difficile farlo,
ci sono mille estensioni che permetto di cambiarlo, ma l'htm5 fingerprint (o canvas fingerprint) è un elemento spesso tralasciato da molti, che tra l'altro, anche se venisse alterato, ci renderebbe ancora più unici, così come se durante una sessione continuasse a cambiare, l'unica soluzione è usare un plugin che ti permetta di cambiarlo quando vuoi tu, in modo da effettuare cambi solo se necessari

DNS Leaks, questi sono abbastanza particolari, al giorno d'oggi quasi tutte le vpn riescono a fermarli, ma, per la cronaca, vi spiego ugualmente come funzionano: Spesso (al tempo) le VPN permettevano comunque all'interfaccia locale (fuori dalla vpn) di inviare e ricevere pacchetti e le richieste DNS venivano inviate senza VPN, ciò significa che il nostro ISP poteva sapere quali siti visitavamo (senza però conoscere il contenuto della nostra sessione)

WebRTC Leaks, in sostanza il WebRTC permette le connessioni RTC all'interno del browser (peer-to-peer), tramite questa API Javascript un sito web può conoscere il nostro indirizzo IP locale, quindi quello che ci offre il nostro Router tramite DHCP. Potrebbe sembrare una cosa da poco ma, nel caso della connessione 3g del telefono (come qualsiasi altra tecnologia che sfrutta delle celle alle quali possiamo collegarci senza fili), l'IP remoto sarà quello della cella, quindi per scoprire la nostra identità andrebbe chiesto al provider (ISP) di controllare le connessioni all'interno di una determinata cella che puntassero al server che ha fatto la richiesta, mentre, sapendo il nostro indirizzo ip locale, basta fornire un orario e si può sapere chi aveva ottenuto quell'IP a quella determinata ora.

C'è veramente tanto di cui parlare ma per adesso mi fermo qui, alla prossima :D



Bella guida.

Io però ho una domanda cattiva :rulzz:
Premesso che non so nulla del linguaggio JavaScript con cui da quel che so vengono sviluppate le app per android...
come facciamo a sapere se l'app o anche un software x PC comunica durante la sua esecuzione trasmettendo i nostri dati sensibili all'esterno ?
forse non è necessario conoscere i linguaggi di programmazione a menadito, magari si può cercare una parola chiave...
tipo il Mac Address che viene spifferato all'esterno dovrà avere una sua dicitura..
Però non ho manco idea di come si possa mettere a nudo un app o programma per leggerne la struttura :\
 
  • Mi piace
Reazioni: tia2310
Bella guida.

Io però ho una domanda cattiva :rulzz:
Premesso che non so nulla del linguaggio JavaScript con cui da quel che so vengono sviluppate le app per android...
come facciamo a sapere se l'app o anche un software x PC comunica durante la sua esecuzione trasmettendo i nostri dati sensibili all'esterno ?
forse non è necessario conoscere i linguaggi di programmazione a menadito, magari si può cercare una parola chiave...
tipo il Mac Address che viene spifferato all'esterno dovrà avere una sua dicitura..
Però non ho manco idea di come si possa mettere a nudo un app o programma per leggerne la struttura :\
Di solito javascript si usa per la programmazione web client site (quindi codice eseguito direttamente dal browser), per le app android si usa Java (che sono due cose diverse), per quanto riguarda le app android è abbastanza facile, di solito non ci sono offuscamenti quindi basta convertire l'apk in formato jar ed aprirlo con jdgui. Per gli applicativi su PC, se scritti in C/C++, te ne devi intendere di reversing, oppure puoi provare a monitorare il traffico con wireshark, ma in caso le connessione fossero criptate tramite SSL (Https) non puoi fare molto se non constatare l'eventuale presenza e la destinazione dei pacchetti
 
  • Mi piace
Reazioni: ^Erika^
Ultima modifica:
Di solito javascript si usa per la programmazione web client site (quindi codice eseguito direttamente dal browser), per le app android si usa Java (che sono due cose diverse), per quanto riguarda le app android è abbastanza facile, di solito non ci sono offuscamenti quindi basta convertire l'apk in formato jar ed aprirlo con jdgui. Per gli applicativi su PC, se scritti in C/C++, te ne devi intendere di reversing, oppure puoi provare a monitorare il traffico con wireshark, ma in caso le connessione fossero criptate tramite SSL (Https) non puoi fare molto se non constatare l'eventuale presenza e la destinazione dei pacchetti

cioè dici che anche il fatto che l'app carpisca il Mac Address è nascondibile dall'app stessa ??!?! :cucu:
mmm...
io come dicevo non ne so molto, ma ad esempio il mac adress può essere letto (credo) in specifici files che col telefono roottato vedi di sicuro. Però quei files possono essere modificati. Quello che non si può cambiare è la fonte originale del Mac Address. Non ho mai capito come funziona esattamente, so che il Mac Address è scritto sulla scheda, e questo dato viene riportato nei files che le app di spoofing modificano (credo).
Quindi in teoria non è possibile per un app intercettare la comunicazione del Mac che avviene dalla scheda ai files, può solo leggere i files.
Ecco, se lo fa come può nascondermelo ? Intendi che c'è una specie di cifratura della comunicazione sbloccabile solo con password stabilità dal creatore dell'app ???
 
cioè dici che anche il fatto che l'app carpisca il Mac Address è nascondibile dall'app stessa ??!?! :cucu:
mmm...
io come dicevo non ne so molto, ma ad esempio il mac adress può essere letto (credo) in specifici files che col telefono roottato vedi di sicuro. Però quei files possono essere modificati. Quello che non si può cambiare è la fonte originale del Mac Address. Non ho mai capito come funziona esattamente, so che il Mac Address è scritto sulla scheda, e questo dato viene riportato nei files che le app di spoofing modificano (credo).
Quindi in teoria non è possibile per un app intercettare la comunicazione del Mac che avviene dalla scheda ai files, può solo leggere i files.
Ecco, se lo fa come può nascondermelo ? Intendi che c'è una specie di cifratura della comunicazione sbloccabile solo con password stabilità dal creatore dell'app ???
Il mac address solitamente è scritto dentro una piccola memoria integrata nella scheda di rete, il sistema operativo legge l'indirizzo e lo tiene in memoria (a quanto ne so senza salvarlo da nessuna parte), in base al linguaggio di programmazione ed al sistema operativo in uso, ci sono varie librerie (preinstallate solitamente) che permettono di leggerlo dalla memoria. Questo indirizzo può essere modificato temporaneamente cambiando il valore salvato all'interno del sistema operativo, solo che al riavvio il mac address tornerà ad essere quello scritto nella memoria flash della scheda di rete, quindi, anche se un'app dovesse leggerlo, leggerebbe il mac address spoofato.

Detto questo, cambiare mac address è una cosa che non sempre ci si ricorda di fare (anche perchè in molti casi è ''''inutile'''') e potrebbe non essere l'unico valore usato per identificarvi (potrebbe leggere i componenti hardware, lo username, etc...), quindi è sempre meglio non aprire applicativi dal comportamento sconosciuto.

Per quanto riguarda invece il 'nascondere' la lettura del mac address, non è possibile fare in modo che sia impossibile scoprire la sua lettura, è invece possibile complicare il lavoro di reversing tramite offuscatori, crypter, PE injection e tutte le varie tecniche anti-reversing
 
  • Mi piace
Reazioni: ~Wintersmok
Il mac address solitamente è scritto dentro una piccola memoria integrata nella scheda di rete, il sistema operativo legge l'indirizzo e lo tiene in memoria (a quanto ne so senza salvarlo da nessuna parte), in base al linguaggio di programmazione ed al sistema operativo in uso, ci sono varie librerie (preinstallate solitamente) che permettono di leggerlo dalla memoria. Questo indirizzo può essere modificato temporaneamente cambiando il valore salvato all'interno del sistema operativo, solo che al riavvio il mac address tornerà ad essere quello scritto nella memoria flash della scheda di rete, quindi, anche se un'app dovesse leggerlo, leggerebbe il mac address spoofato.

Detto questo, cambiare mac address è una cosa che non sempre ci si ricorda di fare (anche perchè in molti casi è ''''inutile'''') e potrebbe non essere l'unico valore usato per identificarvi (potrebbe leggere i componenti hardware, lo username, etc...), quindi è sempre meglio non aprire applicativi dal comportamento sconosciuto.

Per quanto riguarda invece il 'nascondere' la lettura del mac address, non è possibile fare in modo che sia impossibile scoprire la sua lettura, è invece possibile complicare il lavoro di reversing tramite offuscatori, crypter, PE injection e tutte le varie tecniche anti-reversing

Prendiamo ad esempio la app più sanguisuga e infida che esiste: l'app di facebook :asdangel:
sicuramente legge il modello del telefono.
Io sono certissima che legge anche la Mac Address. Ne avrei prova se riuscissi a leggere la struttura dell'app cercando la stringa apposita. Ma non so come si fa :coniglio:
 
Il mac address solitamente è scritto dentro una piccola memoria integrata nella scheda di rete, il sistema operativo legge l'indirizzo e lo tiene in memoria (a quanto ne so senza salvarlo da nessuna parte), in base al linguaggio di programmazione ed al sistema operativo in uso, ci sono varie librerie (preinstallate solitamente) che permettono di leggerlo dalla memoria. Questo indirizzo può essere modificato temporaneamente cambiando il valore salvato all'interno del sistema operativo, solo che al riavvio il mac address tornerà ad essere quello scritto nella memoria flash della scheda di rete, quindi, anche se un'app dovesse leggerlo, leggerebbe il mac address spoofato.

Detto questo, cambiare mac address è una cosa che non sempre ci si ricorda di fare (anche perchè in molti casi è ''''inutile'''') e potrebbe non essere l'unico valore usato per identificarvi (potrebbe leggere i componenti hardware, lo username, etc...), quindi è sempre meglio non aprire applicativi dal comportamento sconosciuto.

Per quanto riguarda invece il 'nascondere' la lettura del mac address, non è possibile fare in modo che sia impossibile scoprire la sua lettura, è invece possibile complicare il lavoro di reversing tramite offuscatori, crypter, PE injection e tutte le varie tecniche anti-reversing

Prendiamo ad esempio la app più sanguisuga e infida che esiste: l'app di facebook :asdangel:
sicuramente legge il modello del telefono.
Io sono certissima che legge anche la Mac Address. Ne avrei prova se riuscissi a leggere la struttura dell'app cercando la stringa apposita. Ma non so come si fa :coniglio:
Sono informazioni che di default vengono lette dalle applicazioni come i social network
 
  • Mi piace
Reazioni: ^Erika^
Letto tutto d'un solo fiato, è scritto bene ed è tutto chiaro! Tempo permettendo (per te intendo) spero escano presto le nuove edizioni!!!!
 
cioè dici che anche il fatto che l'app carpisca il Mac Address è nascondibile dall'app stessa ??!?! :cucu:
mmm...
io come dicevo non ne so molto, ma ad esempio il mac adress può essere letto (credo) in specifici files che col telefono roottato vedi di sicuro. Però quei files possono essere modificati. Quello che non si può cambiare è la fonte originale del Mac Address. Non ho mai capito come funziona esattamente, so che il Mac Address è scritto sulla scheda, e questo dato viene riportato nei files che le app di spoofing modificano (credo).
Quindi in teoria non è possibile per un app intercettare la comunicazione del Mac che avviene dalla scheda ai files, può solo leggere i files.
Ecco, se lo fa come può nascondermelo ? Intendi che c'è una specie di cifratura della comunicazione sbloccabile solo con password stabilità dal creatore dell'app ???
basta scaricare l'app di mac spoofing per cambiare il mac address, io la usavo sempre. ovviamente con root
 
basta scaricare l'app di mac spoofing per cambiare il mac address, io la usavo sempre. ovviamente con root
Sì però come ho già detto, potrebbe non essere l'unico valore usato per identificarti, ci sono mille fattori da poter utilizzare per l'identificazione, poi sul telefono hai molto meno controllo sul sistema operativo rispetto che su altri dispositivi
 
  • Mi piace
Reazioni: morpheus257
...mettici pure che il telefono fa check continuo di tutti i servizi della grande G che ci sono installati, a meno che tu non prenda un device utilizzato solo per quello, quindi pulito...inoltre nel telefono hai anche l'IMEI, penso che sia rintracciabile da web anche se non hai una sim inserita, ma potrei anche sbagliare!
 
  • Mi piace
Reazioni: WarCrimeLover69
...mettici pure che il telefono fa check continuo di tutti i servizi della grande G che ci sono installati, a meno che tu non prenda un device utilizzato solo per quello, quindi pulito...inoltre nel telefono hai anche l'IMEI, penso che sia rintracciabile da web anche se non hai una sim inserita, ma potrei anche sbagliare!
L'IMEI non lo passi sul web, bensì alla cella (e probabilmente anche a google/apple quando controlla se il telefono è bloccato durante l'iniziazione) comunque sì servizi google/apple che fanno check continui sono un problema, detto questo è sconsigliato usare un telefono se si vuole restare anonimi
 
  • Mi piace
Reazioni: morpheus257
Introduzione

Dopo un primo accenno alle basi della navigazione ed all'unicità di un client all'interno della rete, ho deciso di parlare di tutti i fattori tramite i quali un client viene identificato oltre all'indirizzo IP (di cui ho parlato nella parte precedente), partiremo dai fattori di identificazione locali fino ad arrivare a quelli online

Fattori di identificazione

Locale
Il primo fattore identificativo da cui tenere conto in una connessione locale (quindi tra il tuo pc ed il router) è sicuramente il Mac Address, di cui ho parlato nel capitolo precedente, questo indirizzo non verrà mai comunicato al di fuori della vostra connessione locale ed identifica il vostro adattatore di rete, quindi, comprando un pc usato (non rivelando l'identità al venditore) nessuno potrà mai arrivare al nostro adattatore. Comprare un PC od una scheda di rete usata non è per forza la soluzione migliore, l'indirizzo Mac può essere di fatti cambiato temporaneamente, questa tecnica viene chiamata Mac Address Spoofing, in base al vostro sistema operativo ci sono più tecniche, di solito si può fare tranquillamente da terminale (un esempio classico di mac address spoofato è 00:11:22:33:44:55)

Sempre parlando di connessione locale, oltre al mac address comunichiamo anche l'hostname del nostro pc, quindi il nostro nome utente, potrebbe essere "Alberto-PC" o "iPhone di Chiara" e così via, in termini di identificazione non è per forza così grave lasciare il nome del proprio PC (salvo che abbiamo il nostro cognome al suo interno), ma, come già spiegato nel capitolo precedente, quante persone che si chiamano Alberto ci sono in Italia? E quante vivono abbastanza vicino a casa mia da poter usufruire del mio PC? Oppure, quante lavorano nel mio ufficio (Presupponendo che qualcuno dell'ufficio ha visitato un sito nella blacklist con mac address spoofato)?

Remota

Nelle connessioni remote invece il 'gioco' si fa più complicato, o meglio, non sarebbe così tanto più complicato, inviamo e riceviamo pacchetti contenenti una porta (ex 80 per il web), il protocollo usato (TCP,UDP), un indirizzo di origine ed uno di destinazione, infine i dati da trasmettere... ma, soprattutto quando ci colleghiamo ad un sito web o ancora peggio quando apriamo un'applicazione di cui non abbiamo la sorgente (o non l'abbiamo controllata), non possiamo sapere cosa contengano quei dati. Vi faccio un esempio, apriamo un applicazione x sotto vpn prendendo tutte le accortezze possibili, questa applicazione potrebbe tranquillamente leggere l'indirizzo mac del router a cui siamo connessi ed inviarlo ad un server remoto, così come il nostro. Purtroppo in questi casi non possiamo fare molto, se non reversare l'applicazione e capire cosa va a leggere, un consiglio generale è comunque quello di non aprire nessuna applicazione dove sia stato salvato qualche login automatico (ad esempio steam), cercando di evitare di non aprire in generale nessun applicativo di cui non conosciamo il contenuto (che si collega in rete).

Ma parliamo piuttosto del browser, durante una normale navigazione si aggiungono fattori che non sono necessari per altri tipi di connessioni, per esempio lo user-agent, che comunica il browser che stiamo usando, assieme alla versione ed al sistema operativo in uso.. Calcolando che ci sono solo 5 browser considerabili 'principali' (Firefox, Chrome, Opera, Edge e Safari), usati in percentuali che non conosco al momento, anche solo usare il browser che usiamo di solito è sbagliato, per il semplice fatto che favorisce la nostra identificazione, come già detto bisogna cercare di fingere un'appartenze ad una cerchia di utenti a cui in realtà non ci avviciniamo nemmeno.

Altro fattore importante e presente in tutte le richieste è l'Accept-Language, consiste semplicemente nelle lingue preferite dal nostro browser, così a primo impatto può sembrare una cosa da poco, ma non va sottovalutata, da quello si può capire la nostra nazionalità, e, pur quanto non siamo proprio 4 gatti in Italia, si restringe il campo di ricerca. Ci sono anche Accept, Accept-Encoding e, nei siti dinamici, la risoluzione dello schermo

Questi erano i fattori onnipresenti nelle richieste rilevanti la navigazione web, passiamo adesso ad altri fattori identificativi che i siti più usati usano.

HTML5 Fingerprint, penso sia uno tra i più infami, il modo in cui funziona è un po' complicato da spiegare, l'HTML5 Fingerprint cambia principalmente in base a browser, sistema operativo e scheda grafica.. Vi starete domandando probabilmente, data l'esistenza dello user-agent, come mai la semplice aggiunta del modello di scheda grafica possa fare così tanto la differenza, beh, non è solo quello: Ormai cambiare user-agent è una tecnica usata in modo sempre più frequente, non è difficile farlo,
ci sono mille estensioni che permetto di cambiarlo, ma l'htm5 fingerprint (o canvas fingerprint) è un elemento spesso tralasciato da molti, che tra l'altro, anche se venisse alterato, ci renderebbe ancora più unici, così come se durante una sessione continuasse a cambiare, l'unica soluzione è usare un plugin che ti permetta di cambiarlo quando vuoi tu, in modo da effettuare cambi solo se necessari

DNS Leaks, questi sono abbastanza particolari, al giorno d'oggi quasi tutte le vpn riescono a fermarli, ma, per la cronaca, vi spiego ugualmente come funzionano: Spesso (al tempo) le VPN permettevano comunque all'interfaccia locale (fuori dalla vpn) di inviare e ricevere pacchetti e le richieste DNS venivano inviate senza VPN, ciò significa che il nostro ISP poteva sapere quali siti visitavamo (senza però conoscere il contenuto della nostra sessione)

WebRTC Leaks, in sostanza il WebRTC permette le connessioni RTC all'interno del browser (peer-to-peer), tramite questa API Javascript un sito web può conoscere il nostro indirizzo IP locale, quindi quello che ci offre il nostro Router tramite DHCP. Potrebbe sembrare una cosa da poco ma, nel caso della connessione 3g del telefono (come qualsiasi altra tecnologia che sfrutta delle celle alle quali possiamo collegarci senza fili), l'IP remoto sarà quello della cella, quindi per scoprire la nostra identità andrebbe chiesto al provider llissima(ISP) di controllare le connessioni all'interno di una determinata cella che puntassero al server che ha fatto la richiesta, mentre, sapendo il nostro indirizzo ip locale, basta fornire un orario e si può sapere chi aveva ottenuto quell'IP a quella determinata ora.

C'è veramente tanto di cui parlare ma per adesso mi fermo qui, alla prossima :D

Una bella guida, una lettura davvero interessante.
 
Stato
Discussione chiusa ad ulteriori risposte.