Nse-skript. Hur man använder Nmap för att skanna ditt nätverk. Visa endast öppna portar

Nedan hittar du 20 basic exempel på att använda kommandot Nmap.

Du kommer att lära dig hur du använder Nmap från kommandoraden i Linux för att söka efter aktiva värdar på nätverket och skanna öppna portar.

Du kommer att se hur fjärrupptäcka operativsystemet använda TCP/IP-stackfingeravtryck och hur ta reda på mjukvaruversionen körs på en fjärrserver.

Jag kommer också att visa dig hur du gör detta med Nmap hemlig skanning, Hur definiera brandvägg Och hur ändra MAC-adress.

1. Skanna en enskild värd eller IP-adress

Skanna Separat IP-adress:

$nmap 192.168.1.1

Skanna server med Värdnamn:

$ nmap server.site

Öka Detaljnivå skanningsresultat:

$ nmap -v server..site

2. Skanna flera IP-adresser

Skanna Flera IP-adresser:

$nmap 192.168.1.1 192.168.1.2 192.168.1.3 $namp 192.168.1.1,2,3

Skanna Subnät:

$ nmap 192.168.1.0/24 $ nmap 192.168.1.*

Skanna IP-adressintervall (192.168.1.0 — 192.168.1.200):

$nmap 192.168.1.0-200

3. Sök efter aktiva datorer i nätverket

Användbart råd: Skanna ditt nätverk med bara ett ping-kommando! Hitta alla aktiva datorer!

Skanna nätverket för sökning Aktiva värdar:

$ nmap -sn 192.168.1.0/24

4. Skanna värdlistan från fil

Skannar en lista över värdar/nätverk från Fil:

$ nmap -iL input.txt

Filformat:

# Poster kan vara i vilket format som helst som Nmap fungerar med # från kommandoraden (IP-adresser, värdnamn, CIDR, IPv6 eller oktett #-intervall). Poster måste separeras med ett eller flera mellanslag, tabb # eller rader. $ cat input.txt server.site 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

5. Exkludera IP/värdar/nätverk från skanning

Uteslut mål från Nmap scan:

$ nmap 192.168.1.0/24 --exclude 192.168.1.1 $ nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.5 $ nmap 192.168.1.0,3129.1.0,312.168.1.0.

Uteslut lista värdar hämtade från filen:

$ nmap 192.168.1.0/24 --excludefile exclude.txt

Filformatet med uteslutna värdar liknar det ovan.

6. Skanna specifika portar

Skanna En hamn:

$ nmap -p 80 192.168.1.1

Skanna Flera portar:

$ nmap -p 80.443 192.168.1.1

Skanna Hamnområdet:

$ nmap -p 80-1000 192.168.1.1

Skanna Alla hamnar:

$ nmap -p "*" 192.168.1.1

Skanna flera av de mest Vanliga hamnar:

$ nmap --top-ports 5 192.168.1.1 $ nmap --top-ports 10 192.168.1.1

7. Fastställande av IP-protokoll som stöds

Bestäm vilken IP-protokoll(TCP, UDP, ICMP, etc.) stöder skannad värd:

$ nmap -sO 192.168.1.1

8. Skanna TCP/UDP-portar

Skanna alla TCP-portar:

$ nmap -sT 192.168.1.1

Skanna specifika TCP-portar:

$ nmap -p T:80 192.168.1.1

Skanna alla UDP-portar:

$ nmap -sU 192.168.1.1

Skanna specifika UDP-portar:

$ nmap -p U:53 192.168.1.1

Kombinera skanning av olika portar:

$ nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1

9. Snabbskanning

Aktivera Snabbt läge skanna:

$ nmap -F 192.168.1.1

* Skannar färre portar än med vanlig skanning.

10. Visa orsak till portstatus

Show Anledning, där Nmap tror att hamnen är i ett visst tillstånd:

$ nmap --orsak 192.168.1.1

11. Visa endast öppna portar

Show Endast öppna portar(eller möjligen öppen):

$ nmap --öppen 192.168.1.1

12. OS-definition

En av de mest kända funktionerna i Nmap är dess fjärrdetektering av operativsystemet baserat på analys av TCP/IP-stacken.

Nmap skickar en serie TCP- och UDP-paket till fjärrvärden och undersöker svaren.

Efter att ha kört många tester jämför Nmap resultaten med sin databas och, om en matchning hittas, visar information om operativsystemet.

Sätta på OS-definition:

$ nmap -O 192.168.1.1

13. Fastställa versionen av tjänsterna

Sätta på Fastställande av tjänstens version:

$ nmap -sV 192.168.1.1

* Bestämmer versionerna av program som körs på fjärrservern.

14. Brandväggsdetektering

Ta reda på om din dator är skyddad av någon Batchfilter eller Brandvägg:

$ nmap -sA 192.168.1.1

15. MAC-adressbyte

Ersättning MAC-adresser:

$ nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

Ändra MAC-adress Slumpmässig MAC:

$ nmap --spoof-mac 0 192.168.1.1

16. Skanna brandväggen efter sårbarheter

Dessa tre typer av skanningar använder ett subtilt kryphål i TCP RFC för att skilja mellan öppna och stängda portar.

När du skannar ett RFC-kompatibelt system kommer alla paket som inte har SYN-, RST- eller ACK-bitarna att resultera i ett RST-svar om porten är stängd, eller inget svar om porten är öppen.

Därför att ingen av dessa bitar är inställd, då kommer valfri kombination av de återstående tre (FIN, PSH och URG) att vara korrekt.

TCP Null läser in:

$ nmap -sN 192.168.1.1

* Inga bitar är satta (Flaggor i TCP-huvud 0).

TCP Fin läser in:

$ nmap -sF 192.168.1.1

* Endast TCP FIN-biten är inställd.

TCP Xmas läser in:

$ nmap -sX 192.168.1.1

* Flaggorna FIN, PSH och URG är inställda (paketet lyser upp som en julgran).

17. Hemlig skanning

Användbart råd: Håll dig anonym när du skannar portar! Använd Nmap + Tor + ProxyChains! Säker och enkel penetrationstestning!

TCP SYN läser in:

$ nmap -sS 192.168.0.1

* Känd som halvöppen skanning eftersom den inte öppnar fullständiga TCP-anslutningar.

18. Inaktivera Host Discovery (ingen ping)

Pinga inte värdar innan du skannar:

$ nmap -Pn 192.168.1.1

19. Inaktivera DNS-användning

Användbart råd: Behöver du skärpa din Linux-säkerhet? Kryptera DNS-trafik för att skydda mot spoofing!

Omvänd aldrig DNS-namnupplösning för varje aktiv IP-adress som upptäcks.

Det finns fyra typer av NSE-skript, nämligen:

  • Förhandsskript– är skript som körs före någon av Nmaps skanningsoperationer, de exekveras när Nmap inte har samlat någon information om ett mål ännu.
  • Värdskript– är skript som körs efter att Nmap har utfört normala operationer som värdupptäckt, portskanning, versionsdetektering och OS-detektering mot en målvärd.
  • Serviceskript– är skript som körs mot specifika tjänster som lyssnar på en målvärd.
  • Postregelmanus– är skript som körs efter att Nmap har skannat alla sina målvärdar.

Sedan grupperas dessa skript under olika kategorier inklusive de för autentisering ( auth), upptäcka värdar ( utsända), brute force attacker för att gissa autentiseringsuppgifter ( djurisk), upptäcka mer om ett nätverk ( upptäckt), vilket orsakar en denial of service ( dos), utnyttjar en viss sårbarhet ( utnyttja), etc. Ett antal skript tillhör standardkategorin.

Notera: Innan vi går vidare bör du notera dessa nyckelpunkter:

  • Kör inte skript från tredje part utan att kritiskt titta igenom dem eller bara om du litar på författarna. Detta beror på att dessa skript inte körs i en sandlåda och kan därför oväntat eller med uppsåt skada ditt system eller invadera din integritet.
  • För det andra kan många av dessa skript möjligen köras som antingen en prerule eller postregel manus. Med tanke på detta rekommenderas det att använda en preule för konsistensändamål.
  • Nmap använder scripts/script.db databas för att ta reda på tillgängliga standardskript och kategorier.

För att se platsen för alla tillgängliga NSE-skript, kör på terminalen så här:

$ lokalisera *.nse/usr/share/nmap/scripts/acarsd-info.nse /usr/share/nmap/scripts/address-info.nse /usr/share/nmap/scripts/afp-brute.nse /usr/share/nmap/scripts /afp-ls.nse /usr/share/nmap/scripts/afp-path-vuln.nse /usr/share/nmap/scripts/afp-serverinfo.nse /usr/share/nmap/scripts/afp-showmount.nse /usr/share/nmap/scripts/ajp-auth.nse /usr/share/nmap/scripts/ajp-brute.nse /usr/share/nmap/scripts/ajp-headers.nse /usr/share/nmap/scripts /ajp-methods.nse /usr/share/nmap/scripts/ajp-request.nse /usr/share/nmap/scripts/allseeingeye-info.nse /usr/share/nmap/scripts/amqp-info.nse /usr /share/nmap/scripts/asn-query.nse ...

NSE-skript laddas med flaggan --script, som också låter dig köra dina egna skript genom att tillhandahålla kategorier, skriptfilnamn eller namnet på kataloger där dina skript finns.

Syntaxen för att aktivera skript är följande:

$ namp -sC mål #ladda standardskript ELLER $ nmap --script filnamn|kategori|katalog|uttryck,... mål

Du kan se en beskrivning av ett skript med alternativet --script-help. Dessutom kan du skicka argument till vissa skript via alternativen --script-args och --script-args-file, det senare används för att ange ett filnamn snarare än en kommandorad arg.

För att utföra en skanning med de flesta standardskripten, använd flaggan -sC eller alternativt --script=default som visas.

$ nmap -sC scanme.nmap.org ELLER $ nmap --script=default scanme.nmap.org ELLER $ nmap --script default scanme.nmap.org

