тактическая эксплуатация уязвимостей

При тестировании на проникновение все внимание часто сосредотачивается на уязвимостях и сервисах. В данной статье представлен тактический подход, который не связан с эксплуатацией известных уязвимостей. Используя сочетание новых инструментов и малоизвестных методов, мы проследим от начала до конца процесс компрометации организации без использования обычного набора экплойтов. Будут рассмотрены многие инструментальные средства, например, новые модули Metasploit Framework.

история вопроса

В течение последних десяти лет авторы данной статьи имели отношение к проверке системы защиты и к тестированию на проникновение. Специалисты по безопасности обычно используют имеющееся в наличии программное обеспечение для автоматизации процесса тестирования на проникновение. Во многих организациях такие инструментальные средства, как Nessus, Retina и Core Impact, заменили проверки вручную и контрольные списки.

В то время как подобные инструментальные средства выполняют львиную долю работы, уменьшая необходимое время и минимальный уровень знаний специалиста по тестированию, их использование может располагать к распространению лености среди специалистов по безопасности. Так можно упустить множество значимых векторов компрометации, поскольку они не являются чем-то неизменным. Данная статья призвана пролить свет на малоизвестные и редко применяемые методы, на которые авторы данной статьи опирались в течение многих лет.

Средства атаки, рассмотренные в данной статье, зависят исключительно от конфигурации и от особенностей платформы объекта атаки. Никакого «эксплойта нулевого дня» в его обычном смысле не будет упомянуто, однако будут рассмотрены многие способы получения конфиденциальной информации, ловкие приемы и интересные способы атак.

уязвимости

Уязвимости – это временное явление. То, что обнаружено сегодня, может быть исправлено завтра. Программы для защиты данных и исправления в операционных системах могут сделать даже простые уязвимости непригодными для тестирования на проникновение. Вместо того чтобы относиться к сети как к списку уязвимостей, аудитор должен учитывать приложения, людей, процессы, степень доверительных отношений. Секрет получения доступа – использование того доступного ресурса, который способен приблизить вас к достижению цели. Применение рассматриваемого подхода приводит к тому, что даже в сети с полным комплектом существующих исправлений могут быть обнаружены объекты для эксплуатации.

Действия хакеров почти не связаны с эксплойтами. Как известно профессиональным аудиторам, только один или два эксплойта могут использоваться во время теста на проникновение. Все остальное время уходит на перехват паролей, злоупотребление доверительными отношениями, обход системы аутентификации и захват сервисов для получения доступа к другим системам. Успешная атака полностью связана с получением доступа и обретением контроля над данными.

состязание

Любая проверка на безопасность – это гонка наперегонки со временем. Аудитору приходится состязаться с реальными злоумышленниками, внутренними и внешними, которые не скованы теми рамками, которыми ограничен он сам. Например, как принято в практике деловых отношений, проверка безопасности не должна пересекаться с производственными службами или изменять критические данные. Злоумышленники же приспосабливаются к ситуации. Не важно, находится ли сервер на локальном или стороннем хостинге. Для них важно лишь получение необходимого доступа и обретения контроля над данными. Аудитор должен понимать: то, что не проверит он, проверит кто-то другой.

сбор информации

Первый шаг на пути к применению любых механизмов безопасности – это процесс первоначального сбора информации, то есть получение максимально возможного объема информации о целевом объекте, включая хосты, операционные системы, топологию и т.д. Рассмотрим разнообразные методы сбора информации, от внешних до внутренних, которые могут использоваться для планирования и запуска тестирования на проникновение.

сбор информации о персонале

Безопасность – это, прежде всего, вопрос человеческого фактора. Люди отвечают за написание и установку программ, их настройку и сопровождение. При проведении проверки систем безопасности какой-либо организации первым делом необходимо определить людей, имеющих отношение к созданию и сопровождение инфраструктуры. К счастью, существует ряд инструментов и сервисов, которые можно использовать для определения специалистов, контролирующих доступ к информации в организации.

поисковые системы

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

Evolution от Paterva

Paterva, южноамериканская компания, возглавляемая Ролофом Теммингом (Roelof Temmingh), предоставляет замечательный инструмент под названием Evolution. В настоящее время Evolution все еще находится в стадии бета-версии. Evolution может создавать перекрестные ссылки на информацию из большого количества общедоступных информационных ресурсов, используя широкий набор значений критериев (Name, Phone Numer, Email Address и т. д.). Например, в результате поиска «Х. Д. Мур» (один из авторов) мы получили список веб-сайтов, действительный адрес электронного почтового ящика и PGP-ключи.

сбор информации о сетях

Выяснить, какие сети контролирует организация, название которой нам известно, нелегко. Обычный процесс сбора информации начинается со стадии сбора информации о персонале и включает передачу зоны DNS, запросы Whois и анализ обратной зоны DNS. Эти инструменты не справляются с задачей отображения информации о том, какие хосты располагаются по данному IP-адресу или какими другими доменами владеет человек.

сервисы для сбора информации

К счастью, сейчас доступно некоторое количество замечательных веб-сервисов, которые могут копнуть еще глубже. Например, секция инструментов для вебмастеров на Digitalpoint.com предоставляет инструмент передачи зоны, который позволяет собрать информацию, не давая целевому объекту возможности видеть ваш настоящий исходный адрес.

Web-сайт DomainTools.com предоставляет ряд замечательных функций, но утилита Reverse IP на данный момент самая ценная. Утилита принимает на входе IP-адрес или имя и выдает список всех доменов, которые ведут обратно к этому IP. К сожалению, полный перечень результатов доступен только зарегистрированным пользователям, однако пробной учетной записью можно пользоваться бесплатно. Функция Reverse IP - замечательный способ определить, какие другие веб-сайты и компании используют данный сервер. Например, запрос Defcon.net в сервисе ”Reverse IP” дает следующие два перечня результатов:

