lunedì 4 settembre 2017

ROPEMAKER: Modificare il contenuto di un'email dopo la consegna

Quando si invia un'email si pensa che questa non possa essere modificata dal mittente una volta che è stata consegnata al destinatario. Il ricercatore di sicurezza Francisco Riberio (Mimecast) ha sconfessato tale assunto dimostrando che nei client di posta più diffusi è presente una falla che consente la modifica del messaggio di posta anche dopo che questo è stato ricevuto/consegnato. Il messaggio può essere modificato e risultare valido anche se firmato digitalmente utilizzando tecnologie come OpenPGP e S/MIME.
Questo tipo di attacco è stato denominato ROPEMAKER (Remote Originated Post-delivery Email Manipulation Attacks Keep Emails Risky) e, per essere effettuato, necessita che il messaggio email sia in formato HTML e che al suo interno venga richiamato un foglio di stile esterno.
I client di posta, oltre alle immagini esterne al messaggio (non integrate all'interno dell'email),  sono in grado di caricare anche altri elementi (come ad es. i file CSS) presenti in remoto e ciò li espone alla vulnerabilità trattata in questo articolo.

Di seguito verranno illustrate alcune tecniche indicate da Francisco Riberio che consentono di sfruttare tale vulnerabilità dei client di posta.

Switch: Scambiare il testo

Questa è probabilmente la tecnica più semplice. L'email viene creata in modo tale che vi siano più versioni del testo ciascuna contenuta nel proprio tag HTML (<div>). All'interno del codice HTML viene richiamato un foglio di stile presente su un server remoto gestito da chi esegue l'attacco. Il file CSS provvede a rendere visibile alla vittima solo una delle versioni del testo presenti all'interno del messaggio. Una volta che il messaggio è stato consegnato il malintenzionato può modificare la versione del testo visualizzata agendo sul file CSS.
In figura FIG 1 è mostrato un esempio del codice HTML dell'email contenente più versioni del testo e il relativo file CSS (FIG 2). Agendo tramite il file CSS è possibile decidere quale versione rendere visibile.

ROPEMAKER, Switch - Email con più versioni del testo
FIG 1 - ROPEMAKER, Switch - Email con più versioni del testo


ROPEMAKER, Switch - CSS per nascondere/visualizzare una versione del testo
FIG 2 - ROPEMAKER, Switch - CSS per nascondere/visualizzare una versione del testo

Tale tecnica presenta diversi svantaggi:
  • Il malintenzionato deve conoscere e inserire in anticipo le varie versioni del testo pertanto non ha il pieno controllo sul messaggio visualizzato dalla vittima;
  • Visualizzando il codice sorgente del messaggio la vittima potrebbe rendersi contro del tranello;
  • Se la vittima esegue una ricerca utilizzando un termine presente nel testo nascosto, l'email verrà comunque evidenziata tra i risultati della ricerca creando sospetti;


Matrix: Manipolazione arbitraria del testo

Estremizzando l'approccio visto per la tecnica Switch è possibile rendere visibile/nascondere un carattere in una determinata posizione del messaggio in modo da permettere a chi attacca di personalizzare a proprio piacimento il testo visualizzato dalla vittima. Per fare questo bisogna implementare una sorta di sequenza di array contenenti tutti i caratteri per ciascuna posizione del testo. A ciascun carattere deve essere assegnato un ID univoco che permette di identificare il carattere stesso e la sua posizione. Si può pensare ad una corrispondenza carattere-ID come quella mostrata in tabella.


Carattere
TAG
Caratteri minuscoli
#<carattere minuscolo><posizione>
Caratteri maiuscoli
#<carattere maiuscolo><posizione>
Numeri
#nb<numero>_<posizione>
Virgola
#cm<posizione>
Punto interrogativo
#qm<posizione>
Spazio
#ws<posizione>
Virgolette
#qt<posizione>
Punto
#dt<posizione>
Due punti
#cl<position>
Slash
#sl<posizione>

