Masscan è uno scanner di porte costruito per un solo scopo: interrogare un numero enorme di indirizzi IP in pochissimo tempo. L’autore, il ricercatore di sicurezza Robert David Graham, lo ha pubblicato nel 2013 con licenza libera AGPL v3, e il codice è ospitato su GitHub nel repository robertdavidgraham/masscan. Secondo la documentazione del progetto, il programma può trasmettere fino a dieci milioni di pacchetti al secondo da una sola macchina, abbastanza per percorrere l’intero spazio IPv4 su una porta in pochi minuti. Il suo uso è riservato alle reti che si è autorizzati a verificare.
A cosa serve Masscan
Uno scanner di porte invia pacchetti verso indirizzi e porte, poi osserva le risposte per capire quali servizi sono aperti. Nmap, il riferimento del settore, dialoga con ogni host per ricavarne il massimo delle informazioni. Masscan fa la scelta opposta. Separa completamente trasmissione e ricezione in due thread indipendenti, non aspetta mai la risposta di un host prima di passare al successivo e porta con sé un proprio stack TCP/IP invece di appoggiarsi a quello del sistema. Questo disegno asincrono, che il README paragona alla differenza tra i server web nginx e Apache, è ciò che gli dà la sua velocità.
La sintassi riprende volutamente quella di Nmap. Si indicano intervalli di indirizzi, sia IPv4 sia IPv6, e un elenco di porte con l’opzione -p, poi si regola il ritmo con –rate. Per impostazione predefinita il programma invia solo cento pacchetti al secondo, e spetta all’utente alzare quel valore con cognizione di causa. L’ordine di scansione è sempre casuale, così da distribuire il carico sulle reti interessate invece di colpirle in sequenza. I risultati si possono salvare in XML, JSON, formato grepable, lista semplice o in un formato binario compatto, e un file di esclusione tiene lo scanner lontano dagli intervalli che non si devono toccare.
Oltre a individuare le porte aperte, Masscan sa completare la connessione TCP per recuperare il banner di servizi comuni come HTTP, SSH, FTP, SMTP, SMB, RDP o VNC. La documentazione spiega che questa funzione richiede di assegnare al programma un indirizzo IP separato o di filtrare la sua porta sorgente con il firewall locale, altrimenti lo stack di rete del sistema chiude la connessione prima che il banner arrivi. Per superare i due milioni di pacchetti al secondo, l’autore rimanda al driver PF_RING ZC di ntop, la stessa azienda che sviluppa ntopng, presente in questa categoria.
Il confronto con Scapy chiarisce il ruolo di ciascuno. Scapy è una libreria Python che forgia e analizza pacchetti uno alla volta, ideale per capire un protocollo o scrivere un test preciso. Masscan costruisce un solo tipo di sonda, ma lo fa su una scala che Scapy non può raggiungere. I due spesso si completano: una scansione Masscan per individuare gli host, poi un esame approfondito con Nmap o Scapy.
Per chi è?
Masscan si rivolge ai team di sicurezza che fanno l’inventario dei servizi esposti su una grande rete aziendale, agli auditor incaricati di un penetration test e ai ricercatori che studiano lo stato di Internet su larga scala. Presuppone di sapere bene cosa si sta facendo: il README avverte che il programma può saturare una rete locale e che una scansione IPv6 concentrata su una sola sottorete può mettere fuori uso il bersaglio.
Non sostituisce Nmap. Non fa risoluzione DNS, non accetta nomi di host, non rileva né il sistema operativo né le versioni precise dei servizi e non ha un motore di script. Su Windows e nelle macchine virtuali, secondo la documentazione, il ritmo si ferma intorno ai trecentomila pacchetti al secondo, contro oltre un milione su Linux nativo. Soprattutto, scansionare indirizzi senza un’autorizzazione scritta è illegale nella maggior parte dei paesi e può far bandire il proprio indirizzo dagli operatori che sorvegliano questo tipo di traffico. Per analizzare a fondo poche macchine, Nmap resta lo strumento giusto.
Scaricare Masscan in sicurezza
Il progetto è distribuito come codice sorgente su GitHub, nel repository robertdavidgraham/masscan, la cui pagina delle release offre l’archivio della versione 1.3.2, la più recente etichettata. Secondo il README, per compilare bastano un compilatore C e il comando make su Linux e macOS, mentre su Windows si usa un progetto Visual Studio o MinGW. Per l’esecuzione serve la libreria libpcap, oppure Npcap su Windows. Il software è del tutto gratuito, e l’autore si limita a invitare a una donazione.
Con uno strumento di questo tipo la prudenza è d’obbligo. Eseguibili Masscan precompilati circolano su siti di download e forum, a volte accompagnati da codice malevolo. Il codice sorgente del repository ufficiale, compilato da sé o ottenuto tramite il gestore di pacchetti della propria distribuzione, resta l’unica strada affidabile.
Domande frequenti
Masscan è legale?
Lo strumento in sé è software libero del tutto legale. A essere regolato è l’uso: scansionare indirizzi che non si possiedono, senza autorizzazione scritta del proprietario, è un reato nella maggior parte delle legislazioni. I penetration test si svolgono sempre nell’ambito di un incarico che definisce il perimetro autorizzato.
Masscan sostituisce Nmap?
No. Masscan è eccellente per individuare in fretta le porte aperte su intervalli di indirizzi molto ampi, ma non rileva sistemi operativi né versioni dei servizi e non ha un motore di script. La prassi comune è lanciare prima Masscan e poi affidare gli host trovati a Nmap per un’analisi dettagliata.
Su quali sistemi funziona?
Il README indica Linux come piattaforma principale e quella con i ritmi più alti, ma precisa che il codice si compila e funziona anche su Windows, macOS e FreeBSD. Su Windows è necessaria la libreria di cattura Npcap.