domenica 24 giugno 2018

Linux: Nascondere l'output di un comando all'interno della Shell

Per nascondere l'output di un comando all'interno della Shell è possibile redirezionarlo verso /dev/null. Nei sistemi operativi Unix-like /dev/null (null device, ovvero dispositivo nullo) non è altro che un file virtuale, non presente su memoria di massa, che scarta, non memorizzando, tutti i dati che gli vengono inviati. Proprio per tale caratteristica /dev/null viene soprannominato bit bucket (cestino per bit).



La sintassi è molto semplice e fa uso dell'operatore > per la redirezione dell'output:
comando > /dev/null
Il comando sopra indicato permette di ignorare il flusso standard output (stdout) inviandolo a /dev/null.

Per nascondere l'output del comando compreso gli errori si utilizza
comando &> /dev/null
In questo modo viene ignorato sia il flusso stdout (standard output) che quello stderr (standard error).

Linux, redirezione dell'output
FIG 1 - Linux, redirezione dell'output




martedì 19 giugno 2018

Kali Linux: Installare PowerShell su Kali Linux

Le distribuzioni Linux consentono di specificare più repository per l'installazione dei pacchetti. Tra i numerosi repository disponibili online c'è anche uno messo a disposizione da Microsoft che include PowerShell. Il repository di Microsoft è pensato per gli utenti Debian ma si adatta perfettamente anche a Kali Linux.

In questo articolo verrà mostrato, passo passo, come installare PowerShell in Kali Linux.

La prima operazione da effettuare consiste nel preparare il terreno installando/aggiornando le dipendenze. Dalla finestra terminale di Kali Linux eseguire il comando
apt update && apt -y install curl gnupg apt-transport-https
Aggiornamento delle dipendenze del pacchetto PowerShel
FIG 1 - Aggiornamento delle dipendenze del pacchetto PowerShell
Il passo successivo consiste nell'aggiungere la chiave GPG del repository in modo che APT rilevi la firma dei pacchetti. Sempre dalla finestra terminale eseguire
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
Aggiungere la chiave GPG del repository Microsoft
FIG 2 - Aggiungere la chiave GPG del repository Microsoft

A questo punto il repository Microsoft va aggiunto all'elenco delle risorse in /etc/apt/sources.list.d/ con il comando
echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/powershell.list 
Aggiungere il repository Microsoft all'elenco delle risorse
FIG 3 - Aggiungere il repository Microsoft all'elenco delle risorse
Aggiornare l'elenco dei pacchetti con il comando
apt update
Aggiornare l'elenco dei pacchetti
FIG 4 - Aggiornare l'elenco dei pacchetti
Installare il pacchetto libcurl3 
apt -y install libcurl3
Installazione pacchetto libcurl3
FIG 5 - Installazione pacchetto libcurl3
Procedere all'installazione del pacchetto PowerShell eseguendo
apt -y install powershell
Installazione pacchetto PowerShell
FIG 6 - Installazione pacchetto PowerShell
Al termine dell'installazione del pacchetto, avviare PowerShell con
pwsh
Nel caso in cui appaia il messaggio "FailFast: The terminfo database is invalid.", come mostrato in FIG 7, è probabile che la variabile d'ambiente TERM sia settata su xterm-256color.


Avvio PowerShell tramite pwsh
FIG 7 - Avvio PowerShell tramite pwsh
Per verificare il valore della variabile d'ambiente TERM digitare, da terminale, il seguente comando
printenv TERM
Visualizzazione valore variabile d'ambiente TERM
FIG 8 - Visualizzazione valore variabile d'ambiente TERM
In questo caso PowerShell può essere avviato da terminale digitando ed eseguendo
TERM=xterm pwsh
FIG 9 - Avvio PowerShell tramite TERM=xterm pwsh
Da PowerShell eseguire
Update-Help
per aggiornare tutti i file di help scaricandoli da Microsoft.
Aggiornamento dei file di Help di PowerShell
FIG 10 - Aggiornamento dei file di Help di PowerShell
L'installazione di PowerShell in Kali Linux è completa. Possiamo testare il funzionamento eseguendo un cmdlet PowerShell.
 Esecuzione cmdlet PowerShell