I caratteri saranno tutti nascosti e potranno essere abilitati singolarmente tramite il file CSS remoto. Il codice HTML dell'email avrà un contenuto simile a quello mostrato in figura FIG 3.
ROPEMAKER, Matrix - Email contenente tutti i possibili caratteri attivabili per ciascuna posizione
FIG 3 - ROPEMAKER, Matrix - Email contenente tutti i possibili caratteri attivabili per ciascuna posizione

Il messaggio visualizzato dalla vittima può essere personalizzato modificando opportunamente il file CSS remoto e attivando solo i caratteri di proprio interesse per ciascuna posizione. In figura FIG 4 è mostrato come, tramite il CSS remoto, il messaggio mostrato dalla vittima viene modificato da ciao a bye.
FIG 4 - ROPEMAKER, Matrix - CSS remoto

Questo tipo di approccio presenta diversi inconvenienti:
  • La dimensione dell'email potrebbe diventare rilevante nel caso di messaggi lunghi;
  • Nell'elenco messaggi vengono visualizzati tutti i caratteri.
    ROPEMAKER, Matrix - Nell'anteprima dell'elenco messaggi vengono visualizzati tutti i caratteri
    FIG 5 - ROPEMAKER, Matrix - Nell'anteprima dell'elenco messaggi vengono visualizzati tutti i caratteri

    A questo è possibile porvi rimedio inserendo, all'interno dell'email, un testo alternativo abbastanza lungo oppure utilizzando numerosi caratteri Unicode U+2029 (che sono simili allo spazio) come mostrato in figura FIG 6
    ROPEMAKER, Matrix - Caratteri Unicode U+2029 aggiunti al messaggio
    FIG 6 - ROPEMAKER, Matrix - Caratteri Unicode U+2029 aggiunti al messaggio
  • In MS Outlook ciascuna lettera viene separata da quella precedente con uno spazio. Per evitare tale comportamento possiamo agire tramite il file CSS impostando la dimensione dei font nascosti a 0px, forzando la dimensione dei font visualizzati a 14px e 0px per la proprietà margin e padding come mostrato in figura FIG 7 
    ROPEMAKER, Matrix - Evitare lo spazio tra caratteri riducendo la dimensione dei caratteri nascosti tramite CSS
    FIG 7 - ROPEMAKER, Matrix - Evitare lo spazio tra caratteri riducendo la dimensione dei caratteri nascosti tramite CSS
  • Un altro effetto collaterale si verifica se la vittima apre il messaggio quando non è online o nel caso in cui il client di posta non sia vulnerabile. In questi casi il client di posta, non caricando il file CSS remoto, visualizzerà una lunga lista di caratteri. Per ovviare a questo problema è possibile inserire un testo generico che verrà visualizzato quando il file CSS non è raggiungibile.



Proprietà Content

Nei fogli stile è possibile utilizzare la proprietà Content per definire il testo da aggiungere prima o dopo (con ::before e ::after ) un determinato tag HTML.
Tale elegante tecnica consente di semplificare e alleggerire il codice HTML presente all'interno dell'email e permette un maggiore controllo sul testo da visualizzare da parte del malintenzionato.
Il codice sorgente del messaggio avrà un aspetto simile a quello mostrato in figura FIG 8.
ROPEMAKER, Content - Email
FIG 8 - ROPEMAKER, Content - Email
Tramite il CSS remoto il malintenzionato, sfruttando la proprietà Content, può aggiungere/modificare il testo visualizzato. Nel CSS mostrato in figura FIG 9, tramite Content viene modificato il testo aggiunto dopo il tag body.
ROPEMAKER, Content - CSS remoto da cui è possibile modificare il testo tramite Content
FIG 9 - ROPEMAKER, Content - CSS remoto da cui è possibile modificare il testo tramite Content

Anche in questo caso conviene aggiungere del testo al corpo del messaggio da visualizzare nel caso in cui il client di posta della vittima non fosse vulnerabile o nel caso in cui l'email venga aperta in modalità offline. Tale testo, come visto nelle tecniche precedenti, verrà visualizzato solo nel caso in cui il CSS remoto non venga caricato.





Alphamix

Le tecniche precedenti si basano tutte sui fogli stile. Un'attacco analogo può essere portato a termine utilizzando un font personalizzato richiamato all'interno dell'email e situato su un server remoto gestito dal malintenzionato. Semplificando possiamo considerare un font come una tabella a cui ad ogni byte relativo al carattere ASCII/Unicode corrisponde un particolare glifo.

