mercoledì 22 marzo 2017

Windows: Session Hijacking utilizzando un account locale con i permessi di sistema

Alexander Korznikov, un ricercatore di sicurezza israeliano, ha di recente dimostrato come un account locale con elevati privilegi può eseguire l'hijacking delle sessioni di qualsiasi utente Windows loggato sulla postazione, persino di utenti con privilegi superiori o account di dominio.
In quest'articolo mostrerò quanto scoperto da Korznikov e vedremo come un account locale di Windows, con i permessi di sistema, può prendere il controllo di altre sessioni utente attive sulla postazione senza conoscerne la password.

ATTENZIONE:
Danneggiare o violare 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.

La procedura  può essere eseguita sia utilizzando il Task Manager sia utilizzando Remote Desktop Protocol (RDP) tramite TSCON. In entrambi i casi è necessario procurarsi PSEXEC. L'utility può essere scaricata sia singolarmente da QUI sia come parte integrante della Sysinternals Suite.

Supponiamo che l'utente abbia bloccato il computer con la sua utenza (ad es. utilizzando la combinazione WIN+L o premendo CTRL+ALT+CANC e selezionando Blocca) e si sia allontanato dalla postazione. Possiamo prendere il controllo della sessione utente bloccata utilizzando uno dei seguenti metodi.



Metodo 1: Prendere il controllo della sessione dell'account vittima tramite il Task Manager

  • Eseguire il logon con altro utente, amministratore locale della workstation.
    Eseguire logon con altro account amministratore locale
    FIG 1 - Eseguire logon con altro account amministratore locale
  • Avviare il Task Manager/Gestione attività e selezionare la scheda Utenti. Nella colonna ID prendere nota dell ID relativo all'account amministratore locale (in FIG 2 l'ID corrisponde ad 8).
    Gestione attività, ID sessione utente amministratore locale
    FIG 2 - Gestione attività, ID sessione utente amministratore locale
  • Avviare il prompt dei comandi come amministratore.
  • Accedere alla cartella contenente PSEXEC e utilizzarlo per lanciare il Task Manager con l'utenza System tramite il seguente comando
    psexec -s \\localhost -i 8 taskmgr
    dove 8 rappresenta l'ID recuperato nei passi precedenti. Cliccare sul pulsante Agree all'eventuale visualizzazione del messaggio relativo alle condizioni di licenza di PSEXEC.

    Avvio del Task Manager con l'utenza System tramite PSEXEC
    FIG 3 - Avvio del Task Manager con l'utenza System tramite PSEXEC
  • Nella nuova finestra del Task Manager selezionare nuovamente la scheda Utenti, cliccare con il tasto destro del mouse sulla sessione della vittima di cui si vuole prendere il controllo e selezionare Connetti. A questo punto ci ritroveremo all'interno della sessione della vittima.

    Connetti alla sessione della vittima tramite Task Manager/Gestione attività
    FIG 4 - Connetti alla sessione della vittima tramite Task Manager/Gestione attività

Metodo 2: Prendere il controllo della sessione dell'account vittima tramite TSCON

  • Aprire il prompt dei comandi come amministratore.
  • Spostarsi nella cartella contenente PSEXEC  e utilizzarlo per aprire un prompt dei comandi con l'account System eseguendo
    psexec -s \\localhost cmd
  • Per conoscere con quale utenza si sta lavorando eseguire il comando
    whoami
    Assicurarsi che in risposta si riceva nt authority\system.
  • Digitare ed eseguire il comando
    query user
    e prendere nota dell'ID relativo alla sessione della vittima (In FIG 5 l'ID della vittima corrisponde a 9).

    Recuperare l'ID della sessione della vittima
    FIG 5 - Recuperare l'ID della sessione della vittima
  • Connettersi alla sessione della vittima eseguendo
    tscon 9 /dest:console
    dove 9 rappresenta l'ID della sessione verificata nel passo precedente. 

I metodi sopra descritti funzionano con tutte le versioni di Windows comprese le versioni Server.




