lunedì 29 agosto 2016

Windows Quick Tip: Modificare le dimensioni del file di paging (pagefile.sys) da riga di comando tramite WMIC

Abbiamo già incontrato WMIC (Windows Management Instrumentation Command-linein un articolo precedente. Si tratta di potente strumento che consente la gestione dei sistemi da riga di comando.

In questo articolo mostrerò come impostare le dimensioni del file di memoria virtuale (pagefile.sys) utilizzando WMIC. I comandi da utilizzare sono molto semplici:
  • Dal Prompt dei comandi eseguire il comando 
    wmic pagefile list /format:list 
    per visualizzare le informazioni relative ai file di memoria virtuale presenti sulla macchina.
  • Per creare un'istanza relativa al file di paging che intendiamo creare/impostare lanciare il comando
    wmic pagefileset create name="C:\pagefile.sys"
  • Per settare la dimensione minima e massima del file di paging a 4GB (4096MB) utilizzare il comando
    wmic pagefileset where name="C:\\pagefile.sys" set InitialSize=4096,MaximumSize=4096
    Possiamo personalizzare la dimensione iniziale e massima di pagefile.sys passando a InitialSize e MaximumSize la dimensione desiderata espressa in MB. (NB: il doppio carattere \\ all'interno del comando è necessario per la query).
  • Nel caso in cui abbiamo settato il file di paging su una partizione diversa e vogliamo cancellarlo dalla partizione C: possiamo utilizzare il parametro delete
    wmic pagefileset where name="C:\\pagefile.sys" delete
WMIC, dimensione dei file di paging
FIG 1 - WMIC, dimensione dei file di paging


WMIC ci consente anche di eseguire le impostazioni su workstation/server remoti, basta aggiungere a WMIC il parametro /Node:<nome_wks>
Ad es. supponiamo di volere impostare il file di paging sul server chiamato Server01:
wmic /NODE:Server01 pagefile list /format:list
wmic /NODE:Server01 pagefileset create name="C:\pagefile.sys"
wmic /NODE:Server01 pagefileset where name="C:\\pagefile.sys" set InitialSize=4096,MaximumSize=4096

martedì 16 agosto 2016

PowerShell: Formattare un volume esistente con Format-Volume

Il cmdlet Format-Volume di PowerShell 3.0 (e successivi) consente di formattare un volume esistente. La sintassi è la seguente (a seconda se si intende indicate la lettera del drive, l'ID, l'etichetta, la partizione o il percorso):

DriveLetter
Format-Volume [-DriveLetter] <Char[]> [-AllocationUnitSize <UInt32> ] [-AsJob] [-CimSession <CimSession[]> ] [-Compress] [-DisableHeatGathering] [-FileSystem <String> ] [-Force] [-Full] [-NewFileSystemLabel <String> ] [-SetIntegrityStreams <Boolean> ] [-ShortFileNameSupport <Boolean> ] [-ThrottleLimit <Int32> ] [-UseLargeFRS] [-Confirm] [-WhatIf] [ <CommonParameters>]

ID
Format-Volume -ObjectId <String[]> [-AllocationUnitSize <UInt32> ] [-AsJob] [-CimSession <CimSession[]> ] [-Compress] [-DisableHeatGathering] [-FileSystem <String> ] [-Force] [-Full] [-NewFileSystemLabel <String> ] [-SetIntegrityStreams <Boolean> ] [-ShortFileNameSupport <Boolean> ] [-ThrottleLimit <Int32> ] [-UseLargeFRS] [-Confirm] [-WhatIf] [ <CommonParameters>]

Label
Format-Volume -FileSystemLabel <String[]> [-AllocationUnitSize <UInt32> ] [-AsJob] [-CimSession <CimSession[]> ] [-Compress] [-DisableHeatGathering] [-FileSystem <String> ] [-Force] [-Full] [-NewFileSystemLabel <String> ] [-SetIntegrityStreams <Boolean> ] [-ShortFileNameSupport <Boolean> ] [-ThrottleLimit <Int32> ] [-UseLargeFRS] [-Confirm] [-WhatIf] [ <CommonParameters>]

Partition
Format-Volume [-AllocationUnitSize <UInt32> ] [-AsJob] [-CimSession <CimSession[]> ] [-Compress] [-DisableHeatGathering] [-FileSystem <String> ] [-Force] [-Full] [-NewFileSystemLabel <String> ] [-Partition <CimInstance> ] [-SetIntegrityStreams <Boolean> ] [-ShortFileNameSupport <Boolean> ] [-ThrottleLimit <Int32> ] [-UseLargeFRS] [-Confirm] [-WhatIf] [ <CommonParameters>]

Paths
Format-Volume -Path <String[]> [-AllocationUnitSize <UInt32> ] [-AsJob] [-CimSession <CimSession[]> ] [-Compress] [-DisableHeatGathering] [-FileSystem <String> ] [-Force] [-Full] [-NewFileSystemLabel <String> ] [-SetIntegrityStreams <Boolean> ] [-ShortFileNameSupport <Boolean> ] [-ThrottleLimit <Int32> ] [-UseLargeFRS] [-Confirm] [-WhatIf] [ <CommonParameters>]


Parametri principali


-AsJob
Il parametro esegue il comando in background. Per poter utilizzare tale parametro è necessario eseguire PowerShell come amministratore

-CimSession
Esegue il comando su una sessione o un computer remoto.

-Compress
Abilita la compressione dei file sul volume NTFS specificato.

-DriveLetter
Specifica la lettera di unità relativa al volume da formattare.

-FileSystem
Permette di specificare il tipo di file system con il quale formattare il volume. I valori accettati da tale parametro sono: NTFS, ReFS, exFAT, FAT32, e FAT.

-FileSystemLabel
Permette di specificare l'etichetta da assegnare al volume da formattare.

-Force
Forza il comando.

-Full
Effettua una formattazione completa. Se non specificato viene eseguita una formattazione veloce.

-NewFileSystemLabel
Specifica una nuova etichetta da assegnare al volume.

-ObjectId
Permette di indicare l'ID del volume da formattare.

-Partition
Permette di specificare la partizione sulla quale creare un nuovo volume. La partizione può essere scelta tra quelle indicate dai cmdlet Get-Partition e New-Partition

-Path
Specifica il Path del volume da formattare.

-Confirm
Chiede conferma prima che il cmdlet venga eseguito.



Di seguito alcuni esempi.

Esempio 1
Format-Volume -DriveLetter D -FileSystem NTFS -Full -Force
Esegue una formattazione completa della partizione D utilizzando il filesystem NTFS.

Esempio 2
Format-Volume -DriveLetter D
Esegue una formattazione veloce del volume con lettera D.


PowerShell, Format-Volume
FIG 1 - PowerShell, Format-Volume




giovedì 4 agosto 2016

Windows Quick Tip: Come spostare la licenza di Windows da un PC all'altro

Nell'articolo Windows Quick Tip: Determinare il tipo di licenza di Windows (OEM, Retail, Volume Licensing) ho mostrato come individuare il tipo di licenza di Windows installato sulla macchina. Alcuni tipi di licenza, come quelle Retail, permettono all'utente il trasferimento da un PC all'altro. Prima di utilizzare la licenza sul nuovo PC è opportuno procedere alla disattivazione da quello vecchio. Vediamo come fare.

Per disattivare la licenza dal vecchio PC:
  • Avviare il Prompt dei comandi come amministratore;
  • Digitare il  comando slmgr /dlv seguito da invio e prendere nota dell’ID di attivazione;
  • Per disattivare la licenza digitare slmgr /upk seguito dal ID di attivazione (ad es. slmgr /upk <ID_attivazione>).


Per attivare la licenza sul nuovo PC:
  • Avviare il Prompt dei comandi come amministratore;
  • Eseguire il comando slmgr /ipk seguito dal Product Key (ad es. slmgr /ipk <Product_Key>).

Attivazione licenza di Windows: slmgr /ipk
FIG 1 - Attivazione licenza di Windows: slmgr /ipk



mercoledì 3 agosto 2016

PowerShell: Visualizzare le informazioni sul BIOS utilizzando Get-WmiObject

Nell'articolo PowerShell: Visualizzare le informazioni sulla scheda audio utilizzando Get-Wmiobject abbiamo visto come, tramite Windows Management Instrumentation (WMI), si possano recuperare informazioni sulla scheda audio installata all'interno del computer. Alla stregua di quanto descritto in quell'articolo si possono recuperare informazioni sul BIOS della macchina utilizzando Get-WmiObject e la classe Win32_BIOS. Il comando completo da eseguire è il seguente:
Get-Wmiobject -class "Win32_BIOS" -namespace "root\CIMV2" | Fl * -Force


PowerShell, informazioni sul BIOS
FIG 1 - PowerShell, informazioni sul BIOS

Tra le informazioni più utili troviamo il numero seriale della scheda madre, il produttore del BIOS, la data di rilascio e la versione.

Per visualizzare le informazioni del BIOS di una macchina remota va utilizzato il parametro -Computer indicando il nome o l'indirizzo IP del computer che si intende analizzare. Ad es.
Get-Wmiobject -class "Win32_BIOS" -namespace "root\CIMV2" -Computer Server01 | Fl * -Force

martedì 2 agosto 2016

PowerShell: Verificare la presenza e raggiungibilità di un host in rete tramite Test-Connection

Chi lavora nel campo IT spesso utilizza l'utility Ping per verificare la presenza e raggiungibilità di un Host all'interno della rete. Il ping consiste nell'invio di un pacchetto ICMP (Internet Control Message Protocol) di tipo echo request e attendere in risposta un pacchetto ICMP di tipo echo reply.

Una funzione analoga in PowerShell può essere eseguita tramite il cmdlet Test-Connection. La sintassi del cmdlet è la seguente:

Test-Connection [-ComputerName] <String[]> [-AsJob] [-Authentication <AuthenticationLevel> {Default | None | Connect | Call | Packet | PacketIntegrity | PacketPrivacy | Unchanged} ] [-BufferSize <Int32> ] [-Count <Int32> ] [-Delay <Int32> ] [-Impersonation <ImpersonationLevel> {Default | Anonymous | Identify | Impersonate | Delegate} ] [-InformationAction <System.Management.Automation.ActionPreference> {SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend} ] [-InformationVariable <System.String> ] [-ThrottleLimit <Int32> ] [-TimeToLive <Int32> ] [ <CommonParameters>]


Parametri principali


-AsJob
Il parametro esegue il comando in background. Per poter utilizzare tale parametro è necessario eseguire PowerShell come amministratore

-Authentication<AuthenticationLevel>
Specifica il livello di autenticazione della connessione WMI (Test-Connection usa WMI). I valori accettati sono: UnchangedDefaultNoneConnectCallPacketPacketIntegrityPacketPrivacy

-BufferSize
Specifica la dimensione, in byte, del pacchetto inviato. Di default la dimensione è 32 byte.

-ComputerName
Si tratta di un parametro obbligatorio e consente di specificare il nome del computer da pingare o il suo indirizzo IP (in formato IPv4 o IPv6).

-Count
Specifica il numero di pacchetti/richieste da inviare. Di default vengono inviati 4 pacchetti.

-Credential
Specifica le credenziali dell'utente autorizzato ad inviare il ping dal computer specificato da -Source.

-Delay
Specifica l'intervallo, in secondi, tra i ping.

-Quiet
Specificando tale parametro verrà restituivo $true se l'host ha risposto al ping, $false in caso contrario. Tutti gli altri messaggi di risposta vengono soppressi.

-Source
Permette di specificare il nome del computer da cui parte il ping. Se non specificato il ping ha origine dal computer locale. É possibile indicare anche più origini del ping separandole tramite virgola.

-TimeToLive
Il parametro TimeToLive (TTL) permette di specificare il tempo di vita, in secondi, del pacchetto ICMP. Il parametro accetta valori interi compresi tra 1 e 255.



Esempi


Esempio 1
Test-Connection Server01
Test-Connection -ComputerName 192.168.0.1
Questi due comandi eseguono il ping rispettivamente verso il computer con nome Server01 e verso l'indirizzo 192.168.0.1. Nel primo comando il parametro -ComputerName viene omesso e indicato direttamente il nome del computer.
Test-Connection -ComputeName
FIG 1 - Test-Connection -ComputeName

Esempio 2
Test-Conntection -ComputerName Server01, Server02
É possibile passare a Test-Connection più host a cui inviare il pacchetto ICMP separandoli tramite virgola.

Esempio 3
Test-Connection -ComputerName 192.168.0.1 -Quiet
Con il parametro Quiet si riceve in output True o False a seconda se si riceve risposta o meno dal computer remoto. Questa caratteristica ci consente di utilizzarlo per verificare la raggiungibilità di un determinato host prima di tentare una qualsiasi operazione. Ad es. 
if (Test-Connection -ComputerName Server01 -Quiet) {New-PSSession Server01}
Test-Connection, parametro -Quiet
FIG 2 - Test-Connection, parametro -Quiet

Esempio 4
Test-Connection -Source Server02, Server03 -ComputerName Server01 -Credential Dominio\Utente
Questo comando invia ping da diversi mittenti/host ad un singolo computer Server01. Il parametro Credential viene utilizzato per specificare le credenziali di un utente che è abilitato all'invio di ping da Server02 e Server03. Questo comando può essere utile per verificare la latenza delle connessioni da diversi punti.




lunedì 1 agosto 2016

PowerShell: Mettere in pausa l'attività in PowerShell tramite Start-Sleep

Il cmdlet Start-Sleep viene utilizzato generalmente all'interno degli script al fine di mettere in pausa l'attività per un periodo specificato. La sintassi del cmdlet è la seguente:
Start-Sleep [-Seconds] <Int32> 
oppure
Start-Sleep -Milliseconds <Int32>


Parametri

-Seconds
Può essere abbreviato in -s e specifica il tempo di attesa espresso in secondi prima di proseguire con l'esecuzione dell'attività.

-Milliseconds
Specifica il tempo di attesa espresso in millisecondi e può essere abbreviato in -m.


Per mettere in pausa per 10 secondi l'attività
Start-Sleep -s 10
oppure
Start-Sleep -m 10000

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