Inviando un email con all'interno caratteri aggiuntivi inutilizzati è possibile modificarne il testo tramite un font esterno appositamente creato che tenga anche conto della posizione di ciascun  carattere.
ROPEMAKER, Alphamix - Corrispondenza byte-carattere di un Font esterno
FIG 10 - ROPEMAKER, Alphamix - Corrispondenza byte-carattere di un Font esterno
In questo modo il malintenzionato, modificando il font presente sul server remoto, può modificare il testo contenuto all'interno dell'email recapitata alla vittima.





Altri tecniche

Oltre ai fogli stile (CSS) e ai Font è possibile utilizzare anche SVG (Scalable Vector Graphics) e altri tag HTML come <embed>, <iframe>,<object>,<element>.




Client di posta vulnerabili

Nella seguente tabella vengono riportati alcuni dei client di posta vulnerabili. Gran parte dei client di posta web (come Microsoft Outlook Web Access, Outlook.com, iCloud, Gmail, ecc) risultano immuni a questo tipo di attacchi; in ambiente web le implicazioni relative al caricamento di contenuti esterni (HTML/CSS injection) sono ben note e vengono gestite in maniera diversa rendendo le applicazioni web più sicure a questo tipo di attacco.



Microsoft Outlook Desktop (MAC)
Microsoft Outlook Mobile
Apple Mail Desktop
Apple Mail Mobile
Thunderbird
Android
Switch
Vulnerabile
Vulnerabile
Vulnerabile
Vulnerabile
OK
OK
Matrix
Vulnerabile
Vulnerabile
Vulnerabile
Vulnerabile
OK
OK
Content
Vulnerabile
Vulnerabile
Vulnerabile
Vulnerabile
Vulnerabile
OK
Alphamix
Vulnerabile
Vulnerabile
Vulnerabile
Vulnerabile
OK
OK
SVG
Vulnerabile
Vulnerabile
Vulnerabile
Vulnerabile
Vulnerabile
OK
Embed/frame
OK
OK
Vulnerabile
Vulnerabile
OK
OK

L'unico modo per difendersi è utilizzare le versioni Web dei client di posta oppure verificare se, tra le opzioni di sicurezza del proprio client di posta, sia possibile disabilitare il download automatico di contenuti esterni.




martedì 29 agosto 2017

Windows Quick Tip: Impedire la scrittura su memorie di massa USB

Per impedire la scrittura su memorie di massa collegate tramite USB è possibile procedere tramite registro di sistema oppure tramite policy.


Metodo 1: Impedire la scrittura su memorie USB agendo tramite il registro di sistema

  • Accedere al registro di sistema (WIN+R e digitare Regedit seguito da Invio);
  • Posizionarsi al seguente percorso
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
  • Creare, se non presente, una nuova chiave e rinominarla in StorageDevicePolicies;
  • Selezionare la chiave appena creata e, al suo interno, creare un nuovo valore DWORD (32 bit) quindi rinominarlo in WriteProtect;
  • Eseguire un doppio click su WriteProtect e assegnargli il valore 1;
  • Riavviare il sistema per rendere effettive le modifiche.
Impedire la scrittura su memorie USB tramite il registro di sistema
FIG 1 - Impedire la scrittura su memorie USB tramite il registro di sistema


Metodo 2: Impedire la scrittura su memorie USB agendo tramite l'Editor Criteri di gruppo locali

  • Premere la combinazione di tasti WIN+R per aprire la finestra di dialogo Esegui e digitare gpedit.msc seguito da invio per aprire l'Editor Criteri di gruppo locali;
  • Nell’elenco ad albero, presente sulla sinistra, raggiungere la sezione Configurazione computer->Modelli amministrativi->Sistema->Accesso agli archivi rimovibili;

    Editor Criteri di gruppo locali, Dischi rimovibili: nega accesso in scrittura
    FIG 2 - Editor Criteri di gruppo locali, Dischi rimovibili: nega accesso in scrittura
  • Nei criteri elencati nella parte destra della finestra eseguire un doppio click su Dischi rimovibili: nega accesso in scrittura e selezionare l'opzione Attivata quindi confermare cliccando su OK. Le modifiche verranno attivate all'istante.
    Editor Criteri di gruppo locali, Dischi rimovibili: nega accesso in scrittura
    FIG 3 - Editor Criteri di gruppo locali, Dischi rimovibili: nega accesso in scrittura




