Nmap: ett ”hackerverktyg” för säkerhetspersonal

Nmap: ett” hackerverktyg ”för säkerhetspersonal

av Justin Hutchens

security-326154_640

begreppet ”etisk hacker” har alltid varit ironiskt. De utvecklande trenderna för etisk hacking och offensiv säkerhet har förvandlat informationssäkerhetsbranschen till en av de mest självförstärkande industrierna i världen.

programvaran och verktygen som används för att säkra sårbara informationstillgångar är samma verktyg som kan användas för att utnyttja dem. Kanske är det tvärtom. Kanske de verktyg som skapades för det enda syftet att utnyttja informationstillgångar används nu för att skydda dem. Jag antar att det här är en debatt som kan fortsätta för evigt och är egentligen bara en annan instans av ”vad kom först…kycklingen eller ägget?”

syftet med denna uppsats är inte att diskutera den filosofiska frågan om avsikt. Mina avsikter är mer blygsamma. Jag försöker bara motivera vikten av ett verktyg som konsekvent har märkts som skadlig hackningsprogramvara. Verktyget som jag hänvisar till Är Network Mapper, eller nmap för kort. Oavsett om du är en galen skurkagent som är böjd på att uppmana global revolution eller en nätverkssäkerhetspersonal (förhoppningsvis den senare, snarare än den förra), bör nmap ha en permanent plats i din verktygslåda. Kanske, istället för att kasta kritik mot ett extremt funktionellt nätverksverktyg, borde vi hålla individer ansvariga för sina handlingar och reflektera över den välkända Benjamin Parker-försiktigheten…”med stor kraft kommer stort ansvar.”Trots vissa påståenden om motsatsen är nmap inte skadlig programvara. Och jag tror att den enda anledningen till att den ofta är märkt som sådan är på grund av dess mycket imponerande lista över funktioner. Trots sin potential att göra skada kan nmap säkert spela en viktig roll för att säkra en nätverksinfrastruktur inom en professionell miljö.

Nmap har stadigt utvecklats under åren från ett enkelt skanningsverktyg till en fullblåst penetrationstestplattform. Den kan användas i varje steg i säkerhetsrevisionsprocessen, för att inkludera nätverksupptäckt, portskanning, serviceuppräkning, sårbarhetskartläggning och till och med exploatering. Under hela denna artikel, Jag kommer att diskutera funktionerna i nmap som de avser varje steg i penetrationstestprocessen.

Installation och förberedelse

det är uppenbart att innan du använder nmap är det viktigt att ha en funktionell version installerad på det system du använder. Som standard är nmap redan installerat på de flesta penetrationstester och nätverkssäkerhetsoperativsystem som Kali-Linux, Backtrack, DEFT, Node-Zero, Security Onion och NST. Det kan dock också laddas till nästan vilken plattform du väljer. Nmap kan enkelt installeras på alla vanliga operativsystem för att inkludera Windows, Linux och OSX. Det finns också dokumentation tillgänglig för att installera den på mer obskyra plattformar för att inkludera BSD, Solaris, AIX och AmigaOS. Installationspaket och instruktioner om hur du utför installationen på något av dessa system finns på http://nmap.org/book/install.html.

Zenmap-grafiskt gränssnitt

förutom det traditionella kommandoradsgränssnittet för nmap finns det också ett grafiskt front-end-gränssnitt som heter Zenmap. Zenmap är också integrerat i många av de olika penetrationstestplattformarna som tidigare diskuterats. Det är dock inte installerat som standard i Kali-Linux (plattformen som jag kommer att använda för denna handledning). Lyckligtvis finns det i installationsförvaret och kan enkelt installeras med ett enda kommando:

apt-get install zenmap

Zenmaps pek-och-klicka-gränssnitt effektiviserar inte bara effektivt vad som annars skulle kräva komplicerade kommandon, men det kan också vara ett extremt användbart verktyg för att lära sig hur man använder nmap. Den använder ’profiler’ för att spara vanliga skanningskonfigurationer för senare modifiering och/eller användning. Ta en titt på bilden av Zenmap-gränssnittet som finns i Figur 1 och vi kommer kort att ta itu med var och en av komponenterna.

f1

Figur 1. Zenmap grafiskt gränssnitt

