Nmap

NMap er et program, hvilket man kan anvende til at skanne efter åbne porte og svagheder på diverse servere. Af de skanningstyper som bliver vist senere, er det kun “connect”- og “ftp bounce”-scanninger, som kan blive kørt uden at være priviligerede på systemet. Det sidste man bør huske er, at disse typer skanninger, kun kan køres én af gangen, på nær hvis man kører UDP eller TCP scan.

NMap

 Nmaps parametre som bliver brugt i de forskellige system scan:

  • -sS (TCP SYN Scan)
  • -sT (TCP Connect Scan)
  • -sU (UDP Scan)
  • -sN (TCP NULL Scan)
  • -sF (FIN Scan)
  • -sX (Xmas Scan)
  • -sA (TCP ACK Scan)
  • -sO (IP Protokol Scan)

(Notat – kommandolinjen for Nmap lyder: nmap -scantype -instilling -target)

-sS

SYN-scan er som standard en af de mest populære scan – og dette er med god grund; processen er hurtig, scanner uhyre mange porte i sekundet samt agerer hurtigt på et netværk, som ikke er tilsluttet med diverse firewalls. SYN-scan er også en af de mere præcise scan-typer, som kan opdage, hvis en port er åben, lukket, eller i en tilstand, der filtrerer.

Siden en SYN-skanning ikke åbner en fuld TCP-forbindelse er det ofte refereret til som “half open scanning”. Den sender en SYN-pakke som, hvis du ville åbne en rigtig forbindelse til computeren og ellers venter på et svar. Et SYN/ACK indikerer, at porten lytter (åben), mens RST (reset) indikerer én der ikke lytter. Hvis der ikke er noget svar efter flere retransmissioner, bliver porten markeret som filtreret. Derudover vil en port også blive maskeret som filteret, hvis en ICMP “unreachable error” bliver returneret som en respons.

-sT

TCP Connect scan er standard typen af TCP-scan, når en SYN-scan ikke er en mulighed, f.eks. hvis man ikke har root eller admin rettigheder på en computer. Nmap spørger computeren om at etablere en forbindelse til target og port ved at bruge “connect” system kald. Denne type scan er også brugt på netværk med det “nye” IPv6 protokol.

Det bør nævnes, at hvis en SYN-skanning er mulig, brug da denne, eftersom SYN som regel vil give bedre resultater.

Siden Nmap er nødt til at bruge styresystemet ved denne type scan til at oprette forbindelse, kan det have mindre brugbare informationer, end hvis den bruger “rå pakker” til at finde status af port osv. Ergo, -sT scan er mindre effektiv, men kan være en nødvendighed.

Et andet problem kan være med selve “connect”-scannet; at selv “host”-systemet er nødt til at oprette en fuld forbindelse, hvilket også kan give IDS (Intruder Detecting System) lettere ved at finde ud af at et netværk scan er i gang, så “element of surprise” er kompromitteret ved et connect scan!

-sU

Mens de fleste services kører over TCP protokol, er der flere betjeninger, såsom SNMP, DHCP og DNS, med hvilke man kan kommunikere via UDP-protokollen. Nmap er også et godt værktøj til at scanne disse med. UDP er oftes brugt til at udnytte et system med og kan derfor være mindst lige så brugbart som SYN-scan.

Rigtig mange sysadmins har det med at overse effekten af UDP services, hvilket gør at disse som ofte står vidt åbne i diverse netværk. Selvom UDP-scan er langsommere og (til tider) sværere at udføre ordenligt, grundet den måde protokollen er opbygget på, og systemet tager imod brugerens UDP-anmodninger, er de, om ikke andet, mindst lige så vigtige at teste for under et sikkerhedscheck.

-sN -sF -sX

Disse skanninger er en smule mere avancerede, eftersom den enkelte bruger behøver basal viden om TCP-protokollens opsætning for at forstå, hvordan disse skanninger udnytter hullerne i TCP RFC ved åbne og lukkede porte.

Man bliver nødt til at huske, at en TCP-pakke blive tagget med flere forskellige flag og bits. Disse er: Synchronize (SYN), Finish (FIN), Acknowledgement (ACK), Push (PSH), Rest (RST), Urgent (URG).

Med andre ord; TCP RFC bekendtgør at, hvis en bestemt port er lukket, kan en indkommende pakke ikke have en RST (Rest) som svar, hvilket får den til at sende en RST som svar. RFC’en går så ind og bekendtgør, at den udsendte pakke til den åbne port, der er uden SYN, RST, eller ACK, burde blive droppet, og pakken returneres.

