Hacker Geek OS Fingeravtrykk med TTL og TCP Window størrelser
Visste du at du kan finne ut hvilket operativsystem en nettverksmaskin kjører bare ved å se på hvordan den kommuniserer på nettverket? La oss ta en titt på hvordan vi kan finne ut hvilket operativsystem våre enheter kjører.
Hvorfor ville du gjøre dette?
Å avgjøre hvilket operativsystem en maskin eller en enhet kjører kan være nyttig av mange grunner. Først kan vi se på et dagligdagsperspektiv, forestill deg at du vil bytte til en ny Internett-leverandør som tilbyr ubegrenset internett for $ 50 i måneden, slik at du tar en prøve på tjenesten deres. Ved å bruke OS fingeravtrykk vil du snart oppdage at de har søppelruter og tilbyr en PPPoE-tjeneste som tilbys på en rekke Windows Server 2003-maskiner. Høres ikke ut som en god avtale lenger, huh?
En annen bruk for dette, om enn ikke så etisk, er det faktum at sikkerhetshullene er OS-spesifikke. For eksempel gjør du en portskanning og finner port 53 åpen og maskinen kjører en utdatert og sårbar versjon av Bind, du har en SINGLE sjanse til å utnytte sikkerhetshullet siden et mislykket forsøk ville krasje demonen.
Hvordan virker OS fingeravtrykk?
Når du gjør passiv analyse av nåværende trafikk eller ser på gamle pakkefangster, er en av de enkleste og mest effektive måtene å gjøre OS Fingeravtrykk ved å bare se på TCP-vinduets størrelse og Time To Live (TTL) i IP-headeren til den første pakke i en TCP-økt.
Her er verdiene for de mer populære operativsystemene:
Operativsystem | Tid til å leve | TCP Window Size |
Linux (Kernel 2.4 og 2.6) | 64 | 5840 |
Google Linux | 64 | 5720 |
FreeBSD | 64 | 65535 |
Windows XP | 128 | 65535 |
Windows Vista og 7 (Server 2008) | 128 | 8192 |
iOS 12.4 (Cisco Routers) | 255 | 4128 |
Hovedårsaken til at operativsystemene har forskjellige verdier skyldes at RFCs for TCP / IP ikke fastsetter standardverdier. En annen viktig ting å huske er at TTL-verdien ikke alltid samsvarer med en i tabellen, selv om enheten kjører ett av de angitte operativsystemene, ser du når du sender en IP-pakke over nettverket, senderens operativsystem setter TTL til standard TTL for det operativsystemet, men når pakken går gjennom rutere, senkes TTL med 1. Derfor, hvis du ser en TTL på 117, kan dette forventes å være en pakke som ble sendt med en TTL på 128 og har traversert 11 rutere før de ble fanget.
Bruke tshark.exe er den enkleste måten å se verdiene på, så når du har fått en pakkeopptak, må du sørge for at Wireshark er installert, og deretter navigere til:
C: \ Programfiler \
Hold nede skift-knappen og høyreklikk på wireshark-mappen og velg åpent kommandovindu her fra hurtigmenyen
Skriv nå:
tshark -r "C: \ Brukere \ Taylor Gibb \ Desktop \ blah.pcap" "tcp.flags.syn eq 1" -T felt -e ip.src -e ip.ttl -e tcp.window_size
Pass på at du erstatter "C: \ Users \ Taylor Gibb \ Desktop \ blah.pcap" med den absolutte banen til pakkeopptaket. Når du har tastet inn, vil du bli vist alle SYN-pakker fra opptaket ditt, en lettere å lese tabellformat
Nå er dette en tilfeldig pakkeopptak jeg laget av meg som koblet til How-To Geek-websiden, blant alle de andre snakkene som Windows gjør, jeg kan fortelle deg to ting sikkert:
- Mitt lokale nettverk er 192.168.0.0/24
- Jeg er på en Windows 7-boks
Hvis du ser på den første linjen i tabellen, vil du se at jeg ikke lyver, min IP-adresse er 192.168.0.84 min TTL er 128 og min TCP Window Size er 8192, som matcher opp til verdiene for Windows 7.
Den neste tingen jeg ser er en 74.125.233.24 adresse med en TTL på 44 og en TCP Window Size på 5720, hvis jeg ser på bordet mitt, er det ikke noe OS med en TTL på 44, men det sier at Linux som Googles servere kjøre har en TCP Window Size 5720. Etter å ha gjort et raskt websøk av IP-adressen vil du se at det faktisk er en Google Server.
Hva annet bruker du tshark.exe for, fortell oss i kommentarene.