Nmap Hjälpguide (Man Page). Så här använder du Nmap för att skanna ditt nätverks Nmap-skript

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, såväl som 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 problem. Och de allra flesta proffs på området informationssäkerhet håller kategoriskt med om detta påstående.

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. NSE-skript gör faktiskt 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 genom nätverksprotokoll för Fjärranslutning 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 standard Nmap-versionering baserad på signaturmatchning av reguljära uttryck, men många mer komplexa maskar och bakdörrar kräver avancerade NSE-funktioner för att pålitligt kunna upptäcka. 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 från denna kategori används vanligtvis för att upptäcka värdar som inte är listade i kommandorad, genom bredkanalsinteraktion med lokalt nätverk. 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 skannerns funktionalitet eller optimera dess funktion, och klassificeras som grunduppsättning"standard". 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 kategoriseras som standard när de inte hittar några viktig information, rapporten visar ingenting. 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 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 denna kategori 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 sökning okända fel och mjukvarusårbarheter är detta en långsam process som också intensivt 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 versionsfunktionens utdata 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 lanseras under standardprocess Nmap-skanning, efter att Nmap-skannern har utfört normala operationer som värdupptäckt, portskanning, versionsdetektering och OS-detektering 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 – Den här typen 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" bättre känt som ett tjänsteskript (med en specificerad portrulfunktion) som ansluter till SSH-servrar, upptäcker dem offentliga 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å att använda skript av denna typär en 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 listan över 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:

  • Upptäckt av tjänster och deras versioner
  • OS-definition
  • Alternativ för tids- och produktivitetshantering
  • Olika alternativ
  • Interaktion under körning
  • Exempel
  • Information om Nmap-skript (på engelska):

    Dold för gäster


    Senaste versionen av Nmap-dokumentationen (på engelska):

    Dold för gäster


    Den officiella boken om Nmap från skaparna av Nmap (på engelska):

    Dold för gäster

    Inledning

    nmap - Verktyg för nätverksutforskning och portskanner

    Nmap ("Network Mapper") är ett verktyg med öppen källkod källkod för nätverksutforskning och säkerhetstestning. 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å geniala sätt för att avgöra vilka värdar som finns tillgängliga på 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 dussintals andra egenskaper. . Även om Nmap vanligtvis används för säkerhetstestning, tycker många nätverks- och 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 "tabellen över viktiga portar". 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ågon annan nätverksstörning 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, så de 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-problem öppna|filtrerade och stängda|filtrerade när det inte kan avgöra vilket av dessa två tillstånd som beskriver en port. Den här tabellen kan också ge versionsdetaljer programvara, om så önskas. När du utför en IP-protokollskanning (-sO), tillhandahåller Nmap information om stödda IP-protokoll snarare än öppna portar.

    Förutom tabellen över viktiga portar kan Nmap ge ytterligare information om målen: lösta DNS-namn, gissa vilken port som används operativ system, enhetstyper och MAC-adresser.

    En typisk genomsökning med Nmap visas i exempel 1. De enda argument som används i detta exempel är -A, för att bestämma OS-versionen, skriptsökning och spårning; -T4 för snabbare utförande; sedan två målvärdar.

    Exempel 1. Typiskt exempel skanna med Nmap:

    # nmap -A -T4 scanme.nmap.org lekplats Startar Nmap (https://nmap.org/) Intressanta portar på scanme.nmap.org (64.13.134.52): (De 1663 portarna som skannats men som inte visas nedan är i tillstånd : filtrerad) PORT STATE SERVICE VERSION 22/tcp öppen 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/Device) 113 stängd autentisering typ: 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å playground.nmap.org (192.168.0.40 ): (De 1659 portarna som skannats men som inte visas nedan är i tillståndet: 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: 5900/tcp öppen) 59p vnc VNC(protokoll 3.8) MAC-adress: 00:A0:CC:63:85:4B (Lite-on-kommunikation) Enhetstyp: allmänt bruk Kör: Microsoft Windows NT/2K/XP OS-detaljer: Microsoft Windows XP Pro RC1+ genom slutlig utgivningstjänst Info: OS: Windows, Windows XP Nmap klar: 2 IP-adresser (2 värdar upp) skannade på 88,392 sekunder

    Sammanfattning av alternativ

    Användande:
    nmap [Skanningstyp(er)] [Alternativ] (specificerade_mål)

    BESTÄMNING AV MÅL FÖR SKANNINGEN:

    Kan arbeta med värdnamn, IP-adresser, nätverk, etc.
    Till exempel: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
    -iL<ввести_имя_файла>: Importera från värd-/nätverkslistan
    -iR<количество хостов>: Välj slumpmässiga mål
    -utesluta : Exkludera värdar/nätverk
    –exkludera fil<файл_с_исключениями>: Exkludera lista från filen

    VÄRDDETEKTERING:

    SL: Skanna för att skapa en lista - gör helt enkelt en lista över mål att skanna
    -sn: Ping-skanning - avgör helt enkelt om värden körs
    -Pn: Behandla alla värdar som uppåt - hoppa över värddetektering
    -PS/PA/PU/PY[port_list]: TCP SYN/ACK, UDP eller SCTP ping specificerade värdar
    -PE/PP/PM: Pingning med ICMP-ekoförfrågningar, tidsstämpel och nätmaskförfrågningar
    -PO[protocol_list]: Pingar med IP-protokoll
    -n/-R: Lös aldrig DNS/Lös alltid [standard: ibland]
    –dns-servrar<сервер1[,сервер2],…>: Ställ in dina egna DNS-servrar
    –system-dns: Använd systemets DNS-resolver
    –traceroute: Spåra (spåra sökvägen) till varje värd

    OLIKA SKANNINGSTEKNIKER:

    SS/sT/sA/sW/sM: TCP SYN/använder systemanrop Connect()/ACK/Window/Maimon scan
    -sU: UDP-skanning
    -sN/sF/sX: TCP Null, FIN och Xmas skanningar
    –skanna flaggor<флаги>: Ställ in dina egna TCP-flaggor
    -si<зомби_хост[:порт]>: Inaktiv skanning
    -sY/sZ: SCTP INIT/COOKIE-ECHO scan
    -sO: IP-protokollskanning
    -b : FTP-studsskanning

    DEFINITION AV HAMNAR OCH SKANNINGSORDNING:

    P<диапазон_портов>: Skanna endast specifika portar
    Exempel: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
    -F: Fast Scan – Skanna ett begränsat antal portar
    -r: Skanna portar sekventiellt - randomisera inte portar
    – toppportar<количество_портов>: Skanna<количество_портов>vanligaste portarna
    –port-förhållande<рейтинг>: Skanna portar med en rating högre än<рейтинг>

    DEFINITION AV TJÄNSTER OCH DERAS VERSIONER:

    SV: Utforska öppna portar för att fastställa tjänst/versionsinformation
    –versionsintensitet<уровень>: Ställ in från 0 (lätt) till 9 (prova alla förfrågningar)
    –version-light: Begränsa till de lättaste frågorna (intensitet 2)
    –version-all: Använd varje enskild begäran (intensitet 9)
    –version-trace: Skriv ut detaljerad information om skanningsprocessen (för felsökning)

    SKANNA MED SKRIP:

    SC: motsvarar –script=standardalternativ
    –script= : detta är en kommaseparerad lista över kataloger, skriptfiler eller skriptkategorier
    –script-args=<имя1=значение1,[имя2=значение2,…]>: Skicka argument till skript
    –script-args-file=filnamn: Skicka filargument till NSE-skript
    –script-trace: Skriv ut alla mottagna och skickade data
    –script-updatedb: Uppdatera skriptdatabas
    –script-help= : Visa hjälp om skript. En kommaseparerad lista med skript eller en lista med skriptkategorier.

    OS DEFINITION:

    O: Aktivera OS-detekteringsfunktionen
    –osscan-limit: Använd OS-detektionsfunktionen endast för "lovande" värdar
    –osscan-guess: Gissa OS-detekteringsresultat

    ALTERNATIV FÖR TID- OCH PRODUKTIVITETSHANTERING:

    Alternativ som tar ett argument<время>, anges i millisekunder tills du lägger till "s" (sekunder), "m" (minuter) eller "h" (timmar) till värdet (t.ex. 30m).
    -T<0-5>: Ställ in mall för tidshanteringsinställningar (mer är snabbare)
    –min-hostgroup/max-hostgroup<кол_хостов>: Ställ in gruppstorlek för parallell skanning
    –min-parallellism/max-parallelism<кол_хостов>: Reglerar parallellisering av förfrågningar
    –min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout<время>: Justerar tiden det tar att vänta på svar på en förfrågan.
    –max-försök igen<количество_попыток>: Ställer in det maximala antalet begärande omsändningar
    –värdens timeout<время>: Slutar skanna långsamma mål
    –scan-delay/–max-scan-delay<время>: Justerar fördröjningen mellan förfrågningar
    –min-hastighet<число>: Skicka förfrågningar med en intensitet som inte är mindre än<число>per sekund
    –max-hastighet<число>: Skicka förfrågningar med en intensitet på högst<число>per sekund

    ATT KRINGA BRANDVÄGGAR/IDS:

    F; –mtu<значение>: Fragmentpaket (valfritt med angivet MTU-värde)
    -D<фикт_хост1,фикт_хост2[,ME],…>: Maskeringsskanningar med dummyvärdar
    -S : Ändra källadress
    -e<интерфейс>: Använd specifikt gränssnitt
    -g/–source-port<номер_порта>: Använd det angivna portnumret
    -ombud : Reläanslutningar via HTTP/SOCKS4-proxy
    –datalängd<число>: Lägg till godtyckliga data till skickade paket
    –ip-alternativ<опции>: Skicka ett paket med de angivna ip-alternativen
    –ttl<значение>: Ställ in IP-fältets tid till liv (livstid)
    –spoof-mac : Ställ in din egen MAC-adress
    –badsum: Skicka paket med falska TCP/UDP/SCTP-kontrollsummor

    UTGÅNG AV RESULTAT:

    ON/-oX/-oS/-oG Utdata för normal, XML, s| -oA<базовове_имя_файла>: Använd tre huvudsakliga utdataformat samtidigt
    -v: Öka den verbala nivån (ställ in två gånger eller mer för att öka effekten)
    -d: Öka eller ställ in felsökningsnivån (upp till 9)
    –reason: Visa orsaken till att hamnen är i ett visst tillstånd
    –öppen: Visa endast öppna (eller möjligen öppna) portar
    –packet-trace: Spåra mottagna och överförda paket
    –iflist: Lista gränssnitt och routrar (för felsökning)
    –log-errors: Logga fel/varningar till utdatafilen i normalläge
    –append-output: Lägg till, istället för att skriva över, utdatafiler
    -återuppta<имя_файла>: Fortsätt avbruten skanning
    –stilmall<путь/URL>: Konfigurerar en XSL-formatmall för att konvertera XML-utdata till HTML
    –webxml: Laddar en stilmall från Nmap.Org
    –no-stylesheet: Ta bort XSL-stilmallsdeklaration från XML

    OLIKA ALTERNATIV:

    6: Aktivera IPv6-skanning
    -A: Aktivera OS- och versionsdetektering, skriptad skanning och spårningsfunktioner
    –datadir<имя_директории>: Bestämmer platsen för Nmap-filer
    –send-eth/–send-ip: Använd rå ethernet/IP-lager
    –privileged: Antag att användaren har alla privilegier
    –unprivileged: Antyder att användaren inte har behörighet att använda råa sockets
    -V: Skriv ut versionsnummer
    -h: Visa denna hjälpsida

    INTERAKTIVA KOMMANDON:

    HJÄLP: Fungerar inte med "sudo nmap", så använd "sudo -i"
    Medan du kör kan du fråga nmap med följande nycklar:
    ? Visa denna information
    v/V öka/minska verbaliteten
    d/D öka/minska felsökning
    p/P aktivera/avaktivera paketspårning
    och andra nycklar som kommer att skrivas ut i statusen

    EXEMPEL:
    Fastställande av skanningsmålet

    På kommandoraden Nmap behandlas allt som inte är ett alternativ (eller ett alternativargument) som ett skanningsmål. I det enklaste fallet används IP-adressen eller nätverksnamnet för målmaskinen för skanning.

    Ibland är det nödvändigt att skanna ett helt nätverk. För att uppnå detta stöder Nmap CIDR-adressering. Du kan lägga till /<кол-во бит>till en IP-adress eller nätverksnamn och Nmap kommer att skanna varje IP-adress som den första<кол-во бит>samma som för den angivna värden. Till exempel kommer 192.168.10.0/24 att skanna 256 värdar mellan 192.168.10.0 (binärt: 11000000 10101000 00001010 00000000) och 192.168.10.01010101010100000000 0001010 11111111) inklusive. 192.168.10.40/24 kommer att göra exakt samma sak. Genom att veta att IP-adressen för scanme.nmap.org är 64.13.134.52 kommer en post som scanme.nmap.org/16 att skanna 65 536 IP-adresser mellan 64.13.0.0 och 64.13.255.255. Det minsta acceptabla värdet är /0, vid vilket hela Internet kommer att skannas. Det högsta värdet är /32, där endast den angivna värden eller IP-adressen kommer att skannas, eftersom alla adressbitar är inaktiverade.

    CIDR-notation är kort, men inte alltid tillräckligt flexibel. Du vill till exempel skanna 192.168.0.0/16, men hoppa över alla IP-adresser som slutar på .0 eller .255, eftersom Dessa är vanligtvis sändningsadresser. Nmap kan utföra denna skanning genom att ange intervall i oktetter. Istället för att ange en vanlig IP-adress kan du för varje oktett definiera antingen en kommaseparerad lista med nummer eller ett intervall. Till exempel kommer 192.168.0-255.1-254 att skicka alla adresser i intervallet som slutar på .0 och .255. Områden behöver inte specificeras endast i de sista oktetterna: att skriva 0-255.0-255.13.37 kommer att skanna alla internetadresser som slutar på 13.37. Denna typ av skanning kan vara användbar för att surfa på Internet och olika studier.

    IPv6-adresser kan endast anges i en form som helt motsvarar den korrekta formen för att skriva IPv6-adresser. CIDR och användningen av intervall i oktetter är inte tillämpliga på IPv6-adresser, eftersom de används sällan.

    Du kan skicka olika måldefinitioner på Nmap-kommandoraden, inte nödvändigtvis samma typ. Team nmap scanme.nmap.org 192.168.0.0/16 10.0.0,1,3-7.0-255 kommer att göra vad du förväntar dig.

    Skanningsmål anges vanligtvis på kommandoraden, och det finns olika alternativ för att styra målval:

    IL<имя_файла>(Input från lista)

    Läser mål från<имя_файла>. Även om det är vanligt att skicka in en stor lista över värdar för skanning är det inte bekvämt. Till exempel ger din DHCP-server dig en lista med 10 000 adresser som den använder för närvarande, och du vill skanna den. Eller så kanske du vill skanna alla IP-adresser utom de som tilldelats dem för att upptäcka obehörig användning av statiska IP-adresser. Skapa helt enkelt en lista med värdar för att skanna och skicka filnamnet till Nmap som ett argument till alternativet -iL. Poster i filen kan vara i vilken form som helst som är acceptabel för Nmap (IP-adresser, nätverksnamn, CIDR, IPv6 eller oktettintervall). Varje post måste separeras med ett mellanslag eller fler, tabbtecken eller nyradstecken. Du kan skicka ett bindestreck (-) som ett filnamnsargument om du vill att Nmap ska läsa listan över värdar från standardinmatning snarare än från en fil.

    IR<кол-во хостов>(Väljer slumpmässiga mål)

    För webbskanning eller annan forskning kan du behöva välja mål slumpmässigt. Argument<кол-во хостов>bestämmer hur många IP-adresser som måste genereras. Olämpliga IP-adresser som privata, broadcast- eller icke-lokaliserade adressintervall hoppas över automatiskt. Argument 0 kan skickas för att skanna på obestämd tid. Tänk på att vissa systemadministratörer kanske inte gillar obehörig genomsökning av sina nätverk och kan klaga. Använd detta alternativ på egen risk! Om du känner dig uttråkad en regnig dag, prova nmap -sS -PS80 -iR 0 -p 80 för att skanna slumpmässiga webbservrar.

    -utesluta<хост1>[,<хост2>[,...]] (Uteslut värdar/nätverk)

    Anger en kommaseparerad lista över mål som ska uteslutas från skanning, även om de är en del av det skanningsintervall du anger. Listan som skickas använder standard Nmap-syntax, så den kan innehålla nätverksnamn, CIDR-adressering, oktettintervall, etc. Det här alternativet kan vara användbart om nätverket du vill skanna innehåller servrar eller system som svarar negativt på portskanning, eller undernät som administreras av andra personer.

    –exkludera fil<имя_файла>(Uteslut lista från fil)

    Det här alternativet gör samma sak som –exclude, förutom att målen som ska exkluderas är åtskilda av mellanslag, tabbar eller nyrader<файле>, inte på kommandoraden.

    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.

    Detta program hjälper systemadministratörer mycket snabbt att 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 skickade 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 kommer att ansluta till varje port och fastställa 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 också 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 på 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, andra egenskaper. Ä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-problem öppna|filtrerade och stängda|filtrerade när det 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

    Publikationer om ämnet