Для сервисов, текстовый диалог с которыми невозможен, (например, DNS-сервер) применяется та же технология: на сервер посылаются неверные запросы и анализируются ответные пакеты. Просто реализация такого анализа немного сложнее.
Пассивный fingerprinting
Как насчет того, чтобы определить версию сервиса, не послав на целевой хост ни единого пакета? На ум сразу же приходят банальный снифер на пути до хоста и дальнейший анализ перехваченных пакетов. Такие технологии применяются уже давно и работают по тому же принципу, что и nmap (анализируются поля в заголовках пакета).
Для SMTP-серверов существуют методы, не требующие ничего, кроме одного письма, прошедшего через целевой сервер. Многие сервера вставляют в письма красноречивые рабочие заголовки:
ЛИСТИНГ
Received: from xxx@xxx.ru by mercury.xxxxxx.ru by uid 0 with qmail-scanner-1.22
(clamscan: 0.75. spamassassin: 2.63. Clear:RC:0(xx3.1xx.8x.14xx):SA:0(0.0/7.0):
По ним мы сразу определяем, что на сервере крутится qmail, сдобренный солянкой из qmail-scanner и SpamAssassin.
Есть элегантный способ, описанный российской security-группой UkR Security Team . Он основан на анализе id-тега в заголовке письма. Как и в случае с кодом ошибки, rfc не накладывает никаких ограничений на алгоритм генерации id и каждый вендор выбирает его по своему усмотрению. Составив базу отпечатков тегов различных почтовых серверов, можно точно отличить тот же postfix от exim, не послав жертве ни одного пакета!
Разумеется, существует множество разных способов защиты от fingerprinting. От сканирования nmap'ом могут помочь механизмы в OpenBSD PF (block from any os NMAP, scrub in all), как просто нормализующие трафик (а значит, маскирующие «особенности» систем, этот трафик генерирующих), так и определяющие сканирование и заставляющие nmap выдавать каждый раз разную чепуху. Сильно затрудняют анализ уже упомянутые мной blackholes во FreeBSD. Ведь, по сути, из всех тестов сканера только один эмулирует «нормальный» сеанс (SYN-пакет на открытый порт), все остальное – ошибочные пакеты, призванные исследовать реакцию системы на подобную «провокацию». Соответственно, нужно сделать систему как можно более «молчаливой».
Для Linux имеется проект IP Personality – патч к ядру, изменяющий поведение сетевого стека и позволяющий замаскировать систему под все, что не заблагорассудится, хоть под aix, хоть под приставку xbox.
Анализ типа сервиса может быть затруднен сменой баннеров, текстовых комментариев кодов ошибок. Никто не мешает тебе залезть в сорцы любимого SMTP-сервера и ручками поменять алгоритм генерации ID-тега :).
Fingerprinting – чертовски полезная для взломщика технология, однако она служит не для атаки на сверхзащищенные системы, а является способом определения уязвимой машины в заданном диапазоне адресов. Не даром различные проявления этой технологии можно встретить в авторутерах, автоэксплоитах или в обычных (но надо признать, не очень простых) сканерах безопасности.
Статью Fyodor, переведенную на русский язык, можно найти по адресу http://www.insecure.org/nmap/nmap-fingerprinting-article-ru.html.
От сканирования nmap'ом могут помочь механизмы в OpenBSD PF, нормализующие трафик.
Анализ типа сервиса может быть затруднен сменой баннеров, текстовых комментариев и кодов ошибок.
Технология remote fingerprinting хорошо зарекомендовала себя при производстве авторутеров/автоэксплоитов. Подобным программам очень полезно бывает сначала проверить версию сервиса или ОС, а уж потом применять эксплоит.
Защита
Безопасность сервера / Основные методы защиты *nix-систем
Антон Карпов (toxa@real.xakep.ru)
Всем давно понятно, что фраза «*nix – безопасная ОС» по своей сути некорректна. *nix, если под этим понимать дизайн, реализацию ядра ОС и базовую ее начинку (утилиты), лишь предоставляет отличные предпосылки для построения на своей базе защищенной серверной системы. Но на одном ядре и прикладных утилитах сервер не построишь, нужны сервисы, и безопасность их напрямую не связана с безопасностью операционки. Помнишь известные слова: «Безопасность – это не продукт, а процесс»? Так вот, безопасность как процесс – не свойство системы, а свойство взаимодействия системы и админа, который ее настраивает.
Мы рассмотрим типичный сценарий установки, настройки и сопровождения сервера с точки зрения security-параноиков. Мне не хотелось бы давать разрозненные советы из серии «хозяйке на заметку», поэтому мы пройдем по шагам все этапы от установки ОС до запуска сервисов, обращая внимание на важные моменты. Я не буду предлагать здесь детальное руководство по настройке каждого сервиса, а лишь дам общие советы, которые нужно иметь в виду. По этой же причине я не завязываюсь на конкретную ОС – кто-то любит Linux, кто-то FreeBSD, а кто-то по долгу службы обхаживает Solaris. Замечания по определенной ОС, если таковые встретятся, будут даваться по ходу.