Как стать белым хакером — пентесты — работа с уязвимостями
Почему белый?
Жить честно — выгодно. И вопрос, кто больше получает — черный или белый хакер, для меня несостоятелен. Я считаю, по-настоящему зарабатывают только белые.
Как вы попали в ИБ?
Через ИТ. Получил высшее образование, работал системным администратором, дополнительно проходил курсы, в том числе по защите информации. На одном из обучений преподаватель подробно рассказал о хакерской атаке, и меня зацепило. Я попробовал лабораторные работы на Hack The Box и Root-Me — получилось. Понял: это моя сфера. Прошел несколько сертификаций, сдал OSCP, OSCE, и понеслось…
Сложно было устроиться на работу белым хакером?
Изначально моя позиция звучала как «руководитель направления по ИТ-инфраструктуре». Я общался с клиентами, предлагал им вендорские решения с учетом требований компании по безопасности и параллельно проводил пентесты. Однажды на проекте для достаточно крупного завода я положил все конвейеры. Но заказчики не расстроились, а скорее удивились: как один человек, находящийся в 300 метрах от предприятия, смог вывести из строя конвейерную ленту? Это же колоссальные убытки! Я быстро все восстановил, а успешный кейс разошелся по рынку. Вскоре мне поступило интересное предложение в области ИБ, на которое я согласился.
Чему нужно учиться, чтобы попасть в пентесты?
Иногда люди со стороны говорят: «Хочу в пентест, хочу в red team!» А какое направление тебя интересует? Веб, инфраструктура, мобильные приложения, банкоматы и Wi-Fi? Допустим, речь идет о вебе. Чтобы дотянуться до нулевого уровня, начните проходить веб-челленджи на Hack The Box: смотрите сборки, реверс, решайте веб-таски. Чтобы не сдаться на полпути, добавляйте себе мотивации, условно: «прошел три таска — купил себе часы».
Второй шаг, который стоит делать параллельно, — пройти обучение в Web Security Academy на PortSwigger. Самое главное — изучить теорию: архитектуру приложений, «Android глазами хакера» и другое. Это важно, чтобы понять, как все работает.
Затем сделайте паузу и оцените себя — каков прогресс? И обязательно договоритесь с начальством: подобное обучение всегда идет дополнительно к работе.
Как выглядит среднестатистический пентест?
Очень важна разведка. Если мы говорим о методе черного ящика, OSINT — важнейшая его часть. При изучении объекта мы мониторим сервисы по периметру, ищем открытые порты в динамическом режиме, используем поисковики для IoT (например, Shodan или Censys). Параллельно смотрим веб-сервисы. Как только находим уязвимый веб, пробиваем его.
И вас не замечают?
Есть два режима работы. Первый — детектирование, когда SOC просто анализирует наши способы атаки. В этом режиме они учатся, фиксируют метрики (TTR, TTD и другие). Второй — полная скрытность: здесь SOC пытается нам помешать. Но, как мы знаем, весь периметр заблокировать невозможно — в лучшем случае определенные IP-адреса. Человек, который хочет тебя атаковать, всегда найдет путь. Как правило, в этом режиме мы получаем полный карт-бланш: на сообщения в соцсетях, мимикрию, создание фейк-аккаунтов. По моему опыту, самый эффективный метод — взлом веб-ресурса. Социальная инженерия может не сработать, особенно если сотрудники компании предупреждены о потенциальной атаке.
Получается, что веб — самый важный узел, на который стоит обращать внимание?
Да, и вот почему. Веб бывает разным, он зависит от методологии разработки прикладного ПО в организации. Если тестовый контур выставлен на периметр, в определенный момент любой актив может стать объектом внимания хакеров, особенно если в компании нет централизованного управления активами. Поисковики за несколько секунд найдут его в интернете, просканируют ботами и подсветят уязвимости. Аналогично с сервисами (уязвимости, мисконфиги, неправильная настройка и т. д.) — но их мы хотя бы можем запатчить.
Чем еще опасен веб? Допустим, в компании нет Secure Systems Development Lifecycle и полноценных AppSec-проверок. Тогда мы, проломив один веб-ресурс, можем выкачать все исходные коды, провести ресерч, найти сотни уязвимостей и переиспользовать в том же движке на других объектах. Как это работает? К примеру, вы считаете свой сайт полностью безопасным, в то время как у ваших соседей он абсолютно небезопасен. Их сайт пробивают, выкачивают исходные коды, находят уязвимости и затем атакуют ваш сайт.
То есть полностью защищенного периметра не существует?
Да. Я бы не давал стопроцентной гарантии 24/7/365 даже при наличии всех защитных мер. Всегда есть риск человеческой ошибки, мисконфига или утечки кода.
Что вы рекомендуете тем, кого ломаете?
В первую очередь даем список решений, которые помогут клиенту тушить пожары. Определяем, что необходимо устранить здесь и сейчас, и категоризируем остальные дыры по уровню критичности. Затем даем базовые рекомендации — перечень мер на будущее (однако их реализация может затянуться на месяцы или даже годы). После чего проводим повторный пентест, подсвечиваем новые проблемы, тушим новые пожары и т. д. Одного пентеста недостаточно — их необходимо проводить регулярно и как можно чаще.
Как вы пентестите приложения?
Если это внешняя разработка, мы проводим ресерч, находим уязвимости и отдаем вендору, а он, в свою очередь, присылает патч — все делается быстро. Если разработка внутренняя, устранение любой уязвимости может повлиять на бизнес-процессы компании. Начинается общение с заказчиком, вовлечение разработчиков — это сложнее и дольше. Но стоит отдать должное, мы уже завоевали авторитет: организации часто идут нам навстречу и оперативно решают критически опасные кейсы.
Представим, есть молодая компания: с чего им начать выстраивать безопасность? Сразу нанимать red team, которая будет их ломать?
Ни в коем случае! Red team не должна быть первой итерацией. Молодая организация априори небезопасна: ее без труда взломают, а деньги, по сути, будут потрачены впустую. Сначала нужно проанализировать текущее состояние ИБ в компании и определить, как усилить безопасность с учетом имеющихся рисков. Затем сформировать модель угроз, выстроить защиту, провести пентесты — только после этого имеет смысл обращаться к red team. Другое дело — большая компания, где многие нюансы просто невозможно учесть. Ее ИБ-специалистам необходимо постоянно быть начеку, и лучше всех уровень их готовности к инцидентам могут проверить редтимеры.
В чем специфика взлома разных отраслей?
При работе с банками важно понимать общую логику бизнес-процессов. Для этого придется многое изучить: как устроен вывод денежных средств, как формируются платежные поручения и т. д. Когда попадаешь внутрь, начинается самое интересное: специфический софт, учетные записи, свое проприетарное ПО, открытого кода нет. Находишь уязвимость — пишешь вендору, а он старается это скрыть, обещая выпустить доработку. На форумах нередко можно найти старые архивы с информацией о подобных, «как бы исправленных» уязвимостях.
В нефтянке все проще: чтобы дойти до SCADA, мы выполняем стандартный набор действий. При реализации риска важно попасть в поток инженерного ПО, а дальше просто нажимать определенные комбинации, и все упадет.
Вы когда-нибудь писали эксплойты для уязвимости?
Да, но детали раскрыть не могу. В целом можно за 20 минут сделать эксплойт по описанию, который поможет вам вынести всю сеть. Если же речь о сложном софте, придется проводить ресерч, изучать исходники и т. д.
Другой важный вопрос: сколько времени потребуется, чтобы пропатчить уязвимость. Можно ли, к примеру, сделать это в течение 24 часов? Я считаю, нет. Есть такое понятие — «патч после патча». Мы много раз убеждались: когда вендор экстренно выпускает заплатку, чаще всего в ней остаются дыры, которые нужно закрывать новым патчем, и в итоге регистрируется новая CVE. Или наоборот: вендору сообщают о уязвимости, он ничего не делает, и спустя 90 дней disclosure мы передаем информацию в паблик. Злоумышленники моментально пишут эксплойт и спокойно используют незакрытую уязвимость.
И что тогда делать с уязвимостями?
Если уязвимость в вебе и есть защита (например, WAF), нужно сразу написать правило, хоть какое-то. Когда она внутри периметра, лучше подождать: даже свежий патч небезопасно ставить сразу, особенно с учетом текущей ситуации с некоторыми зарубежными вендорами. Для критически опасных уязвимостей можно использовать ограничение доступов по IP-адресам. Чтобы узел не проломили, уберите скрипт или выведите его из эксплуатации.
Как вы разбираетесь в коде, причем на разных языках?
Мы тренируемся на Hack The Box, там есть whitebox-таски: изучаем код, понимаем, как все работает, и эксплуатируем уязвимости. Стек языков большой: .NET, C#, Java, Python, PHP, много фреймворков. Кто-то занимается мобильными приложениями, другие — вебом, третьи — инфраструктурным анализом. Но мы не разработчики. Они сидят в коворкингах, пьют смузи и играют в настольный теннис, а потом приходят белые хакеры и уничтожают этот красивый мир. Да, сами мы так не построим, но легко разрушим все, что плохо построено.
Допустим, человек прокачался в пентестах и хочет участвовать в программе bug bounty. Что делать, к чему готовиться?
В принципе можно участвовать в любой открытой программе. Но там сложно что-то найти: скорее всего, все уязвимости уже разобрали. Если говорить про российский рынок, я рекомендую платформу Standoff 365 Bug Bounty. Это поможет набраться опыта, засветиться и получить инвайт в приватную программу, где шансов найти уязвимости больше, а прокачаться легче, поскольку наглядно видишь результат.
Как выглядит хороший отчет о найденной уязвимости?
В моей практике отчеты формируются на базе конструктора-конфигуратора: импакт, описание, скриншоты или видеоролики. Смысл — максимально подробно показать шаги, которые ты делал. Иначе вернут на перепроверку, и тогда кто-то другой успеет описать процесс детальнее и получит награду.
Как вы думаете, пентесты и услуги red team будут востребованы дальше?
В жизни всегда есть место защите и нападению — это как добро и зло. Я встречал компании, которые фокусируются на защите и не хотят инвестировать в атаку. Они считают: поставим все возможные решения, и этого будет достаточно. Одно время и я так думал: скоро подключится ИИ, атакующие не потребуются... А потом понял: как были мобильные приложения в плане ИБ на уровне 2003 г., так и остались, как разработчики писали об уязвимости в AppStack, так и пишут — ничего нового. Дыра не в защите, она в людях. Потому и пентерстеры, и редтимеры будут востребованы. Вопрос в другом: что дальше будет с человеком, который организует атаку? Какую сторону он займет? Мне кажется, главное — оставаться на белой стороне.
Узнать больше о самой простой или сложной атаке в карьере Павла, участии в команде Codeby на Standoff, опасностях мисконфигоф и многом другом можно здесь: