martedì 23 settembre 2014

Skype: utilizzare due account contemporaneamente

Skype non mette a disposizione nessuna opzione per utilizzare contemporaneamente 2 account sulla stessa postazione. Una soluzione a questo problema consiste nell'utilizzare l'argomento /secondary nel lanciare la seconda istanza dell'applicazione.
Vediamo nel dettaglio come aprire 2 istanze di Skype sulla stessa postazione.

Avviamo normalmente Skype con il nostro account principale.
Creiamo un collegamento sul desktop specificando, come percorso del collegamento, la seguente stringa
"C:\Program Files (x86)\Skype\Phone\Skype.exe" /secondary

nel caso sulla postazione sia installata una versione di Windows a 32bit il percorso da indicare è il seguente:
"C:\Program Files\Skype\Phone\Skype.exe" /secondary

Cliccando sul collegamento viene avviata una seconda istanza di Skype in cui potremmo utilizzare un altro account

lunedì 22 settembre 2014

Windows Quick Tip: Modalità GodMode

A partire da Windows Vista è possibile creare una cartella virtuale contenente tutte quelle funzionalità normalmente accessibili tramite le applet del Pannello di Controllo. Tale modalità di accesso alle funzionalità del sistema operativo è stata ribattezzata GodMode.

Per accedere alla modalità GodMode basta creare una cartella, in qualsiasi posizione del disco, e nominarla:
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
La cartella assumerà l'icona del Pannello di controllo e all'interno ritroveremo tutte le funzionalità raccolte per gruppi.

É possibile utilizzare la modalità GodMode in Windows Vista, Windows 7, Windows 8 e 8.1 e anche su Windows Server 2008 e Windows Server 2012

GodMode
FIG 1 - GodMode

Outlook: Richiedere una conferma di lettura per email inviate ad un indirizzo specifico

Se vogliamo richiedere una conferma di lettura per tutte le email che inviamo ad un particolare indirizzo possiamo procedere alla creazione di una regola:
  • Da Outlook 2010 e Outlook 2013 cliccare sul menu File quindi su Gestisci Regole e avvisi
  • Cliccare su Nuova Regola
    Regole e Avvisi
    FIG 1 - Regole e Avvisi
  • Selezionare Applica regola ai messaggi inviati quindi procedere cliccando su Avanti
    Creazione guidata regole: Applica regola ai messaggi inviati
    FIG 2 - Creazione guidata regole: Applica regola ai messaggi inviati
  • Selezionare Inviato a utenti o gruppo pubblico
  • Nella parte inferiore della finestra cliccare su utenti o gruppo pubblico e specificare l'indirizzo desiderato, quindi confermare cliccando su OK
    Creazione guidata regole: inviato a utenti o gruppo pubblico
    FIG 3 - Creazione guidata regole: inviato a utenti o gruppo pubblico
  • Cliccare su Avanti per proseguire con la creazione della regola
  • Nella finestra successiva selezionare la voce avvisa quando il messaggio è stato letto e cliccare su Avanti
    Creazione guidata regole: avvisa quando il messaggio è stato letto
    FIG 4 - Creazione guidata regole: avvisa quando il messaggio è stato letto
  • Specificare eventuali eccezioni (non necessario) e cliccare su Avanti
  • Assegnare un nome alla regola e assicurarsi che sia selezionata l'opzione Attiva regola quindi cliccare su Fine

FIG 5 - Creazione guidata regole: Attiva regola

Da questo momento in poi, quando inviamo un'email all'indirizzo specificato, al destinatario verrà richiesta la conferma di lettura.

giovedì 11 settembre 2014

MS Exchange: Risposte automatiche (Fuori Sede) tramite EMS

Le risposte automatiche (Fuori Sede) possono essere inserite facilmente dagli utenti tramite il client di posta (ad es. Outlook) oppure tramite OWA. 

Nel caso volessimo utilizzare Exchange Management Shell (EMS) per inserire o eliminare una regola fuori sede (out of office) dobbiamo servirci del cmd-let Set-MailboxAutoReplyConfiguration
Set-MailboxAutoReplyConfiguration <nome_utente> -AutoReplyState Scheduled -StartTime <data_e_ora_attivazione> -EndTime <data_e_ora_disattivazione> -ExternalMessage "Messaggio per i mittenti esterni all'organizzazione" -InternalMessage "Messaggio per i mittenti interni all'organizzazione."
I parametri StartTime e EndTime consentono di specificare la data e l'ora in cui attivare/disattivare l'invio della risposta automatica. Le date vanno espresse in modalità anglossassone (mese/giorno/anno).