den första komponenten är målfältet (Figur 1. En). Det här fältet är där du kan ange de fjärrsystem som du vill köra en skanning mot. 192.168.1.1), du kan ange ett sekventiellt intervall av IP-adresser (t.ex. 192.168.1.0-255) eller så kan du använda CIDR notation för att ange ett önskat undernät (t.ex. 192.168.1.0/24). Den andra komponenten är profilfältet (Figur 1. H). Du kan klicka på rullgardinspilen till höger om det här fältet för att se flera förkonfigurerade profiler för skanning. Med profiler kan du spara vanliga skanningskonfigurationer för framtida användning. Du kan också skapa egna profiler och de kommer då att visas i den här listan (Vi diskuterar hur du gör det senare i den här artikeln). Den tredje komponenten är kommandofältet (Figur 1. C). Det här fältet anger kommandot som ska skickas till backend. För att starta kommandot som visas i det här fältet klickar du helt enkelt på knappen Skanna. Du kan ändra värdet i det här fältet direkt; det fylls dock automatiskt i baserat på värdena för målfältet och den valda profilen. Om du är ny på nmap bör du ägna stor uppmärksamhet åt detta fält, eftersom det ger dig en bättre förståelse för lämplig syntax och användning av olika Nmap-kommandon. Den fjärde komponenten är värd – / Tjänstelistan (Figur 1. G). När du har utfört skanningar kommer informationen att fyllas i i den här listan. Om du har valt Hosts-knappen kommer alla upptäckta värd-IP-adresser att listas. Och om du har valt knappen tjänster kommer alla upptäckta nätverkstjänster att listas. Den slutliga komponenten (Figur 1. E) är där du kan sortera igenom all information som har producerats av alla skanningar som du har utfört. Fliken Nmap Output visar den exakta utdata som skulle tillhandahållas om kommandot hade matats in från kommandoradsgränssnittet. Fliken Portar / värdar varierar beroende på om du har knappen värdar eller tjänster vald för din lista. Om knappen värdar väljs kommer informationen under fliken Portar/värdar att återspegla de tjänster som identifierades på den aktivt markerade IP-adressen i listan. Annars, om knappen Tjänster väljs, kommer informationen under fliken Portar/värdar att identifiera alla värdar som befanns ha den specifika tjänsten som är markerad i listan. Fliken topologi ger en grafisk representation av nätverkets logiska topologi, för att inkludera alla värdar som har upptäckts genom skanning. Det kommer att använda returnerade TTL-värden (Time-To-Live) för att visa den logiska orienteringen av värdar, i förhållande till varandra. Fliken värdinformation är där du hittar huvuddelen av informationen som har upptäckts om en vald värd. Denna information inkluderar MAC-adresser, IP-adresser, öppna portar, identifierade tjänster, operativsysteminformation och eventuell ytterligare information som har samlats in. Slutligen kommer fliken skanningar att ge en historik över skanningar som har utförts under sessionen.

överst på skärmen ser du flera olika rullgardinsmenyer för att inkludera skanning, verktyg, profil och hjälp. Hjälpmenyn är självförklarande. Menyn skanna innehåller alternativ för att skapa nya skanningar, Spara skanningar eller öppna tidigare sparade skanningar. Menyn Verktyg innehåller några ytterligare funktioner som kan användas för att sortera igenom och organisera information som samlats in under dina skanningar. Och profilmenyn ger alternativ för att skapa nya skanningsprofiler eller redigera befintliga profiler.

vi kommer nu kort att diskutera hur man skapar en ny profil och sedan starta en skanning med den profilen. För att komma igång, välj rullgardinsmenyn profil och välj sedan ”Ny profil eller Kommando.”Detta öppnar ett profilkonfigurationsgränssnitt som kan ses i Figur 2.

f2

Figur 2. Zenmap Profile Editor

den första fliken (Profilfliken) låter dig skapa ett unikt namn och beskrivning för profilen. Alla andra flikar är där du anger olika konfigurationer som ska användas i din skanning. Som du kan se på fliken Skanna som visas i Figur 2 är det så enkelt att skapa en skanningsprofil som att markera rutorna för alternativ som du vill aktivera, ange värden så att dessa alternativ kan användas effektivt eller välja från fördefinierade val i rullgardinsmenyn. Om du är osäker på funktionen eller lämplig användning av något alternativ här kan du sväva över det med musen och hjälpkolumnen till höger på skärmen fylls automatiskt med information om vad det specifika alternativet gör och lämpliga värden och syntax för alla begärda inmatningsfält. Med varje mindre justering som du gör i skanningskonfigurationen justeras kommandofältet högst upp i enlighet därmed. Denna funktion gör Zenmap till ett extremt effektivt verktyg för att lära sig att använda Nmap-kommandon korrekt. När du har konfigurerat skanningsalternativen efter eget tycke kan du antingen välja skanningsknappen längst upp till höger på skärmen för engångsbruk, eller så kan du välja Spara ändringar längst ner till höger. Knappen Spara ändringar sparar profilen med namnet på den första fliken konfigurationer och kan sedan användas omedelbart eller vid ett senare tillfälle genom att välja det med namn Från profil rullgardinsmenyn på Huvud Zenmap-gränssnittet. Även om Zenmap är mycket kraftfullt bör du inte låta det bli en krycka som hindrar dig från att lära dig kommandoradsfunktionerna i nmap. Även om Zenmap kan utföra många av samma funktioner har den fortfarande sina begränsningar och är inte lika kraftfull som nmap. För att använda nmap effektivt och till sin fulla potential är det viktigt att bli lika bekant med kommandoradsgränssnittet.

