Sicurezza Pokemon GO – Ecco come le mappe e i bot sono tornati di nuovo attivi!
Sicurezza Pokemon Go – Dopo 3 giorni dal rilascio di Pokèmon Go, erano già stati ricavati i sorgenti tramite reverse engineering, e si lavorava già ad un nucleo di API in python per connettersi alle API dei server, e poter quindi creare sia mappe per visualizzare i pokèmon nei dintorni (come PokéVision), sia bot completi (come PidgeyBot).
Con l’ultimo aggiornamento la Niantic ha reso inutilizzabili tutti i software sviluppati su questo principio, ma come?
Il trucco è molto semplice ed era stato preparato fin dall’inizio, solo non era attivo.
Ma la realtà è che questo trucchetto della Niantic è molto basilare e, fra qualche giorno (edit: poche ore), tutte le mappe potrebbero tornare attive, e pure i bot.
Il metodo di Niantic
L’app fino ad ora funzionava così:
Una volta effettuato il login, si crea un AUTH TOKEN di Google, che viene utilizzato per accedere al server di PokèmonGO. Una volta eseguito l’accesso, vengono restituiti molti valori, tra cui il nickname, livello, exp, polvere, lista dei pokèmon ecc..
Tra questi valori, ce n’erano molti che i cracker che hanno creato il fulcro in python non avevano riconosciuto (in quanto non venivano utilizzati o erano inutili ai loro intenti).
Ed ecco che da qualche giorno, uno di questi valori si è scoperto essere una chiave di cifratura simmetrica.
In pratica, il server nel pacchetto iniziale, invia una chiave di cifratura simmetrica, e da quel momento l’app firmerà ogni richiesta API.
Fin qui, non ci sarebbe nessuna sicurezza, in quanto anche il software di terzi potrebbe fare lo stesso.
L’idea di Niantic è stata quella di inserire nell’app un algoritmo che ogni 5 secondi modifica la chiave, e lo stesso farà il server.
Se la chiave del server e di chi accede alle API non sono allineate, vuol dire che ad accedere non è l’app ufficiale ma un software di terzi, che non ha implementato l’algoritmo per ricavare la chiave da quella vecchia.
In pratica risulta che la sicurezza Pokemon Go è molto flebile.
La falla
Questo metodo è davvero basilare e molto semplice da ovviare.
Prima di tutto, è stato scoperto in pochissimo tempo. E’ bastato sniffare i pacchetti per accorgersi che tutto d’un tratto erano stati crittografati, con l’aggiornamento. A quel punto, si è provato ad usare uno di quei valori sconosciuti inviati con l’accettazione della richiesta, precisamente l’Unknown4 che era anche l’unico ad assomigliare ad una chiave di cifratura.
Successivamente si è visto che dopo pochi secondi la comunicazione veniva comunque interrotta. Si è tornati a sniffare i pacchetti decriptandoli con la chiave iniziale, e ci si è accorti che dopo poco la chiave cambiava.
In poche ore di lavoro è stato scoperto il metodo utilizzato da Niantic.
Ora basterà cercare nei sorgenti dell’app la parte di codice che ricava la nuova chiave, ed implementarla. Ci vorrà qualche giorno, ma è comunque fattibile.
Edit 07/08/2016:
Come emerge dalla discussione Reddit principale:
La soluzione sembra essere già stata trovata, ora si attende l’aggiornamento delle mappe e dei bot.
EDIT 07/08/2016:
Molti bot e mappe sono già stati aggiornati e risultano di nuovo online!