Come creare e-mail che ingannare il verificatore DKIM?

1

Sammy il mittente sta inviando email a Rita il destinatario. So che Sammy applicherà una firma DKIM all'e-mail e Rita controllerà la firma DKIM con un validatore DKIM. Sono un cattivo uomo nel mezzo. Voglio modificare l'e-mail in modo che i valori dell'intestazione visualizzati nel client di posta di Rita differiscano da quelli firmati da DKIM, ma voglio comunque che l'e-mail ricevuta da Rita appaia come verificata da DKIM quando viene passata attraverso un validatore DKIM. Può essere fatto? Quanto può modificare un utente malintenzionato?

Finora ho appreso di tre tecniche per fare questo:

  1. Aggiungi nuova intestazione. Aggiungi un'intestazione che non era presente nell'email originale e non è inclusa nella firma DKIM. L'intestazione sarà probabilmente ancora visualizzata dal client di posta di Rita anche se non è inclusa nella firma DKIM.

  2. Più copie dell'intestazione. Aggiungi più versioni della stessa intestazione, con un valore diverso. DKIM controllerà solo l'ultimo; se il client di posta elettronica visualizza il primo, diventa possibile un attacco riuscito. Per essere più specifici, posiziona un'intestazione maligna - ad esempio, un'intestazione From: con un valore dannoso - prima l'intestazione DKIM. Se capisco correttamente, la firma DKIM copre solo le intestazioni dopo l'intestazione DKIM, quindi la firma sembrerà valida nonostante il fatto che il valore dell'intestazione non sia stato firmato. Credito: grazie a Robert Graham per indicando questo trucco .

  3. Aggiungi contenuto dopo la sezione firmata. RFC 6376 sottolinea un po 'più oscuro attacco , se l'intestazione DKIM nell'e-mail originale utilizza un tag l= (la maggior parte delle e-mail ordinarie di solito non lo fa) e la utilizza in modo incauto. Probabilmente non è rilevante nella maggior parte delle situazioni.

Ognuno di questi ha limitazioni su ciò che l'attaccante può ottenere. Ci sono altri attacchi che ho trascurato?

    
posta D.W. 15.12.2016 - 11:01
fonte

1 risposta

1

Per prima cosa, bella domanda. Ho controllato come si comporta Thunderbird modificando una mail esistente e in realtà vengono prese le prime intestazioni per la visualizzazione di From, To e Subject mentre il meccanismo di firma DKIM parte dalla fine :(. Pertanto la firma DKIM è considerata valida anche se From, A e Oggetto sono falsificati. È interessante notare che la prima riga Da viene utilizzata solo nella vista della posta mentre nella vista elenco di tutte le mail mostra l'ultima riga Da.
Per quanto riguarda altri attacchi o come gli attacchi che hai descritto possono essere utilizzati in un modo che potresti non aver realizzato:

Ci sono alcune intestazioni di posta che hanno effetti collaterali interessanti e spesso queste intestazioni non sono completamente protette (cioè protette contro il cambiamento o contro l'aggiunta di una nuova intestazione). In particolare Content-Type e Content-Transfer-Encoding hanno un significato speciale su come il contenuto viene interpretato. La manipolazione di queste intestazioni può avere effetti interessanti. Ad esempio avere un multipart Content-Type con un confine non esistente fa sì che Thunderbird non mostri più il testo originale della mail, ma piuttosto un contenuto vuoto. Se combinato con lo spoofing dell'oggetto ("scarica l'aggiornamento da hxxp: // ...") e / o la risposta-a questo contenuto vuoto inatteso può essere utilizzato per un attacco social. Esempio:

 Subject: Blank mail? Download hotfix for your mail client at http://....
 Content-type: multipart/mixed; boundary=boundary_does_not_exist
 Subject: original subject
 Content-type: original/type

La modifica di Content-Transfer-Encoding simile a base64 per contenuti non multiparte può causare la visualizzazione di termini privi di significato che possono essere utilizzati in un attacco social. Esempio:

 Subject: Mail corrupt? Download hotfix for your mail client at http://....
 Content-Transfer-Encoding: base64
 Subject: original subject
 Content-type: text/plain

Se la firma DKIM utilizza l= per limitare il numero di linee utilizzate nell'hash del corpo, si può anche "sostituire" il contenuto della posta cambiando (o aggiungendo) il tipo di contenuto in un tipo multipart con un contorno speciale . Il confine è quindi progettato per saltare il contenuto esistente incluso nell'hash che sarà trattato come preambolo per le nuove parti MIME (e quindi non verrà mostrato). Esempio:

 Content-type: multipart/mixed; boundary=my_own_boundary
 DKIM-Signature: ... bh=...; l=...
 Content-type: original/type

 here is the original content, no matter if single part or multipart
 this is the last line included in the body hash

 --my_own_boundary
 Content-type: text/plain

 Only this text is shown at the recipient
 --my_own_boundary--

... uses a l= tag (most ordinary emails usually don't)

In realtà sono rimasto sorpreso di quante firme DKIM con l= ho trovato nella mia casella di posta. In particolare le e-mail di cisco.com utilizzano (d?) Questa funzione e ne ho usata una per sostituire con successo il contenuto nel modo in cui ho descritto mantenendo valida la firma.

Oltre a modificare una posta esistente da Sammy, l'aggressore potrebbe anche essere in grado di creare una nuova posta per Rita che sembra provenire da Sammy. Questo può essere fatto creando una mail con una firma DKIM valida e quindi aggiungendo un'intestazione From simulata in cima. Se Rita controlla solo se la firma DKIM è valida, non vedrà alcun problema. Se controlla inoltre se il dominio della firma corrisponde al dominio dei mittenti, il risultato dipende da quale intestazione From viene utilizzata per questa convalida. Ma se Sammy utilizza uno dei provider di posta pubblica, l'utente malintenzionato potrebbe semplicemente ottenere anche un account di posta lì e quindi non importa quale da è considerato quando si controlla il dominio perché entrambi provengono dallo stesso dominio.

    
risposta data 15.12.2016 - 14:04
fonte

Leggi altre domande sui tag