Nmap: en “Hacker værktøj” for sikkerhed fagfolk
af Justin Hutchens
begrebet “etisk hacker” har altid været ironisk. De udviklende tendenser inden for etisk hacking og stødende sikkerhed har forvandlet informationssikkerhedsindustrien til en af de mest selvforstærkende industrier i verden.
de programmer og værktøjer, der bruges til at sikre sårbare informationsaktiver, er de samme værktøjer, der kan bruges til at udnytte dem. Måske er det omvendt. Måske bruges de værktøjer, der blev oprettet med det ene formål at udnytte informationsaktiver, nu til at beskytte dem. Jeg formoder, at dette er en debat, der kunne fortsætte for evigt og er virkelig bare et andet eksempel på “hvad kom først…kyllingen eller ægget?”
formålet med dette essay er ikke at diskutere det filosofiske spørgsmål om hensigt. Mine intentioner er mere beskedne. Jeg forsøger blot at retfærdiggøre vigtigheden af et værktøj, der konsekvent er blevet mærket som ondsindet hackingprogram. Det værktøj, jeg henviser til, er netværkskort eller kort sagt nmap. Uanset om du er en skør rogue agent, der er opsat på at tilskynde til global revolution eller en netværkssikkerhedsprofessionel (forhåbentlig sidstnævnte snarere end førstnævnte), skal nmap have en permanent plads i dit værktøjssæt. Måske, i stedet for at kaste kritik mod et ekstremt funktionelt netværksværktøj, vi bør holde enkeltpersoner ansvarlige for deres handlinger og reflektere over den velkendte Benjamin Parker advarsel…”med stor magt, kommer stort ansvar.”På trods af nogle påstande om det modsatte, nmap er ikke ondsindet program. Og jeg tror, at den eneste grund til, at den ofte er mærket som sådan, er på grund af dens meget imponerende liste over muligheder. På trods af dets potentiale til at gøre skade kan nmap helt sikkert spille en vigtig rolle i at sikre en netværksinfrastruktur inden for et professionelt miljø.
Nmap har støt udviklet sig gennem årene fra et simpelt scanningsværktøj til en fuldblæst penetrationstestplatform. Det kan bruges i alle trin i sikkerhedsrevisionsprocessen til at omfatte netværksopdagelse, portscanning, servicetælling, sårbarhedskortlægning og endda udnyttelse. I hele denne artikel, Jeg vil diskutere mulighederne i nmap, da de vedrører hvert trin i penetrationstestprocessen.
Installation og forberedelse
det er klart, at før du bruger nmap, er det vigtigt at have en funktionel version installeret på det system, du bruger. Som standard er nmap allerede installeret på de fleste penetrationstest-og netværkssikkerhedsoperativsystemer som f.eks. Det kan dog også indlæses til næsten enhver platform efter eget valg. Nmap kan nemt installeres på alle almindeligt anvendte operativsystemer til at omfatte. Der er også dokumentation til rådighed for at installere det på mere obskure platforme til at omfatte BSD, Solaris, AIKS og AmigaOS. Installationspakker og instruktioner om, hvordan du udfører installationen på et af disse systemer, findes på http://nmap.org/book/install.html.
Nmap – Graphical Interface
ud over den traditionelle kommandolinjegrænseflade til nmap er der også en grafisk front-end-grænseflade kaldet Nmap. Det er også integreret i mange af de forskellige penetrationstestplatforme, der tidligere er diskuteret. Det er dog ikke installeret som standard i Kali-Linuk (den platform, som jeg vil bruge til denne tutorial). Heldigvis, det er i installationen repository og kan nemt installeres med en enkelt kommando:
apt-get installere kort
peg-og-klik-interface ikke kun effektivt strømliner, hvad der ellers ville kræve komplicerede kommandoer, men det kan også være et yderst nyttigt værktøj til at lære at bruge nmap. Det bruger ‘profiler’ til at gemme almindeligt anvendte scanningskonfigurationer til senere ændring og/eller brug. Tag et kig på billedet af grænsefladen, der er angivet i Figur 1, og vi vil kort adressere hver af komponenterne.
Figur 1. Grafisk grænseflade
den første komponent er målfeltet (Figur 1. En). Dette felt er, hvor du kan angive de fjernsystemer, du vil køre en scanning mod. 192.168.1.1), du kan indtaste et sekventielt interval af IP-adresser (f.eks. 192.168.1.0-255) eller du kan bruge CIDR-notation til at angive et ønsket undernet (f.eks. 192.168.1.0/24). Den anden komponent er Profilfeltet (Figur 1. B). Du kan klikke på rullemenuen til højre for dette felt for at se flere forudkonfigurerede profiler til scanning. Profiler giver dig mulighed for at gemme almindeligt anvendte scanningskonfigurationer til fremtidig brug. Du kan også oprette dine egne profiler, og de vises derefter på denne liste (vi diskuterer, hvordan du gør dette senere i denne artikel). Den tredje komponent er kommandofeltet (Figur 1. C). Dette felt angiver den kommando, der skal sendes til backend. For at starte kommandoen, der vises i dette felt, skal du blot klikke på knappen Scan. Du kan ændre værdien i dette felt direkte; det udfyldes dog automatisk baseret på værdierne i målfeltet og den valgte profil. Hvis du er ny hos nmap, skal du være meget opmærksom på dette felt, da det giver dig en bedre forståelse af den passende syntaks og brug af forskellige Nmap-kommandoer. Den fjerde komponent er værts – / servicelisten (Figur 1. G). Når du har udført scanninger, udfyldes oplysninger på denne liste. Hvis du har valgt Hosts-knappen, vises alle opdagede host-IP-adresser. Og hvis du har valgt knappen tjenester, vises alle opdagede netværkstjenester. Den endelige komponent (Figur 1. E) er hvor du kan sortere gennem alle de oplysninger, der er produceret af alle de scanninger, du har udført. Fanen Nmap Output viser det nøjagtige output, der ville blive leveret, hvis kommandoen var indtastet fra kommandolinjegrænsefladen. Indholdet på fanen Porte / værter varierer afhængigt af, om du har valgt knappen værter eller tjenester til din liste. Hvis Hosts-knappen er valgt, afspejler oplysningerne under fanen Porte/værter de tjenester, der blev identificeret på den aktivt fremhævede IP-adresse på listen. Ellers, hvis knappen Tjenester er valgt, identificerer oplysningerne under fanen Porte/værter alle værter, der viste sig at have den bestemte tjeneste, der er fremhævet på listen. Fanen topologi giver en grafisk repræsentation af netværkets logiske topologi for at inkludere alle værter, der er blevet opdaget ved scanning. Det vil bruge returnerede TTL (Time-to-Live) værdier for at vise den logiske orientering af værter, i forhold til hinanden. Fanen Værtsoplysninger er, hvor du finder størstedelen af de oplysninger, der er blevet opdaget om en valgt vært. Disse oplysninger omfatter MAC-adresser, IP-adresser, åbne porte, identificerede tjenester, operativsystemoplysninger og eventuelle yderligere oplysninger, der er indsamlet. Endelig vil fanen scanninger give en historie med scanninger, der er udført under sessionen.
øverst på skærmen ser du flere forskellige rullemenuer, der inkluderer scanning, værktøjer, profil og hjælp. Menuen Hjælp er selvforklarende. Scan-menuen indeholder muligheder for at oprette nye scanninger, gemme scanninger eller åbne tidligere gemte scanninger. Menuen Funktioner Indeholder nogle ekstra funktioner, der kan bruges til at sortere og organisere oplysninger indsamlet under dine scanninger. Og profilmenuen giver muligheder for at oprette nye scanningsprofiler eller redigere eksisterende profiler.
vi vil nu kort diskutere, hvordan man opretter en ny profil og derefter starter en scanning ved hjælp af den profil. For at komme i gang skal du vælge rullemenuen profil og derefter vælge “Ny profil eller Kommando.”Dette åbner en profilkonfigurationsgrænseflade, der kan ses i figur 2.
figur 2. 3880 >
den første fane (Profilfane) giver dig mulighed for at oprette et unikt navn og beskrivelse til profilen. Alle de andre faner er, hvor du vil angive forskellige konfigurationer, der vil blive brugt i din scanning. Som du kan se på fanen Scan, der vises i figur 2, er det så simpelt at oprette en scanningsprofil som at markere afkrydsningsfelterne for indstillinger, du vil aktivere, indtaste værdier, så disse indstillinger kan anvendes effektivt, eller vælge fra foruddefinerede valg i rullemenuen. Hvis du er usikker på funktionen eller passende brug af en mulighed her, kan du holde musepekeren over den med musen, og hjælpekolonnen til højre på skærmen udfyldes automatisk med oplysninger om, hvad den specifikke mulighed gør, og passende værdier og syntaks for de ønskede indtastningsfelter. Med hver mindre justering, du foretager i scanningskonfigurationen, justeres kommandofeltet øverst i overensstemmelse hermed. Denne funktion gør Nmap til et ekstremt effektivt værktøj til at lære at bruge Nmap-kommandoer korrekt. Når du har konfigureret scanningsindstillingerne efter eget valg, kan du enten vælge scanningsknappen øverst til højre på skærmen til engangsbrug, eller du kan vælge Gem ændringer nederst til højre. Knappen Gem ændringer gemmer profilen med det navn, der er angivet på den første fane konfigurationer og kan derefter bruges med det samme eller på et senere tidspunkt ved at vælge det ved navn fra rullemenuen profil på hovedgrænsefladen. Selvom Nmap er meget kraftfuld, bør du ikke tillade det at blive en krykke, der forhindrer dig i at lære kommandolinjefunktionerne i nmap. Selvom Nmap kan udføre mange af de samme funktioner, har den stadig sine begrænsninger og er ikke så kraftig som nmap. For at bruge nmap effektivt og til sit fulde potentiale er det vigtigt at blive lige så fortrolig med kommandolinjegrænsefladen.
netværksopdagelse
det første trin i penetrationstestprocessen, som vi skal diskutere, er netværksopdagelse. Før du vurderer sikkerheden af informationssystemer på et netværk, skal du først identificere, hvad du vurderer. Der er en række forskellige måder, du kan finde værter på et netværk ved hjælp af nmap. I dette afsnit vil vi diskutere, hvordan man bruger nmap til at udføre værtsopdagelse i lag 2, 3 og 4 i OSI-modellen, og vi vil også diskutere fordele og ulemper ved hver. Et eksempel på en kommando til at udføre lag 2-opdagelse kan ses her:
nmap-PR-sn 192.168.1.0-255
kontakten -PR
angiver en ARP-ping. Dette bruger Layer 2 ARP-pakker (Address Resolution Protocol) til at identificere live-værter inden for det angivne interval. Det gør det ved at sende en ARP-udsendelsesanmodning for hver af de identificerede IP-adresser. Hvis der er en live vært på netværket med en af disse IP-adresser, sender denne vært et ARP-svar til scanningssystemet med sin IP-adresse og dens tilsvarende layer 2 MAC-adresse. Nmap indsamler svar fra alle live værter og returnerer derefter en liste over værter, der blev opdaget. Kontakten -sn
bruges til at anmode om, at nmap ikke udfører nogen portscanning. Dette forhindrer transmission af yderligere trafik, ud over hvad der er nødvendigt for at udføre lag 2 host discovery feje. Layer 2 discovery er effektiv, fordi det er den hurtigste af alle tre muligheder. Det er dog begrænset af det faktum, at det kun kan udføres mod værter, der er på det samme lokale netværk som det system, der udfører scanningen.
for eksterne værter skal du bruge enten Layer 3 eller layer 4 discovery. Et eksempel på en kommando, der kunne bruges til at udføre lag 3-opdagelse, er:
nmap-PE-SN 109.74.11.0-255
denne kommando sender en række ICMP-ekkoanmodninger til hvert lag 3 IP-adresse på listen. Nmap vil indsamle alle ICMP echo svar, der er modtaget, og vil returnere en liste over alle levende værter. Denne opdagelsesscanning er langsommere end at udføre en ARP-ping, men den returnerer resultater for værter på eksterne netværk.
Antag endelig, at du forsøger at finde fjernsystemer (så du ikke kan bruge lag 2), der ligger bag en brandvæg, der taber al indgående ICMP-trafik (så du ikke kan bruge lag 3). For at løse dette problem skal du udføre opdagelse på transportlaget (lag 4). Der er flere forskellige måder, du kan bruge layer 4-scanninger til at udføre opdagelse. En effektiv metode er at bruge en UDP ping. Et eksempel på en UDP ping-kommando er:
nmap-PU53-sn 109.74.11.0-255
denne kommando genererer en række DNS-serverstatusanmodninger for hver af mål-IP-adresserne. En række DNS-forespørgselssvar vil blive modtaget fra live værter, og nmap returnerer derefter disse resultater. Da DNS er en almindeligt anvendt tjeneste på UDP-port 53, er det muligt at identificere yderligere live-værter ved hjælp af denne teknik, der muligvis er konfigureret til ikke at reagere på ICMP-trafik. Et andet effektivt lag 4 alternativ til ICMP ping fejer er at bruge en TCP ACK ping. Et eksempel på dette kan ses nedenfor:
nmap-PA80-sn 109.74.11.0-255
denne kommando sender en række uopfordrede ACK-svar til den angivne port for alle værterne i IP-området. Da disse ACK-pakker var ude af sammenhæng med enhver etableret kommunikationslinje, svarer live-værter med en TCP RST-pakke for at indikere, at kommunikationen skal afbrydes. Nmap indsamler disse svar som indikation af live værter og returnerer derefter en liste over dem.
portscanning og Servicetælling
nu hvor vi har opdaget de aktive IP-adresser på netværket, som vi udfører en penetrationstest mod, skal vi derefter identificere åbne porte på hvert system og de tjenester, der kører på disse porte. Scanning af TCP-porte på fjernsystemer er den mest grundlæggende funktion af nmap. For at udføre en TCP-scanning af et målsystem skal du bruge den grundlæggende kommando:
nmap 109.74.11.34
som andre Nmap-kommandoer kan dette også bruges til at udføre scanninger mod flere værter ved hjælp af en Sekventiel serie (192.168.1-255) eller CIDR notation (192.168.1.0 / 24). Denne standard Nmap-kommando udfører en scanning på 1000 almindeligt anvendte TCP-porte. Alternativt kan du angive en enkelt port, der skal scannes, ved hjælp af-p-kontakten efterfulgt af det portnummer, du vil scanne.
nmap 109.74.11.34-p 21
denne ovenstående kommando scanner TCP-port 21 på det angivne system. Du kan også scanne en række porte ved hjælp af-p-kontakten og derefter angive de ønskede porte og adskille dem med kommaer.
nmap 109.74.11.34-p 80,443
denne kommando scanner porte 80 og 443 på målsystemet. Du kan scanne et sekventielt interval af porte ved hjælp af kontakten -p
efterfulgt af den første værdi i området, en bindestreg og derefter den sidste værdi i området.
nmap 109.74.11.34-p 0-100
ovenstående kommando scanner de første 100 porte. Hvis du vil scanne alle 65.536 TCP-porte på et mål, skal du bruge følgende kommando:
nmap 109.74.11.34-p 0-65535
du kan bruge en TCP ACK-scanning til at identificere porte, der er filtreret. For at gøre dette skal du bruge-sA-kontakten. Du kan derefter angive en port eller en række porte. Ingen port specifikation vil scanne standard 1.000 porte. Dette returnerer derefter en liste over filtrerede porte. Et eksempel på denne kommando kan ses nedenfor:
nmap 109.74.11.34-sA
penetrationstestere og sikkerhedspersonale vil undertiden kun scanne efter åbne TCP-porte på målsystemer. Udsigt over UDP-tjenester kan få en til helt at overse skarpe sårbarheder, der let kan føre til kompromis. Hvis du vil scanne efter UDP-tjenester på et målsystem, skal du bruge følgende kommando:
nmap 109.74.11.34-sU
da UDP-tjenester ikke er forbindelsesorienterede på samme måde som TCP-tjenester, vil dette tage længere tid end en typisk TCP-scanning. Den tid, der kræves for at fuldføre UDP-scanninger, kan reduceres ved at scanne efter bestemte porte. Du kan angive porte på samme måde som du havde med TCP-scanninger.
nmap 109.74.11.34-sU-p 69
ovenstående kommando udfører en scanning af UDP-port 69, en almindeligt anvendt port til TFTP (Trivial File Transport Protocol). Det er også muligt at identificere version og versionsnummer for hver enkelt tjeneste. For at gøre dette skal du bruge-sV-kontakten.
nmap 109.74.11.34-sV
denne kommando bruger en kombination af bannergreb og probe-responsanalyse for at forsøge at identificere tjenesten og versionsnummeret for den pågældende Tjeneste for hver scannet port. Ved hjælp af lignende teknikker er det også muligt at have nmap-forsøg på at bestemme det operativsystem, der kører på målet. For at gøre dette skal du bruge kontakten -O
.
nmap 109.74.11.34-O
når det er afsluttet, returnerer det enten en positiv identifikation af operativsystemet, eller det giver det bedste gæt og derefter en liste over andre mulige operativsystemer.
avancerede scanningsteknikker
der er et almindeligt problem, som du ofte vil støde på, når du udfører en penetrationstest mod mellemstore til store virksomhedsnetværk. De fleste virksomheder og organisationer i disse dage er blevet mere sikkerhedsindstillede og vil sandsynligvis have brandvægge eller indbrudsdetekteringssystemer, der står mellem dig og de systemer, du prøver at scanne. For at scanne sådanne systemer skal vi anvende nogle mere avancerede scanningsteknikker. En måde at potentielt omgå brandvægge og / eller indbrudsdetekteringssystemer er at bruge nogle traditionelle stealth-scanningsteknikker, der er integreret i nmap. En metode, der kan anvendes, er at bruge en langsommere timingskabelon. Timing skabeloner spænder fra -T0
(paranoid scanning) hele vejen op til -T5
(sindssyg scanning). Jo lavere værdien af timingskabelonen er, desto langsommere udføres scanningen. Langsommere scanninger er mindre tilbøjelige til at blive markeret af indbrudsdetekteringssystemer. Et eksempel på en paranoid scanning ville være:
nmap 109.74.11.0-255-T0
en anden teknik, der kan bruges til at maskere din scanning, er at oversvømme netværket med yderligere lokketrafik ved hjælp af kontakten -D
. Denne funktion giver dig mulighed for at angive flere adresser til spoof trafik fra, eller du kan bruge RND mulighed for at spoof trafik fra tilfældige adresser.
nmap 109. 74. 11. 0-255-D RND:5
ud over at udføre den traditionelle TCP-portscanning af målsystemerne, vil kommandoen ovenfor også spoof trafik fra 5 tilfældige adresser for at tilsløre den faktiske scanningstrafik. En anden teknik, der kan bruges, er at variere pakkelængden på dine transmitterede anmodninger. Nogle indbrudsdetekteringssystemer og brandvægge vil droppe pakker baseret på signaturpakkelængder. For at forhindre dette kan du angive datalængden ved hjælp af kontakten --data-length
efterfulgt af pakkestørrelsen i antal byte.
nmap 109.74.11.0-255 — data-Længde 15
denne kommando sender al scanningstrafik i pakker, der er 15 bytes lange. Selvom dette kan være nyttigt for at undgå nogle signaturbaserede indtrængningsdetekteringssystemer, kan konsekvent afsendelse af pakker med en usædvanlig specificeret pakkelængde markere et anomalibaseret indtrængningsdetekteringssystem. Netværksindbrudsdetekteringssystemer markerer også trafik, hvis du begynder at oprette forbindelse sekventielt til systemer inden for et bestemt netværksområde. For at undgå at udføre dine scanninger i rækkefølge kan du bruge kontakten --randomize-hosts
.
nmap 109.74.11.0-255-randomisere-værter
denne kommando ovenfor scanner tilfældigt hver vært i området i stedet for at udføre dem i rækkefølge (109.74.11.0, derefter 109.74.11.1, derefter 109.74.11.2 osv.). Selvom du ikke kan spoofe din IP-adresse (fordi du ikke ville modtage de svar, der er nødvendige for at bestemme åbne porte), kan du spoofe din MAC-adresse. For at gøre dette kan du bruge knappen –spoof-mac efterfulgt af et kreditor-ID, en bestemt MAC-adresse eller 0.
nmap 109.74.11.0-255 –spoof-mac 0
brug af 0 som dit argument anvender en tilfældig MAC-adresse på din scanningstrafik. En sidste teknik, der er værd at nævne, er at bruge-f-kontakten til fragmentpakker.
nmap 109.74.11.0-255-f
fragmentering pakker vil adskille data nyttelast af din scanning trafik i flere pakker, så det lettere at omgå indholdsinspektion intrusion detection systemer eller brandvægge. Mens alle disse teknikker kan være effektive til scanning af offentligt tilgængelige servere bag en brandvæg, er de normalt ikke tilstrækkelige til at scanne værter på et internt netværk. Mens visse offentligt tilgængelige servere vil være tilgængelige til scanning, vil meget af den interne infrastruktur være dybere inden for netværket og ikke så let tilgængelig. Overvej diagrammet i figur 3. Dette er et simpelt eksempel på en fælles konfiguration i virksomhedsnetværk.
figur 3. Fælles netværkskonfiguration
det problem, vi støder på her, er, at det interne netværk ligger bag en intern brandmur, som har strengere regler om indtrængningstrafik sammenlignet med den eksterne brandmur. Denne interne brandmur blokerer sandsynligvis indgående trafik fra fjernadresser på nettet; Det er dog muligt, at systemerne i DMG kan kommunikere med de interne systemer. For at kunne scanne disse interne systemer, skal vi få systemerne i DMS til at fungere på vores vegne. Vi vil diskutere flere forskellige måder at gøre dette på, for at inkludere fuldmægtigscanning, FTP-bounce-scanning og FTP-bounce-scanning.
sandsynligvis den nemmeste måde at scanne de interne systemer er ved hjælp af en fuldmægtig kæde. Lad os antage, at vi har erhvervet adgang til en fuldmægtigtjeneste inden for DM ved at lokalisere en åben adgangsfuldmægtigtjeneste, brute tvinge en fuldmægtigtjeneste med hydra eller ved at installere en fuldmægtigtjeneste på en allerede kompromitteret maskine. Når du har konfigureret dit system til at dirigere trafik gennem denne fuldmagt, kan du udføre nmap-scanninger ved hjælp af en fuld forbindelsesscanning (-sT
).
nmap 10.1.1.0-255-sT
hvis der ikke er nogen fuldmagtstjeneste tilgængelig, er der nogle smarte måder, du kan udnytte maskiner inden for DM for at få scanningsresultater på interne systemer. En måde at gøre dette på er at bruge tomgangsscanning, også kaldet tomgangsscanning. For at udføre en scanning mod systemerne på det interne LAN, må vi finde en levedygtig vært inden for systemet. En host er et relativt tomgangssystem, der bruger trinvis IPID-sekventering. For at finde en Nmap-vært kan vi bruge et Nmap-script til at scanne DM for et system, der passer til denne beskrivelse.
nmap –script ipidsek 109.74.11.0-255
dette script sender en række pakker til hver vært og sporer IPID-numrene for alle modtagne svar. Det vil derefter analysere disse IPID-numre for at klassificere hvert system som enten tilfældig sekvens, alle nuller eller trinvis. Se figur 4 for et eksempel på output for et inkrementelt system.
figur 4. Host placeret med IPID sekvens Script
når vi har erhvervet en IP-adresse til vores IP-system, er vi klar til at forsøge vores IP-scanning. Før jeg adresserer, hvordan scanningen udføres, jeg vil kort diskutere, hvordan scanningen fungerer. Se figur 5 for et diagram over, hvad der finder sted, når en scanning udføres mod en åben port.
figur 5. Scan mod open port
først bestemmer vores Nmap-scanner den aktuelle IPID-værdi af systemet ved at sende en uopfordret SYN/ACK-pakke. Da der ikke oprindeligt blev sendt nogen SYN-pakke af systemet for at etablere en forbindelse, svarer synbien derefter på vores scanner med en første pakke. Vores scanningssystem bruger derefter IPID for den første pakke som referencepunkt. Derefter vil vores scanningssystem straks følge dette op med en forfalsket SYN-pakke sendt til målsystemet ved hjælp af en kilde-IP-adresse til systemet. Da kildens IP-adresse er en inden for DMS, er det mere sandsynligt, at denne forbindelsesanmodning kan passere gennem brandvæggen. Hvis målet modtager pakken, og destinationsporten er åben, returnerer målet derefter en SYN/ACK-pakke til systemet (som det mener sendte den originale SYN-pakke). Da denne SYN / ACK-pakke modtages uden for kontekst, svarer systemet derefter til målsystemet med en første pakke og derved øger dens IPID-værdi med en. Endelig sender vores scanner en sidste SYN / ACK-pakke til systemet. Det efterfølgende første svar fra bomben vil øge IPID endnu en gang. Så hvis den målrettede port på fjernsystemet er åben, vil den endelige ipid-værdi, der returneres, være to tal højere end den oprindelige værdi. Alternativt illustrerer figur 6, hvad der sker, når målsystemets port er lukket.
figur 6. Scan mod lukket port
hvis porten på målsystemet er lukket, modtager systemet ikke noget uopfordret svar fra målet og er derfor ikke tilskyndet til at sende en første pakke til målet. Så hvis IPID-værdien af det endelige første svar kun er steget med en, kan vi udlede, at porten er lukket, fordi der ikke blev sendt noget SYN/ACK-svar til systemet for at indlede et første svar. Ellers, hvis den endelige IPID-værdi er steget med to fra den oprindelige værdi, så kan vi udlede, at porten på målsystemet skal åbnes, fordi den skal have svaret på den pågældende ipid-værdi, som anstiftede svaret, der forøgede IPID-værdien af det pågældende system.
selvom dette måske lyder ekstremt kompliceret; bliv ikke skræmt af beskrivelsen, da nmap gør næsten alt arbejdet for dig. For faktisk at udføre en scanning, skal du bare indtaste en simpel kommando.
nmap-si 192.168.199.132-Pn 192.168.199.130
kontakten -sI
fortæller nmap at udføre en scanning med følgende IP-adresse som vært (192.168.199.132). -Pn
– kontakten forhindrer nmap i at udføre en indledende ICMP-ping på målsystemet, inden scanningen forsøges. Så den endelige IP-adresse i kommandoen identificerer målsystemet. Udgangen til denne kommando kan ses i Figur 7.
Figur 7. Scan mod lukket port
det skal bemærkes, at IP-området, som jeg brugte til at demonstrere denne scanningsscanning, er et privat område på mit interne netværk. For at dette kan fungere effektivt mod et eksternt netværk, som beskrevet i det oprindelige scenario, skal systemerne i både DM og det interne netværk være på offentligt rutbare IP-intervaller. Hvis det interne netværk er konfigureret på et privat område bag en nat-Server (Netværksadresseoversættelse), kan nmap-scanneren ikke sende den falske SYN-pakke til den interne adresse fra dens fjernplacering.
en anden måde at bruge systemer i systemet til at forsøge at scanne værter på det interne netværk er at bruge FTP bounce. Nogle ældre FTP-servere understøtter evnen til at overføre filer til et tredjepartssystem. Hvis du har opdaget en FTP-server, der tillader anonym login, eller som du har brute tvunget med hydra, kan du teste FTP-serveren for at afgøre, om den understøtter FTP-bounce. For at gøre dette skal du bruge FTP-bounce-scriptet.
nmap — script ftp-bounce –script-args
ftp-bounce.brugernavn = anonym,
denne kommando bruger Nmap script med brugernavn og adgangskode argumenter mod FTP-serveren. Når den er afsluttet, vil denne scanning indikere, om FTP-bounce er mulig eller ej. Hvis scriptet angiver, at FTP bounce fungerer, kan du bruge FTP-serveren til at udføre en portscanning mod andre systemer på netværket. Figur 8 viser, hvordan det fungerer.
figur 8. FTP bounce scan
scanneren vil forsøge at sende binære data via FTP bounce-funktionen til målsystemet i en udpeget port. Hvis dataene overføres, rapporterer FTP-serveren derefter tilbage til scanneren, hvilket indikerer, at porten på målsystemet er åben. For at udføre en FTP-bounce-scanning skal du bruge kontakten -b
.
nmap-b ftpuser::21 10.1.1.128-255
i denne kommando bruges -b
– funktionen til at udføre en FTP-bounce-scanning ved hjælp af brugernavnet “ftpuser” og adgangskoden PassW0rd
mod FTP-serveren på 192.168.11.201 hostet på TCP-port 21. De handlinger, der er beskrevet i diagrammet ovenfor, udføres derefter mod hver af de fælles 1000-porte på hver af målværterne fra 10.1.1.128 til 10.1.1.255.
kortlægning og udnyttelse af sårbarhed med NSE
når du har opdaget live-værter på målnetværket og har formået at opregne åbne porte og/eller kørende tjenester på disse værter, kan du begynde at teste for og udnytte sårbarheder. Med den nyligt integrerede nse (Nmap Scripting Engine) er der et antal forudindlæste scripts, der følger med standard Nmap-installationen. Disse scripts har en bred vifte af forskellige funktioner fra grundlæggende informationsindsamling (som de to, vi allerede har diskuteret), kortlægning af sårbarhed, brutal tvang, lammelsesangreb og endda fjernudnyttelse. Alle disse scripts er placeret i din Nmap installation mappe. I Kali-Linuks kan de findes på /usr/share/nmap/scripts/
. Brug følgende kommandoer for at gennemse disse scripts og begynde at arbejde med dem:
cd /usr/share/nmap/scripts/
ls
kommandoen cd
ændrer mappen til placeringen af NSE-scripts, og kommandoen ls
viser indholdet af mappen. Du kan derefter se et af scripts ved hjælp af kommandoen cat
efterfulgt af navnet på det script, du vil se. Med henblik på denne demonstration vil vi bruge ftp-vuln-cve2010-4221.nse
. For at se indholdet af dette script skal du bruge følgende kommando:
cat ftp-vuln-cve2010-4221.nse
figur 9. Nse script indhold
figur 9 viser indholdet af dette script. Hvis du går til toppen af scriptindholdet, vil du se flere nyttige oplysninger for at inkludere en beskrivelse af scriptet, en liste over yderligere ressourcer til reference og passende brug og syntaks af scriptet. Det kan dog være meget kedeligt at sortere gennem disse scripts i biblioteket og finde et script, der udfører en bestemt funktion. Efter min mening er det her, hvor den grafiske grænseflade, som vi tidligere havde diskuteret) virkelig skinner igennem. For at demonstrere, hvor nyttigt grænsefladen kan være, når du arbejder med NSE-scripts, skal du åbne den igen fra kommandolinjen med kommandoen:
senmap
vælg derefter rullemenuen profil og klik på “Ny profil eller Kommando.”Når Profileditoren åbnes, skal du vælge fanen Scripting øverst på skærmen. Figur 10 viser et billede af scripting interface.
Figur 10. 3880 >
en liste over alle de tilgængelige Nmap-scripts er placeret på venstre side af skærmen. Du kan vælge en af disse for at få den inkluderet i din Nmap-kommando. Nogle scripts kræver argumenter for at kunne køre korrekt. Scripts til postgodkendelse kræver ofte et brugernavn og en adgangskode til specifikke netværkstjenester. I eksemplet i Figur 10 kan der leveres argumenter for at konfigurere det brute force-angreb, der skal udføres mod tjenesten. Du kan også nemt videregive scriptargumenterne ved at indtaste værdierne i vinduet argumenter. Disse argumenter udfyldes automatisk i den genererede Nmap-kommando. Vinduet i øverste center giver en beskrivelse af det valgte script, passende brug og syntaks og endda kategorier til at beskrive scriptets funktioner. Disse kategorier kan være særligt nyttige, hvis du forsøger at udføre en bestemt type opgave, såsom sårbarhedsanalyse. Når du har lanceret et NSE-script med en Nmap-kommando, vil du se resultaterne i standard Nmap-output. I tilfælde af brute force-scripts viser output, om brute force-angrebet var vellykket, og i så fald viser det opdagede brugernavn og adgangskode. I tilfælde af sårbarhedsskripter angiver output, om sårbarheden er til stede på målsystemet(erne). Og i tilfælde af udnyttelsesskripter vil output give oplysninger om den nyttelast, der efterfølgende blev leveret til målsystemet.
Scripting med Nmap
ud over sin egen integrerede scriptingmotor understøtter nmap også flere Outputindstillinger, der gør det nemt at bruge traditionelle scriptsprog til at udføre outputanalyse. To outputformater, der kan være nyttige til scripting, omfatter greppable output (-oG
) og 6186>). Kan bruges sammen med bash shell scripting til at strømline analysen af Nmap-resultater. For at demonstrere, hvordan denne outputfunktion kan bruges sammen med scripting, gennemgår vi et simpelt 4-linjers bash shell-script, der vises i Figur 11 for at analysere resultaterne af en nmap-scanning.
Figur 11. Nmap-resultatanalyse Bash Script
overvej et scenario, hvor en nmap-scanning allerede blev udført mod et meget stort netværk, og output fra scanningen blev gemt i greppable format til et netværkscan.tekstfil. Og antag, at vi vil bruge hydra til at udføre et brute force-angreb mod alle FTP-tjenester på netværket, men vi ønsker ikke at spilde den tid, der kræves for at scanne port 21 på hele netværket igen. Dette enkle script vil udtrække alle systemer, der har en bestemt port åben. Den første linje beder brugeren om et portnummer. Den anden linje tildeler derefter værdien af brugerinput til ‘port’ – variablen. Den tredje linje angiver for brugeren, at alle systemer med den åbne port vil blive opført. Og endelig er den sidste kommando, hvor vi grep ud resultaterne fra nmap greppable output. Scriptet bruger grep-kommandoen til at udtrække alle linjer fra outputfilen, der refererer til den angivne port. Dette vil omfatte linjer, der opregner hver forekomst af, hvor porten er åben, lukket eller filtreret. Derefter rør det, der udsendes til en anden grep-funktion, der kun udtrækker tilfælde, hvor den angivne port er åben. Denne udgang ledes derefter over til cut-funktionen, som specificerer et mellemrumstegn som afgrænser og derefter udsender det andet felt. Ved at gøre dette udsender vores script derefter IP-adressen for hvert system, der har den angivne port åben. Figur 12 viser udgangen af scriptet.
Figur 12. Nmap resultatanalyse Script Output
selvom dette er et meget simpelt script, viser det, hvor nemt det kan være at udtrække oplysninger fra det greppable outputformat. Når den er erhvervet, kunne denne indsamlede information let bruges til yderligere scripting. Det kunne bruges som udgangspunkt til at udføre en anden efterfølgende opgave mod hvert system, der blev identificeret til at have en bestemt port åben.
et alt-i-en Penetrationstestværktøj
ved at kombinere dets forskellige muligheder kunne man let udføre en komplet penetrationstest ved hjælp af nmap alene. Der kan ikke benægtes, at nmap med sin imponerende liste over funktioner og kapaciteter er et virkelig kraftfuldt værktøj. Og efterhånden som årene skrider frem, vil det sandsynligvis blive endnu mere magtfuldt, da flere mennesker fortsætter med at bidrage til dette projekt. Som et barn med sin fars pistol kan nmap være et farligt værktøj i de forkerte hænder. Men hvis det bruges korrekt, kan det være et uvurderligt aktiv for at sikre sikkerheden i din netværksinfrastruktur. Så husk altid at bruge det klogt og bruge det godt.
om forfatteren
Justin Hutchens gør i øjeblikket netværkssårbarhedsanalyse, indtrængningsdetektion og digital retsmedicin til et stort virksomhedsnetværk med over 33.000 netværkssystemer. Han har fyldt adskillige forskellige roller inden for informationsteknologi til at omfatte netværksdesign, systemudvikling, databaseadministration og netværkssikkerhed. Han underviser også i øjeblikket kurser om penetrationstest med backtrack og Kali-links operativsystemer. Han har i øjeblikket en bachelorgrad i informationsteknologi og flere professionelle certificeringer til at omfatte CISSP (Certified Information System Security Professional), CEH (Certified Ethical Hacker), ECSA (EC-Council Certified Security Analyst) og CHFI (Computer Hacking Forensic Investigator).