Защо бихте направили това?
Определянето на каква операционна система работи машина или устройство може да бъде полезно по много причини. Първо погледнете ежедневната перспектива, представете си, че искате да преминете към нов интернет доставчик, който предлага неограничен интернет за $ 50 на месец, така че да вземете изпитание за тяхната услуга. С помощта на снемането на пръстови отпечатъци на OS скоро ще откриете, че имат маршрутизатори за боклук и предлагат PPPoE услуга, предлагана на куп Windows Server 2003 машини. Вече не звучи като такава добра сделка, а?
Друга употреба за това, макар и не толкова етична, е фактът, че дупките за сигурност са специфични за ОС. Например, правите сканиране на пристанища и откриете порт 53 отворен и машината работи с остаряла и уязвима версия на Bind, имате SINGLE шанс да се възползвате от дупката за сигурност, тъй като неуспешен опит би удрял демона.
Как функционира отпечатването на пръстови отпечатъци на OS?
Когато правите пасивен анализ на текущия трафик или дори гледате стари пакетни улавяния, един от най-лесните и ефективни начини за правене на пръстови отпечатъци на OS е просто да разгледате размера на прозореца на TCP и Time To Live (TTL) в IP заглавката на първия пакет в сесия на TCP.
Ето и стойностите за по-популярните операционни системи:
Операционна система | Време за живеене | Размер на TCP прозореца |
Linux (ядра 2.4 и 2.6) | 64 | 5840 |
Google Linux | 64 | 5720 |
FreeBSD | 64 | 65535 |
Уиндоус експи | 128 | 65535 |
Windows Vista и 7 (сървър 2008) | 128 | 8192 |
iOS 12.4 (Cisco Routers) | 255 | 4128 |
Основната причина, поради която операционните системи имат различни стойности, се дължи на факта, че RFC за TCP / IP не предвиждат стойности по подразбиране. Друго важно нещо, което трябва да запомните, е, че стойността на TTL няма винаги да съвпада с една в таблицата, дори ако устройството ви работи с една от изброените операционни системи, виждате, когато изпращате IP пакет в мрежата на операционната система на изпращащото устройство настройва TTL на TTL по подразбиране за тази операционна система, но тъй като пакетът преминава през маршрутизатори, TTL се снижава с 1. Следователно, ако видите TTL от 117, това може да се очаква да бъде пакет, изпратен с TTL 128 е преминал 11 маршрута, преди да бъде заловен.
Използването на tshark.exe е най-лесният начин да видите стойностите, така че след като сте получили заснемане на пакети, уверете се, че сте инсталирали Wireshark, след което преминете към:
C:Program Files
Сега задръжте бутона за смяна и щракнете с десния бутон на мишката върху папката wireshark и отворете командния прозорец тук от контекстното меню
tshark -r 'C:UsersTaylor GibbDesktoplah.pcap' 'tcp.flags.syn eq 1' -T fields -e ip.src -e ip.ttl -e tcp.window_size
Не забравяйте да замените "C: Users Taylor Gibb Desktop blah.pcap" с абсолютния път към заснемането на пакети. След като натиснете Enter, ще се покажат всички SYN пакети от улавянето ви, по-лесен за четене формат на таблицата
- Локалната ми мрежа е 192.168.0.0/24
- Аз съм на Windows 7 кутия
Ако погледнете първия ред на таблицата, ще видите, че не съм лъжа, моят IP адрес е 192.168.0.84 моят TTL е 128 и моят TCP Window Size е 8192, което съответства на стойностите за Windows 7.
Следващото нещо, което виждам, е адресът на адрес 74.125.233.24 с TTL от 44 и TCP Window Size от 5720, ако погледна на масата ми, няма операционна система с TTL от 44, но се казва, че Linux, че сървърите на Google изпълнете TCP Window Size 5720. След като извършите бързо търсене в мрежата на IP адреса, ще видите, че той всъщност е сървър на Google.