FIG 11 - Esecuzione cmdlet PowerShell





venerdì 8 giugno 2018

Kali Linux: Eseguire la scansione delle vulnerabilità delle applicazioni web con WMAP

Originariamente sviluppato a partire dal tool SQLMap, WMAP è un potente strumento che consente di verificare eventuali vulnerabilità di applicazioni web tramite il Framework Metasploit.
Si tratta di uno scanner di vulnerabilità di applicazioni web integrato in Metasploit. In questo articolo verranno mostrati i passi da seguire per verificare la presenza di eventuali vulnerabilità di un server web. A tale scopo verrà utilizzata la distribuzione Kali Linux che integra tutti gli strumenti necessari.

ATTENZIONE:
Danneggiare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.


Prima di procedere è consigliabile aggiornare tutti i pacchetti installati in Kali Linux alle versioni più recenti lanciando i seguenti 2 comandi da terminale
sudo apt-get update
sudo apt-get upgrade

WMAP utilizza il database PostgreSQL di Metasploit per memorizzare i risultati della scansione pertanto, prima di avviarlo, è necessario attivare/verificare la connessione al database. 
Avviare il servizio postgresql tramite il seguente comando da terminale
sudo service postgresql start
quindi inizializzare il database eseguendo il comando
sudo msfdb init
Avvio del servizio PostgreSQL e inizializzazione del database
FIG 1 - Avvio del servizio PostgreSQL e inizializzazione del database
Terminata l'inizializzazione del database, avviare la console Metasploit eseguendo
sudo msfconsole
Avvio della console Metasploit Framework
FIG 2 - Avvio della console Metasploit Framework
All'interno della console Metasploit Framework caricare il plugin WMAP digitando
load wmap
Caricamento del plugin WMAP nella console Metasploit Framework
FIG 3 - Caricamento del plugin WMAP nella console Metasploit Framework
Per poter effettuare la scansione delle vulnerabilità è necessario, tramite wmap_sites e lo switch -a, definire il sito da verificare specificandone l'URL/IP
Ad esempio, supponendo che il server web da verificare abbia indirizzo 192.168.0.10 si utilizza il comando
wmap_sites -a http://192.168.0.10


Definizione siti con wmap_sites
FIG 4 - Definizione siti con wmap_sites
E' possibile specificare più siti. Per visualizzare l'elenco dei siti definiti si utilizza il comando
wmap_sites -l
Visualizzare l'elenco dei siti definiti
FIG 5 - Visualizzare l'elenco dei siti definiti
A questo punto bisogna impostare il sito web come target utilizzando lo switch -t con l'URL/IP o lo switch -d con l'ID. L'ID è quello visualizzato dall'output del comando wmap_sites -l come visibile in FIG 5.
Ad es:
wmap_targets -t http://192.168.0.10
wmap_targets -d 0
oppure, per testare un particolare URL del sito
wmap_targets -t http://192.168.0.10/administrator/index.php


Definizione target con wmap_targets
FIG 6 - Definizione target con wmap_targets

Anche con wmap_targets è possibile utilizzare lo switch -l per visualizzare l'elenco dei target definiti
wmap_targets -l

Eseguire il comando 
wmap_run -t
per visualizzare/predisporre l'elenco dei moduli che verranno utilizzati per la scansione del sistema target definito.
Visualizzare i moduli abilitati con wmap_run
FIG 6 - Visualizzare i moduli abilitati con wmap_run
Per lanciare la scansione del sistema target, eseguire il comando
wmap_run -e
La scansione completa del sistema potrebbe impiegare diverso tempo quindi pazientate.
Esecuzione scansione del sistema target
FIG 7 - Esecuzione scansione del sistema target
Al termine della scansione utilizzare il seguente comando da terminale per visualizzare l'elenco delle vulnerabilità riscontrate
vulns
Visualizzare l'elenco delle vulnerabilità riscontrate
FIG 8 - Visualizzare l'elenco delle vulnerabilità riscontrate
Le vulnerabilità individuate saranno evidenziate tramite l'identificatore CVE (Common Vulnerabilities and Exposures). Per verificare la disponibilità di eventuali exploit basterà effettuare una ricerca su google o su www.exploit-db.com.






