# Metasploit Project

Il Metasploit Project è un progetto di sicurezza informatica che fornisce informazioni sulle vulnerabilità, semplifica le operazioni di penetration testing e aiuta nello sviluppo di sistemi di rilevamento di intrusioni. Il sottoprogetto più conosciuto è Metasploit Framework, uno strumento open source per lo sviluppo e l'esecuzione di exploits ai danni di una macchina remota. Altri sottoprogetti importanti comprendono l'Opcode Database, l'archivio di shellcode e la relativa ricerca.
Il Metasploit Project è conosciuto per lo sviluppo di strumenti di elusione e anti-rilevamento, alcuni dei quali sono inclusi in Metasploit Framework. È noto anche per aver pubblicato alcuni degli exploits più sofisticati, inoltre è uno strumento potente in quanto permette ai ricercatori di investigare su alcune potenziali nuove vulnerabilità.

## Storia

Metasploit viene creato da H. D. Moore nel 2003 come strumento portabile di rete basato sul linguaggio di scripting Perl; dopo quattro anni è rilasciato completamente riscritto in Ruby. Il 21 ottobre 2009 l'azienda Rapid7 ufficializza l'acquisto del Metasploit Project. Successivamente all’acquisto, Rapid7 ha aggiunto due edizioni proprietarie open core chiamate Metasploit Express e Metasploit Pro.
Lo si potrebbe paragonare ad alcuni prodotti commerciali come Canvas di Immunity Inc. oppure Core Impact sviluppato da Core Security Technologies. Metasploit può essere utilizzato dagli amministratori per testare le vulnerabilità dei loro sistemi al fine di aumentarne il livello di sicurezza, oppure dai black hat e script kiddie per tentare di penetrarvi. Come molti strumenti relativi all’ambito della sicurezza informatica, Metasploit può essere utilizzato per scopi legittimi e/o illegali. La posizione emergente di Metasploit come framework di sviluppo di codici exploits ha portato alla pubblicazione di advisories sulle vulnerabilità dei software spesso accompagnati da un modulo exploit Metasploit di terze parti che evidenzia la vulnerabilità, i rischi e i rimedi per risolvere un determinato bug.
Metasploit 3.0 include degli strumenti di fuzzing, per scoprire vulnerabilità software da sé senza dover sviluppare degli exploits per i bugs noti. Queste nuove possibilità si sono aperte grazie all'integrazione del toolset lorcon wireless in Metasploit 3.0 nel novembre 2006. Metasploit 4.0 è stato lanciato nel mese di agosto del 2011.
Metasploit 5.0 è stato lanciato nel gennaio 2019, ed ha portato con sé nuovi moduli di AV Bypass e molte altre espansioni fra le quali nuove API e librerie.

## Metasploit Framework

I passaggi fondamentali per l'exploiting di un sistema utilizzando Metasploit Framework comprendono:
* Scegliere e configurare un exploit (codice che penetra in un sistema sfruttandone i bugs; sono inclusi circa 2000 exploits diversi per Windows, Unix/Linux e Mac OS X).
* Controllare se il sistema attaccato è suscettibile all’exploit selezionato (facoltativo).
* Scegliere e configurare un payload (codice da eseguire sul sistema attaccato dopo esserci penetrati con successo; per esempio una shell remota o un VNC server).
* Scegliere la tecnica di codifica in modo che l’intrusion prevention system (IPS) ignori il payload codificato.
* Eseguire l’exploit.
Questo approccio modulare (che permette la combinazione di qualsiasi codice exploit con qualsiasi playload) è il vantaggio principale di Metasploit Framework. Inoltre, facilita le operazioni degli attaccanti e di chi scrive exploits e payloads. Metasploit funziona su Unix (compresi Linux e Mac OS X) e su Windows. Le funzionalità di Metasploit Framework sono inoltre disponibili in più lingue. Per scegliere l’exploit e il payload sono necessarie alcune informazioni sul sistema che si vuole attaccare, come la versione del sistema operativo e i servizi di rete installati. Queste informazioni possono essere raccolte attraverso strumenti di port scanning o di OS fingerprinting, utilizzando, ad esempio, i servizi forniti da Nmap. Scanner di vulnerabilità come Nexpose, Nessus e OpenVAS possono individuare le vulnerabilità dei sistemi che si desidera attaccare. Metasploit può importare i dati degli scanner e comparare le vulnerabilità individuate con i moduli exploit esistenti per eseguire un accurato exploitation.

## Interfacce

Sono disponibili diverse interfacce di Metasploit e le più conosciute sono mantenute da Rapid7 e Strategic Cyber LLC.