ExternalMessage e InternalMessage consento di specificare il messaggio di risposta automatica desiderato rispettivamente per gli utenti esterni e interni all'organizzazione.

AutoReplyState consente di abilitare, disabilitare, schedulare la risposta automatica sulla casella. I valori accettati dal parametro sono:
  • Enabled per abilitare all'istante la risposta automatica fino a quando non viene deliberatamente disattivata.
  • Disabled per disabilitare la risposta automatica.
  • Scheduled permette di abilitare la risposta automatica solo nell'intervallo di date specificate con StartTime e EndTime.
Ad es.
Set-MailboxAutoReplyConfiguration GLUBRANO -AutoReplyState Scheduled -StartTime "10/31/2014 07:00 AM" -EndTime "10/31/2014 11:30 pm" -ExternalMessage "Sono in ferie." -InternalMessage "Sono in ferie."
Per disattivare la risposta automatica
Set-MailboxAutoReplyConfiguration GLUBRANO -AutoReplyState Disabled

martedì 9 settembre 2014

BPMTK: Basic Process Manipulation Tool Kit


BPMTK è un utility open source creata da Didier Stevens (http://blog.didierstevens.com/) e appositamente pensata per la manipolazione dei processi in esecuzione in ambiente Windows.

BPMTK rappresenta un valido sostituto di gpdisable ormai non più supportato e , anzi, ne migliora diverse caratteristiche. L’utility permette di effettuare il dump della memoria, ricerche e sostituzioni all’interno della memoria utilizzata dai processi, DLL injection e molto altro.
A partire da Windows Vista, Microsoft ha cercato di rimediare e proteggere i suoi sistemi operativi da questo tipo di vulnerabilità introducendo il concetto di processo protetto: un tipo di processo che viene eseguito in uno spazio di memoria protetto dagli altri processi. Un processo protetto per essere considerato tale deve essere firmato da Microsoft.

Di seguito mostrerò alcuni esempi su come bypassare diverse protezioni utilizzando BPMTK.

Bypassare le Software Restriction Policies

Le Group Policy (in italiano conosciute come Criteri di Gruppo) vengono utilizzare per la configurazione e la gestione di un sistema Microsoft e in particolare vengono utilizzate in Active Directory. Le Group Policy permettono la configurazione di ogni aspetto del funzionamento delle workstation collegate alla rete aziendale, ad es. possiamo impedire all’utente di effettuare alcune operazioni o utilizzare alcuni programmi. 

Le Software Restriction Policies (SRP) sono una funzionalità delle Group Policy (GPO) che permettono all’amministratore di imporre restrizioni sul software che l’utente può eseguire. Le GPO vengono applicate attraverso le funzioni contenute in advapi32.dll. Diversi programmi, tra cui explorer.exe, richiamano tale DLL. Quando un utente tenta di eseguire un programma, explorer.exe, tramite le funzioni messe a disposizione da advapi32.dll, verifica se è autorizzato dalle GPO. Un ruolo importante in questa verifica è svolto dalla chiave TransparentEnabled. La presenza di tale chiave indica che le SRP sono attive e vanno verificate.  Un’utenza limitata non ha i permessi per andare a modificare le SRP pertanto sembrerebbe che il sistema non possa essere bypassato ma c’è un particolare. L’utente può modificare il codice contenuto all’interno del processi su cui ha i permessi come ad es.  explorer.exe. Cosa possiamo fare affinchè explorer.exe non vada ad interrogare la chiave TransparentEnabled? Dobbiamo fare in modo che la chiave TransparentEnabled non venga trovata dalle funzioni di advapi32.dll e quindi facendo credere al sistema di verifica che non è impostata alcuna SRP.

A questo punto interviene la nostra utility:
  • Scarichiamo l’utility da http://www.didierstevens.com/files/software/bpmtk_V0_1_6_0.zip
  • Scompattiamo il file in una cartella
  • Creiamo un file di testo e nominiamolo bypass-SRP.txt
  • All’interno del file copiamo il seguente codice:
    dll-name advapi32.dll
    search-and-write module:. unicode:TransparentEnabled ascii:X
  • Salviamo il file nella cartella contenente BPMTK;
  • Dal prompt dei comandi spostiamoci nella cartella dove abbiamo salvato il file .txt.
  • Eseguiamo il seguente comando:
    bpmtk bypass-SRP.txt


Con i comandi indicati all’interno del file .txt non facciamo altro che dire a BPMTK di cercare, in tutti i processi che caricano advapi32.dll, la stringa TransparentEnabled e sostituire la T con la X. Così facendo il nome della chiave diventerà XransparentEnabled.

Tuttavia questo procedimento non disabilita le SRP per i processi già in esecuzione. Le SRP, infatti, una volta caricate dal registro vengono memorizzate nella cache in modo da evitare continui accessi al registro che rallenterebbe l’esecuzione. Per rendere non valida la cache e quindi forzare la lettura dal registro bisogna aspettare un update delle GPO oppure forzarle con il comando gpupdate /force (se si tratta di utente limitato probabilmente non potrà forzare l’update delle GPO).
Anche in questo caso l’utility BPMTK ci viene incontro. La memorizzazione nella cache delle SRP viene controllata dalla variabile _g_ bInitializedFirstTime presente in advapi32.dll. Nella versione 5.1.2600.2180 di advapi32.api.dll la variabile è memorizzata all’indirizzo 77E463C8. Assegnando a tale variabile il valore 0 si rende non valida la cache. Modifichiamo il nostro file bypass-SRP.txt in modo tale che contenga le seguenti istruzioni:


dll-name advapi32.dll
search-and-write module:. unicode:TransparentEnabled ascii:X
write version:5.1.2600.2180 hex:77E463C8 hex:00

E se l’utente limitato non dispone di permessi per eseguire BPMTK?

Bypassare le Software Restriction Policies tramite BPMTK e le macro di Excel

Nel caso in cui l’utente non disponga i necessari permessi per eseguire BPMTK ma gli è permesso di eseguire macro in Excel allora possiamo sfruttare il VBScript.

In questo caso lo stesso autore di BPMTK ci mette a disposizione sul proprio sito una sua utility creata in python che permette di includere un file .exe o .dll in un file .vbs. È possible scaricare il programma al seguente link: www.didierstevens.com/files/software/file2vbscript_v0_3.zip

Per poter eseguire il programma è necessario aver installato un interprete python. Possiamo scaricare Python da www.python.it/download/

Una volta scompattato il file file2vbscript_v0_3.zip  e installato python copiamo il file file2vbscript.py nella stessa cartella del file bpmtk.exe.
Dal prompt dei comandi spostiamoci nella cartella che contiene i 2 file e digitiamo il seguente comando

file2vbscript.py -o BPMTK.exe nostroScript.vbs

Il programma non fa altro che eseguire il dump del file .exe e memorizzarlo all’interno del file .vbs.
Nel caso in cui volessimo eseguire il dump di una dll allora l’opzione da utilizzare è –l come mostrato di seguito:

file2vbscript -l bpmtk.dll bpmtk.vbs

Ora che abbiamo visto come includere una dll o un file eseguibile all’interno di un VBS abbiamo un altro problema: come facciamo ad includere il file bypass-SRP.txt visto precedentemente all’interno del nostro file VBS?

Basta eseguire il comando

bpmtk bypass-SRP.txt bpmtk-cmd.exe


Con questo comando non facciamo altro che eseguire una copia del file bpmtk.exe con incluso il file di testo. Il file risultante, come indicato nel comando, è bpmtk-cmd.exe.

Per quanti non dispongono di Python e non vogliono installarlo, ho realizzato un semplice programmino in C# (senza troppe pretese) per raggiungere lo stesso scopo. Nella realizzazione non mi sono discostato molto dal programma di Didier Stevens. Il codice C# è molto semplice e presenta diversi aspetti che possono essere migliorati ma per il nostro scopo va più che bene.

Da QUI potete scaricare il sorgente e il programma compilato.

Il programma, essendo già compilato, non necessita dell’installazione di Python inoltre presenta un’interfaccia grafica che ne facilita l’utilizzo e consente di integrare, insieme ad un file .exe, anche un file txt all’interno del vbs. Lo svantaggio sta nel fatto che è più lento nell’eseguire l’operazione di Dump.
File2VBS in C#
FIG 1 - File2VBS in C#

Eseguendo il mio programma appare un’interfaccia grafica dove andremo a selezionare l’output che ci interessa:
  • Office: se ci interessa un output da poter utilizzare come macro all'interno di un'applicazione Office (più avanti vedremo come utilizzarlo in Excel);
  • Library: se stiamo eseguendo il dump di una DLL;
  • Stand Alone: se ci interessa un VBS da eseguire autonomamente attraverso WSH;
  • Don’t execute: non esegue il file di dump generato.
Dopodiché specifichiamo il file che intendiamo utilizzare (exe o dll), un eventuale file di testo da integrare nel VBS e il nome del file di output. 

Clicchiamo su Proceed e attendiamo che la progress bar scompaia. A questo punto, una volta creato il nostro file VBS, non ci resta che inserirlo all’interno di Excel e farlo eseguire come Macro.

Creare una macro Excel 2013 con il file VBS

Il nostro file VBS può essere utilizzato all’interno di Excel come macro. Possiamo fare in modo che quando il file Excel venga aperto la macro venga eseguita automaticamente. Di seguito mostro i passaggi da eseguire per Excel 2013:


  • Avviare Excel 2013 e creare un nuovo foglio di lavoro vuoto;
  • Dal menu File selezionare Opzioni quindi cliccare su Personalizza barra multifunzione;
  • Nel riquadro Schede principali selezionare la casella relativa alla scheda Sviluppo

Schede principali - Sviluppo
FIG 2 - Schede principali - Sviluppo

  • A questo punto tra i ribbon di Excel troviamo anche la voce Sviluppo. Aprire il ribbon Sviluppo e cliccare sull’icona Sicurezza Macro.

FIG 3 - Sicurezza Macro

  • Selezionare Attiva tutte le macro (scelta non consigliata; potrebbe venire eseguito codice pericoloso) e confermiamo su OK
  • Cliccare sull’icona Visual Basic (oppure utilizziamo la combinazione ALT+F11)
  • Nella riquadro Progetto - VBAProject fare clic con il pulsante destro del mouse sull'oggetto Questa_cartella_di_lavoro (ThisWorkbook in inglese) e quindi selezionare Visualizza codice
  • Nel riquadro a destra, incollare il codice presente all’interno del file VBS prodotto da File2VBS
  • Se vogliamo che il codice venga eseguito all'apertura del file allora nell'elenco Oggetto, sopra alla finestra Codice, selezionare Workbook. Per l'evento Open verrà creata automaticamente una routine vuota nominata Workbook_Open(). Aggiungere alla procedura la chiamata a DoIt in modo che appaia come la seguente:
 
Private Sub Workbook_Open()
 DoIt
End Sub

Excel 2013 VBA
FIG 4 - Excel 2013 VBA



Bypassare le retrizioni relative all’esecuzione del prompt dei comandi

Solitamente gli amministratori di sistema disabilitano l’accesso al prompt dei comandi (CMD.EXE) da parte degli utenti. Tale restrizione non viene applicata con una Software Restriction Policy (SRP) bensì con una GPO dedicata. 

Quando viene eseguito cmd.exe va a verificare la presenza della chiave di registro DisableCMD. Se tale chiave è presente allora cmd.exe non verrà eseguito e, al suo posto, apparirà un messaggio che avverte l’utente della restrizione.

Con BPMTK è possibile bypassare anche questo tipo di restrizione:
  • Creiamo un file di testo e nominiamolo bypass-CMD.txt
  • All’interno del file copiamo il seguente codice:
    start cmd.exe 
    search-and-write module:.  unicode:DisableCMD hex:41
  • Salviamo il file nella cartella contenente BPMTK;
  • Dal prompt dei comandi spostiamoci nella cartella dove abbiamo salvato il file .txt.
  • Eseguiamo il seguente comando:
    bpmtk bypass-CMD.txt

Praticamente andiamo ad eseguire il prompt dei comandi (CMD.EXE) e andiamo ad intercettare la chiave DisableCMD che andremo a rinominare in AisableCMD in modo da non farla trovare a CMD.EXE.






Con questo termino il presente articolo. BPMTK offre numerose possibilità che non è possibile trattare in un singolo articolo pertanto è probabile che in futuro ritornerò sull'argomento.



mercoledì 3 settembre 2014

Windows Quick Tip: Ricevere gli aggiornamenti di Windows XP fino al 2019

Dal 8 Aprile 2014 Microsoft non fornisce più supporto e aggiornamenti per Windows XP tuttavia continuerà a rilasciare aggiornamenti per la sicurezza, fino al 2019, per la versione Windows Embedded POSReady 2009: una versione del Sistema Operativo basata su XP e installata sui bancomat e sui POS di mezzo mondo.
Effettuando alcune modifiche al registro di Windows XP possiamo far credere a Windows update che stiamo utilizzando la versione Embedded POSReady 2009 permettendoci di scaricare e installare i nuovi aggiornamenti di sicurezza rilasciati.

Prima di procedere è necessario tenere presente e valutare attentamente quanto segue:

  • L'operazione è sconsigliata da Microsoft;
  • Non è detto che l'operazione funzioni sul nostro PC;
  • É necessario disporre di Windows XP SP3 a 32bit (il trucco non funziona sulle versioni a 64 bit di XP);
  • Il sistema POSReady è simile ad XP ma non identico pertanto, trattandosi di aggiornamenti non certificati per XP, non si esclude che un aggiornamento possa provocare problemi al nostro sistema.


Una volta valutati i rischi dell'operazione se si desidera continuare è possibile procedere come descritto di seguito.

Per far credere a Windows Update che si dispone di un sistema Embedded POSReady 2009 è necessario creare la chiave di registro HKEY_LOCAL_MACHINE\SYSTEM\WPA\PosReady quindi creare all'interno della chiave un nuovo valore DWORD, nominarlo Installed e valorizzarlo ad 1

[HKEY_LOCAL_MACHINE\SYSTEM\WPA\PosReady]
"Installed"=dword:00000001



Per disabilitare il messaggio di fine supporto di Windows XP, invece,  è necessario posizionarsi, all'interno del registro di Windows, su HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion e creare un valore DWORD nominato DisableEOSNotification e valorizzato ad 1

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
"DisableEOSNotification"=dword:00000001

Per chi non vuole agire manualmente sul registro può scaricare i file .reg dal seguente link
DOWNLOAD

lunedì 1 settembre 2014

MS Exchange: Fornire i permessi di Revisore sulla mailbox tramite EMS


In alcuni contesti potrebbe essere necessario abilitare un utente su una casella di posta con permessi limitati, ad esempio in solo lettura.
In questi casi basta fornire i permessi di Revisore (Reviewer) all'utente sull'intera casella di posta o su una singola cartella, permettendone la visualizzazione degli elementi ma non la modifica, la cancellazione o la creazione di nuovi. L'operazione può essere effettuata da Outlook o tramite Exchange Management Shell.
In questo articolo vedremo come effettuare l'operazione tramite EMS.

Il comando utilizzato è il seguente:
Add-MailboxFolderPermission -Identity <mailbox o mailbox:\cartella> -User <utente> AccessRights Reviewer

Vediamo qualche esempio.

Per fornire i permessi su una singola cartella, il primo passo è quello di abilitare l'utente come Revisore sulla cartella Top of Information Store:
Add-MailboxFolderPermission -Identity info@contoso.com:\ -User GLUBRANO -AccessRights Reviewer

I permessi forniti sulla cartella Top of Information Store non vengono ereditati dalle sottocartelle, quindi dobbiamo procedere manualmente all'abilitazione su una specifica cartella. Ad es. per la cartella Posta in arrivo:
Add-MailboxFolderPermission -Identity "info@contoso.com:\posta in arrivo" -User GLUBRANO -AccessRights Reviewer
Nel caso in cui i nomi delle cartelle siano in inglese è necessario sostituire Posta in arrivo con inbox
Add-MailboxFolderPermission -Identity "info@contoso.com:\Inbox" -User GLUBRANO -AccessRights Reviewer

Se invece vogliamo fornire i permessi di revisore sull'intera casella di posta possiamo crearci uno script PS1 che individua le cartelle presenti sulla casella di posta e abilita l'utente come revisore su ciascuna di esse. Allo script vanno ovviamente passati la mailbox e l'utente che si intende abilitare.


param (
 [Parameter( Mandatory=$true)]
 [string]$Mailbox,

 [Parameter( Mandatory=$true)]
 [string]$User
)
Set-AdServerSettings -ViewEntireForest $true 

$exclusions = @("/Recoverable Items",
                "/Deletions",
                "/Purges",
                "/Versions"
                )

ForEach($folder in (Get-MailboxFolderStatistics $Mailbox |select folderpath))
 {
  if ($folder.FolderPath -eq "/Top of Information Store")
  {
   $foldername=$Mailbox;
  }
  else
  {
   $foldername=$Mailbox + ":" + $folder.FolderPath.Replace("/","\"); 
  }
 
  if ($exclusion -notcontains $folder.FolderPath)
  {
   if (Get-MailboxFolderPermission $foldername -User $User)
   {
    Set-MailboxFolderPermission $foldername -User $User -AccessRights Reviewer
   }
   else
   {
       Add-MailboxFolderPermission $foldername -User $User -AccessRights Reviewer
   }
  }
 

 }

Dal link di seguito è possibile scaricare il file PS1
DOWNLOAD