PowerShell: l’oggetto PSCredential

L’oggetto PSCredential di PowerShell è un modo comodo per registrare le credenziali e utilizzarle in diverse parti di uno script.

Questo è un modo relativamente sicuro per registrare login e password. Molta enfasi su relativamente. Leggi tutto “PowerShell: l’oggetto PSCredential”

Mail report con Veeam Endpont Free

Veeam Endpoint Backup Freee (VEB) è ora GA (ovvero non è più beta) e può essere utilizzato sia sui client (minimo Windows 7 SP1) sia sui server (minimo Windows Server 2008 R2), virtuali o fisici.

L’amministratore di sistema che decide di installare questo programma in produzione ha il vantaggio di non incidere sul budget degli acquisti del software, ma ha il problema che il VEB non supporta (ancora? in questa versione?) una consolle centralizzata di amministrazione e reportistica. Leggi tutto “Mail report con Veeam Endpont Free”

Cancellare i file: CMD vs. PowerShell

La buona abitudine di usare gli script sta tornando anche nell’ambiente Windows.

Dopo alcuni aborti come VBscript e alcune soluzioni di terze parti come KiXtart, sembra che PowerShell sia diventato il linguaggio di scripting sulla cui disponibilità nei client si può fare affidamento per l’immediato futuro.

PowerShell è una CLI molto potente e non ha nulla a che fare con CMD.EXE. L’ostacolo maggiore è che ha una serie di comandi e una sintassi completamente diverse da CMD.EXE, perciò l’amministratore di un sistema Windows deve impararsi di fatto un linguaggio nuovo.

Tra le differenze c’è l’interpretazione delle wildcard nella cancellazione dei file. Leggi tutto “Cancellare i file: CMD vs. PowerShell”

Usare PowerShell per analizzare i log degli eventi

Monitorare i log degli eventi di Windows è un supplizio, specialmente per chi è amministratore anche sistemi *NIX.

Fin da Windows Server 3.x esistevano tool per esportare gli eventi e analizzarli, ma l’elaborazione veniva fatta su una copia offline dei log.

PowerShell viene in aiuto a chi deve fare ricerche o elaborazioni attraverso le famiglie di comandi *-EventLog (per il formato degli eventi fino a XP/2003 Server) e *-WinEvent (per i log da Vista/2008 Server).

Per esempio, il comando per visualizzare gli ultimi 10 eventi del log di sicurezza è:

Get-EventLog -newest 10 -logname security

Ovviamente l’output di Get-EventLog può essere inviato ad uno dei formatter della PowerShell, ma può essere anche assegnato ad una variabile per un’elaborazione successiva, in questo modo:

$errori = Get-EventLog -logname system -EntryType Error
$errori | group-object -property source -noelement | sort-object -property count -descending

per avere un conteggio ordinato in ordine decrescente di tutti gli errori del log di sistema. Se il log è cospicuo, il primo comando potrebbe richiedere qualche decina di secondi.

Ancora più utile è aggregare i log di più server per successive analisi:

$errori = Get-EventLog -logname system -EntryType Error -computername localhost, server2, server3

Purtroppo non esiste ancora un equivalente di tail -f tra i formatter standard della PowerShell, ma si può utilizzare l’oggetto Net.Mail per inviare mail di avviso se si presentano eventi di un certo tipo schedulando uno script che estrae gli eventi utilizzando il parametro -after per filtrare gli eventi in base alla data.

WSUS: un regalo sotto l’albero

Microsoft K2506143Il patch tuesday di questa settimana include l’aggiornamento Windows Management Framework 3.0 for Windows 7 SP1 and Windows Server 2008 R2 SP1 (KB 2506143).

Su WSUS bisogna aver abilitato la categoria “Aggiornamenti” per poter vedere questo aggiornamento tra quelli disponibili. L’installazione richiede come prerequisito .Net 4.0.

Il pacchetto contiene l’aggiornamento di una serie di tool che potrebbero facilitare la gestione:

  • Windows PowerShell 3.0
  • Windows Management Instrumentation (WMI) 3.0
  • Windows Remote Management (WinRM)
  • Estensione di IIS per Open Data (OData)

