Skip to content
On this page

Nmap

Nyní se dostáváme k nástrojům, ohledně kterých se spoustu lidí bude hádat, jelikož existuje spoustu alternativ, a každá má nějákou výhodu. V této kapitole si povíme o jednom z nejznámějších nástrojů na skenování sítě, nmap. Pro ty, kteří si chtějí vyzkoušet více softwaru, můžete zkusit i například rustscan.
Spoustu lidí si také píší vlastní nástroje na skenování sítě, jelikož chtějí vědět co za data posílají aby je cílené systémy nedetekovaly.

Co je to nmap?

Nmap a jiné nástroje na skenování jsou velmi jednoduché, řeknete jim o jaké síti, případně o jakém zařízení chcete znát více informací a on se pokusí najít všechny připojené zařízení a případně nějáké informace o tom jaké porty jsou na nich otevřené a co na nich běží za servis. (port je identifikátor pro to s jakou aplikací na daném zařízení chceme komunikovat)

Výstup nmapu

Nmap scan report for 1.2.3.4
Host is up (0.083s latency).
Not shown: 994 closed tcp ports (conn-refused)
PORT      STATE SERVICE
22/tcp    open  ssh
25/tcp    open  smtp
80/tcp    open  http
443/tcp   open  https
3306/tcp  open  mysql
49152/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 30 seconds

Výše můžete vidět jak vypadá výstup příkazu nmap - sken jednoho zařízení. Pro nás důležitou inforací je zpráva Host is up, podle toho zjistíme zda na dané IP adrese je nějáký zapnutý počítač. Níže je vidět list všech otevřených portů a co za typ servisů na nich s největší pravděpodobností běží. Například na portu 22 běží ssh - protokol na vzdálený shell.

Flagy nmapu

Nmap se snaží být rychlý a zároveň nevzbuzovat moc pozornost, aby si vás sysadmini nevšimli, toto chování však může být upraveno pomocí flagů.

Jedním z nejvíce používaných je -sV neboli version detection. To do výstupu k typu servisu přidá i verzi, pokud je možné ji získat. Příkladem je nginx 1.18.0 (Ubuntu).

Dalším velmi často používaným přepínačem je -p. Jelikož skenovat všechny dostupné porty by trvalo nepřirozeně dlouho, nmap radši skenuje pouze ty nejčastěji používané porty. tento argument vyžaduje ještě argument, ve kterém je rozsah portů, které chceme skenovat. Pokud jako argument předáme pouze jedno číslo portu, bude se skenovat pouze ten, (-p 80) pomocí - můžeme definovat rozsah, (-p 0-1000) 0 a 65535 jsou doplněny automaticky, takže předchozí příklad můžeme zapsat jako -p -1000. Pro skenování všech portů můžeme použít -p -.

Dalším argumentem, který můžeme chtít použít je -O, který zapne skenování operačního systému. Je na to však potřeba administrátorských oprávnění.

V neposlední řadě je také dobré zmínit přepínače -6, který zapne skenování IPv6, což u ctf úloh nemusí být nutné, ale může se hodit při real-world útocích / pentestování, a přepínače -A, takzvaný attack mód, který se snaží sehnat co nejvíce informací a ignoruje že můžete být chyceni.

Příklad použití nmapu

bash
# Pokud chceme najít nějáké zařízení na síti, můžeme použít
nmap 10.5.128.0/24

# Pokud chceme udělat základní sken serveru s vypsáním verzí softwaru
# Nmap si poradí i s hostname
nmap -sV vospel.cz

# Důkladnější sken včetně operačního systému, a všech portů
# doas funguje stejně jako sudo - spustí příkaz jako root.
doas nmap -O -sV -p- 1.1.1.1
doas nmap -A google.com

Well-known ports

Když na serveru spouštíme aplikaci, musíme se rozhodnout na jakém portu poběží, pokud vybereme defaultní port pro daný servis - např. u http je to port 80, uživatelé nemusí doplňovat na jaký port se chtějí připojit - implicitně se nastaví 80. Většinu z těchto well-known portů nmap autokaticky skenuje. List těchto portů můžete najít zde

Shrnutí

  • Pokud nevíme co za zařízení je na naší síti nebo co za programy běží na serveru, můžeme použít nmap a zařízení oskenovat
  • Nmap skenuje jen nejznámější porty, aby ušetřil čas
  • Existují takzvané well known ports, podle kterých můžeme očekávat že např. na portu 22 poběží ssh server