Hacker Geek OS Fingerprinting med TTL og TCP Window størrelser
Vidste du, at du kan finde ud af, hvilket operativsystem en netværksenhed kører, bare ved at se på, hvordan den kommunikerer på netværket? Lad os se på, hvordan vi kan opdage, hvilket operativsystem vores enheder kører.
Hvorfor ville du gøre dette?
Det kan være nyttigt af mange årsager at afgøre, hvilket operativsystem en maskine eller enhed kører. Lad os først se på et dagligdagsperspektiv, forestil dig, at du vil skifte til en ny internetudbyder, der tilbyder uudnyttet internet for $ 50 om måneden, så du tager en prøve på deres service. Ved at bruge OS-fingeraftryk vil du snart opdage, at de har rubbish-routere og tilbyder en PPPoE-tjeneste, der tilbydes på en flok Windows Server 2003-maskiner. Lyder ikke som en god aftale mere, huh?
En anden brug for dette, omend ikke så etisk, er, at sikkerhedshuller er OS-specifikke. For eksempel gør du en portscanning og finder port 53 åben, og maskinen kører en forældet og sårbar version af Bind, du har en enkelt chance for at udnytte sikkerhedshullet, da et mislykket forsøg ville ødelægge dæmonen.
Hvordan virker OS Fingerprinting Work?
Når du gør passiv analyse af nuværende trafik eller endda kigger på gamle pakkefangster, er en af de nemmeste og mest effektive måder at gøre OS Fingerprinting på ved blot at se TCP vinduesstørrelsen og Time To Live (TTL) i IP-overskriften på den første pakke i en TCP-session.
Her er værdierne for de mere populære operativsystemer:
Operativ system | Tid til at 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årsagen til, at operativsystemerne har forskellige værdier skyldes, at RFC's for TCP / IP ikke fastsætter standardværdier. En anden vigtig ting at huske er, at TTL-værdien ikke altid matcher op til en i tabellen, selvom din enhed kører et af de angivne operativsystemer, kan du se, hvornår du sender en IP-pakke på tværs af netværket afsenderens operativsystem sætter TTL'et til standard TTL for det pågældende operativsystem, men når pakken krydser routere sænkes TTL med 1. Hvis du ser en TTL på 117, kan det derfor forventes at være en pakke, der blev sendt med en TTL på 128 og har traverseret 11 routere før de blev fanget.
Brug af tshark.exe er den nemmeste måde at se værdierne på, så når du har fået en pakketagning, skal du sørge for at installere Wireshark og derefter navigere til:
C: \ Programmer \
Hold nu skift-knappen nede og højreklik på wireshark-mappen og vælg åbent kommandovindue her fra kontekstmenuen
Skriv nu:
tshark -r "C: \ Brugere \ Taylor Gibb \ Desktop \ blah.pcap" "tcp.flags.syn eq 1" -T felter -e ip.src -e ip.ttl -e tcp.window_size
Sørg for at erstatte "C: \ Users \ Taylor Gibb \ Desktop \ blah.pcap" med den absolutte sti til din pakkefangst. Når du har slået ind, vil du få vist alle SYN-pakkerne fra din optagelse, en lettere læselig tabelformat
Nu er dette en tilfældig pakkeopsamling, jeg lavede af mig, der forbinder til How-To Geek-webstedet, blandt alle de andre chatter, Windows gør. Jeg kan fortælle dig to ting sikkert:
- Mit lokale netværk er 192.168.0.0/24
- Jeg er på en Windows 7 boks
Hvis du ser på den første linje 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 op til værdierne for Windows 7.
Den næste ting 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å mit bord, er der ikke noget OS med en TTL på 44, men det siger at Linux, at Googles servere køre har en TCP Window Size 5720. Efter at have gjort en hurtig websøgning af IP-adressen vil du se, at det faktisk er en Google Server.
Hvad mere bruger du tshark.exe til, fortæl os i kommentarerne.