lunedì 18 luglio 2016

Outlook: Elementi eliminati dalla casella aggiuntiva finiscono nella cartella sbagliata

Quando in Outlook è configurata una casella di posta aggiuntiva (shared mailbox) sulla quale si dispone dei privilegi di eliminazione, può capitare che gli elementi eliminati da tale casella finiscano nella cartella Posta eliminata della propria casella personale.

Per modificare tale comportamento è necessario mettere mano al registro di sistema.
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio);
  • Posizionarsi su
    HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook\Options\General
    dove al posto di xx.0 va specificata la versione di Outlook installata
    14.0 per Outlook 2010
    15.0 per Outlook 2013
    16.0 per Outlook 2016
  • Se non presente, creare un valore DWORD (32 bit) e rinominarlo in DelegateWastebasketStyle
  • Assegnare al valore DWORD appena creato uno dei seguenti valori esadecimali a seconda del comportamento desiderato :
    4 - Per fare in modo che l'elemento cancellato dalla casella aggiuntiva finisca nella cartella Posta eliminata del proprietario della casella.
    8 - Se si desidera che l'elemento cancellato dalla casella aggiuntiva finisca nella cartella Posta eliminata della casella principale di Outlook (generalmente la casella personale).
Registro di sistema, DelegateWastebasketStyle
FIG 1 - Registro di sistema, DelegateWastebasketStyle

domenica 17 luglio 2016

Ransomware CryptXXX: Decriptare i file con estensione .Crypz e .Cryp1 (UltraDeCrypter)

Da qualche giorno chi ha i file cifrati dal ransomware CryptXXX con estensione .Crypz e Cryp1 può ricevere gratuitamente la chiave per recuperare i propri dati. Per farlo è necessario eseguire i seguenti passaggi:
  • Procurarsi un browser Tor. É possibile scaricare una versione portable da QUI oppure è possibile installare la versione ufficiale scaricandola da QUI.
  • All'interno del messaggio del riscatto sono presenti un indirizzo e il proprio ID. Con il browser Tor, collegarsi all'indirizzo indicato nel messaggio e inserire, nell'apposita casella, il proprio ID quindi cliccare su Sign In.

    TOR Browser, pagina del riscatto
    FIG 1 - TOR Browser, pagina del riscatto
  • Verrà visualizzata la propria chiave di decodifica (certificato), selezionarla, comprese le righe contenenti BEGIN CERTIFICATE e END CERTIFICATE, e copiarla.

    CryptXXX, chiave
    FIG 2 - CryptXXX, chiave
  • Ora cliccare su Instructions (o Il manuale nel caso sia stata selezionata la lingua italiana) per visualizzare la pagina contenente le istruzioni e il link per scaricare UltraDeCrypter necessario per decifrare i dati.

    CryptXXX, istruzioni sull'utilizzo di UltraDeCrypter
    FIG 3 - CryptXXX, istruzioni sull'utilizzo di UltraDeCrypter
  • Eseguire il download di UltraDeCrypter cliccando sul relativo link.
  • Avviare UltraDeCrypter e nella casella Key Code incollare la propria chiave.
  • Dal menu Action di UltraDeCrypter  selezionare Scan quindi cliccare su Crypt files. Tale scansione provvederà ad individuare i file cifrati sulla postazione.
    UltraDeCrypter, scansione dei file cifrati
    FIG 4 - UltraDeCrypter, scansione dei file cifrati
  • Terminata la scansione, dal menu Action selezionare Decrypt quindi cliccare sul All files. Il processo di recupero dei dati verrà avviato e non resta che attendere il completamento dell'operazione.
    UltraDeCrypter, decriptare tutti i file cifrati
    FIG 5 - UltraDeCrypter, decriptare tutti i file cifrati

Il motivo per cui la chiave di queste 2 varianti del ransomware venga fornita gratuitamente non è ancora noto. C'è chi pensa che si tratti di un problema sui server chi, invece, pensa che si tratti di un contentino fornito ad alcune vittime per mostrare a tutti che il recupero dei dati è possibile e incentivare, in questo modo, il pagamento del riscatto da parte di chi è stato infettato da altre varianti.

giovedì 14 luglio 2016

PowerShell: Cancellare la cronologia dei comandi con Clear-History

Quando eseguiamo i comandi all'interno della sessione PowerShell, questi vengono memorizzati all'interno della cronologia. Con i tasti freccia SU e GIU' della tastiera possiamo visualizzare singolarmente gli ultimi comandi digitati oppure possiamo utilizzare il cmdlet Get-History per visualizzarne l'elenco. Il cmdlet Clear-History, se eseguito senza parametri, consente di eliminare tutta la cronologia dei comandi.
PowerShell, Clear-History
FIG 1 - PowerShell, Clear-History

Per eliminare un determinato comando dalla cronologia possiamo utilizzare il parametro -ID e specificare l'ID del comando da eliminare (nel caso di più comandi gli ID vanno separati da virgola). La sintassi del comando è
Clear-History -ID <ID da eliminare>

Ad es.
Clear-History -ID 8
Clear-History -ID 8, 10

Se vogliamo eliminare tutte le tracce di un determinato comando all'interno della cronologia possiamo utilizzare il parametro -Command e specificare il comando o parte di esso.
Clear-History -Command <nome comando>

Per cancellare tutti i comandi che iniziano per "Get-"
Clear-History -Command "Get-*"
per cancellare più comandi possiamo indicarli separandoli da virgola. Ad esempio con il seguente comando vengono cancellati dalla cronologia tutti i comandi che iniziano con "Get-" e tutti quelli che contengono la stringa "help"
Clear-History -Command "Get-*", "*help*"

Con il parametro -Count possiamo indicare quanti elementi della cronologia, partendo da quello più vecchio, cancellare. Ad es. per cancellare i 2 elementi della cronologia più vecchi
Clear-History -Count 2
per cancellare 2 elementi della cronologia partendo da quelli più nuovi
Clear-History -Count 2 -Newest
per cancellare gli elementi più vecchi partendo da un determinato ID
Clear-History -ID 8 -Count 2




martedì 12 luglio 2016

Windows Quick Tip: Ripristino di Windows Update

I motivi che possono causare il malfunzionamento di Windows Update possono essere molteplici e spesso non sono facili da scovare. Le prime operazioni da eseguire sono:
  • Verificare che la data e l'ora di sistema siano corretti (incluso il fuso orario). Impostazioni errate impediscono a Windows Update di funzionare correttamente.
  • Verificare la connessione alla rete e a Internet.
  • Eseguire una scansione del sistema con un antivirus/antimalware aggiornato. Molti virus/malware non consentono al sistema di aggiornarsi.
  • Verificare la configurazione dei DNS configurati sulla postazione. Provare a cambiarli impostando quelli di Google (DNS primario 8.8.8.8, DNS secondario 8.8.4.4).
  • Verificare il contenuto del file %Windir%\System32\drivers\etc\Host. Virus e malware possono modificare tale file in modo da impedire l'accesso ad alcuni siti o dirottare l'utente su siti compromessi.
  • Provare a disattivare temporaneamente firewall e antivirus di terze parti.

Se dopo aver eseguito le verifiche sopra riportate Windows Update continua a non funzionare, si può provare ad eseguire i comandi sotto riportati dal Prompt dei comandi avviato come amministratore.
net stop wuauserv
net stop bits 
net stop appidsvc
net stop cryptsvc 
ren %systemroot%\System32\Catroot2 Catroot2.OLD
net start cryptsvc 
Del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
del /f /q %windir%\WindowsUpdate.log
del /f /s /q %windir%\SoftwareDistribution\*.*
sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)
                                                                                (A;;CCLCSWRPWPDTLOCRRC;;;PU)
sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)
                                                                                (A;;CCLCSWRPWPDTLOCRRC;;;PU)
%windir%\system32\regsvr32.exe /s %windir%\system32\atl.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\Urlmon.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\Mshtml.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\Shdocvw.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\browseui.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\jscript.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\vbscript.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\scrrun.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\msxml.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\msxml3.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\msxml6.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\actxprxy.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\softpub.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\oleaut32.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\ole32.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\shell32.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wuapi.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wuaueng.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wuaueng1.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wucltui.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wups.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wups2.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wuweb.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\qmgr.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\qmgrprxy.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wucltux.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\muweb.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\wuwebv.dll
regsvr32 /u /s wintrust.dll
regsvr32 /u /s initpki.dll
regsvr32 /u /s dssenh.dll
regsvr32 /u /s rsaenh.dll
regsvr32 /u /s gpkcsp.dll
regsvr32 /u /s sccbase.dll
regsvr32 /u /s slbcsp.dll
regsvr32 /u /s mssip32.dll
regsvr32 /u /s cryptdlg.dll
regsvr32 /s wintrust.dll
regsvr32 /s initpki.dll
regsvr32 /s dssenh.dll
regsvr32 /s rsaenh.dll
regsvr32 /s gpkcsp.dll
regsvr32 /s sccbase.dll
regsvr32 /s slbcsp.dll
regsvr32 /s mssip32.dll
regsvr32 /s cryptdlg.dll
%windir%\system32\regsvr32.exe /s %windir%\system32\quartz.dll
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v AccountDomainSid /f
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v PingID /f
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientId /f
Netsh winhttp reset proxy
net start bits
net start wuauserv 
net start appidsvc
wuauclt /resetauthorization /detectnow

Per comodità ho creato il file WUReset.bat con i comandi sopra elencati. Chi vuole, può scaricare il file dal seguente link
DOWNLOAD
Una volta scaricato e scompattato, basta cliccare sul file WUReset.bat con il tasto destro del mouse e selezionare, dal menu contestuale, la voce Esegui come amministratore. Al termine delle operazioni (anche se alcuni comandi hanno restituito un errore) riavviare il sistema e rilanciare Windows Update (la prima ricerca di Windows Update potrebbe richiedere molto tempo).

La procedura indicata è stata testata in Windows 7, 8, 8.1 e 10.


lunedì 11 luglio 2016

PowerShell: Eseguire comandi presenti nella cronologia tramite Invoke-History

Il cmdlet Invoke-History consente di eseguire i comandi presenti nella cronologia dei comandi della sessione PowerShell.
Se eseguito senza alcun parametro, Invoke-History riesegue l'ultimo comando lanciato.
Invoke-History

Con Get-History possiamo visualizzare l'elenco dei comandi presenti nella cronologia con relativo ID. L'ID può essere passato al cmdlet Invoke-History in modo che venga eseguito quello specifico comando. Ad es.
Invoke-History -ID 3
esegue il comando avente ID 3.

Al parametro ID può essere passato anche parte del comando presente in cronologia che si intende eseguire. Ad es.
Invoke-History -ID Get-Pr
esegue l'ultimo comando che inizia per "Get-Pr" (come Get-Process, Get-PrinterDriver, ecc) presente in cronologia.
PowerShell, Invoke-History
FIG 1 - PowerShell, Invoke-History

Per eseguire più comandi possiamo utilizzare Invoke-History insieme al cmdlet Get-History. Ad es.
Get-History -ID 10 -Count 3 | Invoke-History
esegue i comandi memorizzati nella cronologia aventi come ID 8,9 e 10.




venerdì 8 luglio 2016

PowerShell: Visualizzare l'elenco dei comandi eseguiti con Get-History

Per visualizzare la cronologia della sessione PowerShell corrente, ovvero l'elenco degli ultimi comandi eseguiti, viene utilizzato il cmdlet Get-History. L'output del cmdlet mostra l'ID e il comando eseguito.


Get-History, visualizzare la cronologia dei comandi
FIG 1 - Get-History, visualizzare la cronologia dei comandi

Il numero di elementi memorizzati di default varia a seconda della versione PowerShell (64 in PowerShell 2.0, 4096 in Powershell 3.0 e successivi) e può essere modificato tramite la variabile $MaximumHistoryCount.
Per conoscere il valore di tale variabile e di conseguenza il numero di comandi memorizzati, si può utilizzare il comando:
Get-Variable  MaximumHistoryCount

Per modificare il numero di comandi memorizzati, invece, basta assegnare il valore voluto alla variabile $MaximumHistoryCount ad es.
$MaximumHistoryCount = 200
Get-Variable MaximumHistoryCount
FIG 2 - Get-Variable MaximumHistoryCount


I parametri utilizzabili con il cmdlet Get-History sono: ID e Count

ID
Specifica il numero ID di un comando presente nella cronologia. Se specificato con Get-History viene visualizzato solo il comando specificato:
Get-History -ID 2
visualizza solo il comando avente come ID 2
Get-History -ID
FIG 3 - Get-History -ID

Count
Visualizza il numero specificato di elementi più recenti presenti all'interno della cronologia:
Get-History -Count 3
visualizza gli ultimi 3 elementi della cronologia
Get-History -Count
FIG 4 - Get-History -Count

I parametri ID e Count se utilizzati insieme visualizzano n elementi specificati da Count fino all'elemento specificato da ID. Ad es.
Supponiamo che la cronologia contenga 18 elementi, lanciando il seguente comando
GetHistory -ID 10 -Count 3
otteniamo in output 3 comandi presenti nella cronologia di cui l'ultimo ha ID 10 (i comandi in output vanno da ID 8 a ID 10 come mostrato in FIG 5).
GetHistory con le opzioni ID e Count
FIG 5 - GetHistory con le opzioni ID e Count

giovedì 7 luglio 2016

Windows 10: Ripristinare l'App Microsoft Edge

Per ripristinare Microsoft Edge e relative impostazioni di default:
  • Eliminare la cartella
    %userprofile%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe


    Eliminare la cartella Microsoft.MicrosoftEdge_8wekyb3d8bbwe
    FIG 1 - Eliminare la cartella Microsoft.MicrosoftEdge_8wekyb3d8bbwe
  • Avviare PowerShell come amministratore ed eseguire il comando 
    get-AppXPackage -AllUsers -Name Microsoft.MicrosoftEdge | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" -Verbose}
    Ripristino Microsoft Edge
    FIG 2 - Ripristino Microsoft Edge
  • Riavviare il sistema.

ATTENZIONE! Tutti i dati e le personalizzazione in Microsoft Edge verranno eliminati.




mercoledì 6 luglio 2016

Windows Quick Tip: Limitare i tempi di utilizzo del sistema da parte di un account tramite Net User

Per attivare una restrizione sui tempi di accesso e utilizzo del sistema da parte di un account è possibile agire tramite il prompt dei comandi.

Avviare il prompt dei comandi come amministratore (In Windows 8 e 10 premere la combinazione di tasti WIN+X e dal menu selezionare la voce Prompt dei comandi (amministratore) )
Prompt dei comandi (amministratore)
FIG 1 - Prompt dei comandi (amministratore)

Il comando da utilizzare per limitare il tempo di utilizzo del sistema da parte di un account ha la seguente sintassi:
net user <account_utente> /time:<intervallo-giorni>,<intervallo-ore>

Al posto di <account_utente> è necessario specificare l'account che si vuole limitare, <intervallo-giorni> e <intervallo-ore> rappresentano l'intervallo temporale in cui l'account è autorizzato ad accedere e ad utilizzare il sistema. I giorni della settimana vanno specificati con le lettere D, L, Ma, Me, G, V, S. Vediamo alcuni esempi.
Net User <account_utente> /time:<Intervallo-giorni>,<intervallo-ore>
FIG 2 - Net User <account_utente> /time:<Intervallo-giorni>,<intervallo-ore>

Per limitare l'accesso all'account Virtual2 dal Lunedì al Venerdì e dalle ore 7 alle ore 21
Net User Virtual2 /time:L-V,7-21
oppure
Net User Virtual2 /time:L-V,7am-9pm

