È possibile che un utente malintenzionato modifichi il contenuto dei miei messaggi di posta elettronica inviati prima dell'arrivo?

2

Ho un'applicazione web che invia "change password link" all'utente che vuole modificare la sua password.

Il collegamento è qualcosa di simile a questo:

http:// www.my-domain.com/changepass?uid=username&secretkey=some-hardly-encoded-secure-key

È possibile modificare il contenuto della mia e-mail prima dell'arrivo? Ho uno scenario nella mia mente, ma non ne so nulla sulla possibilità di farlo.

  1. L'attaccante riceve la mia email inviata prima del destinatario
  2. L'attaccante cambia il link all'interno della mia email a qualcosa di simile a questo:

http:// www.attackers-domain.com/changepass?uid=username&secretkey=some-hardly-encoded-secure-key

  1. Attacker Invia l'e-mail al destinatario (l'utente originale)
  2. L'utente fa clic sul link sbagliato all'interno della posta elettronica e va nel posto sbagliato per cambiare la sua password
  3. L'utente inserisce la sua nuova password nel sito degli attaccanti
  4. Il sito degli attaccanti invia una nuova password usando il protocollo corretto per me e cambia la password degli utenti

e ora:

  1. L'utente non sa nulla dell'attacco
  2. L'attaccante ha una nuova password per gli utenti
posta S.Yavari 08.01.2014 - 14:46
fonte

5 risposte

6

È possibile, ma richiede un attacco relativamente sofisticato. L'e-mail è generalmente insicura. Esistono protocolli sicuri per lo scambio di e-mail, ma in realtà pochissimi server lo utilizzano.

Se l'attaccante è in grado di eseguire ciò che è noto come un uomo nell'attacco centrale, potrebbe cambiare qualsiasi cosa volesse riguardo all'e-mail. Un uomo nell'attacco di mezzo richiede di avere il controllo su parte del percorso della posta elettronica dal mittente al destinatario. Questo potrebbe essere il server di posta di invio o di ricezione, il client di posta elettronica dell'utente o qualsiasi router Internet che l'e-mail riesce a trasmettere lungo il suo percorso.

Se l'attaccante può mettersi in mezzo, è banale da regolare, ma è relativamente difficile entrare nel mezzo a meno che non siano un hacker relativamente affermato con una discreta quantità di risorse a loro disposizione.

Nel tuo caso, la contromisura più semplice è l'uso di un link basato su HTTPS. Se si utilizza SSL e l'utente si preoccupa di verificare che l'URL corrisponda al proprio sito, lo scenario di attacco non funziona. Potresti anche dire loro il dominio a cui il link andrà quando scelgono di reimpostare la password, in questo modo sanno se è valida. Questa è probabilmente la soluzione più semplice.

    
risposta data 08.01.2014 - 15:09
fonte
2

La possibilità che descrivi esiste; come altri hanno notato, è un "uomo in mezzo all'attacco".

Per ostacolarlo, è necessario un ulteriore segreto che è non inviato via e-mail, ad esempio (un brutto segreto come è) una chiave cookie. Puoi chiedere all'utente di reimpostare la password utilizzando lo stesso computer e browser utilizzato per inviare il comando "Voglio reimpostare la mia password".

Quindi, l'attaccante non sarà in grado di inviare il cookie appropriato, poiché il suo dominio è diverso da quello originale, il browser non gli avrà detto il valore appropriato del cookie da utilizzare.

