lunedì 25 settembre 2017

Windows Quick Tip: Modificare il menu contestuale tramite registro di sistema

Il menu contestuale, quello che appare quando si clicca con il tasto destro del mouse, è una parte essenziale dell'interfaccia del sistema operativo di casa Microsoft. Alcuni programmi, quando vengono installati nel sistema, aggiungono nuove voci al menu contestuale e potrebbero renderlo più difficile da consultare.

In questo articolo verrà mostrato come intervenire sul menu contestuale ed eventualmente ripulirlo agendo tramite il registro di sistema.

I menu contestuali principali presenti in Windows sono 3: quello relativo ai file, alle cartelle e al desktop.


1. Menu Contestuale relativo ai file

  • 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 su
    HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers 
    All'interno di tale chiave sono presenti gli handler visualizzati nel menu contestuale di tutti i tipi di file;
  • Per disabilitare una voce basta selezionare la relativa sottochiave presente in elenco, cliccare 2 volte sul valore (Predefinito) e, nel campo Dati valore, aggiungere il carattere - all'inizio del GUID.
Altri elementi del menu contestuale dei file si trovano all'interno delle sottochiavi 
HKEY_CLASSES_ROOT\AllFilesystemObjects
e
HKEY_CLASSES_ROOT\*\shell
Windows, Disabilitare voce del menu contestuale tramite registro sistema
FIG 1 - Windows, Disabilitare voce del menu contestuale tramite registro sistema


2. Menu Contestuale relativo alle cartelle

Analogamente a quanto visto per il menu contestuale dei file è possibile andare a modificare quello relativo alle cartelle agendo sulle sottochiavi di
HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\Directory\shell


3. Menu Contestuale relativo al desktop

Gli elementi del registro relativi al menu contestuale del desktop si trovano all'interno delle chiavi
HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\Directory\Background\shell




giovedì 14 settembre 2017

Outlook: Aggiungere un secondo fuso orario al calendario

