Nmap ne visada siunčia tą paketą, kurio, jūsų manymu, paprašėte. Kai neapdoroti lizdai nepasiekiami, jis pakeičia numatytąjį SYN nuskaitymą TCP connect nuskaitymu, todėl paleidimas kaip paprastas naudotojas ir paleidimas su sudo gali atsakyti į skirtingus klausimus apie tą patį portą. Rezultatai atrodo kaip teisių problema, o paprastai tai yra metodo pakeitimas. Metodo aiškus nurodymas yra vienintelis būdas apskritai palyginti abu paleidimus.

Dvi zondos, vienas portas, skirtingi kodo keliai

SYN nuskaitymas pats sukonstruoja TCP antraštę, išsiunčia ją iš neapdoroto lizdo ir perskaito atsakymą iš tinklo dar prieš branduolio TCP stekui užregistruojant užbaigtą ryšį. Connect nuskaitymas paprašo operacinės sistemos atidaryti įprastą lizdą ir praneša, ką grąžina connect(). Abu gali pavadinti portą atviru, bet tik vienas palieka pusiau atvirą bandymą ir tik vienam taikoma lizdo lygio politika, susieta su siunčiančiu procesu.

Neapdorotam keliui reikia CAP_NET_RAW, todėl numatytasis nuskaitymas tyliai prastėja, kai šios galimybės nėra. Nmap nuskaitymo technikų žinynas dokumentuoja šį pakeitimą: connect nuskaitymas yra atsarginis, nes jam visiškai nereikia jokių specialių teisių. Pakeitimas įvyksta be įspėjimo daugumoje paleidimų, ir būtent todėl jį taip lengva neteisingai perskaityti. Kai žinote, kad atsarginis variantas egzistuoja, „atviras kaip root, uždarytas kaip naudotojas“ nustoja skambėti kaip teisių klaida ir pradeda skambėti kaip du skirtingi matavimai.

Ką sudo iš tikrųjų pakeičia nuskaityme

Teisių padidinimas atkuria neapdoroto lizdo kelią, ir tai pakeičia daugiau nei nuosprendį. Šaltinio porto pasirinkimas, paketų laikas, pakartotinio siuntimo elgsena ir filtruoto atsakymo klasifikavimo būdas visi ateina iš skirtingo kodo. Tarpinė dėžė, ribojanti SYN dažnį, abu paleidimus vertina nevienodai net tada, kai paskirties mazgas yra identiškas.

Žurnalų rašymas paskirties pusėje taip pat skiriasi. Užbaigtas rankos paspaudimas matomas paslaugai ir bet kokiai lizdų apskaitai, o atstatyta pusiau atvira zonda dažnai ne. Jei lyginate paleidimus su mazgu, kurio žurnalus taip pat skaitote, dalis matomo skirtumo yra pats stebėjimas.

Išlaikykite metodą pastovų abiejuose paleidimuose

Priverskite tą pačią techniką abiejuose iškvietimuose ir palyginimas pradės ką nors reikšti. Vėliavėlė -sT aiškiai prašo connect nuskaitymo, -Pn pašalina mazgų aptikimą, -n pašalina vardų sprendimą, o vienas -p pašalina portų sąrašo skirtumus.

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

Pakeiskite adresą ir portą mazgu, kurį leidžiama testuoti; aukščiau nurodytas dokumentacijos diapazonas yra pavyzdys, o ne taikinys. Jei abu paleidimai dabar sutampa, pradinis skirtumas kilo iš nuskaitymo metodo. Jei jie vis dar nesutampa, kažkas kita klasifikuoja srautą, ir kitame skyriuje reikia ieškoti.

Paskyros kontekstas yra ne tik teisių vėliavėlė

VPN diegimas gali klasifikuoti paketus pagal UID, pagal cgroup arba pagal taisyklę, susietą su procesu, atidariusiu lizdą. Tada root ir naudotojo srautas išeina per skirtingas maršrutizavimo lenteles arba patenka į skirtingus taisyklių rinkinius, ir jokia nuskaitymo metodo disciplina jų nesutaiko.

Tyrinėkite politiką, o ne teisę. Linux sistemoje nftables tai išreiškia meta skuid, o iptables – savininko atitikmeniu, ir bet kuris iš jų gali nusiųsti vieną UID per tunelį, kol kitas toliau naudoja fizinį numatytąjį maršrutą.

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

Patvirtinkite zondą prieš lygindami rezultatus

Prieš darydami išvadas, įrodykite, kuri zonda veikė. Nmap įvardija techniką savo išvestyje, o --reason prideda įrodymą už kiekvienos būsenos, ir būtent ši dalis pasako, ar rankos paspaudimas tikrai buvo užbaigtas.

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

Du paleidimai, pranešantys tą pačią būseną dėl skirtingų priežasčių, nėra prieštaravimas, o du paleidimai, pranešantys skirtingas būsenas dėl tos pačios priežasties, rodo maršrutizavimą arba politiką, o ne nuskaitymą. Išlaikykite paskirtį, portą, vardų erdvę ir laiką identiškus, tada keiskite po vieną kintamąjį. Paslaugos paleidimas kaip root nėra politikos neatitikimo taisymas; taisymas yra numatytos politikos išreiškimas per paslaugos savininką.

Susiję straipsniai