Когда речь заходит о хакинге, неважно, об этичном или не очень, многие из нас представляют темное помещение с мониторами и очкастым профессионалом с красными от постоянного недосыпания глазами. Действительно ли систему может взломать только гик-профессионал и действительно ли для того, чтобы протестировать защищенность своих систем необходимо привлекать только таких экспертов? А нельзя ли вооружить грамотного ИТ-специалиста хакерскими инструментами и логичной методологией и получить качественный результат? Попробуем разобраться.
Для того, чтобы разобраться в составляющих современной методологии тестирования защищенности, нам необходимо рассмотреть основные ее «кирпичики» — базовые подходы: классический тест на проникновение, сканирование на наличие уязвимостей и анализ конфигурации.
Тест на проникновение
В ходе теста на проникновение специалист по тестированию защищенности действует как настоящий хакер: находит те уязвимости, которые легче всего использовать, эксплуатирует их и получает доступ к нужной информации. Как правило, в качестве цели выступает необходимость получить административный доступ или доступ к конкретной информации (например, данные о зарплатах топ-менеджеров).
Ключевой особенностью тестирования на проникновение является то, что осуществляется поиск не всех имеющихся уязвимостей, а только тех, которые необходимы для достижения выбранных целей (как и в случае реального взлома). Так как происходит боевая эксплуатация уязвимостей, возможны негативные последствия в виде зависших сервисов, перезагрузки серверов, головной боли у системных администраторов, выслушивания менеджером по ИБ мата со стороны руководства компании.
Сканирование на наличие уязвимостей
Представьте, что вы решили взломать сайт «голыми руками». Что вы сделаете? В первую очередь, постараетесь определить версию используемого Web-сервера и/или CMS-системы. Зачем? Для того, чтобы «прогуглить» и найти информацию об уже известных уязвимостях и имеющихся эксплойтах. Так злоумышленники поступали 15 лет назад, так же поступают и сейчас.
Данный процесс можно автоматизировать, что и сделали многочисленные разработчики средств анализа защищенности: появились сканеры уязвимостей. Конечно, сканеры не пользуются Google, а ищут информацию об уязвимостях в собственной базе.
Сканирование уязвимостей позволяет быстро «перелопатить» ИТ-инфраструктуру и найти проблемные места. Но сканер действует линейно и может пропустить интересные комбинации уязвимостей, которые в совокупности создают серьезную брешь в защите.
Рассмотрим следующий пример. Крупная производственная компания заказала тестирование защищенности. В первый день внутреннего тестирования на ресепшн замечаем на стикере пароль учетной записи, записанный заботливой рукой секретаря. Мы его скрыто фотографируем и через пять минут с данной учеткой запускаем специальную утилиту для поиска «расшаренных» папок (сейчас такой сканер есть в составе того же Metasploit Framework). В результате находим рабочую станцию сотрудника технической поддержки, ответственного за «накатывание» образов ОС на машины новых сотрудников компании.
Для своего и нашего удобства ИТ-специалист «расшарил» для всех папку с подготовленными образами. Мы не преминули воспользоваться такой любезностью и «вытянули» хеш пароля локального администратора, который и «раскрутили» за ночь. Полный доступ ко всем рабочим станциям предприятия был получен за одни сутки! Применение обычного сканера позволило бы найти «расшаренную» папку, но сканер не смог бы ни заглянуть внутрь, ни раскрутить хеш.
Важный промежуточный вывод: применение сканеров уязвимостей ускоряет тестирование, но ни в коем случае не обеспечивает его полноту.
Анализ конфигурации
Любой компонент ИТ-инфраструктуры (ОС, СУБД, активное сетевое оборудование и т.п.) содержит массу настроек, которые и определяют уровень защищенности. Правильные настройки можно найти в документации вендора или в статьях экспертов, делящихся своим опытом. На основе подобных материалов такие организации, как National Institute of Standards and Technology и Center of Internet Security уже многие годы готовят чеклисты, позволяющие проводить аудит конфигурации различных систем. Существуют аналогичные закрытые проекты и в рамках сообществ ИТ-аудиторов компаний «Большой четверки» (BIG4).
Анализ конфигурации может проводиться как вручную, так и с помощью автоматизированных средств, но в любом случаем подразумевает наличие административного доступа к проверяемой системе. Это аналогично тому, если у нас на коленке сидит симпатичная девушка-системный администратор и показывает нам все. Анализ конфигурации самый безопасный вариант анализа защищенности, но в то же время и самый долгий.
Разобравшись с тремя подходами к тестированию защищенности, самое время вспомнить, что все это должно делаться с какой-то определенной целью.
Цели тестирования защищенности
Все чаще заказчики тестирования защищенности озвучивают следующие две цели: выявить максимальное количество реальных уязвимостей для того, чтобы их оперативно закрыть и проверить бдительность сотрудников компании.
Для достижения поставленных целей нельзя провести полноценное тестирование, воспользовавшись только одним из рассмотренных подходов. Чистым тестом на проникновение мы не покроем всех имеющихся уязвимостей, ограничившись только сканированием на наличие уязвимостей, мы закопаемся в большом количестве «мусорных» срабатываний, а ошибки в настройках, обнаруженные в ходе анализа конфигурации, далеко не всегда приведут к реальной возможности проникновения. Необходимо подходы комбинировать.
Комплексное тестирование защищенности
Для формирования подхода комплексного тестирования защищенности целесообразно взять последовательность действий злоумышленников и добавить применение эффективных инструментов, которые не могут позволить себе настоящие хакеры из-за их демаскирующих признаков.
Процесс тестирования защищенности разобьем на следующие этапы в соответствии с этапами реального взлома:
- поиск целей;
- поиск уязвимостей;
- эксплуатация;
- расширение привилегий и зоны влияния.
Шаг 1. Поиск целей
Единственный этап, которого в проекте по тестированию защищенности может и не быть, в случае, если заказчик сразу передал нам список целей.
Если тестирование внешнее, и заказчик сообщил нам только название компании, то на этом этапе мы занимаемся полноценной интернет-разведкой, целями которой являются информационные ресурсы заказчика и его сотрудники (особенно если проект предусматривает применение методов социальной инженерии).
На данном шаге мы изучаем:
- сайты, связанные с компанией заказчика, а именно: узнаем доменные имена, адреса электронной почты, структуру организации и т.п.;
- сайты вакансий: внимательно читаем, кого ищет ИТ-директор заказчика (в описаниях вакансий зачастую подробно описаны используемые в компании технологии);
- социальные сети: собираем данные на сотрудников-пользователей;
- сайты поставщиков ИТ-решений/услуг, которые хвалятся, что, когда и как сделали для нашего заказчика;
- делаем запросы к сервису whois и выясняем, какие сети зарегистрированы на заказчика или каких провайдеров IP-адресов он использует;
- делаем запросы к DNS-серверам и выясняем, нет ли у заказчика ресурсов с доменами третьего уровня: vpn.ooo-romashka.ru, ftp.ooo-romashka.ru и т.п. Определяем, какие почтовые сервисы используются.
В итоге, мы формируем список IP-адресов информационных ресурсов, связанных с заказчиком, списки сотрудников и др.
В случае внутреннего тестирования защищенности этичный хакер получает физический доступ к розетке, прослушивает сетевой трафик и определяет диапазоны IP-сетей, с которых он может начать свою работу.
Шаг 2. Поиск уязвимостей
Зная цели, можно смело приступать к поиску уязвимостей. В основном, мы делаем это с помощью сканеров уязвимостей, но и не отказываемся от ручного поиска уязвимостей, особенно в случае Web-приложений.
В итоге мы получаем список потенциальных уязвимостей, который еще предстоит проверить.
Важное примечание: если мы с вами действуем на данном шаге без административного доступа к системам, то не ожидайте, что какой-либо сканер вам покажет все имеющиеся уязвимости на конкретном узле. Чтобы найти максимум уязвимостей, придется повторить это упражнение с уже добытыми потом и кровью административными учетными записями.
Шаг 3. Эксплуатация
После того как мы составили список потенциальных уязвимостей, неплохо бы их проверить на возможность эксплуатации и еще поискать дополнительные, которые невозможно найти с помощью сканеров и Google. Зачем это нужно делать? Этому есть несколько причин.
Во-первых, закрытие любой уязвимости — это настоящая головная боль для системных администраторов, у которых полно другой работы. Также всегда есть шанс, что что-нибудь «отвалится» после накатывания патча или изменения настроек. Поэтому целесообразнее грузить наших любимых системных администраторов только стоящими проблемами: теми уязвимостями, которые действительно опасны, а это можно установить только, проверив возможность эксплуатации.
Во-вторых, существует множество уязвимостей, которые могут быть проверены только в процессе эксплуатации: например, слабый пароль, возможность SQL-инъекции или XSS.
На данном шаге мы с вами:
- аккуратно запускаем эксплойты;
- перехватываем трафик с помощью ARP-poisoning;
- подбираем пароли;
- «раскручиваем» добытые хеши паролей;
- проверяем на возможность SQL-инъекции/XSS и других атак, специфичных для Web-приложений;
- делаем многое другое в зависимости от конкретной ИТ-инфраструктуры заказчика.
В результате данного шага мы выясняем, какие из обнаруженных уязвимостей реальны, находим «боевым» тестированием новые уязвимости и смотрим, что можно получить если эксплуатировать их.
Если получим желанный административный доступ, то сможем вернуться к предыдущему шагу и найти еще больше уязвимостей.
Шаг 4. Расширение привилегий
Получив доступ к какой-либо системе, мы пытаемся понять, к чему получили доступ и можно ли его расширить в рамках одной системы (например, до уровня администратора) или в рамках всей ИТ-инфраструктуры.
Простой пример. Подобрав пароль пользователя к одной системе, проверяем, не подойдет ли данная пара логин/пароль для доступа к другим системам.
Таким образом, рассмотренный подход позволяет обнаруживать максимальное количество реальных уязвимостей с помощью доступных инструментов.
Бесплатный инструментарий этичного хакера
Для настоящего взлома и тестирования на проникновение существует несколько сотен утилит.
Отдельно хочу отметить, что арсенал взломщиков не получится заменить каким-либо одним, пусть даже коммерческим сканером, соответственно, для полноценного тестирования защищенности необходимо использовать несколько инструментов.
Безусловным лидером среди подобных инструментов «в одной коробке» является сборка Kali Linux.
Сведем в один список наиболее полезные и чаще всего используемые этичными хакерами бесплатные программы:
- NMAP — сканер портов, может использоваться как сканер уязвимостей и даже средство подбора паролей в случае использования NSE;
- OpenVAS — cканер уязвимостей;
- Metasploit Framework — фреймворк для проведения тестирования на проникновение, содержащий в себе как эксплойты, так и специализированные модули (например, для поиска «расшаренных» папок, для генерации бэкдоров, подбора паролей и т.п.);
- Burp Suite Free Edition — локальный прокси/сканер для анализа защищенности Web-приложений;
- THC-Hydra — утилита для подбора паролей к сетевым сервисам;
- HashCat — утилита для подбора паролей по хешам;
- Ettercap — cниффер для перехвата и анализа сетевого трафика;
- Wireshark — cниффер для перехвата и анализа сетевого трафика;
- Aircrack-ng — набор утилит для тестирования безопасности беспроводных сетей.
Есть еще масса утилит, решающих узкоспециализированные задачи. Неплохой перечень подобных инструментов входит в уже упоминавшуюся сборку Kali Linux: https://tools.kali.org/tools-listing.
Ох уж эта кошмарная командная строка…
Основная проблема, с которой сталкивается специалист при работе с подобными инструментами, заключается в том, что большинство из них имеют нетривиальный пользовательский интерфейс, а зачастую, это просто командная строка и миллион непонятных параметров. Как раз данный момент способствует культивированию стереотипа, что тестирование на проникновение – удел лишь настоящих гиков.
В НПО «Эшелон» мы смогли эту проблему решить и сделать продукт, позволяющий проводить комплексное тестирование защищенности, не сталкиваясь со сложным интерфейсом хакерских утилит. В новой версии комплекса тестирования защищенности «Сканер-ВС» появился удобный Web-интерфейс, позволяющий, не выходя из одного рабочего пространства, провести:
- сканирование портов и идентификацию сетевых сервисов;
- сканирование уязвимостей (с административными привилегиями и без них);
- подбор паролей к различным сетевым сервисам;
- поиск подходящих эксплойтов;
ну и конечно же, сформировать единый отчет с результатами проверки.
Проведение тестирования защищенности с помощью «Сканер-ВС»
Для демонстрации реализации комплексного тестирования защищенности мы рассмотрим процесс анализа виртуальной машины Metasploitable 2
Загружаем «Сканер-ВС» с USB-носителя и открывается главное окно:
Создаем проект, внутри которого задачи уже связаны с соответствующими фазами тестирования защищенности. Мы последовательно проводим сканирование портов, уязвимостей, подбор паролей и эксплойтов и получаем общую картину:
Внутри каждой фазы доступны соответствующие результаты.
Сканирование портов:
Сканирование уязвимостей с помощью готовых политик или своей собственной. Стоит отметить, что база уязвимостей обновляется еженедельно и содержит плагины для выявления уязвимостей в отечественных СЗИ. Мы также поддерживаем Банк данных угроз ФСТЭК России.
Подбор подходящих экплойтов из Metasploit Framework. Возможен как строгий поиск по версии сервиса, так и нестрогий по его типу.
Подбор паролей проводится к различным сетевым сервисам. При этом можно использовать как собственные наборы пользователей/паролей, так и встроенные списки, содержащие наиболее часто встречающиеся варианты.
Результаты работы каждой задачи сохраняются в базе данных, и на их основе формируется итоговый отчет.
Так как «Сканер-ВС» построен на основе Kali Linux, пользователю доступны все стандартные утилиты из данной сборки хакерских инструментов. Также реализованы следующие инструменты, используемые для оценки эффективности средств защиты информации:
- анализ безопасности конфигурации Astra Linux;
- анализ уровня обновлений Windows;
- контрольное суммирование;
- поиск остаточной информации;
- анализ используемого программного и аппаратного обеспечений;
- гарантированное уничтожение информации на диске.
Чтобы дальше не скатываться в прямую рекламу нашей разработки, всех, кому интересно, попробовать наше решение в действии, приглашаем посетить сайт http://scaner-vs.ru и скачать самую последнюю версию решения для тестирования.
Литература и полезные источники информации
Комментарии (10)
alexdorofeeff Автор
12.09.2017 23:00Cobolorum, поделитесь своими знаниями: какие проблемы помимо отсутствия дружественного интерфейса у инструментов для тестирования необходимо рассматривать и решать?
SirEdvin
12.09.2017 23:10+1отсутствия дружественного интерфейса у инструментов для тестирования необходимо
Нет более дружественного инструмента, чем командная строка. Если вы используете cmd.exe и по этому она плоха — это ваша проблема.
Эту проблему уже обсуждали сотни раз. Вот у вас есть nmap с кучей параметров и для получения результата вам нужно только заполнить команду.
А теперь вместо nmap у вас целый интерфейс с кучей кнопок и настроек, которые делают меньше, чем nmap. Есть ли в этом смысл, или это для неосиляторов?
alexdorofeeff Автор
12.09.2017 23:26Смотрите, SirEdvin, сейчас полноценное тестирование защищенности должен по-хорошему уметь провести любой системный администратор. Одного сканера уязвимостей для этого недостаточно. Глубоко погружаться в работу с nmap, openvas, metasploit'ом и т.п. обычному администратору совсем неинтересно. Нужен инструмент, позволяющий с минимальными усилиями проверить основные «болевые точки» на уровне, близком к тому, что будут делать злоумышленники, соответственно их же инструментами.
А командную строку у экспертов никто отбирать и не собирается, само собой.SirEdvin
12.09.2017 23:51Нужен инструмент, позволяющий с минимальными усилиями проверить основные «болевые точки» на уровне, близком к тому, что будут делать злоумышленники, соответственно их же инструментами.
Но проблема в том, что результаты тоже нужно кому-то интерпретировать. И какой смысл в любом системном администраторе, который может прокликать кнопочки, но по факту не будет знать, что делать дальше и который не сможет понять, какие уязвимости на самом деле критичные, а какие нет. А то будет как с валидацей docker образов.
Проблема в том, что доверять тестирование защищенности какому-то системному администратору, который как-то его проведет и что-то в итоге сделает — не очень разумно для большой компании. А маленькой ваш инструмент вряд ли подойдет, как я понимаю.
alexdorofeeff Автор
13.09.2017 00:05-5SirEdvin, «Сканер-ВС» подойдет любой компании, в которой понимают важность необходимости держать уязвимости под контролем. Цены демократичные, а сейчас еще и акцию запустили «Сканерозамещение».
Результаты интерпретировать легко — посмотрите на скриншоты с отчетом: каждой уязвимости назначен определенный уровень опасности, а если удалось пароли подобрать или найти эксплойты из состава Metasploit Framework — так тут тем более все очевидно.
Тратить сотни тысяч рублей на этичных хакеров сейчас, к сожалению, могут не все. Во многих организациях, обязанности по ИБ в лучшем случае лежат на том самом системном администраторе.
facet
13.09.2017 08:06+1Но проблема в том, что результаты тоже нужно кому-то интерпретировать. И какой смысл в любом системном администраторе, который может прокликать кнопочки, но по факту не будет знать, что делать дальше и который не сможет понять, какие уязвимости на самом деле критичные, а какие нет.
Да, конечно, интерпретация необходима. Но скажем так, с интерпретацией значительной части уязвимостей всё достаточно прозрачно: как правило это либо необновленные компоненты и системы (openssl, Apache), либо ошибки конфигурации.
Сканер безопасности даёт базовую информацию об уязвимости и её важности плюс ссылки на БДУ ФСТЭК, CVE и другие источники, в который кстати как правило, есть метрика CVSS (критичности уязвимости), которую можно разобрать детально по векторам с учётом особенностей своей сетки + там есть ссылки на дополнительные веб-ресурсы, где можно изучить детали уязвимости, как она проявляется и к чему ведёт.
Пусть лучше тогда системный администратор потратит время на изучение этих деталей, чем на "курение" мануалов nmap и Metasploit.
В большинстве случаев (но конечно, не всех) данный подход оправдан.
Вспомним, что все IT-технологии строятся на декомпозиции и инкапсуляции сложности по разным уровням и компонентам.
Мы можем не знать, зачем вызывается
xor eax, eax
, и не понимать тонкостей работы аллокатора с кучей, но при этом писать прекрасно работающие и полезные программы.
Подобные "погружения" в нижележащий слой, в некоторых особых редких случаях нужны, но конечно не всегда.
heleo
14.09.2017 11:37Я так понимаю «Сканер-ВС» надстроенный над Kali Linux тоже сертифицирован как и «Рубикон» надстроенный над IPCop?
alexdorofeeff Автор
14.09.2017 14:56Спасибо, heleo, что обратили внимание на то, что «Сканер-ВС» — сертифицированное решение. Решение сертифицировано и ФСТЭК России, и Минобороны России.
ahenar
14.09.2017 14:52Мы можем не знать, зачем вызывается xor eax, eax, и не понимать тонкостей работы аллокатора с кучей, но при этом писать прекрасно работающие и полезные программы.
Сколько будут существовать разработчики живущие под таким лозунгом (я не хочу думать, я хочу программировать) — столько же будет существовать и хакерское ремесло ;).
На github'е полно комбайнов выполняющие описанный функционал. Пусть не всегда под одним капотом, и нужно использовать 2-3 утилиты… но это есть. И бесплатно.
Cobolorum
Когда пишут такое «Основная проблема, с которой сталкивается специалист при работе с подобными инструментами, заключается в том, что большинство из них имеют нетривиальный пользовательский интерфейс, а зачастую, это просто командная строка и миллион непонятных параметров. » Это заставляет усомнится в вашей компетентности.