Зачем вам это делать?
Определение того, какая ОС на компьютере или устройстве работает, может быть полезна по многим причинам. Сначала давайте взглянем на повседневную перспективу, представьте, что вы хотите переключиться на нового интернет-провайдера, который предлагает бесплатный интернет за 50 долларов в месяц, чтобы вы прошли пробную версию своего сервиса. Используя отпечатки пальцев OS, вы скоро обнаружите, что у них есть мусорные маршрутизаторы и предлагают услугу PPPoE, предлагаемую на связке компьютеров Windows Server 2003. Не похоже, что так много, да?
Другое использование для этого, хотя и не столь этично, заключается в том, что дыры в безопасности являются специфичными для ОС. Например, вы выполняете сканирование портов и обнаруживаете, что порт 53 открыт, а на компьютере работает устаревшая и уязвимая версия Bind, у вас есть ОДИНОЧНЫЙ шанс использовать дыру в безопасности, поскольку неудачная попытка может привести к сбою демона.
Как работает отпечаток операционной системы?
При пассивном анализе текущего трафика или даже при поиске старых пакетов одним из самых простых и эффективных способов выполнения отпечатков пальцев OS является просто просмотр размера окна TCP и времени жизни (TTL) в заголовке IP первого пакет в сеансе TCP.
Вот значения для более популярных операционных систем:
Операционная система | Время жить | Размер окна TCP |
Linux (ядро 2.4 и 2.6) | 64 | 5840 |
Google Linux | 64 | 5720 |
FreeBSD | 64 | 65535 |
Windows XP | 128 | 65535 |
Windows Vista и 7 (Server 2008) | 128 | 8192 |
iOS 12.4 (маршрутизаторы Cisco) | 255 | 4128 |
Основная причина, по которой операционные системы имеют разные значения, связана с тем, что в RFC для TCP / IP не указаны значения по умолчанию. Другая важная вещь, которую следует помнить, - это то, что значение TTL не всегда будет соответствовать одному в таблице, даже если на вашем устройстве установлена одна из перечисленных операционных систем, вы видите, когда вы отправляете IP-пакет по сети, устанавливает TTL в TTL по умолчанию для этой ОС, но по мере того, как пакет обходит маршрутизаторы, TTL понижается на 1. Следовательно, если вы видите TTL из 117, можно ожидать, что это пакет, который был отправлен с TTL 128 и проехал 11 маршрутизаторов, прежде чем их захватили.
Использование tshark.exe - это самый простой способ увидеть значения, поэтому, как только у вас есть захват пакетов, убедитесь, что у вас установлен Wireshark, затем перейдите к:
C:Program Files
Теперь удерживайте кнопку shift и щелкните правой кнопкой мыши на папке wirehark и выберите здесь окно команд из контекстного меню
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 - 8192, который соответствует значениям для Windows 7.
Следующее, что я вижу, это адрес 74.125.233.24 с TTL из 44 и размер окна TCP 5720, если я смотрю на свою таблицу, нет ОС с TTL 44, однако он говорит, что Linux, что серверы Google run имеют размер окна 5720 TCP. После быстрого поиска веб-адреса IP-адреса вы увидите, что он фактически является сервером Google.