An adversary can abuse an authentication protocol susceptible to reflection attack in order to defeat it. Doing so allows the adversary illegitimate access to the target system, without possessing the requisite credentials. Reflection attacks are of great concern to authentication protocols that rely on a challenge-handshake or similar mechanism. An adversary can impersonate a legitimate user and can gain illegitimate access to the system by successfully mounting a reflection attack during authentication.
Description
Attack Execution Flow
Step 1
Explore[Identify service with vulnerable handshake authentication] The adversary must first identify a vulnerable authentication protocol. The most common indication of an authentication protocol vulnerable to reflection attack is when the client initiates the handshake, rather than the server. This allows the client to get the server to encrypt targeted data using the server's pre-shared key.
[Identificare il servizio con autenticazione handshake vulnerabile] L'attore malevolo deve prima identificare un protocollo di autenticazione vulnerabile. L'indicazione più comune di un protocollo di autenticazione vulnerabile a attacchi di reflection è quando il client avvia la stretta di mano, anziché il server. Ciò consente al client di indurre il server a cifrare dati mirati utilizzando la chiave precondivisa del server.
Step 2
Experiment[Send challenge to target server] The adversary opens a connection to the target server and sends it a challenge. This challenge is arbitrary and is simply used as a placeholder for the protocol in order to get the server to respond.
[Invio della sfida al server target] L'attore malevolo apre una connessione al server target e gli invia una sfida. Questa sfida è arbitraria e viene semplicemente utilizzata come segnaposto per il protocollo al fine di far rispondere il server.
Step 3
Experiment[Receive server challenge] The server responds by returning the challenge sent encrypted with the server's pre-shared key, as well as its own challenge to the attacker sent in plaintext. We will call this challenge sent by the server 'C'. C is very important and is stored off by the adversary for the next step.
[Ricevi sfida dal server] Il server risponde restituendo la sfida inviata criptata con la chiave precondivisa del server, così come la propria sfida all'attaccante inviata in testo semplice. Denomineremo questa sfida inviata dal server "C". C è molto importante e viene conservata dall'avversario per il passaggio successivo.
Step 4
Experiment[Initiate second handshake] Since the adversary does not possess the pre-shared key, they cannot encrypt C from the previous step in order for the server to authenticate them. To get around this, the adversary initiates a second connection to the server while still keeping the first connection alive. In the second connection, the adversary sends C as the initial client challenge, which rather than being arbitary like the first connection, is very intentional.
[Inizia il secondo handshake] Poiché l'avversario non possiede la chiave pre-condivisa, non può crittografare C dal passaggio precedente affinché il server possa autenticare lui. Per aggirare questa limitazione, l'avversario avvia una seconda connessione al server mantenendo attiva la prima. Nella seconda connessione, l'avversario invia C come sfida iniziale del client, che invece di essere arbitrario come nella prima connessione, è molto intenzionale.
Step 5
Experiment[Receive encrypted challenge] The server treats the intial client challenge in connection two as an arbitrary client challenge and responds by encrypting C with the pre-shared key. The server also sends a new challenge. The adversary ignores the server challenge and stores the encrypted version of C. The second connection is either terminated or left to expire by the adversary as it is no longer needed.
[Ricezione della sfida crittografata] Il server tratta la sfida iniziale del client nella connessione due come una sfida client arbitraria e risponde criptando C con la chiave pre-condivisa. Il server invia anche una nuova sfida. L'attaccante ignora la sfida del server e memorizza la versione crittografata di C. La seconda connessione viene terminata o lasciata scadere dall'attaccante poiché non è più necessaria.
Step 6
ExploitThe adversary now posseses the encrypted version of C that is obtained through connection two. The adversary continues the handshake in connection one by responding to the server with the encrypted version of C, verifying that they have access to the pre-shared key (when they actually do not). Because the server uses the same pre-shared key for all authentication it will decrypt C and authenticate the adversary for the first connection, giving the adversary illegitimate access to the target system.
L'avversario ora possiede la versione crittografata di C ottenuta tramite la connessione due. L'avversario prosegue la stretta di mano nella connessione uno rispondendo al server con la versione crittografata di C, verificando di avere accesso alla chiave pre-condivisa (quando in realtà non ce l'ha). Poiché il server utilizza la stessa chiave pre-condivisa per tutte le autenticazioni, decrypta C e autentica l'avversario per la prima connessione, concedendogli un accesso illegittimo al sistema target.