martedì 5 giugno 2018

Apple iPhone: Visualizzare in dettaglio la potenza del segnale telefonico

I dispositivi iPhone, così come gran parte degli smartphone, visualizzano la qualità del segnale attraverso un grafico composto da 5 barre/punti. Tale rappresentazione grafica può risultare insufficiente nel caso si intenda verificare con precisione la potenza del segnale. Per conoscere precisamente il valore della ricezione del segnale telefonico è possibile accedere al menu di servizio Field Test digitando, dall'App Telefono, *3001#12345#* e cliccando sull'icona verde come per effettuare una normale chiamata.
Apple iPhone, accedere al menu Field Test
FIG 1 - Apple iPhone, accedere al menu Field Test

I sotto menu di Field Test consento di visualizzare e agire su diverse informazioni/impostazioni del device. Accedere alla sezione LTE\Serving Cell Measurements all'interno della quale è presente il valore rsrp0 che rappresenta l'intensità del segnale. Il valore è espresso in forma negativa quindi più il valore si avvicina allo 0 migliore sarà la qualità del segnale.





venerdì 18 maggio 2018

MS Exchange: Verificare la regola di posta indesiderata impostata su una casella di posta tramite EMS

Per visualizzare la configurazione della regola di posta indesiderata di una mailbox è possibile utilizzare il cmdlet Get-MailboxJunkEmailConfiguration tramite Exchange Management Shell.
La sintassi del comando è la seguente:
Get-MailboxJunkEmailConfiguration [-Identity] <MailboxIdParameter> [-Credential <PSCredential>] [-DomainController <Fqdn>] [-ReadFromDomainController] [-ResultSize <Unlimited>][<CommonParameters>]

Parametri principali


Identity
Il parametro identity permette di specificare la casella di posta che si intende verificare. Al parametro può essere passato il Display name, l'Alias, il Distinguishe name (DN), l'indirizzo email, l'User ID o l'User Principal Name (UPN). E' possibile anche utilizzare i carattery jolly (*) per identificare più caselle di posta.

Credential
Permette di specificare le credenziali, usename e password, con cui eseguire il comando. Generalmente tale parametro viene utilizzato all'interno degli script o quando si ha la necessità di utilizzare credenziali di un utente abilitato ad eseguire l'operazione.

DomainController
Permette di specificare il Domain Controller che il comando dovrà interrogare per recuperare le informazioni da Active Directory.

ReadFromDomainController
Il parametro consente di specificare che le informazioni devono essere lette da un controller di dominio nel dominio dell'utente.

ResultSize
Permette di indicare il numero massimo di oggetti da restituire. Il valore di default è 1000 se si intende visualizzare tutti gli oggetti al parametro va passato il valore Unlimited.



Esempi


Esempio 1
Get-MailboxJunkEmailConfiguration GLUBRANO
oppure
Get-MailboxJunkEmailConfiguration -Identity GLUBRANO
Visualizza la configurazione della regola di posta indesiderata relativa alla mailbox specificata.
Get-MailboxJunkEmailConfiguration, Visualizzare configurazione regola posta indesiderata
FIG 1 - Get-MailboxJunkEmailConfiguration, Visualizzare configurazione regola posta indesiderata

Esempio 2
Get-MailboxJunkEmailConfiguration -Identity * | Where {$_.Enabled -eq $false}
Visualizza la configurazione della regola di posta indesiderata per tutte le mailbox su cui la regola è disabilitata.




martedì 15 maggio 2018

MS Exchange: Individuare quali cmdlet sono disponibili per gli amministratori di Exchange Online

Microsoft Exchange Online può essere gestito da riga di comando tramite Exchange Online PowerShell. Anche se la maggior parte dei cmdlet disponibili per gli amministrazioni di Exchange Online possono essere utilizzati con la versione locale di Exchange Server, esistono circa 40 cmdlet che possono essere utilizzati esclusivamente con la versione online.

Per recuperare facilmente l'elenco dei cmdlet disponibili, eseguire il comando Get-Module da Exchange Management Shell. Il comando restituirà l'elenco di tutti i moduli al momento caricati nell'istanza di Windows PowerShell.

Exchange Management Shell, Get-Module
FIG 1 - Exchange Management Shell, Get-Module

In FIG 1 il modulo tmp_n1nnov4v.dpv è quello relativo ad Exchange Online. Il modulo non è installato localmente nel computer ma viene generato dinamicamente ogni volta che ci si connette ad Exchange Online. Proprio perché generato dinamicamente, il nome del modulo cambia ad ogni connessione ad Exchange Online ma è facilmente identificabile in quanto inizia sempre per "tmp".
Conoscendo il nome del modulo è possibile utilizzarlo con il parametro -Module del comando Get-Command come indicato di seguito per avere l'elenco di tutti i cmdlet di Exchange Online
Get-Command -Module "tmp_n1nnov4v.dpv"

Trattandosi di un elenco di 490 cmdlet è possibile eseguire la redirezione dell'output verso un file tramite l'operatore > con il comando
Get-Command -Module "tmp_n1nnov4v.dpv" > c:\ElencoCmdlet.txt
oppure utilizzare il comando More, come indicato di seguito, per visualizzare una schermata alla volta
Get-Command -Module "tmp_n1nnov4v.dpv" | More

Get-Command, visualizzare l'elenco dei cmdlet disponibili
FIG 2 - Get-Command, visualizzare l'elenco dei cmdlet disponibili

Se si intende visualizzare solo un determinato sottoinsieme di cmdlet è possibile filtrarli tramite il parametro -Name e il carattere Jolly (*). 
Ad es. per visualizzare i cmdlet il cui nome inizia per Enable si utilizza il comando
Get-Command -Name "Enable*" -Module "tmp_n1nnov4v.dpv" 

Get-Command, ricerca tra i cmdlet disponibili
FIG 3 - Get-Command, ricerca tra i cmdlet disponibili




lunedì 14 maggio 2018

Oracle VM VirtualBox: Comprimere un disco virtuale allocato dinamicamente

Creando una nuova Virtual Machine, Virtualbox crea un nuovo file per ciascun disco del sistema guest. I dischi possono essere preallocati occupando, fin dal primo istante, tutto lo spazio a loro riservato oppure, come previsto di default, con allocazione dinamica in cui la dimensione del file crescerà man mano che il sistema guest scriverà dati sull'unità virtuale. Con l'allocazione dinamica la dimensione del file non diminuisce automaticamente quando si cancellano dati sul disco virtuale, questo perché l'ottimizzazione dei dati è un processo piuttosto lungo e impatta sulle prestazioni della VM pertanto si è preferito relegare la questione ad un'operazione di manutenzione specifica.
Oracle VM VirtualBox
FIG 1 - Oracle VM VirtualBox

Innanzitutto accertarsi che il disco da compattare sia di tipo dinamico e di aver cancellato i file inutili dal disco virtuale. 

Oracle VM VirtualBox, disco allocato dinamicamente
FIG 2 - Oracle VM VirtualBox, disco allocato dinamicamente

Se la VM è dotata di sistema operativo Windows può essere utile avviare la deframmentazione del disco virtuale. Prima di procedere alla compressione del disco è necessario azzerare tutte le zone "vuote", per farlo è possibile utilizzare l'utility SDelete. Una volta scaricato e scompattato il tool basterà avviarlo da riga di comando, all'interno della macchina guest, utilizzando la sintassi sdelete c: -z. Completato anche questo passaggio, eseguire lo shutdown della macchina virtuale e chiudere VirtualBox. Dal  prompt dei comandi del sistema Host raggiungere la cartella di VirtualBox (generalmente C:\Programmi\Oracle\VirtualBox) e digitare la seguente stringa
VBoxManage.exe modifymedium disk "c:\percorso\disco.vdi" --compact
dove al posto di c:\percorso\disco.vdi va indicato il percorso e il nome del file .vdi relativo al disco virtuale da compattare. Il comando compatterà il disco virtuale liberando spazio sul disco del sistema Host.
Se all'interno della VM sono presenti dati importanti è sempre consigliabile effettuare un backup del disco virtuale prima di procedere a qualsiasi operazione.