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.




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.