Nmap ne pošlje vedno paketa, za katerega mislite, da ste ga zahtevali. Ko surovi vtiči niso na voljo, nadomesti privzeto skeniranje SYN s skeniranjem TCP connect, zato se izvajanje kot običajen uporabnik in izvajanje pod sudo lahko odzoveta na različna vprašanja o istih vratih. Rezultati so videti kot težava z dovoljenji, običajno pa so sprememba metode. Če metodo izrecno navedete, je to edini način, da oba izvajanja sploh primerjate.

Dve sondi, ena vrata, različne poti kode

Skeniranje SYN samo sestavi glavo TCP, jo pošlje iz surovega vtiča in prebere odgovor z omrežja, preden sklad TCP jedra sploh zabeleži dokončano povezavo. Skeniranje connect prosi operacijski sistem, da odpre običajen vtič, in poroča, kaj vrne connect(). Oba lahko vrata označita kot odprta, a le eno pusti napol odprt poskus in le eno je podvrženo politiki na ravni vtiča, vezani na proces, ki pošilja.

Surova pot potrebuje CAP_NET_RAW, zato se privzeto skeniranje tiho poslabša, ko te zmožnosti ni. Nmapov lastni pregled tehnik skeniranja dokumentira zamenjavo: skeniranje connect je rezerva, ker ne potrebuje nobenih posebnih pravic. Zamenjava se v večini izvajanj zgodi brez opozorila, in prav zato jo je tako lahko napačno prebrati. Ko veste, da rezerva obstaja, »odprto kot root, zaprto kot uporabnik« ne zveni več kot napaka z dovoljenji in začne zveneti kot dve različni meritvi.

Kaj sudo v skeniranju dejansko spremeni

Povišanje pravic obnovi pot surovega vtiča, in to spremeni več kot sodbo. Izbira izvornih vrat, časovni potek paketov, vedenje pri ponovnem pošiljanju in način razvrščanja filtriranega odgovora prihajajo iz drugačne kode. Vmesnik, ki omejuje hitrost SYN, obravnava oba izvajanja neenako, tudi ko je ciljni gostitelj enak.

Tudi beleženje na strani cilja se razlikuje. Dokončano rokovanje je vidno storitvi in vsakemu obračunu vtičev, medtem ko ponastavljena napol odprta sonda pogosto ni. Če izvajanja primerjate pri gostitelju, katerega dnevnike tudi berete, je del razlike, ki jo vidite, samo opazovanje.

Ohranite metodo nespremenjeno v obeh izvajanjih

Vsilite isto tehniko v obeh klicih in primerjava začne nekaj pomeniti. Zastavica -sT izrecno zahteva skeniranje connect, -Pn odstrani odkrivanje gostiteljev, -n odstrani razreševanje imen in en -p odstrani razlike na seznamu vrat.

nmap -sT -Pn -n -p 8443 198.51.100.77
sudo nmap -sT -Pn -n -p 8443 198.51.100.77

Zamenjajte naslov in vrata z gostiteljem, ki ga smete preizkusiti; obseg dokumentacije zgoraj je zgled, ne cilj. Če se izvajanji zdaj ujemata, je prvotna razlika prišla iz metode skeniranja. Če se še vedno ne ujemata, promet razvršča nekaj drugega, in naslednji razdelek je mesto, kjer je treba pogledati.

Kontekst računa ni le zastavica pravic

Namestitev VPN lahko pakete razvrsti po UID, po cgroup ali po pravilu, vezanem na proces, ki je odprl vtič. Potem promet roota in promet uporabnika odhajata skozi različne usmerjevalne tabele ali zadeta na različne nabore pravil, in nobena disciplina metode skeniranja ju ne uskladi.

Preverite politiko, ne pravice. V Linuxu nftables to izrazi z meta skuid in iptables z ujemanjem lastnika, in katero koli od njiju lahko pošlje en UID skozi predor, medtem ko drugo še naprej uporablja fizično privzeto pot.

sudo nft list ruleset | grep -n skuid
sudo iptables-save | grep -n uid-owner
ip rule show
ip route get 198.51.100.77

Pred primerjavo rezultatov potrdite sondo

Preden sklepate, dokažite, katera sonda je tekla. Nmap tehniko poimenuje v lastnem izpisu, --reason pa doda dokaz za vsakim stanjem, in ta del vam pove, ali se je rokovanje res dokončalo.

nmap --reason -sT -Pn -n -p 8443 198.51.100.77
sudo nmap --reason -sS -Pn -n -p 8443 198.51.100.77
getcap "$(command -v nmap)"
capsh --print | grep -i net_raw

Dve izvajanji, ki poročata isto stanje iz različnih razlogov, si ne nasprotujeta, in dve izvajanji, ki poročata različna stanja iz istega razloga, kažeta na usmerjanje ali politiko, ne na skeniranje. Ohranite cilj, vrata, imenski prostor in časovni potek enake, nato spreminjajte eno spremenljivko naenkrat. Zagon storitve kot root ni popravilo za neskladje politike; popravilo je izraziti predvideno politiko prek lastnika storitve.

Sorodni članki