Важная часть любого пентеста — сбор данных об удаленной системе. Более того,
именно с разведки и начинается атака на удаленный хост. Чем больше известно о
виртуальном противнике, тем проще отыскать инструменты, чтобы отправить его в
нокдаун. Варианты для того, чтобы провести свое маленькое исследование
существуют разные, но если не брать в расчет социальную инженерию и прочие
экзотические способы (которые, впрочем, не стоит сбрасывать со счетов), то
исследование удаленной системы начинается со скана портов, грабинга баннеров с
сервисов и, конечно же, определения ОС, которая крутится на удаленном хосте.
Последнее определяется с помощью так называемого fingeprinting’а, и этой темы мы
коснемся более подробно.

Методов для проведения fingerprinting’а довольно много: FIN-сканирование,
ICMP-пакетная генерация, исследования полей ICMP и TCP-пакетов. Но большинство
из них сводятся к анализу стека TCP/IP на удаленной системе. Попробую объяснить
на примере. Допустим, мы наснифали пакет с данными. В его заголовке находится
множество полей вроде размера окна, TTL (время жизни пакета данных), DF (бит
фрагментации), флага TOS (Type-Of-Service) и т.д. Именно эти данные и используют
fingerprinting-утилиты в своей работе. Например, если бит DF не установлен
(присуще ОС OpenBSD), то в базе сигнатур отбрасываются все оси, для которых DF
указан (обычный метод исключения). Далее под прицел попадает параметр TTL: для
FreeBSD и Linux этот параметр равен 64. Опять же, круг потенциальных OS сужается
— и так до тех пор, пока не останется минимум претендентов.

Впрочем, в этом деле есть уйма тонкостей и процесс опознания версии
операционки может не дать ожидаемых результатов. В случае с анализом
существующего дампа трафика fingerprinting называется пассивным. Для получения
материала для анализа, на удаленный хост могут посылаться специально
составленные пакеты — в этом случае мы имеем дело с активным fingerprinting.

 

Nmap

Сайт: nmap.org
Платформа: Unix, MacOS, Win32

Пожалуй, наиболее известным инструментом для активного fingerprinting’а
является известнейший сканнер безопасности Nmap. Мы столько раз упоминали
эту тулзу и демонстрировали ее в действии, что во всех подробностях рассказывать
об ее функционале было, по меньшей мере, неприлично. К счастью, разработчики
сделали офигенный подгон и выпустили в июле новую ветку программы c массой
полезных нововведений. Тут надо сразу сказать, что Nmap очень
многогранный продукт, но нас в данном случае интересуют прежде всего возможности
по OS Fingerprinting’у (ключ для запуска -O). Несколько простых экспериментов
показали, что алгоритмы и сигнатурные базы у новой версии Nmap’а стали
давать более правдивые результаты.

Результат сканирования microsoft.com старой версией сканнера давал едва ли
правдивые результаты :).

nmap -O -PN microsoft.com
Starting Nmap 4.76 ...
Running (JUST GUESSING): OpenBSD 4.X (86%)
Aggressive OS guesses: OpenBSD 4.3 (86%)

А вот что говорит обновленный Nmap:

nmap -O -PN microsoft.com
Starting Nmap 5.00 ...
Running (JUST GUESSING): Microsoft Windows 2003 (91%)
Aggressive OS guesses: Microsoft Windows Server 2003 SP2 (91%)

Когда-то для запуска утилиты приходилось вручную компилировать код и работать
со сканнером исключительно из командной строки. Сейчас на выбор есть сразу
несколько фронтендов, причем один из них — zenmap — входит в состав дистрибутива
по умолчанию.

Тем, кто пока мало знаком с ключами для запуска сканнера, он поможет выбрать
нужное сканирование, а advanced пользователям позволит сохранить тонкие
параметры для сканирования в виде разных профилей. И тех, и других определенно
порадует возможность интерпретировать результаты и даже строить графическую
топологию сети. Выбрав профиль для сканирования "Intense scan" и натравив сканер
на свою точку доступа, я вновь был приятно удивлен. Во-первых, Nmap
быстро определил версию ядра на установленном в девайсе линуксе и правильно
предположил, что имеет дело с embedded- устройством. По MAC’у был опознан
производитель — Asustek. А анализ 80 порта и ответа встроенного HTTP-сервера, на
котором крутится админка, позволил определить еще и точную модель устройства —
WL500gP!

Продолжаю радоваться :). В версии 5.00 появилось то, о чем мы давно мечтали —
скриптовый движок, позволяющий с помощью самописных сценариев автоматизировать
самые разнообразные задачи. С помощью таких скриптов можно проводить MSRPC/NetBIOS
атаки, осуществлять поиск уязвимых демонов или банально открытых проксей, и даже
реализовывать брутфорс для распространенных протоколов. В этом всячески поможет
другая новинка — сетевая утилита Ncat, предназначенная для передачи данных,
редиректа и отладки сетевых пакетов. А сравнить результаты сканирования разных
хостов или одной и той же машины, но в разное время или с разными параметрами,
поможет тулза Ndiff. Словом, это не просто новая версия программы. Это
по-настоящему значимый
релиз
одного из лучших инструментов хакера, к которому мы обязательно
вернемся, когда будем говорить о сканнерах безопасности и скане портов.

 

p0f v2

Сайт: camtuf.coredump.cx
Платформа: Unix, MacOS, Win32

В отличие от Nmap, который использу ет алгоритмы для реализации активного
fingerprinting’а, p0f работает исключительно пассивно. Т.е. в результате
работы не генерирует какого-либо трафика, который может тебя выдать. Это
особенно важно, если на удаленной машине установлено более-менее толковое
средство IDS (средство определения атак).

Основная задача p0f — определить версию ОС на удаленном хосте, в том
числе на:

  • машинах, которые присоединяются к тебе (так называемый SYN режим);
  • машинах, к которым коннетишься ты (режим SYN+ACK);
  • машине, с которой ты не можешь соединиться (режим RST+), из-за того, что
    файрвол реджектит подключения;
  • машинах, за взаимодействием которых ты можешь наблюдать (исследования
    существующей сессии без необходимости какого-либо вмешательства с твоей
    стороны).

Помимо этого утилита владеет несколькими другими полезными фокусами и в
разной степени может дать ответ, используется ли в локалке NAT, активен ли
файрвол или шейпер, а также рассчитать примерное "расстояние" до удаленного
хоста и его аптайм. В результате p0f может рассказать об ОС на удаленном
хосте, даже если она находится за файрволом, в то время как любимый Nmap
остается не у дел. При этом, еще раз повторяю, утилита не генерирует какого-либо
трафика. Никаких lookup’ов, загадочных пакетов, ARIN-запросов — ничего!

Изначально p0f написана для никсов, поэтому под виндой придется либо
довольствоваться прекомпилированной версией с офсайта (а она не самая свежая),
либо брать в руки исходники и колдовать над своей собственной сборкой. Кстати
говоря, разработчики очень просят всячески пополнять базу отпечатков. Для этого
достаточно перейти на страницу

lcamtuf.coredump.cx/p0f-help
и, заполнив несколько полей о своей системе,
добавить новую запись.

 

THC-Amap

Сайт: thc.org/thc-amap
Платформа: Unix, MacOS, Win32

Если хочешь выяснить, какие сервисы установлены на удаленной машине, —
просканируй ее порты. В большинстве случаев можно обойтись одним лишь сканнером
безопасности (банально Nmap’ом), однако здесь, как и везде, не обошлось без
исключений. Каждый знает, что любой стандартный сервис обычно работает на
определенном порте: например, FTP на 21, SSH на 22 и т.д. Тем не менее,
администраторы частенько прибегают к одной очень простой, но полезной уловке.
Чтобы скрыть потенциально уязвимые сервисы, они устанавливают их на
нестандартные порты. В этом случае даже добротные сканнеры зачастую
обламываются, т.к. не могут определить FTP-сервер, работающий на 31337 порту,
даже если он там действительно есть.

Не беда! С задачей на ура справляется сканнер Amap от известной
хакерской группы THС. Он с большой вероятностью определит даже те сервисы,
которые работают не на своих стандартных портах. Успех достигается за счет того,
что программа посылает сервису специальные идентификационные пакеты, после чего
анализирует ответ и ищет соответствие в специально составленной базе сигнатур.
Таким образом, идентификация осуществляется не по номеру порта, а по "отпечаткам
пальцев" сервисов. До неприличия простой механизм позволяет определить
SSH-сервер, запущенный на 988 порту, или веб-сервер, установленный на 29-м.
Сканнер Amap легко сканирует как один конкретный порт, так и заданный
диапазон. Однако для большей эффективности рекомендую использовать его совместно
с Nmap’ом.

Алгоритм следующий: сначала Nmap, используя все свои возможности, определяет
на удаленной машине открытые порты и записывает результат в файл, далее за
работу берется THC-Amap, которому остается проанализировать открытые
порты и вывести результат. На практике это можно сделать примерно так:

#nmap -sS -oM results.nmap -p 1-65535 IP-адрес
#amap -i results.nmap -o results.amap -m

Несмотря на то, что релизов не было долгое время, базы программы по-прежнему
обновляются и доступны на офсайте.

 

Httprint

Сайт:
www.net-square.com/httprint

Платформа: Linux, MacOS, FreeBSD, Win32

Если привычными средствами распознать ОС на удаленном хосте не получается,
можно попробовать заюзать узкоспециализированные утилиты. Например,
идентифицировать установленный на другой стороне HTTP-сервер и, таким образом,
сделать предположение уже об операционной системе. С такой задачей справится
тулза Httprint.

Немного теории. Когда ты коннектишься к любому сервису, то в ответ получаешь
баннер, по которому теоретически можно определить используемое ПО. Многие
администраторы, однако, намеренно подделывают баннеры с помощью специальных
патчей, модулей (например, mod_security.c) и даже специализированного софта
вроде ServerMask (www.port80software.com),
чтобы сбить с толку хакера.

Однако Httprint этим не проведешь. В своих исследованиях тулза
Httprint
опирается на уникальные сигнатуры, которые присущи каждой
конкретной программе-серверу. Причем база программы не ограничивается
сигнатурами для Apache, ISS и прочих известных веб-серверов. В нее также
включены и "отпечатки" демонов, на которых запущены админки роутеров,
ADSL-модемов, точек доступа и других устройств. Если на сервере используется
SSL-соединение, то утилита сама распознает факт использования шифрованного
соединения и продолжит сканирование. А заодно — соберет всевозможную инфу, в том
числе данные по сертификатам и используемым шифрам.

Списки исследуемых серверов можно импортировать из текстового файла или
отчета сканера Nmap. А для увеличения скорости сканирования рекомендуется
работать в несколько потоков. Правда, функция multi-threading реализована пока
только для линуксовой и виндовых версий программы, а во фряхе работать не будет.

Увы, программа давно не обновляется: последний релиз вышел еще в далеком 2005
году. Это влияет не только на актуальность сигнатур в базе, но и на
работоспособность под той же Vista.

 

NetworkMiner

Сайт:
sourceforge.net/projects/networkminer

Платформа: Windows

Эта утилита уже входила в нашу подборку "Сниферы
и манипуляция пакетами
". Еще бы — ведь NetworkMiner является одним из
лучших инструментов для анализа перехваченных данных, сохраненных в формате PCAP.
Программа пассивно анализирует дамп с трафиком, четко определяет участников
обмена сетевыми данными и распознает операционные системы на каждом из хостов. В
качестве данных для анализа выступает размер окна, время жизни пакета, а также
уникальный набор флагов. Помимо операционок, NetworkMiner распознает и
структурировано выдает инфу об открытых сессиях, активных портах, баннерах
различных демонов и вообще об инфраструктуре локальной сети. Не так давно передо
мной стояла задача по анализу дампа с данными, перехваченными в беспроводной
сети (возможность обработки WLAN-трафика появилась в утилите относительно
недавно), и с помощью NetworkMiner я достаточно быстро разобрался, какие
машины работают в локалке, на каких ОС крутятся хосты и даже, какое оборудование
используется в качестве активных свитчей и точек доступа.

Определение ОС основывается на TCP SYN и SYN+ACK пакетах с использованием
базы данных p0f’а и Ettercap. Помимо этого утилита умеет выполнять
fingerprinting на основе DHCP-пакетов, используя базу данных программы Satori.
Само собой, выполняется и идентификация устройств и по MAC-адресу:
соответствующая база позаимствована у Nmap.

 

ike-scan

Сайт:
www.nta-monitor.com/tools/ikescan

Платформа: Unix, MacOS, Win32

Все, чем занимается эта уникальная в своем роде утилита, — это распознает
факт использования VPN-соединения. Один из самых простых способов распознавания
виртуальных частных сетей основывается на посылке специального IKE-пакета на
каждую машину в сети. Большинство хостов, использующих VPN, отконфигурировано
таким образом, что в ответ на такой пакет отошлют ответ и, тем самым, выдадут
свое присутствие. Подобных методов определения VPN-сети ike-scan
несколько. Ты скажешь: "При чем тут fingerprinting?". Причина есть. Определив
VPN-серверы, мы можем собрать массу информацию о них. А используя приемы
fingerprinting’а, реализованные в ike-scan, можно определить операционные
системы на машинах, объединенных в виртуальную частную сеть, а в случае
аппаратного решения — производителя девайса.

 

Xprobe2

Сайт: 
xprobe.sourceforge.net

Платформа: Unix

После долгого затишья разработчики взялись за свое детище и выпустили
совершенно новую версию программы. Xprobe2 — это утилита для активного
fingerprinting’а, в арсенале которой как несколько знакомых по Nmap’у алгоритмов
идентификации удаленной ОС, так и ряд уникальных методик, в основе которых лежат
результаты научных исследований Офира Аркина.

Важным нововведением в последних версиях является модуль для обнаружения
honeypot и систем с намеренно модифицированными параметрами стека TCP/IP. Для
обхода ограничений используются алгоритмы нечеткой логики и собственные методики
разработчиков. Помимо этого, в расчет берутся различные параметры поведения
сетевых устройств. Например, pf, входящий в состав OpenBSD известен тем, что
возвращает разные значения в поле TTL, когда за ним находится другая система. В
режиме сканирования TCP-портов (указывается флагом -T) Xprobe пытается
найти и зафильтрованные брандмауэром сервисы. Аналогичным образом производится
проверка UDP-портов, которая активируется флагом -U.

Примечательно, что Xprobe2 изначально реализовывала лишь один метод
fingerprinting’а с помощью ICMP-запросов. Поддержка других механизмов, а также
специальный fuzzing механизм, помогающий идентифицировать неизвестные системы
или хосты с измененными параметрами стека TCP/IP, появились позже. Надо сказать,
что операционную систему, используемую на сервере, Xprobe определяет
довольно-таки точно, а если в процессе появились спорные моменты, то в отчет
войдет также список наиболее вероятных ОС с процентным соотношением вероятности.

 

Satori

Сайт:
myweb.cableone.net/xnih

Платформа: Windows, Linux

Автор Satori потратил немало времени, разрабатывая приемы для активого
OC fingerprinting’а, пока не осознал, насколько много информации можно получить,
основываясь лишь на пассивном исследовании. В результате на свет появилась тулза,
которая использует драйвер WinPCap, прослушивает сетевой интерфейс и определяет
версии ОС на машинах в локалке, основываясь на обработке перехваченных пакетов.
Satori очень четко определяет версию Windows, устройства производства HP
(использующие HP Swith Protocol), девайсы Cisco (за счет пакетов CDP-протокола).
Немалый вклад в результат, полученный с помощью Satori, дают методы,
основанные на исследовании DHCP. Кстати говоря, на официальном сайте программы
выложены классные статьи, в которых детально раскрываются методы для определения
ОС. Теория подкрепляется практикой. Помимо Satori, на странице
разработчика ты найдешь утилиту SAM, которая использует активное сканирование
для определения удаленной ОС путем отправки ARP-пакетов в сеть.

 

SinFP

Сайт:
www.gomor.org/bin/view/Sinfp/WebHome

Платформа: Unix, Windows

SinFP представляет собой новый подход к идентификации ОС, когда вместо
исследования системы в целом, прощупываются отдельные сервисы. Тулза
последовательно опрашивает указанные порты и только на основе опроса выдвигает
предположение об установленной на удаленной машине системе. В то время, как Nmap
осуществляет идентификацию всего хоста и может легко быть обведен вокруг пальца
за счет измененных параметров TCP/IP-стека, SinFP использует сигнатурный
анализ по конкретным портам. Прога написана на Perl, причем в случае
необходимости ее можно использовать и в своих проектах, подключив модуль с
одноименным названием. Его легко найти в CPAN:

search.cpan.org/~gomor/Net-SinFP
. Приятно, что с недавнего времени SinFP
работает не только под никсами, но еще и под виндой.

 

WWW

Описание алгоритмов для реализации пассивного fingerprint’а, используемых
утитой p0f —
project.honeynet.org/papers/finger
.

Документ по активному ICMP fingerprint —

www.sys-security.com/html/papers.html
.

Оставить мнение

Check Also

Жизнь без антивируса. Как побороть малварь голыми руками и обезопасить себя на будущее

На вопрос «Какой антивирус вы используете на своей виндовой машине?» многие безопасники (в…