giovedì 21 luglio 2016

PowerShell: Creare un archivio compresso con Compress-Archive

Nel precedente articolo abbiamo visto come estrarre il contenuto di un archivio compresso tramite l'utilizzo del cmdlet Expand-Archive. PowerShell mette a disposizione dell'utente anche un cmdlet per la creazione di archivi compressi: Compress-Archive.
La sintassi del cmdlet è la seguente:
Compress-Archive [-Path] <String[]> [-DestinationPath] <String> [-CompressionLevel <String> ] [-Update] [-Confirm]
oppure
Compress-Archive [-DestinationPath] <String> -LiteralPath <String[]> [-CompressionLevel <String> ] [-Update] [-Confirm]


Parametri

-DestinationPath
Specifica il percorso del file di output incluso il nome del file .zip. Se il nome del file non termina con l'estensione .zip questa viene aggiunta automaticamente dal cmdlet

-CompressionLevel
Permette di specificare il livello di compressione desiderato. Al parametro è possibile passare uno dei seguenti valori:
Fastest. La compressione richiederà meno tempo ma l'archivio risultante potrebbe essere di grandi dimensioni.
NoCompression. I file vengono aggiunti all'archivio senza subire alcuna compressione.
Optimal. In questo caso la compressione viene applicata in maniera ottimale e i tempi dell'operazione dipenderanno dalla grandezza dei file. Rappresenta il valore di default nel caso in cui il parametro -CompressionLevel non venga specificato.

-Path
Specifica il percorso (o i percorsi) dei file che si intende aggiungere all'archivio compresso. Il parametro consente l'utilizzo di caratteri wildcard. Nel caso in cui fosse necessario indicare più percorsi, basta separarli con una virgola.

-LiteralPath
Specifica il percorso (o i percorsi) dei file che si intende aggiungere all'archivio compresso. A differenza del parametro Path, il valore di LiteralPath è utilizzato esattamente come digitato: non sono supportati caratteri wildcard e i caratteri di escape vanno racchiusi tra apici singoli. Nel caso in cui fosse necessario indicare più percorsi, basta separarli con una virgola.

-Update
Il parametro Update consente di aggiungere ulteriori file ad un archivio compresso. I file con lo stesso nome verranno sovrascritti.

-Confirm
Richiede una conferma prima dell'esecuzione del cmdlet.


Per comprimere il contenuto della cartella c:\temp\data\ in un file Archivio.zip sul desktop dell'utente Virtual:
Compress-Archive -CompressionLevel Optimal -Path C:\temp\Data\ -DestinationPath C:\Users\Virtual\Desktop\Archivio.zip
PowerShell, Compress-Archive
FIG 1 - PowerShell, Compress-Archive


mercoledì 20 luglio 2016

PowerShell: Espandere archivi compressi con Expand-Archive

Tramite il cmdlet Expand-Archive è possibile espandere un archivio compresso in una specifica cartella. La sintassi del comando è
Expand-Archive [-Path] <String> [-DestinationPath] <String> [-Force] [-Confirm]
oppure
Expand-Archive [-DestinationPath] <String> -LiteralPath <String> [-Force] [-Confirm]


Parametri

-DestinationPath
Specifica il percorso della cartella dove si intende salvare i dati estratti dall'archivio compresso.

-Path 
Specifica il percorso e il file .zip da estrarre.

-LiteralPath
Specifica il percorso e il file .zip da estrarre. A differenza del parametro Path, il valore di LiteralPath è utilizzato esattamente come digitato: non sono supportati caratteri wildcard e i caratteri di escape vanno racchiusi tra apici singoli.

-Force
Forza l'estrazione dei file dall'archivio compresso. Se il file è già presente nella destinazione verrà sovrascritto.

-Confirm
Richiede una conferma prima dell'esecuzione del cmdlet.


Per espandere l'archivio "Archivio.zip" presente sul desktop dell'utente Virtual possiamo eseguire tale comando da PowerShell
Expand-Archive -Path C:\Users\Virtual\Desktop\Archivio.zip -DestinationPath C:\temp\Data\ -Force -Verbose
-Force ci consente di sovrascrivere eventuali file già presenti nella destinazione (C:\temp\Data\)
-Verbose visualizza i dettagli dell'operazione (le scritte gialle visibili in FIG 1)


PowerShell, Expand-Archive
FIG 1 - PowerShell, Expand-Archive
Dato che nell'esempio precedente non ci sono caratteri wildcard o caratteri di escape possiamo utilizzare anche il parametro -LiteralPath
Expand-Archive -LiteralPath C:\Users\Virtual\Desktop\Archivio.zip -DestinationPath C:\temp\Data\ -Force -Verbose

martedì 19 luglio 2016

PowerShell: Svuotare il cestino con Clear-RecycleBin

Per svuotare il cestino di Windows tramite PowerShell 5.0 possiamo utilizzare il cmdlet Clear-RecycleBin. Eseguendo il cmdlet senza specificare alcun parametro ci verrà richiesto di confermare l'operazione. Per evitare che venga visualizzata la richiesta di conferma è possibile utilizzare il parametro Confirm così come indicato di seguito
Clear-RecycleBin -Confirm:$false


PowerShell,  svuotare il cestino di Windows con Clear-RecycleBin
FIG 1 - PowerShell,  svuotare il cestino di Windows con Clear-RecycleBin

Altri parametri che è possibile specificare con il cmdlet Clear-RecycleBin sono:

DriveLetter
Il parametro DriveLetter consente di specificare la partizione/disco su cui agire. Ad es. per svuotare il cestino presente sul disco c:\ possiamo eseguire
Clear-RecycleBin -DriveLetter C

Force
Il parametro Force non fa altro che forzare l'esecuzione del comando
Clear-RecycleBin -Force

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.