Введение
Добро пожаловать в лабораторную работу по идентификации операционной системы (OS Fingerprinting).
Идентификация операционной системы — это важнейший метод разведки, используемый как специалистами по безопасности, так и злоумышленниками для определения ОС, работающей на удаленной цели. Отправляя специфические, иногда намеренно некорректные TCP- и UDP-пакеты и анализируя тонкие различия в ответах стека TCP/IP целевой системы (такие как значения Time-To-Live, размеры окна и комбинации флагов), инструменты вроде Nmap могут с высокой точностью угадать базовую операционную систему.
Это метод логического вывода, а не прямое доказательство. Nmap сравнивает наблюдаемое поведение сети с базой данных «отпечатков». Результат может быть очень полезным, но его следует рассматривать как обоснованное предположение, на которое могут влиять межсетевые экраны, прокси-серверы или нестандартные настройки стека.
В этой лабораторной работе вы научитесь использовать мощные возможности Nmap для идентификации удаленных систем и комбинировать эти методы с определением версий для комплексного профилирования сети.
Включение идентификации ОС
В этом шаге мы изучим основы идентификации операционной системы с помощью Nmap. Идентификация ОС — это метод, используемый для определения операционной системы, работающей на удаленной цели. Nmap достигает этого путем отправки серии тщательно подготовленных TCP- и UDP-пакетов на целевой узел и анализа ответов. Поскольку разные операционные системы реализуют стек TCP/IP с небольшими различиями, Nmap может сравнить эти ответы со своей обширной базой данных, чтобы найти совпадение.
Это работает, потому что сетевые стеки — это реализации, написанные людьми, и они различаются во многих мелких деталях по умолчанию. Идентификация превращает эти различия в подсказки.
Для включения идентификации ОС в Nmap мы используем флаг -O. Важно отметить, что формирование «сырых» (raw) пакетов требует прав администратора, поэтому мы должны запускать эту команду с помощью sudo.
Давайте запустим сканирование для идентификации ОС на нашей локальной машине (localhost) и сохраним результат в файл os_scan.txt в нашем рабочем каталоге.
sudo nmap -O -p 22,80 localhost > /home/labex/project/os_scan.txt
После завершения сканирования вы можете просмотреть результаты с помощью команды cat.
cat /home/labex/project/os_scan.txt
Вы увидите вывод, похожий на приведенный ниже. Обратите внимание на строки, начинающиеся с "Device type", "Running" и "OS details".
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:53 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000020s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.56 seconds
Вывод показывает, что на цели работает ядро Linux, что соответствует нашей среде LabEx.
Анализ предположений об ОС
В этом шаге мы рассмотрим, как Nmap справляется с неопределенностью во время идентификации ОС. Иногда на целевой системе может быть установлен межсетевой экран, который отбрасывает определенные пакеты, или же она может использовать редкую или сильно модифицированную операционную систему. В таких случаях Nmap может не найти точного совпадения в своей базе данных.
Когда Nmap не может определить точную операционную систему, он может предоставить список предположений вместе с процентом уверенности. Мы можем заставить Nmap угадывать более агрессивно, используя флаг --osscan-guess (который также эквивалентен --fuzzy). Это указывает Nmap выводить варианты ОС, даже если они не являются идеально точными.
Это напоминает нам о том, что результаты разведки часто содержат неопределенность. Хорошие аналитики фиксируют эту неопределенность, а не делают вид, что каждое обнаружение является абсолютно точным.
Давайте запустим еще одно сканирование localhost, на этот раз включив агрессивное угадывание ОС, и сохраним результаты в файл guess_scan.txt.
sudo nmap -O --osscan-guess -p 22,80 localhost > /home/labex/project/guess_scan.txt
Теперь просмотрите содержимое нового файла.
cat /home/labex/project/guess_scan.txt
Вывод будет выглядеть так же, как на предыдущем шаге, но если бы цель была более редкой, вы бы увидели список предположений об ОС через запятую с указанием процентов, например: Aggressive OS guesses: Linux 5.0 (96%), Linux 4.15 (95%).
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:54 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000020s latency).
...
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
...
Даже в стандартной системе использование --osscan-guess является ценным методом при работе с защищенными целями, которые пытаются скрыть поведение своего стека TCP/IP.
Комбинирование идентификации ОС и версий (-A)
В этом шаге мы объединим определение ОС с другими мощными функциями Nmap, используя флаг -A. Флаг -A означает «Агрессивные параметры сканирования» (Aggressive scan options).
Когда вы используете флаг -A, Nmap автоматически включает несколько расширенных функций одновременно:
- Определение ОС (
-O) - Определение версий (
-sV), которое опрашивает открытые порты для определения версий служб и приложений - Сканирование скриптами (
-sC), которое запускает стандартный набор скриптов Nmap Scripting Engine (NSE) - Трассировка маршрута (
--traceroute), которая определяет сетевой путь к цели
Этот комбинированный подход обеспечивает комплексный профиль целевой системы, что делает его любимым инструментом специалистов по безопасности для начальной разведки.
Давайте выполним агрессивное сканирование localhost и сохраним вывод в aggressive_scan.txt. Это сканирование может занять немного больше времени, так как выполняется гораздо больше проверок.
sudo nmap -A -p 22,80 localhost > /home/labex/project/aggressive_scan.txt
Как только сканирование завершится, изучите результаты.
cat /home/labex/project/aggressive_scan.txt
Вы заметите гораздо более подробный вывод. Наряду с деталями ОС, теперь вы увидите точные версии служб, работающих на открытых портах (например, OpenSSH и nginx), а также дополнительную информацию, собранную стандартными скриптами.
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:54 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000019s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
...
Комбинируя эти методы, вы можете собрать массу информации о целевой системе с помощью одной команды.
Резюме
Поздравляем! Вы успешно завершили лабораторную работу по идентификации операционной системы.
В этой лабораторной работе вы научились:
- Использовать флаг
-Oв Nmap для удаленной идентификации операционной системы путем анализа ответов стека TCP/IP. - Применять флаг
--osscan-guess, чтобы заставить Nmap предоставлять вероятностные предположения, когда целевая ОС не имеет идеального совпадения. - Использовать флаг
-Aдля объединения определения ОС с определением версий служб, сканированием скриптами и трассировкой маршрута для комплексного профилирования цели.
Эти навыки являются фундаментальными для сетевой разведки и оценки уязвимостей, позволяя специалистам по безопасности понимать среду, которую они анализируют, и соответствующим образом адаптировать свои меры защиты.