È facile intuire che questi aggiornamenti, specialmente PowerShell, potrebbero causare problemi alle installazioni esistenti o ad altri applicativi che sfruttano questi tool; sono già stati registrati alcuni problemi (qui e qui).

Salvare in un PST le singole cartelle di Exchange

Può capitare di voler fare un backup supplementare rispetto a quello canonico di alcune cartelle di Exchange per alcuni utenti.

Lo scopo di quanto segue è fornire uno strumento schedulabile con il servizio integrato di Windows che consenta di salvare con cadenza regolare tutta o una parte di una mailbox di Exchange su un file PST.

Questa procedura non sostituisce il normale backup, ma lo affianca, in quanto potrebbe essere eseguita con una frequenza diversa rispetto al backup e il file generato può essere aperto dall’utente in maniera autonoma o con un minimo di supporto.

Leggi tutto “Salvare in un PST le singole cartelle di Exchange”

Fammi eseguire il dannato script!

Chi si è avvicinato all’utilizzo della PowerShell ha cozzato quasi subito con la bella feature che impedisce di eseguire gli script.

Sembra una barzelletta, ma l’interprete di script di Microsoft per default non esegue gli script non firmati. Nulla di grave perché un Set-Execution-Policy Unrestricted rimette le cose a posto.

Nonostante ciò, oggi non riuscivo ad eseguire uno script che avevo caricato su un server di un cliente nonostante la policy Unrestricted confermata anche da Get-Execution-Policy.

Il problema era che avevo scaricato da Internet lo script: l’avevo creato a casa mia, l’avevo compresso e caricato su uno dei miei server e da lì l’avevo scaricato sul computer a cui ero connesso in VPN.

Tanto è bastato per far arrabbiare PowerShell.

Leggi tutto “Fammi eseguire il dannato script!”

Nishang

Con Nishang ci si avventura un una zona grigia del software, in cui la differenza tra difesa e offesa diventa indistinguibile.

Lo scopo di quanto segue non è quello di incitare la violazione delle leggi, ma di documentare l’esistenza di questi strumenti, per poterli riconoscere in caso di attacchi.

La PowerShell di Windows è uno strumento molto potente, molto più di quanto possa sembrare ad un osservatore superficiale o prevenuto. Era, quindi, naturale che prima o poi sarebbero arrivati degli script PowerShell per eseguire operazioni non del tutto legittime ai danni della vittima.

Nishang gratta solamente la superficie, ma contiene esempi molto interessanti. Tipicamente gli script contenuti in Nishang vengono eseguiti sul computer vittima una volta che l’attaccante è riuscito a penetrare le difese, quindi non troverete script di penetrazione, bensì di controllo e ricognizione remoti, tra cui un utilizzo… creativo del record TXT del DNS.

PowerShell: tre comandi utili

La PowerShell di Windows è un tool molto potente, probabilmente guardato con sospetto perché realizzata da Microsoft.

Il problema è, che, in stile Microsoft, vuole ridefinire gli standard esistenti, quando invece prende un po’ qui e un po’ là e mette tutto assieme.

Ciononostante, resta un interprete molto potente che il SysAdmin finestrato non deve trascurare o sottovalutare, come mostrano questi tre esempi.

  • Elenco dei servizi in ordine di stato:
    Get-service * | sort Status
  • Elenco dei processi attivi raggruppati per produttore del software:
    Get-Process | sort company | format-Table ProcessName -groupby company
  • Elenco del software installato, con relativa command line di disinstallazione:
    gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |Select DisplayName, DisplayVersion, Publisher, InstallDate, HelpLink, UninstallString

Script per blacklistare i domini su Windows Server

BloccoDarknet ha pubblicato un interessante script in PowerShell 2 di Jason Fossen che permette di blacklistare alcuni nomi a dominio ritenuti pericolosi.

Lo script crea una zona e, opzionalmente, degli host su un server DNS di Windows associandoli all’IP 0.0.0.0 o ad un altro indirizzo indicato. Leggi tutto “Script per blacklistare i domini su Windows Server”