Nmap-ek ez du beti uste duzun paketea bidaltzen. Socket gordinak erabilgarri ez daudenean, lehenetsitako SYN eskaneatzea TCP connect eskaneatzearekin ordezkatzen du, beraz erabiltzaile arrunt gisa egindako exekuzio batek eta sudo pean egindako beste batek portu berari buruzko galdera desberdinak erantzun ditzakete. Emaitzak baimen-arazo baten itxura dute, eta normalean metodo-aldaketa bat dira. Metodoa esplizitu egitea da bi exekuzioak nolabait alderatzeko modu bakarra.

Bi zunda, portu bat, kode-bide desberdinak

SYN eskaneatzeak TCP goiburua bera eraikitzen du, socket gordin batetik bidaltzen du eta erantzuna sareari irakurtzen dio kernelaren TCP pilak inoiz osatutako konexio bat erregistratu aurretik. Connect eskaneatzeak sistema eragileari socket arrunt bat irekitzeko eskatzen dio eta connect()-ek itzultzen duena jakinarazten du. Biek portu bat irekitzat jo dezakete, baina batek bakarrik uzten du saiakera erdi-ireki bat eta batek bakarrik dago bidaltzen duen prozesuari lotutako socket-mailako politikari menpe.

Bide gordinak CAP_NET_RAW behar du, eta horregatik lehenetsitako eskaneatzeak isilpean galera jasaten du gaitasun hori falta denean. Nmap-en eskaneatze-tekniken erreferentziak ordezkapena dokumentatzen du: connect eskaneatzea da erreserba, ez baitu inolako pribilegio berezirik behar. Trukea ohartarazpenik gabe gertatzen da exekuzio gehienetan, eta horrek egiten du hain erraz gaizki irakurtzeko. Erreserba badagoela jakinda, “root gisa irekia, erabiltzaile gisa itxia” ez da jada baimen-errore bat bezala entzuten eta bi neurketa desberdin bezala entzuten hasten da.

Zer aldatzen du sudo-ek eskaneatzean

Pribilegioak igotzeak socket gordinaren bidea berrezartzen du, eta horrek epaia baino gehiago aldatzen du. Iturburuko portuaren hautaketa, paketeen denboraketa, birsorkuntza-jokaera eta erantzun iragazi bat sailkatzeko modua kode desberdinetik datoz. SYN-en tasa mugatzen duen bitarteko gailu batek bi exekuzioak desberdin tratatzen ditu helmugako ostalaria berdina denean ere.

Helmugako aldeko erregistroa ere desberdintzen da. Amaitutako handshake bat zerbitzuarentzat eta socket-kontabilitate ororentzat ikusgai dago, berrezarritako zunda erdi-ireki bat askotan ez den bitartean. Bere erregistroak ere irakurtzen dituzun ostalari baten aurka exekuzioak alderatzen badituzu, ikusten duzun aldearen zati bat behaketa bera da.

Mantendu metodoa konstante bi exekuzioetan

Behartu teknika bera bi deiadlarretan eta alderaketa zerbait esaten hasten da. -sT banderak connect eskaneatzea esplizituki eskatzen du, -Pn-ek ostalariak aurkitzea kentzen du, -n-ek izenen ebazpena kentzen du, eta -p bakar batek portu-zerrendaren desberdintasunak kentzen ditu.

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

Ordezkatu helbidea eta portua probatzeko baimena duzun ostalari batekin; goiko dokumentazio-tartea adibide bat da, ez helburu bat. Bi exekuzioak orain bat badatoz, hasierako aldea eskaneatze-metodotik zetorren. Oraindik bat ez badatoz, beste zerbait ari da trafikoa sailkatzen, eta hurrengo atala da begiratzeko lekua.

Kontuaren testuingurua ez da pribilegio-bandera bat soilik

VPN hedapen batek paketeak UIDaren arabera, cgrouparen arabera edo socketa ireki zuen prozesuari lotutako arau baten arabera sailka ditzake. Orduan root trafikoak eta erabiltzailearen trafikoak bideratze-taula desberdinetatik irteten dira edo arau-multzo desberdinetan jotzen dute, eta eskaneatze-metodoaren diziplinak ezin ditu adiskidetu.

Aztertu politika, ez pribilegioa. Linuxen nftables-ek meta skuid-rekin adierazten du eta iptables-ek jabearen bat-etortzearekin, eta edozeinek UID bakarra bidal dezake tunel batetik behera, besteak bide fisiko lehenetsia erabiltzen jarraitzen duen bitartean.

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

Egiaztatu zunda emaitzak alderatu aurretik

Ondorioak atera aurretik, frogatu zein zunda exekutatu zen. Nmap-ek teknika bere irteeran izendatzen du, eta --reason-ek egoera bakoitzaren atzeko ebidentzia gehitzen du, eta hori da handshake bat benetan osatu zen ala ez esaten dizun zatia.

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

Egoera bera arrazoi desberdinengatik jakinarazten duten bi exekuzio ez dira kontraesana, eta arrazoi beragatik egoera desberdinak jakinarazten dituzten bi exekuzio bideratzeari edo politikari seinalatzen diote, ez eskaneatzeari. Mantendu helmuga, portua, izen-espazioa eta denboraketa berdinak, eta gero aldatu aldagai bat aldiko. Zerbitzua root gisa exekutatzea ez da politika-desadostasunaren konponbidea; konponbidea zerbitzuaren jabearen bidez nahi den politika adieraztea da.

Erlazionatutako artikuluak