8 результатов для 216.231.40.180 (Defcon.net) Website DMOZ Wikipedia Yahoo
Darktangent.net 0 listings 0 listings 0 listings
Defcon.net 0 listings 0 listings 0 listings
Defcon.org 1 listings 18 listings 1 listings
Hackerjeopardy.com 0 listings 0 listings 0 listings
Hackerpoetry.com 0 listings 0 listings 0 listings
Thedarktangent.com 0 listings 0 listings 0 listings
Thedarktangent.net 0 listings 0 listings 0 listings
Thedarktangent.org 0 listings 0 listings 0 listings

13 результатов для 216.231.40.179 (Defcon.net) Website DMOZ Wikipedia Yahoo
0day.com 0 listings 0 listings 0 listings
0day.net 0 listings 0 listings 0 listings
Darktangent.org 0 listings 0 listings 0 listings
Datamerica.com 0 listings 0 listings 0 listings
Datamerica.org 0 listings 0 listings 0 listings
Dcgroups.org 0 listings 0 listings 0 listings
Digitalselfedefense.com 0 listings 0 listings 0 listings
Infocon.org 0 listings 0 listings 0 listings
Jefflook.com 0 listings 0 listings 0 listings
Pinglook.com 0 listings 0 listings 0 listings
Republicofping.com 0 listings 0 listings 0 listings
Securityzen.com 0 listings 0 listings 0 listings
Zeroday.com 0 listings 0 listings 0 listings


Методы непрямого сбора информации, упомянутые выше, хороши для начала, однако для получения подробной информации о сети необходим более активный подход.

отвергнутые сообщения (рикошет)

Один из лучших методов, доступных для сбора данных о внутренней сети, - функция многих почтовых серверов «отвергнутые сообщения (рикошет)», Атака проводится отправкой по электронной почте сообщения, адресованного несуществующему пользователю в целевой организации. Почтовый сервер отправит рикошетное сообщение с указанием того, что пользователь не существует. Такое рикошетное сообщение часто содержит внутренний IP-адрес и имя хоста самого почтового сервера. Этот метод особенно эффективен с серверами Exchange, расположенными за каким-либо почтовым ретранслятором. Например, следующие заголовки содержат имя внутреннего хоста и IP-адрес почтового сервера RSA.com:

Received: (qmail 10315 invoked from network); 28 Jun 2007 15:11:29 -0500
Received: from unknown (HELO gateway1.rsasecurity.com) (216.162.240.250)
by [censored] with SMTP; 28 Jun 2007 15:11:29 -0500 Received: from hyperion.rsasecurity.com by gateway1.rsasecurity.com
via smtpd (for [censored]. [xxx.xxx.xxx.xxx]) with SMTP; Thu, 28 Jun 2007 16:11:29
Received: from localhost (localhost) by hyperion.na.rsa.net (MOS 3.8.3-GA) with internal id DEP35818;
Thu, 28 Jun 2007 16:18:14 +0500 (GMT-5)
Date: Thu, 28 Jun 2007 16:18:14 +0500 (GMT-5)
From: Mail Delivery Subsystem
Message-Id:<200706281118.DEP35818@hyperion.na.rsa.net>
To: user@[censored]
MIME-Version: 1.0
Content-Type: multipart/report;
report-type=delivery-status;
boundary="DEP35818.1183029494/hyperion.na.rsa.net" Subject: Returned mail: User unknown (from [10.100.8.152])


виртуальный хостинг

Практика расположения большого числа веб-сайтов на одном сервере с применением виртуального хостинга очень распространена. Обычной ошибкой конфигурации является расположение внутреннего, или предназначенного только для сотрудников, веб-сайта на одном физическом сервере с внешним сайтом. При соединении через Интернет с использованием внешнего имени хоста, отображается внешний сайт. Однако злоумышленник может подключиться к веб-серверу, указать имя внутреннего хоста в заголовке HTTP Host и получить доступ к ресурсам, предназначенным исключительно для внутреннего пользования. Например, следующие имена хостов часто используются для хостинга внутренних ресурсов и могут быть обнаружены на граничащих с Интернетом веб-серверах:

- localhost;
- www;
- intranet;
- admin.

Веб-сервер Apache поддерживает функцию «динамический виртуальный хостинг» (Dynamic Virtual Hosting). Эта функция позволяет добавлять новые виртуальные хосты, создав на сервере подкаталог и соответствующую DNS-запись. Когда Apache видит запрос, он будет искать подкаталог, содержащий имя, отправленное в заголовке HTTP Host. У данной функции имеется любопытная уязвимость. Если заголовок Host указан и содержит %00/, сервер вернет распечатку всех доступных виртуальных хостов в виде распечатки каталогов Apache. Такая методика работает только в том случае, если индексы каталогов доступны для глобальной конфигурации.

Приемы, связанные с именем виртуальных хостов, работают не только с конфигурациями виртуальных хостов. Многие веб-приложения предоставляют особый доступ при условии, что имена хостов localhost, 127.0.0.1 или admin указаны в заголовке HTTP Host.

исходящий DNS

Интересным подходом к сбору информации о сетях является анализ запросов DNS, отправляемых внутренними серверами DNS внешним хостам. Чтобы провести такую проверку, аудитор должен настроить внешний сервер DNS для обработки всех запросов к назначенному субдомену. Для форсирования поиска зоны DNS, можно послать электронное сообщение несуществующему внутреннему пользователю от отправителя с настроенного домена. Этот метод может сработать, если указать случайное имя хоста в пределах субдомена в заголовке запроса HTTP Host.