Network Discovery

det första steget i penetrationstestprocessen som vi kommer att diskutera är network discovery. Innan du utvärderar säkerheten för informationssystem i ett nätverk måste du först identifiera vad du utvärderar. Det finns ett antal olika sätt som du kan upptäcka värdar i ett nätverk med hjälp av nmap. I det här avsnittet kommer vi att diskutera hur man använder nmap för att utföra värdupptäckt i lager 2, 3 och 4 i OSI-modellen och vi kommer också att diskutera fördelarna och nackdelarna med var och en. Ett exempel på ett kommando för att utföra layer 2-upptäckt kan ses här:

Nmap-PR-sn 192.168.1.0-255

-PR – omkopplaren anger en ARP-ping. Detta använder Layer 2 Arp-paket (Address Resolution Protocol) för att identifiera live-värdar inom det angivna intervallet. Det gör detta genom att skicka ut en ARP-sändningsförfrågan för var och en av de identifierade IP-adresserna. Om det finns en levande värd i nätverket med en av dessa IP-adresser, skickar den värden ett ARP-svar till skanningssystemet med sin IP-adress och motsvarande layer 2 MAC-adress. Nmap samlar in svar från alla live-värdar och returnerar sedan en lista över värdar som upptäcktes. Omkopplaren -sn används för att begära att nmap inte utför någon portskanning. Detta förhindrar överföring av ytterligare trafik, utöver vad som är nödvändigt för att utföra layer 2 host discovery sweep. Layer 2 discovery är effektiv eftersom den är den snabbaste av alla tre alternativen. Det är dock begränsat av det faktum att det bara kan utföras mot värdar som finns i samma lokala nätverk som det system som utför skanningen.

för fjärrvärdar måste du använda antingen layer 3 eller layer 4 discovery. Ett exempel på ett kommando som kan användas för att utföra layer 3-upptäckt är:

nmap-PE-sn 109.74.11.0-255

detta kommando skickar en serie ICMP-eko-förfrågningar till varje layer 3 IP-adress i listan. Nmap samlar alla ICMP echo svar som tas emot och kommer att returnera en lista över alla levande värdar. Denna upptäckt scan är långsammare än att utföra en ARP ping, men det kommer att returnera resultat för värdar på fjärrnätverk.

Antag slutligen att du försöker upptäcka fjärrsystem (så att du inte kan använda lager 2) som ligger bakom en brandvägg som släpper all inkommande ICMP-trafik (så att du inte kan använda lager 3). För att lösa detta problem måste du utföra upptäckt vid transportlagret (lager 4). Det finns flera olika sätt att använda layer 4-skanningar för att utföra upptäckt. En effektiv metod är att använda en UDP-ping. Ett exempel på ett UDP-ping-kommando är:

nmap-PU53-sn 109.74.11.0-255

detta kommando genererar en serie DNS-serverstatusförfrågningar för var och en av mål-IP-adresserna. En serie DNS-frågesvar kommer att tas emot från Live-värdar och nmap returnerar sedan dessa resultat. Eftersom DNS är en vanlig tjänst på UDP-port 53 är det möjligt att identifiera ytterligare live-värdar med hjälp av denna teknik som kan ha konfigurerats för att inte svara på ICMP-trafik. Ett annat effektivt layer 4-alternativ till ICMP ping sweeps är att använda en TCP ACK-ping. Ett exempel på detta kan ses nedan:

nmap-PA80-sn 109.74.11.0-255

detta kommando skickar en serie oönskade ACK-svar till den angivna porten för alla värdar i IP-intervallet. Eftersom dessa ACK-paket inte var i samband med någon etablerad kommunikationslinje, kommer live-värdar att svara med ett TCP RST-paket för att indikera att kommunikationen ska avbrytas. Nmap samlar in dessa svar som indikation på levande värdar och returnerar sedan en lista över dem.

Port Scanning och service Enumeration

