Тестирование на проникновение: методы, инструменты и стратегии для обнаружения и устранения слабых мест в системе

Тестирование на проникновение: методы, инструменты и стратегии для обнаружения и устранения слабых мест в системе

Тестирование на проникновение (пентест) — это процесс оценки безопасности компьютерных систем или сетей путем имитации атаки злоумышленника. Цель пентеста — выявить уязвимости и устранить их, чтобы повысить уровень защищенности. В процессе пентеста используются различные методологии, стратегии, инструменты и модели нарушителей.

Как понять, что компании нужен пентест?

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

Если у компании есть свои ресурсы: сайты, базы данных, среды разработки и прочее. То, когда злоумышленники проникнут во внутренний сегмент сети — все данные и ресурсы компании могут быть им получены и использованы в целях личной выгоды. Пентест нужен, чтобы узнать, можно ли попасть во внутреннюю сеть компании извне. В отличии от анализа защищенности, про который мы уже рассказали здесь, пентест не будет фокусироваться на уязвимостях низкой критичности и найдет слабые места, которые можно использовать именно для “пробития”. Пентест сложнее в плане реализации — пытаться развить качественную цепочку атаки сложнее, чем собрать все результаты внешнего тестирования.

Методологии и стратегии

  1. Черный ящик (Black Box): В этом подходе пентестеры не имеют знаний о структуре компании и используют внешние данные для атаки. Это наиболее приближенный к реальным условиям метод тестирования.
  2. Белый ящик (White Box): Пентестеры обладают полными знаниями о системе, включая исходный код, архитектуру и документацию. Этот подход позволяет проводить более глубокий анализ и выявлять уязвимости, которые могут быть упущены при тестировании черного ящика.
  3. Серый ящик (Gray Box): Это комбинация подходов черного и белого ящика, где пентестеры имеют частичные знания о системе и учетные записи непривилегированных пользователей в различные сервисы. Это позволяет проводить более эффективное тестирование, сочетая преимущества обоих подходов.

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

Инструменты для анализа защищенности

1.Сканеры уязвимостей: например, Nuclei, OpenVAS и Nmap + Vulners, которые автоматически проверяют систему на наличие известных уязвимостей.

2.Инструменты для атаки на пароли: John the Ripper, Hydra, Hashcat — для перебора паролей и выявления слабых точек аутентификации.

3.Средства анализа сетевого трафика: Wireshark, tcpdump — для перехвата и анализа сетевого трафика во время тестирования.

4.Инструменты веб-приложений: Burp Suite, OWASP ZAP, SQLMap — для проверки веб-приложений на наличие уязвимостей.

Модели нарушителей и объекты тестирования

Внешние нарушители: Злоумышленники, которые атакуют систему извне, не имея доступа к внутренним ресурсам.

Внутренние нарушители: Сотрудники или контрагенты, имеющие доступ к внутренним ресурсам, которые могут злоупотребить своим доступом и нанести ущерб системе.

Объекты, подвергающиеся тестированию:

Сетевые устройства: Маршрутизаторы, коммутаторы, файрволы, беспроводные точки доступа.

Серверы: Веб-серверы, почтовые серверы, серверы баз данных, файловые серверы и др.

Веб-приложения: Сайты, веб-службы, API, клиентские приложения.

Мобильные приложения: iOS, Android и другие мобильные платформы.

Клиентские системы: Рабочие станции, ноутбуки, мобильные устройства.

IoT-устройства: Умные домашние устройства, промышленные контроллеры, медицинские устройства и т.д.

Физическая безопасность: Доступ к зданиям, серверным помещениям, системам видеонаблюдения.

Сотрудники: объект для социотехнических атак.

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

Найдя несколько валидных учеток, мы проникли во все сервисы и получили все персональные данные. Потом получили доступ в CRM компании. На этом проект закончили.

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

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

Этапы пентеста

— Планирование и определение целей: Заказчик и пентестер определяют цели, предметы тестирования, методологии, сроки и ограничения.

— Сбор информации: Пентестеры собирают информацию о системе, используя открытые источники, такие как поисковики, WHOIS, DNS, а также активные методы, такие как сканирование портов и служб.

— Определение уязвимостей: Пентестеры используют инструменты и методы, описанные выше, для идентификации уязвимостей и возможных векторов атаки.

— Эксплуатация уязвимостей: Пентестеры пытаются эксплуатировать обнаруженные уязвимости, чтобы получить доступ к системе или данным.

— Последующий доступ и закрепление: Если пентестерам удается получить доступ, они могут попытаться закрепить свое положение в системе, чтобы убедиться, что уязвимости могут быть использованы в реальной атаке.

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

— Возвращение систем в исходное состояние и удаление следов эксплуатации.

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

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

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

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

Например, класс атаки Circumvention of Work Flows позволяет злоумышленнику обойти последовательность взаимодействия с приложением или условия его бизнес-логики. Если механизм реализован некорректно, то злоумышленник сможет оформить заказ, пропустив этап оплаты, и получить подтверждение заказа в CRM.

Как найти подрядчика для проведения пентеста

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

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

Awillix
Автор: Awillix
Awillix — одна из лучших и востребованных offensive-компаний на рынке кибербезопасности.
Комментарии: