Пассивное исследование стека
Было доказано, что во многих случаях определение типа операционной системы может быть выполнено благодаря перехвату фрагментов сетевого трафика. Автором идеи является Ланц Спитзнер (Lance Spitzner). Для этого метода требуется установление соединения с исследуемым компьютером, но не требуется использования специально сформированных пакетов, поэтому подобное сканирование не будет выявлено ни одной программой обнаружения вторжений.
Спитзнер обнаружил, что операционные системы используют различные атрибуты, которые связаны с сеансом сетевого взаимодействия, установленного по протоколу TCP/IP. Сравнивая значения четырех основных атрибутов: TTL (Time-to-Live — время жизни), Windows Size (размер окна), DF (Don’t Fragment — бит фрагментации) и TOS (Type-of-Service — тип обслуживания) со значениями из базы данных, можно определить тип удаленной операционной системы.
Этот метод менее надежный, чем активное исследование стека, поскольку используется меньшее количество параметров, требуется установление соединения, и на удаленном узле без проблем могут быть изменены значения параметров соединения.
Программа p0f
На сегодня самой поддерживаемой утилитой для проведения пассивного анализа стека можно назвать p0f, создателем которой является Михал Залевски (Michal Zalewski, lcamtuf@dione.cc). В январе 2002 года он передал управление процессом поддержки и обновления этой программы Вильяму Стернсу (William Stearns, wstearns@pobox.com). Программа p0f доступна из репозитория, но эта инфо не точная, во всяком случае для Ubuntu есть, или по адресу www.stearns.org.
Программа p0f работает относительно стабильно, имеет большую базу данных сигнатур и использует много характеристик IP-пакетов для определения типа операционной системы. Все это вместе позволяет получать более точные результаты. Результаты могут сохраняться непосредственно в базе данных MySQL. Достаточно простой и понятный код программы понравится тем, кто любит проверять приложения до их запуска от имени root.
Но самая привлекательная особенность утилиты, по мнению специалистов, заключается в возможности создания правил (подобных правилам для tcpdump), которые позволяют перехватывать пакеты только интересующих компьютеров. Для выбора пакетов из общего трафика можно задать конкретные IP-адреса, номера портов, адреса сетей или интерфейсов. Также p0f очень удобно и желательно устанавливать на брандмауэр при выполнении аудита системы безопасности! Это позволяет быстро выявлять компьютеры, обменивающиеся данными по Internet.
Программа p0f может выполнять анализ перехваченных пакетов, сохраненных в стандартном формате tcpdump или же может выполнять чтение сетевого трафика в неразборчивом режиме.
sudo p0f -i eth0 -v p0f - passive os fingerprinting utility, version 2.0.8 (C) M. Zalewski < lcamtuf@dione.cc>, W. Stearns < wstearns@pobox.com> p0f: listening (SYN) on 'eth0', 262 sigs (14 generic, cksum 0F1F5CA2), rule: 'all'. 172.16.217.179 [1 hops]: Linux 2.2.9 - 2.2.18 + 172.16.217.179:1631 -> 192.168.164.74:22 192.168.164.74 [14 hops]: SunOS 5.8 + 192.168.164.74:60786 -> 172.16.18.82:80 169.207.233.226 [18 hops]; Linux 2.4.2 - 2.4.14 (1) + 169.207.233.226:33328 -> 216.162.217.179:23 172.16.217.179 [1 hops]: Linux 2.2.9 - 2.2.18 + 172.16.217.179:1633 -> 10.20.196.98: 10.20.196.98: UNKNOWN [5840:56:1460:1:162:1:1:60]. + 10.20.196.98:2118 -> 172.16.217.179:25 10.20.196.98 [9 hops]: Linux 2.4.2 - 2.4.14 (1) + 10.20.196.98:2119 -> 172.16.217.179:110 |
Как видно из приведенного выше листинга, в отчетах p0f также указывается количество переходов (hop) от хоста, на котором запущена эта программа. Чем меньше количество переходов (например, для хоста 172.16.217.179), тем ближе данный компьютер к хосту, на котором проводится проверка. Кроме того, p0f иногда не в состоянии определить операционную систему с первого раза, и тогда в отчете используется слово UNKNOWN, но он может получить искомый результат со второй попытки (как видно из примера для хоста 10. 20.196. 98).
Как помешать пассивному исследованию стека
Можно изменить стандартные параметры соединения по протоколу IP, которые проверяются средствами пассивного исследования стека, что сделает невозможным классификацию операционных систем. Например, для изменения устанавливаемого по умолчанию значения TTL достаточно выполнить следующие команды:
# cd /proc/sys/net/ipv4 # cat ip_default_ttl 64 # echo 35 > ip_dafault_ttl # cat ip_default_ttl 35 |
Таким образом, по умолчанию будет использоваться значение поля TTL, равное 35, которое не соответствует стандартным значениям в базе данных сигнатур. Будьте осторожны при смене значений, используемых по умолчанию, так как эти значения установлены не без основания, и их смена может привести к уменьшению производительности сети или потере совместимости.
Намного важнее поддерживать полную безопасность компьютера, чем полагаться на дезинформацию хакера при определении им типа используемой операционной системы.
Да, этот Ланц Спитзнер (Lance Spitzner) должно быть очень умный человек, что придумал такое.
Да, пожалуй метод надёжнее, чем активное исследование стека. Спасибо.
Непонятен тот момент, что если изменить ТЛЛ со значения 35, то появится глюки? насколько можно отклонять это значение от стандартного?
Ну, хоть что-то новое выдумали.
Вопрос один. Что такое стек?…
Врач :
в данном конкретном случае имеется ввиду стек протоколов ядра linux