Således kan ethvert system, der bruger basic TCP RF sende en pakke afsted, som ikke vil blive brugt som et resultat af den RST der blev sendt, hvis porten var lukket, og intet svar, når porten er åben. På den anden side, så længe ingen af de tre nødvendige bits bliver brugt, kan enhver kombination af bits blive brugt og accepteret (FIN, PSH, URG).

Nmap bruger naturligvis  disse huller og kan sende pakker til et system sammen med andre taktikker: Null scan, sætter ingen bestemt bits (TCP Flag er 0) og FIN scan. Ved f.eks. et Xmas scan, sætter man FIN, PSH, URG flags, som får pakker til at lyse op som et juletræ.

Disse scan reagerer nøjagtig på samme måde, på nær selve TCP-flagget. Nmap vil være i stand til at gætte sig til portens status på de forskellige svar, der bliver givet. Hvis Nmap modtager f.eks. en RST-pakke, så ved den at porten er set som lukket, mens ingen svar ville betyde at porten er åben eller filteret.

Mens det er anset, at nogle af de scan typer er i stand til at komme forbi forskellige typer af firewalls og pakke filtrerende router. Men faktum er, at de fleste router og IDS-systemer i dag er sat op til at kigge efter denne protokol, hvilket vil give en negativ effekt på selve “hemmeligheden” i at man scanner. De typer scan, hvor dette er mest anvendeligt, er primært på *Nix-systemer. Mange operative systemer, så som windows, cisco ios og ibm os/400, sender en rest pakke i svar uanset om porten er åben eller lukket.

En tilføjelse til dette er at de her scan ikke kan fortælle dig om porten er åben eller filteret. For at finde ud af om porten faktisk er åben eller filtreret, er man nødt til at foretage yderlige tests.

-sA

Denne skanningstype er meget anderledes i forhold til andre udgaver, da den ikke anvendes til at se om porten er åben eller lukket, men for at fastslå regelsættet af en eventuel firewall samt finde ud af hvilke regelsæt, der bliver brugt for at filtere porte.

Ved denne scan er det kun ACK bits som bliver set. Så når man scanner u-filterede systemer,  vil åbne og lukkede porte returnere en RST pakke som Nmap vil markere som u-filterede. Dette betyder ikke at den skelner mellem åbne og lukkede porte; enhver port der ikke giver et svar, eller returnerer en ICMP fejlmelding bliver sat som filteret.

-sO

Denne type scan er ikke så typisk, da den faktisk virker ved at opregne de forskellige typer af IP protokoller som systemet understøtter. Protokol scan er meget lig med UDP skanninger. Istedet for at gå igennem port numre felt ved en UDP-pakke, så går den igennem med et otte bit IP protokol felt. I en normal pakke vil disse skanninger principielt virke som normale UDP-varianter.

Istedet for at sende til porten tager den en IP pakke header, og sender den videre igennem en otte bit protokol.

Header‘erne er normale tomme, det vil sige, ingen data, ikke engang en header der siger hvilken protokol den sender. De tre undtagelser er selvfølgelig TCP UDP og ICMP. En ordenlig protokol header for dem der inkluderet i de fleste systemer vil ikke sende dem, og fordi Nmap allerede har funktionen til at lave dem.

I stedet for at se efter ICMP porte som er uopnåelige beskeder, kigger den efter ICMP protokol beskeder. Hvis Nmap modtager et svar, vil det markere den protokol som åben.

En ICMP protokol error (type 3, code2) får en protokol til at blive markeret som lukket, andre ICMP errors får protokollen til at blive markeret som filteren, selvom de måske er åbne)

Hvis der intet svar er efter flere forsøg, bliver protokollen markeret som åben eller filtreret.

Mens de fleste skanningstyper står beskrevet i listen som iblandt de mest effektive, vil værktøjer som Nmap være meget fleksible af natur. For at sikre sig det fulde brug af værktøjet bør man altid blive ved med at lære så meget om det værktøj man nu engang bruger. Og til tider måske spørge efter nye egenskaber for at forbedre værktøjet – hvilket er set flere gange med Nmap.

Ved brug af -O funktionen og specificere en output fil, kan man samle dataen værktøjet giver i en file, som så bliver gemt, eventuelt til senere brug eller rapportering. Den mest normale funktion er -oM som giver outputtet i en maskine læselig format. I tilføjelse til dette kan Nmap også skanne efter specifikke porte som dets system normalt ikke søger efter. Dette kan gøres simpelt ved brug af -p funktionen, som gør brugeren i stand til at definere, hvilke porte der skal skannes.