Provutgång
Startar Nmap 7.01 (https://nmap.org) 2017-11-15 10:36 IST Nmap-skanningsrapport för scanme.nmap.org (45.33.32.156) Värden är uppe (0,0027s latens). Visas inte: 999 filtrerade portar PORT STATE SERVICE 80/tcp öppen http |_http-title: Varsågod och ScanMe! Nmap klar: 1 IP-adress (1 värd upp) skannad på 11,74 sekunder

För att använda ett skript för rätt ändamål kan du först och främst få en kort beskrivning av vad det faktiskt gör, t.ex. http-rubriker.

$ nmap --script-help http-headers scanme.nmap.org

Provutgång
Startar Nmap 7.01 (https://nmap.org) 2017-11-15 10:37 IST http-headers Kategorier: upptäcktssäker https://nmap.org/nsedoc/scripts/http-headers.html Utför en HEAD-förfrågan för rotmappen ("/") för en webbserver och visar HTTP-huvudena som returneras.

Laddar NSE-skript för att utföra Nmap-skanningar

Du kan välja eller ladda skript för att utföra en skanning på olika metoder som förklaras nedan.

Använder skriptnamn

När du vet vad ett skript gör kan du utföra en skanning med det. Du kan använda ett skript eller ange en kommaseparerad lista med skriptnamn. Kommandot nedan gör att du kan se HTTP-huvudena som konfigurerats på webbservern på målvärden.

$ nmap --script http-headers scanme.nmap.org

Skanna HTTP-rubriker

Startar Nmap 7.01 (https://nmap.org) 2017-11-15 10:39 IST Nmap-skanningsrapport för scanme.nmap.org (45.33.32.156) Värden är uppe (0,27s latens). Visas inte: 996 stängda portar PORT STATE SERVICE 22/tcp öppen ssh 80/tcp öppen http | http-rubriker: | Datum: ons 15 nov 2017 05:10:04 GMT | Server: Apache/2.4.7 (Ubuntu) | Acceptera-intervall: bytes | Variera: Acceptera-kodning | Anslutning: stäng | Innehållstyp: text/html | |_ (Begärantyp: HEAD) 179/tcp filtrerad bgp 31337/tcp öppen Elite Nmap klar: 1 IP-adress (1 värd upp) skannad på 20,96 sekunder

Använda kategorier

Du kan också ladda skript från en kategori eller från en kommaseparerad lista med kategorier. I det här exemplet använder vi alla skript i standard- och sändningskategorin för att utföra en skanning på värden 192.168.56.1 .

$ nmap --script default, broadcast 192.168.56.1

Använder * Wildcard

Detta är användbart när du vill välja skript med ett givet namnmönster. Till exempel för att ladda alla skript med namn som börjar med ssh, kör kommandot nedan på terminalen:

$ nmap --script "ssh-*" 192.168.56.1

Använda booleska uttryck

Du kan också välja skript med booleska uttryck som du kan bygga med hjälp av och, eller, och inte operatörer. Och namn i ett booleskt uttryck kan vara en kategori, ett filnamn från script.db, eller allt.

Följande kommando kommer att ladda skript från standard- eller sändningskategorierna.

$ nmap --script "default or broadcast" 192.168.56.10

Vilket motsvarar:

$ nmap --script default, broadcast 192.168.56.10

För att ladda alla skript genom att utelämna de i vuln kategori, kör det här kommandot på terminalen.

$ nmap --script "inte vuln" 192.168.56.10

Nästa kommando ser lite komplicerat ut men det är lätt att förstå, det väljer skript i standard- eller sändningskategorier, och utelämnar de med namn som börjar med ssh-:

$ nmap --script "(standard eller sändning) och inte ssh-*" 192.168.56.10

Viktigt är att det är möjligt att kombinera kategorier, skriptnamn, en katalog som innehåller dina anpassade skript eller ett booleskt uttryck för att ladda skript, så här:

$ nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10

Skicka argument till NSE-skript

Nedan är ett exempel som visar hur man skickar argument till skript med --script-args alternativ:

$ nmap --script mysql-audit --script-args "mysql-audit.username="root", \ mysql-audit.password="password_here", mysql-audit.filename="nselib/data/mysql-cis. granska""

För att skicka ett portnummer, använd -s nmap alternativ:

$ nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username="root", \ mysql-audit.password="password_here", mysql-audit.filename="nselib/data/mysql -cis.audit""

Detta kommando ovan kör en granskning av MySQL-databasserverns säkerhetskonfiguration mot delar av CIS MySQL v1.0.2 riktmärke. Du kan också skapa dina egna användbara anpassade revisionsfiler för andra MySQL-revisioner.

Det var allt för nu. Du kan hitta mer information på nmap man-sidan eller kolla in NSE Usage.

För att komma igång med att skriva dina egna NSE-skript, kolla in den här guiden: https://nmap.org/book/nse-tutorial.html

Slutsats

Nmapär ett riktigt kraftfullt och användbart verktyg som varje system- eller nätverksadministratör behöver i sin säkerhetsarsenal – NSE ger det helt enkelt mer effektivitet.

I den här artikeln introducerade vi dig till Nmap Script Engine, och tittade på hur man hittar och använder de olika tillgängliga skripten under olika kategorier. Om du har några frågor, tveka inte att skriva tillbaka till oss via kommentarsformuläret nedan.

Nmap är en mycket populär nätverksskanner med öppen källkod som kan användas på både Windows och Linux. Nmap eller Network Mapper har utvecklats av Gordon Luon och används för närvarande av säkerhetspersonal och systemadministratörer runt om i världen.

Det här programmet hjälper systemadministratörer att mycket snabbt förstå vilka datorer som är anslutna till nätverket, ta reda på deras namn och även se vilken programvara som är installerad på dem, vilket operativsystem och vilka typer av filter som används. Funktionaliteten i programmet kan utökas med ett eget skriptspråk, vilket gör att administratörer kan automatisera många åtgärder.

Till exempel kan skript automatiskt upptäcka nya säkerhetsbrister i ditt nätverk. Namp kan användas med goda och dåliga avsikter, var försiktig så att du inte använder nmap mot lagen. I den här handledningen kommer vi att titta på hur man använder namp för att skanna portar på Linux-operativsystemet. Men först måste du försöka förstå hur det här verktyget fungerar.

I datornätverk har alla anslutna enheter sin egen IP-adress. Varje dator stöder ping-protokollet, som kan användas för att avgöra om den är ansluten till nätverket. Vi skickar helt enkelt en ping-förfrågan till datorn, och om den svarar antar vi att den är ansluten. Nmap tar ett lite annorlunda tillvägagångssätt. Datorer reagerar också på ett visst sätt på vissa nätverkspaket. Verktyget skickar helt enkelt de nödvändiga paketen och tittar på vilka värdar som skickat svaret.

Men du vet förmodligen redan om detta. Vad som är mer intressant är hur Nmap tar reda på vilka tjänster som körs på en maskin. Kärnan i alla nätverksprogram är baserade på portar. För att ta emot ett meddelande från nätverket måste programmet öppna en port på din dator och vänta på inkommande anslutningar. Och för att skicka ett meddelande över nätverket måste du ansluta till en annan programport (destination). Programmet kommer då att behöva öppna porten där det väntar på svar.

När nmap-verktyget skannar nätverket går det igenom det tillgängliga utbudet av portar och försöker ansluta till var och en av dem. Om anslutningen lyckas kan programmet i de flesta fall genom att överföra flera paket till och med ta reda på vilken version av programvaran som lyssnar efter anslutningar till denna port. Nu när vi har täckt grunderna, låt oss titta på hur man använder nmap för att skanna portar och nätverk.

Nmap-syntax

Nmap-startkommandot är mycket enkelt, allt du behöver göra är att skicka in mål-IP-adressen eller nätverket i parametrarna, och även ange alternativ om det behövs:

$ nmap alternativ adress

Låt oss nu titta på de viktigaste alternativen som vi behöver i den här artikeln.

  • -sL- skapa bara en lista över körande värdar, men skanna inte nmap-portar;
  • -sP- kontrollera endast om värden är tillgänglig med ping;
  • -PN- anser att alla värdar är tillgängliga, även om de inte svarar på ping;
  • -sS/sT/sA/sW/sM- TCP-skanning;
  • -sU- UDP-skanning nmap;
  • -sN/sF/sX- TCP NULL och FIN skanning;
  • -sC- kör skriptet som standard;
  • -si- lat Indle-skanning;
  • -s- specificera utbudet av portar som ska kontrolleras;
  • -sV- Detaljerad undersökning av hamnar för att fastställa tjänsteversioner;
  • -O- bestämma operativsystemet;
  • -T- skanningshastighet, ju högre desto snabbare;
  • -D- maskskanning med fiktiva IP-adresser;
  • -S- ändra din IP-adress till den angivna;
  • -e- använda ett specifikt gränssnitt;
  • --spoof-mac- ställ in din MAC-adress;
  • -A- bestämning av operativsystemet med hjälp av skript.

Nu när vi har täckt alla grundläggande alternativ, låt oss prata om hur nmap-portskanning fungerar.

Hur man använder Nmap för att skanna portar på Linux

Låt oss sedan titta på nmap-exempel. Låt oss först titta på hur man hittar alla enheter som är anslutna till nätverket, för att göra detta, använd bara alternativet -sL och ange masken för vårt nätverk. i mitt fall är det 192.168.1.1/24. Du kan hitta din lokala nätverksmask genom att köra kommandot:

Från utgången för gränssnittet du använder, ta numret efter snedstrecket, och före snedstrecket anger du ip-adressen för din router. Kommandot för att skanna nmap-nätverket kommer att se ut så här:

nmap -sL 192.168.1.1/24

Ibland ger den här skanningen inte några resultat eftersom vissa operativsystem har skydd mot portskanning. Men detta kan kringgås genom att helt enkelt använda ping för att skanna alla IP-adresser på nätverket för detta finns alternativet -sn:

nmap -sn 192.168.1.1/24

Som du kan se har programmet nu upptäckt aktiva enheter på nätverket. Därefter kan vi skanna nmap-portar för önskad värd genom att köra verktyget utan alternativ:

sudo nmap 192.168.1.1

Nu kan vi se att vi har flera portar öppna, som alla används av någon tjänst på målmaskinen. Var och en av dem kan vara potentiellt sårbara, så det är inte säkert att ha många öppna portar på en maskin. Men det är inte allt du kan göra härnäst kommer du att lära dig hur du använder nmap.

För att ta reda på mer detaljerad information om maskinen och de tjänster som körs på den kan du använda alternativet -sV. Verktyget ansluter till varje port och avgör all tillgänglig information:

sudo nmap -sV 192.168.1.1

Vår maskin kör ftp, så vi kan försöka ta en närmare titt på den här tjänsten med standard nmap-skript. Skript låter dig kontrollera porten mer i detalj och hitta möjliga sårbarheter. För att göra detta, använd alternativen -sC och -p för att ställa in porten:

sudo nmap -sC 192.168.56.102 -p 21

Vi körde standardskriptet, men det finns även andra skript, till exempel kan du hitta alla skript för ftp med kommandot:

sudo hitta /usr/share/nmap/scripts/ -namn "*.nse" | grep ftp

Sedan kommer vi att försöka använda en av dem, för detta behöver vi bara specificera den med alternativet --script. Men först kan du titta på informationen om skriptet:

sudo nmap --script-help ftp-brute.nse

Det här skriptet kommer att försöka fastställa FTP-inloggningen och lösenordet på fjärrvärden. Kör sedan skriptet:

sudo nmap --script ftp-brute.nse 192.168.1.1 -p 21

Som ett resultat hämtade skriptet inloggningen och lösenordet, admin/admin. Det är därför du inte behöver använda standardinloggningsalternativen.

Du kan också köra verktyget med alternativet -A det aktiverar ett mer aggressivt driftläge för verktyget, med vilket du får det mesta av informationen med ett kommando:

sudo nmap -A 192.168.1.1

Observera att nästan all information vi har sett tidigare finns här. Den kan användas för att öka skyddet för denna maskin.

Slutsatser

I den här artikeln tittade vi på hur nmap-portskanning utförs, samt flera enkla exempel på hur du använder det här verktyget. Dessa nmap-kommandon kan vara användbara för många systemadministratörer för att förbättra säkerheten för sina system. Men detta är inte alla funktioner i verktyget. Fortsätt att experimentera med verktyget för att lära dig mer, bara inte på andras nätverk!

Om författaren

Grundare och webbplatsadministratör, jag brinner för programvara med öppen källkod och operativsystemet Linux. Jag använder för närvarande Ubuntu som mitt huvudoperativsystem. Förutom Linux är jag intresserad av allt som rör informationsteknologi och modern vetenskap.

nmap [ <Тип сканирования> ...] [ <Опции> ] { <цель сканирования> }

Beskrivning

Nmap(" Network Mapper") är ett verktyg för nätverksutforskning och säkerhetstestning med öppen källkod. Den var designad för att snabbt skanna stora nätverk, även om den också fungerar bra med enstaka mål. Nmap använder råa IP-paket på ett genialiskt sätt för att avgöra vilka värdar som finns tillgängliga i nätverket, vilka tjänster (applikationsnamn och version) de erbjuder, vilka operativsystem (och OS-versioner) de använder, vilka typer av paketfilter/brandväggar de använder. , och mycket mer. Även om Nmap vanligtvis används för säkerhetstestning, tycker många systemadministratörer att det är användbart för vanliga uppgifter som att övervaka nätverksstruktur, hantera scheman för uppstart av tjänster och hålla reda på värd- eller tjänstdrifttid.

Utdata från Nmap är en lista över skannade mål med ytterligare information för varje beroende på de angivna alternativen. Nyckelinformationen är « tabell över viktiga hamnar» . Den här tabellen innehåller portnummer, protokoll, tjänstnamn och status. Statusen kan vara öppen, filtrerad, stängd eller ofiltrerad. Open betyder att applikationen på måldatorn är redo att upprätta en anslutning/ta emot paket på den porten. Filtrerad betyder att en brandvägg, nätverksfilter eller något annat nätverksröra blockerar porten och Nmap kan inte avgöra om porten är öppen eller stängd. Stängda portar är inte associerade med någon applikation, men kan öppnas när som helst. Portar anses ofiltrerade när de svarar på Nmap-förfrågningar, men Nmap kan inte avgöra om de är öppna eller stängda. Nmap utfärdar kombinationerna öppen|filtrerad och stängd|filtrerad när den inte kan avgöra vilket av dessa två tillstånd som beskriver en port. Den här tabellen kan också ge information om mjukvaruversionen på begäran. När du utför en IP-protokollskanning (-sO), tillhandahåller Nmap information om protokoll som stöds snarare än öppna portar.

Förutom tabellen över viktiga portar kan Nmap ge ytterligare information om mål: lösta DNS-namn, gissningar om operativsystemet som används, enhetstyper och MAC-adresser.

En typisk skanning med Nmap visas i exempel 1. De enda argument som används i det här exemplet är -A , för upptäckt av OS-version, skriptsökning och spårning; -T4 för snabbare utförande; sedan två målvärdar.

Exempel 1: Typiskt skanningsexempel med Nmap

# nmap -A -T4 scanme..org) Intressanta portar på scanme.site (64.13.134.52): (De 1663 portar som skannats men som inte visas nedan är i tillstånd: filtrerade) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.9p1 (protokoll 1.99) 53/tcp öppen domän 70/tcp stängd gopher 80/tcp öppen http Apache httpd 2.0.52 ((Fedora)) 113/tcp stängd auth Enhetstyp: allmänt ändamål Kör: Linux 2.4.X|2.5.X| 2.6.X OS-detaljer: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Intressanta portar på lekplatsen..168.0.40): (De 1659 portarna som skannas men inte visas nedan är i tillstånd: stängda) PORT STATE SERVICE VERSION 135/tcp öppen msrpc Microsoft Windows RPC 139/tcp öppen netbios-ssn 389/tcp öppen ldap? 445/tcp öppna microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp öppna windows-icfw? 1025/tcp öppen msrpc Microsoft Windows RPC 1720/tcp öppen H.323/Q.931 CompTek AquaGateKeeper 5800/tcp öppen vnc-http RealVNC 4.0 (Upplösning 400x250; VNC-port: 59000/VNC öppen) 59000/vcNCn protokoll (VNC) Adress: 00:A0:CC:63:85:4B (Lite-on Communications) Enhetstyp: allmänt bruk Kör: Microsoft Windows NT/2K/XP OS-detaljer: Microsoft Windows XP Pro RC1+ till och med slutlig utgåva Serviceinfo: OS: Windows , Windows XP Nmap klar: 2 IP-adresser (2 värdar upp) skannade på 88,392 sekunder


Den senaste versionen av Nmap kan laddas ner från

För många av oss, vars arbetsuppgifter har varit nära relaterade till informationssäkerhet under åtminstone en tid, har Nmap sedan länge blivit ett välbekant och användbart verktyg. Den är lika oumbärlig som en varm filt en kall vinternatt. Förutom att Nmap är en jävligt effektiv filt.

Nmap är en populär och kraftfull kommandorad, plattformsoberoende nätverkssäkerhetsskanner som kan hjälpa dig att utforska alla nätverk extremt effektivt. Det kan också hjälpa dig att få en överblick över de system som har anslutit till ditt nätverk; du kan använda den för att ta reda på IP-adresserna för alla "live" värdar, skanna öppna portar och tjänster som körs på dessa värdar och mycket, mycket mer.

Utan tvekan är Nmap den mest mångsidiga portskannern som finns tillgänglig idag. Ja, du kan hitta snabbare skannrar, men det finns ingen som är så användbar och helt enkelt oumbärlig för att lösa många, många av dina uppgifter. Och den stora majoriteten av informationssäkerhetsproffs kommer kategoriskt att hålla med om detta uttalande.

Men mycket färre vet att en av de mest intressanta funktionerna i Nmap är möjligheten att använda NSE-skript, vilket kommer att ge ditt favoritverktyg för nätverkssäkerhet ännu mer flexibilitet och effektivitet. Med deras hjälp kan du göra saker som du aldrig skulle förvänta dig av ens en mycket avancerad portskanner som Nmap.

Låt oss ta en närmare titt på NSE-skript och kanske kan deras potential överraska dig positivt.

Med andra ord, utöver standardkontrollen av öppna portar med Nmap-skannern har du genom att använda NSE även möjlighet att få utökad information om de tjänster som körs på den. Så, till exempel, med NSE-skript kan du göra en djupare analys av dina nätverkstjänster och se hur väl de är konfigurerade, vilken information som är tillgänglig, om svaga referenser används, etc. Faktum är att NSE-skript gör Nmap till en flexibel plattform för interaktion med nätverkstjänster.

Nmap Scripting Engine Skriptfunktioner

Utvecklingsteamet för Nmap-portskannern skapade och skapade en skriptmotor främst för att lösa problem som:

1. Nätverksforskning

Detta är det huvudsakliga praktiska användningsområdet för Nmap. Vissa skript är utformade för att underlätta, optimera och påskynda arbetet med din favoritportskanner. Några exempel på deras användning inkluderar att utföra uppgifter som:

  • sökning efter WHOIS-data (nätverksprotokoll för applikationslager baserat på TCP-protokollet; dess huvudsakliga tillämpning är att erhålla registreringsdata i textform om ägare av domännamn, IP-adresser och autonoma system) för motsvarande domäner;
  • skicka förfrågningar till de viktigaste regionala WHOIS-servrarna ARIN (Nordamerika), RIPE (Europa och Mellanöstern) eller APNIC (Asien och Stillahavsområdet) för att fastställa ägaren till en specifik IP-adress;
  • identd-sökning på öppna portar (låter dig identifiera användare som är anslutna till dem);
  • göra förfrågningar via SNMP-protokollet (Internetprotokoll för hantering av enheter i IP-nätverk baserat på TCP/UDP-arkitekturer);
  • sammanställa listor över tillgängliga resurser och tjänster via nätverksprotokoll för fjärråtkomst NFS, SMB eller RPC.

2. Ett mer sofistikerat versionsdetekteringsalternativ

Nmaps versionshanteringssystem för tjänster och applikationer kan känna igen tusentals olika tjänster med hjälp av sönder och signaturmatchning för reguljära uttryck, men det är inte allsmäktigt. Till exempel kräver identifiering av Skype v2-tjänsten två prober som arbetar oberoende av varandra, vars versionsdetekteringsmöjligheter inte är särskilt flexibla. Nmap kan också känna igen vissa SNMP-tjänster om den försöker brutalt tvinga igenom flera hundra gemenskapsnamn. Båda ovanstående uppgifter är inte särskilt bekväma att använda standardmetoder för att bestämma Nmap-versioner, men båda är lätta att utföra med NSE. Av denna anledning anropar versionssystemet nu NSE som standard för att lösa versionsproblemet vid bearbetning av vissa komplexa tjänster.

3. Sök efter sårbarheter

När en ny sårbarhet upptäcks blir den allmänt känd, och nätverkssäkerhetsproffs måste snabbt skanna sina nätverk för att snabbt identifiera sårbara system innan skurkarna gör det åt dem. Även om Nmap inte är en fullfjädrad sårbarhetsscanner, tillåter NSE:s kraftfulla kapacitet att utföra sårbarhetskontroller även med mycket stränga krav. Till exempel, när Heartbleed-buggen i OpenSSL-krypteringsprogramvaran äventyrade hundratusentals system runt om i världen, svarade Nmap-utvecklarna genom att skriva ett ssl-heartbleed-detekteringsskript inom två dagar.

4. Bakdörrsdetektering

Många cyberattackare, såväl som vissa automatiserade maskar, lämnar bakdörrar för att ge en bakdörr i framtiden för att enkelt penetrera ditt system. Vissa av dessa bakdörrar kan upptäckas med hjälp av standarddetektering av Nmap-version baserad på signaturmatchning av reguljära uttryck, men många mer komplexa maskar och bakdörrar kräver avancerade NSE-funktioner för att detektera dem på ett tillförlitligt sätt. I synnerhet används NSE för att upptäcka DoublePulsar-bakdörren, som utnyttjar en sårbarhet i implementeringen av SMB-protokollet, bakdörrsversioner för UnrealIRCd IRC-servern, såväl som vsftpd- och ProFTPd-FTP-servrarna.

5. Upptäckt av sårbarheter

Implementerat i ett allmänt skriptspråk, kan NSE till och med användas för att skapa utnyttjar som kan hjälpa dig att upptäcka sårbarheter innan deras existens är känd för allmänheten. Denna möjlighet att lägga till anpassade skriptade exploateringar kan vara extremt användbar för vissa människor (främst penetrationstestare). NSE är dock fortfarande inte en fullfjädrad plattform för att skapa signaturer och utnyttjar, som Metasploit.

Vilka är kategorierna av NSE-skript?

Det finns för närvarande 598 NSE-skript, som du kan hitta i mappen "scripts", en underkatalog till Nmap-huvudkatalogen. För bättre prestanda indexeras alla skript i databasen "scripts/script.db", som anger vilken eller vilka kategorier varje script tillhör.

Beroende på den avsedda applikationen, samt för att förenkla deras användning, grupperas NSE-skript i olika kategorier. För närvarande är följande kategorier av NSE-skript definierade: auth, broadcast, brute, default. upptäckt, dos, exploit, extern, fuzzer, intrusive, malware, safe, version och vuln (kategorinamn är inte skiftlägeskänsliga). Nedan finns en mer detaljerad representation av varje kategori:

  • auth- Denna kategori av skript behandlar (eller kringgår) autentiseringsuppgifter på målsystemet. Exempel på sådana skript är "x11-access", "ftp-anon" och "oracle-enum-users". Observera att skript som använder en brute force attack för att försöka fastställa referenser kategoriseras som brute.
  • utsända— skript i denna kategori används vanligtvis för att upptäcka värdar som inte är specificerade på kommandoraden genom bredkanalsinteraktion med det lokala nätverket. När de använder skriptargumentet "newtargets", kommer de automatiskt att lägga till värdarna de upptäcker i skanningskön.
  • djurisk- Denna kategori av skript används för att utföra brute force-attacker för att erhålla autentiseringsuppgifterna för en fjärrserver. Nmap erbjuder brute force-attackskript för dussintals protokoll. Dessa inkluderar följande skript: "http-brute", "oracle-brute", "snmp-brute", etc.
  • standard— denna kategori av skript definierar de skript som väljs ut av Nmap-utvecklare som användbara för att utöka funktionaliteten hos skannern eller optimera dess funktion, och som är tilldelade "standard"-basuppsättningen. De körs genom att använda alternativen "-sC" eller "-A", snarare än genom att specificera en specifik lista med skript via alternativet "--script". Det är möjligt att uttryckligen specificera denna kategori av skript, precis som de andra, med "--script=default". Nmap-teamet försöker förlita sig på följande krav när de avgör om ett visst skript ska kategoriseras som standard:
    • fart— skanning bör slutföras snabbt som standard, vilket utesluter inkluderingen i denna kategori av brute force-autentiseringsknäckare, webbspindlar och alla andra skript vars skanningstid för en tjänst beräknas i minuter eller till och med timmar.
    • verktyg— Att skanna standardkategorin kräver att man skaffar värdefull och relevant information. Med andra ord, resultatet av att skanna ett sådant skript bör vara förståeligt och användbart för den genomsnittliga nätverkssäkerhetsproffs. Annars är det ingen mening att köra det som standard.
    • korthet— Utdata från den mottagna informationen från Nmap-skannern används för en mängd olika ändamål och behov, så denna information bör vara läsbar och koncis. Skript som ofta skapar flera sidor med full utdata av all mottagen information hör inte heller hemma i standardskriptkategorin. Med andra ord, NSE-skript som klassificeras som standard, när de inte hittar någon viktig information, visar ingenting i rapporten. Detta gäller standardskript som letar efter dolda sårbarheter - de matar bara ut resultat när de upptäcker dessa sårbarheter.
    • pålitlighet— Många skript i deras arbete kan förlita sig på data från heuristisk analys och suddig matchning av signaturer för att dra vissa slutsatser om målvärden eller -tjänsten. Exempel på sådana skript är "sniffer-detect" och "sql-injection". Sådana skript kommer inte att kategoriseras som standard, eftersom resultaten av deras arbete ofta är felaktiga och kan vilseleda en användare som inte tydligt förstår alla detaljer i deras arbete.
    • diskreta— Vissa skript kan vara alltför påträngande när de använder betydande resurser från fjärrsystemet, vilket kan leda till att detta system eller tjänst misslyckas, eller så kan deras handlingar av fjärradministratörer betraktas som en attack. Sådana skript ingår inte heller i standardkategorin. Men vissa "måttligt aggressiva" skript klassificerades fortfarande av Nmap-teamet som standard, baserat på deras användbarhet och hur korrekt de kan bete sig, med hänsyn till andra faktorer.
    • sekretess— Många skript kan avslöja konfidentiell information till tredje part, baserat på de mycket specifika detaljerna i deras arbete. Till exempel måste skript för att slå upp WHOIS-data rapportera mål-IP-adressen till regionala registrarer. Med andra ord, i kategorin NSE standardskript försöker Nmap-teamet att inte lägga till skript som kan bryta mot konfidentialitet.
  • upptäckt- Denna kategori av skript försöker aktivt lära sig mer om nätverket genom att skicka offentliga förfrågningar till registratorn, SNMP-aktiverade enheter, katalogtjänster, etc. Exempel på sådana skript är "html-title" (får titeln på rotsökvägen till webbplatser), "smb-enum-shares" (listar Windows-resurser) och "snmp-sysdescr" (hämtar detaljerad systeminformation via Internet Standard Protocol för SNMP-enhetshantering).
  • dos— skript i den här kategorin bör användas med yttersta försiktighet, eftersom de kan leda till denial of service. De används ibland av säkerhetstestare för att testa ett systems sårbarhet för denial-of-service-attacker, men sådana tester kan ha oönskade bieffekter, som att vissa sårbara tjänster misslyckas.
  • utnyttja— Dessa skript syftar till att aktivt utnyttja en specifik sårbarhet. Exempel på denna kategori av skript är "jdwp-exec" och "http-shellshock".
  • extern— skript i denna kategori kan skicka data till tredje part som kontrollerar databaser eller andra nätverksresurser. Ett exempel på ett sådant skript är "whois-ip", som ansluter till WHOIS-servrar för att få information om målets IP-adress. Det är alltid möjligt att tredjepartsdatabasoperatörer kommer att registrera allt du skickar till dem, vilket i många fall kommer att innehålla information om din IP-adress och ditt måls IP-adress. De flesta skript som enbart handlar om trafik mellan skanningsdatorn och klienten faller inte i denna kategori.
  • fuzzerär en kategori av skript som är designad för att skicka oväntade eller randomiserade fält till serverprogramvaran i varje paket. Även om den här metoden kan vara användbar för att hitta okända buggar och sårbarheter i programvara, är det en långsam process som också använder nätverksbandbredd. Ett exempel på skript i den här kategorin är "dns-fuzz", som bombarderar en DNS-server med delvis modifierade domänfrågor tills servern kraschar eller en användarinställd tidsgräns löper ut.
  • påträngande— denna kategori av skript inkluderar de som inte kan klassificeras som säkra, eftersom riskerna är för stora för att målsystemet kommer att kollapsa under deras tryck, kräver betydande resurser på målvärden (till exempel bandbredd eller CPU-tid) eller på annat sätt, deras exekvering kommer att uppfattas av administratörer av målsystemet som skadlig aktivitet. Exempel på sådana skript är "http-open-proxy" (som försöker använda målservern som en HTTP-proxy) och "snmp-brute" (som försöker gissa den så kallade "community-strängen" för SNMP-enheter genom att skicka dem populära värden som offentliga, privata och cisco). Om skriptet inte tillhör kategorin specialversion ska det klassificeras som säkert eller påträngande.
  • skadlig programvara— dessa skript kontrollerar om målplattformen är infekterad med skadlig programvara eller bakdörrar. Exempel på skript i denna kategori av skript är "smtp-strangeport", som övervakar SMTP-servrar som körs på ovanliga portnummer, och "auth-spoof", som upptäcker förfalskade identd-demoner (implementerar stöd för användarautentiseringsprotokoll) som ger ett falskt svar ännu innan du tar emot begäran. I både det första och andra exemplet är sådant beteende, om det upptäcks, vanligtvis ett tecken på att systemet är infekterat med skadlig programvara.
  • säker— Alla skript som inte skapats för att orsaka tjänstefel, använda stora mängder nätverksbandbredd eller andra resurser och inte syftade till att utnyttja säkerhetshål kategoriseras som säkra. De är mycket mindre benägna att dra till sig uppmärksamhet från fjärradministratörer, även om det (som med alla andra Nmap-funktioner) inte är hundra procent garanterat att de aldrig kommer att dra till sig uppmärksamheten från fjärradministratörer. De flesta av dessa skript utför uppgifter relaterade till allmän nätverksutforskning. Exempel på skript i denna kategori är "ssh-hostkey" (får värdens SSH-nyckel) och "html-title" (hämtar titeln från en webbsida). Skript från versionskategorin kategoriseras inte som säkra, men andra skript som inte är säkra ska definieras som påträngande.
  • version- Skript från denna specialkategori är en förlängning av versionsdetekteringsfunktionen och kan inte väljas explicit. De väljs att köras endast när du uppmanas att bestämma Nmap-versionen ("-sV"). Deras utdata kan inte separeras från utdata från versionsfunktionen, och de fungerar inte som värd- eller tjänsteskript. Exempel på sådana skript är "skypev2-version", "pptp-version" och "iax2-version".
  • vuln— skript i den här kategorin kontrollerar förekomsten av en specifik känd sårbarhet och producerar vanligtvis endast de resultat som bekräftar att en sådan sårbarhet har hittats. Exempel på sådana skript är "realvnc-auth-bypass" och "afp-path-vuln".

Skript, beroende på deras funktionella fokus, såväl som skanningsfasen under vilken de exekveras, är indelade i fyra typer (vissa skript kan stödja flera typer av operationer samtidigt):

  • Förhandsskript - Dessa typer av skript körs innan några Nmap-operationer inträffar, vilket innebär att de körs före skanningsfasen, när Nmap ännu inte har samlat in någon information om målet. Dessa skript kan vara användbara för att utföra uppgifter som är oberoende av specifika skanningsmål, som att göra sändningsförfrågningar för att polla DHCP- och DNS SD-servrar. Vissa av dessa skript kan skapa nya mål för Nmap-skanning (endast om du anger NSE-argumentet "newtargets"). Så, till exempel, "dns-zone-transfer"-skriptet kan få en lista över IP-adresser i en domän med hjälp av en zonöverföringsbegäran och sedan automatiskt lägga till dem i listan över Nmap-skanningsmål. Skript av typen Prerule-skript identifieras med hjälp av prerule-funktionen.
  • Värdskript - Dessa skript körs under den vanliga Nmap-skanningsprocessen, efter att Nmap-skannern har utfört normala operationer som värdupptäckt, portskanning, versionsdetektering och OS-upptäckt på målvärden. Denna typ av skript anropas en gång för varje målvärd som matchar dess värdregelfunktion. Exempel inkluderar skripten "whois-ip", som letar upp ägarinformation för en mål-IP-adress, och "path-mtu", som försöker fastställa den maximala storleken på ett IP-paket som kan nå målet utan att behöva fragmentera.
  • Tjänsteskript – Denna typ av skript körs när vissa tjänster upptäcks på målvärden. Till exempel innehåller Nmap mer än 15 http-tjänstskript som lanseras för att fungera med webbservrar. Om värden har webbservrar som körs på flera portar, kan dessa skript köras flera gånger (en för varje port). Dessa är den vanligaste typen av skript i Nmap, och de skiljer sig åt genom att de innehåller en portrulfunktion för att avgöra vilken av de upptäckta tjänsterna skriptet ska köras mot.
  • Postregel-skript - Dessa typer av skript körs en gång, efter att Nmap har skannat alla avsedda mål. De kan vara användbara för att formatera och presentera utdata av information som erhålls av Nmap-skannern. Till exempel är skriptet "ssh-hostkey" mer känt som ett tjänsteskript (med portrulfunktionen) som ansluter till SSH-servrar, upptäcker deras publika nycklar och skriver ut dem. Men det inkluderar också postregelfunktionalitet, som kontrollerar om det finns dubbletter av nycklar bland alla kontrollerade värdar och sedan skriver ut alla de hittade. Ett annat potentiellt exempel på användningen av skript av denna typ är omvänd utskrift av utdata från Nmap-skannern - till exempel listar alla värdar som en viss tjänst körs på, snarare än den vanliga listningen av alla värdar med tjänster som körs på dem. Postrule-skript identifieras med hjälp av postrule-funktionen.

Notera: Många skript kan köras antingen som ett prerule-skript eller ett postrule-skript. I dessa fall rekommenderas det att använda prerulens funktionalitet för att undvika inkonsekvens.

Evig paranoid, Anton Kochukov.


Se även: