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, va?
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 Fingerprinting 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 et av de oppførte operativsystemene, ser du når du sender en IP-pakke over nettverket, sendingsenhetens operativsystem setter TTL til standard TTL for det operativsystemet, men når pakken krysser 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:Program Files
Hold nede skift-knappen og høyreklikk på wireshark-mappen og velg åpent kommandovindu her fra kontekstmenyen
tshark -r 'C:UsersTaylor GibbDesktoplah.pcap' 'tcp.flags.syn eq 1' -T fields -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
- 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-vindustørrelse 5720. Etter å ha gjort et raskt websøk av IP-adressen, ser du at det faktisk er en Google Server.