Не важно, каким образом запускается поиск зоны, гораздо важнее как выглядит сам запрос, когда он достигает DNS-сервера аудитора. Исходный порт запроса может указывать на тип сервера, отправившего запрос, а также был или не был запрос обработан NAT-устройством. Выполнение целевой системой множественных DNS-запросов дает возможность идентифицировать систему (выполнить fingerprinting). Например, все DNS-серверы будут использовать одинаковый исходный порт для всех исходящих запросов. Другие DNS-серверы будут использовать предсказуемую последовательность ID- транзакций. Некоторые разновидности кэшей DNS и систем нагрузки и кэширования будут сохранять в кэше все записи DNS-ответа, даже если он будет содержать имя, отличное от имени в исходном запросе. С помощью такого анализа можно идентифицировать и, возможно, подменить ответы на запросы DNS.

прямой контакт

Когда ничто уже не помогает, самым простым способом определить расположение и топологию сети становится прямая атака на пользователей. Согласно такому сценарию, аудитор формирует список email-адресов и идентификационных номеров в системах мгновенного обмена сообщениями для целевой организации. Затем аудитор отправляет HTTP-ссылку на веб-сайт, который проведет ряд тестов браузера пользователя. Таким образом, можно определить внутренний и внешний адреса рабочей станции пользователя, а также различные версии установленных программ. Например, инструмент Metasploit Decloak сообщает следующую информацию об одной из рабочих станций авторов:

External Address: xxx.xxx.197.131
Internal Host: shank Internal
Address: 10.10.xxx.xxx DNS Server
(Java): 151.164.20.201 DNS Server
(HTTP): 151.164.20.201 External NAT
(Java): xxx.xxx.197.131


межсетевые экраны и IPS

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

определение межсетевого экрана

Один из самых простых способов определения типа используемого межсетевого экрана – изучение схемы распределения исходящих портов для исходящих соединений. Можно добиться этого рядом различных способов, но просмотр исходящих соединений с web-сайтом, ссылка на который содержалась в рекламе или спаме, зачастую является самым быстрым способом. Еще один прямой способ идентификации (fingerprinting) межсетевого экрана – отправка серии попыток TCP-соединения с различными характеристиками сервису, защищенному межсетевым экраном. Например, пакеты SYN, отправленные программой hping2, часто пропускаются межсетевыми экранами Netscreen (из-за отсутствия TCP-опций).

определение IPS

Системы предотвращения вторжений (Intrusion Prevention Systems, IPS) предназначены для обнаружения и блокировки атак до того, как они достигнут целевого хоста. Идентифицировать такие устройства можно, предприняв серию атак с несколько разнящимися данными и проанализировав, какие из них были заблокированы. Рекомендуется создать древовидную схему, которая облегчит идентификацию конкретного IPS и изменения сигнатур. Например, TippingPoint IPS может обнаруживать PHF-запросы, при которых используется 0x0D для отделения метода и URI от HTTP-запросов, но этой системе не удается обнаружить запрос, при котором вместо 0x0D используется 0x0C. Другие IPS-устройства пропускают и 0x0D. Чтобы избежать обнаружения администратором, можно применить ряд атак, называемых «пропуск без оповещения» в стандартной конфигурации IPS.

сбор информации о приложениях

Настоящим целевым объектом большинства атак являются приложения. Приложения хранят данные и управляют доступом к этим данным. Каждое приложение – потенциальная точка входа в сеть, но обнаружить эти приложения непросто. Наиболее распространенный способ приложения – использование сканера сервисов, таких как Nmap, Amap, Nikto или даже Nessus.

тише едешь – незаметнее будешь

Существующие инструменты прекрасно справляются с обнаружением известных приложений, однако они приводят в действие системы предотвращения вторжений и активных межсетевых экранов. Избежать возникновения оповещений и черных списков IP поможет применение медленного, целенаправленного сканирования сервисов. Например, следующая командная строка Nmap обнаружит Microsoft Sql Server без запуска детектора сканирования портов популярной IPS:

# nmap -sS -P0 -T 0 -p 1433 A.B.C.D/24

обнаружение веб-приложений с W3AF

Эндрюс Рьянко выпустил программу под названием Web Application Attack and Audit Framework, которая представляет собой многофункциональную консоль для протокола HTTP с возможностью выполнения самых разнообразных действий. В программе имеется функция, позволяющая аудитору обнаружить приложения в веб-сервисе прямым подбором и методом обоснованных предположений.

модули обнаружения Metasploit 3

Последняя версия Metasploit Framework включает ряд модулей для сбора информации о приложениях, расположенных в подкаталоге auxiliary/scanner/. Эти модули можно использовать для обнаружения сервисов, которые трудно определить с помощью других методов. Например, модуль sweep udp может обнаружить сервисы DNS, SNMP, NetBIOS, Portmap, а также ряд других UPD-сервисов, произведя всего одну передачу данных:

[*] Sending 6 probes to xxx.xxx.xxx.0->xxx.xxx.xxx.255 (256 hosts)
[*] Discovered DNS on xxx.xxx.xxx.19 (TinyDNS)
[*] Discovered DNS on xxx.xxx.xxx.249 (BIND 8.4.6-REL-NOESW)
[*] Discovered DNS on xxx.xxx.xxx.250 (Microsoft)
[*] Discovered SNMP on xxx.xxx.xxx.170 (Ethernet Routing Switch)
[*] Discovered SNMP on xxx.xxx.xxx.171 (ProCurve J8692A)


обнаружение клиентских приложений

Клиентские приложения, например браузеры и email-клиенты, представляют собой точку входа в защищенную с других точек зрения сеть, которая без них могла бы считаться защищенной. Хотя администратор может ограничить возможности единичного веб-сервера и межсетевого экрана, но оберегать всех и каждого среди внутренних сотрудников от прямых атак невероятно сложно. Для того чтобы определить типы атак, нацеленных на внутреннего пользователя, аудитору необходимо знать, какое используется программное обеспечение, а также возможна ли доставка эксплойта по электронной почте.

идентификация (fingerprinting) браузера

Веб-браузер представляет собой новый вектор эксплуатации. Определение браузера целевой системы может помочь определить, какие типы атак стоит применить. Если браузер определен, аудитор может выбирать конкретные атаки, вероятность успешного завершения которых очень велика. Существует несколько способов идентификации браузеров, но самый распространенный метод состоит в том, чтобы обманом заставить целевой объект зайти на веб- страницу, расположенную на сервере, управляемом аудитором. Когда целевой объект соединяется с сервером, открывается веб-страница, которая выполняет ряд серверных и клиентских тестов для определения браузера, операционной системы и иногда даже уровень установленных исправлений. Заголовок User-Agent, автоматически отправляемый браузером, содержит более чем достаточно информации.

Internet Explorer под Windows 2000:

User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Firefox под Windows XP:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox

Opera под Windows 2000:

Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 2000) Opera 7.0

Mozilla под Windows 2000:

Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6) Gecko/20040113


идентификация почтового клиента

Почтовые клиенты часто недооцениваются как потенциальные векторы атак. К сожалению, определение почтового клиента целевой системы представляет некоторые трудности. В корпоративной сфере можно использовать оповещения о доставке (Message Delivery Notifications, MDNs) для получения ответного сообщения, содержащего название и версию используемого почтового клиента. Когда нет возможности использовать оповещения о доставке, аудитору следует полагаться на злоупотребление случаями, когда стандарт MIME имеет неоднозначное толкование, для показа различного содержимого каждому отдельному почтовому клиенту. В следующем сообщении содержатся важные заголовки из оповещения о доставке, отправленного почтовым клиентом Outlook Express:

MIME-Version:
1.0 Content-Type: multipart/report;
report-type=disposition-notification;
boundary="----
=_NextPart_000_0002_01C7BA3D.0DA9ED40" X-
Mailer: Microsoft Outlook Express
6.00.2900.2869 X-MimeOLE: Produced By
Microsoft MimeOLE V6.00.2900.2962


сбор информации о процессах

Автоматизированные бизнес-процессы могут создавать лазейки для злоумышленника. Многие финансовые организации используют незащищенные способы передачи файлов для совместного использования информации, но поскольку лазейка открывается на несколько минут за один раз, осознание риска невелико. Например, протокол FTP все еще широко используется в банках, и даже если шифрование применяется для файлов, то сам канал управления все равно не шифруется. Трудность в проверке бизнес-процесса определяется тем, когда и как проводится проверка.

отслеживание трафика с IP ID

Одной из замечательных функций протокола IPv4 является то, как применяется поле IP ID. Многие операционные системы будут осуществлять приращение этого поля на единицу для каждого пакета, отправленного хостом. Это позволяет аудитору определить, сколько пакетов было отправлено в определенный период времени, и учитывает любопытные типы атак, например, сканирование портов вслепую. Аудитор может отслеживать образцы трафика в течение длинного периода времени, зондируя целевую систему через равные промежутки времени и фиксируя разницу в полученном значении IP ID. С помощью данного типа мониторинга можно обнаружить такие бизнес-процессы, как передача файлов, операции резервного копирования и другие вспышки активности, вызванные автоматизированными системами.

отслеживание частоты использования с MS FTP

Служба Microsoft FTP позволяет анонимным пользователям выполнить команду SITE STATS. По этой команде предоставляется отчет о количестве запусков каждой конкретной команды, выполненной на сервере с момента запуска службы. Аудитор имеет возможность зайти на сервер, проанализировать эту статистику за длительный период времени и выстроить временную шкалу выполнения определенных операций. Например, статистика выполнения команды STOR увеличивается при выгрузке файла, таким образом, скачок в этой статистике указывает на время выполнения автоматической выгрузки. Следующие результаты, полученные с сервера FTP Microsoft, показывают, что из более чем двух миллиардов попыток регистрации, было выполнено всего 3035 команд STOR.

SITE STATS
200-ABOR : 2138
ACCT : 2
ALLO : 32
APPE : 74
CDUP : 5664
CWD : 388634
DELE : 1910
FEAT : 2970
HELP : 470
LIST : 3228866
MDTM : 49070
MKD : 870
MODE : 3938
NLST : 1492
NOOP : 147379
OPTS : 21756
PASS : 2050555100
PASV : 2674909
PORT : 786581
PWD : 179852
QUIT : 143771
REIN : 16
REST : 31684
RETR : 153140
RMD : 41
RNFR : 58
RNTO : 2
SITE : 20485
SIZE : 76980
SMNT : 16
STAT : 30812
STOR : 3035
STRU : 3299
SYST : 175579
TYPE : 3038879
USER : 2050654280
XCWD : 67
XMKD : 12
XPWD : 1401
XRMD : 2


мониторинг веб-сайтов

Протокол HTTP 1.1 поддерживает атрибут «Последнее редактирование» (Last-Modified). При получении запроса на статическое содержимое, соответствующий HTTP-сервер (например, Apache) автоматически отобразит дату последнего редактирования ресурса. Эта функция может использоваться для получения данных о времени автоматических обновлений корпоративных веб-сайтов.

внешние сети

Внешняя сеть – отправная точка для большинства тестов на проникновение. На внешних хостах часто применяются ограничения функциональности, межсетевые экраны, фильтрование, установка последних исправлений. Единственно доступные целевые объекты – это намеренно открытые приложения, VPN- сервисы и временные пути для запускаемых клиентами UPD-сессий.

атака передачи файлов

Передача файлов между внутренними и внешними хостами может стать объектом атаки в зависимости от протокола и используемого межсетевого экрана.

атака передачи по FTP

Протокол FTP использует временные порты для передачи данных, вводя открытый порт передачи данных либо на клиенте, либо на сервере, в состояние гонки. В зависимости от FTP-приложений может существовать возможность соединения с портом данных и получения содержимого загруженного файла или записи содержимого выгруженного файла.

