Hacker Geek OS fingeravtryck med TTL och TCP fönsterformat
Visste du att du kan ta reda på vilket operativsystem en nätverksenhet körs genom att bara titta på hur det kommunicerar på nätverket? Låt oss ta en titt på hur vi kan upptäcka vilket operativsystem våra enheter kör.
Varför skulle du göra det här?
Att bestämma vilket operativsystem en maskin eller enhet kör kan vara användbar av många anledningar. Låt oss först titta på ett vardagligt perspektiv, föreställ dig att du vill byta till en ny Internetleverantör som erbjuder oskyddat internet för $ 50 per månad så att du tar prov på sin tjänst. Genom att använda OS fingeravtryck kommer du snart att upptäcka att de har skräprutor och erbjuder en PPPoE-tjänst som erbjuds på en massa Windows Server 2003-maskiner. Låter inte som en bra affär längre, va?
En annan användning för detta, om än inte så etisk, är det faktum att säkerhetshål är OS-specifika. Till exempel gör du en portsökning och hittar port 53 öppen och maskinen kör en föråldrad och sårbar version av Bind, du har en singel chans att utnyttja säkerhetshålet eftersom ett misslyckat försök skulle krascha demonen.
Hur fungerar OS fingeravtryck?
När du gör passiv analys av aktuell trafik eller ens tittar på gamla paketupptagningar, är det enklaste, effektivaste sättet att göra OS Fingerprinting genom att helt enkelt titta på TCP-fönsterstorleken och Time To Live (TTL) i IP-huvudet på den första paket i en TCP-session.
Här är värdena för de mer populära operativsystemen:
Operativ system | Tid att leva | TCP-fönsterstorlek |
Linux (Kärnan 2.4 och 2.6) | 64 | 5840 |
Google Linux | 64 | 5720 |
FreeBSD | 64 | 65535 |
Windows XP | 128 | 65535 |
Windows Vista och 7 (Server 2008) | 128 | 8192 |
IOS 12.4 (Cisco Routers) | 255 | 4128 |
Huvudskälet till att operativsystemen har olika värden beror på att RFC: erna för TCP / IP inte anger standardvärden. En annan viktig sak att komma ihåg är att TTL-värdet inte alltid matchar upp till en i tabellen, även om enheten kör ett av de angivna operativsystemen ser du när du skickar ett IP-paket över nätverket sändarens enhetens operativsystem sätter TTL till standard TTL för det operativsystemet, men när paketet passerar routrar sänks TTL med 1. Om du ser en TTL på 117 kan detta förväntas vara ett paket som skickades med en TTL på 128 och har traversat 11 routrar innan de fångas.
Att använda tshark.exe är det enklaste sättet att se värdena så snart du har tagit ett paket, se till att du har installerat Wireshark och sedan navigera till:
C: \ Program Files \
Håll nu skiftknappen och högerklicka på wireshark-mappen och välj det öppna kommandofönstret här från snabbmenyn
Skriv nu:
tshark -r "C: \ Användare \ Taylor Gibb \ Desktop \ blah.pcap" "tcp.flags.syn eq 1" -T -fält -e ip.src -e ip.ttl -e tcp.window_size
Se till att du ersätter "C: \ Users \ Taylor Gibb \ Desktop \ blah.pcap" med den absoluta sökvägen till ditt paket. När du har slagit in kommer du att visa alla SYN-paket från din fångst och ett lättare att läsa tabellformat
Nu är det här en slumpmässig paketinspelning som jag gjorde av mig att ansluta till How-To Geek-webbplatsen, bland alla andra chattar som Windows gör. Jag kan säga två saker säkert:
- Mitt lokala nätverk är 192.168.0.0/24
- Jag är på en Windows 7-låda
Om du tittar på den första raden i tabellen ser du att jag inte ljuger, min IP-adress är 192.168.0.84 min TTL är 128 och min TCP Window Size är 8192, vilket matchar upp till värdena för Windows 7.
Nästa sak jag ser är en 74.125.233.24 adress med en TTL på 44 och en TCP Window Size på 5720. Om jag tittar på mitt bord finns det inget OS med en TTL på 44, men det säger att Linux som Googles servrar kör har en TCP-fönsterstorlek 5720. Efter att ha gjort en snabb webbsökning av IP-adressen ser du att det faktiskt är en Google Server.
Vad mer använder du tshark.exe för, berätta i kommentarerna.