giovedì 28 luglio 2016

Ransomware Bart : Come recuperare i dati

Il ransomware Bart è stato scoperto da ProofPoint e dietro la sua distribuzione c'è lo stesso gruppo che distribuisce i ransomware Locky e Dridex. Il ransomware prende in ostaggio i dati della vittima comprimendoli in file .zip protetti da password. A differenza degli altri ransomware, Bart non usa una chiave pubblica per cifrare i dati ma gli sviluppatori sfruttano il fatto che il formato ZIP supporta in modo nativo la cifratura AES. Proprio per questo modo di operare non ha bisogno di comunicare con i server di comando e controllo e può agire anche se non connesso ad Internet. Terminata la sua opera, Bart visualizza un messaggio all'utente in cui viene richiesto un riscatto di 3 bitcoin per rilasciare la password dei file .zip contenti i dati.


Come viene distribuito il ransomware

Bart viene distribuito, come la maggior parte dei ransomware, tramite un email con in allegato un file .zip. Il file zip contiente un file JS (Javascript) che ha un nome simile a PDF_[10 cifre random].js, FILE-[10 cifre random].js o DOC-[10 cifre random].js. Il codice JavaScript presente all'interno del file è offuscato al fine di rendere difficile, a chi lo analizza, scoprire le operazioni che esegue. Se la vittima apre l'allegato .zip, Windows Script Host (wscript.exe) lancia il JavaScript che avvia il download del malware eseguibile RocketLoader all'interno della cartella %temp% e poi lo esegue. Il malware provvede poi al download e all'esecuzione del ransomware Bart.

La prima operazione che effettua il ransomware è quella di verificare la lingua del sistema operativo. Se la lingua rilevata è russo, bielorusso o lingua ucraina il ransomware termina senza effettuare alcuna operazione, in caso contrario verifica le lettere dei dischi/partizioni e inizia a zippare con password, aggiungendo l'estensione .Bart.zip, i file che hanno le seguente etensioni:

.n64, .m3u, .m4u, .mid, .wma, .flv, .3g2, .mkv, .3gp, .mp4, .mov, .avi, .asf, .mpeg, .vob, .mpg, .wmv, .fla, .swf, .wav, .mp3, .qcow2, .vdi, .vmdk, .vmx, .gpg, .aes, .ARC, .PAQ, .tar.bz2, .tbk, .bak, .tar, .tgz, .gz, .7z, .rar, .zip, .djv, .djvu, .svg, .bmp, .png, .gif, .raw, .cgm, .jpeg, .jpg, .tif, .tiff, .NEF, .psd, .cmd, .bat, .sh, .class, .jar, .java, .rb, .asp, .cs, .brd, .sch, .dch, .dip, .vbs, .vb, .js, .asm, .pas, .cpp, .php, .ldf, .mdf, .ibd, .MYI, .MYD, .frm, .odb, .dbf, .db, .mdb, .sq, .SQLITEDB, .SQLITE3, .asc, .lay6, .lay, .ms11(Security copy), .ms11, .sldm, .sldx, .ppsm, .ppsx, .ppam, .docb, .mm, .sxm, .otg, .odg, .uop, .potx, .potm, .pptx, .pptm, .std, .sxd, .pot, .pps, .sti, .sxi, .otp, .odp, .wb2, .123, .wks, .wk1, .xltx, .xltm, .xlsx, .xlsm, .xlsb, .slk, .xlw, .xlt, .xlm, .xlc, .dif, .stc, .sxc, .ots, .ods, .hwp, .602, .dotm, .dotx, .docm, .docx, .DOT, .3dm, .max, .3ds, .xm, .txt, .CSV, .uot, .RTF, .pdf, .XLS, .PPT, .stw, .sxw, .ott, .odt, .DOC, .pem, .p12, .csr, .crt, .key

Non tutti i file vengono zippati, il ransomware risparmia i file che, all'interno del percorso, contengono le seguenti stringhe:
tmp, winnt, Application Data, AppData, PerfLogs, Program Files (x86), Program Files, ProgramData, temp, Recovery, $Recycle.Bin, System Volume Information, Boot, Windows.

Al termine dell'operazione, Bart crea sul desktop dell'utente i file recover.txt e recover.bmp: mentre il file con estensione .bmp viene impostato come wallpaper di Windows il file .txt viene aperto automaticamente da blocco note. All'interno del messaggio troviamo l'ID univoco assegnato al computer della vittima e il sito TOR a cui bisogna collegarsi per ulteriori informazioni su come procurarsi i bitcoin, l'ammontare del riscatto e l'indirizzo a cui pagare.


