„Hacker Geek“ OS pirštų atspaudai su TTL ir TCP langų dydžiais
Ar žinojote, kad galite sužinoti, kuri operacinė sistema veikia tik tada, kai ji veikia tinkle? Pažvelkime, kaip galime atrasti, kokią operacinę sistemą veikia mūsų įrenginiai.
Kodėl tai padarytumėte?
Nustatyti, kokia OS arba įrenginio operacinė sistema veikia, gali būti naudinga daugeliu priežasčių. Pirma leidžia pažvelgti į kasdienę perspektyvą, įsivaizduokite, kad norite pereiti prie naujo IPT, kuris siūlo neribotą internetą už $ 50 per mėnesį, kad galėtumėte išbandyti savo paslaugą. Naudodami OS pirštų atspaudus greitai pamatysite, kad jie turi šiukšlių maršrutizatorių ir siūlo PPPoE paslaugą, siūlomą „Windows Server 2003“ kompiuteriuose. Nėra taip gerai, kaip?
Kitas naudojimas, nors ir ne toks etiškas, yra tai, kad saugumo skylės yra specifinės OS. Pvz., Atidarote prievado nuskaitymą ir atidarykite 53 prievadą, o įrenginys veikia pasenusioje ir pažeidžiamoje „Bind“ versijoje, turite vienodą galimybę išnaudoti saugos skylę, nes nepavykęs bandymas sudužo demoną.
Kaip veikia OS pirštų atspaudų kūrimas?
Atliekant pasyvią dabartinės eismo analizę ar net ieškant senų paketų užfiksavimo, vienas iš paprasčiausių, veiksmingiausių būdų OS pirštų atspaudams atlikti yra tiesiog pažvelgti į TCP lango dydį ir „Time to Live“ (TTL) pirmosios paketą TCP sesijoje.
Čia pateikiamos populiaresnių operacinių sistemų vertės:
Operacinė sistema | Laikas gyventi | TCP lango dydis |
Linux (branduolys 2.4 ir 2.6) | 64 | 5840 |
„Google Linux“ | 64 | 5720 |
FreeBSD | 64 | 65535 |
Windows XP | 128 | 65535 |
„Windows Vista“ ir 7 („Server 2008“) | 128 | 8192 |
„iOS 12.4“ („Cisco“ maršrutizatoriai) | 255 | 4128 |
Pagrindinė priežastis, dėl kurios operacinės sistemos turi skirtingas vertes, yra dėl to, kad TCP / IP RFC nenustato numatytųjų reikšmių. Kitas svarbus dalykas, kurį reikia atsiminti, yra tai, kad TTL vertė ne visada atitiks vieną lentelės vertę, net jei jūsų įrenginyje veikia viena iš išvardytų operacinių sistemų, pamatysite, kai siunčiate IP paketą per tinklą siunčiančiojo įrenginio operacinė sistema nustato TTL pagal numatytąjį TTL tam OS, tačiau, paketui keliaujant maršrutizatoriais, TTL sumažinamas 1. Todėl, jei matote 117 TTL, galima tikėtis, kad jis bus paketas, kuris buvo išsiųstas 128 ir TTL prieš sulaikydamas per 11 maršrutizatorių.
Naudojant tshark.exe yra paprasčiausias būdas matyti vertes, kad po paketų surinkimo įsitikinkite, kad įdiegta „Wireshark“, tada eikite į:
C: Programos failai
Dabar laikykite perjungimo mygtuką ir dešiniuoju pelės klavišu spustelėkite wireshark aplanką ir iš kontekstinio meniu pasirinkite atidarytą komandų langą
Dabar įveskite:
tshark -r "C: Vartotojai Taylor Gibb Darbalaukis blah.pcap" "tcp.flags.syn eq 1" -T laukai -e ip.src -e ip.ttl -e tcp.window_size
Įsitikinkite, kad pakeisite „C: Vartotojai Taylor Gibb Darbalaukis blah.pcap“ su absoliučiu keliu į jūsų paketų surinkimą. Kai paspausite „Enter“, jums bus rodomi visi SYN paketai, kurie bus lengviau perskaityti
Dabar tai yra atsitiktinis paketų surinkimas, kurį aš padariau iš manęs prisijungdamas prie „How-To Geek“ svetainės, tarp visų kitų „Windows“ pokalbių, galiu pasakyti jums du dalykus:
- Mano vietinis tinklas yra 192.168.0.0/24
- Aš esu „Windows 7“ laukelyje
Jei pažvelgsite į pirmąją lentelės eilutę, pamatysite, kad nemeluoju, mano IP adresas yra 192.168.0.84 mano TTL yra 128 ir mano TCP lango dydis yra 8192, kuris atitinka Windows 7 reikšmes.
Kitas dalykas, kurį matau, yra 74.125.233.24 adresas su 44 TTL ir 5720 TCP lango dydžiu, jei žiūriu į savo stalą, nėra OS su 44 TTL, tačiau ji sako, kad „Linux“ „Google“ serveriai paleisti turi TCP lango dydį 5720. Atlikę sparčią interneto paieškos IP adresą matysite, kad tai iš tikrųjų yra „Google“ serveris.
Ką dar naudojate tshark.exe, pasakykite mums komentaruose.