Сценарий pasvagg.pl может использоваться для перехвата передачи по FTP при предоставлении сервером анонимного доступа, последовательном расположении портов и при условии, что FTP-сервер разрешает соединения с портами данных с IP-адресов, отличных от адреса клиента, запустившего передачу. Любой FTP-сервер, поддерживающий режим FXP, является уязвимым для этой атаки.

атака передачи по NFS

Протокол NFS включает ряд независимых сервисов удаленного вызова процедур (RPC-сервисов), каждый из которых может подвергнуться вмешательству при использовании NAT-шлюза. Сервисы NFS примут отклик от любого исходного IP и порта, содержащего достоверные данные, даже если хост не имеет никакого отношения к адресу, который был указан в параметрах соединения NFS. Поводом для этого служит поддержка NFS-серверов, присоединенных к нескольким физическим линиям данных, в которых отклики RPC приходят с IP, отличного от того адреса, с которым клиент вступал в соединение. Для обеспечения NFS-трафика через NAT, старые версии ядра Linux и многие современные NAT-устройства позволят отправку UPD-откликов клиенту с других IP-адресов. В действительности, это делает клиентские RCP-сервисы видимыми Интернету при установке клиентом соединения через NAT- устройство. Основная трудность с точки зрения аудитора заключается в том, чтобы найти временный порт, используемый для ретрансляции соединения, и затем определить, какому RCP-сервису он принадлежит.

атака почтовых сервисов

Типичная почтовая система состоит из одной или более систем ретрансляции, фильтра против вирусов и спама, реального почтового сервера и, в конечном счете, почтового клиента пользователя. В большинстве тестов на проникновение основное внимание уделяется промежуточным системам, однако сами почтовые клиенты тоже могут быть намечены в качестве целевого объекта. Например, в Mac OS X, если получены два email-сообщения, содержащие вложенные файлы с одинаковым названием, более новое сообщение может осуществить перезапись вложенного файла предыдущего сообщения, если степень совпадения полей высока. Это может применяться для замены безвредного вложенного файла лазейкой в почтовом ящике пользователя.

атака веб-серверов

Хотя веб-серверы являются самыми заметными целями для внешней сети, многие специалисты по тестированию на проникновение пропускают очевидные уязвимости. Прямой подбор имен общего файла или каталога может поставить под угрозу интерфейс администратора, резервные копии, архивы всего сайта и т.д. Отправка имен внутреннего хоста в заголовке HTTP Host может привести к доступности внутренних сайтов и областей, предназначенных только для сотрудников. В наше время почти на всех веб-серверах установлены приложения, а любое неизвестное приложение должно приобретаться у производителя и проверяться на наличие уязвимостей. И наконец, в некоторых системах балансировки нагрузки имеются проблемы с долговременными HTTP-сессиями, поэтому они могут допускать утечку информации от других пользователей.

атака DNS-серверов

В течение последних 10 лет многие DNS-серверы настраивались на отказ передачи зоны при запросе с неавторизованных хостов. Вместо извлечения зоны целиком, аудитор должен осуществить подбор возможных имен доменов и хостов для определения наличия таких записей. Многие DNS-серверы ошибочно настроены на разрешение поиска внутренних DNS-адресов, что может привести к разглашению имен и адресов важных серверов внутренней сети. Как ранее отмечалось в пункте об исходящих DNS, многие DNS-серверы все еще уязвимы из-за предсказуемой последовательности ID-транзакций или состояний гонок, таких как, например, вызванных Birthday-атакой. Успешная атака может привести к внедрению фальшивых DNS-записей в кэш и, возможно, к захвату внутреннего и внешнего доменов в зависимости от конфигурации сети.

атака сервера баз данных

Хотя серверы баз данных редко делают видимыми для внешней сети, быстрое сканирование общих сервисов баз данных в любом случае не помешает. Многие бизнес-приложения (Saleslogix и т.п.) используют двухзвенную архитектуру, из-за чего для функционирования приложений необходим прямой доступ к серверу баз данных. Имейте в виду, что некоторые серверы баз данных, например, Informix, все еще содержат известные уязвимости, для которых до сих пор не выпущено исправление.

ретрансляторы аутентификации

Одна из самых эффективных атак на внутренних пользователей из внешней сети опирается на ретрансляторы аутентификации. Многие организации делают серверы Microsoft IIS или Exchange видимыми Интернету. Эти серверы разрешают аутентификацию доменов Windows с использованием протокола NTLM. Если межсетевой экран жертвы не настроен на отклонение соединений через порт 139 и 445, то имеется возможность отправить пользователю email- сообщение или перенаправить его на веб-страницу, которая заставит рабочую станцию установить SMB-соединение с тем хостом, который вы выберите. На этом этапе, фактическое воздействие зависит от версии Windows, установленной на рабочей станции, и, в некоторых случаях, от того, какой веб- браузер или почтовый клиент используется.

В Windows 2000 и более ранних системах браузер будет автоматически проводить NTLM-аутентификацию с удаленным SMB-сервером, используя текущее имя пользователя и пользовательский пароль. Если аудитор предоставит вредоносный SMB-сервер, который ретранслирует эту аутентификацию на доступный извне IIS-сервер или Exchange, то он может получить прямой доступ к данной учетной записи пользователя. В Windows XP и более новых системах применение этого метода не всегда возможно из внешней сети. Учетные данные NTLM, используемые SMB, HTTP, SMTP, POP3 и IMAP4, обычно равнозначны, при условии, что Вы обладаете инструментарием для выполнения ретрансляции.

Альтернативой ретрансляции учетных данных является перехват и взлом самого хэша пароля. Для этой цели существует ряд инструментов, включая почтенный L0phtcrack (на данный момент уже недоступный) и Cain and Abel.