### Metasploit Framework

Si tratta di una versione gratuita ed è caratterizzata da: interfaccia a linea di comando, import da terze parti, exploitation manuale e azioni di forza bruta anch’esse condotte manualmente. Questa versione di Metasploit Project include anche Zenmap, un famoso port scanner, e un compilatore per Ruby, il linguaggio usato per questa versione.

### Metasploit Community

Viene lanciata da Rapid7 nell’ottobre 2011 ed è un’interfaccia utente web-based per Metasploit. Tale versione, che comprende un insieme ridotto di funzionalità rispetto alle versioni a pagamento, include la ricerca di reti, il modulo di navigazione internet e l’exploitation manuale. Metasploit Community è inclusa nel programma di installazione principale.

### Metasploit Express

È rilasciata da Rapid7 nell’aprile 2012. Metasploit Express è un’edizione commerciale pensata per quei team di sicurezza informatica che hanno la necessità di verificare le vulnerabilità. Inoltre, offre un’interfaccia grafica utente, integra le funzioni di ricerca di Nmap, aggiunge azioni intelligenti di attacco a forza bruta e fornisce un metodo di raccolta automatico dei risultati.

### Metasploit Pro

L’edizione in questione è stata immessa sul mercato da Rapid7 nell’ottobre del 2010. Metasploit Pro è concepita per venire incontro alle esigenze dei penetration testers. Rispetto alla versione Express sono state aggiunte funzionalità come Quick Start Wizards/MetaModules, campagne di sviluppo e gestione nell’ambito dell’ingegneria sociale, test delle applicazioni web, un’avanzata interfaccia a linee di comando chiamata Pro Console, payloads dinamici per aggirare gli antivirus, integrazione di Nexpose per la scansione delle vulnerabilità ad hoc e VPN pivoting.

### Armitage

Armitage è uno strumento per Metasploit Project nell’ambito della gestione degli attacchi informatici che visualizza gli obiettivi e suggerisce i codici exploit da utilizzare. Si colloca nella categoria di strumenti relativi alla sicurezza delle reti ed è gratuito e open source. È noto per aver contribuito alla collaborazione nei red team consentendo di condividere sessioni, dati e comunicazioni attraverso una singola istanza di Metasploit.

### Cobalt Strike

Cobalt Strike è una raccolta di strumenti per la simulazione delle minacce fornita da Strategic Cyber LLC che si integra con Metasploit Framework. Oltre a tutte le funzioni presenti in Armitage, Cobalt Strike include strumenti per il post-exploitation e per la generazione dei report.

## Exploits

A oggi, Metasploit ha più di 1700 exploits, raccolti sotto le seguenti piattaforme: AIX, Android, BSD, bsdi, Cisco, FreeBSD, hpux, IRIX, Java, JavaScript, Linux, mainframe, multi (applicabile a più piattaforme), NetBSD, NetWare, Node.js, OpenBSD, OSX, PHP, Python, R, Ruby, Solaris, Unix e Windows.

## Payloads

Al momento Metasploit conta più di 495 payloads. Alcuni di questi sono:
* Command shell, permette agli utenti di utilizzare collezioni di script o comandi arbitrari contro un determinato host.
* Meterpreter, permette agli utenti di controllare lo schermo del dispositivo bersaglio usando VNC e di navigare su internet, caricare e scaricare file.
* Payload dinamici, permettono agli utenti di raggirare le difese degli antivirus generando payloads unici.

## Opcode Database

L'Opcode Database è un'importante risorsa per sviluppatori di nuovi exploits. I buffer overflow di Windows spesso richiedono conoscenze specifiche di alcuni opcode nel programma che si intende attaccare o nelle sue DLL. Le posizioni degli opcode variano a seconda della versione e della patch, tuttavia sono interamente documentate e facilmente rintracciabili grazie all'Opcode Database. Questo permette di poter scrivere buffer overflow per le diverse versioni di un sistema operativo.

## Shellcode Database

Lo Shellcode database contiene i payload utilizzati da Metasploit Framework. Sono scritti in assembly e i sorgenti sono completamente disponibili.

## Sviluppatori

Metasploit Framework è un progetto open source il cui codice sorgente è presente su GitHub. La comunità può contribuire alla sviluppo del progetto inviando il proprio lavoro. Ciascun contributo viene revisionato da un team di dipendenti interni a Rapid7 e da alcuni sviluppatori considerati esperti e affidabili esterni all’azienda. Segue la lista degli sviluppatori originali:
* H. D. Moore (fondatore e chief architect)
* Matt Miller (core developer dal 2004 al 2008)
* spoonm (core developer dal 2003 al 2008)