Decrittografia del traffico TLS

3

Contesto:

Voglio decodificare un protocollo in atto per Nintendo 3DS. L'implementazione tuttavia utilizza TLS, il che rende difficile il reverse engineering. Al momento sono in grado di annusare i pacchetti da / verso il mio 3DS perché ho un router di riserva che viene utilizzato per un "test wifi" che viene eseguito attraverso Ethernet del mio desktop e quindi attraverso la mia scheda wireless desktop per l'attuale Internet.

Cosa ho studiato:

  • MITM
  • Proxy

Blocchi stradali:

  • Non posso forzare il 3DS ad accettare un certificato discutibile.
  • Non riesco a falsificare il certificato.
  • Non tenterò di rubare l'effettiva chiave privata (ho poco interesse per questo una volta che conosco il protocollo).
  • Non riesco a leggere la chiave di sessione dalla RAM della mia console, a causa della mancanza di hardware.

Soluzione potenziale:

  • Sono quasi sicuro al 100% che il protocollo sia una qualche forma di HTTP (probabilmente attraverso le intestazioni, principalmente). Quindi, se la crittografia è basata su XOR, potrei riuscire a ottenere una parte della chiave, almeno? Non so molto sulla crittografia.
  • Ho pensato di configurare un proxy, un'istanza del server CA [e puntare il file host del mio desktop su questa istanza del server], installare il certificato di Nintendo e poi sovrascrivere la chiave pubblica con la mia chiave privata, e quindi usare il mio 3DS certificato sul proxy per comunicare con Nintendo. Non sono certo che questo funzionerà, perché onestamente non ho una comprensione completa su come TSL funzioni oltre a ciò che non è qualcosa che puoi rompere facilmente.
  • La forza bruta è un'opzione valida se sono in grado di generare più dati crittografati?

tl; dr- C'è un modo per decifrare questi dati senza la chiave privata del server, o cracking nella RAM per trovare la chiave di sessione? Ho il certificato del server e il certificato del mio cliente 3DS.

    
posta Full Metal 29.10.2014 - 07:27
fonte

2 risposte

3

Se Nintendo non ha compromesso le cose, allora non ci riuscirai. Il protocollo TLS si intende precisamente per impedire l'ispezione e l'alterazione dall'esterno.

Se vuoi saperne di più su TLS (noto anche come SSL), leggi questa risposta come un passaggio. Ci sono principalmente quattro modi attraverso i quali potresti sperare di decodificare il protocollo:

  1. Prova a fare in modo che Nintendo 3DS accetti un certificato server falso. Questa è l'essenza della risposta di @ MrSec: in genere, i client TLS convalidano il certificato del server rispetto a un set di "CA attendibile" installato nel client. Se è possibile aggiungere la propria CA in quel set, è possibile creare certificati falsi accettati dal client.

  2. Verifica se l'implementazione di Nintendo è suscettibile a uno dei attacchi noti su TLS . Dopotutto, gli aggiornamenti del firmware della console tendono ad essere più rari rispetto alle correzioni su computer di uso generale, quindi alcune vulnerabilità potrebbero ancora nascondersi. Sul lato positivo, imparerai molto sulla crittografia se scegli quel percorso e avrai successo.

  3. Forse la console può essere convinta di eseguire lo stesso protocollo senza TLS, in alcune situazioni "anormali". Molti software implementati hanno una modalità di debug nascosta che indugia perché i team di sviluppo hanno dimenticato di rimuoverlo durante la "produzione".

  4. Fai qualcos'altro. Ad esempio, la console si connette a un server esterno; potresti voler connetterti a quel server dal tuo PC e elaborare i dettagli del protocollo in base a ciò che il server risponde, senza implicare affatto la console.

Ovviamente, l'accesso alla RAM, o almeno al codice eseguito dalla console (l'implementazione del protocollo), sarebbe molto più semplice. Si noti che non esiste necessariamente alcuna "chiave privata" per rubare dalla console. In TLS, il certificato e la chiave privata sono normalmente sul lato server.

    
risposta data 29.10.2014 - 13:51
fonte
3

È possibile installare un certificato CA su 3DS? In tal caso, potrebbe funzionare:

Se il dispositivo implementa Pinning , ciò non funzionerà. In quel caso il tuo progetto potrebbe essere un pò condannato.

Se risulta non essere HTTP, puoi provare un attacco MiTM completo, che comporta la creazione di una CA falsa, usando mitmproxy e instradare tutto il traffico dal 3ds attraverso di esso.

    
risposta data 29.10.2014 - 08:14
fonte