«бесплатное железо»

Последняя надежда. Аудитор перемещается по офису целевого объекта и раздает бесплатные USB-ключи (с автозапуском, конечно же) любому, кто согласится ответить на несколько вопросов для социологического опроса. Или же он может отправить по обычной почте компакт-диск с трояном, упакованным в автоматически запускающийся файл или в инсталлятор (и прощай разделение привилегий на Vista). Возможны такие надписи на CD, как ”Бесплатные MP3”, ”Бесплатное лицензионное соглашение” и т.д. Если же бюджет позволяет, может отправить по почте портативное устройство, например, Nokia Internet Tablet или Zaurus фирмы Sharp, содержащее полный набор лазеек на базе Linux.

Или же аудитор может создать обычный блок бесперебойного питания, содержащий встроенный ПК. Аудитор приобретает батарею резервного
электропитания (350 В-А или выше) с защитой от перегрузок для Ethernet-портов, вскрывает батарею, подсоединяет разветвитель питания к основному адаптеру питания, вставляет внутрь WRT54L фирмы Linksys, вставляет Ethernet-коммутатор с четырьмя портами и готовится к визиту в офис целевого объекта. Проникнув в целевой офис, аудитор может выдумать предлог, чтобы подобраться поближе к сетевым устройствам (принтерам, факсам и т. д.) и установить вредоносный блок бесперебойного питания.

внутренние сети

Термин «внутренняя сеть» обычно относится к критически важным и конфиденциальным данным большинства корпоративных сетей, но его можно также применить по отношению к сети, предоставленной определенной жертве через ложную точку доступа. Если доступ к внутренней сети получен, появляется возможность использования широкого диапазона новых атак.

имена NetBIOS

Протокол NetBIOS используется рядом приложений для определения важных хостов в сети. Некоторые имена NetBIOS рассматриваются как частные случаи. Например, NetBIOS-имя ”WPAD” будет автоматически использоваться как HTTP proxy-сервер, если оно разрешается сервером DNS. Имя ”ISASRV” является частным случаем для клиентов, ищущих ISA Server Proxy. Сторонние приложения имеют аналогичные настройки. Computer Associates Licensing Client будет искать локальный хост с именем CALICENSE для отправки ему запросов на авторизацию.

DNS-cерверы

Серверы DNS во внутренней сети часто настроены на разрешение обновлений без аутентификации. Даже когда Microsoft DNS- сервер настроен на отклонение запросов обновлений на базе DNS, все же возможно внедрить имена в локальную зону DNS, передав эти имена как имя хоста запросов DHCP- клиента (опция -h ISC dhcpcd-клиента). Эти типы DNS-атак могут позволить внутреннему злоумышленнику захватить полный доступ к критической системе, подменить серверы и осуществить новые атаки на пораженных клиентов.

WINS-cерверы

В дополнение к NetBIOS и DNS клиенты Windows также поддерживают разрешение имени с использованием протокола WINS. Как правило, DHCP-сервер отвечает за оповещение каждого клиента о том, какому серверу следует отправлять запросы WINS. Однако, используя захват DNS и оповещений NetBIOS, можно заставить клиента использовать вредоносный WINS-сервер вместо предписанного.

ретрансляторы аутентификации

В разделе о внешних сетях мы рассматривали атаки ретрансляции на SMB и другие сервисы, связанные с NTLM. Из внешней сети такая атака отчасти ограничена, поскольку Windows XP и более новые системы не проводят NTLM-аутентификацию автоматически. Во внутренней сети эта атака может нанести невероятный ущерб при совместном применении с одной из описанных выше атак DNS, WINS или NetBIOS. Если аудитор сможет осуществить подмену имени доверенного сервера, то можно осуществить атаку ретрансляции для обратного соединения с клиентской системой с использованием SMB, и, если у пользователя есть права администратора, полностью захватить управление системой, используя функции файловой системы и сервисов.

доверительные отношения

Доверительные отношения – одна из самых важных вещей для понимания и применения тестирования на проникновение. Доверительные отношения могут строиться по многим принципам, например, доверительные отношения:

- между хостом и хостом;
- между сетевым диапазоном и хостом;
- между пользователем и хостом;
- между пользователем и сетью;
- между билетами/маркерами аутентификации;
- между приложениями.

Доверительные отношения основываются на соглашениях между двумя объектами, которые учитывают какую-либо степень прав на доступ. Если аудитор имеет доступ к одному объекту, то он должен использовать доверительные отношения с другим объектом себе на пользу. Часто бывает так, что целевая система, которую аудитор хочет атаковать, недоступна по различным причинам, например, из-за межсетевого экрана, TCP-туннелей, NAT-устройств и т.д. Использование доверительных отношений в своих целях может стать отличным способом преодоления подобных препятствий.

Например, пусть целевым объектом является 192.168.0.1, и аудитор получил какими-либо способами имя пользователя и пароль. В целевой системе для удаленной регистрации используется SSH по порту 22. Однако целевая система также оснащена TCP-туннелями, которые разрешают SSH-соединения только в диапазоне адресов 192.168.1. Аудитор не сможет напрямую зайти в целевую систему при данных условиях. Однако если аудитору удалось скомпрометировать систему в сети 192.168.1, тогда, используя эти доверительные отношения в своих целях, он сможет зайти в систему по SSH, используя данную сеть, или же с помощью переадресации портов.
Например, создадим порт от 192.168.1.2 к 192.168.0.1:

$ datapipe 192.168.1.2 22 192.168.0.1 22

