Appearance
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