Se all'intervallo vogliamo aggiungere anche Sabato e Domenica basta aggiungere il nuovo intervallo separandolo dal precedente con un punto e virgola
Net User Virtual2 /time:L-V,7-21; S-D,8-14

Per rimuovere la restrizione
Net User Virtual2 /time:all

Attenzione! Nel caso in cui dopo lo switch /time non venga specificato alcun intervallo, all'utente specificato sarà inibito sempre l'accesso al sistema.

La limitazione può essere impostata solo per gli utenti standard e non per gli account amministratore.

Per verificare se un account ha limitazioni temporali è possibile usare il comando
Net User <account_utente>
Ad es.
Net User Virtual2

Net User <account_utente>
FIG 3 - Net User <account_utente>

martedì 5 luglio 2016

PowerShell: Disabilitare/Abilitare una connessione di rete

Nell'articolo PowerShell: Visualizzare le proprietà delle schede di rete tramite Get-NetAdapter ho mostrato come recuperare le informazioni delle connessioni di rete tramite PowerShell. In questo articolo, invece, mostrerò come è possibile disabilitare e riabilitare una connessione di rete utilizzando i cmdlet Disable-NetAdapter e Enable-NetAdapter.
Per entrambi i cmdlet è necessario eseguire PowerShell come amministratore in caso contrario si riceverà un messaggio di errore di Accesso Negato.


Disable-NetAdapter

Disable-NetAdapter consente di disabilitare la connessione di rete specificata. Ad es.
Disable-NetAdapter -Name "Wi-Fi"
Al parametro Name va passato il nome della connessione di rete da disabilitare. Il parametro accetta anche i caratteri wildcard consentendo di specificare parte del nome della connessione.
Disable-NetAdapter -Name "Wi*"
oppure
Disable-NetAdapter -Name "W*Fi"
Prima che il comando venga eseguito viene visualizzata la richiesta di conferma (FIG 1).


Disable-NetAdapter, richiesta di conferma
FIG 1 - Disable-NetAdapter, richiesta di conferma


Per fare in modo che il comando venga eseguito senza che venga richiesta la conferma, è possibile utilizzare il parametro -Confirm passando il valore false:
Disable-NetAdapter -Name "Wi-Fi" –Confirm:$false

Una volta eseguito il comando, andando a verificare lo stato della connessione tramite Get-NetAdapter, noteremo che la connessione specificata è nello stato disabilitata (disabled). Anche in Gestione Dispositivi del sistema operativo, la scheda di rete risulterà disabilitata.
Get-NetAdapter, connessione di rete disabilitata
FIG 2 - Get-NetAdapter, connessione di rete disabilitata


Disable-NetAdapter consente anche di disabilitare una connessione di rete presente su una postazione/sessione remota, basta utilizzare il parametro -CimSession e specificare il nome della postazione. Ad es.
Disable-NetAdapter -Name "Wi-Fi" -CimSession computer1 -Confirm:$false
dove computer1 è il nome della postazione remota

Enable-NetAdapter

Enable-NetAdapter consente di abilitare una connessione di rete disabilitata e il suo utilizzo è del tutto analogo a quello visto con Disable-NetAdapter.

Per abilitare una connessione di rete
Enable-NetAdapter -Name "Wi-Fi"
Enable-NetAdapter -Name "Wi*"
oppure
Enable-NetAdapter -Name "W*Fi"

Per abilitare una connessione di rete senza che venga richiesto di confermare l'operazione
Enable-NetAdapter -Name "Wi-Fi" –Confirm:$false

Enable-NetAdapter, abilitare connessione di rete
FIG 3 - Enable-NetAdapter, abilitare connessione di rete

Per abilitare la connessione di rete su una sessione/postazione remota
Enable-NetAdapter -Name "Wi-Fi" -CimSession computer1 -Confirm:$false
dove computer1 rappresenta il nome della postazione o della sessione remota.