Один пример из реальной жизни с интересным использованием доверительных отношений, с которым авторам довелось столкнуться, был связан с пользовательским приложением лицензирования и распространения ПО. Было необходимо, чтобы на всех компьютерах целевой сети было установлено определенное ПО и чтобы оно запускалось под учетной записью администратора. Это означает, что между абсолютно любым компьютером и данным приложением существовали доверительные отношения. В этом приложении было имя пользователя и пароль учетной записи администратора внутри программного кода для выполнения операций. С помощью обратного инженерного анализа этого приложения были получены учетные данные пользователя. Далее аудиторы использовали тот факт, что данная учетная запись находилась в доверительных отношениях с большим числом пользователей, для компрометации каждого хоста в сети. Каждый ресурс, находящийся в доверительных отношениях с более чем одним пользователем или компьютером, является потенциальным средством достижения целей для аудитора.

Существует несколько особых технологий построения доверительных отношений, которые часто дают аудитору возможность получить доступ ко многим хостам. Об этом пойдет речь в следующих разделах.

домашние каталоги NFS

Во многих крупных сетях используется сервер протокола NFS (протокола сетевого доступа к файловым системам) для предоставления общего доступа файлов и домашних каталогов клиентам. Существует множество способов настройки этой системы, но обычно порт 2049 UDP или TCP на сервере делают открытым, каталог делают видимым либо всем, либо конкретным хостам и назначают права на чтение, запись и выполнение. Далее клиенты устанавливают эти экспортированные каталоги, которые кажутся такими же, как и все локальные каталоги в их файловых системах. Часто NFS используется совместно с Network Information Services (NIS) для автоматического задания параметров того, какие экспортированные каталоги следует установить, и для аутентификации пользователей. Такие типы систем часто настроены так, что любой пользователь может регистрироваться на любой машине и получать один и тот же домашний каталог.

Злоумышленник может разработать сканер порта 2049 для того, чтобы определить местоположение любых NFS-серверов в целевой сети. Аудитор может использовать инструмент под названием «showmount» для получения данных о конфигурации NFS-сервера.

