giovedì 5 luglio 2018

PowerShell: Forzare l'esecuzione di uno script con privilegi elevati

Chi crea script PowerShell sa bene che alcune operazioni, per essere portate correttamente a termine, richiedono l'esecuzione con privilegi elevati. Purtroppo non c'è la possibilità di cliccare con il tasto destro del mouse sul file PS1 e selezionare "Esegui come amministratore" dal menu contestuale come avviene ad esempio con i file eseguibili. 
A questa mancanza è possibile sopperire aggiungendo allo script il seguente codice pubblicato sullo Script Center di Microsoft:

function Use-RunAs 
{    
    # Check if script is running as Adminstrator and if not use RunAs 
    # Use Check Switch to check if admin 
     
    param([Switch]$Check) 
     
    $IsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()` 
        ).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") 
         
    if ($Check) { return $IsAdmin }     
 
    if ($MyInvocation.ScriptName -ne "") 
    {  
        if (-not $IsAdmin)  
        {  
            try 
            {  
                $arg = "-file `"$($MyInvocation.ScriptName)`"" 
                Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList $arg -ErrorAction 'stop'  
            } 
            catch 
            { 
                Write-Warning "Error - Failed to restart script with runas"  
                break               
            } 
            exit # Quit this session of powershell 
        }  
    }  
    else  
    {  
        Write-Warning "Error - Script must be saved as a .ps1 file first"  
        break  
    }  
} 

La function, che va richiamata prima di eseguire altre operazioni, non fa altro che verificare se lo script è stato eseguito in una console con i permessi di amministratore e, in caso contrario, provvede autonomamente a rilanciarlo con i permessi elevati.
Se non è stato fatto il login con un utenza amministrativa verranno richieste le credenziali.
PowerShell, Esecuzione script con privilegi elevati
FIG 1 - PowerShell, Esecuzione script con privilegi elevati

Dal seguente link è possibile scaricare lo script di esempio
DOWNLOAD



giovedì 28 giugno 2018

Convertire una pagina web in PDF

Per convertire una pagina web in PDF è possibile procedere in diversi modi. Un modo semplice che non richiede l'installazione di alcun software è quello di utilizzare il servizio Web2PDF direttamente online.

Dal proprio browser posizionarsi sulla pagina  www.web2pdfconvert.com quindi digitare/incollare nell'apposita casella l'indirizzo della pagina web che si intende convertire in PDF. 

Web2PDF, Convertire una pagina web in PDF
FIG 1 - Web2PDF, Convertire una pagina web in PDF
Cliccando sull'icona della chiave inglese è possibile personalizzare alcune impostazioni. Per avviare la conversione basta cliccare sul pulsante Convert to PDF
Al termine della conversione appariranno i pulsanti per il download del file PDF, il salvataggio su Dropbox o su Google Drive.
Web2PDF, Download file PDF
FIG 2 - Web2PDF, Download file PDF
All'interno del file PDF verranno mantenuti i link ad altre pagine web. Tale processo può essere utilizzato anche per aggirare il proxy aziendale e visualizzare, in modo semplice e senza sforzo, il contenuto di pagine web bloccate.




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.