nu när vi har upptäckt de aktiva IP-adresserna i nätverket som vi utför ett penetrationstest mot, måste vi nästa identifiera öppna portar på varje system och de tjänster som körs på dessa portar. Skanning av TCP-portar på fjärrsystem är den mest grundläggande funktionen för nmap. För att utföra en TCP-skanning av ett målsystem, använd grundkommandot:

nmap 109.74.11.34

liksom andra Nmap-kommandon kan detta också användas för att utföra skanningar mot flera värdar med hjälp av en sekventiell serie (192.168.1-255) eller CIDR notation (192.168.1.0/24). Detta standard Nmap-kommando utför en skanning på 1000 vanliga TCP-portar. Alternativt kan du ange en enda port som ska skannas med hjälp av-p-omkopplaren följt av portnumret som du vill skanna.

nmap 109.74.11.34-p 21

ovanstående kommando skannar TCP-port 21 på det angivna systemet. Du kan också skanna en serie portar genom att använda-p-omkopplaren och sedan lista de önskade portarna och separera dem med kommatecken.

nmap 109.74.11.34-p 80,443

detta kommando skannar portarna 80 och 443 på målsystemet. Du kan skanna ett sekventiellt intervall med portar genom att använda -p – omkopplaren följt av det första värdet i intervallet, ett streck och sedan det sista värdet i intervallet.

Nmap 109.74.11.34-p 0-100

ovanstående kommando skannar de första 100 portarna. Om du vill skanna alla 65 536 TCP-portar på ett mål använder du följande kommando:

nmap 109.74.11.34-p 0-65535

du kan använda en TCP ACK-skanning för att identifiera portar som filtreras. För att göra detta, använd-sA-omkopplaren. Du kan sedan ange en port eller en serie portar. Ingen portspecifikation kommer att skanna de vanliga 1,000-portarna. Detta returnerar sedan en lista med filtrerade portar. Ett exempel på detta kommando kan ses nedan:

nmap 109.74.11.34-sA

penetrationstestare och säkerhetspersonal söker ibland bara efter öppna TCP-portar på målsystem. Med utsikt över UDP-tjänster kan man helt förbise skarpa sårbarheter som lätt kan leda till kompromisser. För att söka efter UDP-tjänster på ett målsystem, använd följande kommando:

nmap 109.74.11.34-sU

eftersom UDP-tjänster inte är anslutningsorienterade på samma sätt som TCP-tjänster tar det längre tid än en vanlig TCP-skanning. Den tid som krävs för att slutföra UDP-skanningar kan minskas genom att skanna efter specifika portar. Du kan ange portar på samma sätt som du hade med TCP-skanningar.

nmap 109.74.11.34-sU-p 69

ovanstående kommando utför en genomsökning av UDP-port 69, en vanlig port för TFTP (Trivial File Transport Protocol). Det är också möjligt att identifiera version och versionsnummer för varje enskild tjänst. För att göra detta, använd-sV-omkopplaren.

nmap 109.74.11.34-sV

detta kommando kommer att använda en kombination av banner gripande och probe-response analys för att försöka identifiera tjänsten och versionsnummer för den tjänsten för varje skannad port. Med hjälp av liknande tekniker är det också möjligt att ha nmap försök att bestämma operativsystemet som körs på målet. För att göra detta, använd -O – omkopplaren.

nmap 109.74.11.34 – O

när det är klart kommer det antingen att returnera en positiv identifiering av operativsystemet eller det kommer att ge en bästa gissning och sedan en lista över andra möjliga operativsystem.

avancerade skanningstekniker

det finns ett vanligt problem som du ofta kommer att stöta på när du utför ett penetrationstest mot medelstora till stora företagsnätverk. De flesta företag och organisationer har idag blivit mer säkerhetssinnade och kommer sannolikt att ha brandväggar eller intrångsdetekteringssystem som står mellan dig och de system som du försöker skanna. För att skanna sådana system måste vi använda några mer avancerade skanningstekniker. Ett sätt att potentiellt Kringgå brandväggar och / eller intrångsdetekteringssystem är att använda några traditionella stealth-skanningstekniker som är integrerade i nmap. En metod som kan användas är att använda en långsammare tidsmall. Tids mallar sträcker sig från -T0 (paranoid scan) hela vägen upp till -T5 (Insane scan). Ju lägre värdet på tidsmallen desto långsammare kommer skanningen att utföras. Långsammare skanningar är mindre benägna att flaggas av intrångsdetekteringssystem. Ett exempel på en paranoid skanning skulle vara:

nmap 109.74.11.0-255-T0

en annan teknik som kan användas för att maskera din skanning är att översvämma nätverket med ytterligare locktrafik med -D – omkopplaren. Med den här funktionen kan du ange flera adresser för att förfalska trafik från eller så kan du använda alternativet RND för att förfalska trafik från slumpmässiga adresser.

nmap 109.74.11.0-255-D RND:5

förutom att utföra den traditionella TCP-portskanningen av målsystemen, kommer kommandot ovan också att förfalska trafik från 5 slumpmässiga adresser för att dölja den faktiska skanningstrafiken. En annan teknik som kan användas är att variera paketlängden på dina överförda förfrågningar. Vissa intrångsdetekteringssystem och brandväggar kommer att släppa paket baserat på signaturpaketlängder. För att förhindra detta kan du ange datalängden med hjälp av --data-length – omkopplaren följt av paketstorleken i antal byte.

nmap 109.74.11.0-255 –datalängd 15

detta kommando skickar all skanningstrafik i paket som är 15 byte långa. Även om detta kan vara till hjälp för att undvika vissa signaturbaserade intrångsdetekteringssystem, kan konsekvent sändning av paket med en ovanlig specificerad paketlängd flagga ett anomalibaserat intrångsdetekteringssystem. Nätverksintrångsdetekteringssystem kommer också att flagga trafik om du börjar sekventiellt ansluta till system inom ett visst nätverksintervall. För att undvika att utföra dina skanningar i följd kan du använda --randomize-hosts – omkopplaren.

nmap 109.74.11.0-255 — randomize-hosts

detta kommando ovan skannar slumpmässigt varje värd i intervallet istället för att utföra dem i följd (109.74.11.0, sedan 109.74.11.1, sedan 109.74.11.2, etc…). Även om du inte kan förfalska din IP-adress (eftersom du inte skulle få de svar som krävs för att bestämma öppna portar) kan du förfalska din MAC-adress. För att göra detta kan du använda omkopplaren –spoof-mac, följt av ett leverantörs-ID, en specifik MAC-adress eller 0.

nmap 109.74.11.0-255 –spoof-mac 0

använda 0 som ditt argument kommer att tillämpa en slumpmässig MAC-adress till din skanningstrafik. En sista teknik som är värt att nämna är att använda-f-omkopplaren till fragmentpaket.

nmap 109.74.11.0-255-f

fragmentering paket kommer att separera data nyttolaster din scan trafik i flera paket, gör det lättare att kringgå innehåll inspektion intrångsdetekteringssystem eller brandväggar. Även om alla dessa tekniker kan vara effektiva för att skanna offentligt tillgängliga servrar bakom en brandvägg, är de vanligtvis inte tillräckliga för att skanna värdar i ett internt nätverk. Medan vissa offentligt tillgängliga servrar kommer att vara tillgängliga för skanning, kommer mycket av den interna infrastrukturen att vara djupare i nätverket och inte så lättillgänglig. Tänk på diagrammet i Figur 3. Detta är ett enkelt exempel på en gemensam konfiguration i företagsnätverk.

f3

Figur 3. Vanlig nätverkskonfiguration

problemet som vi stöter på här är att det interna nätverket ligger bakom en intern brandvägg, som har strängare regler om ingress trafik, jämfört med den externa brandväggen. Denna interna brandvägg blockerar sannolikt inkommande trafik från fjärradresser på webben; Det är dock möjligt att systemen i DMZ kan kommunicera med de interna systemen. För att kunna skanna dessa interna system måste vi få systemen i DMZ att fungera för vår räkning. Vi kommer att diskutera flera olika sätt att göra detta, att inkludera proxy scanning, zombie scanning och FTP bounce scanning.

förmodligen är det enklaste sättet att skanna de interna systemen genom att använda en proxykedja. Låt oss anta att vi har fått tillgång till en proxytjänst inom DMZ genom att hitta en öppen proxytjänst, brute tvinga en proxytjänst med hydra eller genom att installera en proxytjänst på en redan komprometterad maskin. När du har konfigurerat ditt system för att dirigera trafik genom den proxyn kan du utföra Nmap-skanningar genom att använda en fullständig anslutningssökning (-sT).

nmap 10.1.1.0-255-sT

om det inte finns någon proxytjänst tillgänglig finns det några smarta sätt att utnyttja maskiner inom DMZ för att få skanningsresultat på interna system. Ett sätt att göra detta är att använda zombieskanning, även kallad tomgångssökning. För att kunna utföra en zombiesökning mot systemen på det interna LAN måste vi hitta en livskraftig zombievärd inom DMZ. En zombievärd är ett relativt ledigt system som använder inkrementell IPID-sekvensering. För att hitta en zombievärd kan vi använda ett Nmap-skript för att skanna DMZ efter ett system som passar denna beskrivning.

