Kodėl tu tai darytum?
Nustatant, kokia operacinės sistemos OS ar įrenginys veikia, gali būti naudinga dėl daugelio priežasčių. Pirmiausia leiskite pažvelgti į kasdienę perspektyvą, įsivaizduokite, kad norite pereiti prie naujojo interneto tiekėjo, kuris siūlo neribotą internetą per mėnesį 50 JAV dolerių, kad galėtumėte išbandyti savo paslaugas. Naudodamiesi "OS fingerprinting", jūs netrukus pastebėsite, kad jie turi šiukšlių maršrutizatorių ir siūlo PPPoE paslaugą, siūlomą daugelyje "Windows Server 2003" mašinų. Nejau tarsi toks geras dalykas, ar ne?
Dar vienas, nors ir ne taip etiškas, panaudojimas yra tai, kad saugumo skylės yra konkrečios OS. Pavyzdžiui, atliekate uosto nuskaitymą ir atverkite 53 prievadą ir mašina naudoja pasenusią ir pažeidžiamą "Bind" versiją; jūs turite vienintelę galimybę išnaudoti saugumo skylę, nes nesėkmingas bandymas gali sugadinti demoną.
Kaip veikia "Fingerprinting" sistema?
Atliekant pasyvią dabartinio srauto analizę arba netgi žiūrint į senus paketų fiksavimus, vienas iš paprasčiausių ir veiksmingesnių "OS Fingerprinting" būdų yra tiesiog pažvelgus į TCP lango dydį ir "Time To Live" (TTL) pirmojo IP antraštėje paketą TCP sesijoje.
Štai populiariausių operacinių sistemų vertes:
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, kodėl operacinės sistemos turi skirtingas vertes, yra ta, kad TCP / IP RFC nenustato numatytųjų verčių. Kitas svarbus dalykas, kurį reikia atsiminti, yra tai, kad TTL vertė ne visada atitiks iki lentelėje pateiktą, net jei jūsų įrenginyje veikia viena iš išvardytų operacinių sistemų, matysite, kai siunčiate IP paketą tinkle siunčiančiojo įrenginio operacine sistema nustato TTL į tos OS numatytąjį TTL, tačiau, kadangi paketas perkelia maršrutus, TTL sumažėja iki 1. Taigi, jei matysite TTL 117, tai gali būti paketas, kuris buvo išsiųstas su TTL 128 ir Prieš užfiksuojant, jis persikėlė 11 maršrutizatorių.
Naudojant tshark.exe yra lengviausias būdas pamatyti vertes, taigi, kai jūs gaunate paketų surinkimą, įsitikinkite, kad turite įdiegti "Wireshark", tada eikite į:
C:Program Files
Dabar laikykite pamainos mygtuką ir dešiniuoju pelės klavišu spustelėkite wireshark aplanką ir pasirinkite kontekstinio meniu čia atidarytą komandų langą
tshark -r 'C:UsersTaylor GibbDesktoplah.pcap' 'tcp.flags.syn eq 1' -T fields -e ip.src -e ip.ttl -e tcp.window_size
Būtinai pakeiskite "C: Vartotojai Taylor Gibb Desktop blah.pcap" su absoliučiu keliu jūsų paketų surinkimui. Kai paspausite įvesti, bus rodomas visas SYN paketas iš jūsų užfiksuoti lengviau skaityti lentelės formatą
- Mano vietinis tinklas yra 192.168.0.0/24
- Aš esu "Windows 7" dėžutėje
Jei pažvelgsite į pirmąją lentelės eilutę, pamatysite, kad nemiegau, mano IP adresas yra 192.168.0.84, mano TTL yra 128, o mano TCP lango dydis yra 8192, kuris atitinka iki Windows 7 vertybes.
Kitas dalykas, kurį aš matau, - tai 74.125.233.24 adresas su TTL 44 ir TCP lango dydis 5720, jei žiūrėsiu į mano stalą, nėra OS su TTL 44, tačiau tai sako, kad Linux, kad "Google" serveriai paleiskite TCP lango dydį 5720. Po to, kai atliksite greitą interneto paiešką IP adresu, pamatysite, kad tai iš tikrųjų yra "Google" serveris.