lunedì 7 agosto 2017

Windows: Impedire al sistema operativo di aggiornare automaticamente il driver di una data periferica

Windows, per default, aggiorna automaticamente i driver delle periferiche presenti nel sistema. Generalmente è consigliabile tenere aggiornati i driver delle periferiche, tuttavia può capitare che una determinata periferica smetta di funzionare correttamente, o nel modo previsto, con il nuovo driver (ad es. nel caso di programmi specifici non aggiornati che si interfacciano direttamente con il driver della periferica) causando non pochi problemi. Tramite alcune semplici operazioni è possibile fare in modo che Windows non aggiorni automaticamente il driver di una specifica periferica. 
Vediamo come fare:
  • Avviare Gestione dispositivi (WIN+R e digitare devmgmt.msc seguito da invio);
  • Da Gestione dispositivi individuare la periferica di proprio interesse quindi cliccarci su con il tasto destro del mouse e selezionare Proprietà dal menu visualizzato;

    Gestione dispositivi, proprietà periferica
    FIG 1 - Gestione dispositivi, proprietà periferica
  • Nella finestra relativa alle proprietà della periferica, cliccare sulla scheda Dettagli;
  • Dal menu Proprietà selezionare la voce ID hardware;

    Gestione dispositivi, ID hardware
    FIG 2 - Gestione dispositivi, ID hardware
  • A questo punto è necessario prendere nota degli identificativi della periferica. Per praticità usiamo Blocco note per salvare gli identificativi. Cliccare con il tasto destro del mouse su un identificativo e selezionare Seleziona tutto dal menu contestuale. Cliccare nuovamente con il tasto destro su un identificativo e selezionare Copia. Aprire Blocco note e incollare gli identificativi copiati.

    Gestione dispositivi, copia ID hardware
    FIG 3 - Gestione dispositivi, copia ID hardware
  • Avviare l'Editor Criteri di gruppo locali (WIN+R e digitare gpedit.msc seguito da invio);
  • Spostarsi su  Criteri Computer Locale -> Configurazione computer -> Modelli amministrativi -> Sistema -> Installazione dispositivi -> Restrizioni per l'installazione di dispositivi;
  • Cliccare due volte sul criterio Impedisci l'installazione dei dispositivi che corrispondono a uno di questi ID;

    Editor Criteri di gruppo locali
    FIG 4 - Editor Criteri di gruppo locali
  • Nella finestra che appare selezionare l'opzione Attivata e cliccare sul pulsante Mostra;

    Criteri di gruppo, Impedisci l'installazione dei dispositivi che corrispondono a uno di questi ID
    FIG 5 - Criteri di gruppo, Impedisci l'installazione dei dispositivi che corrispondono a uno di questi ID
  • Incollare, uno alla volta, gli ID hardware copiati in precedenza e, al termine, cliccare su OK;

    ID hardware ai quali impedire l'aggiornamento automatico dei driver
    FIG 6 - ID hardware ai quali impedire l'aggiornamento automatico dei driver
  • Cliccare su Applica e poi su OK per confermare le modifiche effettuate quindi chiudere l'Editor Criteri di gruppo locali.

Da questo momento Windows non aggiornerà più i driver della periferica specificata automaticamente.




venerdì 4 agosto 2017

Windows 10: Disabilitare Aero Peek, Aero Shake e Aero Snap

Windows 10 dispone di numerosi effetti grafici che rendono l'interfaccia bella e gradevole da vedere ma che possono incidere sulle prestazioni dei computer meno recenti.
In questo articolo verrà mostrato come disabilitare alcuni effetti Aero in particolare Aero Peek, Aero Shake e Aero Snap.


Disabilitare Aero Peek

Aero Peek è una funzionalità di Windows che permette di mostrare rapidamente l'anteprima del Desktop spostando il puntatore del mouse nell'angolo in basso a destra della taskbar.

Metodo1: Disabilitare Aero Peek tramite la barra delle applicazioni
  • Cliccare, con il tasto destro del mouse, sulla barra delle applicazioni e selezionare la voce Impostazioni barra delle applicazioni;
  • Disabilitare l'opzione Usa Aero Peek per visualizzare l'anteprima del desktop quando si sposta il mouse sul pulsante Mostra desktop all'estremità della barra delle applicazioni.
Disabilitare Aero Peek tramite la barra delle applicazioni
FIG 1 - Disabilitare Aero Peek tramite la barra delle applicazioni

Metodo 2: Disabilitare Aero Peek tramite il registro di sistema
  • Premere la combinazione di tasti WIN+R per aprire la finestra di dialogo Esegui e digitare regedit seguito da invio per avviare l'Editor del registro di sistema;
  • Posizionarsi sulla chiave
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
  • Creare, se non presente, un nuovo valore DWORD (32 bit) rinominarlo in DisablePreviewDesktop e valorizzarlo ad 1.
Disabilitare Aero Peek tramite registro di sistema
FIG 2 - Disabilitare Aero Peek tramite registro di sistema

Disabilitare Aero Shake

Aero Shake è una funzione che consente di ridurre ad icona tutte le finestre tranne quella di proprio interesse: basta scuotere trascinando con il mouse la finestra che si intende tenere attiva e tutte le altre verranno minimizzate. 

Metodo 1: Disabilitare Aero Shake tramite registro di sistema
  • Avviare l'Editor del Registro di sistema (WIN+R e digitare regedit seguito da invio);
  • Posizionarsi sulla chiave
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
  • Creare, se non presente, un nuovo valore DWORD (32 bit), rinominarlo in DisallowShaking e valorizzarlo ad 1.
Disabilitare Aero Shake tramite registro di sistema
FIG 3 - Disabilitare Aero Shake tramite registro di sistema

Metodo 2: Disattivare Aero Shake tramite Editor Criteri di gruppo locali (solo per le versioni Professional e Enterprise di Windows)
  • Avviare l'Editor Criteri di gruppo locali (WIN+R e digitare gpedit.msc seguito da invio);
  • Dall'interfaccia dell'Editor posizionarsi su Configurazione utente -> Modelli Amministrativi -> Desktop
  • Cliccare 2 volte su Disattiva movimento del mouse per riduzione a icona finestre Aero Shake quindi disattivare la funzione selezionando l'apposita opzione.
Disabilitare Aero Shake tramite l'Editor Criteri di gruppo locali
FIG 4 - Disabilitare Aero Shake tramite l'Editor Criteri di gruppo locali



Disabilitare Aero Snap

Aero Snap è una funzionalità del sistema operativo che consente l’affiancamento veloce e/o la massimizzazione delle finestre trascinandole ai margini dello schermo.

Metodo 1: Disabilitare Aero Snap tramite pannello di controllo
  • Avviare il Pannello di controllo (WIN+R digitare control seguito da invio);
  • Dal Pannello di controllo cliccare su Accessibilità quindi su Modifica funzionamento del mouse;
  • Selezionare l'opzione Evita disposizione automatica delle finestre quando vengono spostate sul margine dello schermo.
Disabilitare Aero Snap tramite Pannello di controllo
FIG 5 - Disabilitare Aero Snap tramite Pannello di controllo

Metodo 2: Disabilitare Aero Snap tramite registro di sistema
  • Avviare l'Editor del Registro di sistema (WIN+R e digitare regedit seguito da invio);
  • Posizionarsi sulla chiave
    HKEY_CURRENT_USER\Control Panel\Desktop
  • Creare, se non presente, un nuovo valore DWORD (32 bit), rinominarlo in WindowArrangementActive e valorizzarlo a 0.
Disabilitare Aero Snap tramite registro di sistema
FIG 6 - Disabilitare Aero Snap tramite registro di sistema



Dal seguente link è possibile scaricare i file batch per abilitare/disabilitare Aero Peek, Aero Shake e Aero Snap.
Download