Nmap: et «Hackerverktøy» for Sikkerhetsprofessorer
Av Justin Hutchens
begrepet «etisk hacker»har alltid vært en ironisk. Utviklingen av etisk hacking og offensiv sikkerhet har forvandlet informasjonssikkerhetsindustrien til en av de mest selvopprettholdende næringene i verden.
programvaren og verktøyene som brukes til å sikre sårbare informasjonsressurser, er de samme verktøyene som kan brukes til å utnytte dem. Kanskje det er den andre veien rundt. Kanskje blir verktøyene som ble opprettet med det eneste formål å utnytte informasjonsmidler, nå brukt til å beskytte dem. Jeg antar at dette er en debatt som kan fortsette for alltid, og er egentlig bare en annen forekomst av » hva kom først…kyllingen eller egget?»
hensikten med dette essayet er ikke å diskutere det filosofiske spørsmålet om hensikt. Mine intensjoner er mer beskjedne. Jeg prøver bare å rettferdiggjøre viktigheten av et verktøy som konsekvent har blitt merket som skadelig hackingsprogramvare. Verktøyet jeg refererer til Er Network Mapper, eller nmap for kort. Enten du er en gal rogue agent som er bøyd på å oppfordre global revolusjon eller en nettverkssikkerhetsprofessor (forhåpentligvis sistnevnte, i stedet for den tidligere), bør nmap ha et fast sted i verktøykassen din. Kanskje, i stedet for å kaste kritikk mot et ekstremt funksjonelt nettverksverktøy, bør vi holde enkeltpersoner ansvarlige for sine handlinger og reflektere over Den velkjente Benjamin Parker-advarselen…»med stor makt kommer stort ansvar.»Til tross for noen påstander om det motsatte, er nmap ikke skadelig programvare. Og jeg tror den eneste grunnen til at det ofte er merket som sådan, er på grunn av sin meget imponerende liste over evner. Til tross for potensialet til å gjøre skade, kan nmap sikkert spille en viktig rolle i å sikre en nettverksinfrastruktur i et faglig miljø.
Nmap har jevnt utviklet seg gjennom årene fra et enkelt skanneverktøy til en fullblåst penetrasjonstestplattform. Den kan brukes i alle trinn i sikkerhetsrevisjonsprosessen, for å inkludere nettverksoppdagelse, portskanning, tjenesteopptelling, sårbarhetskartlegging og til og med utnyttelse. Gjennom denne artikkelen vil jeg diskutere mulighetene til nmap som de gjelder for hvert trinn i penetrasjonstestingsprosessen.
Installasjon Og Forberedelse
Det Er Åpenbart at før du bruker nmap, er det Viktig å ha en funksjonell versjon installert på systemet du bruker. Som standard er nmap allerede installert på de fleste penetrasjonstesting og nettverkssikkerhetsoperativsystemer som Kali-Linux, Backtrack, DEFT, Node-Zero, Security Onion og NST. Det kan imidlertid også lastes til nesten hvilken som helst plattform du ønsker. Nmap kan enkelt installeres på alle vanlige operativsystemer for Å inkludere Windows, Linux og OSX. Det er også dokumentasjon tilgjengelig for å installere den på mer obskure plattformer for å inkludere BSD, Solaris, AIX og AmigaOS. Installasjonspakker og instruksjoner om hvordan du utfører installasjonen på noen av disse systemene, finner du på http://nmap.org/book/install.html.
Zenmap-Grafisk Grensesnitt
i tillegg til det tradisjonelle kommandolinjegrensesnittet for nmap, er det også et grafisk frontgrensesnitt kalt Zenmap. Zenmap er også integrert i mange av de forskjellige penetrasjonstestplattformene som tidligere ble diskutert. Det er imidlertid ikke installert som standard I Kali-Linux (plattformen jeg skal bruke til denne opplæringen). Heldigvis er Det i installasjonsregisteret og kan enkelt installeres med en enkelt kommando:
apt-get install zenmap
Zenmaps pek-og-klikk-grensesnitt effektiviserer ikke bare det som ellers ville kreve kompliserte kommandoer, men det kan også være et ekstremt nyttig verktøy for å lære å bruke nmap. Den bruker ‘profiler’ for å lagre brukte skannekonfigurasjoner for senere endring og / eller bruk. Ta en titt på bildet Av Zenmap-grensesnittet som er gitt I Figur 1, og vi vil kort adressere hver av komponentene.
Figur 1. Zenmap Grafisk Grensesnitt
Den første komponenten er Målfeltet (Figur 1. En). Dette feltet er der du kan angi de eksterne systemene du vil kjøre en skanning mot. Du kan angi en ENKELT IP-adresse (f. eks. 192.168.1.1), du kan angi et sekvensielt område AV IP-adresser (f.eks. 192.168.1.0-255) eller DU kan bruke CIDR notasjon for å angi et ønsket delnett (f. eks 192.168.1.0 / 24). Den andre komponenten Er Profilfeltet (Figur 1. B). Du kan klikke på rullegardinpilen til høyre for dette feltet for å se flere forhåndskonfigurerte profiler for skanning. Profiler lar deg lagre brukte skannekonfigurasjoner for fremtidig bruk. Du kan også opprette egne profiler, og de vil da vises i denne listen (vi diskuterer hvordan du gjør dette senere i denne artikkelen). Den tredje komponenten er Kommandofeltet (Figur 1. C). Dette feltet vil indikere kommandoen som skal sendes til backend. For å starte kommandoen som vises i dette feltet, klikker du Bare På Skann-knappen. Du kan endre verdien i dette feltet direkte, men den fylles ut automatisk basert på verdiene I Målfeltet og den valgte profilen. Hvis du er ny på nmap, bør du være oppmerksom på dette feltet, da det vil gi deg en bedre forståelse av riktig syntaks og bruk av forskjellige nmap-kommandoer. Den fjerde komponenten er Verts – / Tjenestelisten (Figur 1. D). Når du har utført skanninger, vil informasjonen bli fylt ut i denne listen. Hvis Du har Vertsknappen valgt, vil alle oppdagede verts-IP-adresser bli oppført. Og hvis du har tjenester-knappen valgt, vil alle oppdagede nettverkstjenester bli oppført. Den endelige komponenten (Figur 1. E) er der du kan sortere gjennom all informasjon som er produsert av alle skanninger som du har utført. Nmap-Utdata-fanen vil vise den nøyaktige utgangen som ville bli gitt hvis kommandoen ble skrevet inn fra kommandolinjegrensesnittet. Faneinnholdet Porter / Verter vil variere avhengig av Om Du har Verts-eller Tjenesteknappen valgt for listen. Hvis Verter-knappen er valgt, vil informasjonen under Kategorien Porter/Verter gjenspeile tjenestene som ble identifisert på den aktivt fremhevede IP-adressen i listen. Ellers, hvis Tjenester-knappen er valgt, vil informasjonen under Kategorien Porter/Verter identifisere alle verter som ble funnet å ha den bestemte tjenesten som er uthevet i listen. Topologi-fanen vil gi en grafisk fremstilling av den logiske topologien til nettverket, for å inkludere alle verter som har blitt oppdaget ved skanning. Den vil bruke returnerte ttl (Time-To-Live) verdier for å vise den logiske orienteringen av verter, i forhold til hverandre. Vertsdetaljer-fanen er der du finner mesteparten av informasjonen som har blitt oppdaget om en valgt vert. DENNE informasjonen inkluderer MAC-adresser, IP-adresser, åpne porter, identifiserte tjenester, operativsysteminformasjon og eventuell tilleggsinformasjon som er samlet inn. Til slutt vil kategorien skanninger gi en historie med skanninger som har blitt utført under økten.
øverst på skjermen ser du flere forskjellige rullegardinmenyer som Inkluderer Skanning, Verktøy, Profil og Hjelp. Hjelp-menyen er selvforklarende. Skann-menyen inneholder alternativer for å opprette nye skanninger, lagre skanninger eller åpne tidligere lagrede skanninger. Verktøy-menyen inneholder noen tilleggsfunksjoner som kan brukes til å sortere gjennom og organisere informasjon som samles inn under skanningene dine. Og Profilmenyen inneholder alternativer for å opprette nye skanneprofiler eller redigere eksisterende profiler.
vi vil nå kort diskutere hvordan du oppretter en ny profil og deretter starte en skanning ved hjelp av denne profilen. For å komme i gang, velg Rullegardinmenyen Profil og velg deretter «Ny Profil eller Kommando.»Dette vil åpne opp et profilkonfigurasjonsgrensesnitt som kan ses I Figur 2.
Figur 2. Zenmap Profile Editor
den første kategorien (Profilfane) lar deg opprette et unikt navn og beskrivelse for profilen. Alle de andre kategoriene er der du vil angi forskjellige konfigurasjoner som skal brukes i skanningen. Som du kan se I Kategorien Skann som vises I Figur 2, er det så enkelt å opprette en skanneprofil som å merke av i boksene for alternativer du vil aktivere, skrive inn verdier slik at disse alternativene kan brukes effektivt, eller velge fra forhåndsdefinerte valg i rullegardinmenyen. Hvis du er usikker på funksjonen eller riktig bruk av et alternativ her, kan du sveve over det med musen, og hjelpekolonnen på høyre side av skjermen blir automatisk fylt ut med informasjon om hva det spesifikke alternativet gjør og passende verdier og syntaks for eventuelle forespurte inntastingsfelt. Med hver mindre justering du gjør i skannekonfigurasjonen, justeres kommandofeltet øverst tilsvarende. Denne funksjonen gjør Zenmap et ekstremt effektivt verktøy for å lære å bruke nmap-kommandoer riktig. Når du har konfigurert skannealternativene til din smak, kan du enten velge Skanneknappen øverst til høyre på skjermen for engangsbruk, eller Du kan velge Lagre Endringer nederst til høyre. Lagre Endringer-knappen lagrer profilen med navnet som er oppgitt i de første fanekonfigurasjonene, og kan deretter brukes umiddelbart eller senere ved å velge det ved navn fra Profil-rullegardinmenyen på Hoved Zenmap-grensesnittet. Selv Om Zenmap er veldig kraftig, bør du ikke tillate det å bli en krykke som hindrer deg i å lære kommandolinjefunksjonene til nmap. Selv Om Zenmap kan utføre mange av de samme funksjonene, har Den fortsatt sine begrensninger og er ikke så kraftig som nmap. For å bruke nmap effektivt og til sitt fulle potensial, er det viktig å bli like kjent med kommandolinjegrensesnittet.
Nettverksfunn
det første trinnet i penetrasjonstestprosessen som vi skal diskutere, er nettverksfunn. Før du vurderer sikkerheten til informasjonssystemer på et nettverk, må du først identifisere hva du vurderer. Det finnes en rekke forskjellige måter du kan oppdage verter på et nettverk ved hjelp av nmap. I denne delen vil vi diskutere hvordan du bruker nmap til å utføre vertsfunn på lag 2, 3 og 4 I OSI-modellen, og vi vil også diskutere fordelene og ulempene ved hver. Et eksempel på en kommando for å utføre layer 2 discovery kan ses her:
nmap-PR-sn 192.168.1.0-255
bryteren -PR
angir EN ARP ping. Dette bruker layer 2 ARP (Address Resolution Protocol) pakker for å identifisere live verter innenfor det angitte området. Det gjør dette ved å sende UT EN arp-kringkastingsforespørsel for HVER AV IP-adressene som er identifisert. Hvis det er en live vert på nettverket med EN AV DISSE IP-adressene, vil verten sende ET ARP-svar til skannesystemet med SIN IP-adresse og tilhørende layer 2 MAC-adresse. Nmap vil samle svar fra alle levende verter og deretter vil returnere en liste over verter som ble oppdaget. Bryteren -sn
brukes til å be om at nmap ikke utfører noen portskanning. Dette forhindrer overforing av ytterligere trafikk, utover det som er nodvendig for a utfore layer 2 host discovery sweep. Layer 2 discovery er effektiv fordi den er den raskeste av alle tre alternativene. Det er imidlertid begrenset av det faktum at det bare kan utføres mot verter som er på samme lokale nettverk som systemet som utfører skanningen.
for eksterne verter må du bruke enten layer 3 eller layer 4 discovery. Et eksempel på en kommando som kan brukes til å utføre layer 3 discovery er:
nmap-PE-SN 109.74.11.0-255
denne kommandoen sender EN rekke ICMP-ekkoforespørsler til hver lag 3 IP-adresse i listen. Nmap vil samle ALLE ICMP ekko svar som er mottatt og vil returnere en liste over alle live verter. Denne discovery-skanningen er tregere enn å utføre EN ARP ping, men det vil returnere resultater for verter på eksterne nettverk.
anta Til slutt at du prøver å oppdage eksterne systemer (slik at du ikke kan bruke lag 2) som ligger bak en brannmur som slipper all innkommende ICMP-trafikk (slik at du ikke kan bruke lag 3). For å løse dette problemet må du utføre oppdagelse på transportlaget (lag 4). Det er flere forskjellige måter du kan bruke lag 4-skanninger til å utføre oppdagelse på. En effektiv metode er Å bruke EN UDP ping. Et eksempel på EN UDP ping-kommando er:
nmap-PU53-sn 109.74.11.0-255
denne kommandoen genererer EN rekke DNS-serverstatusforespørsler for HVER AV MÅL-IP-adressene. EN rekke DNS spørring svar vil bli mottatt fra live verter og nmap vil da returnere disse resultatene. FORDI DNS er en vanlig tjeneste på UDP-port 53, er det mulig å identifisere flere live-verter ved hjelp av denne teknikken som kan ha blitt konfigurert til ikke å svare PÅ ICMP-trafikk. Et annet effektivt lag 4 alternativ TIL ICMP ping feier er å bruke EN TCP ACK ping. Et eksempel på dette kan ses nedenfor:
nmap-PA80-sn 109.74.11.0-255
denne kommandoen sender en rekke uønskede ACK-svar til den angitte porten for alle vertene I IP-området. Fordi DISSE ACK-pakkene var ute av sammenheng med en etablert kommunikasjonslinje, vil live-verter svare med EN TCP RST-pakke for a indikere at kommunikasjonen skal avbrytes. Nmap vil samle disse svarene som indikasjon på live verter og vil da returnere en liste over dem.
Portskanning Og Tjenesteopptelling
Nå som vi har oppdaget de aktive IP-adressene på nettverket som vi utfører en penetrasjonstest mot, må vi neste gang identifisere åpne porter på hvert system og tjenestene som kjører på disse portene. Skanning AV tcp-porter på eksterne systemer er den mest grunnleggende funksjonen til nmap. For å utføre EN tcp-skanning av et målsystem, bruk den grunnleggende kommandoen:
nmap 109.74.11.34
som andre nmap-kommandoer, kan dette også brukes til å utføre skanninger mot flere verter ved hjelp av en sekvensiell serie (192.168.1-255) eller CIDR-notasjon (192.168.1.0 / 24). Denne standard nmap-kommandoen utfører en skanning på 1000 vanlige tcp-porter. Du kan også angi en enkelt port som skal skannes ved hjelp av-p-bryteren etterfulgt av portnummeret du vil skanne.
nmap 109.74.11.34-p 21
denne kommandoen ovenfor vil skanne TCP-port 21 på det angitte systemet. Du kan også skanne en rekke porter ved å bruke-p-bryteren og deretter oppgi de ønskede portene, skille dem med kommaer.
nmap 109.74.11.34-p 80,443
denne kommandoen vil skanne porter 80 og 443 på målsystemet. Du kan skanne et sekvensielt portområde ved å bruke bryteren -p
etterfulgt av den første verdien i området, en strek og deretter den siste verdien i området.
nmap 109.74.11.34-p 0-100
kommandoen ovenfor skanner de første 100 portene. Hvis du vil skanne alle 65 536 tcp-porter på et mål, bruker du følgende kommando:
nmap 109.74.11.34-p 0-65535
DU kan bruke EN TCP ACK-skanning til å identifisere porter som er filtrert. For å gjøre dette, bruk-sA-bryteren. Du kan deretter angi en port eller en rekke porter. Ingen portspesifikasjon vil skanne standard 1000 porter. Dette vil da returnere en liste over filtrerte porter. Et eksempel på denne kommandoen kan sees nedenfor:
nmap 109.74.11.34-sa
Penetrasjonstestere og sikkerhetspersonell vil noen ganger bare skanne etter åpne tcp-porter på målsystemer. Med UTSIKT OVER UDP-tjenester kan det føre til at man helt overser skarpe sårbarheter som lett kan føre til kompromiss. Hvis DU vil skanne ETTER UDP-tjenester på et målsystem, bruker du følgende kommando:
nmap 109.74.11.34-sU
FORDI UDP-tjenester ikke er tilkoblingsorientert på samme måte SOM TCP-tjenester, vil dette ta lengre TID enn en vanlig tcp-skanning. Tiden som kreves for å fullføre UDP-skanninger, kan reduseres ved å skanne etter bestemte porter. Du kan angi porter på samme måte som du hadde MED tcp-skanninger.
nmap 109.74.11.34-sU-p 69
kommandoen ovenfor utfører en skanning AV UDP-port 69, en vanlig port FOR Tftp (Trivial File Transport Protocol). Det er også mulig å identifisere versjon og versjonsnummer for hver enkelt tjeneste. For å gjøre dette, bruk-sV-bryteren.
nmap 109.74.11.34-sV
denne kommandoen vil bruke en kombinasjon av bannergrep og sonde-responsanalyse for å forsøke å identifisere tjenesten og versjonsnummeret til den tjenesten for hver skannede port. Ved hjelp av lignende teknikker, er det også mulig å ha nmap forsøk på å bestemme operativsystemet som kjører på målet. For å gjøre dette, bruk bryteren -O
.
nmap 109.74.11.34 – O
når den er fullført, vil den enten returnere en positiv identifikasjon av operativsystemet, eller det vil gi en best gjetning og deretter en liste over andre mulige operativsystemer.
Avanserte Skanneteknikker
det er et vanlig problem som du ofte vil støte på når du utfører en penetrasjonstest mot mellomstore til store bedriftsnettverk. De fleste bedrifter og organisasjoner i disse dager har blitt mer sikkerhetsinnstilte og vil sannsynligvis ha brannmurer eller inntrengingsdeteksjonssystemer som står mellom deg og systemene du prøver å skanne. For å skanne slike systemer må vi bruke noen mer avanserte skanneteknikker. En måte å potensielt omgå brannmurer og / eller inntrengingsdeteksjonssystemer er å bruke noen tradisjonelle stealth scanning teknikker som er integrert i nmap. En metode som kan benyttes er å bruke en langsommere timing mal. Timing maler spenner fra -T0
(paranoid scan) helt opp til -T5
(Insane scan). Jo lavere verdien av timingmalen, desto langsommere blir skanningen utført. Langsommere skanninger er mindre sannsynlig å bli flagget av inntrengingsdeteksjonssystemer. Et eksempel på en paranoid skanning ville være:
nmap 109.74.11.0-255-T0
En annen teknikk som kan brukes til å maskere skanningen, er å oversvømme nettverket med ekstra lokketrafikk ved hjelp av bryteren -D
. Denne funksjonen lar deg angi flere adresser for å forfalske trafikk fra, eller du kan bruke RND-alternativet til å forfalske trafikk fra tilfeldige adresser.
nmap 109.74.11.0-255-D RND:5
i tillegg til å utføre den tradisjonelle tcp-portskanningen av målsystemene, vil kommandoen ovenfor også forfalske trafikk fra 5 tilfeldige adresser for å forvirre den faktiske skannetrafikken. En annen teknikk som kan brukes er å variere pakkelengden på dine overførte forespørsler. Noen inntrengingsdeteksjonssystemer og brannmurer vil slippe pakker basert på signaturpakkelengder. Hvis du vil forhindre dette, kan du angi datalengden ved hjelp av bryteren --data-length
etterfulgt av pakkestørrelsen i antall byte.
nmap 109.74.11.0-255 — data-length 15
denne kommandoen sender all skanningstrafikk i pakker som er 15 byte lange. Selv om dette kan være nyttig for å unngå noen signaturbaserte inntrengingsdeteksjonssystemer, kan konsekvent sending av pakker med en uvanlig spesifisert pakkelengde flagge et anomalibasert inntrengingsdeteksjonssystem. Nettverksinntrengningssystemer vil også flagge trafikk hvis du begynner å koble til systemer i rekkefølge innenfor et angitt nettverksområde. For å unngå å utføre skanningene i rekkefølge, kan du bruke bryteren --randomize-hosts
.
nmap 109.74.11.0-255 — randomize-hosts
denne kommandoen ovenfor vil tilfeldig skanne hver vert i området i stedet for å utføre dem i rekkefølge(109.74.11.0, deretter 109.74.11.1, deretter 109.74.11.2, etc…). Selv om DU ikke kan forfalske IP-adressen din (fordi du ikke vil motta svarene som er nødvendige for å bestemme åpne porter), kan DU forfalske MAC-adressen din. Hvis du vil gjøre dette, kan du bruke — spoof-mac-bryteren, etterfulgt av en leverandør-ID, en BESTEMT MAC-adresse eller 0.
nmap 109.74.11.0-255 –spoof-mac 0
bruke 0 som argument vil bruke en tilfeldig MAC-adresse til skannetrafikken. En siste teknikk som er verdt å nevne, bruker-f-bryteren til fragmentpakker.
nmap 109.74.11.0-255-f
fragmenteringspakker vil skille data nyttelaster av skanningstrafikken i flere pakker, slik at den lettere kan omgå innholdsinspeksjonsinntrengningssystemer eller brannmurer. Selv om alle disse teknikkene kan være effektive for å skanne offentlig tilgjengelige servere bak en brannmur, er de vanligvis ikke tilstrekkelige for å skanne verter på et internt nettverk. Mens visse offentlig tilgjengelige servere vil være tilgjengelige for skanning, vil mye av den interne infrastrukturen være dypere i nettverket og ikke så lett tilgjengelig. Vurder diagrammet i Figur 3. Dette er et enkelt eksempel på en felles konfigurasjon i bedriftsnettverk.
Figur 3. Felles Nettverkskonfigurasjon
problemet vi møter her er at det interne nettverket ligger bak en intern brannmur, som har strengere regler om inntrengningstrafikk, sammenlignet med den eksterne brannmuren. Denne interne brannmuren blokkerer sannsynligvis innkommende trafikk fra eksterne adresser på nettet; det er imidlertid mulig at systemene i DMZ kan kommunisere med de interne systemene. For å kunne skanne disse interne systemene må vi få systemene i DMZ til å fungere på våre vegne. Vi vil diskutere flere forskjellige måter å gjøre dette på, for å inkludere proxy skanning, zombie skanning og FTP bounce skanning.
Sannsynligvis er den enkleste måten å skanne de interne systemene ved å bruke en proxy-kjede. La oss anta at vi har fått tilgang til en proxy-tjeneste i DMZ ved å finne en åpen proxy-tjeneste, brute tvinge en proxy-tjeneste med hydra eller ved å installere en proxy-tjeneste på en allerede kompromittert maskin. Når du har konfigurert systemet til å rute trafikk gjennom denne proxyen, kan du utføre nmap-skanninger ved hjelp av en fullstendig tilkoblingsskanning (-sT
).
nmap 10.1.1.0-255-sT
hvis det ikke er noen proxy-tjeneste tilgjengelig, er det noen smarte måter du kan utnytte maskiner i DMZ for å få skanningsresultater på interne systemer. En måte å gjøre dette på er å bruke zombie skanning, også referert til som tomgang skanning. For å utføre en zombie-skanning mot systemene på det interne LAN, må vi finne en levedyktig zombie-vert i DMZ. En zombie host er et relativt tomt system som bruker inkrementell IPID-sekvensering. For å finne en zombie-vert, kan vi bruke et nmap-skript for å skanne DMZ for et system som passer til denne beskrivelsen.
nmap — script ipidseq 109.74.11.0-255
dette skriptet sender en serie pakker til hver vert og sporer IPID-tallene for alle mottatte svar. Det vil da analysere DISSE IPID-tallene for å klassifisere hvert system som enten tilfeldig sekvens, alle nuller eller inkrementell. Se Figur 4 for et eksempel på utgangen for et inkrementelt system.
Figur 4. Zombie host ligger MED IPID Sekvens Script
Når vi har fått EN IP-adresse for vår zombie system, er vi klare til å forsøke vår zombie scan. Før adressering hvordan du utfører skanningen, jeg vil kort diskutere hvordan skanningen fungerer. Se Figur 5 for et diagram over hva som skjer når en zombie skanning utføres mot en åpen port.
Figur 5. Zombie scan mot åpen port
først bestemmer vår nmap-skanner den nåværende IPID-verdien av zombie-systemet ved å sende en uønsket SYN / ACK-pakke. FORDI INGEN SYN-pakke opprinnelig ble sendt av zombie-systemet for å etablere en tilkobling, svarer zombien på skanneren vår med EN FØRSTE pakke. Vårt skannesystem vil da bruke IPID TIL DEN FØRSTE pakken som referansepunkt. Deretter vil vårt skannesystem umiddelbart følge opp dette med en falsk SYN-pakke sendt til målsystemet ved hjelp AV en kilde-IP-adresse til zombie-systemet. Fordi kilde-IP-adressen er en I DMZ, er denne tilkoblingsforespørselen mer sannsynlig å kunne passere gjennom brannmuren. Hvis målet mottar pakken og målporten er åpen, vil målet da returnere EN SYN / ACK-pakke til zombie-systemet (som det tror sendte den opprinnelige SYN-pakken). FORDI DENNE SYN / ACK-pakken mottas ut av kontekst, vil zombie-systemet da svare på målsystemet med EN FØRSTE pakke, og dermed øke SIN IPID-verdi med en. Til slutt vil vår skanner sende en siste SYN/ACK-pakke til zombie-systemet. Den påfølgende FØRSTE svar fra zombie vil øke IPID en gang til. Så hvis den målrettede porten på det eksterne systemet er åpen, vil den endelige IPID-verdien som returneres, være to tall høyere enn den opprinnelige verdien. Alternativt illustrerer Figur 6 hva som skjer når porten til målsystemet er stengt.
Figur 6. Zombie scan mot lukket port
hvis porten på målsystemet er lukket, mottar zombie-systemet ingen uønsket respons fra målet og er derfor ikke oppmuntret til å sende EN FØRSTE pakke til målet. Så HVIS IPID-verdien av det endelige FØRSTE svaret bare har økt med en, kan vi utlede at porten er stengt fordi INGEN SYN / ACK-svar ble sendt til zombie-systemet for å starte ET FØRSTE svar. Ellers, hvis den endelige IPID-verdien har økt med to fra den opprinnelige verdien, kan vi utlede at porten på målsystemet må åpnes fordi det må ha svart på zombien som startet svaret som økte IPID-verdien til zombiesystemet.
selv om dette kan høres ekstremt komplisert Ut; ikke bli skremt av beskrivelsen, som nmap gjør nesten alt arbeidet for deg. For å faktisk utføre en zombie-skanning, må du bare skrive inn en enkel kommando.
nmap-sI 192.168.199.132-Pn 192.168.199.130
-sI
bryteren forteller nmap å utføre en zombie scan ved hjelp av FØLGENDE IP-adresse som zombie host (192.168.199.132). Bryteren -Pn
forhindrer nmap i å utføre EN innledende ICMP-ping på målsystemet før du prøver skanningen. Så identifiserer den endelige IP-adressen i kommandoen målsystemet. Utgangen for denne kommandoen kan ses I Figur 7.
Figur 7. Zombie scan mot lukket port
det skal bemerkes AT IP-området som jeg brukte til å demonstrere denne zombie-skanningen, er et privat område på mitt interne nettverk. For at dette skal fungere effektivt mot et eksternt nettverk, som beskrevet i det opprinnelige scenariet, må systemene i BÅDE DMZ og det interne nettverket være på offentlig rutbare IP-områder. Hvis det interne nettverket er konfigurert på et privat område bak en Nat-server (Network Address Translation), kan ikke nmap-skanneren sende DEN falske SYN-pakken til den interne adressen fra den eksterne plasseringen.
En annen måte å bruke systemer i DMZ for å forsøke å skanne verter på det interne nettverket, er Å bruke FTP bounce. Noen eldre FTP-servere støtter muligheten til å overføre filer til et tredjepartssystem. Hvis DU har oppdaget EN FTP-server I DMZ som tillater anonym pålogging eller at du har brute tvunget med hydra, kan du teste FTP-serveren for å finne ut om den støtter FTP bounce. For å gjøre dette, bruk ftp-bounce-skriptet.
nmap — script ftp-sprett –script-args
ftp-sprett.username=anonym,
denne kommandoen bruker nmap-skriptet med argumenter for brukernavn og passord mot FTP-serveren. Når fullført, denne skanningen vil indikere OM FTP bounce er mulig eller ikke. Hvis skriptet angir AT FTP-sprett fungerer, kan DU bruke FTP-serveren til å utføre en portskanning mot andre systemer på nettverket. Figur 8 viser hvordan dette fungerer.
Figur 8. FTP bounce scan
skanneren vil forsøke å sende binære data, via FTP bounce-funksjonen, til målsystemet ved en angitt port. HVIS dataene overføres, VIL FTP-serveren rapportere dette tilbake til skanneren, noe som indikerer at porten på målsystemet er åpen. For Å utføre EN FTP-sprettskanning, bruk bryteren -b
.
nmap-b ftpuser:: 21 10.1.1.128-255
i denne kommandoen brukes funksjonen -b
til å utføre en ftp-sprettskanning ved hjelp av brukernavnet «ftpuser» og passordet PassW0rd
, mot FTP-serveren på 192.168.11.201 som er vert FOR TCP-port 21. Handlingene beskrevet i diagrammet ovenfor vil da bli utført mot hver av de vanlige 1000s-portene på hver av målvertene fra 10.1.1.128 til 10.1.1.255.
Sårbarhetskartlegging og Utnyttelse MED NSE
Når du har oppdaget live-verter på målnettverket og har klart å nummerere åpne porter og / eller kjører tjenester på disse vertene, kan du begynne å teste og utnytte sårbarheter. Med den nylig integrerte Nse (Nmap Scripting Engine), er det en rekke forhåndslastede skript som følger med standard nmap installasjon. Disse skriptene har et bredt spekter av forskjellige funksjoner fra grunnleggende informasjonsinnsamling (som de to som vi allerede har diskutert), sårbarhetskartlegging, brute forcing, denial of service og til og med ekstern utnyttelse. Alle disse skriptene er plassert i nmap installasjonsmappen. I Kali-Linux kan de bli funnet på /usr/share/nmap/scripts/
. For å bla til disse skriptene og begynne å jobbe med dem, bruk følgende kommandoer:
cd / usr / share / nmap / scripts /
ls
kommandoen cd
vil endre katalogen til plasseringen AV nse-skriptene, og kommandoen ls
vil vise innholdet i katalogen. Du kan deretter vise noen av skriptene ved hjelp av kommandoen cat
, etterfulgt av navnet på skriptet du vil vise. For formålet med denne demonstrasjonen vil vi bruke ftp-vuln-cve2010-4221.nse
. For å vise innholdet i dette skriptet, bruk følgende kommando:
cat ftp-vuln-cve2010-4221.nse
Figur 9. Nse script contents
Figur 9 viser innholdet i dette skriptet. Hvis du blar til toppen av skriptinnholdet, vil du se flere biter av nyttig informasjon for å inkludere en beskrivelse av skriptet, en liste over flere ressurser for referanse, og riktig bruk og syntaks av skriptet. Men sortering gjennom disse skriptene i katalogen og finne et skript som utfører en bestemt funksjon kan være veldig kjedelig. Etter min mening er Det Her Zenmap (det grafiske grensesnittet som vi tidligere hadde diskutert) virkelig skinner gjennom. For å demonstrere hvor nyttig Zenmap-grensesnittet kan være når du arbeider med nse-skript, åpne det igjen fra kommandolinjen med kommandoen:
zenmap
velg Deretter rullegardinmenyen profil og klikk «Ny Profil eller Kommando.»Når Profileditoren åpnes, velger Du Skriptfanen øverst på skjermen. Figur 10 viser et bilde Av Zenmap-Skriptgrensesnittet.
Figur 10. Zenmap Scripting Interface
en liste over alle tilgjengelige nmap-skript er plassert på venstre side av skjermen. Du kan velge noen av disse for å få den inkludert i nmap-kommandoen. Noen skript vil kreve argumenter for å kunne kjøre riktig. Post autentiseringsskript vil ofte kreve et brukernavn og passord for bestemte nettverkstjenester. I eksemplet I Figur 10 kan argumenter leveres for å konfigurere brute force-angrepet som skal utføres mot MySQL-tjenesten. Du kan også enkelt passere skriptargumentene ved å skrive inn verdiene i Argumentvinduet. Disse argumentene fylles automatisk ut i den genererte nmap-kommandoen. Vinduet i øverste senter gir en beskrivelse av det valgte skriptet, riktig bruk og syntaks, og til og med kategorier for å beskrive skriptets funksjoner. Disse kategoriene kan være spesielt nyttige hvis du prøver å utføre en bestemt type oppgave, for eksempel sårbarhetsanalyse. Etter å ha startet ET nse-skript med en nmap-kommando, vil du se resultatene i standard nmap-utgang. Når det gjelder brute force-skript, vil utgangen vise om brute force-angrepet var vellykket, og i så fall vil det vise det oppdagede brukernavnet og passordet. I tilfelle av sårbarhetsskript vil utdataene indikere om sårbarheten er tilstede på målsystemet(e). Og når det gjelder utnyttelsesskript, vil utgangen gi informasjon om nyttelasten som senere ble levert til målsystemet.
Skripting Med Nmap
i tillegg til sin egen integrerte skriptmotor støtter nmap også flere utdataalternativer som gjør det enkelt å bruke tradisjonelle skriptspråk for å utføre utdataanalyse. To utdataformater som kan være nyttige for skripting inkluderer greppable output (-oG
) OG XML output (-oX
). XML kan være effektiv for høyere nivå skriptspråk som har moduler som kan importeres FOR XML parsing og greppable utgang kan brukes sammen med bash shell scripting å effektivisere analyse av nmap resultater. For å demonstrere hvordan denne utdatafunksjonen kan brukes sammen med skripting, vil vi gjennomgå et enkelt 4-linjers bash shell-skript, vist I Figur 11 for å analysere resultatene av en nmap-skanning.
Figur 11. Nmap Result Analysis Bash Script
Vurder et scenario der en nmap-skanning allerede ble utført mot et veldig stort nettverk, og utdataene fra skanningen ble lagret i greppable format til en networkscan.txt-fil. Og anta at vi vil bruke hydra til å utføre et brute force-angrep mot alle FTP-tjenester på nettverket, men vi vil ikke kaste bort tiden som kreves for å skanne port 21 på hele nettverket igjen. Dette enkle skriptet vil trekke ut alle systemer som har en spesifisert port åpen. Den første linjen ber brukeren om et portnummer. Den andre linjen tilordner deretter verdien av brukerinngangen til portvariabelen. Den tredje linjen indikerer for brukeren at alle systemer med den åpne porten vil bli oppført. Og til slutt, den siste kommandoen er hvor vi grep ut resultatene fra nmap greppable output. Skriptet bruker grep-kommandoen til å trekke ut alle linjer fra utdatafilen som refererer til den angitte porten. Dette vil inkludere linjer som nummererer hver forekomst av hvor porten er åpen, lukket eller filtrert. Deretter rør det som sendes ut til en annen grep-funksjon som bare trekker ut forekomster der den angitte porten er åpen. Denne utgangen sendes deretter til cut-funksjonen, som angir et mellomrom som skilletegn og deretter sender ut det andre feltet. Ved å gjøre dette, sender skriptet ut IP-adressen for hvert system som har den angitte porten åpen. Figur 12 viser resultatet av skriptet.
Figur 12. Nmap Resultatanalyse Script Output
selv om dette er et veldig enkelt skript, viser det hvor enkelt det kan være å trekke ut informasjon fra det greppable utdataformatet. Når ervervet, kan denne innsamlede informasjonen lett brukes til videre skripting. Det kan brukes som utgangspunkt for å utføre en annen etterfølgende oppgave mot hvert system som ble identifisert for å ha en bestemt port åpen.
Et Alt-I-Ett Penetrasjonstestverktøy
ved å kombinere sine forskjellige evner, kan man enkelt utføre en komplett penetrasjonstest ved å bruke nmap alene. Det er ikke nektet at nmap, med sin imponerende liste over funksjoner og evner, er et virkelig kraftig verktøy. Og som årene fremgang, det vil trolig bli enda kraftigere som flere mennesker fortsetter å bidra til dette prosjektet. Som et barn med sin fars pistol kan nmap være et farlig verktøy i feil hender. Men hvis det brukes riktig, kan det være en uvurderlig ressurs for å sikre sikkerheten til nettverksinfrastrukturen. Så husk alltid å bruke det klokt og å bruke det godt.
Om Forfatteren
Justin Hutchens gjør for tiden nettverkssårbarhetsanalyse, inntrengingsdeteksjon og digital rettsmedisin for et stort bedriftsnettverk med over 33.000 nettverkssystemer. Han har fylt mange forskjellige roller Innen Informasjonsteknologi feltet for å inkludere nettverksdesign, systemutvikling, databaseadministrasjon og nettverkssikkerhet. Han underviser også for tiden kurs på penetrasjonstesting med Backtrack og Kali-Linux operativsystemer. Han har For tiden En Bachelorgrad I Informasjonsteknologi og flere profesjonelle sertifiseringer for å inkludere CISSP (Certified Information System Security Professional), CEH (Certified Ethical Hacker), ECSA (EC-Council Certified Security Analyst) og CHFI (Computer Hacking Forensic Investigator).