giovedì 16 marzo 2017

Resettare la password del BIOS/EFI/UEFI

Il BIOS (Binary Input-Output System) e i suoi successori EFI (Extensible Firmware Interface) e UEFI (Unified Extensible Firmware Interface) forniscono una serie di funzionalità basilari per l'utilizzo e il corretto funzionamento dell'hardware di un computer.

Tra le diverse funzionalità messe a disposizione da queste tecnologie c'è quella che consente all'utente di proteggere l'accesso al sistema tramite una password (da non confondere con la password del sistema operativo).

Lo scopo di questo articolo è quello di mostrare come by-passare o resettare questo tipo di password.

ATTENZIONE:
Danneggiare o violare 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.


I metodi generalmente utilizzati sono 3: Reset CMOS, Rimozione della batteria tampone, sfruttare una backdoor del produttore.


Metodo 1: Reset CMOS

Su gran parte delle schede madri dei PC è presente un'interruttore o un jumper, generalmente contrassegnato con una scritta come CLR CMOS CMOS, che consente il reset delle impostazioni CMOS.
Jumper per il reset del CMOS
FIG 1 - Jumper per il reset del CMOS


Metodo 2: Rimozione batteria tampone

Le schede madri dei PC sono dotati di batteria tampone che consente di mantenere i dati all'interno del CMOS anche quando vengono spenti e staccati dalla rete elettrica. Rimuovendo per diverso tempo tale batteria, le informazioni all'interno del CMOS vengono perse e al successivo avvio verrano caricate le impostazioni di fabbrica.
Batteria tampone scheda madre
FIG 2 - Batteria tampone scheda madre

Metodo 3: Backdoor

I precedenti metodi hanno lo svantaggio di resettare, oltre alla password, anche le altre impostazioni memorizzate all'interno del CMOS; inoltre, non sempre è agevole accedere alla scheda madre del dispositivo (si pensi ad es. ai portatili). Un'alternativa consiste nel recuperare una master password inserita dal produttore del sistema che ne consenta lo sblocco senza interferire con le altre impostazioni. Purtroppo (o per fortuna) ogni produttore adotta metodi diversi pertanto i passaggi da seguire possono differire leggermente. Un punto di riferimento per tale metodo è il sito https://bios-pw.org.
Master password, bios-pw.org
FIG 3 - Master password, bios-pw.org

Il valore da inserire nell'apposita casella dipende dal produttore e dal modello della scheda madre: in alcuni casi va inserito il seriale del PC o il codice di matricola nel caso di prodotti DELL, in altri casi il codice visualizzato a seguito blocco del sistema dopo n tentativi di accesso falliti. Una volta inserito il codice basta cliccare sul pulsante Get password per ottenere un elenco di password da provare. Per alcuni modelli DELL è necessario premere CTRL+INVIO (e non solo INVIO) quando si prova ad immettere la master password del BIOS/UEFI suggerita dal sito.



mercoledì 15 marzo 2017

Windows Quick Tip: Recuperare le informazioni del BIOS dal registro di sistema

Nell'articolo PowerShell: Visualizzare le informazioni sul BIOS utilizzando Get-WmiObject è stato mostrato come recuperare le informazioni del BIOS utilizzando PowerShell. Alcune di queste informazioni possono essere recuperate anche tramite il registro di sistema:

  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi sulla chiave
    HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS 
    All'interno di tale chiave si trovano diverse informazioni tra cui il produttore del BIOS (BIOSVendor), la versione (BIOSVersion), la data di rilascio (BIOSReleaseDate) e altre informazioni relative al sistema.
Registro di sistema, informazioni relative al BIOS
FIG 1 - Registro di sistema, informazioni relative al BIOS

Le informazioni possono essere visualizzate anche interrogando il registro di sistema dal prompt dei comandi tramite reg query:
reg query HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS


Prompt dei comandi, interrogare chiavi di registro tramite REG QUERY
FIG 2 - Prompt dei comandi, interrogare chiavi di registro tramite REG QUERY



lunedì 13 marzo 2017

PowerShell: Visualizzare le patch di sicurezza installate sul sistema

Il cmdlet Get-CimInstance, incluso in PowerShell 3.0 e successivi, cattura le istanze Common Information Model (CIM) di una classe da un server CIM. Per poter visualizzare la patch di sicurezza installate su un sistema si può utilizzare Get-CimInstance con la classe Win32_QuickFixEngineering che permette la visualizzazione degli aggiornamenti forniti da CBS (Component Based Servicing). 
Il comando da eseguire in PowerShell è il seguente
Get-CimInstance -Class Win32_QuickFixEngineering
Visualizzare le patch di sicurezza installare utilizzando la classe Win32_QuickFixEngineering
FIG 1 - Visualizzare le patch di sicurezza installare utilizzando la classe Win32_QuickFixEngineering

Per visualizzare le patch di sicurezza installate negli ultimi 2 mesi si può utilizzare il comando
Get-CimInstance -Class Win32_QuickFixEngineering | Where-Object { $_.InstalledOn -gt (Get-Date).AddMonths(-2) }





venerdì 10 marzo 2017

PowerShell: Recuperare la password da un oggetto PSCredential

Diversi cmdlet PowerShell permettono l'utilizzo di un oggetto PSCredential per essere eseguiti con un particolare account. Proprio per questo l'oggetto PSCredential viene spesso utilizzato per memorizzare le credenziali in modo da  poterle richiamare in diverse parti di uno script.
Per creare un'istanza di un oggetto PSCredential può essere utilizzato il cmdlet Get-Credential
Ad es. eseguendo da PowerShell il comando
$credenziali=Get-Credential
verrà aperta una finestra di richiesta credenziali (FIG 1). Inserendo utenza e password queste verranno memorizzate all'interno dell'oggetto PSCredential $credenziali
Richiesta credenziali di Windows PowerShell
FIG 1 - Richiesta credenziali di Windows PowerShell

Per visualizzare i membri (metodi e proprietà) dell'oggetto viene utilizzato il cmdlet Get-Member 
$credenziali | Get-Member
Visualizzare i membri di un oggetto PSCredential
FIG 2 - Visualizzare i membri di un oggetto PSCredential

Analizzando le proprietà di un oggetto PSCredential (FIG 2), salta subito all'occhio che l'utenza viene memorizzata in chiaro all'interno di una comune stringa mentre la password viene memorizzata come securestring e pertanto non visibile (almeno non direttamente).

Per visualizzare il nome utente memorizzato all'interno dell'oggetto PSCredential basta utilizzare il comando
$credenziali.UserName

Eseguendo il comando
$credenziali.Password | Get-Member
verranno mostrati i metodi e le proprietà disponibili per la password (FIG 3). Tale informazioni sono d'aiuto per conoscere quali operazioni è possibile effettuare sulla password.
Ad es. per conoscere la lunghezza della password bisogna interrogare la proprietà Length
$credenziali.Password.Length
mentre per cancellarla va utilizzato il metodo Clear()
$credenziali.Password.Clear()
Recuperare informazioni sulla password da un oggetto PSCredential
FIG 3 - Recuperare informazioni sulla password da un oggetto PSCredential

Per "scoprire" la password memorizzata all'interno dell'oggetto PSCredential è possibile lanciare il seguente comando
$credenziali.GetNetworkCredential().Password
Visualizzare la password memorizzata all'interno di un oggetto PSCredential
FIG 4 - Visualizzare la password memorizzata all'interno di un oggetto PSCredential
Dalla FIG 4 si evince che la password memorizzata è "123456" (tra le password più sicure e diffuse al mondo), non resta che scrivere le credenziali su un post-it da attaccare al monitor (ndr Per chi non se ne fosse resto conto, ero sarcastico!!!).

giovedì 9 marzo 2017

Windows Quick Tip: Migliorare la leggibilità del testo sullo schermo