Recupero dei dati

AVG, azienda nota nel campo della sicurezza informatica, ha rilasciato un tool (AVG Decryption Tool for Bart) per recuperare i dati presi in ostaggio dal ransomware Bart. Al fine di recuperare la password dei file zip, il tool richiede che l'utente disponga della versione cifrata e non di uno stesso file (la password è uguale per tutti i file). Una volta trovata la password è possibile recuperare i restanti file presi in ostaggio dal ransomware.

Passo 1
Procurarsi ed eseguire AVG Decryption Tool for Bart. Il tool può essere scaricato da QUI

Passo 2
Avviato il tool ci si trova dinanzi alla schermata di benvenuto mostrata in FIG 1. Cliccare sul pulsante Avanti per proseguire.
AVG Decryption Tool for Bart, (1/5) Welcome
FIG 1 - AVG Decryption Tool for Bart, (1/5) Welcome
Passo 3
Nella schermata successiva viene chiesto di specificare il disco/partizione o una cartella (cliccando su Add Folder) dove risiedono i nostri dati cifrati dal ransomware. Una volta specificato il disco/partizione, cliccare su Avanti.

FIG 2 - AVG Decryption Tool for Bart, (2/5) Select a location to decrypt

Passo 4
In questo passo dobbiamo passare la programma la versione cifrata (nella prima casella) e quella originale (nella seconda casella) di uno stesso file quindi verrà abilitato il pulsante Avanti su cui dobbiamo cliccare con il mouse per proseguire.
AVG Decryption Tool for Bart, (3/5) Add an example file
FIG 3 - AVG Decryption Tool for Bart, (3/5) Add an example file
Passo 5
Per avviare il processo di recupero password del file zip bisogna cliccare su Start (FIG 4).
AVG Decryption Tool for Bart, (4/5) Crack the password
FIG 4 - AVG Decryption Tool for Bart, (4/5) Crack the password
Passo 6
Trovata la password basterà cliccare ancora su Avanti per procedere al recupero di tutti i dati. Non resta che attendere il termine dell'operazione.

AVG Decryption Tool for Bart, (4/5) Crack the password, password trovata
FIG 5 - AVG Decryption Tool for Bart, (4/5) Crack the password, password trovata



Programmazione Batch: Verificare se lo script è stato eseguito come Amministratore (privilegi elevati)

In alcuni casi può essere utile verificare se lo script batch da noi realizzato è stato eseguito come amministratore (con privilegi elevati). Un modo veloce per effettuare la verifica all'interno dello script è attraverso una particolare variabile d'ambiente: %errorlevel%. Questa variabile contiene un valore relativo all'esito di gran parte dei comandi/programmi: quando un comando viene portato a termine correttamente il valore di %errorlevel% sarà uguale a 0.

Alcuni comandi, come openfiles, NET SESSION, ecc. richiedono privilegi elevati per essere eseguiti e questo li rende adatti al nostro scopo infatti, tentando di eseguire questi comandi normalmente (senza privilegi elevati), verranno terminati con errore e alla variabile %errorlevel% verrà assegnato un valore diverso da 0 (FIG 1).


Variabile d'ambiente %errorlevel%
FIG 1 - Variabile d'ambiente %errorlevel%


Nello script batch che è possibile scaricare dal link DOWNLOAD la verifica viene effettuata proprio con il comando openfiles. L'output del comando viene scartato dirottandolo su NUL (>nul 2>&1) e viene verificata la variabile d'ambiente %errorlevel%: se la variabile ha valore 0 allora il nostro script è stato eseguito con privilegi elevati e possiamo proseguire con le altre istruzioni, in caso contrario lo script termina senza eseguire altre operazioni. Le istruzioni principali del nostro script sono dunque le seguenti:


openfiles>nul 2>&1
if %errorlevel%==0 goto AdminOK






mercoledì 27 luglio 2016

PowerShell: Visualizzare le informazioni sulla scheda audio utilizzando Get-Wmiobject

Windows Management Instrumentation (WMI) è una tecnologia integrata in tutti i sistemi operativi Microsoft, a partire da Windows ME, fondamentale per l'amministrazione dei sistemi Windows (sia in locale che da remoto). WMI consente di visualizzare e gestire un'ampia gamma di informazioni in maniera uniforme. Per accedere alle potenzialità di tale tecnologia tramite PowerShell è necessario utilizzare il cmdlet Get-WmiObject. La tecnologia WMI fa uso di classi per descrivere le risorse che possono essere gestite. Il primo problema da affrontare è proprio quello di conoscere cosa si può fare con WMI e quali sono le classi utilizzate:  sono disponibili centinaia di classi WMI ciascuna delle quali contiene decine di proprietà relative ad una specifica risorsa. Per visualizzare l'elenco delle classi WMI in PowerShell è possibile utilizzare il seguente comando
Get-WmiObject -List

Per visualizzare le informazioni sulla scheda audio installata nel sistema utilizzeremo la classe Win32_SoundDevice con il seguente comando
Get-WmiObject -Class "Win32_SoundDevice" | Fl * -Force



Get-WmiObject proprietà scheda audio
FIG 1 - Get-WmiObject proprietà scheda audio

martedì 26 luglio 2016

MS Exchange: Elencare i Distribution Groups tramite EMS

Per elencare i gruppi di distribuzione (Distribution Group) definiti sull'infrastruttura di posta MS Exchange è possibile utilizzare il cmdlet Get-DistributionGroup tramite EMS (Exchange Management Shell).
Per default vengono visualizzati solo i primi 1000 item pertanto, se nell'infrastruttura sono presenti più di 1000 gruppi di distribuzione, è necessario utilizzare il parametro -ResultSize così come indicato di seguito.

Get-DistributionGroup -ResultSize Unlimited

Con il cmdlet  Get-DistributionGroup possiamo anche verificare se esiste un determinato gruppo di distribuzione passando il nome al cmdlet: Get-DistributionGroup <nome_gruppo_distribuzione>

Ad es. per visualizzare informazioni sul gruppo di distribuzione denominato "supporto"
Get-DistributionGroup supporto
oppure
Get-DistributionGroup -Identity supporto




Il cmdlet accetta anche caratteri wildcard
Get-DistributionGroup suppor*

Utilizzando il parametro -Anr, è possibile utilizzare una stringa parziale che verrà ricercata tra diversi attributi del gruppo di distribuzione in particolare in CommonName (CN)DisplayNameFirstNameLastName e Alias.
Il seguente comando restituisce tutti i gruppi di distribuzione in cui all'interno di uno degli attributi indicati precedentemente compare la stringa "supporto"
Get-DistributionGroup -Anr supporto 

Per visualizzare maggiori dettagli relativamente ad un gruppo di distribuzione è possibile utilizzare un cmdlet Format come ad es. Format-List
Get-DistributionGroup -Identity supporto | Format-List

lunedì 25 luglio 2016

PowerShell: Verificare l'esistenza di un oggetto con Test-Path

Il cmdlet Test-Path viene generalmente utilizzato per verificare l'esistenza di un percorso specifico, tuttavia può essere utilizzato per verificare anche altri tipi di oggetti. La sua sintassi è la seguente:

Test-Path [-Path] <String[]> [-Credential <PSCredential> ] [-Exclude <String[]> ] [-Filter <String> ] [-Include <String[]> ] [-InformationAction <System.Management.Automation.ActionPreference> {SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend} ] [-InformationVariable <System.String> ] [-IsValid] [-NewerThan <Nullable [System.DateTime]> ] [-OlderThan <Nullable [System.DateTime]> ] [-PathType <TestPathType> {Any | Container | Leaf} ] [-UseTransaction] [ <CommonParameters>]

oppure


Test-Path -LiteralPath <String[]> [-Credential <PSCredential> ] [-Exclude <String[]> ] [-Filter <String> ] [-Include <String[]> ] [-InformationAction <System.Management.Automation.ActionPreference> {SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend} ] [-InformationVariable <System.String> ] [-IsValid] [-NewerThan <Nullable [System.DateTime]> ] [-OlderThan <Nullable [System.DateTime]> ] [-PathType <TestPathType> {Any | Container | Leaf} ] [-UseTransaction] [ <CommonParameters>]

Parametri principali

-Credential
Permette di specificare le credenziali con cui eseguire il comando. É possibile indicare il nome utente (come ad es. "utente1"), il nome utente e il dominio (ad es. "Contoso\utente1") oppure passare un oggetto generato da Get-Credential contenente le credenziali.

-Exclude
Esclude un elemento dalla verifica. Ad es. se si intende escludere i file di testo inclusi in una cartella possiamo utilizzare il parametro -Exclude "*.txt".

-Filter
Permettere si specificare un filtro relativo al parametro -Path.

-Include
L'opposto di Exclude, consente di includere elementi da verificare.

-IsValid
Indipendentemente se il percorso esista o meno, con il parametro IsValid si va a verificare se la sintassi del path specificato è corretta. Restituisce True se la sintassi è corretta e False in caso contrario.

-LiteralPath
Specifica il percorso che si intende verificare. 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.