Una possibilità più rigida è di richiedere all'utente di inserire nella pagina "Reimpostazione password", senza chiuderla , un codice che viene inviato tramite e-mail. L'email a quel punto non contiene nemmeno un link. L'hacker conosce il codice, ma non ha il controllo sulla finestra del browser aperta. La finestra può contenere un segreto nascosto che il server sta "dicendo" a se stesso, o un cookie (che è fondamentalmente la stessa cosa). Per evitare l'uso di informazioni persistenti, il server potrebbe archiviare nella pagina una stringa casuale e inviare l'hash della stringa casuale con un salt segreto. L'utente compilerà quindi un modulo che ha entrambi i valori (uno nascosto, uno copiato dall'email). Il server esegue il hash del codice con il suo sale segreto. Se le due stringhe sono uguali, la modifica è approvata. Per evitare "attacchi ripetuti" in questo caso (ad esempio, riutilizzo di una coppia di challenge / hash nota), il controllo potrebbe includere il nome utente e un timestamp:

form
    username    hidden (e.g. "lserni")
    timestamp   hidden (e.g. 20140108131005)
    hash        hidden (e.g. "e2961ca083b4393690ec74b93d3c4b32")
    code        input

L'utente riceve il codice "123456", a caso tra 100.000 e 999999. C'è una possibilità in circa novecentomila di indovinarlo con successo. Il server concatena SERVERSECRETPASSWORD.lserni.20140108131005.123456 e verifica che lo hash su e2961ca083b4393690ec74b93d3c4b32 .

L'attaccante può indovinare il timestamp, ma non ha accesso all'hash. Conoscere un hash e il codice corrispondente funzionerà solo con il nome utente corretto, e solo fino alla differenza tra il timestamp memorizzato, che non può essere modificato, e il wall clock non diventerà troppo grande, a quel punto il server offrirà per inviare un'altra email.

Un possibile problema (inevitabile)

D'altra parte, se l'utente malintenzionato ha il controllo dell'email, può avviare personalmente un recupero della password e ottenere il pieno accesso alla risorsa almeno una volta. Per evitare questo, dovrebbero essere fornite alcune altre informazioni (ad esempio una "domanda segreta") per avviare la reimpostazione della password. Inoltre, un avviso in caso di autenticazione non riuscita dovrebbe essere rilasciato all'utente, in modo che venga messo a conoscenza del problema ("Password errata. Ricorda che hai cambiato la password ieri alle 17:23 da IP 1.2.3.4 Se non l'hai fatto, tieni presente che ... ");

Un altro possibile problema

Su alcuni sistemi, ti sarà permesso di chiedere al server di " ricordarti ". Il server lo farà emettendo un cookie che è, sotto ogni aspetto, una autenticazione debole e potrebbe non essere più connesso alla password.

Una modifica della password dovrebbe invalidare tutti questi cookie , altrimenti l'attaccante può:   - prendere il controllo della posta elettronica   - avviare una reimpostazione della password   - intercetta il codice di reimpostazione della password   - cancella l'email con la reimpostazione della password   - cambia la password   - chiedi al server "Ricordami" e ottieni un cookie "Get Home Free"   - profitto   - l'utente scoprirà di non essere in grado di accedere   - cambierà la password e ricollegherà   - l'utente malintenzionato ancora potrà accedere con il suo cookie.

Un modo per farlo è impostare il cookie su una stringa casuale più l'hash di un server segreto, la stringa casuale, il nome utente e l'hash della password dell'utente nel database. Una modifica della password annullerà automaticamente tutti i cookie di autenticazione esistenti per quell'utente.

    
risposta data 08.01.2014 - 15:19
fonte
0

TL; DR : Sì. L'e-mail standard non crittografata è approssimativamente sicura quanto un messaggio scarabocchiato sul retro di una cartolina.

Risposta più lunga: Questo è del tutto possibile se l'attaccante ha i privilegi di amministratore almeno in uno dei seguenti:

  1. I server di posta in cui viaggia il messaggio (apri un messaggio e-mail, seleziona "intestazioni complete" in qualsiasi client di posta che usi, ogni riga Received: from [foo] by [bar] indica un server di posta che ha attraversato questo messaggio). Se disponi di privilegi di amministratore per un server di posta, puoi accedere alla sua coda, sospendere un messaggio in coda e modificare il messaggio prima di inviarlo a modo suo.

  2. Tutti i router TCP / IP che il messaggio ha attraversato. In questo caso, l'autore dell'attacco può teoricamente indirizzare tutto il traffico SMTP a un server di inoltro locale che fungerà da proxy trasparente, ma tagga e mantiene specifici messaggi in una coda che l'autore dell'attacco deve modificare prima di inviarlo. Ingannevole, ma fattibile.

NOTA : il secondo metodo può a volte essere prevenuto usando smtp-over-ssl, ma questa pratica non è così comune come dovrebbe essere e smtps o smtp / tls funziona solo quando entrambi lati * lo supportano; Il primo metodo può non essere prevenuto crittografando le trasmissioni perché l'attacco avviene su un checkpoint legittimo (se sovvertito).

Ciò che vorrebbe lavorare contro entrambi i vettori di attacco sarebbe utilizzare una coppia di chiavi pubblica / privata per firmare il messaggio, ma ciò richiederebbe al destinatario di avere una copia della tua chiave pubblica, che può essere qualcosa di un problema di pollo e uova.

    
risposta data 08.01.2014 - 15:03
fonte
0

Se la tua e-mail viene inviata in chiaro, un utente malintenzionato potrebbe teoricamente modificare il contenuto dell'email esattamente come hai descritto, con il risultato esatto.

Per intercettare e modificare questa e-mail, l'utente malintenzionato dovrebbe prendere il controllo di un server di posta elettronica che gestirà l'e-mail in transito o assumere il controllo di un dispositivo di routing con la possibilità di modificare l'e-mail. Questo non è banale da fare, se l'attaccante ha accesso a qualsiasi cosa che non sia il server di posta elettronica di origine, dovrebbe conoscere il percorso esatto che l'e-mail sta per prendere, il che significa sapere chi è la base di clienti. Il modo migliore per imparare la tua base di clienti sarebbe hackerare i tuoi sistemi e, se possono farlo, hanno comunque le password dei tuoi utenti. Inoltre, scrivere il software screen-raschietto e il sito Web per catturare le modifiche della password sarebbe uno sforzo significativo.

Alcuni attacchi di phishing utilizzano già un metodo di attacco molto simile, tranne che per intercettare e modificare le e-mail che inviano semplicemente e-mail spam, il che è molto più semplice. Le banche hanno impiegato molto tempo a rendere i loro siti resistenti agli attacchi di screen-raschietto, se hai dubbi ti suggerirei di fare qualche ricerca sul design del loro sito e incorporare alcune contromisure nel tuo sito per rendere questi attacchi più difficili.

Potrei vedere il merito di intercettare e modificare le e-mail in quanto renderà il filtro anti-spam molto meno probabile e, poiché l'utente ha richiesto una modifica della password, sarà più probabile che si fidino dei link nell'e-mail. Tuttavia, data la complessità dell'attacco, un sito dovrebbe avere un valore piuttosto alto prima che qualcuno sia disposto a investire tempo e sforzi per farlo. Se il tuo sito sarebbe un obiettivo è qualcosa che dovresti decidere tu stesso.

    
risposta data 08.01.2014 - 15:04
fonte
0

Puoi proteggere da questo tipo di attacco usando SMIME o DKIM. Entrambe le tecnologie verificano l'intestazione del messaggio e DKIM protegge facoltativamente il corpo del messaggio (o i primi caratteri X in esso contenuti).

DKIM è una chiave pubblica che viene archiviata in DNS e il tuo amministratore di posta elettronica "firma" il messaggio e lo timbra nell'intestazione. Ulteriori informazioni su DKIM qui: link

Affidarsi a DKIM significa che l'utente finale deve fidarsi del proprio amministratore di posta elettronica per non modificare il messaggio. Esistono pacchetti software lato client DKIM che verificano DKIM, ma non sono ampiamente utilizzati (AFAIK).

    
risposta data 08.01.2014 - 17:09
fonte

Leggi altre domande sui tag