Hacker Geek OS Fingerprinting s TTL i TCP prozor veličine
Jeste li znali da možete saznati koji operacijski sustav mrežni uređaj radi samo gledajući način na koji komunicira na mreži? Pogledajmo kako možemo otkriti koji operacijski sustav naši uređaji rade.
Zašto biste to učinili?
Određivanje OS-a koji uređaj ili uređaj izvodi može biti korisno iz više razloga. Prvo da pogledamo svakodnevnu perspektivu, zamislite da se želite prebaciti na novog ISP-a koji nudi nepovezani internet za 50 USD mjesečno, tako da možete pokušati s njihovom uslugom. Korištenjem OS otiska prsta uskoro ćete otkriti da imaju usmjerivače za smeće i nude PPPoE uslugu koja se nudi na hrpi Windows Server 2003 strojeva. Više ne zvuči tako dobro, ha?
Još jedna upotreba za to, iako ne toliko etička, je činjenica da su sigurnosne rupe specifične za OS. Naprimjer, skeniranje porta i pronalaženje porta 53 otvorenog, a uređaj pokreće zastarjelu i ranjivu verziju Binda, imate SINGLE priliku da iskoristite sigurnosnu rupu jer bi neuspjeli pokušaj srušio demon.
Kako funkcionira OS otisak prsta?
Kada radite pasivnu analizu trenutnog prometa ili čak gledate na stare pakete, jedan od najjednostavnijih, najučinkovitijih načina obavljanja OS Fingerprinting je jednostavno gledanje veličine prozora TCP-a i Time To Live (TTL) u IP zaglavlju prvog paket u TCP sesiji.
Evo vrijednosti za popularnije operacijske sustave:
Operacijski sustav | Vrijeme za život | Veličina prozora TCP-a |
Linux (kernel 2.4 i 2.6) | 64 | 5840 |
Google Linux | 64 | 5720 |
FreeBSD | 64 | 65535 |
Windows XP | 128 | 65535 |
Windows Vista i 7 (Server 2008) | 128 | 8192 |
iOS 12.4 (Cisco usmjerivači) | 255 | 4128 |
Glavni razlog zbog kojeg operativni sustavi imaju različite vrijednosti je činjenica da RFC za TCP / IP ne propisuje zadane vrijednosti. Druga važna stvar koju treba zapamtiti je da se vrijednost TTL-a neće uvijek podudarati s jednom u tablici, čak i ako vaš uređaj pokreće jedan od navedenih operacijskih sustava, vidjet ćete kada šaljete IP paket preko mreže operativni sustav uređaja za slanje postavlja TTL na zadani TTL za taj OS, ali kako paket prelazi usmjerivače, TTL se spušta na 1. Stoga, ako vidite TTL od 117 to se može očekivati da bude paket koji je poslan s TTL od 128 i je prošao 11 usmjerivača prije nego što je uhvaćen.
Korištenje tshark.exe je najlakši način da vidite vrijednosti tako da nakon što dobijete paket, provjerite jeste li instalirali Wireshark, a zatim idite na:
C: Programske datoteke
Sada držite tipku Shift i kliknite desnom tipkom miša na mapu wireshark i ovdje odaberite otvoreni prozor naredbe iz kontekstnog izbornika
Sada upišite:
tshark -r "C: Korisnici Taylor Gibb Desktop" blah.pcap "" tcp.flags.syn eq 1 "-T polja -e ip.src -e ip.ttl -e tcp.window_size
Svakako zamijenite “C: Korisnici Taylor Gibb Desktop blah.pcap” s apsolutnom putanjom do vašeg paketa. Nakon što pritisnete Enter ćete biti prikazani svi SYN paketi iz vašeg snimanja, lakši za čitanje tabličnog formata
Sada je ovo slučajno snimanje paketa koje sam napravio od mene povezujući se s How-To Geek web stranicom, među svim ostalim glasinama koje se tiču Windowsa mogu vam reći dvije stvari:
- Moja lokalna mreža je 192.168.0.0/24
- Ja sam na Windows 7 kutiji
Ako pogledate prvi redak tablice vidjet ćete da ne lažem, moja IP adresa je 192.168.0.84 moj TTL je 128, a moj TCP prozor veličine je 8192, što odgovara vrijednostima za Windows 7.
Sljedeća stvar koju vidim je adresa 74.125.233.24 s TTL-om od 44 i TCP Window Size od 5720, ako pogledam svoju tablicu, nema OS-a s TTL-om od 44, međutim on kaže da je Linux koji Googleovi poslužitelji pokrenite TCP Window Size 5720. Nakon brzog pretraživanja interneta IP adrese vidjet ćete da je to zapravo Googleov poslužitelj.
Što još koristite za tshark.exe, recite nam u komentarima.