Пентест история, или… есть такая профессия – вежливый взломщик
Лирическое вступление!
Мир всё больше и больше скатывается в цифровую плоскость. Бизнес и государство перестраивает и автоматизирует свои процессы. Информационные ресурсы начинают активно передавать данные через Интернет. Злоумышленники так же перестраиваются. Теперь киберпространство становится целью для атак с желанием наживы. Чтобы украсть «кошелек», ограбить банк или даже развязать войну, не обязательно выходить из дома. 2018-й год показал, что даже одна масштабная вредоносная кампания может нанести ущерб, сопоставимый с доходами небольшого государства. А за 2017 год ущерб от компьютерных преступлений в мире превысил $600 млрд. !
Поэтому всё чаще и чаще организации хотят понимать уровень реальной защищенности своих данных и что делать, чтобы его повысить. Пентест – это отличный ответ на поставленный вопрос. Кстати, «Pentest» («Penetration test» – «тест на проникновение») – это разговорное название процедуры анализа защищенности информационных систем путем поиска и эксплуатации их уязвимостей.
Вот еще несколько убедительных доводов:
Когда нам говорят о 100% надежности систем информационной безопасности на предприятии мы всегда приводим один пример.
Одному из наших заказчиков мы предложили провести пентест, для того чтобы показать на сколько он недооценивает вопросы ИБ на своем предприятии или переоценивает своих сотрудников.
Заказчику показалась весьма любопытной тема проверки реальной защищенности его информационных систем. Уж очень хотел он узнать, есть ли слабые места в его инфраструктуре, получить оценку эффективности работающей системы ИБ, и рекомендации по быстрому повышению реального уровня защиты. Тем более что в компетенции и надежности нашей компании он был уверен. Ведь Пентест, можно сказать, очень интимная услуга. Не всем хочется знать о своих слабостях и тем более если на них указывают со стороны.
Алгоритм проведения пентеста
С заказчиком, название которого по понятным причинам мы не раскрываем (немаленькое, кстати сказать, производственное предприятие с развитой инфраструктурой и высокой зрелостью в части ИБ (как вы увидите дальше, лишь на бумаге)), договорились попробовать «взломать» его с двух сторон – изнутри и снаружи. Естественно, предварительно заключив «Соглашение о конфиденциальности», которое позволяет работать на преддоговорной основе и получать от Заказчика информацию в виде заполненного опросного листа.
От Заказчика была принята задача. Нужно было, имитируя действия реального нарушителя, получить админские привилегии для управления доменом.
Начать свои изыскания было позволено из гостевого сегмента при отсутствии каких-либо сведений о конфигурации сети. Спецы Заказчика довольно улыбались, намекая, что нам «ничего не светит». Но…
Мы с умным и невозмутимым видом приступили к делу. К слову сказать, была использована собственная методика, в основе которой – NIST SP800-115 и OWASP Foundation «OWASP Testing Guide».
Этапы работы, в общем-то, стандартны. Это сбор информации, ее анализ и эксплуатация уязвимостей. Эксплуатация – вещь опасная, и нужно всё тщательно согласовать с Заказчиком, чтобы не «завалить» работающие системы. В итоге, договорились, что, когда мы находим «дыры» в системе защиты (назовем их «открытые двери»), то сразу информируем Заказчика об этих «дверях» и в режиме диалога определяемся, насколько далеко мы можем в них «входить».
Поиск «дверей» закончился успешно. 9 штук при обследовании внешнего периметра (имитация действий хакера) и 18 при поиске изнутри (действия инсайдера). Естественно, все найденные уязвимости были описаны в Отчете, и Заказчику предложены способы устранения.
Собрав нужную инфу, перешли к эксплуатации уязвимостей. Это всегда весело! Потому что начинается тот самый penetration, от которого и произошло слово «Pentest» J
Забегая вперед, скажу, что было найдено несколько «железобетонных» способов добиться поставленной цели. Перед презентацией результатов специалисты по IT и ИБ Заказчика (всё ещё) самодовольно спрашивали, удалось ли «накопать ну хоть что-нибудь». Наш сотрудник в своей невозмутимой манере просто снял улыбку с их лиц фразой: «Ребят, мы вас взломали, как минимум, двумя разными способами». Конечно, потом они запросили материалы, информацию, скриншоты, описание действий и прочее. Всё это мы предоставили им в виде подробного отчета.
Итак, давайте посмотрим, как это было. Забегая вперед, скажу, что было найдено НЕЧТО, что заставило гендира Заказчика во время презентации заёрзать в кресле. Но об этом чуть позже.
Из гостевой подсети, не имея сведений о диапазонах адресов, был проведен скан. Нашли хост с Windows XP (да-да, ретрограды среди нас), которая оказалась подвержена уязвимости MS08-067. Плюс бонус – пустой пароль от админской учетки. К сожалению, осмотр данных на машине не дал ценной информации для дальнейшего продвижения. Ветка зашла в тупик.
Далее попробовали просканить определенный диапазон адресов. Проанализировав трафик, нашли пакеты DTP, которые сообщили, что порт на коммутаторе Cisco находится в дефолтном режиме Dynamic Auto. А это значит, что есть возможность провести атаку типа Vlan Hopping! В итоге удалось заменить режим порта на TRUNK. Теперь можно идентифицировать VLANы. Для каждого из VLAN был настроен виртуальный интерфейс и успешно были получены IP-адреса. Так мы смогли залезть из гостевой сети в корпоративную.
Довольно потирая руки в предвкушении еще большего веселья, мы продолжили свои изыскания.
После получения конфигурации DNS-серверов, вывалился список контроллеров домена, спасибо DNS-запросу. Теперь нужно сузить круг поиска целей. Провели разведку хостов с использованием DNS-запросов по словарю из ~5000 самых популярных DNS-имен. Получили список реальных хостов и их адресов.
Теперь нужно было получить любую доменную учетную запись, пусть даже не привилегированную, чтобы провести углубленную разведку через доступ к AD и для последующих атак, чтобы достичь контроллеров домена.
По итогам скана выбрали все хосты с устаревшей ОС Windows XP/2003, уязвимые к MS08-067 (легко эксплуатируется и может дать полный доступ к уязвимой системе). Под учеткой скомпрометированного локального админа с уязвимых хостов попробовали войти на другие хосты. В результате был получен доступ еще к 4 машинам! Кстати, для доступа не пришлось восстанавливать пароль. Нужен был лишь его хэш (атака Pass-the-Hash). Такая вот особенность Windows…
Но тут нас ждало разочарование. Ни одна из 4 рабочих станций не оказалась в домене… Ну хорошо… Решили попробовать NetBios-спуфинг (атакующий отвечает на каждый NetBios/Browser/LLMNR-запрос своим ip-адресом). Эти запросы обычно посылаются рабочей станцией, если она использует короткие имена, без указания полного домена. Обманутая ложным ответом, рабочая станция может выполнить подключение к сервису на хосте атакующего. Иногда (это зависит от сервиса), это влечет за собой отправку хэша пароля. В итоге, «обманутый» хост подключился, и мы получили хэш от пароля доменного пользователя. Брутфорсом пароль был вскрыт за 10 минут. Удача явно на нашей стороне.
Заполучив доменную учетную запись, появилась возможность подключиться к службе каталогов AD и произвести разведку структуры предприятия. AD нужен для получения списка доменных пользователей из группы админов домена. Далее решили попробовать два способа получения доступа к контроллеру домена.
Способ 1 – «горизонтальная эскалация привилегий». Это повторение попыток получения доступа к известному списку хостов, извлекая хэши паролей наиболее привилегированных пользователей с машин, к которым имеется доступ. Повторения проводятся, пока не найдется учетка админа домена.
Используя полученную ранее доменную учетную запись, попробовали подключиться к административным шарам C$, ADMIN$ на всех известных машинах. Результат – получен доступ к ряду хостов. С каждого он вытащил список работающих пользователей, и содержимое куста реестра HKLM\Security (LSA secrets). LSA secrets — это хранилище чувствительных данных. Там лежат хэши 10 последних успешных попыток входа под доменной учетной записью. В результате была найдена учетная запись пользователя, которая имеет доступ на большую часть хостов серверной подсети.
С каждого хоста был получен список активных пользователей, на некоторых была обнаружена активная учетная запись доменного администратора. Вытащить ее пароль не составило труда.
В итоге, получив ее, доступ к контроллеру домена оказался открыт. Это значит, что мы получили доступ к базе данных пользователей домена, а также к любому серверу или рабочей станции внутренней сети компании, включенной в домен.
Главная цель была достигнута. Однако, было бы не интересно, если бы мы не решили попробовать снова дойти до цели, но другим путем.
Способ 2 – «подделка kerberos ticket». Любой, даже не привилегированный, пользователь домена, может получить от контроллера kerberos ticket (билет), с которым он может иметь доступ к произвольной рабочей станции, которая, в свою очередь, доверяет контроллеру домена, выдавшему данный билет. Т.е., всего-то, нужно суметь подделать билет и указать в нем максимальные привилегии в рамках домена.
Получив билет, пропатчили его нужным нам образом. Подарком судьбы было то, что контроллер домена не проверял контрольную сумму билета. Таким образом, у нас снова появилась возможность войти на произвольную рабочую станцию домена. Ну, а дальше – см. способ 1.
Несмотря на достижение главной цели двумя независимыми способами, нашего героя было уже не остановить J
На некоторых активных сетевых устройствах Cisco был найден запущенный сервис Cisco Smart Install. Он позволяет читать/писать startup-конфиг устройства, перезагружать его, при этом не требуя аутентификации. В общем, рулить устройством, перекраивая его настройки по собственному усмотрению.
Помимо прочего, на одном из хостов мы нашли уязвимость MS08-067. Поэксплуатировав ее, получили доступ к интерфейсу системы видеонаблюдения! Ну, естественно, с данного узла получили дамп хэшей паролей пользователей.
Все найденные ранее хосты с открытым 445/tcp портом прошерстили на предмет анонимного доступа к расшаренным ресурсам с правом записи. На каждый из таких расшаренных ресурсов закинули ярлык. Он обрабатывается проводником Windows так, что происходит обращение к указанному ресурсу. В качестве ресурса был указан специальный ресурс, при обращении к которому жертва автоматически отправляет хэш текущего пользователя. Потом – рутина: брутфорс – и восстановленный пароль. А с его помощью можно получать доступ к самой рабочей станции.
В сервисе IBM System Storage Tape Library была найдена SSL-уязвимость heartbleed. Говоря по-русски, это «недержание» памяти процесса. Могут «утечь», в т.ч., чувствительные данные (логины, пароли, идентификаторы сессий и пр.).
На одном из хостов была найдена уязвимость в сервисе Microsoft IIS (MS15-034). Она происходит из-за ошибки анализа HTTP-заголовка Range в драйвере http.sys и дает возможность удаленно исполнять программный код злоумышленника с наивысшими привилегиями.
На внутреннем почтовом сервере была открыта возможность анонимной отправки сообщений за пределы домена. На сервере имелся OpenRelay. Правда, почтовое сообщение не дошло до адресата благодаря дальнейшей фильтрации. Но, как говорится, осадочек-то остался. Наличие OpenRelay – это недочет. И мы бы даже не писали про почтовик, если бы не возможность запуска команды VRFY. Она позволяет проверять правильность имени адресата перед отправкой. Т.е., злоумышленник может просто подобрать имена пользователей сервера с ее помощью.
Нашли VoIP-шлюз. Доступ к «админке» осуществлен по дефолтным логину и паролю (*facepalm*). Где-то «рядом» нашелся ip-телефон тоже с дефолтными учетными данными производителя.
Была проведена рутинная проверка на наличие уязвимости MS17-010. По результатам проверки выборочных 82 рабочих станций с ОС Windows, уязвимыми оказались 30 хостов. Это 36%. Потенциально 36% парка машин подвержены полному несанкционированному доступу, со всеми вытекающими последствиями. Часть из них, как оказалось, принадлежала бухгалтерии.
При анализе внутреннего портала обнаружена SQL-инъекция в телефонном справочнике, который реализован отдельным веб-приложением на PHP. Инъекция позволяет получить результат выполнения запроса с информацией из справочника, которую в дальнейшем можно использовать, например, для социальной инженерии.
А ТЕПЕРЬ, ВНИМАНИЕ, НЕЧТО! Ради этого стоило копать! Именно это заставило генерального директора Заказчика снять очки и проснуться на презентации!
По результатам скана было найдено ~500 хостов с открытыми http/https-портами. Со всех них получили снимки индексных (дефолтных) страниц. В результате просмотра снимков найдены устройства, само наличие которых недопустимо в корпоративной сети! В основном, это устройства типа PLC (программируемый логический контроллер). По умолчанию они должны быть выведены в отдельную производственную сеть. Но, видимо, администраторы решили упростить себе работу.
Учитывая, что PLC напрямую управляют производственными линиями, при этом не имея механизмов аутентификации, их наличие в корпоративной сети – большая… недальновидность, скажем так. Представьте, что вы, по сути, дали возможность примерно 500 сотрудникам инструмент по модификации производственного цикла. Это может привести к абсолютно непредсказуемым последствиям. Как скоро Заказчик произнесет сакральную фразу: «Что-то пошло не так»?
Во время презентации эта ситуация красочно обсуждалась представителями Заказчика. Передать коротко ее можно словами: «Ну как же так, друзья?»
…Из всего вышесказанного можно сделать правильный философский вывод. Никакие правильно составленные документы, политики, правила, регламенты и прочие писульки важные ОРД, никакие системы, подсистемы, средства и пароли не заменят дотошного пентестера. Только он один, этот герой невидимого фронта, находясь на стороне добра, сможет открыть вам глаза на истину и сообщить всю правду о вашей безопасности, ради вашей же безопасности. Главное – чтобы до него на эту правду не наткнулся другой. Антигерой, который руководствуется совсем другими мотивами.
А кто из них будет первым, решать только Вам!
Собственно кейс. Анализ реальной защищенности информационной системы производственного предприятия
Задача: получить полный контроль над доменом из гостевого сегмента сети методом «черного ящика» (отсутствии каких-либо сведений о конфигурации сети).
Ход решения:
1 – Необходимо попасть из гостевого сегмента сети в корпоративный (сканирование сегмента, анализ трафика; замена режима порта коммутатора Cisco с Dynamic Auto (по умолчанию) на TRUNK; идентифицированы VLANы; получены IP-адреса). Возможность реализована.
2 – Необходимо получить учетные данные доменного администратора (сканирование сегмента сети, поиск компьютеров с уязвимостями, получение доступа к ним и локальных учетных записей; получение доменной учетной записи; разведка структуры домена; получение списка доменных пользователей из группы администраторов домена).
2.1. (способ 1) Найдена учетная запись, имеющая доступ на большую часть хостов серверной подсети. С каждого получен список активных пользователей. На некоторых обнаружена активная учетная запись доменного администратора. Получение ее данных.
2.2. (способ 2) Подделка kerberos ticket и указание в нем максимальных привилегий (возможность получения доступа к любой доменной рабочей станции). Получение данных учетной записи доменного администратора.
Summary. Что мы накопали
Помимо выполненной задачи по получению контроля над доменом, Заказчик просил информировать его и о прочих обнаруженных уязвимостях.
- Операционные системы, установленные на ряд АРМ, устарели (Windows XP и Windows 7). Найденные в них уязвимости не «закрываются» производителем. Существует риск получения полного несанкционированного доступа к уязвимой системе. Выборочная проверка показала 36% уязвимых рабочих станций, в т.ч. некоторые принадлежат бухгалтерии. Доступ к критической бухгалтерской документации и процессам может привести к ощутимым негативным последствиям.
- Имеется возможность получения доступа для управления и произвольной перенастройки ряда сетевых устройств, VoIP-шлюза и одного из IP-телефонов. Злоумышленник может существенно затруднить работу локальной сети и телефонии, что приведет к вынужденному простою в работе персонала, потенциально – к финансовым и, возможно, репутационным издержкам.
- Был получен доступ к интерфейсу системы видеонаблюдения. С ее помощью злоумышленник может быть осведомлен об обстановке на предприятии в режиме реального времени, о конфигурации, размещении и характеристиках камер, чтобы использовать эту информацию для проработки возможных путей проникновения на защищаемую территорию и движения по ней.
- Ряд сервисов (в частности, внутренний почтовый сервер и телефонный справочник) дают возможность получения или подбора имена пользователей. Эта информация может быть полезной для злоумышленника при проведении социальной инженерии или уточнения имен учетных записей.
- Были найдены устройства, наличие которых недопустимо в корпоративной сети. Устройства типа PLC (программируемый логический контроллер) напрямую управляют производственными линиями, при этом не имеют возможности устанавливать пароль для доступа к ним. Их наличие в корпоративной сети – критическая проблема, т.к. у любого пользователя с соответствующими привилегиями есть возможность влиять на производственный цикл. Это может привести к выпуску продукции ненадлежащего качества, срыву сроков поставки, выводу из строя производственных линий и т.д. В данном случае весьма вероятны непредсказуемые финансовые и репутационные риски.
Финансовые затраты на проведение услуги пентеста для выявления уязвимостей, подобных описанным выше, по сравнению с возможными издержками в случае наступления негативных ситуаций, минимальны. Это делает пентест одним из самых выгодных инструментов для повышения уровня реальной защищенности информационной системы организации.
Мы поможем найти уязвимости в Вашей инфраструктуре и дать рекомендации по борьбе с ними |
ЗАКАЗАТЬ ПЕНТЕСТ |
Если у вас есть вопросы по проведению пентеста или другие вопросы связанные с информационной безопасностью, задавайте в комментариях или наших группах в социальных сетях, я обязательно на них отвечу!
Руденко Дмитрий
Руководитель отдела комплексных систем защиты информации.
“Инжиниринговый центр РЕГИОНАЛЬНЫЕ СИСТЕМЫ”
Присоединяйтесь к нам в социальных сетях и будьте в курсе последних событий в области ИБ