Интервью с руководителем отдела анализа защищённости Angara Security Михаилом Суховым о пентесте
Я много бывал за последнее время на разных ИБ‑мероприятиях, где проходили различные киберучения. Много писал об уязвимостях, об ИБ‑решениях, борющихся с ними, специалистах, выявляющих бреши в инфраструктурах. И как раз на последней ИБ‑конференции я решил поговорить с одним из участников киберучений. Тем более для меня понятие «пентест» всегда было очень расплывчатым, я мало сталкивался с ним по работе в IT. Вопросы я задавал иногда очень простые (они могут даже показаться глупыми), но хотелось понять портрет практикующего пентестера. Итак, я поговорил с руководителем отдела анализа защищённости Angara Security Михаилом Суховым о работе пентестера и его стандартных инструментах. Приятного чтения!
Что такое, по‑вашему, пентест или тестирование на проникновение?
В первую очередь пентест — это творческий процесс, в котором пентестер находит интересные, назовём это возможностями, в различных системах, будь то вход в бизнес‑центр, веб‑приложение или инфраструктура. Почему это именно творчество? Потому что в пентесте нет простых и понятных алгоритмов, которые всегда или почти всегда работают, не говоря уже о том, что каждый новый проект, каждая новая инфраструктура или приложение всегда отличаются от предыдущих и для всего этого необходимо искать новые подходы, новые уязвимости и даже разрабатывать свои программы. Поэтому для пентестера важно постоянно обучаться и подходить к работам творчески.
Тест на проникновение вырос из хакинга или они развивались параллельно?
Хакинг всегда шёл рука об руку с пентестом. Вообще, тестирование на проникновение возникло задолго до появления первых компьютеров, оно было, как сейчас сказали бы, физическим. Такие тесты чаще использовали военные, спецслужбы. Например, проверяли, как хорошо защищена военная база. Брали свои диверсионные группы, и они попытались проникнуть на какой‑то охраняемый объект. И это тоже своего рода пентест. И такие физические пентесты перекочевали к нам IT. Если рассуждать о пентесте и хакинге, то они развивались параллельно, но всегда были друг с другом связаны. Однако надо понимать, мы, как пентестеры, изучаем опыт хакеров, иногда даже принимаем его к себе на вооружение.
Где лучше всего применять пентест, по вашему мнению?
Я считаю, что пентест — важная составляющая информационной безопасности. Если бизнес хочет быть уверен в своей защищённости, то пентестом пренебрегать не стоит. Причём пентест актуален для бизнеса, у которого много IT‑активов или много бизнес‑процессов, подвязанных на IT‑процессах, или у бизнеса много автоматизированных процессов. Это практически аксиома — чем больше IT в бизнесе, тем больше рисков и тем больше может появиться уязвимостей. Для этого один из инструментов их поиска — пентест.
На одной из конференций спорили, что лучше для компании: пентест или Bug Bounty, как вы считаете, что лучше? Или это как сравнивать, что лучше: отвёртка или молоток — где‑то один инструмент нужен, а где‑то другой?
По моему мнению, лучше как раз и то, и другое, и желательно побольше. Действительно, это разные вещи, и одно не заменяет другого. Например, программа Bug Bounty не покрывает атаки изнутри компании и атаки методом социальной инженерии, даже если мы говорим про внешние приложения, на которые Bug Bounty нацелены. Они не покроют некоторые атаки, как, например, перебор паролей, социальная инженерия через внешние приложения, исследования приложений методом «белых» ящиков, методом «серых» ящиков. Такие вещи не всегда покрываются программами Bug Bounty.
В вашей компании пентест какую роль занимает — это один из вариантов услуг или основополагающая услуга?
У нас компания в принципе специализируется на услугах в области информационной безопасности. Ну и пентест — это одна из важнейших наших услуг наравне с Angara SOC и консалтингом.
Какие, на ваш взгляд, лучшие инструменты для теста на проникновения?
Тут сложно выделить что‑то конкретное, это опять же как в чемоданчике слесаря сравнивать молоток и отвёртку, а потом спрашивать: «а что полезнее тебе в работе?» Конечно же, нужны все инструменты. Могу выделить наиболее используемые для нас приложения, например Burp Suit. С его помощью можно производить переходный запрос к приложению, динамический анализ и брутфорс приложений. Если мы говорим про инфраструктуру, то это Nmap (сканер открытых портов). И если идём в область Active Directory (AD), это в Bloodhound.
А если рассматривать, допустим, не Active Directory, а какой‑то его аналог для Linux‑систем (сейчас на российском рынке ОС такие инструменты распространены, например, некоторые решения базируются на FreeIPA)?
Для этих инфраструктурных решений уже готовых инструментов пока нет. Я сейчас занимаюсь разработкой таких инструментов. Ну и пользуюсь тем, что сейчас есть, например всё тот же Nmap.
Вообще, эти инфраструктурные решения стали популярны в рамках импортозамещения. Поэтому надо разрабатывать инструменты для пентеста новых продуктов и инфраструктур, поэтому активно занимаемся исследованиями в этой области. Как появилась потребность, так и началась разработка.
Как я понял из нашего разговора, так как пентестеры — творческие люди, то пишут код на том языке, на котором удобнее? Существует ли язык программирования, удобный для пентеста, универсальный язык?
Да, действительно, кто на чём привык, тот на том и пишет. Из‑за этого, к сожалению, много проблем возникает, когда берёшь чужую разработку и пытаешься с ней взаимодействовать. И бывает, эти инкременты написаны на странных языках, например на Ruby. Есть языки чаще всего используемые. Самый частый — это Python, поскольку он проще всего. Ну и Python прекрасно подходит для написания скриптов, для работы с трафиком и так далее. И в рамках Active Directory — это C#. Он имеет много встроенных функций, упрощающих работу в среде Windows. C и C++ прекрасно работают с памятью, с байтами и подходят для бинарной эксплуатации. Можно ещё GO упомянуть. Он подходит, например, для создания фазера, генерирующего много запросов в минуту, в секунду.
Вообще, если объединить, то чаще всего все инструменты для пентеста появляются в рамках какого‑то проекта. У нас идёт проект, мы встретились с чем‑то нестандартным, например, с той же FreeIPA, с этим надо как‑то работать. Для этого мы начинаем писать инструмент, и естественно, как результат, качество кода оставляет желать лучшего. Но в защиту пентестеров скажу, что они не программисты, это не их прямая обязанность — писать нормальный код.
А возможно ли создать универсальный язык для пентеста, Pentest# например? Или унификация повредит процессу пентеста и сама отрасль просядет, поэтому пусть лучше останется зоопарк языков?
Я сильно сомневаюсь, что такой язык нужен. «Зоопарк» языков существует не только потому что каждый привык в чём‑то своём работать. Я уже отметил, что используемые разные языки подходят для конкретной задачи. И так как задачи разные, то «зоопарк» неизбежен, а создание языка пентестера не очень представляется возможным.
Редтиминг и пентест — это одно и тоже или разные вещи?
Это разные вещи, в RedTeam пентестеры выступают как внешний злоумышленник. Мы проверяем не только наличие уязвимости у заказчиков, но и реакцию BlueTeam и средств защиты на наши действия. Ну и тут ещё момент, как с Bug Bounty, RedTeam — один из вариантов проверки своей защищённости ИБ. Однако он дольше по времени и может не показать всех уязвимостей в инфраструктуре. Например, есть уязвимость, BlueTeam её мониторит, RedTeam не смогли через неё прорваться. Однако уязвимость есть, может остаться, и при пентесте (или при атаке) её проэксплуатируют, если BlueTeam ослабит внимание. Если говорить коротко, пентест — это поиск всех уязвимостей у заказчика, а редтиминг — проверка реакции SOC на атаку.
В своей компании вы сами устраиваете пентесты инфраструктуре или нанимаете сторонних коллег или просто независимых пентестеров, не ангажированных или связанных с вашей компанией?
Нет, мы доверяем нашим экспертам (нас сейчас 13 человек), которые регулярно проводят проверки разного рода на нашей инфраструктуре. Тут сложно говорить о необъективности, потому что наша безопасность — это приоритет для нас. Да и всегда интересно найти что‑то у себя. Поэтому наши пентестеры любят смотреть инфраструктуру компании на уязвимости.
У вашей компании есть программа Bug Bounty на существующих платформах или она только от вашей организации? Если нет, есть ли в планах?
Внутренней и внешней программы Bug Bounty нет. В ближайшее время пока не планируется участвовать запускать такие программы. Но мы внимательно наблюдаем за этими проектами на рынке.
Расскажи, пожалуйста, стандартный кейс для пентестера в ИБ‑компании?
Сначала стоит определиться, о каком пентесте мы говорим, если это анализ веб‑приложений, то это приложение с личным кабинетом пользователей, возможностью регистрации и каким‑либо контентом внутри и снаружи, например интернет‑магазин или внутренний сервис для общения. Если же мы говорим про внутренние пентесты, то чаще всего это один домен AD, а также пользовательский и серверный сегмент сети. Но отмечу, что в нашей практике очень редко попадаются одинаковые проекты, чаще всего это что‑то уникальное.
Мне всегда было интересно посмотреть на чужую работу. Так начинаешь чуть лучше понимать специфику какой‑то профессии. Тем более, что о хакерах, что о программистах много мифов в массовой культуре. Все же помнят фильмы 80–90-х годов, когда стереотип о программистах (обязательно очки, свитер или возраст 12+) начинает стучать по клавиатуре в случайном порядке, изображая написание кода и взлом. В 2000-х это стереотип решили изменить, но он получился ещё хуже. Ну, образы программистов и хакеров в фильмах — это отдельный разговор. Я думаю, эволюцию образа уже кто‑нибудь да проследил.
Вообще, у меня какой‑то перекос на стороне атакующих. Если взглянуть, то я общался с пентестером, с одним из этичных хакеров, с реверс‑инженером, а разговор с работником защищающих инфраструктуру изнутри был один. Хотя было ещё несколько интервью со специалистами, проводящими экспертизу. Этих специалистов можно косвенно отнести к защищающим. Однако, наверное, надо поговорить с кем‑нибудь из защитников (BlueTeam), чтобы взглянуть на кибератаки с другой стороны.