-Path
Specifica il percorso da testare. Accetta caratteri wildcard. I percorsi che contengono spazi vanno racchiusi tra apici.

-PathType
Permette di specificare se l'oggetto indicato dal parametro Path è di un particolare tipo:
Container. Un elemento che contiene altri elementi come ad es. una directory.
Leaf. Un elemento singolo che non contiene altri elementi come ad es. un file.
Any.  Qualsiasi tipo.

PowerShell, Test-Path
FIG 1 - PowerShell, Test-Path


Vediamo qualche esempio.



Esempio 1
Test-Path -Path "C:\Users\Virtual\Desktop\Cartella Archivio"
Verifica se la cartella C:\Users\Virtual\Desktop\Cartella Archivio esiste in tal caso restituisce True in caso contrario False.

Esempio 2
Test-Path -Path "C:\Progetti\c#\*" -exclude *.cpp
Verifica se la cartella C:\Progetti\c#\ contiene file ad esclusione dei file con estensione .cpp.

Esempio 3
Test-Path -Path HKLM:\Software\Microsoft\PowerShell\
Il cmdlet Test-Path può essere utilizzato anche per verificare la presenza di chiavi di registro. In questo esempio Test-Path verifica se esiste la chiave di registro HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell.

Esempio 4
Test-Path Env:\OS
Verifica se è definita la variabile d'ambiente OS.

Esempio 5
Test-Path Alias:\cls
Verifica la presenza dell'Alias cls (Clear-Host) in PowerShell.

Esempio 6
Test-Path -Path C:\Temp -PathType Container
Verifica se l'oggetto indicato da Path è un Container, cioè se può contenere altri oggetti come ad es. una directory che contiene altri file e sottodirectory. In questo specifico caso la directory C:\Temp è di tipo Container pertanto verrà restituito True

Esempio 7
Test-Path -Path C:\Temp -PathType Leaf
il tipo Leaf verifica che l'oggetto indicato dal parametro Path non sia in grado contenere altri oggetti.



venerdì 22 luglio 2016

Outlook: Abilitare la modifica dell'oggetto di un'email ricevuta in Outlook 2016

Alcuni utenti, per esigenze lavorative, possono avere la necessità di modificare l'oggetto di un messaggio ricevuto. A differenza delle versioni precedenti di Outlook nella versione 2016, quando si apre un'email, l'intestazione (contenente mittente, destinatario, oggetto e data/ora di invio del messaggio) viene visualizzata in modalità compatta. In tale modalità non è possibile modificare l'oggetto dell'email. Per farlo è necessario cliccare sull'apposita icona triangolare evidenziata in FIG 1 per espandere l'intestazione come in FIG 2. Non è necessario ripetere l'operazione per ogni messaggio aperto, infatti l'impostazione sarà mantenuta anche per i successivi messaggi.


Outlook 2016, espandere intestazione messaggio
FIG 1 - Outlook 2016, espandere intestazione messaggio
Outlook 2016, Intestazione estesa
FIG 2 - Outlook 2016, Intestazione estesa

Per effettuare tale impostazione tramite il registro di sistema è possibile procedere nel seguente modo:
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio)
  • Posizionarsi su
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Options\Mail
  • Creare, se non presente, un valore DWORD (32bit), nominarlo MinimalHeaderOn e valorizzarlo a 0

Affinché la modifica effettuata nel registro di sistema diventi effettiva è necessario riavviare Outlook.
Outlook 2016, Registro di sistema - valore MinimalHeaderOn
FIG 3 - Outlook 2016, Registro di sistema - valore MinimalHeaderOn

Modificando l'oggetto di un messaggio la modifica sarà visibile nell'anteprima del messaggio e aprendo l'email ma non nella sezione elenco messaggi dove verrà visualizzato ancora l'oggetto originale. Per visualizzare l'oggetto modificato anche all'interno del pannello contenente l'elenco messaggi è necessario disabilitare, dal menu Visualizza, l'opzione Mostra come conversazioni.
Outlook 2016, disabilitare Mostra come conversazioni dal menu Visualizza
FIG 4 - Outlook 2016, disabilitare Mostra come conversazioni dal menu Visualizza

L'opzione può essere disabilitata anche cliccando, con il tasto destro del mouse, sull'intestazione/colonne della sezione elenco messaggi e deselezionando la relativa voce dal menu contestuale (FIG 5).
Outlook 2016, disabilitare Mostra come conversazioni da elenco messaggi
FIG 5 - Outlook 2016, disabilitare Mostra come conversazioni da elenco messaggi

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.


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.