# su - alice
[alice@homeserver ~] cd .ssh
[alice@homeserver .ssh] ssh-keygen -t rsa
Enter file in which to save the key (/home/alice/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/alice/.ssh/id_rsa.
Your public key has been saved in /home/alice/.ssh/id_rsa.pub.
The key fingerprint is:
e7:49:6a:eb:a9:a6:e4:b2:66:41:7e:ee:23:12:4c:28 alice@homeserver
[alice@homeserver ~]cp id_rsa.pub authorized_keys ; showmount -a homeserver tetris:/vol/home/alice
[alice@homeserver ~] ssh tetris
Last login: Thu Jun 28 11:53:18 2007 from homeserver [alice@tetrix ~]


захват SSH

SSH может также использоваться для получения сведений о других потенциальных целевых системах в сети. Каждый раз, когда пользователь соединяется с системой по SSH, в /.ssh/ создается файл под названием «known_hosts». Изучив этот файл, злоумышленник может узнать хосты, находящиеся в доверительных отношениях с этим пользователем.

[alice@homeserver .ssh]$ cat known_hosts dontownme,192.168.1.20
ssh-rsa AAABB3Nza[...]QSM=justanothertarget,192.168.1.21 ssh-rsa AAAB2NzaC[...]rQ=


С помощью SSH-ключей, описанных выше, злоумышленник, имеющий доступ к этим ключам, может потенциально зарегистрироваться на любом из этих хостов, например, на alice, без пароля.

Привилегированный режим SSH – еще одна функция, которая может помочь аудитору вторгнуться на новые хосты без использования эксплойтов. Привилегированный режим позволяет пользователю установить коридор, позволяющий открывать большое число сессий с использованием одного и того же SSH-соединения без повторной аутентификации. Это значит, что если с хостом установлено одно SSH-соединение в привилегированном режиме, тогда злоумышленник может открывать другие сессии, используя одно и то же соединение, при этом ему необязательно знать пароль или иметь доступ к ключу. Другой плюс привилегированного режима в том, что он зависит от клиента, т.е. версия сервера не имеет значения. Последствия этого состоят в том, что если вам удастся заменить пользовательский ssh-клиент, то привилегированный режим все равно будет работать, невзирая на версию сервера на другом конце соединения.

Существуют различные способы заставить пользователя установить соединение по SSH в привилегированном режиме. Один из очевидных способов – соединиться с помощью псевдонима SSH с SSH -M так, что он будет запущен без ведома пользователя. Другой метод состоит в том, чтобы изменить пользовательский конфигурационный файл SSH таким образом, чтобы он всегда работал в привилегированном режиме.

Edit ~/.ssh/config
Add: Host
*
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h:%p
Mkdir ~/.ssh/sockets


Теперь, когда пользователь установит соединение по SSH с другим хостом, это будет происходить как будто бы с использованием опции -M. Если вам удастся стать пользователем, то вы сможете установить соединение по SSH и к хосту тоже без аутентификации в рамках текущего соединения. Реальный пример использования захвата SSH для получения доступа к большому числу хостов имел место, когда авторам удалось скомпрометировать главный сервер домашнего каталога, с которого каталоги по NFS экспортировались сотням клиентов. Авторы оставляли их собственные ssh-ключи, не содержащие паролей, в каждом домашнем каталоге ssh/ пользователя, а затем использовали сценарий для извлечения всех уникальных хостов из каждого файла known-hosts. Затем они могли установить соединение по SSH с сотнями узлов в сети под любым пользователем по выбору.

захват Kerberos

Kerberos – протокол аутентификации. Он предоставляет надежную аутентификацию клиентским и серверным приложениям с помощью шифрования с использованием секретного ключа. Kerberos генерирует «билеты» для использования их с различными сервисами. Во многих операционных системах этот «билет» хранится в качестве файла у определенного пользователя в каталоге /tmp, имя которого начинается с krb.

Захват Kerberos – это процесс захвата пользовательского «билета» и использования его для доступа к ресурсам, находящимся в пределах доверительных отношений с этим пользователем. В сущности, под этим подразумевается регистрация на других компьютерах, принимающих «билет» Kerberos этого пользователя. При данной атаке происходит злоупотребление тем фактом, что каждый узел находится в доверительных отношениях с системой. Это позволяет злоумышленнику перемещаться по сети, компрометировать хосты без применения эксплойтов или отключения оповещений, поскольку, в общем, это будет выглядеть как допустимое поведение пользователя.

Основная процедура захвата «билетов» Kerberos начинается с получения доступа к корневому каталогу системы с большим количеством пользователей, на которой применяется Kerberos. Далее следует поиск пользователя, которого можно наметить в качестве целевого объекта, и списка всех файлов в /tmp. После этого злоумышленник заходит под учетной записью пользователя, используя команду su, и запускает klist, чтобы просчитать, какое предполагается имя файла «билета». Затем «билет» копируется из /tmp. В заключение kinit снова запускается для проверки статуса «билета». Теперь у злоумышленника появляется возможность зарегистрироваться в любой системе, на которой применяется Kerberos и которая находится в доверительных отношениях с захваченным пользователем, без необходимости предоставления пароля. Ниже следует пример.

Что видит обычный пользователь при запуске klist:

target|alice|1>klist
Default principal: alice@target
Valid starting Expires Service principal
06/28/07 11:03:25 06/28/07 21:03:25 krbtgt/target@target
renew until 07/05/07 11:03:25
Kerberos 4 ticket cache: /tmp/tkt5116
klist: You have no tickets cached


Это означает, что для пользователя alice назначен «билет», позволяющий ему устанавливать соединение с любой системой, на которой применяется Kerberos, без ввода пароля до указанной даты истечения срока действия.

Что делает злоумышленник:

bash-3.00# ls -al /tmp/krb*
-rw ----- 1 alice eng 383 Jun 28 08:19 /tmp/krb5cc_10595_ZH8kq4<---- FREE ACCESS!
Bash-3.00# klist
Ticket cache: FILE:/tmp/krb5cc_6425<---- expected filename Default principal: valsmith@target
Valid starting Expires Service principal
06/28/07 12:14:50 06/28/07 22:14:50 krbtgt/target@target renew until 07/05/07 12:14:39
Change the file to the expected name and check status:bash-3.00# cp /tmp/krb5cc_10595_ZH8kq4 /tmp/krb5cc_6425
bash-3.00# klist
Ticket cache: FILE:/tmp/krb5cc_6425
Default principal: alice@target<--- we are now her!
Valid starting Expires Service principal
06/28/07 08:19:42 06/28/07 18:19:42 krbtgt/target@target renew until 07/05/07 08:19:42


Кроме того, существуют также и другие типы атак на Kerberos. Еще один способ состоит в том, что злоумышленник генерирует или завладевает действительным «билетом». Затем злоумышленник помещает свое имя пользователя в файл klogin другого пользователя. После этого у злоумышленника появляется возможность устанавливать соединение с любой системой, с которой пользователь находится в доверительных отношениях. Kerberos примет «билет» злоумышленника и будет рассматривать его в качестве целевого объекта. Также важно скопировать файлы «билетов» в надежное место, так что если пользователь запустит kdestroy, «билет» не будет утрачен. С помощью Kerberos можно также получить некоторые конфиденциальные данные. Часто в корне домашнего каталога пользователя имеется .klogin, показывающий, какой пользователь авторизован на соединение с использованием команды su с корневым каталогом по протоколу kerberos. Так злоумышленник получает перечень пользователей с широкими полномочиями в качестве целевого объекта для следующих атак, конечная цель которых - получение доступа к корневому каталогу без необходимости применения эксплойта в его обычном понимании.

Процесс кражи «билета» Kerberos можно автоматизировать и применить в нем сценарий, чтобы в результате получить сотни или даже тысячи пользовательских «билетов» в зависимости от размера сети.

Конкретный пример захвата Kerberos был связан с тем, что на целевом объекте использовалась малораспространенная операционная система и архитектура. Аудиторам не были доступны какие-либо известные эксплойты против целевого объекта. Сервер также был защищен TCP-туннелями от неавторизованной регистрации. Тем не менее, целевая система находилась в доверительных отношениях с несколькими крупными серверами домашних каталогов, на которых были запущены NFS, NIS, SSH и Kerberos. Аудиторы получили доступ к одному из этих серверов домашних каталогов и стали просматривать пользовательские файлы known_hosts, чтобы найти пользователя, в истории которого имелись записи о регистрации в целевой системе. Когда удалось обнаружить такого пользователя, «билет» Kerberos был похищен, и аудиторы зарегистрировались в целевой системе с сервера домашнего каталога. Это дало возможность аудитору обойти туннели и не быть замеченным в качестве подозрительного пользователя. Зарегистрировавшись, он приобрел возможность просмотреть файл для корневого каталога .klogin и получить перечень привилегированных пользователей, чтобы наметить их в качестве целевого объекта. Эти пользователи относились к этому же серверу домашнего каталога, поэтому их «билеты» также были захвачены. После этого аудиторы получили возможность зарегистрироваться в целевой системе и ввести ksu, таким образом, получая доступ к корневому каталогу.

заключение

Методы, описанные в данной статье, наглядно показывают, как даже сеть с полным комплектом существующих исправлений может быть скомпрометирована решительным злоумышленником. Профессиональные специалисты по тестированию систем безопасности пользуются широким спектром методов атаки, которые редко попадают в контрольные листы, если вообще попадают. Самым лучшим средством атаки и по сей день остается человеческий мозг.



Х. Д. Мур, Вэлсмит, metasploit.com. Перевод securitylab.ru.


Сетевые решения. Статья была опубликована в номере 06 за 2008 год в рубрике save ass…

©1999-2024 Сетевые решения