Sin da Windows XP, Microsoft ha incluso all'interno del sistema operativo uno strumento per l'ottimizzazione dei caratteri ClearTypeuna tecnologia complessa, con molti livelli di intervento, sviluppata da Microsoft con l'obbiettivo di aumentare la leggibilità del testo visualizzato sugli schermi LCD. Tale tecnologia effettua una sorta di rendering dei pixel tramite tecniche di antialiasing in modo da arrotondare i caratteri, garantendo una linea morbida e continua, e ridurre l'effetto di 'scalettamento' (aliasing).

Per richiamare il tool di calibrazione e procedere all'ottimizzazione del testo visualizzato:
  • Premere la combinazione di tasti WIN+R e digitare cttune seguito da invio;
    Eseguire CTTUNE
    FIG 1 - Eseguire CTTUNE
  • Nella finestra che appare selezionare la casella Attiva ClearType e cliccare su Avanti;
    Attiva ClearType
    FIG 2 - Attiva ClearType
  • Viene effettuata una verifica sul monitor e sulla risoluzione impostata (per i monitor LCD è consigliabile impostare la risoluzione nativa). Cliccare su Avanti per proseguire;

    Verifica impostazioni risoluzione nativa monitor
    FIG 3 - Verifica impostazioni risoluzione nativa monitor
  • Nelle finestre successive viene richiesto di selezionare il riquadro con il testo che risulta più leggibile tra quelli proposti. Selezionato il riquadro che si ritiene più opportuno cliccare su Avanti per procedere nella calibrazione.
    Scelta visualizzazione migliore
    FIG 4 - Scelta visualizzazione migliore
  • Al termine verrà visualizzato il messaggio si sintonizzazione completata.

    Sintonizzazione del testo sul monitor completata
    FIG 5 - Sintonizzazione del testo sul monitor completata




mercoledì 8 marzo 2017

Windows Quick Tip: Copiare l'elenco dei file di una cartella all'interno della Clipboard

In alcune circostanze può essere utile avere la possibilità di esportare, in un file di testo o in un documento, l'elenco dei file presenti all'interno di una cartella. Purtroppo Windows non implementa questa funzione all'interno di Esplora File ma è possibile possibile porvi rimedio agendo tramite il Prompt dei Comandi.

Se tale esigenza è frequente può essere utile implementarla all'interno del menu contestuale di Esplora File agendo tramite il registro di sistema:
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi sulla chiave  HKEY_CLASSES_ROOT\Directory\shell
  • All'interno della chiave shell creare una nuova sottochiave e assegnargli un nome (ad es. ListFileToClipboard).
  • Selezionare la chiave appena creata, eseguire un doppio click su (Predefinito) e, in Dati valore, inserire la stringa che si intende visualizzare nel menu contestuale (ad es. Invia elenco file alla Clipboard) quindi cliccare su OK.
    Creazione chiave di registro relativa al menu contestuale
    FIG 1 - Creazione chiave di registro relativa al menu contestuale
  • Selezionare la chiave creata precedentemente e creare, al suo interno, una nuova sottochiave rinominandola in Command.
  • All'interno della chiave Command, cliccare 2 volte su (Predefinito) e in Dati valore inserire il seguente comando 
    cmd /c dir "%1" /b /a:-d /o:n | clip 
    A questo punto aprendo Esplora File e cliccando con il tasto destro su una cartella, apparirà la voce inserita che permette di copiare l'elenco dei file contenuti all'interno della clipboard.
    Comando del menu contestuale per inviare l'elenco dei file alla clipboard
    FIG 2 - Comando del menu contestuale per inviare l'elenco dei file alla clipboard

La stringa del comando è composta da diversi parti:
dir "%1" richiede l'elenco dei file nella cartella selezionata.
/b utilizza liste senza intestazione e informazioni di riepilogo.
/a:-d esclude le cartelle.
/o:n visualizza l'elenco in ordine alfabetico.
| clip indirizza l'output del comando alla clipboard.


Per inserire/rimuovere la nuova voce all'interno del menu contestuale è possibile scaricare i file .reg dal seguente link
DOWNLOAD