No results found
Dopo aver descritto, in un tutorial dedicato, i tool per eseguire attacchi a reti e macchine di rete, vediamo in pratica come si implementa un attacco informatico, dedicando, in un secondo momento, spazio alle tecniche esistenti di difesa e soprattutto agli strumenti in campo.
Vediamo subito la Privilege Escalation (elevazione dei privilegi) che intendiamo come lo sfruttamento di una vulnerabilità oppure una misconfiguration e quindi un errore di configurazione che consente a un malintenzionato (un utente che in realtà non dovrebbe avere accesso a certe informazioni) di avere accesso ai dati residenti su una macchina.
Quindi la Privilege escalation si può strutturare in diverse modalità che sono Privilege Escalation orizzontale e Privilege Escalation verticale: la differenza è che nella Privilege Escalation orizzontale ci si muove sostanzialmente sullo stesso livello, però ogni utente ha informazioni diverse. Quindi la Privilege Escalation orizzontale sfrutta le informazioni di un utente per rubare informazioni di un altro utente e così via; casomai un utente ha accesso ai dati bancari, un altro utente ha accesso ad esempio ai dati relativi alla logistica e così via, pertanto a seconda dell'utente che si attaccherà si otterranno informazioni diverse.
La Privilege escalation verticale in sostanza è più pericolosa perché mira a scalare la gerarchia di rete e quindi punta all’amministratore di sistema, ovvero all'utente root, perché impossessandosi di questo diventa possibile fare qualsiasi cosa: modificare e creare utenti, avere accesso a informazioni dei singoli utenti, gestire i permessi, quindi praticamente si può fare tutto
Esistono varie metodologie per portare gli attacchi verso un'azienda: si può pensare ad un attacco diretto, quindi tramite le e-mail di phishing con le quali l’attaccante cerca di carpire informazioni come username e password aziendali, dati e informazioni di carte di credito, indirizzo IP del sistema.
La prima cosa che un hacker deve conoscere per effettuare un attacco è l'indirizzo IP del server, quindi l'indirizzo IP del sito web dell'azienda che ha preso di mira e di cui vuole acquisire informazioni; per conoscere l’IP si può utilizzare un tool gratuito ...un servizio presente sistemi dedicati al Pen Testing (Parrott e KaliLinux) che si chiama whatweb del quale nell’immagine seguente è riportato uno screenshot. Una volta installato lo strumento, in riga di comando si scrive whatweb seguito dal nome del sito e vengono restituite informazioni come quelle visualizzate, che nello specifico riguardano Google.
Notare che nell’immagine sono stati cancellati gli indirizzi IP per riservatezza.
Esistono altri strumenti del genere, ossia per fare Information Gathering, come ad esempio shodan e maltego, che oltre all’indirizzo IP permettono di avere informazioni più importanti e anche più dettagliate. Shodan in realtà non è uno strumento disponibile in KaliLinux e Parrotto ma è semplicemente un'interfaccia web dove è possibile ottenere informazioni aperte su una vulnerabilità; è un'applicazione molto potente che riesce a riportare dati e informazioni importanti da IP non protetti. Ad esempio non molto tempo fa capitò che con shodan fosse possibile accedere a telecamere IP che non avevano alcun sistema di sicurezza e cui quindi si poteva avere accesso tramite l'indirizzo IP associato e visionare ciò che riprendevano: una pratica indubbiamente illecita ma possibile, che vi dà un’idea dei rischi connessi agli accessi fraudolenti alle reti.
Uno dei tool più utilizzati per testare la sicurezza di una rete e dei computer che ne fanno parte è Nmap, che utilizzeremo per portare un attacco su un indirizzo IP corrispondente a una macchina resa volutamente vulnerabile. Nmap (https://nmap.org/) è un tool utilizzabile sia da interfaccia grafica (Zenmap) sia da linea di comando con la specifica sintassi; permette non solo di effettuare scansioni, ma anche di fare analisi delle vulnerabilità.
Nel nostro caso lo lanceremo da shell di Linux con il seguente comando:
nmap –T4 –A 10.10.10.165
dove i numeri corrispondono all’indirizzo IP della macchina target e il comando è relativo alla richiesta di scansione.
Lo strumento -T4 significa Timing Template, il cui parametro è la velocità della scansione che va da 1 a 5: indicando 4 stiamo dicendo a Nmap che la scansione dovrà essere rapida e di conseguenza “brutale” e diretto.
Con –A chiediamo ad Nmap di elencare, una volta completata la scansione, i servizi esposti nella macchina target. Qui non è stato utilizzato, ma di solito si utilizza anche lo strumento –V che significa verbose e che ci aggiorna in tempo reale sui risultati della scansione, quindi ci dà in tempo reale le informazioni riguardanti l’attività.
Con Invio viene lanciata la scansione, la quale una volta terminata fornisce un elenco di porte e servizi. Per prima cosa si vanno ad analizzare le porte aperte e lo stato corrispondente
Supponiamo che la scansione ci restituisca lo stato OPEN sia della porta 22 che della porta 80 e che queste siano le uniche informazioni disponibili dalla scansione stessa; la situazione è meglio descritta dall’immagine seguente, nella quale notiamo anche che c'è una porta SSH che serve, quindi, per il collegamento da remoto.
Ovviamente la SSH è una Secure Shell, quindi è protetta in qualche modo da password (insomma, da una chiave).
Dalla stessa schermata vediamo la porta 80 cui è associato il servizio di rete Internet e subito notiamo una versione del servizio nostromo 1.9.6. Senza sapere a cosa si riferisca e a cosa serva, semplicemente andiamo a fare una semplice ricerca su Google mettendo come parole chiave:
nostromo 1.9.6 exploits
Così andiamo a vedere se ci sono esploit (una forma di attacco in rete) disponibili, pronti e facilmente utilizzabili, per esempio con Metasploit, che è un tool molto utilizzato per questo genere di cose.
Tra i primi risultati della ricerca e fra i suggerimenti di Google notiamo Remote Control, quindi su questa versione del server nostromo è presente una remote code execution, ovvero esecuzione di codice da remoto: si tratta di un tipo di attacco informatico in rete che consiste nell’esecuzione di codice da remoto su una macchina della rete target; codice che spesso e volentieri è malevolo
Lo strumento remote control execution è uno strumento che mette a disposizione anche Parrot, quindi la prima cosa da fare è avviare questo strumento con il comando:
msf console
che avvia la console di Metasploit. Una volta avviata la console, andiamo a utilizzare il comando:
search nostromo
per vedere se all'interno del database di Metasploit c’è un esploit disponibile per questa vulnerabilità;la risposta alla ricerca è che c’è e si chiama:
esploit/multi/http/nostromo_code_exec
Non sappiamo se questo esploit effettivamente funziona, perché molte volte capita che un servizio è vulnerabile in una sola versione che però non è quella del servizio trovato, ovvero cui è stata applicata una patch per risolvere quella numerabilità e nel frattempo il database di Metasploit non è stato aggiornato.
Possiamo comunque tentare, quindi per lanciare l’attacco si utilizza il comando:
use esploit/multi/http/nostromo_code_exec
seguito dalla pressione di Invio. Con tale comando ci verrà mostrato:
esploit(multi/http/nostromo_code_exec) >
e digitando options seguito da Invio, dopo il prompt (segno di maggiore) ci verranno elencate a video tutte le informazioni che dobbiamo passare a Metasploit per poi lanciare l’attacco.
Nel caso specifico andiamo a settare il localhost, che sostanzialmente è l'attaccante (il nostro hacker virtuale di test...) con il comando:
set LHOST IP address
dove al posto di IP address occorre scrivere l’indirizzo IP della macchina target; riprendendo l’esempio iniziale, scriveremo:
set LHOST 10.10.10.165
Poi impostiamo il RHOSTS, vale a dire il remotehost, che è la macchina attaccante, ossia quella da cui lavoriamo con Metasploit; il comando è
set RHOSTS IP address
Fatto ciò lanciamo l’attacco con il comando Run: lo schermo proporrà l’elenco delle fasi e se andrà a buon fine, ossia se riusciremo ad avere accesso alla shell di comando della macchina sotto attacco, lo schermo mostrerà Command shell section 1 opened (immgine seguente).
Ciò significa abbiamo ottenuto l’accesso alla shell. Impartendo il comando WHOAMI (letteralmente, chi sono io?) possiamo ottenere il nome dell’utente creato dall’attacco sulla macchina, che nello specifico si chiama www.data, che ha accesso all'interfaccia web.
Abbiamo quindi un utente con dei privilegi, però questo utente non può fare quasi nulla se non modificare la pagina web e cose simili; questo a un hacker può interessare per fare un defacement, cioè modificare la pagina web e quindi comunque creare danni all'azienda.
Andiamo avanti digitando il comando shell, con il quale effettivamente apriamo la shell della macchina target e dal relativo prompt possiamo digitare i comandi che desideriamo, come fossimo sulla tastiera della macchina stessa.
Ora, se fossimo un hacker faremmo quello che si chiama footprinting o anche in realtà si chiama enumeration, ovvero l’enumerazione delle risorse; questa può essere fatta in diverse modalità:
Linenum è un tool che fornisce praticamente tutte le informazioni che potrebbero essere importanti per un attaccante; per utilizzarlo occorre installarlo sulla macchina target e ciò è possibile perché abbiamo ottenuto l’accesso alla shell. Quindi basta inserire il tool che abbiamo sulla macchina dell'attaccante nella cartella war www HTML che sarebbe la cartella che si interfaccia alla pagina web e poi avviare il servizio di Apache. Una volta avviato questo ci è possibile, nella macchina vittima, utilizzare semplicemente un WGET con l’indirizzo IP della macchina attaccante ed il nome del file da scaricare.
In questo caso si fa enumerazione, quindi si naviga all'interno delle cartelle finché non si trova qualcosa di interessante. Nell’immagine seguente vediamo cosa si trova navigando nella cartella “nostromo” dove vediamo un file chiamato nhttpd.conf che potrebbe essere interessante perché contiene informazioni di configurazione.
Nel caso specifico notiamo un nome utente “david@traverxec.htb che potrebbe essere quello dell'utente che vogliamo acquisire; le sottostanti sono altre informazioni sulle cartelle reltive al servizio nostromo.
Se troviamo un nome utente andiamo a cercare tra le cartelle quella che ha lo stesso nome: david, nel caso dell’esempio; navigando al suo interno possiamo trovarne alcune cartelle cui l’accesso è negato al nostro utente fittizio www-data, ma altre cui questo può accedere. Sicuramente se troviamo cartelle che iniziano con “public” potrebbero essere accessibili al nostro utente.
Sicuramente una cartella interessante, quando si tratta di account utente, è la protected file area, che dal nome fa intuire che contiene dati protetti o comunque sensibili. Un file che si potrebbe trovare qui è qualcosa del tipo backup-SSH-identity-file.tgz che contiene il backup delle informazioni SSH che servono per connettersi tramite SSH con l'utente che abbiamo appena trovato.
Trovando un file del genere possiamo scaricarlo sulla macchina attaccante: usciamo dalla shell impartendo il comando:
exit
e, tornando in locale, ossia sulla macchina usata per portare l’attacco, impartiamo il comando:
download
seguito dal percorso dove il file d’interesse si trova.
Completato il download andiamo a impartire il comando:
tar -xf ssh.tgz
con il quale andiamo a estrarre l'archivio corrispondente al file scaricato. Poi andiamo a vedere cosa si trova all'interno, fermo restando che per vedere i file nascosti (i cui nomi sono preceduti dal punto) occorre impartire il comando
ls -la
Potremmo imbatterci in un file molto interessante chiamato autorized keys id_rsa id_rsa.pub che contiene gli elementi che consentono di effettuare un accesso tramite SSH: nel file RSA abbiamo la chiave d'accesso per collegarci in SSH.
A questo punto possiamo andare a decifrare le chiavi utilizzando uno strumento chiamato John The Ripper, molto utilizzato per decifrare tramite bruteforce; in questo caso, prima di utilizzare John The Ripper dobbiamo impartire un comando che trasforma il file in un formato adatto per l'elaborazione di John The Ripper, quindi che modifica la struttura del file che andremo a salvare in in un nuovo file. Il comando è:
ssh2john.py id_rsa > ash
che quindi salva il file trasformato in un file di nome ash.
Andiamo quindi ad utilizzare John The Ripper sfruttando il dizionario, ossia una wordlist che è una lista pubblica presente anche su Parrot e Kali Linux e che si chiama rockyou.txt e contiene circa 16 milioni di password campione; potete scaricarlo dal sito del tool.
Il comando da impartire è, quindi
john –wordlist=percorsofile/rockyou.txt
dove al posto di percorsofile scriverete il percorso in cui si trova nel vostro computer attaccante.
Premendo Invio lo strumento inizia a lavorare e quando troverà la chiave la mostrerà a video a seguito della dicitura DONE (immagine seguente).
Se ADESSO andiamo ad aprire il contenuto del file con il comando:
cat id_rsa
vediamo la chiave. Come mostrato nell’immagine seguente, la chiave è cifrata (Proc-Type: 4, ENCRYPTED); John The Ripper ci ha decifrato non la chiave, ma la password per accedere alla chiave.
Quindi abbiamo trovato la password e andiamo a collegarci in SSH con il comando:
ssh –i id_rsa david@10.10.10.165
seguito da Invio. Notate che con -i andiamo a passare la chiave per accedere all’utente david e IP è l’indirizzo IP del solito esempio, vale a dire della macchina target. In questo caso cerchiamo di fare la login a un utente vero (non a quello che avevamo usato per l’accesso remoto alla shell, www-data) della macchina target e ci viene richiesta la password, ma quella legata al file, che sostanzialmente è quella che abbiamo appena trovato. Se invece non avessimo usato -i id_rsa ma soltanto ssh david@indirizzo IP, ci sarebbe stata chiesta la password dell'utente David, ma questa, ossia la password dell'utente David, non potremo mai saperla.
Quindi in questo caso inseriamo la password appena trovata (hunter) e ci troviamo collegati in SSH all'utente David, quindi siamo riusciti ad entrare e a ottenere l'utente; abbiamo pertanto dei permessi in più permessi rispetto all'utente www-data.
In questo caso troveremo un file user.txt perché semplicemente lo scopo della macchina era trovare l’hash contenuto all’interno del file user.txt e root.txt che semplicemente dà la conferma che siamo riusciti a ottenere i permessi utente.
Una cosa che facciamo notare è che l’attacco qui simulato è stato condotto verso una macchina pubblica resa disponibile dalla piattaforma Hack The Box (https://www.hackthebox.eu/) che serve a testare l’efficacia degli attacchi informatici attraverso livelli sempre più difficili degli ostacoli di macchine da hackerare. Molto interessante per mettere alla prova le proprie capacità, quantificate mediante un punteggio che la piattaforma assegna e che in un certo senso è una forma di certificazione.
Il passo successivo di un attacco informatico è ottenere i privilegi dell'amministratore, ossia dell'utente root. Allo scopo si ripete il procedimento di enumerazione e si naviga nelle cartelle fino a trovare qualcosa come server_stats.sh nel quale certamente si troveranno informazioni interesanti (almeno in questo esempio).
Possiamo provare ad aprire questo file scritto in bash con il comando:
cat server_stats.sh
che apre i file di testo. Qui ci troveremo una situazione simile a quella evidenziata nell’immagine seguente
Possiamo vedere che c'è una riga /usr/bin/sudo ecc. Sudo significa SuperUser, quindi questo significa che sostanzialmente il comando che segue (journalctl) viene eseguito con privilegi di amministratore.
Copiamo completamente la riga del comando, ossia:
/usr/bin/sudo /usr/bin/journalctl -n5 –unostromotromo.service
che chiama un servizio nostromo quindi e via di seguito. Quindi selezioniamo il comando, clicchiamo col pulsante destro del mouse e impartiamo il comando copy, quindi lo incolliamo nella linea di comando ed eseguiamo.
A questo punto digitiamo Bin Bash! seguito da Invio: come vedete, abbiamo avuto l’accesso root semplicemente utilizzando un'altra vulnerabilità, ossia un elemento presente all'interno delle statistiche, perché le statistiche potrebbero essere dei log, quindi dei file di log; un'informazione trovata in un file di log ci permette di utilizzare uno strumento con i permessi di utente amministratore. Quindi siamo riusciti a richiamare una shell modificando semplicemente il codice e adesso abbiamo root@ il nome della macchina, quindi siamo utenti root e anche in questo caso ovviamente si può navigare all'interno delle cartelle e cercare poi il file root.txt che inizialmente ricercato
Quindi siamo riusciti dal nulla, partendo da una vulnerabilità trovata su una piattaforma sul web, a fare Privilege Escalation per arrivare poi ad avere gli utenti amministrativi.
Effettuare un esploit può essere molto impegnativo e non sempre dà il risultato atteso perché non è detto che le macchine target abbiano un livello di vulnerabilità così critico: si possono perdere mesi ad analizzare una macchina e non trovare mai nulla.
In queste situazioni è più facile cercare di sfruttare qualcosa che all'apparenza potrebbe essere difficile, ma potrebbe invece risultare il metodo migliore, ovvero il fattore umano, che rappresenta la vulnerabilità che principalmente pericolosa all'interno dell'azienda.
Le persone che non hanno conoscenza in fatto di sicurezza dell'azienda sono un mezzo più che sfruttato dagli hacker perché costituiscono una falla del sistema, in quanto possono fare per l’hacker quel che non fa l’informatica: aprire le porte della rete con comportamenti in apparenza normali
Per questo bisogna allestire un team dedicato all'analisi dei rischi e ad evitare compromissioni e quindi incidenti di sicurezza, eventualmente aiutato da strumenti che andremo ad utilizzare in quest tutorial; si tratta di strumenti utilizzabili su tutte le piattaforme, Windows, Linux e Mac.
Vediamo subito come analizzare un'e-mail, premettendo che di solito un attacco via posta elettronica può essere effettuato con:
Per evitare di aprire la e-mail, possiamo scaricare ad esempio un client di posta elettronica come Thunderbird, perché permette di analizzare in modo approfondito e semplice un'e-mail; peraltro chi è utente Linux lo puo scaricare direttamente in Parrot: basta semplicemente aprire il terminale e digitare Thunderbird. Possiamo configurare il nostro account in maniera molto semplice, inserendo le credenziali e poi possiamo aprire il browser, dove abbiamo a disposizione due pagine: virustotal e urlscan.io.
Immaginiamo dunque di aprire una e-mail sospetta, dove la prima cosa che andiamo a vedere è il mittente: supponiamo che il mittente sia digitspro seguito da caratteri alfanumerici tra i simboli di minore e maggiore, come nell’immagine seguente.
In un nome account normale avremmo soltanto digitspro, ma in realtà l’e-mail è un falso perché tale nome è seguito dai caratteri cerchiati in arancione.
Quindi questo già è indice che il messaggio proviene da un mittente palesemente malevolo e palesemente fasullo.
Ma poniamo il caso che mi sembri affidabile e proseguiamo nell'analisi: troviamo a questo punto un link descritto come: “paga i costi di spedizione”. Ovviamente non sappiamo a cosa porta e allora prima di aprire il link clicchiamo sul pulsante More in alto a destra e successivamente su view-source, oppure Visualizza sorgente (dipende se avete la versione in italiano o no). A questo punto si aprirà si aprirà il sorgente dell'e-mail: nell’immagine seguente abbiamo cerchiato un'informazione.
Prima di tutto possiamo vedere il Received from e quindi ci fa capire da dove viene il messaggio; ma soffermiamoci un momento sul Received SPF: si tratta del Sender Policy Framework, ossia semplicemente qualcosa che ci permette di capire se si tratta di una e-mail spoofata. A tale riguardo va notato che di solito l’SMTP non verifica che il mittente sia valido, quindi il protocollo per l'invio delle e-mail non è valido e quindi per questo l'e-mail può essere spoofata.
Il Received SPF ha il compito di verificare ciò, perché è un servizio messo a disposizione dei vari domini che indica quali server sono autorizzati ad inviare l'e-mail da un certo dominio. Quindi, siccome nel caso dell’immagine precedente abbiamo Received SPF:None, l'e-mail è spoofata perché non è verificata dal Received SPF, quindi già da qui capiamo che l'e-mail è malevola.
Ora, per proseguire l'analisi facciamo finta che Received SPF sia invece valorizzato a pass: l'e-mail ci sembra benigna, ma siccome non ne siamo certo procediamo con l’analisi e andiamo a copiare il link dei costi e lo incolliamo sia su virustotal che su urlscan.io per analizzarlo, ma sempre senza aprirlo.
La differenza fra questi due strumenti è che virustotal confronta il servizio con quelli messi a disposizione, mentre urlscan.io, oltre a verificare se il link e malevolo ci dà anche un'anteprima tramite degli screenshot. Ipotizziamo che il link sospetto in realtà sia “buono” sia per virustotal che per urlscan.io; quindi i link sono “clean” per entrambi i tool (immagine seguente).
Il passo successivo è l'apertura del link, che ci mostra altre informazioni, che nel caso dell’esempio sono “traccia il tuo pacco” ecc. Per quanto sinora sembri tutto a posto, anche una e-mail con un link in apparenza normale può essere una trappola; anzi, una e-mail che all’inizio si presenta come innocua può essere stata fatta apposta per trarci in inganno e può raggiungere lo scopo, in quanto vedendo che inizialmente va tutto bene sembra non essere pericolosa. Nel caso specifico, la trappola scatta quando si apre il link del tracking; infatti aprendo il link del tracking virustotal lo segnala come probabile Phishing perché un servizio su 79 disponibili (Fortinet) ci ha detto che è Phishing.
Aprendo “trova la tua consegna e paga i costi di spedizione” accediamo, però, a una pagina che riporta un forum dove inserire i dati per pagare con carta di credito, quindi senza utilizzare servizi sicuri come PayPal.
Ecco, questa è una situazione reale in cui l’e-mail non desta inizialmente sospetti e perciò un utente medio può essere indotto a proseguire e in questo caso a pagare; spesso perché messaggi del genere giocano sul fatto che spesso la richiesta in denaro è irrisoria e via di seguito.
Se provassimo a inserire in virustotal il link riportato nella barra degli indirizzi del browser quando viene mostrato il formm, ora lo riconoscerebbe certamente come malevolo; infatti l’immagine seguente ci propone la relativa schermata con la quale lo abbiamo analizzato, nella quale sono riportate più informazioni come malicious, malicious, phishing, suspicious, malware e quindi siamo sicuri al 100% che si tratta di una e-mail di phishing.
Il caso caso esemplificato riguarda qualcosa con cui si cerca di carpire informazioni informazioni relative alla carta di credito, ma potrebbe trattarsi di una e-mail che segnala che avete perso la password di accesso a un servizio o che la stessa è scaduta e vi invita a resettare la password introducendo vostri dati personali e la password che credete scaduta, ma che in realtà è valida.
Questi messaggi vengono spesso generati linkandovi a una pagina tale e quale quella reale o comunque molto simile e se introducete i dati, in realtà la procedura non sortisce altro effetto che passare i dati all’hacker di turno, che così ottiene le credenziali dell'utente (che siete voi) e a questo punto può fare ciò che desidera: da lì in poi può fare una Privilege Escalation orizzontale, verticale e così via.
Sul nostro sito è disponibile un corso di Ethical Hacking che può essere d’aiuto a comprendere tutte le problematiche sulla sicurezza informatica e che approfondisce sia quelle esposte in questo tutorial, sia tante altre, partendo dalle vulnerabilità e proponendo esercitazioni con molti tool disponibili in rete.