Kerberos replay attack

4

Supponiamo di voler inviare un comando a un server di stampa su una rete protetta con Kerberos. Per farlo, autenticarmi al KDC e ottenere un TGT, quindi un altro ticket dal TGS per il server di stampa. Mi autenticano quindi al server di stampa e posso quindi inviarlo un comando di stampa, firmato con la chiave di sessione. Ma supponiamo che qualcuno stia ascoltando sulla rete e annusi il comando che ho inviato, cosa gli impedisce di riprodurlo sul server di stampa e quindi di poter stampare lo stesso file che ho appena stampato durante la stessa sessione (quindi la stessa chiave di sessione)? Una soluzione sarebbe ottenere un nuovo ticket (e quindi una nuova chiave di sessione) dal TGS per ogni comando che invii al server di stampa ma non penso che sia richiesto nel protocollo Kerberos?

    
posta Nimyz 02.03.2015 - 13:54
fonte

1 risposta

4

Questo viene fermato dagli autenticatori. Ogni volta che si presenta un ticket Kerberos, deve essere accompagnato da un autenticatore, che viene crittografato utilizzando la chiave di sessione e contiene (tra le altre informazioni) un timestamp. Il server controlla che il timestamp sia recente (in Kerberos 4, che significa "entro 5 minuti;" in 5, è configurabile, ma 5 minuti è l'impostazione predefinita) e che non ha mai visto quell'autenticatore prima. L'autenticatore fa semplicemente affidamento sulla chiave di sessione, quindi può essere generata dal client; un nuovo autenticatore viene creato ogni volta che si invia un ticket.

Per rispondere "e se usano la stessa sessione", il protocollo di base Kerberos non lo gestisce. Kerberos, al suo interno, autentica l'utente che apre una connessione; non deve fare altro. I protocolli applicativi sono responsabili della gestione della protezione di ulteriori messaggi se ciò è importante; Kerberos fornisce due modi per farlo, oppure può fornire dati dall'autenticazione a qualsiasi sistema utilizzi il protocollo dell'applicazione, ma un protocollo applicativo non deve utilizzare Kerberos a parte l'autenticazione iniziale. Tutto dopo dipende dal protocollo dell'applicazione.

Kerberos ha due opzioni per la comunicazione protetta da Kerberos oltre il messaggio iniziale (una autentica, una crittografa e autentica); un protocollo di applicazione può usarli per proteggere le comunicazioni successive, ma non è necessario. Entrambi utilizzano un timestamp e / o un numero di sequenza per impedire i replay; il numero di sequenza protegge dai messaggi scartati e dal riordino dei messaggi, mentre il timestamp è indulgente se non è un problema (ma impedisce a un utente malintenzionato di ritardare un messaggio, poiché un messaggio ritardato verrà rifiutato), ma entrambi impediscono i replay.

Se si è preoccupati che un utente malintenzionato maneggi il flusso di dati sul server di stampa, è possibile definire il protocollo del server di stampa in modo che utilizzi KRB_SAFE o KRB_PRIV (rispettivamente "autenticarsi solo" o "crittografare e autenticare" ); entrambi proteggono contro i replay. Oppure puoi usare un altro sistema che preleva una chiave di sottosessione dall'autenticatore come una chiave pre-condivisa e ha una protezione di riproduzione; un protocollo TLS-PSK con la chiave della sottosessione come probabilmente funzionerebbe PSK (TLS protegge dagli attacchi di replay). Il punto è che Kerberos non protegge intrinsecamente da quel tipo di replay, perché non dice nulla su come fare il resto della comunicazione; per proteggere dagli attacchi sulla comunicazione post-autenticazione, devi utilizzare% di% co_de Kerberos o KRB_SAFE o utilizzare qualcos'altro che protegge quella comunicazione.

    
risposta data 02.03.2015 - 18:56
fonte

Leggi altre domande sui tag