nmap –script ipidseq 109.74.11.0-255

detta skript skickar en serie paket till varje värd och spårar IPID-numren för alla mottagna svar. Det kommer sedan att analysera dessa IPID-nummer för att klassificera varje system som antingen slumpmässig sekvens, alla nollor eller inkrementell. Se Figur 4 för ett exempel på utgången för ett inkrementellt system.

f4

Figur 4. Zombie värd ligger med IPID sekvens Script

när vi har fått en IP-adress för vår zombie system, vi är redo att försöka vår zombie scan. Innan jag tar upp hur man utför skanningen kommer jag kortfattat att diskutera hur skanningen fungerar. Se Figur 5 för ett diagram över vad som sker när en zombie scan utförs mot en öppen port.

f5

Figur 5. Zombie scan mot öppen port

först bestämmer vår nmap-skanner det aktuella ipid-värdet för zombiesystemet genom att skicka ett oönskat SYN/ACK-paket. Eftersom inget SYN-paket ursprungligen skickades av zombiesystemet för att upprätta en anslutning, svarar Zombien sedan på vår skanner med ett första paket. Vårt skanningssystem använder sedan IPID för det första paketet som referenspunkt. Sedan kommer vårt skanningssystem omedelbart att följa upp detta med ett förfalskat SYN-paket som skickas till målsystemet med hjälp av en källans IP-adress för zombiesystemet. Eftersom källans IP-adress är en inom DMZ är det mer troligt att denna anslutningsförfrågan kan passera genom brandväggen. Om målet tar emot paketet och destinationsporten är öppen, kommer målet sedan att returnera ett SYN/ACK-paket till zombiesystemet (som det tror skickade det ursprungliga SYN-paketet). Eftersom detta SYN/ACK-paket tas emot ur sitt sammanhang kommer zombiesystemet sedan att svara på målsystemet med ett första paket och därigenom öka dess IPID-värde med ett. Slutligen skickar vår skanner ett sista SYN / ACK-paket till zombiesystemet. Det efterföljande första svaret från Zombien kommer att öka IPID en gång till. Så om den riktade porten på fjärrsystemet är öppen kommer det slutliga ipid-värdet som returneras att vara två siffror högre än det ursprungliga värdet. Alternativt illustrerar Figur 6 vad som händer när porten i målsystemet är stängd.

f6

Figur 6. Zombie scan mot stängd port

om porten på målsystemet är stängd får zombie-systemet inget oönskat svar från målet och initieras därför inte att skicka ett första paket till målet. Så om IPID-värdet för det slutliga första svaret bara har ökat med ett, kan vi dra slutsatsen att porten är stängd eftersom inget SYN/ACK-svar skickades till zombiesystemet för att inleda ett första svar. Annars, om det slutliga ipid-värdet har ökat med två från det ursprungliga värdet, kan vi dra slutsatsen att porten på målsystemet måste öppnas eftersom den måste ha svarat på Zombien som initierade svaret som ökade ipid-värdet för zombiesystemet.

även om detta kan låta extremt komplicerat; bli inte skrämd av beskrivningen, eftersom nmap gör nästan allt arbete för dig. För att faktiskt utföra en zombiesökning måste du bara ange ett enkelt kommando.

Nmap-sI 192.168.199.132-Pn 192.168.199.130

-sI omkopplaren berättar för nmap att utföra en zombiesökning med följande IP-adress som zombievärd (192.168.199.132). -Pn – omkopplaren förhindrar nmap från att utföra en initial ICMP-ping på målsystemet innan du försöker skanna. Så, den slutliga IP-adressen i kommandot identifierar målsystemet. Utgången för detta kommando kan ses i Figur 7.

f7

Figur 7. Zombie scan mot stängd port

det bör noteras att IP-området som jag använde för att visa denna zombie scan är ett privat område på mitt interna nätverk. För att detta ska fungera effektivt mot ett fjärrnätverk, som beskrivs i det ursprungliga scenariot, måste systemen i både DMZ och det interna nätverket vara på offentligt dirigerbara IP-områden. Om det interna nätverket är konfigurerat på ett privat område bakom en nat-server (Network Address Translation), kommer nmap-skannern inte att kunna skicka det falska SYN-paketet till den interna adressen från dess avlägsna plats.

ett annat sätt att använda system inom DMZ för att försöka skanna värdar på det interna nätverket är att använda FTP bounce. Vissa äldre FTP-servrar stöder möjligheten att överföra filer till ett tredjepartssystem. Om du har upptäckt en FTP-server i DMZ som tillåter anonym inloggning eller att du har brute tvingat med hydra, kan du testa FTP-servern för att avgöra om den stöder FTP bounce. För att göra detta, använd ftp-bounce-skriptet.

