Недавно мы рассказывали о том, какие бывают уязвимости информационной безопасности и как от них защититься. Одна из мер защиты — тестирование на проникновение (penetration testing, или пентест). Рассказываем, что это такое. Приготовьтесь, это надолго.
Это статья для расширения кругозора и о том, какое ещё тестирование бывает в ИТ. Если хотите что-то связанное с программированием, почитайте, как новичку стартовать в Python с нуля, или пройдите хитрый тест на знание простых штук в JavaScript.
Что такое уязвимость
Уязвимость — это какое-то слабое место в программном обеспечении, оборудовании или протоколах безопасности. Она может быть вызвана разными причинами:
- ошибки программирования;
- неправильная конфигурация системы или оборудования;
- устаревшая прошивка;
- конструктивные недостатки;
- человеческий фактор и так далее.
До того, как уязвимость обнаружена, она представляет только потенциальную угрозу. Чтобы использовать уязвимость, создают эксплойт — вредоносный код. После этого с помощью эксплойта атакуют уязвимую систему. Злоумышленники могут пользоваться уязвимостью до тех пор, пока последствия не станут заметны.
Подробнее про уязвимости:
Кибербезопасность: какие бывают уязвимости и как от них защититься
Что такое пентест, или тестирование на проникновение
Классический пентест — это имитация кибератаки, или разрешённый взлом системы, а также моделирование утечек данных. Цель такого тестирования — выявить уязвимости и проверить защищённость системы. После тестирования специалисты фиксируют и анализируют слабые места системы и подбирают способы их устранения.
Пентест отличается от оценки уязвимостей — одно про реальный взлом или утечку, а второе про теоретические выкладки и возможную защиту.
Тестирование на проникновение | Оценка уязвимостей |
---|---|
проводится с конкретной целью, например выявить уязвимые системы, взломать конкретную систему или осуществить утечку данных; | позволяет найти известные уязвимости и узнать о потенциальных рисках; |
выполняется в реальном времени и часто вручную; | проводится автоматически; |
занимает много времени — от одного дня до нескольких недель; | занимает несколько минут или часов; |
может выдавать ложные срабатывания; | |
стоит дорого | стоит недорого |
Тестирование на проникновение проводят пентестеры — специалисты по кибербезопасности.
Если пентестер — штатный сотрудник, то он больше знает о системе, но не может использовать эти знания при тестировании. Сторонний специалист не знает всех деталей системы, но может найти слабые места, которые не очевидны сотрудникам компании. Поэтому для чистоты эксперимента часто привлекают сторонних пентестеров.
Короче, если уязвимость — это что-то теоретическое, то пентест — это практика. Результат пентеста — проникновение в систему и какие-то действия. А ещё с помощью пентестов можно выявить уязвимость нулевого дня — самую опасную в ИТ.
Виды пентеста
Проверка сетевых служб — одно из наиболее часто проводимых тестирований на проникновение. При такой проверке производят атаку на компьютерную сеть. Есть два основных типа сетевых пентестов: внешнее и внутреннее.
Внешний пентест. Пентестеры удалённо имитируют поведение хакеров извне, чтобы обнаружить слабые места в компонентах инфраструктуры, которые подключены к интернету. Это могут быть серверы, межсетевые экраны, коммутаторы, маршрутизаторы, компьютеры сотрудников и принтеры.
Внутренний пентест. Пентестеры пытаются взломать систему изнутри — например, сканируя подсети, серверы домена или файловые серверы или пользуясь украденными учётными данными сотрудников. Это помогает выявить уязвимости, которые можно использовать локально, например злоупотребление уровнем доступа.
Проверка социальной инженерии помогает выявить, насколько легко получить доступ к ресурсам компании от сотрудников с помощью обмана, убеждения или шантажа. При этом могут как завладеть учётной записью сотрудника, так и перехватывать всю информацию, которая проходит через него в электронном виде: письма, данные с закрытых сайтов и так далее.
Есть данные, что 98% кибератак основаны на социальной инженерии. Информационная безопасность на уровне персонала часто зависит от осведомлённости людей о цифровой гигиене. Открытие вложений из писем со спамом, переход по сомнительным ссылкам и хранение логина и пароля на листочке возле рабочего компьютера — это всё слабые места с точки зрения социнженерии.
Тестирование приложений выявляет уязвимости в приложениях и связанных с ними системах:
- веб-приложения;
- веб-сайты;
- мобильные приложения;
- приложения интернета вещей;
- облачные приложения;
- интерфейсы программирования (API);
- базы данных;
- компоненты, например плагины, а также скриптлеты и апплеты — фрагменты кода, который выполняется на странице или в приложении.
Часто тестирование приложений начинают с проверки по OWASP Top-10. Это список наиболее распространённых и критических уязвимостей в веб-приложениях от международной некоммерческой организации OWASP (Open Web Application Security Project, или «Открытый проект по обеспечению безопасности веб-приложений»).
Распространённые уязвимости веб-приложений — это возможность для внедрения вредоносного кода, неправильные настройки и сбои аутентификации. Если пентестеры обнаруживают уязвимость, они пытаются использовать её, чтобы получить несанкционированный доступ к приложению и его системам.
Тестирование на физическое проникновение проводят, чтобы обнаружить уязвимости и проблемы физических элементов инфраструктуры, например электронных замков, камер видеонаблюдения и датчиков.
В фильмах часто показывают, как злоумышленники создают дубликат чьего-то бейджа и по нему проникают в закрытые помещения, например серверные. Тестирование на физическое проникновение как раз проверяет реальность подобной операции.
Тестирование на проникновение на стороне клиента помогает обнаружить слабые места или недостатки безопасности в ПО, которым пользуются сотрудники. Среди уязвимых программ могут быть почтовые клиенты, браузеры, офисные приложения и даже графические редакторы.
С помощью такого тестирования можно выявить конкретные атаки, например перехват форм, внедрение HTML-кода и заражение вредоносными программами.
Тестирование на проникновение в беспроводную сеть проводят, чтобы проверить соединения между всеми устройствами, которые подключены к корпоративному вайфаю. Это могут быть смартфоны, ноутбуки, планшеты и устройства интернета вещей.
Атаки компаний через вайфай довольно часты из-за множества угроз для беспроводных сетей — от несанкционированных точек доступа до слабых алгоритмов шифрования.
Методы пентеста
Тестирование чёрного ящика проходит при условиях, когда пентестер практически ничего не знает об инфраструктуре компании. Такое тестирование максимально приближено к имитации реальной кибератаки неизвестными злоумышленниками.
Тестирование чёрного ящика ещё называют методом проб и ошибок, и оно требует от пентестера высокого уровня технических навыков.
Тестирование белого ящика (оно же — тестирование прозрачного или стеклянного ящика) проводится пентестером, который владеет полными знаниями о системе и доступом к исходному коду и среде. Цель такого метода — выполнить углублённый аудит безопасности бизнес-систем.
Результаты тестирования белого ящика могут быть более тщательными, чем в случае с чёрным ящиком, но есть и недостатки. Пентестер может потратить много времени, чтобы определить, на каких областях системы нужно сосредоточиться, а ещё ему могут потребоваться сложные и дорогие инструменты, например анализаторы кода и отладчики.
Тестирование серого ящика — это когда у пентестера есть частичные знания о системе или частичный доступ к внутренней сети или веб-приложению.
Синяя, красная и фиолетовая команды
В зависимости от сложности выполняемого тестирования, в нём могут принимать участие несколько разных команд:
- Синяя защищает компанию от атак и моделирует меры реагирования на инциденты с учётом политики компании и ресурсов, которые имеются. Обычно синяя команда самая большая, состоит из аналитиков безопасности, сетевых инженеров и системных администраторов, а работает под руководством топ-менеджера по информационной безопасности.
- Красная имитирует или фактически проводит атаки. Такая команда обычно небольшая и состоит из этических хакеров, программистов и социальных инженеров под руководством топ-менеджера по тестированию или старшего консультанта по безопасности. Членов красной команды чаще всего набирают вне компании.
- Фиолетовая сочетает роли синей и красной команд. Фиолетовая команда может как быть составленной из атакующих и защищающихся, так и служить каналом связи между синей и красной командами. «Фиолетовыми» могут быть специалисты по реагированию на инциденты, аналитики разведки и архитекторы безопасности во главе с топ-менеджером по стратегии безопасности.
Что дальше
В следующий раз соберём самые популярные инструменты, которые пентестеры используют в работе — от сканеров до специальных программ.