Masscan löser problemet där Nmap misslyckas
Min grundfilosofi när det gäller penetrationstester är att jag ska ha flera olika val för att lösa en uppgift. En sådan uppgift kan vara att portskanna ett nätverk eller identifiera klienter/servrar på ett internt nätverk.
Mitt förstahandsval är Nmap men det finns ett antal situationer där Nmap inte kan lösa problemet. Därför är det bra att känna till masscan som är utvecklat av Robert Graham. Följande situationer har jag använt masscan till:
- Identifiera klienter eller servrar på stora interna nätverk
- Större skanningar på mer än ett /24 där nmap tar lång tid eller ger upp. Då använder jag resultatet från masscan som jag skickar in i nmap för version/service scan (-sV)
Masscan är otroligt snabbt och kraftfullt, och gör du fel så kan du av misstag söka av hela Internet och då blir din internetleverantör troligtvis rätt arg på dig. Enligt Robert så kan du söka av hela internet på 3 minuter efter en port.
Därför kan följande tips vara bra att ta till sig hur du når framgång med masscan.
Först och främst så bör du köra masscan på en server som inte är virtualiserad. Jag fick problem med att interfacet inte kunde identifieras (Xen). Fungerar dock bra under VirtualBox. Följande felmeddelande fick jag:
FAIL: could not determine default interface
De argument som masscan tar är snarlika med de som finns till nmap. Exempel på några argument:
masscan -p 80,443 10.0.0.0/8 masscan --open --banners -p 80,443 10.0.0.0/8
Sedan brukar jag även börja med relativ låg limit på antal paket per sekund. Standard är 100 paket per sekund.
Exempelvis aningens snabbare än standardinställningen med 500 pps:
masscan --open --banners -p 80,443 --rate 1000 10.0.0.0/8
Och sedan öka successivt till kanske 5000 pps. Och är det så att du söker igenom ett internt nätverk och vill identifiera segment där servrar eller klienter finns så slänger jag även på tcpdump i bakgrunden som sparar ner alla paket. Så även om en klient eller server skickar TCP RST tillbaka så vet jag att det troligt finns något där.
Bra även att känna till är de standardvärden som masscan skickar på. Som är följande:
-sS -Pn -n --randomize-hosts -v --send-eth
Och om du startar en skanning och avbryter den genom att trycka Ctrl-C så kommer en fil som heter paused.conf att skrivas ner med bl.a. ett frövärde och index så du kan återuppta en skanning med:
masscan -c paused.conf
Slänger du på –echo i slutet som argument så skrivs en konfigurationsfil ut som du kan ändra och sedan använda med -c. Bra om du exempelvis vill ändra randomize-hosts = true till false.
Andra bra argument jag brukar använda är följande:
Sök igenom samtliga portar:
-p0-65535
Spara ner i binärt format:
-oB filnamn
Kan sedan läsas med –readscan och konverteras till format såsom xml, json eller text:
--readscan filnamn -oX filnamn.xml
Det var allt för denna gång och jag hoppas att du testar masscan som ett alternativ till nmap.
Ett alternativ till masscan är Zmap, och masscan följer givetvis med i Kali Linux.
Skärmdump när Robert skannar av Internet: