Оцените

Лучшие инструменты пен-тестера: исследование удаленной системы

Методов для проведения 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.

Оригинал: xakep.ru Дата: 18.11.2009


ПОХОЖИЕ СТАТЬИ на soft-lenta.ru:
Лучшие инструменты пен-тестера: исследование веб-приложений
Лучшие инструменты пен-тестера: сниферы и работа с пакетами
Лучшие инструменты пен-тестера: брутфорс паролей
Лучшие инструменты пен-тестера: беспроводные сети
Добавить комментарий
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent