Используя сочетание новых инструментов и малоизвестных методов, мы проследим от начала до конца процесс компрометации организации без использования обычного набора экплойтов.
При тестировании на проникновение все внимание часто сосредотачивается на уязвимостях и сервисах. В данной статье представлен тактический подход, который не связан с эксплуатацией известных уязвимостей. Используя сочетание новых инструментов и малоизвестных методов, мы проследим от начала до конца процесс компрометации организации без использования обычного набора экплойтов. Будут рассмотрены многие инструментальные средства, например, новые модули Metasploit Framework.
В течение последних десяти лет авторы данной статьи имели отношение к проверке системы защиты и к тестированию на проникновение. Специалисты по безопасности обычно используют имеющееся в наличии программное обеспечение для автоматизации процесса тестирования на проникновение. Во многих организациях такие инструментальные средства, как Nessus, Retina и Core Impact, заменили проверки вручную и контрольные списки.
В то время как подобные инструментальные средства выполняют львиную долю работы, уменьшая необходимое время и минимальный уровень знаний специалиста по тестированию, их использование может располагать к распространению лености среди специалистов по безопасности. Так можно упустить множество значимых векторов компрометации, поскольку они не являются чем-то неизменным. Данная статья призвана пролить свет на малоизвестные и редко применяемые методы, на которые авторы данной статьи опирались в течение многих лет.
Средства атаки, рассмотренные в данной статье, зависят исключительно от конфигурации и от особенностей платформы объекта атаки. Никакого «эксплойта нулевого дня» в его обычном смысле не будет упомянуто, однако будут рассмотрены многие способы получения конфиденциальной информации, ловкие приемы и интересные способы атак.
Уязвимости – это временное явление. То, что обнаружено сегодня, может быть исправлено завтра. Программы для защиты данных и исправления в операционных системах могут сделать даже простые уязвимости непригодными для тестирования на проникновение. Вместо того чтобы относиться к сети как к списку уязвимостей, аудитор должен учитывать приложения, людей, процессы, степень доверительных отношений. Секрет получения доступа – использование того доступного ресурса, который способен приблизить вас к достижению цели. Применение рассматриваемого подхода приводит к тому, что даже в сети с полным комплектом существующих исправлений могут быть обнаружены объекты для эксплуатации.
Действия хакеров почти не связаны с эксплойтам. Как известно профессиональным аудиторам, только один или два эксплойта могут использоваться во время теста на проникновение. Все остальное время уходит на перехват паролей, злоупотребление доверительными отношениями, обход системы аутентификации и захват сервисов для получения доступа к другим системам. Успешная атака полностью связана с получением доступа и обретением контроля над данными.
Любая проверка на безопасность – это гонка наперегонки со временем. Аудитору приходится состязаться с реальными злоумышленниками, внутренними и внешними, которые не скованы теми рамками, которыми ограничен он сам. Например, как принято в практике деловых отношений, проверка безопасности не должна пересекаться с производственными службами или изменять критические данные. Злоумышленники же приспосабливаются к ситуации. Не важно, находится ли сервер на локальном или стороннем хостинге. Для них важно лишь получение необходимого доступа и обретения контроля над данными. Аудитор должен понимать: то, что не проверит он, проверит кто-то другой.
Первый шаг на пути к применению любых механизмов безопасности – это процесс первоначального сбора информации, т.е. получение максимально возможного объема информации о целевом объекте, включая хосты, операционные системы, топологию и т.д. В данной главе рассматриваются разнообразные методы сбора информации, от внешних до внутренних, которые могут использоваться для планирования и запуска тестирования на проникновение.
Безопасность – это, прежде всего, вопрос человеческого фактора. Люди отвечают за написание и установку программ, их настройку и сопровождение. При проведении проверки систем безопасности какой-либо организации первым делом необходимо определить людей, имеющих отношение к созданию и сопровождение инфраструктуры. К счастью, существует ряд инструментов и сервисов, которые можно использовать для определения специалистов, контролирующих доступ к информации в организации.
Google по-прежнему остается одним из лучших ресурсов для сбора информации. С помощью поиска по названию организации в сети можно получить список сайтов и услуг, предоставляемых организацией. С помощью поиска по названию в архивах телеконференций можно получить список прошлых и нынешних сотрудников. Сообщения в телеконференциях и группах новостей часто содержат полное название должности и имя сотрудника. С помощью поиска изображений иногда можно получить снимки людей, офисов и даже серверных.
Paterva[1], южноамериканская компания, возглавляемая Ролофом Теммингом (Roelof Temmingh), предоставляет замечательный инструмент под названием Evolution. В настоящее время Evolution все еще находится в стадии бета-версии, текущая версия web-интерфейса расположена по адресу http://www.paterva.com/evolution.html. Evolution может создавать перекрёстные ссылки на информацию из большого количества общедоступных информационных ресурсов, используя широкий набор значений критериев (Name, Phone Numer, Email Address и т. д.). Например, в результате поиска «Х. Д. Мур» (один из авторов) мы получили список web-сайтов, действительный адрес электронного почтового ящика и PGP-ключи.
Выяснить, какие сети контролирует организация, название которой нам известно, нелегко. Обычный процесс сбора информации начинается со стадии сбора информации о персонале и включает передачу зоны DNS, запросы Whois и анализ обратной зоны DNS. Эти инструменты не справляются с задачей отображения информации о том, какие хосты располагаются по данному IP-адресу или какими другими доменами владеет человек.
К счастью, сейчас доступно некоторое количество замечательных web-сервисов, которые могут копнуть еще глубже. Web-сайты CentrolOps.net и DigitalPoint.com предоставляют ряд полезных сервисов для сбора информации о сети. CentralOps.net предоставляет сервис ”Domain Dossier” («Досье домена»), который объединяет различные запросы DNS и Whois в единый отчет, имеется также возможность быстрого сканирования портов. Секция инструментов Digital-Point.com предоставляет инструмент передачи зоны, который позволяет собрать информацию, не давая целевому объекту возможности видеть ваш настоящий исходный адрес.
Web-сайт DomainTools.com предоставляет ряд замечательных функций, но утилита ”Reverse IP” («Обратный IP») на данный момент самая ценная. Утилита принимает на входе IP-адрес или имя и выдает список всех доменов, которые ведут обратно к этому IP. К сожалению, полный перечень результатов доступен только зарегистрированным пользователям, однако пробной учетной записью можно пользоваться бесплатно. Функция ”Reverse IP” - замечательный способ определить, какие другие web-сайты и компании используют данный сервер. Например, запрос Defcon.net в сервисе ”Reverse IP” дает следующие два перечня результатов:
8 результатов для 216.231.40.180 (Defcon.net) Website DMOZ Wikipedia Yahoo
13 результатов для 216.231.40.179 (Defcon.net) Website DMOZ Wikipedia Yahoo
Методы непрямого сбора информации, упомянутые выше, хороши для начала, однако для получения подробной информации о сети необходим более активный подход.
Один из лучших методов, доступных для сбора данных о внутренней сети, - функция многих почтовых серверов «отвергнутые сообщения (рикошет)», Атака проводится отправкой по электронной почте сообщения, адресованного несуществующему пользователю в целевой организации. Почтовый сервер отправит рикошетное сообщение с указанием того, что пользователь не существует. Такое рикошетное сообщение часто содержит внутренний 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 <MAILER-DAEMON@hyperion.na.rsa.net>
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])
Практика расположения большого числа web-сайтов на одном web-сервере с применением виртуального хостинга очень распространена. Обычной ошибкой конфигурации является расположение внутреннего, или предназначенного только для сотрудников, web-сайта на одном физическом сервере с внешним сайтом. При соединении через Интернет с использованием внешнего имени хоста, отображается внешний сайт. Однако злоумышленник может подключиться к web-серверу, указать имя внутреннего хоста в заголовке HTTP Host и получить доступ к ресурсам, предназначенным исключительно для внутреннего пользования. Например, следующие имена хостов часто используются для хостинга внутренних ресурсов и могут быть обнаружены на граничащих с Интернетом web-серверах:
Web-сервер Apache поддерживает функцию «Динамический виртуальный хостинг» (“Dynamic Virtual Hosting”)[2]. Эта функция позволяет добавлять новые виртуальные хосты, создав на сервере подкаталог и соответствующую DNS-запись. Когда Apache видит web-запрос, он будет искать подкаталог, содержащий имя, отправленное в заголовке HTTP Host. У данной функции имеется любопытная уязвимость. Если заголовок Host указан и содержит %00/, сервер вернет распечатку всех доступных виртуальных хостов в виде распечатки каталогов Apache. Такая методика работает только в том случае, если индексы каталогов доступны для глобальной конфигурации.
Приемы, связанные с именем виртуальных хостов, работают не только с конфигурациями виртуальных хостов. Многие web-приложения предоставляют особый доступ при условии, что имена хостов ”localhost”, ”127.0.0.1” или ”admin” указаны в заголовке HTTP Host.
Интересным подходом к сбору информации о сетях является анализ запросов DNS, отправляемых внутренними серверами DNS внешним хостам. Чтобы провести такую проверку, аудитор должен настроить внешний сервер DNS для обработки всех запросов к назначенному субдомену. Для форсирования поиска зоны DNS, можно послать электронное сообщение несуществующему внутреннему пользователю от отправителя с настроенного домена. Этот метод может сработать, если указать случайное имя хоста в пределах субдомена в заголовке запроса HTTP Host.
Не важно, каким образом запускается поиск зоны, гораздо важнее как выглядит сам запрос, когда он достигает DNS-сервера аудитора. Исходный порт запроса может указывать на тип сервера, отправившего запрос, а также был или не был запрос обработан NAT-устройством. Выполнение целевой системой множественных DNS-запросов дает возможность идентифицировать систему (выполнить fingerprinting). Например, все DNS-серверы будут использовать одинаковый исходный порт для всех исходящих запросов. Другие DNS-серверы будут использовать предсказуемую последовательность ID-транзакций. Некоторые разновидности кэшей DNS и систем нагрузки и кэширования будут сохранять в кэше все записи DNS-ответа, даже если он будет содержать имя, отличное от имени в исходном запросе. С помощью такого анализа можно идентифицировать и, возможно, подменить ответы на запросы DNS.
Когда ничто уже не помогает, самым простым способом определить расположение и топологию сети становится прямая атака пользователей. Согласно такому сценарию, аудитор формирует список email-адресов и идентификационных номеров в системах мгновенного обмена сообщениями для целевой организации. Затем аудитор отправляет HTTP-ссылку на web-сайт, который проведет ряд тестов браузера пользователя. Таким образом, можно определить внутренний и внешний адреса рабочей станции пользователя, а также различные версии установленных программ. Например, инструмент 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
Межсетевые экраны развились из простых пакетных фильтров до многоуровневых, сетевых шлюзов, поддерживающих функции анализа содержимого. Подобные продукты могут мешать тестированию на проникновение и тратить время аудиторов и сетевых администраторов. Для уменьшения влияния, оказываемого подобными устройствами, необходимо, прежде всего, идентифицировать их. Если тип устройства известен, обойти фильтры содержимого и избежать занесения в черный список будет намного проще.
Один из самых простых способов определения типа используемого межсетевого экрана – изучение схемы распределения исходящих портов для исходящих соединений. Можно добиться этого рядом различных способов, но просмотр исходящих соединений с web-сайтом, ссылка на который содержалась в рекламе или спаме, зачастую является самым быстрым способом. Еще один прямой способ идентификации (fingerprinting) межсетевого экрана – отправка серии попыток TCP-соединения с различными характеристиками сервису, защищенному межсетевым экраном. Например, пакеты SYN, отправленные программой hping2[3], часто пропускаются межсетевыми экранами Netscreen (из-за отсутствия TCP-опций).
Системы предотвращения вторжений (Intrusion Prevention Systems, IPS) предназначены для обнаружения и блокировки атак до того, как они достигнут целевого хоста. Идентифицировать такие устройства можно, предприняв серию атак с несколько разнящимися данными и проанализировав, какие из них были заблокированы. Рекомендуется создать древовидную схему, которая облегчит идентификацию конкретного IPS и изменения сигнатур. Например, TippingPoint IPS может обнаруживать PHF-запросы, при которых используется 0x0D для отделения метода и URI от HTTP-запросов, но этой системе не удается обнаружить запрос, при котором вместо 0x0D используется 0x0C. Другие IPS-устройства пропускают и 0x0D. Чтобы избежать обнаружения администратором, можно применить ряд атак, называемых «пропуск без оповещения» в стандартной конфигурации IPS.
Настоящим целевым объектом большинства атак являются приложения. Приложения хранят данные и управляют доступом к этим данным. Каждое приложение – потенциальная точка входа в сеть, но обнаружить эти приложения непросто. Наиболее распространенный способ приложения – использование сканера сервисов, таких как Nmap[4], Amap[5], Nikto[6] или даже Nessus [7].
Существующие инструменты прекрасно справляются с обнаружением известных приложений, однако они приводят в действие системы предотвращения вторжений и активных межсетевых экранов. Избежать возникновения оповещений и черных списков IP поможет применение медленного, целенаправленного сканирования сервисов. Например, следующая командная строка Nmap обнаружит Microsoft SQL Server без запуска детектора сканирования портов популярной IPS:
# nmap -sS -P0 -T 0 -p 1433 A.B.C.D/24
Эндрюс Рьянко выпустил программу под названием Web Application Attack and Audit Framework[8], которая представляет собой многофункциональную консоль для протокола HTTP с возможностью выполнения самых разнообразных действий. В программе имеется функция, позволяющая аудитору обнаружить приложения в web-сервисе прямым подбором и методом обоснованных предположений.
Последняя версия 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)
Клиентские приложения, например web-браузеры и email-клиенты представляют собой точку входа в защищенную с других точек зрения сеть, которая без них могла бы считаться защищенной. Хотя администратор может ограничить возможности единичного web-сервера и межсетевого экрана, но оберегать всех и каждого среди внутренних сотрудников от прямых атак невероятно сложно. Для того чтобы определить типы атак, нацеленных на внутреннего пользователя, аудитору необходимо знать, какое используется программное обеспечение, а также возможна ли доставка эксплойта по электронной почте.
Web-браузер представляет собой новый вектор эксплуатации. Определение браузера целевой системы может помочь определить, какие типы атак стоит применить. Если браузер определен, аудитор может выбирать конкретные атаки, вероятность успешного завершения которых очень велика. Существует несколько способов идентификации браузеров, но самый распространенный метод состоит в том, чтобы обманом заставить целевой объект зайти на web-страницу, расположенную на сервере, управляемом аудитором. Когда целевой объект соединяется с сервером, открывается web-страница, которая выполняет ряд серверных и клиентских тестов для определения браузера, операционной системы и иногда даже уровень установленных исправлений. Заголовок User-Agent, автоматически отправляемый браузером, содержит более чем достаточную информацию.
Internet Explorer для Windows 2000
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Firefox running для 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 все еще широко используется в банках, и даже если шифрование применяется для файлов, то сам канал управления все равно не шифруется. Трудность в проверке бизнес-процесса определяется тем, когда и как проводится проверка.
Одной из замечательных функций протокола IPv4 является то, как применяется поле IP ID. Многие операционные системы будут осуществлять приращение этого поля на единицу для каждого пакета, отправленного хостом. Это позволяет аудитору определить, сколько пакетов было отправлено в определенный период времени, и учитывает любопытные типы атак, например, сканирование портов «вслепую»[9]. Аудитор может отслеживать образцы трафика в течение длинного периода времени, зондируя целевую систему через равные промежутки времени и фиксируя разницу в полученном значении IP ID. С помощью данного типа мониторинга можно обнаружить такие бизнес-процессы, как передача файлов, операции резервного копирования и другие вспышки активности, вызванные автоматизированными системами.
Служба 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) автоматически отобразит дату последнего редактирования ресурса. Эта функция может использоваться для получения данных о времени автоматических обновлений корпоративных web-сайтов.
Разбираем кейсы, делимся опытом, учимся на чужих ошибках