28Aug
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örs 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 ett av de enklaste, mest effektiva sätten att göra OS Fingerprinting genom att bara titta på TCP-fönsterstorleken och Time To Live( TTL) i IP-huvudet påförsta paketet i en TCP-session.
Här är värdena för de mer populära operativsystemen:
Operativsystem | Tid för 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 |
iOS12.4( Cisco Routers) | 255 | 4128 |
Den främsta orsaken 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 operativsystemsä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 ochhar traversat 11 routrar innan de fångas.
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 navigera sedan till:
C: \ Program Files \
Håll nu skiftknappen och högerklickapå mappen wireshark och välj det öppna kommandofönstret här från snabbmenyn
Nu typ:
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 slår in kommer du att visa alla SYN-paket från din fångst och ett enklare läsformat
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 Windows görJag kan berätta två saker säkert:
- Mitt lokala nätverk är 192.168.0.0/24
- Jag är på en Windows 7-box
Om du tittar på den första raden i tabellen ser du att jag inte ljuger, min IP-adress är192.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 Window Size 5720. Efter att ha gjort en snabb webbsökning av IP-adressen ser du att det äri själva verket en Google-server.
Vad mer använder du tshark.exe för, berätta i kommentarerna.