Nmap: een “Hacker Tool” voor beveiligingsprofessionals
door Justin Hutchens
de notie van de “ethische hacker” is altijd een ironische geweest. De zich ontwikkelende trends van ethisch hacken en offensieve beveiliging hebben de informatiebeveiliging industrie getransformeerd in een van de meest zichzelf bestendigende industrieën in de wereld.
de software en tools die worden gebruikt om kwetsbare informatiemiddelen te beveiligen, zijn dezelfde tools die kunnen worden gebruikt om ze te exploiteren. Misschien is het andersom. Misschien worden de instrumenten die uitsluitend met het oog op de exploitatie van informatiemiddelen zijn ontwikkeld, nu gebruikt om deze te beschermen. Ik veronderstel dat dit een debat is dat eeuwig kan doorgaan en is eigenlijk gewoon een ander voorbeeld van ” wat kwam eerst … de kip of het ei?”
het doel van dit essay is niet om de filosofische kwestie van intentie te bespreken. Mijn bedoelingen zijn bescheidener. Ik probeer alleen maar om het belang van een tool die consequent is bestempeld als kwaadaardige hacking software te rechtvaardigen. De tool die ik bedoel is Network Mapper, of nmap in het kort. Of je nu een gestoorde malafide agent bent die een wereldwijde revolutie wil uitlokken of een netwerkbeveiligingsprofessional (hopelijk de laatste, in plaats van de eerste), nmap moet een permanente plaats in je toolkit hebben. Misschien, in plaats van het gooien van kritiek op een uiterst functionele netwerk tool, moeten we individuen verantwoordelijk houden voor hun acties en nadenken over de bekende Benjamin Parker waarschuwing…”met grote kracht, komt grote verantwoordelijkheid.”Ondanks sommige beweringen van het tegendeel, nmap is geen kwaadaardige software. En ik denk dat de enige reden dat het vaak wordt gelabeld als zodanig is vanwege de zeer indrukwekkende lijst van mogelijkheden. Ondanks het potentieel om schade te berokkenen, kan nmap zeker een belangrijke rol spelen bij het beveiligen van een netwerkinfrastructuur binnen een professionele omgeving.
Nmap is in de loop der jaren gestaag geëvolueerd van een eenvoudig scanprogramma tot een volledig geblazen penetratietestplatform. Het kan worden gebruikt in elke stap van de security auditing proces, om netwerk ontdekking, poort scannen, service opsomming, kwetsbaarheid mapping en zelfs exploitatie omvatten. In dit artikel zal ik de mogelijkheden van nmap bespreken, aangezien deze betrekking hebben op elke stap in het penetratietestproces.
installatie en voorbereiding
voor het gebruik van nmap is het uiteraard belangrijk dat er een functionele versie geïnstalleerd is op het systeem dat u gebruikt. Standaard is nmap al geïnstalleerd op de meeste penetratietesten en netwerkbeveiligingsbesturingssystemen zoals Kali-Linux, Backtrack, DEFT, Node-Zero, Security Onion en NST. Echter, het kan ook worden geladen op bijna elk platform van uw keuze. Nmap kan eenvoudig worden geà nstalleerd op alle veelgebruikte besturingssystemen met Windows, Linux en OSX. Er is ook documentatie beschikbaar om het op meer obscure platforms te installeren met BSD, Solaris, AIX en AmigaOS. Installatiepakketten en instructies over het uitvoeren van de installatie op een van deze systemen zijn te vinden op http://nmap.org/book/install.html.
Zenmap-grafische Interface
naast de traditionele opdrachtregelinterface voor nmap is er ook een grafische front-end interface genaamd Zenmap. Zenmap is ook geïntegreerd in veel van de verschillende penetratie testplatforms eerder besproken. Echter, het is niet standaard geïnstalleerd in Kali-Linux (het platform dat Ik zal gebruiken voor deze tutorial). Gelukkig bevindt het zich in de installatie repository en kan het eenvoudig worden geà nstalleerd met een enkel commando:
apt-get install zenmap
Zenmap ’s point-and-click interface stroomlijnt niet alleen effectief wat anders ingewikkelde commando’ s zou vereisen, maar het kan ook een zeer nuttig hulpmiddel zijn om te leren hoe nmap te gebruiken. Het maakt gebruik van’ profielen ‘ om veelgebruikte scan configuraties op te slaan voor latere wijziging en/of gebruik. Neem een kijkje op de afbeelding van de Zenmap interface die wordt geleverd in Figuur 1 en we zullen kort ingaan op elk van de componenten.
figuur 1. Zenmap grafische Interface
het eerste onderdeel is het Doelveld (figuur 1. Een). In dit veld kunt u de externe systemen opgeven waarmee u een scan wilt uitvoeren. U kunt een enkel IP-adres invoeren (b.v. 192.168.1.1), u kunt een reeks opeenvolgende IP-adressen invoeren (b. v. 192.168.1.0-255) of u kunt CIDR notatie gebruiken om een gewenst subnet te specificeren (bijvoorbeeld 192.168.1.0/24). De tweede component is het Profielveld (figuur 1. B). U kunt klikken op de drop-down pijl aan de rechterkant van dit veld om een aantal vooraf geconfigureerde profielen voor het scannen te zien. Met profielen kunt u veelgebruikte scanconfiguraties opslaan voor toekomstig gebruik. U kunt ook zelf profielen maken en ze zullen dan in deze lijst verschijnen (we zullen later in dit artikel bespreken hoe dit te doen). De derde component is het commando veld (figuur 1. C). Dit veld geeft het commando aan dat naar de backend wordt gestuurd. Om de opdracht te starten die in dit veld verschijnt, klikt u gewoon op de knop Scannen. U kunt de waarde in dit veld direct wijzigen; deze wordt echter automatisch ingevuld op basis van de waarden van het Doelveld en het geselecteerde profiel. Als je nieuw bent in nmap, moet je goed op dit veld letten, omdat het je een beter begrip geeft van de juiste syntaxis en het gebruik van verschillende Nmap commando ‘ s. De vierde component is de Host / Service lijst (figuur 1. D). Zodra u scans hebt uitgevoerd, zal informatie worden ingevuld in deze lijst. Als u de Hosts-knop hebt geselecteerd, worden alle gevonden host IP-adressen weergegeven. En als u de knop services hebt geselecteerd, worden alle ontdekte netwerkservices weergegeven. Het laatste onderdeel (figuur 1. E) is waar u kunt sorteren door alle informatie die is geproduceerd door alle scans die u hebt uitgevoerd. Het tabblad Nmap-uitvoer toont de exacte uitvoer die zou worden opgegeven als de opdracht was ingevoerd vanuit de opdrachtregelinterface. De inhoud van het tabblad Ports / Hosts varieert afhankelijk van of u de knop Hosts of Services hebt geselecteerd voor uw lijst. Als de Hosts-knop is geselecteerd, geeft de informatie onder het tabblad Poorten/Hosts de services weer die zijn geïdentificeerd op het actief gemarkeerde IP-adres in de lijst. Anders, als de knop Services is geselecteerd, zal de informatie onder het tabblad Poorten/Hosts alle hosts identificeren die de specifieke service hebben die in de lijst is gemarkeerd. Het tabblad topologie geeft een grafische weergave van de logische topologie van het netwerk, om alle hosts op te nemen die zijn ontdekt door het scannen. Het zal geretourneerde TTL (Time-To-Live) waarden gebruiken om de logische oriëntatie van hosts ten opzichte van elkaar weer te geven. De Host Details tab is waar u het grootste deel van de informatie die is ontdekt over een geselecteerde host te vinden. Deze informatie omvat MAC-adressen, IP-adressen, open poorten, geïdentificeerde services, informatie over het besturingssysteem en alle aanvullende informatie die is verzameld. Tot slot biedt het tabblad scans een geschiedenis van scans die tijdens de sessie zijn uitgevoerd.
bovenaan het scherm ziet u verschillende keuzemenu ‘ s met Scan, Tools, profiel en Help. Het menu Help spreekt voor zich. Het menu Scannen bevat opties om nieuwe scans te maken, scans op te slaan of eerder opgeslagen scans te openen. Het menu Extra biedt een aantal extra functies die kunnen worden gebruikt om te sorteren door en organiseren van informatie verzameld tijdens uw scans. En het profielmenu biedt opties om nieuwe scanprofielen te maken of bestaande profielen te bewerken.
we zullen nu kort bespreken hoe je een nieuw profiel maakt en dan een scan start met behulp van dat profiel. Om te beginnen, selecteert u het profiel drop-down menu en selecteer vervolgens ” Nieuw profiel of opdracht.”Dit opent een profiel configuratie interface die kan worden gezien in Figuur 2.
Figuur 2. Zenmap Profile Editor
het eerste tabblad (Profieltabblad) stelt u in staat om een unieke naam en beschrijving voor het profiel aan te maken. Op alle andere tabbladen kunt u verschillende configuraties opgeven die in uw scan worden gebruikt. Zoals u kunt zien op het tabblad Scannen dat wordt weergegeven in Figuur 2, is het maken van een scanprofiel net zo eenvoudig als het aanvinken van de selectievakjes voor opties die u wilt inschakelen, het invoeren van waarden zodat deze opties effectief kunnen worden gebruikt, of het selecteren van vooraf gedefinieerde keuzes in het vervolgkeuzemenu. Als u niet zeker bent over de functie of het juiste gebruik van een optie hier, kunt u er met uw muis over bewegen en de helpkolom aan de rechterkant van het scherm wordt automatisch gevuld met informatie over wat de specifieke optie doet en de juiste waarden en syntaxis voor alle gevraagde invoervelden. Bij elke kleine aanpassing aan de scanconfiguratie wordt het opdrachtveld bovenaan dienovereenkomstig aangepast. Deze functie maakt Zenmap een uiterst effectieve tool in het leren hoe nmap commando ‘ s correct te gebruiken. Zodra u de scanopties naar wens hebt geconfigureerd, kunt u de knop Scannen rechtsboven in het scherm selecteren voor eenmalig gebruik, of u kunt Wijzigingen opslaan rechtsonder selecteren. De knop Wijzigingen opslaan slaat het profiel op met de naam op de eerste tabconfiguraties en kan dan onmiddellijk of op een later tijdstip worden gebruikt door het op naam te selecteren in het vervolgkeuzemenu profiel op de Zenmap-interface. Hoewel Zenmap erg krachtig is, moet je niet toestaan dat het een kruk wordt die je verhindert om de commandoregelfuncties van nmap te leren. Hoewel Zenmap veel van dezelfde functies kan uitvoeren, heeft het nog steeds zijn beperkingen en is het niet zo krachtig als nmap. Om nmap effectief en optimaal te kunnen gebruiken, is het belangrijk om even vertrouwd te raken met de command line interface.
Network Discovery
de eerste stap in het penetratietestproces dat we gaan bespreken is network discovery. Voordat u de beveiliging van informatiesystemen op een netwerk evalueert, moet u eerst vaststellen wat u evalueert. Er zijn een aantal verschillende manieren waarop je hosts op een netwerk kunt ontdekken door nmap te gebruiken. In deze sectie zullen we bespreken hoe we nmap kunnen gebruiken om host discovery uit te voeren op lagen 2, 3 en 4 van het OSI-model en we zullen ook de voor-en nadelen van elk ervan bespreken. Een voorbeeld van een opdracht om layer 2 discovery uit te voeren is hier te zien:
nmap-PR-SN 192.168.1.0-255
de -PR
schakelaar specificeert een ARP ping. Dit gebruikt layer 2 ARP-pakketten (Address Resolution Protocol) om levende hosts binnen het opgegeven bereik te identificeren. Het doet dit door het verzenden van een ARP broadcast verzoek voor elk van de geïdentificeerde IP-adressen. Als er een live host op het netwerk is met een van die IP-adressen, stuurt die host een ARP-antwoord naar het scansysteem met het IP-adres en het bijbehorende layer 2 MAC-adres. Nmap zal antwoorden van alle live hosts verzamelen en zal dan een lijst van hosts retourneren die ontdekt zijn. De -sn
switch wordt gebruikt om aan te vragen dat nmap geen poort scant. Dit voorkomt de overdracht van extra verkeer, verder dan wat nodig is om de Layer 2 Host discovery sweep uit te voeren. Layer 2 discovery is effectief omdat het de snelste van alle drie de opties. Het wordt echter beperkt door het feit dat het alleen kan worden uitgevoerd tegen hosts die zich op hetzelfde lokale netwerk bevinden als het systeem dat de scan uitvoert.
voor externe hosts moet u layer 3 of layer 4 discovery gebruiken. Een voorbeeld van een commando dat gebruikt zou kunnen worden om layer 3 discovery uit te voeren is:
nmap-PE-SN 109.74.11.0-255
dit commando zal een reeks ICMP echo-verzoeken sturen naar elk layer 3 IP-adres in de lijst. Nmap verzamelt alle ICMP echo antwoorden die ontvangen zijn en geeft een lijst van alle live hosts terug. Deze discovery scan is langzamer dan het uitvoeren van een ARP ping, maar het zal resultaten opleveren voor hosts op externe netwerken.
ten slotte, stel dat u probeert systemen op afstand te ontdekken (dus u kunt layer 2 niet gebruiken) die zich achter een firewall bevinden die al het inkomende ICMP-verkeer laat vallen (dus u kunt layer 3 niet gebruiken). Om dit probleem aan te pakken, moet u discovery uitvoeren op de transportlaag (laag 4). Er zijn verschillende manieren waarop u layer 4-scans kunt gebruiken om discovery uit te voeren. Een effectieve methode is het gebruik van een UDP ping. Een voorbeeld van een UDP ping commando is:
nmap-PU53-sn 109.74.11.0-255
dit commando genereert een reeks DNS-serverstatusaanvragen voor elk van de doel IP-adressen. Een reeks DNS-query-antwoorden zal worden ontvangen van live hosts en nmap zal deze resultaten dan retourneren. Omdat DNS een veelgebruikte service is op UDP-poort 53, is het mogelijk om extra live-hosts te identificeren met behulp van deze techniek die mogelijk is geconfigureerd om niet te reageren op ICMP-verkeer. Een ander effectief layer 4 alternatief voor ICMP ping sweeps is het gebruik van een TCP ACK ping. Een voorbeeld hiervan is hieronder te zien:
nmap-PA80-sn 109.74.11.0-255
dit commando zal een reeks ongevraagde ACK-antwoorden sturen naar de opgegeven poort voor alle hosts in het IP-bereik. Omdat deze ACK pakketten uit de context van een gevestigde lijn van communicatie waren, zullen live hosts antwoorden met een TCP RST pakket om aan te geven dat de communicatie moet worden stopgezet. Nmap zal deze reacties verzamelen als de indicatie van live hosts en zal dan een lijst van hen retourneren.
Port Scanning en Service Enumeration
nu we de actieve IP-adressen op het netwerk hebben ontdekt waarmee we een penetratietest uitvoeren, moeten we vervolgens open poorten op elk systeem en de services die op die poorten draaien identificeren. Het scannen van TCP-poorten op systemen op afstand is de meest fundamentele functie van nmap. Om een TCP-scan van een doelsysteem uit te voeren, gebruik je het basic Commando:
nmap 109.74.11.34
net als andere Nmap commando ‘ s, kan dit ook gebruikt worden om scans uit te voeren tegen meerdere hosts met behulp van een sequentiële serie (192.168.1-255) of CIDR-notatie (192.168.1.0 / 24). Dit standaard Nmap commando voert een scan uit op 1000 veelgebruikte TCP poorten. U kunt ook een enkele poort opgeven om te scannen met de schakelaar-p, gevolgd door het poortnummer dat u wilt scannen.
nmap 109.74.11.34-p 21
dit bovenstaande commando scant tcp poort 21 op het opgegeven systeem. U kunt ook een reeks poorten scannen met de-p-schakelaar en vervolgens de gewenste poorten opsommen, ze scheiden met komma ‘ s.
nmap 109.74.11.34 – p 80.443
dit commando scant poorten 80 en 443 op het doelsysteem. U kunt een reeks poorten scannen met de schakelaar -p
, gevolgd door de eerste waarde in het bereik, een streepje en vervolgens de laatste waarde in het bereik.
nmap 109.74.11.34-p 0-100
het bovenstaande commando scant de eerste 100 Poorten. Gebruik het volgende commando om alle 65.536 TCP-poorten op een doel te scannen:
nmap 109.74.11.34-p 0-65535
u kunt een TCP ACK-scan gebruiken om poorten te identificeren die worden gefilterd. Gebruik hiervoor de-sA schakelaar. U kunt dan een poort of reeks poorten opgeven. Geen poortspecificatie zal de standaard 1.000 poorten scannen. Dit retourneert dan een lijst met gefilterde poorten. Een voorbeeld van dit commando kan hieronder worden gezien:
nmap 109.74.11.34-sA
penetratietesters en beveiligingsprofessionals zullen soms alleen scannen op open TCP-poorten op doelsystemen. Over het hoofd gezien UDP-diensten kan leiden tot een volledig over het hoofd gezien flagrante kwetsbaarheden die gemakkelijk kunnen leiden tot compromissen. Om te scannen naar UDP services op een doelsysteem, gebruik je het volgende commando:
nmap 109.74.11.34 – sU
omdat UDP-services niet op dezelfde manier zijn gericht als TCP-services, zal dit langer duren dan een typische TCP-scan. De tijd die nodig is om UDP-scans te voltooien, kan worden verminderd door te scannen naar specifieke poorten. U kunt poorten opgeven op dezelfde manier als bij TCP-scans.
nmap 109.74.11.34-sU – p 69
het bovenstaande commando voert een scan uit van UDP poort 69, een veelgebruikte poort voor TFTP (Trivial File Transport Protocol). Het is ook mogelijk om de versie en versienummer voor elke specifieke dienst te identificeren. Gebruik hiervoor de switch-sV.
nmap 109.74.11.34-sV
dit commando gebruikt een combinatie van banner grabbing en probe-response analysis om te proberen de service en het versienummer van die service te identificeren voor elke gescande poort. Met behulp van soortgelijke technieken, is het ook mogelijk om nmap proberen om het besturingssysteem dat draait op het doel te bepalen. Gebruik hiervoor de schakelaar -O
.
nmap 109.74.11.34-O
eenmaal voltooid, geeft het ofwel een positieve identificatie van het besturingssysteem terug, ofwel geeft het een beste gok en vervolgens een lijst van andere mogelijke besturingssystemen.
geavanceerde scantechnieken
er is een veel voorkomend probleem dat u vaak tegenkomt bij het uitvoeren van een penetratietest tegen middelgrote tot grote bedrijfsnetwerken. De meeste bedrijven en organisaties deze dagen zijn meer security-minded geworden en zal waarschijnlijk firewalls of intrusion detection systemen staan tussen u en de systemen die u probeert te scannen. Om dergelijke systemen te scannen, moeten we wat meer geavanceerde scantechnieken gebruiken. Een manier om mogelijk te omzeilen firewalls en / of intrusion detection systemen is het gebruik van een aantal traditionele stealth scantechnieken die zijn geà ntegreerd in nmap. Een methode die kan worden gebruikt is om een langzamere timing template te gebruiken. Timing templates variëren van -T0
(paranoïde scan) helemaal tot -T5
(krankzinnige scan). Hoe lager de waarde van de template, hoe langzamer de scan wordt uitgevoerd. Tragere scans worden minder vaak gemarkeerd door inbraakdetectiesystemen. Een voorbeeld van een paranoïde scan zou zijn:
nmap 109.74.11.0-255-T0
een andere techniek die kan worden gebruikt om uw scan te maskeren is het overspoelen van het netwerk met extra lokverkeer met behulp van de -D
switch. Met deze functie kunt u meerdere adressen opgeven om verkeer van te spoofen of u kunt de RND optie gebruiken om verkeer van willekeurige adressen te spoofen.
nmap 109.74.11.0-255-D RND:5
naast het uitvoeren van de traditionele TCP-poortscan van de doelsystemen, zal het bovenstaande commando ook verkeer van 5 willekeurige adressen spoofen om het werkelijke scanverkeer te verdoezelen. Een andere techniek die kan worden gebruikt is om de pakketlengte van uw verzonden verzoeken te variëren. Sommige inbraakdetectiesystemen en firewalls zullen pakketten laten vallen op basis van pakketlengtes. Om dit te voorkomen, kunt u de gegevenslengte opgeven met de --data-length
– schakelaar, gevolgd door de pakketgrootte in aantal bytes.
nmap 109.74.11.0-255 — data-length 15
dit commando zal alle scanverkeer verzenden in pakketten met een lengte van 15 bytes. Hoewel dit nuttig kan zijn om sommige op handtekeningen gebaseerde inbraakdetectiesystemen te vermijden, kan het consequent verzenden van pakketten met een ongebruikelijke gespecificeerde pakketlengte een op anomalie gebaseerde inbraakdetectiesystemen markeren. Netwerkintrusiedetectiesystemen zullen ook verkeer markeren als u achtereenvolgens verbinding begint te maken met systemen binnen een opgegeven netwerkbereik. Om te voorkomen dat uw scans na elkaar worden uitgevoerd, kunt u de schakelaar --randomize-hosts
gebruiken.
nmap 109.74.11.0-255 — randomize-hosts
dit commando hierboven zal willekeurig elke host in het bereik scannen in plaats van ze in volgorde uit te voeren (109.74.11.0, dan 109.74.11.1, dan 109.74.11.2, enz…). Hoewel u uw IP-adres niet kunt spoofen (omdat u niet de antwoorden zou ontvangen die nodig zijn om open poorten te bepalen), kunt u uw MAC-adres spoofen. Om dit te doen, kun je de –spoof-mac schakelaar gebruiken, gevolgd door een vendor ID, een specifiek MAC adres, of 0.
nmap 109.74.11.0-255 — spoof-mac 0
met 0 als argument wordt een willekeurig MAC-adres toegepast op uw scanverkeer. Een laatste techniek die het vermelden waard is, is het gebruik van de-f switch naar fragment pakketten.
nmap 109.74.11.0-255-f
fragmenteren van pakketten zal de data payloads van uw scanverkeer te scheiden in meerdere pakketten, waardoor het gemakkelijker te omzeilen inhoud inspectie inbraak detectie systemen of firewalls. Hoewel al deze technieken effectief kunnen zijn voor het scannen van publiek toegankelijke servers achter een firewall, zijn ze meestal niet voldoende voor het scannen van hosts op een intern netwerk. Terwijl bepaalde publiek toegankelijke servers beschikbaar zullen zijn voor scannen, zal een groot deel van de interne infrastructuur dieper binnen het netwerk liggen en niet zo gemakkelijk toegankelijk zijn. Denk aan het diagram in Figuur 3. Dit is een eenvoudig voorbeeld van een gemeenschappelijke configuratie in bedrijfsnetwerken.
Figuur 3. Gemeenschappelijke Netwerkconfiguratie
het probleem dat we hier tegenkomen is dat het interne netwerk achter een interne firewall ligt, die strengere regels heeft voor het binnendringen van verkeer, in vergelijking met de externe firewall. Deze interne firewall blokkeert waarschijnlijk inkomend verkeer van externe adressen op het web; het is echter mogelijk dat de systemen in de DMZ kunnen communiceren met de interne systemen. Om deze interne systemen te kunnen scannen, moeten we de systemen in de DMZ voor ons laten werken. We zullen verschillende manieren bespreken om dit te doen, zoals proxy scanning, zombie scanning en FTP bounce scanning.
waarschijnlijk is de makkelijkste manier om de interne systemen te scannen door een proxy-keten te gebruiken. Laten we aannemen dat we toegang hebben gekregen tot een proxy service binnen de DMZ door het lokaliseren van een open-access proxy service, brute forceren van een proxy service met hydra of door het installeren van een proxy service op een reeds gecompromitteerde machine. Zodra u uw systeem hebt geconfigureerd om verkeer door die proxy te leiden, kunt u Nmap-scans uitvoeren met behulp van een volledige verbindingsscan (-sT
).
nmap 10.1.1.0-255-sT
als er geen proxy service beschikbaar is, zijn er enkele slimme manieren waarop u machines binnen de DMZ kunt gebruiken om scanresultaten op interne systemen te krijgen. Een manier om dit te doen is om zombie scanning te gebruiken, ook wel inactief scannen genoemd. Om een zombie-scan uit te voeren tegen de systemen op het interne LAN, moeten we een levensvatbare zombie-gastheer vinden binnen de DMZ. Een zombie host is een relatief idle systeem dat incrementele IPID sequencing gebruikt. Om een zombie host te lokaliseren, kunnen we een Nmap script gebruiken om de DMZ te scannen op een systeem dat aan deze beschrijving voldoet.
nmap — script ipidseq 109.74.11.0-255
dit script zal een reeks pakketten naar elke host sturen en de IPID-nummers bijhouden voor alle ontvangen antwoorden. Het zal dan deze IPID-getallen analyseren om elk systeem te classificeren als willekeurige volgorde, alle nullen of Incrementeel. Zie Figuur 4 voor een voorbeeld van de output voor een incrementeel systeem.
Figuur 4. Zombie-host met IPID Sequence Script
zodra we een IP-adres voor ons zombie-systeem hebben verkregen, zijn we klaar om onze zombie-scan te proberen. Voorafgaand aan het aanpakken hoe de scan uit te voeren, zal ik kort bespreken hoe de scan werkt. Zie Figuur 5 voor een diagram van wat er gebeurt wanneer een zombie scan wordt uitgevoerd tegen een open poort.
Figuur 5. Zombie scan tegen open poort
eerst bepaalt onze Nmap scanner de huidige IPID waarde van het zombie systeem door een ongevraagd SYN/ACK pakket te sturen. Omdat er oorspronkelijk geen SYN-pakket werd verzonden door het zombie-systeem om een verbinding tot stand te brengen, antwoordt de zombie op onze scanner met een RST-pakket. Ons scansysteem zal dan de IPID van het RST pakket als referentiepunt gebruiken. Dan zal ons scansysteem dit onmiddellijk opvolgen met een vervalst SYN-pakket dat naar het doelsysteem wordt verzonden met behulp van een bron-IP-adres van het zombie-systeem. Omdat het bron-IP-adres er een is binnen de DMZ, is het waarschijnlijker dat deze verbindingsaanvraag door de firewall kan. Als het doel het pakket ontvangt en de doelpoort open is, zal het doel een SYN/ACK pakket terugsturen naar het zombie systeem (waarvan het denkt dat het het originele SYN pakket heeft gestuurd). Omdat dit SYN / ACK-pakket uit de context wordt ontvangen, zal het zombie-systeem dan antwoorden op het doelsysteem met een RST-pakket, waarbij de IPID-waarde met één wordt verhoogd. Tenslotte zal onze scanner een laatste SYN/ACK pakket naar het zombie systeem sturen. De volgende RST antwoord van de zombie zal de IPID nog een keer verhogen. Dus als de doelpoort op het externe systeem open is, zal de uiteindelijke IPID-waarde die wordt geretourneerd twee getallen hoger zijn dan de oorspronkelijke waarde. Als alternatief illustreert Figuur 6 wat er gebeurt wanneer de poort van het doelsysteem wordt gesloten.
Figuur 6. Zombie scan tegen gesloten poort
als de poort op het doelsysteem gesloten is, ontvangt het zombie-systeem geen ongevraagd antwoord van het doel en wordt daarom niet geïnitieerd om een RST-pakket naar het doel te sturen. Dus als de IPID-waarde van het laatste RST-antwoord slechts met één is verhoogd, kunnen we afleiden dat de poort gesloten is omdat er geen SYN/ACK-antwoord naar het zombie-systeem is gestuurd om een RST-antwoord op te starten. Anders, als de uiteindelijke IPID waarde is verhoogd met twee van de oorspronkelijke waarde, dan kunnen we afleiden dat de poort op het doel systeem moet worden geopend omdat het moet hebben geantwoord op de zombie die de reactie die de IPID waarde van het zombie systeem verhoogd.
hoewel dit zeer ingewikkeld kan klinken; laat u niet intimideren door de beschrijving, want nmap doet bijna al het werk voor u. Om daadwerkelijk een zombie scan uit te voeren, hoef je alleen maar een eenvoudig commando in te voeren.
nmap-sI 192.168.199.132-Pn 192.168.199.130
de schakelaar -sI
geeft aan dat nmap een zombie-scan moet uitvoeren met behulp van het volgende IP-adres als zombie-host (192.168.199.132). De -Pn
switch voorkomt dat nmap een eerste ICMP ping uitvoert op het doelsysteem voordat de scan wordt geprobeerd. Dus, het uiteindelijke IP-adres in het commando identificeert het doelsysteem. De uitvoer voor dit commando is te zien in Figuur 7.
Figuur 7. Zombie scan tegen gesloten poort
opgemerkt moet worden dat het IP-bereik dat ik gebruikte om deze zombie scan te demonstreren een privé-bereik is op mijn interne netwerk. Om dit effectief te laten werken tegen een remote netwerk, zoals beschreven in het oorspronkelijke scenario, moeten de systemen in zowel de DMZ als het interne netwerk op publieke routable IP ranges staan. Als het interne netwerk is geconfigureerd op een privébereik achter een NAT-server (Network Address Translation), kan de Nmap-scanner het vervalste SYN-pakket niet vanaf de externe locatie naar het interne adres verzenden.
een andere manier om systemen binnen de DMZ te gebruiken om hosts op het interne netwerk te scannen is door FTP bounce te gebruiken. Sommige oudere FTP-servers ondersteunen de mogelijkheid om bestanden naar een systeem van derden te verzenden. Als je een FTP-server hebt ontdekt in de DMZ die anoniem inloggen mogelijk maakt of dat je brute gedwongen hebt met hydra, kun je de FTP-server testen om te bepalen of het FTP bounce ondersteunt. Gebruik hiervoor het ftp-bounce script.
nmap –script ftp-bounce — script-args
ftp-bounce.username = anonymous,
dit commando gebruikt het Nmap script met gebruikersnaam en wachtwoord argumenten tegen de FTP server. Eenmaal voltooid, zal deze scan aangeven of FTP bounce mogelijk is of niet. Als het script aangeeft dat FTP bounce werkt, kunt u de FTP-server gebruiken om een poortscan uit te voeren tegen andere systemen op het netwerk. Figuur 8 illustreert hoe dit werkt.
Figuur 8. FTP bounce scan
de scanner zal proberen binaire gegevens te verzenden via de FTP bounce functie naar het doelsysteem op een aangewezen poort. Als de gegevens worden verzonden, zal de FTP-server dit terugsturen naar de scanner, wat aangeeft dat de poort op het doelsysteem open is. Om een FTP bounce scan uit te voeren, gebruik je de -b
schakelaar.
Nmap-b ftpuser:: 21 10.1.1.128-255
in dit commando, wordt de functie -b
gebruikt om een FTP bounce scan uit te voeren met de gebruikersnaam “ftpuser” en het wachtwoord PassW0rd
, tegen de FTP server op 192.168.11.201 gehost op tcp poort 21. De acties beschreven in het diagram hierboven zullen dan worden uitgevoerd tegen elk van de gemeenschappelijke 1000s poorten op elk van de doel hosts van 10.1.1.128 tot 10.1.1.255.
kwetsbaarheid Mapping en exploitatie met NSE
zodra u live hosts op het doelnetwerk hebt ontdekt en erin geslaagd bent om open poorten en/of draaiende services op die hosts op te sommen, kunt u beginnen met het testen en exploiteren van kwetsbaarheden. Met de nieuw geà ntegreerde NSE (Nmap Scripting Engine), zijn er een aantal vooraf geladen scripts die worden geleverd met de standaard Nmap installatie. Deze scripts hebben een breed scala aan verschillende functies van het verzamelen van basisinformatie (zoals de twee die we al hebben besproken), kwetsbaarheid mapping, brute forcing, denial of service en zelfs op afstand exploitatie. Al deze scripts bevinden zich in je Nmap installatie directory. In Kali-Linux kunnen ze gevonden worden op /usr/share/nmap/scripts/
. Om naar deze scripts te bladeren en ermee te beginnen, gebruik je de volgende commando ‘ s:
cd/usr/share/Nmap/scripts /
ls
het commando cd
wijzigt de map naar de locatie van de NSE-scripts en het commando ls
toont de inhoud van de map. U kunt vervolgens elk van de scripts bekijken met het commando cat
, gevolgd door de naam van het script dat u wilt bekijken. Voor deze demonstratie gebruiken we ftp-vuln-cve2010-4221.nse
. Om de inhoud van dit script te bekijken, gebruik je het volgende commando:
cat ftp-vuln-cve2010-4221.nse
figuur 9. NSE script contents
figuur 9 toont de inhoud van dit script. Als u naar de top van de scriptinhoud bladert, ziet u verschillende nuttige informatie met een beschrijving van het script, een lijst met extra bronnen voor referentie, en het juiste gebruik en de syntaxis van het script. Echter, het sorteren door deze scripts in de directory en het vinden van een script dat een specifieke functie uitvoert kan erg vervelend zijn. Naar mijn mening is dit waar Zenmap (de grafische interface die we eerder hadden besproken) echt doorschijnt. Om aan te tonen hoe nuttig de Zenmap interface kan zijn bij het werken met NSE scripts, open deze nogmaals vanaf de commandoregel met het commando:
zenmap
selecteer vervolgens het vervolgkeuzemenu profiel en klik op “New Profile or Command.”Nadat de profiel-Editor wordt geopend, kiest u het tabblad Scripting aan de bovenkant van het scherm. Figuur 10 toont een afbeelding van de Zenmap Scripting interface.
Figuur 10. Zenmap Scripting Interface
een lijst van alle beschikbare Nmap scripts bevindt zich aan de linkerkant van het scherm. Je kunt elk van deze selecteren om het in je Nmap commando op te nemen. Sommige scripts hebben argumenten nodig om correct te kunnen draaien. Post authenticatie scripts vereisen vaak een gebruikersnaam en wachtwoord voor specifieke netwerkdiensten. In het voorbeeld in Figuur 10 kunnen argumenten worden geleverd om de brute force aanval te configureren die moet worden uitgevoerd tegen de MySQL service. U kunt ook eenvoudig de scriptargumenten doorgeven door de waarden in te voeren in het venster argumenten. Deze argumenten zullen automatisch worden ingevuld in het gegenereerde Nmap Commando. Het venster in het bovenste midden geeft een beschrijving van het geselecteerde script, het juiste gebruik en de syntaxis, en zelfs categorieën om de functies van het script te beschrijven. Deze categorieën kunnen vooral nuttig zijn als u probeert een specifiek type taak uit te voeren, zoals kwetsbaarheidsanalyse. Na het starten van een NSE script met een Nmap Commando, zul je de resultaten zien in de standaard Nmap uitvoer. In het geval van brute force scripts, zal de uitvoer laten zien of de brute force aanval succesvol was en, zo ja, zal de ontdekte gebruikersnaam en wachtwoord weer te geven. In het geval van kwetsbaarheid scripts, de output zal aangeven of de kwetsbaarheid aanwezig is op het doel systeem(s). En in het geval van exploitatie scripts, de output zal informatie over de payload die vervolgens werd geleverd aan het doelsysteem te bieden.
Scripting met Nmap
naast zijn eigen geïntegreerde scripting engine ondersteunt nmap ook verschillende uitvoeropties die het eenvoudig maken om traditionele scripttalen te gebruiken voor het uitvoeren van uitvoeranalyse. Twee uitvoerformaten die nuttig kunnen zijn voor scripting zijn greppable output (-oG
) en XML output (-oX
). XML kan effectief zijn voor scripttalen op een hoger niveau die modules hebben die kunnen worden geïmporteerd voor XML-parsing en greppable output kan worden gebruikt in combinatie met de bash shell scripting om analyse van Nmap resultaten te stroomlijnen. Om aan te tonen hoe deze uitvoerfunctie kan worden gebruikt in combinatie met scripting, zullen we een eenvoudig 4-regel bash shell script bekijken, weergegeven in Figuur 11 om de resultaten van een Nmap scan te analyseren.
Figuur 11. Nmap Result Analysis Bash Script
beschouw een scenario waarin een Nmap scan al werd uitgevoerd tegen een zeer groot netwerk en de output van de scan werd opgeslagen in greppable formaat naar een networkscan.txt-bestand. En stel dat we hydra willen gebruiken om een brute force aanval uit te voeren tegen alle FTP-diensten op het netwerk, maar we willen niet de tijd verspillen die nodig zou zijn om poort 21 opnieuw te scannen op het hele netwerk. Dit eenvoudige script zal alle systemen extraheren die een opgegeven poort open hebben. De eerste regel vraagt de gebruiker om een poortnummer. De tweede regel wijst vervolgens de waarde van de invoer van de gebruiker toe aan de variabele’ port’. De derde regel geeft de gebruiker aan dat alle systemen met die Open poort zullen worden weergegeven. En tot slot, het laatste commando is waar we grep uit de resultaten van de Nmap greppable output. Het script gebruikt het grep commando om alle regels uit het uitvoerbestand te extraheren die verwijzen naar de opgegeven poort. Dit zal regels bevatten die elke instantie opsommen van waar de poort open, gesloten of gefilterd is. Dan, het pipes die output over naar een andere grep-functie die alleen instanties extraheert waarin de opgegeven poort open is. Deze uitvoer wordt dan doorgesluisd naar de cut-functie, die een spatiekarakter specificeert als het scheidingsteken en vervolgens het tweede veld uitvoert. Door dit te doen, geeft ons script dan het IP-adres uit voor elk systeem dat de opgegeven poort open heeft. Figuur 12 toont de uitvoer van het script.
Figuur 12. Nmap Result Analysis Script Output
hoewel dit een zeer eenvoudig script is, laat het zien hoe gemakkelijk het kan zijn om informatie uit het greppable output formaat te halen. Eenmaal verworven, deze verzamelde informatie kan gemakkelijk worden gebruikt voor verdere scripting. Het kan worden gebruikt als een uitgangspunt om een andere volgende taak uit te voeren tegen elk systeem dat werd geïdentificeerd als een specifieke poort open.
een alles-in-één Penetratietesttool
door de verschillende mogelijkheden te combineren, kan men eenvoudig een volledige penetratietest uitvoeren door alleen nmap te gebruiken. Het valt niet te ontkennen dat nmap, met zijn indrukwekkende lijst van functies en mogelijkheden, is een echt krachtige tool. En naarmate de jaren vorderen, zal het waarschijnlijk nog krachtiger worden naarmate meer mensen blijven bijdragen aan dit project. Net als een kind met het pistool van zijn vader, kan nmap een gevaarlijk hulpmiddel zijn in de verkeerde handen. Maar als het correct wordt gebruikt, kan het van onschatbare waarde zijn voor het waarborgen van de veiligheid van uw netwerkinfrastructuur. Denk er dus altijd aan om het verstandig en goed te gebruiken.
over de auteur
Justin Hutchens doet momenteel netwerk vulnerability analysis, intrusion detection en digital forensics voor een groot bedrijfsnetwerk met meer dan 33.000 netwerksystemen. Hij heeft tal van verschillende rollen vervuld op het gebied van informatietechnologie, waaronder netwerkontwerp, systeemontwikkeling, databasebeheer en netwerkbeveiliging. Hij geeft momenteel ook cursussen over penetratie testen met de Backtrack en Kali-Linux besturingssystemen. Hij heeft momenteel een Bachelor in informatietechnologie en meerdere professionele certificeringen te omvatten CISSP (Certified Information System Security Professional), CEH (Certified Ethical Hacker), ECSA (EC-Council Certified Security Analyst) en CHFI (Computer Hacking Forensic Investigator).