Nmap-script ftp-bounce-script-args

ftp-bounce.användarnamn = anonym,

detta kommando använder Nmap-skriptet med användarnamn och lösenordsargument mot FTP-servern. När den är klar kommer den här skanningen att indikera om FTP-studsning är möjlig eller inte. Om skriptet indikerar att FTP bounce fungerar kan du använda FTP-servern för att utföra en portskanning mot andra system i nätverket. Figur 8 illustrerar hur detta fungerar.

f8

figur 8. FTP bounce scan

skannern kommer att försöka skicka binära data, via FTP bounce-funktionen, till målsystemet vid en angiven port. Om data överförs rapporterar FTP-servern sedan tillbaka detta till skannern, vilket indikerar att porten på målsystemet är öppen. För att utföra en FTP-studsskanning, använd -b – omkopplaren.

nmap-b ftpuser::21 10.1.1.128-255

i detta kommando används funktionen -b för att utföra en ftp-studsskanning med användarnamnet ”ftpuser” och lösenordet PassW0rd, mot FTP-servern vid 192.168.11.201 värd på TCP-port 21. Åtgärderna som beskrivs i diagrammet ovan kommer sedan att utföras mot var och en av de vanliga 1000s-portarna på var och en av målvärdarna från 10.1.1.128 till 10.1.1.255.

Sårbarhetskartläggning och exploatering med NSE

när du har upptäckt live-värdar i målnätverket och har lyckats räkna upp öppna portar och/eller köra tjänster på dessa värdar kan du börja testa och utnyttja sårbarheter. Med den nyligen integrerade NSE (Nmap Scripting Engine) finns det ett antal förinstallerade skript som följer med standard Nmap-installationen. Dessa skript har ett brett utbud av olika funktioner från grundläggande informationsinsamling (som de två som vi redan har diskuterat), kartläggning av sårbarhet, brute forcing, denial of service och till och med fjärrutnyttjande. Alla dessa skript finns i din Nmap-installationskatalog. I Kali-Linux finns de på /usr/share/nmap/scripts/. För att bläddra till dessa skript och börja arbeta med dem, använd följande kommandon:

cd /usr/share/Nmap/scripts/

ls

kommandot cd ändrar katalogen till platsen för NSE-skripten och kommandot ls visar innehållet i katalogen. Du kan sedan visa något av skripten med kommandot cat, följt av namnet på skriptet som du vill visa. För denna demonstration kommer vi att använda ftp-vuln-cve2010-4221.nse. För att visa innehållet i det här skriptet, använd följande kommando:

cat ftp-vuln-cve2010-4221.nse

f9

Figur 9. NSE script contents

Figur 9 visar innehållet i detta script. Om du bläddrar till toppen av skriptinnehållet ser du flera bitar av användbar information för att inkludera en beskrivning av skriptet, en lista med ytterligare resurser som referens och lämplig användning och syntax för skriptet. Att sortera igenom dessa skript i katalogen och hitta ett skript som utför en specifik funktion kan dock vara mycket tråkigt. Enligt min mening är det här Zenmap (det grafiska gränssnittet som vi tidigare diskuterat) verkligen lyser igenom. För att visa hur användbart Zenmap-gränssnittet kan vara när du arbetar med NSE-skript, öppna det igen från kommandoraden med kommandot:

zenmap

välj sedan rullgardinsmenyn profil och klicka på ”ny profil eller Kommando.”När Profilredigeraren öppnas väljer du fliken Skript högst upp på skärmen. Figur 10 visar en bild av Zenmap-skriptgränssnittet.

f10

Figur 10. Zenmap Scripting Interface

en lista över alla tillgängliga Nmap-skript finns på vänster sida av skärmen. Du kan välja någon av dessa för att få den inkluderad i ditt Nmap-kommando. Vissa skript kräver argument för att kunna köras korrekt. Post autentiseringsskript kräver ofta ett användarnamn och lösenord för specifika nätverkstjänster. I exemplet i Figur 10 kan argument levereras för att konfigurera brute force-attacken som ska utföras mot MySQL-tjänsten. Du kan också enkelt skicka skriptargumenten genom att ange värdena i Argumentfönstret. Dessa argument fylls automatiskt i det genererade Nmap-kommandot. Fönstret i det övre mitten ger en beskrivning av det valda skriptet, lämplig användning och syntax och till och med kategorier för att beskriva skriptets funktioner. Dessa kategorier kan vara särskilt användbara om du försöker utföra en viss typ av uppgift, till exempel sårbarhetsanalys. När du har startat ett NSE-skript med ett Nmap-kommando ser du resultaten i standard Nmap-utgången. När det gäller brute force-skript kommer utmatningen att visa om brute force-attacken lyckades och i så fall visar det upptäckta användarnamnet och lösenordet. När det gäller sårbarhetsskript kommer utmatningen att indikera om sårbarheten finns på målsystemet / målsystemen. Och när det gäller exploateringsskript kommer utmatningen att ge information om nyttolasten som därefter levererades till målsystemet.