Chi lavora con clienti/collaboratori che risiedono all'estero può trovare comodo visualizzare, all'interno del calendario di Outlook, un secondo fuso orario relativo all'area geografica degli interlocutori.
Per visualizzare un secondo fuso orario in Outlook 2010/2013/2016:
  • Dal menu File selezionare Opzioni;
  • Nell'elenco presente sulla sinistra della finestra Opzioni Outlook, selezionare Calendario;
  • Scorrere l'elenco delle impostazioni sul lato destro della finestra fino ad individuare la sezione Fusi Orari;
  • Selezionare l'opzione Mostra secondo fuso orario;
    Opzioni Outlook, Mostra secondo fuso orario
    FIG 1 - Opzioni Outlook, Mostra secondo fuso orario
  • Selezionare il fuso orario desiderato nel menu a discesa e compilare le caselle Etichetta relative al fuso orario principale e a quello secondario (in modo da distinguerli all'interno del Calendario);
  • Cliccare su OK per confermare la modifica.


Aprendo il Calendario tramite l'apposita icona (o tramite la scorciatoia CTRL+2) e impostando una visualizzazione diversa da quella mensile, è possibile notare sul margine sinistro le 2 colonne relative ai 2 fusi orari.
Calendario Outlook, doppio fuso orario
FIG 2 - Calendario Outlook, doppio fuso orario




martedì 12 settembre 2017

Windows 10: Ridurre le dimensioni della cartella WinSxS

Nell'articolo Windows Quick Tip: WinSxS. Ridurre le dimensioni del Component Store è stato già mostrato come ridurre le dimensioni della cartella WinSxS utilizzando il comando
Dism /Online /Cleanup-Image /SPSuperseded /HideSP
in cui l'opzione SPSuperseded rimuove i file di backup creati durante l'installazione di un Service Pack mentre HideSP impedisce che il Service Pack venga elencato negli Aggiornamenti installati del Pannello di controllo.

Per verificare se è consigliabile effettuare la pulizia del Component Store si può procedere all'analisi dell archivio tramite il seguente comando (lanciato dal Prompt dei comandi eseguito come amministratore)
Dism /Online /Cleanup-Image /AnalyzeComponentStore



Windows, analisi del Component Store
FIG 1 - Windows, analisi del Component Store

Al termine dell'analisi verrà visualizzato un report e indicato se è opportuno effettuare la pulizia dell'archivio dei componenti. In caso affermativo è possibile eseguire il comando 
Dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase

L'opzione StartComponentCleanup viene utilizzata per pulire i componenti sostituiti mentre ResetBase ripristina la base dei componenti sostituiti e riduce ulteriormente le dimensioni dell'archivio dei componenti.

Rilanciando il comando relativo all'analisi del Component Store è possibile verificarne la dimensione dopo l'intervento.



lunedì 11 settembre 2017

Outlook Quick Tip: Impostare la quantità di messaggi sincronizzati in locale da Outlook 2013/2016 tramite registro di sistema

A partire da Outlook 2013 al client di posta di casa Microsoft è stata aggiunta la funzionalità Sync Slider che limita (per data) il numero di email sincronizzate in locale quando si utilizzano caselle di posta Exchange o IMAP.
In Outlook 2013 tale funzionalità riguarda solo gli account di posta e non influisce sul funzionamento delle caselle aggiuntive mentre in Outlook 2016 tale impostazione agisce anche sulle caselle di posta aggiuntive impostate in modalità cache.

Per default Outlook 2013/2016 sincronizza in locale i messaggi degli ultimi 12 mesi e per visualizzare i messaggi dei mesi precedenti è necessario essere online. Per modificare tale comportamento è possibile procedere tramite le impostazioni del client di posta oppure tramite il registro di sistema.


Metodo 1: Tramite Outlook

  • Dal menu File di Outlook cliccare sul pulsante Impostazioni Account;
  • Dal menu che appare cliccare su Impostazioni Account;
    Outlook, Impostazioni account
    FIG 1 - Outlook, Impostazioni account
  • Selezionare il proprio account di posta e cliccare su Cambia;
  • Tramite l'apposito cursore è possibile personalizzare la finestra temporale relativa alla posta che si desidera sincronizzare in locale (offline). Il valore minimo impostabile in Outlook 2013 è di 1 mese mentre in Outlook 2016 si parte da un minimo di 3 giorni.
    Outlook, Sync Slider
    FIG 2 - Outlook, Sync Slider



Metodo 2: Tramite il registro di sistema/Criteri di gruppo di Outlook

  • 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 su
    HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\XX.0\outlook\cached mode 
    dove al posto di XX va specificata la versione di office (15 per Outlook 2013 e 16 per Outlook 2016). Se la chiave non è presente va creata.
  • Creare un valore DWORD (32 bit), assegnargli il nome syncwindowsetting e valorizzarlo con il numero di mesi che si intende sincronizzare. I valori decimali accettati sono 0, 1, 3, 6, 12, 24. Settando il valore a 0 vengono sincronizzati tutti i messaggi.
  • SOLO per Outlook 2016 è possibile specificare il valore in giorni creando un valore DWORD (32 bit) rinominandolo in syncwindowsettingdays e assegnandogli un valore decimale tra 0, 3, 7, 14. In questo caso per sincronizzare tutti i messaggi è necessario impostare entrambi i valori syncwindowsettingdayssyncwindowsetting a 0.
Le chiavi di registro viste con tale metodo possono essere create anche mediante il modello amministrativo Criteri di gruppo di Outlook (Outlk15.admx/Outlk16.admx)




Metodo 3: Tramite il registro si sistema/Strumento personalizzazione di Office

Analogamente a quanto visto nel Metodo 2 lo stesso risultato lo si ottiene creando i valori syncwindowsetting e syncwindowsettingdays (solo per Outlook 2016) all'interno della chiave di registro
HKEY_CURRENT_USER\Software\Microsoft\Office\XX.0\outlook\cached mode 
Le chiavi e i valori, in questo caso, possono essere create con lo Strumento di personalizzazione di Office.



L'impostazione non influisce sui seguenti elementi di posta: Attività, Calendario, Contatti, Diario, Note, Posta in uscita.







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.