Nei capitoli precedenti della rubrica su Metasploit Framework, ho realizzato tutte le guide e presentato tutti gli screenshot utilizzando msfconsole, la famosa shell interattiva, tralasciando le due sorelle: msfcli e Armitage. L’ho fatto per una ragione precisa: sebbene ognuna delle tre interfacce abbia pregi e difetti, msfconsole ha il giusto mix di stabilità, semplicità di utilizzo e di consultazione e ampiezza nelle possibilità d’azione, che la rende perfetta sia per l’apprendimento da parte di neofiti, sia all’utilizzo complesso degli esperti. Non ultimo fra i motivi, è la mia preferita!
Continuo a tralasciare per ora msfcli. È adatta solo ad utenti esperti e il più delle volte solo per utilizzi specifici, quali lo sviluppo e il debugging di nuovi moduli.
Mi interessa presentare invece l’interfaccia grafica sviluppata da Raphael Mudge: Armitage. Sicuramente piacerà ai più pigri, in quanto permette di risparmiare notevolmente il numero di caratteri battuti sulla tastiera a discapito del sapere cosa si sta facendo e agli appassionati di film hollywoodiani, dove un improbabile ragazzino nerd defaccia con quattro click il sistema di sicurezza del Pentagono. Scherzi e malignità a parte, Armitage ha una serie di aspetti positivi, come la possibilità di collegarsi ad un’istanza remota di Metasploit, che lo rende particolarmente adatto per i red team, inoltre offre una panoramica facilmente accessibile di buona parte degli strumenti a disposizione.
Resta il fatto che continuo a consigliarne l’utilizzo solo agli utenti con un minimo di infarinatura sul tema, dato che usandolo non si impara niente.
Un cenno sul nome: Armitage
Premetto che è una mia considerazione e che non sono riuscito a trovare fonti certe su quanto sto per scrivere. Consiglio, a chi non l’avesse letto, il romanzo Neuromante di William Gibson.
Case è un cowboy della consolle, il nome che viene dato agli hacker da Gibson. Come pena per le sue scorribande informatiche, gli viene danneggiato il sistema nervoso in modo che non sia più in grado di connettersi alla Matrice, la rete globale. Verrà ingaggiato per una missione da un losco figuro in cambio della possibilità di collegarsi nuovamente al Cyberspazio. Indovinate come si chiama il personaggio che recluta Case… Sì, proprio Armitage.
Il tutto per dire che penso che il nome derivi dal romanzo di Gibson.
Avviare Armitage
Ho sviluppato questa guida utilizzando Armitage su Kali Linux. Il famoso sistema operativo per il penetration testing viene distribuito con Metasploit e Armitage già installati di default. Come abbiamo visto nelle precedenti guide su Metasploit è necessario avviare il servizio postgresql per iniziare a giocare con Armitage. Per farlo digitiamo da terminale il comando
service postgresql start
e avviamo Armitage.
Si aprirà una piccola finestra per la configurazione del tool, nella quale, a meno di non necessitare di configurazioni particolari, possiamo lasciare i parametri di default
Un’ulteriore finestra di dialogo ci avvisa del fatto che il server RPC non è avviato e che cliccando su Yes, Armitage lo avvierà per noi
Dopo qualche secondo si avvierà Armitage, presentandoci la sua interfaccia grafica
Subito potrà sembrare un po’ scarna, ma andando avanti con la pratica ci accorgeremo che non è così! Di default presenta tre riquadri ridimensionabili a piacere dall’utente. Partendo dall’alto a sinistra, il riquadro dedicato ai moduli di Metasploit, suddivisi in moduli ausiliari, exploit, payload e moduli per post explotation. Nella parte bassa di questo riquadro, una comodissima barra di ricerca istantanea per i vari moduli.
Sempre in alto, stavolta a destra, una parte dello schermo, al primo avvio totalmente nera, sarà dedicata ad ospitare i vari host bersaglio connessi alla rete.
Nella parte bassa dell’interfaccia, il riquadro dedicato a msfconsole funziona proprio come quello visto nei tutorial precedenti. Da notare, la possibilità di aggiungere o togliere varie tab, rendendo così più dinamica l’interazione con msfconsole.
Nozioni preliminari sull’ambiente di test
Come scritto in precedenza, per la realizzazione di questa guida, ho utilizzato Kali Linux Rolling installato sull’hard disk della macchina. La stessa installazione, con indirizzo IP 192.168.1.5, che provvede a fare da host per le macchine virtuali che verranno utilizzate come bersagli per il test. Quindi, tramite VMWare Workstation Player, ho virtualizzato tre macchine differenti, nella fattispecie
- Windows 7 Ultimate SP1, con indirizzo IP 192.168.1.10, per la simulazione di un Desktop Windows – per comodità la chiamerò VM1
- Ubuntu Server 14.04, con desktop manager xfce e indirizzo IP 192.168.1.15, per la simulazione di un server – per comodità la chiamerò VM2
- Android 6.0, con indirizzo IP 192.168.1.30, per la simulazione di un dispositivo mobile (tablet o smartphone) Android – per comodità la chiamerò VM3
Nell’immagine che segue, le tre macchine bersaglio avviate contemporaneamente
Scan della rete locale in cerca di bersagli
Nonostante le tre macchine virtuali siano avviate, Armitage non le rileva automaticamente. È necessaria una scansione della rete locale per trovare gli host connessi e importarli nel software. Proprio come Metasploit, Armitage include di default Nmap. Lo avviamo cliccando sulla voce di menù Hosts -> Nmap Scan -> Intense Scan. Si aprirà una tab nel riquadro della console con il titolo nmap. La scansione impiega qualche minuto, al termine della quale una finestra di dialogo ci informa che è completa
Cliccando su OK, potremo notare come ora il riquadro di Armitage dedicato agli host comprenda una serie di icone di monitor con gli indirizzi IP degli host collegati alla rete
La scansione ha compreso il router e la macchina attaccante, così li vediamo comparire nel riquadro dedicato agli host bersaglio rispettivamente con gli indirizzi IP 192.168.1.1 e 192.168.1.5. Dato che non mi interessa performare alcun tipo di azione su di essi, li rimuovo dal riquadro, cliccando con il tasto destro sull’icona e su Host -> Remove Host dal menù contestuale che appare.
Moduli ausiliari
Nel riquadro dei moduli, sotto la voce auxiliary, possiamo trovare una serie di moduli ausiliari atti a compiere una numerosa varietà di azioni che possono rivelarsi talvolta molto utili all’attaccante.
Per esempio, possiamo individuare la versione esatta di Windows installata su VM1 scansionando il suo dominio SMB. Per farlo selezioniamo auxiliary -> scanner -> smb -> smb_version
Lanciando il modulo ausiliario e attendendo qualche momento, potremo notare come esso identifichi alla perfezione il sistema operativo del potenziale bersaglio.
Ancora, possiamo vedere se alcune porte TCP siano aperte su VM2 selezionando auxiliary -> scanner -> portscan -> tcp. Impostiamo le porte e gli intervalli che ci interessano e l’indirizzo IP della macchina che vogliamo scansionare
Attendiamo qualche istante per ricevere una panoramica delle porte scansionate
Exploit
Entriamo nel vivo della guida, nel quale vedremo come sfruttare alcune falle già viste nei precedenti tutorial della rubrica su Metasploit Framework per prendere possesso dei tre bersagli.
ATTENZIONE: per comprendere pienamente il funzionamento di questi exploit, sarebbe opportuno dare un’occhiata ed eventualmente concludere con successo i tutorial indicati di seguito.
Per la VM1 ho utilizzato il modulo smb_delivery, già analizzato in questo articolo, quindi selezioniamo exploit -> windows -> smb -> smb_delivery dal riquadro dei moduli e configuriamo il modulo con i parametri appropriati alla situazione
Lanciamo l’exploit e restiamo in attesa che la vittima esegua il comando per la connessione
Quando la vittima esegue il comando, l’icona del monitor nel riguadro degli host bersaglio diventa rossa, segno che la macchina è sotto il nostro controllo
Passiamo alla VM2, come indicato in questo articolo, so che ospita un sito web WordPress con una versione di Revolution Slider vulnerabile alla Shell Upload. Selezioniamo quindi l’exploit dedicato dal riquadro dei moduli al percorso exploit -> unix -> webapp -> wp_revslider_upload_execute, lo configuriamo adeguatamente e lo lanciamo
Dopo pochi istanti, anche l’icona della VM2 diventerà rossa
Prendiamo possesso della terza macchina, la VM3, prendendo spunto da quanto scritto in questo articolo. Quindi selezioniamo dal riquadro dei moduli un listener generico al percorso exploit -> multi -> handler, lo configuriamo e lo lanciamo
Attendiamo che la vittima avvii l’applicazione infetta per prendere il controllo anche di questa macchina
Interagire con i bersagli avviando Meterpreter
Ognuno dei tre exploit utilizzati sopra, ha avviato una sessione di Meterpreter differente, quindi possiamo interagire con il bersaglio che desideriamo cliccando sulla rispettiva icona con il tasto destro e selezionando la voce Meterpreter [id_sessione] -> Interact -> Meterpreter Shell dal menù contestuale.
Post exploitation
Ci sono una serie di azioni che possiamo compiere una volta che abbiamo preso possesso di una macchina remota e Armitage include una serie di moduli dedicati alla post exploitation.
Mettiamo di voler sapere se la VM2 sia una macchina virtuale, ci basterà selezionare dal riquadro dei moduli la voce al percorso post -> linux -> gather -> checkvm e impostare l’ID di sessione corrispondente alla macchina. In pochi istanti avremo un messaggio di risposta
Oppure, immaginiamo di voler sapere quali applicazioni sono installate sulla VM1, scegliamo il modulo post -> windows -> gather -> enum_applications, per avere una lista completa dei programmi installati sulla macchina virtuale