skript med Nmap

förutom sin egen integrerade skriptmotor stöder nmap också flera Utmatningsalternativ som gör det enkelt att använda traditionella skriptspråk för att utföra utdataanalys. Två utdataformat som kan vara användbara för skript inkluderar greppable output (-oG) och XML output (-oX). XML kan vara effektiv för högre nivå skriptspråk som har moduler som kan importeras för XML tolkning och greppable utgång kan användas tillsammans med bash shell scripting att effektivisera analys av Nmap resultat. För att visa hur denna utmatningsfunktion kan användas i samband med skript, kommer vi att granska ett enkelt 4-radigt bash-skalskript, som visas i Figur 11 för att analysera resultaten av en Nmap-skanning.

f11

Figur 11. Nmap-resultatanalys Bash Script

Tänk på ett scenario där en Nmap-skanning redan utfördes mot ett mycket stort nätverk och utmatningen från skanningen sparades i greppbart format till en nätverkskanning.txt-fil. Och anta att vi vill använda hydra för att utföra en brute force-attack mot alla FTP-tjänster i nätverket, men vi vill inte slösa bort den tid som skulle krävas för att skanna port 21 på hela nätverket igen. Detta enkla skript kommer att extrahera alla system som har en angiven port öppen. Den första raden uppmanar användaren att ange ett portnummer. Den andra raden tilldelar sedan värdet på användarinmatningen till variabeln ’port’. Den tredje raden indikerar för användaren att alla system med den öppna porten kommer att listas. Och slutligen, det sista kommandot är där vi grep ut resultaten från Nmap greppable utgång. Skriptet använder grep-kommandot för att extrahera alla rader från utdatafilen som refererar till den angivna porten. Detta kommer att innehålla rader som räknar upp varje instans av var porten är öppen, stängd eller filtrerad. Sedan rör den som matar ut till en annan grep-funktion som endast extraherar fall där den angivna porten är öppen. Denna utgång leds sedan över till cut-funktionen, som anger ett mellanslag som avgränsare och sedan matar ut det andra fältet. Genom att göra detta matar vårt skript sedan ut IP-adressen för varje system som har den angivna porten öppen. Figur 12 visar skriptets utdata.

f12

Figur 12. Nmap Result Analysis Script Output

även om detta är ett mycket enkelt skript, visar det hur lätt det kan vara att extrahera information från greppable output format. När förvärvade, denna insamlade informationen kan lätt användas för ytterligare skript. Det kan användas som utgångspunkt för att utföra någon annan efterföljande uppgift mot varje system som identifierades för att ha en specifik port öppen.

ett allt-i-ett Penetrationstestverktyg

genom att kombinera sina olika funktioner kan man enkelt utföra ett komplett penetrationstest genom att använda Nmap ensam. Det kan inte förnekas att nmap, med sin imponerande lista över funktioner och funktioner, är ett verkligt kraftfullt verktyg. Och som åren framsteg, det kommer sannolikt att bli ännu mer kraftfull som fler människor fortsätter att bidra till detta projekt. Som ett barn med sin fars pistol kan nmap vara ett farligt verktyg i fel händer. Men om det används korrekt kan det vara en ovärderlig tillgång för att säkerställa säkerheten för din nätverksinfrastruktur. Så kom alltid ihåg att använda det klokt och att använda det bra.

om författaren

jh

Justin Hutchens gör för närvarande sårbarhetsanalys, intrångsdetektering och digital kriminalteknik för ett stort företagsnätverk med över 33 000 nätverkssystem. Han har fyllt många olika roller inom IT-området för att inkludera nätverksdesign, systemutveckling, databasadministration och nätverkssäkerhet. Han undervisar också för närvarande kurser om penetrationstestning med Backtrack och Kali-Linux operativsystem. Han har för närvarande en kandidatexamen i informationsteknologi och flera professionella certifieringar för att inkludera CISSP (Certified Information System Security Professional), CEH (Certified Ethical Hacker), ECSA (EC-Council Certified Security Analyst) och CHFI (Computer Hacking Forensic Investigator).

Write a Comment

Din e-postadress kommer inte publiceras.