На этой неделе в наших соцсетях выступал Омар Ганиев, основатель компании DeteAct
и член российской команды хакеров LC↯BC. Омара можно смело назвать одним из самых лучших хакеров страны.
LC↯BC заняла первое место в финале международного турнира по компьютерной безопасности 0CTF в Шанхае в 2016 году.
Больше половины жизни Омар занимается взломом компьютерных систем. Для него это в первую очередь увлечение и основной жизненный навык, который постепенно стал работой, а уже затем основой для предпринимательства.
Помимо самой работы, Омара очень привлекает исследовательская стороны сторона этой деятельности, а также спортивная — хакерские соревнования (CTF), в которых он много участвовал индивидуально и в составе различных команд.
Сейчас команда More Smoked Leet Chicken, членом которой является Омар, состоит из энтузиастов, работающих в разных компаниях и странах, и это сильнейшая в России и одна из сильнейших в мире CTF-команд.
Что касается компании DeteAct (официально ООО «Непрерывные технологии»), то она предоставляет услуги по анализу защищённости и тестированию на проникновение. Проще говоря, различные компании просят ребят взломать их системы для того, чтобы проверить их на прочность и узнать, как не допустить вредоносные хакерские атаки и потери для бизнеса.
Делимся с вами записью и расшифровкой эфира.
Всем привет, меня зовут Омар Ганиев. Также я известен под никнеймом beched в хакерской среде. Я – хакер, много лет занимаюсь проверкой безопасности компьютерных систем. Это стало для меня хобби еще в школе, а последние 9 лет это – моя основная профессия. Последние 7 лет я работаю в стартапах в сфере информационной безопасности, сам являюсь основателем компании DeteAct, она же – «Непрерывные технологии». Сейчас нас 10 человек, мы хорошо растем и предоставляем услуги в области практической информационной безопасности. Тестирование на проникновение, анализ защищенности, прочие разновидности аудитов безопасности – обо всем этом мы поговорим сегодня.
Пентест, тестирование на проникновение. Надо определиться, что это такое, потому что даже в сфере информационной безопасности, среди тех, кто пентестами и аудитами занимается, часто возникает путаница и непонимание терминологии. Часто оказывается, что разные люди под пентестом подразумевают разные вещи; особенно неприятно, когда эти люди – заказчик и исполнитель услуг. Основные термины здесь – аудит безопасности, тестирование на проникновение (penetration test, пентест), анализ защищенности (security assessment) и редтиминг (red team).
Аудит безопасности – это наиболее общее понятие. Оно означает любой вид исследования безопасности объекта, проверку его соответствия требованиям безопасности – необязательно информационной. Например, это может быть пожарная безопасность.
Пентест (тестирование на проникновение) – это намного более конкретная штука, хотя и она может быть понята по-разному. Немедленная логическая ассоциация заключается в том, что пентест – это проверка на то, можно ли проникнуть в какую-то систему, и результатом пентеста должен быть бинарный ответ – да/нет: получилось ли проникнуть, или нет. Это одно из пониманий этой услуги – то есть, проверяется, сможет ли потенциальный атакующий проникнуть в систему, добиться каких-то целей, допустим, за неделю или за две недели. В течение этого времени пентестеры пытаются ломать систему, и таким образом можно проверить уровень защищенности системы. Особенно это актуально в сфере комплаенса. Некоторые организации – государственные организации, международные платежные системы — могут требовать от компаний (банков, карточных эквайрингов) прохождения пентеста именно в таком смысле. Такой пентест должен проверить, получилось ли – да или нет – получить доступ к платежным данным. Если нет, то все нормально; если да, то все плохо.
Но есть и другое понимание пентеста, которое часто называют «анализом защищенности». Это работа вширь: хакеры-пентестеры, вместо того, чтобы пытаться вглубь проникнуть к ресурсам, ищут как можно большее количество уязвимостей вширь. Чаще всего, все-таки, заказчики хотят видеть именно эту услугу. Им интересно не просто получить ответ (поломали или не поломали), а найти как можно больше дыр, чтобы закрыть их — чтобы их в дальнейшем не поломали.
Редтиминг – это похоже по значению на то, как работает пентест в смысле проникновения, но с некоторыми особенностями. Вообще, на тему того, что же такое редтиминг, ведется больше всего холиваров. Если кратко – это такое мероприятие, при котором атакующая команда ставит своей целью нанесение определенного ущерба, достижение некоторых угроз или бизнес-рисков – например, хищение средств, баз данных клиентов, почты руководителя (для каждой компании – свой бизнес-риск, кому что критично). Перед командой атакующих практически не ставится ограничений (единственное ограничение – рамки закона). В отличие от обычного анализа защищенности или пентеста, редтимеры могут достигать бизнес-рисков любыми методами: хоть проникнуть в офис и физически украсть бумагу с паролями или перехватить wifi. Защищающаяся сторона – то есть, компания, которую тестируют – тоже не ограничена. Безопасники, администраторы, разработчики, devops-ы сопротивляются этому тестированию, пытаются выявить атаки и предотвратить их. Таким образом, получается реалистичная тренировка и моделирование реальной ситуации. Учения, можно сказать.
Q: ради интереса: в каких странах более востребованы пентестеры, и откуда больше всего поступает заказов на проверку?
Самый широкий спрос на пентесты – в США. Если второй вопрос по российским компаниям, то к ним больше всего заказов поступает именно из России. Этот рынок достаточно изолирован в каждой стране, сам по себе. Все стремятся заказывать такие услуги у тех, кого они знают, потому что это щепетильный вопрос; никто не хочет доверять свою безопасность кому-то из другой страны или незнакомому. С Запада, тем более, почти никто не будет заказывать такие услуги из России – из-за санкций и плохой репутации.
Итак, мы примерно разобрались в пентесте и его разновидностях. Можно рассказать вкратце о том, как ведутся проекты и какая здесь методология. Тут надо сразу разделить методику проведения работ на так называемые «ящики» разного цвета. Можно проводить пентест в режиме blackbox (черный ящик) — тестировщикам не выдается почти никакой информации об объекте исследования, кроме адреса сайта (или даже названия компании). Другая крайность – whitebox (белый ящик), когда выдается вся информация. Если это инфраструктура, то выдаются все IP-адреса, схема сети, доступ во внутреннюю сеть (если необходимо), все hostname (доменные имена). Если это ПО, какой-нибудь веб-сервис, то выдаются исходные тексты, конфигурация, учетные записи с разными ролями и так далее. Наиболее распространенный режим – greybox (серый ящик), это может быть что угодно в спектре от черного до белого. Какая-то информация выдается, но не вся. Например, для веб-сервиса могут быть выданы учетные записи с разными ролями, какая-то базовая информация о технологическом стеке: используемые языки программирования и базы данных, схема инфраструктуры сервиса. Но при этом не выдаются исходники.
После того, как определились с методологией, с режимом проведения работ, атакующей стороне даются вводные данные. То есть, если необходимо, выдаются доступы, адреса хостов и т.д. Атакующая сторона может выдать свои IP-адреса, с которых будут проводиться атаки, чтобы заказчик отличал их от реальных злоумышленников. Далее проводятся классические шаги пентестов; конкретная реализация и разбивка может отличаться, но, в целом, в начале должна быть проведена разведка. Пентестеры ищут точки входа в инфраструктуру – хосты, сетевые сервисы, email-адреса. Если это web-сервис, то ищут API Endpoints – различные web-интерфейсы, различные хосты API под домены и так далее. После того, как проведена разведка, наступает этап сканирования (phasing), когда проводится поиск уязвимостей в найденных интерфейсах. Когда уязвимости обнаружены, следующий этап — эксплуатация: уязвимости используются, чтобы получить какой-то доступ. Дальше, в зависимости от того, какой это пентест, может проводиться постэксплуатация: продвижение вглубь системы и получение дополнительных доступов. Дальше может быть зачистка. Заказчик не всегда хочет, чтобы проводилась дальнейшая эксплуатация: иногда достаточно просто найти уязвимость и отрепортить ее.
Для того, чтобы было понятнее, что значит постэксплуатация: допустим, пентестеры нашли уязвимый сервер в инфраструктуре, доступный извне. Скажем, недавно вышли патчи для уязвимости в MS Exchange – почтового сервера Microsoft, который почти у всех корпоратов стоит и торчит наружу. В нем обнаружилась критическая уязвимость. Эта уязвимость сама по себе дает огромный эффект: атакующие могут с ее помощью получить доступ к почте. Но, помимо этого, они могут осуществить постэксплуатацию и с этого почтового сервера дальше распространяться по инфраструктуре. Захватить какие-то еще серверы, инфраструктуру домена Windows Active Directory, попасть на рабочие станции сотрудников – то есть, в инфраструктуру разработки. И так далее.
Q: какие минимальные вводные данные требуются от организации для пентеста и для аудита?
Минимальные вводные данные – это название компании, то есть, их может практически не быть. Понятно, что на этапе разведки, когда мы по названию компании ищем хосты, или по адресу сайта ищем связанные с ним хосты, можно ошибиться и найти какие-то IP-адреса и хосты, которые не принадлежат этой компании. Поэтому после разведки обычно проходит согласование – на всякий случай, чтобы не поломать чего-то лишнего. Ошибиться довольно легко.
Q: а в РФ есть реальные редтимеры с локпиком и кувалдами? :D
Я думаю, что такие навыки много у кого есть. Насколько востребованы такие проекты и насколько часто они выполняются – я, если честно, не знаю. Чтобы требовалось прямо с отмычками ходить и перелезать через заборы. Наверно, такие проекты редко проводятся.
Q: как вы обходите Web Application Firewall или хотя бы Windows Defender? Что можете сказать про фреймворки Empire и Koadic, пользуетесь ли ими?
WAF мы обходим вручную, подбирая подходящий payload. Тут методики стандартные. Единственная сложность с WAF – если это редтим, когда защищающаяся сторона препятствует атакам – если мы свою атаку как-то спалим, или нас обнаружат при помощи каких-то средств защиты типа WAF, то нам могут прикрыть уязвимость. Поэтому нужно действовать аккуратно и проверять payload (т.е. свой эксплоит) на каких-то других хостах, где нет уязвимости. Таким образом, WAF получится проверить и обойти, но попутно не будет обнаружена уязвимость защищающейся стороной.
Q: какой софт нужен для атакующих и для защиты?
Какой софт нужен для защиты – это огромная тема. Она намного шире, чем пентест. Какой софт нужен для атакующих – это хороший вопрос, потому что это зависит от того, о каких работах мы говорим. Если мы говорим об анализе ПО, web-сервисов, то практически никакое ПО не требуется. Достаточно такого швейцарского ножа, как инструмент Burp Suite. Платная версия стоит $400 и содержит практически все необходимые инструменты. Плюс, конечно, любой рабочий язык программирования – обычно у пентестеров это Python или GoLang. Этого достаточно.
Если говорить об инфраструктуре, о редтиминге – там инструментарий гораздо шире. Нужны разнообразные сканеры уязвимостей, нужны инструменты для закрепления на системах: после того, как мы проломились в какую-то систему, нужно в ней закрепиться, нужно обфусцировать свой payload, чтобы он не был обнаружен антивирусом, и так далее.
Q: какие сферы в РФ больше всего просят отпентестить или провести аудит?
Видимо, речь про то, в каких индустриях наибольший спрос на пентест. Очевидно, что он нужен тем компаниям, в которых есть IT; чем более развито IT, чем это более IT-шная компания, тем больше нужен пентест. Примерно спрос этому соответствует. Для некоторых компаний пентест обязателен, потому что они являются частью критической информационной инфраструктуры: государственные предприятия и банки. Для банков пентест нужен по требованию Центробанка, и еще – в рамках получения сертификата PCI DSS для международных платежных систем. Этот сертификат нужен и другим платежным организациям. То есть, платежные организации, субъекты критической информационной инфраструктуры и IT-компании требуют пентестов. То есть, любые IT-компании, включая стартапы, у которых вся инфраструктура – это web-сервис с базой пользователей: для них критично, если их поломают.
Q: насколько важно понимание социальной инженерии при пентесте?
Я отдельно не упоминал ее. Я бы сказал, что это один из инструментов редтиминга; кроме того, зачастую социальная инженерия проводится отдельно, как отдельная услуга, и выглядит как простая рассылка. Мы делаем фишинговый сайт, ищем email сотрудников компании и рассылаем по ним ссылку на этот сайт с какой-нибудь легендой (например, это новый корпоративный портал, нужно всем обязательно зайти и ввести свой пароль).
Затем ведем статистику – сколько человек просмотрело письмо, кликнуло на ссылку и ввело пароль. Показываем ее заказчику, и он понимает, с кем нужно проводить ликбез. Честно говоря, практически никаких навыков для такого тестирования не требуется, и компания сама способна легко провести его с помощью open source-инструментов, если речь идет про разовую рассылку. В целом, есть целый отдельный бизнес – индустрия security awareness, повышение осведомленности людей в области информационной безопасности.
Есть специальные продукты, которые регулярно рассылают фишинговые письма по базе пользователей. Если человек повелся, то ему придет обучающее видео или другой интерактивный урок, который он должен будет пройти. А потом его еще раз проверят, и будет отслеживаться тренд – например, год назад 50% сотрудников повелись на фишинг, а теперь только 5%. Конечно, полностью избавиться от опасности фишинга почти невозможно.
Насколько важно понимание — оно важно, если вы проводите такие работы, но это достаточно легко. Или если вы проводите редтим, в его рамках очень действенны методы социальной инженерии. Но при этом они должны будут быть гораздо более аккуратными и точечными, конечно; это не может быть массовая рассылка по всем сотрудникам – ее заметят и поймут, куда вы можете пытаться проникнуть. Нужно рассылать отдельным конкретным людям.
Q: из чего складывается стоимость услуги?
Отличный вопрос, потому что никто вам не ответит на него толком.
Это очень по-разному. Обычно пентест стоит сколько, сколько может заплатить заказчик, грубо говоря. Это один из коэффициентов. Проблема в том, что даже объем работы изначально будет не детерминирован – особенно, если это blackbox. Мы изначально даже толком не знаем, сколько там будет хостов, интерфейсов. Мы можем только примерно понять, какого характера эта компания, какая у нее может быть инфраструктура и сколько нам понадобиться людей и времени, и из этого можно будет прикинуть трудозатраты в человеко-неделях. Если у нас есть какой-то фреймворк ценообразования, можно умножить человеко-недели на наш коэффициент и выдать это как цену.
На самом деле, все очень варьируется; часто, особенно в больших компаниях, продажник просто находит компанию, выбивает какой-то бюджет, и дальше нужно выполнить работы в рамках этого бюджета. И тут, скорее, трудозатраты подгоняются под цену, а не наоборот.
Могу еще сказать, что в итоге – поскольку у нас непрозрачный рынок с непонятным ценообразованием – стоимость работ может отличаться в разы при неизменном качестве и трудозатратах. Вы можете найти пентест за 300 тысяч и за 4 миллиона рублей при одинаковом объеме работ. Часто это видно даже на тендерах: есть ТЗ, смотришь, какие есть ценники и предложения – разброс бывает в 5-10 раз. При том, что качество вряд ли отличается в 5-10 раз.
Раз уж мы заговорили про качество и цену пентеста. Нужно понимать, нужен ли вашей компании пентест – а, если вы пентестер, нужно понимать, как обосновать проведение пентеста и продать его компании. Тут тоже нет универсального ответа. На мой взгляд, драйверы пентеста – это несколько простых вещей. Один из них – это комплаенс, о чем я уже говорил: когда от организации требуется проведение пентеста, и без этого не получится осуществлять бизнес-функции, вроде приема оплаты пластиковыми картами. Это понятно.
Другой драйвер – это инциденты: когда компанию уже поломали, она понесла ущерб и спохватилась. Для того, чтобы защититься, нужно провести расследование, провести пентест, чтобы в дальнейшем не поломали, и провести другие мероприятия. Все начинают бегать и думать, что делать.
Третий драйвер – это страх: допустим, инцидентов еще не было, но, может быть, они были у других членов отрасли, и компания боится. Еще один драйвер, который можно рассматривать совместно с драйвером страха – это новые компании, например, стартапы, которые только начали какую-то разработку. Он подумали и решили, что надо сразу провести пентест, чтобы исправить уязвимости и не допускать их в дальнейшем. Чтобы к моменту, когда сервис станет публичным и, возможно, популярным, уязвимостей уже не было. Это самый здравый подход.
Еще один драйвер, очень распространенный у стартапов – это требования контрагентов. Такая разновидность комплаенса, когда вы можете осуществлять свои бизнес-функции, но ваши контрагенты хотят проверить, что вы следите за своей безопасностью. Поэтому, если вы – небольшая компания, которая хочет продавать, например, крупным западным компаниям, то вам обязательно придется пройти пентест. Особенно, если вы предлагаете SaaS (software as a service) – тогда отчет о пентесте потребуют непременно. Это будет у них в гайдлайнах, их юристы и безопасники просто не допустят такого подрядчика, который не проходил пентест.
Это – причины, по которым компании обращаются к пентестерам, и мы проводим тесты. А вот с качеством, на самом деле, очень сложно. Я уже говорил, что в пентесте изначально не детерминирован объем работы, но и результат тоже не детерминирован. Вы можете заказать пентест за 6 миллионов рублей и получить отчет, состоящий из слов «уязвимостей не нашли». Как проверить, что работа была выполнена, причем качественно? Вы не можете этого понять. Для того, чтобы это точно проверить, нужно практически провести всю эту работу заново. Вы можете пытаться мониторить логи, чтобы следить, что от пентестеров действительно шла сетевая активность, но это все сложно. А по-простому проверить качество работы невозможно.
Возможные меры, кроме слежения за активностью – просить подробные отчеты о том, что делается, просить артефакты, отчеты от сканеров и прочие логи, например, от инструмента Burp. Изначально можно обсудить методологию – что вообще собираются делать пентестеры. Из этого может стать ясно, что они понимают. Но все это требует навыков и знаний – поэтому, если в компании нет безопасников, которые уже взаимодействовали с пентестерами и понимают эти услуги, проверить качество работ не получится.
Q: скажите, с чего лучше начать? Идеальный возраст для глубокого погружения в сферу пентеста?
Оба этих вопроса – про карьеру, и тут можно поменять «пентест» на «программирование», например. Я бы сказал, что нет никакого идеального возраста, но это такая мантра, которую все повторяют – якобы, никогда не поздно. Но, конечно, если человек начнет заниматься в 10 лет, то он скорее добьется успеха и быстрее будет обучаться, чем если он начнет в 40 лет; хотя это не значит, что начинать в 40 лет бесполезно. Просто понадобится больше усилий. Во-вторых, если говорить с утилитарной точки зрения – для работы в сфере пентеста, для того, чтобы стать пентестером и устроиться на работу, порог входа ниже, чем для разработки. Потому что для того, чтобы начать приносить пользу в разработке, нужно хотя бы уметь программировать и знать какие-то технологии. А для того, чтобы начать хоть что-то делать в пентесте – хотя это и может быть «иллюзия деятельности» — достаточно научиться пользоваться парой инструментов и интерпретировать результаты этой работы. Но это будет совсем базовый порог входа. Для того, чтобы действительно круто прокачаться в пентесте, потребуется уже больше усилий, чем для разработки. Для того, чтобы по-настоящему прокачаться в хакерстве, нужно знать разработку – причем даже не в одном языке программирования и технологическом стеке, а в нескольких. Еще нужно хотя бы в какой-то мере (а лучше – хорошо) знать инфраструктуру, сети, администрирование Windows и Linux, и программирование. Нужно глубокое погружение в какую-то сферу, и при этом еще и уметь ломать. То есть, нижний порог входа в пентесте ниже, но стать senior или выше — сложнее.
Для того, чтобы не застрять на первой ступеньке, нужно начать с изучения фундаментальных вещей. Программирование, сети, вообще технологии – как устроены ОС, сети, как деплоятся современные сервисы, как в различных языках программирования работают различные известные атаки, как от них защищаться. Много всего, но все это – фундаментальные вещи, которые надо знать, чтобы продвинуться.
Q: реальны ли сейчас атаки на wifi Evil Twin, или у компаний авторизации через RADIUS-сервер?
Честно говоря, не могу экспертно ответить, не обладая статистикой. Я думаю, у всех по-разному; наверняка много где прекрасно сработает Evil Twin.
Q: используете ли в своей работе методики и подходы NIST, OSSTMM, OSINT, OWASP и т.п., и какие можете выделить?
OSINT – это не то чтобы методика, это просто разведка по открытым источникам. OWASP – это вообще организация, но у этой организации есть методики для тестирования веб-приложений, мобильных приложений, и мы им следуем; по крайней мере, по духу, не выполняя каждый чеклист по галочкам – они могут быть довольно спорные. Методологиям OSSTMM мы следуем; по-моему, как раз в OSSTMM и изложены шаги про разведку, сканирование, эксплуатацию, постэксплуатацию, зачистку – то есть, основной смысл этой методологии в том, что должны быть применены такие шаги, но дальше детализируется намного больше.
В общем, коротко – да, но не буквально. Мы следуем духу этой методологии.
Q: что спрашивают на собеседованиях?
По-разному. Зависит от того, на какую позицию вы идете. Часто паттерн вопроса бывает такой. Вам описывают какую-то ситуацию – например, говорят: вы получили исполнение кода на сервере Linux извне, через периметр пробились, поломали веб-сервер, вы – внутри, какие выполните действия дальше? Или — вы попали на рабочую станцию сотрудника, какие дальнейшие действия? Или – вы нашли уязвимость в cross-site scripting на какой-то странице, там внедрена политика content security policy с такими-то параметрами, как вы будете ее обходить? Такого плана вопросы обычно бывают.
Q: какой порог входа в bug bounty, и реально ли жить только на нём?
Bug bounty – это вознаграждения за ошибки. Программы, в рамках которых компания дает деньги людям, сообщающим об уязвимостях в системах этой компании. Такой краудсорсинг пентеста, когда он проводится не по договору между двумя компаниями, а через публичную оферту. Это для тех, кто не знает.
На самом деле, bug bounty – это растущая штука. Есть большие площадки, где много программ. Порог входа для участия в bug bounty для пентестеров – он и низкий, и высокий. Низкий в том смысле, что этих программ bug bounty и ресурсов, которые можно поломать, существует столько, что уж какие-то простые уязвимости найти можно. Не обязательно сложные. Но, с другой стороны, можно упереться в какую-нибудь программу, где уже все простые баги нашли, и потратить на копание в ней два месяца, ничего не найдя. Это очень демотивирует. Поэтому часто бывает, что люди пробуют себя на этом поприще, и им не везет – они напарываются на что-то сложное и не находят уязвимостей.
В целом, в bug bounty много людей, которые зарабатывают большие деньги, не обладая при этом уникальными и выдающимися знаниями. Либо им повезло пару раз, либо они поняли фишку bug bounty и научились находить программы и ресурсы, в которых будут простые уязвимости. Еще часто бывает, что человек находит какую-то уязвимость на каком-то ресурсе и потом понимает, что она на самом деле очень распространена, и таким же образом можно поломать еще много компаний, монетизируя это. Реально ли жить только на bug bounty – да, есть даже миллионеры, которые сотни тысяч долларов в год делают только на bug bounty. Их мало; большинство, конечно, зарабатывает довольно мало. Но достаточно велик пласт людей, которые зарабатывают хотя бы десятки тысяч в год. То есть, уже не единицы и десятки человек, а сотни.
Q: Расскажите про версии Metasploit. Я слышал, что их несколько, и среди них есть платные. В чем разница?
Я думаю, можно зайти на сайт платной версии и прочитать, в чем разница. Я давно не пользовался Metasploit pro, но там есть web-интерфейс, как минимум. Это одно из отличий; я сейчас с ходу не скажу, какие там еще отличия принципиальные. Возможно, какие-то еще модули есть.
Я думал рассказать про то, какие обычно встречаются уязвимости. На самом деле, многие компании проводят пентесты в течение года и подсчитывают количество уязвимостей разных типов, чтобы подвести статистику по итогам года. Я такую статистику не подводил, но, если говорить по ощущениям и по таким самым простым вещам, которые обнаруживаются, в инфраструктуре самые простые и действенные уязвимости, которые приносят атакующим много пользы – это слабые парольные политики. Банальный перебор паролей – это бич инфраструктур. Если в компании работает хотя бы 500 человек, то довольно существенная часть из них будет не особенно технически подкована. Хотя бы у одного из них обычно можно подобрать пароль брутфорсом. Особенно это прикольно работает, когда в компании внедрена парольная политика, которая заставляет, например, иметь пароль, содержащий большую букву, маленькую букву и цифру, не короче 8 символов, и менять его раз в три месяца или в месяц. Это приводит к плохим результатам. Если человека заставляют делать так, то он не может запомнить пароль. Если он не пользуется менеджером паролей со случайными паролями, то он иногда просто пишет текущий месяц с большой буквы (типа «December2020»). На самом деле, это очень распространено во всех типовых корпоративных инфраструктурах – представьте Active Directory, сотни сотрудников с Windows на машинах. Можно просто брать текущий или прошедший месяц и год, пройтись по всем учетным записям – кто-нибудь да поломается. Очень действенная атака.
Если говорить о web-сервисах, то там самая простая атака – это обход авторизации и доступ к данным других клиентов. Атака заключается в том, что вы берете запрос к web-приложению, который выдает, например, вашу банковскую выписку по номеру счета. В ссылке или в запросе на сайт передается номер счета, числовой, в ответ выдается PDF-файл с выпиской. Вы меняете свой номер счета на номер чужого счета, и получаете чужую выписку.
Эта уязвимость называется «insecure direct object reference» — небезопасная прямая ссылка на объект. В современных сервисах это – самая распространенная уязвимость, по моим наблюдениям. Более классические уязвимости, которые были распространены в прошлом – например, SQL-инъекции и межсайтовый скриптинг – встречаются все-таки реже в сервисах, написанных с использованием современных фреймворков. Особенно SQL-инъекции. Но вот логические ошибки попадаются, потому что от них фреймворки не спасают. Разработчик должен сам думать о том, как защититься, как реализовать ролевую модель и разграничить доступ к объектам.
Q: вы говорите о некой градации дыр в системе, не могли бы вы привести примеры простых, средних, сложных уязвимостях?
Я не помню, в каком контексте я об этом говорил, честно говоря. Ну, только что я говорил о том, что простые уязвимости – это те, которые легко найти и легко эксплуатировать. Наверно, по этим параметрам можно охарактеризовать сложность уязвимости – сложность поиска и сложность эксплуатации. Может быть такое, что найти ее сложно – например, это какая-то хитрая логическая уязвимость, для эксплуатации которой нужно понимать логику работы сервиса и взаимодействие различных компонент, но при этом эксплуатация простая: нужно просто отправить несколько запросов. Или, например, может быть сложно найти, потому что вам дали исходники на 100 мб с миллионом строк кода – сиди, читай.
Найти в этих 100 мб уязвимость может быть сложно – но эксплуатировать может быть легко. Или наоборот – эксплуатировать сложно из-за каких-то ограничений, из-за фаерволов. Но в отчетах по пентесту нет градации «простые-сложные»: есть градация по критичности. Критичность складывается из уровня риска – то есть, из уровня ущерба – и из вероятности эксплуатации. Хотя вероятность – это почти то же, что сложность. Если нам для нахождения уязвимости потребовалась куча времени и навыки senior-пентестера, то мы можем оценить вероятность эксплуатации как невысокую. Мы нашли за три недели копания, а другие могут вообще не найти. Но при этом ущерб от этой уязвимости может быть высоким. Совместив такие показатели, получаем «средний» уровень риска.
Отчеты по пентесту имеют довольно стандартный шаблон. Бывает вводная часть, где просто описывается, что мы пентестили и зачем, какая модель нарушителя – внешний или внутренний доступ, есть учетки у него или нет. Дальше идет резюме, в котором описывается кратко результат: какие уязвимости обнаружены, какой уровень защищенности – все плохо или все хорошо. Описывается каждая уязвимость, демонстрируется со скриншотами, дается код, чтобы разработчики компании все поняли. И даются рекомендации. Там же дается оценка вероятности и уровня ущерба.
Q: много ли у вас при проведении пентеста встречались непропатченные Windows 7 c ms17-010 в корпоративном секторе?
Бывают. Обычно не в домене, правда. Не слишком много.
Q: как понять, что пора на собеседование? Как выделится среди других кандидатов? (возможно знания языков программирования или аккаунт на площадках по типу HackTheBox)
Я бы больше поставил на аккаунт на площадках. Если вы, конечно, там честно решаете задачи. Если нечестно – тогда и знаний не будет, и вы все равно собеседование не пройдете.
Вообще, конечно, есть еще сертификации. Они ничего толком не показывают, но помогают пройти HR-фильтры и пробиться дальше.
Q: можете дать рекомендации по поводу литературы и ресурсов для закладки основ?
Да, правда, в не очень удобном формате.
docs.google.com/spreadsheets/d/15w9mA5HB9uuiquIx8pavdxThwfMrH7HSv2zmagrekec/edit#gid=0
Блоги:
blog.deteact.com/ru
blog.orange.tw
swarm.ptsecurity.com
malicious.link/post
adsecurity.org
posts.specterops.io/archive
Учебные площадки:
portswigger.net/web-security
www.hackthebox.eu
overthewire.org/wargames
ctftime.org
Литература:
Хакинг. Искусство эксплойта
Web Application Hacker's Handbook
The Tangled Web
Но сейчас нет недостатка в литературе – сложность, скорее, в том, чтобы выбрать из массы материалов то, что подходит вам. Гуглите «pentest courses» — сразу будет куча всего. Площадка HackTheBox – отличная; я ничего не решал на ней, но имею представление. Думаю, многим навыкам там можно обучиться.
Q: какой ещё язык программирования стоит изучить, кроме Python и Bash?
Bash, наверно, действительно нужно уметь. Кстати, есть отличная площадка OverTheWireBandit, где можно хорошо потренировать Bash. А так – достаточно одного языка, которым вы владеете в достаточной мере, чтобы выполнять задачи. Конечно, бывают такие задачи, для которых Python не подойдет – например, если нужно быстро собирать данные с множества хостов по всему интернету. Но для большинства задач он подойдет. Однако, чем больше языков вы знаете – хотя бы на уровне понимания парадигмы и чтения синтаксиса – тем лучше. В ходе пентестов и аудитов вы будете сталкиваться с разными стеками и с приложениями, написанными на разных языках – нужно уметь понимать, как они работают. Кроме того, даже если вы совсем не занимаетесь аудитом исходников ПО – занимаетесь только инфраструктурой – то вам все равно следует знать разные языки. Очень многие инструменты написаны не на Python. Если инструмент будет плохо работать – возможно, придется разбираться в нем, читать код, патчить. Скажем, в инфраструктуре Windows это в основном C#.
Q: какие сертификаты наиболее востребованы для редтима, но кроме OSCP?
Именно для редтима? Есть сертификаты, которые так и называются – Certified Redream Professional, Certified Redteam Expert, Pentester Academy. Но они не очень востребованы, они просто есть. Затрудняюсь ответить, какие именно действительно востребованы. Востребованность исчисляется тем, сколько работодателей вписывает их в требования вакансий, и сколько заказчиков – в тендерные требования. Часто бывает, что требуется от сотрудников подрядчика наличие сертификата – и там чаще всего OSCP или CEH – старый сертификат, даже скорее теоретический, а не практический.
Q: нужны ли навыки декомпилирования в пентесте?
В какой-то мере да. Особенно если вы работаете именно с application security, в анализе защищенности приложений. Там это может пригодиться. Но чаще всего – с мобильными приложениями: для них вам могут не давать исходники, но само приложение у вас будет, и вы будете его декомпилировать, реверс-инжинирить.
Вообще, если спрашивать на тему «нужны ли навыки» — ну, про любой навык можно сказать, что он полезен. Но невозможно знать абсолютно все. Знать много – хорошо, но нужно все-таки понимать свою специализацию, понимать, что вы умеете лучше. Даже внутри web-приложений бывают специализации; бывают специализации по индустриям — например, человек может хорошо знать уязвимости платежных сервисов. Неважно, на уровне web или финансовой логики; бывают люди, которые только и занимаются тем, что тестируют платежные терминалы, интернет-банкинг, карточный эквайринг и так далее. Вроде бы это все – одна область, но на самом деле там очень разные штуки. И хардвер может быть разный (смарткарты, терминалы), и web, и API, и мобильные приложения. Одним словом, любой навык может быть полезен, но не обязателен. Обязательно иметь какую-то критическую массу навыков и знаний.
Могу добавить насчет стоимости и востребованности. По моим оценкам, размер российского рынка пентестов – около одного-полутора миллиардов рублей. Это я считал по итогам на конец 19 года. Имеется ввиду, что именно столько российские компании тратят на пентесты. Конечно, пентестерские компании могут хотя бы немного продавать услуги за рубеж, поэтому итоговый размер рынка будет несколько больше. Конечно, рынок пентеста очень фрагментирован; бывает очень много маленьких компаний, которые зарабатывают немного. Заказчики склонны менять поставщиков пентестов, потому что ротация обеспечивает свежий взгляд и максимальное покрытие. Одна команда, допустим, пропускает одну уязвимость, а другая – заметит ее, но может пропустить другую. В силу этого не бывает полной монополии – чтобы одна команда засела, и пентесты покупали только у нее. Они меняются каждый год.
Q: за сколько часов управились с экзаменами OSCP?
Не помню, несколько часов. Честно говоря, я сдавал два раза; в первый раз я прорешал все в течение дня, написал 80-страничный отчет, но не прочитал требования к нему. Оказалось, что нужен определенный формат скринов, и мой отчет не приняли, поэтому пришлось сдавать снова. На пересдаче ушло часов 5.
Q: посоветуйте русскоязычных блогеров в сфере пентеста
У нашей компании есть блог. Правда, мы нечасто пишем. Вообще, надо подписываться в Twitter на людей; большинство пентестеров пишет на английском, в том числе русскоязычные пентестеры. Мы стараемся дублировать – и на русском пишем, и на английском. Я информацию получаю из Twitter – подписываюсь на интересных людей, которые рано или поздно репостят все интересное, поэтому можно не следить специально за блогами, а получать все через Twitter. Или через Telegram-каналы. Русскоязычных блогеров нет, мне кажется.
Q: какие шансы у Linux/Network Administrator попасть в пентест?
Прямая дорога в инфраструктурный пентест. Будет достаточно несложно вкатиться, если администратор хорошо понимает сеть и Linux. Единственное – будет еще короче дорога, если это Windows-администратор; корпоративные сети – это обычно Windows. Но все равно нормально, это хороший бэкграунд.
На самом деле, у меня есть Google-табличка, куда я выписал набор знаний для разных специализаций и уровней пентестеров. Стажер, младший, средний, старший, с разделением на Web и инфраструктуру. Наверно, ссылку можно будет вставить; она будет и на Хабре, если будет итоговый пост. Это мои субъективные требования, но я их немного менял по фидбеку от людей, которые давали свои замечание и предложения и добавляли что-то. Поэтому можно считать их плюс-минус адекватными и ориентироваться на них. Там и сертификации перечислены, и даже зарплатные расценки на рынке, и направления для развития.
Q: как красиво уйти от вопроса от заказчика, который он может задать в процессе пентеста — «Ну что, нашли что-нибудь?»
А зачем уходить от вопроса? Ответьте. Если еще не нашли ничего, то не нашли. Вам же, рано ли поздно, придется отвечать на этот вопрос в отчете. Поэтому нормально, что вас спросили через неделю после начала работы и вы говорите, что не нашли.
Q: где смотреть вакансии на пентестера? В hh очень мало.
Да, в Headhunter мало. Обычно все ищут друг друга по знакомству, поэтому, наверно, надо просто общаться с людьми. Можно разместить свое резюме – возможно, в таком режиме будет больше внимания. Также можно поискать вакансии в LinkedIn. И еще бывают Telegram-каналы, в которых выкладывают вакансии
Q: что вы думаете про площадку tryhackme?
Не знаю такую. Сейчас очень много площадок, по web я бы порекомендовал Portswigger Academy порешать. Portswigger – это компания, которая разрабатывает Burp.
Q: пентест и удаленка. Реально? Или в связи со спецификой работы стараются набирать в офис?
Реально. Ну, сейчас вообще все на удаленке работают, даже большие компании. Понятно, что, если вы рассматриваете чисто удаленный вариант, то могут быть сложности. Бывает еще такой формат, что вы сначала приезжаете в офис работать, на месяц, например, а потом уже удаленно.
Q: есть ли публичная БД или список типичных уязвимостей, чтобы поучиться? Или книжка какая-нибудь?
Да, например, OWASP Top 10. Это достаточно спорная штука, но это топ-10 уязвимостей в web-приложениях. Есть еще CWE (Common Weakness Enumeration) – попытка классификации всех уязвимостей, разбиение их на иерархическую систему. Можно посмотреть, там есть примеры конкретных уязвимостей. Другой каталог – CVE, это просто каталог уязвимостей в различном ПО. Там тоже есть реальные примеры, можно посмотреть, разобраться, как работают эксплоиты.
Q: можете прочитать немного вашу табличку со спецификациями?
Голосовой формат, конечно, странный. Я могу расшарить экран. [экран не расшаривается] Я думаю, ссылка на документ будет на хабре. Там написано, сколько нужно опыта (в годах) для каждого уровня; это, конечно, субъективно – скорее, как ориентир. Описаны навыки, в произвольном порядке. Зарплата и сертификация, на которые можно ориентироваться. И путь роста – что делать, чтобы выйти на следующий уровень. Например, для junior pentester нужно около года опыта – или работы, или изучения; если человек не изучал хотя бы год – не занимался IT или программированием – и сразу попытался вкатиться в пентест, то он вряд ли имеет знания и навыки. Основные требования на этом уровне – общее знакомство с методологией пентеста, знание основ технологии, умение пользоваться Linux и писать простые скрипты, которые работают с сетью (парсеры, например), знание регулярных выражений, знание протокола HTP, работа с инструментами – сканерами уязвимости и Burp. В общем, почитайте, я не буду все перечислять.
Q: что делать в условиях, когда почти все вакансии требуют от 2ух лет опыта? Залипнуть в Bug Bounty и HackTheBox или пытаться пробиться на уровень, которому не соответствуешь?
Это фигня. Требуют и требуют – на самом деле, смотреть-то будут на знания. Вы можете записать в «опыт» как раз bug bounty и HackTheBox. Если вы реально не соответствуете нужному уровню по знаниям и пониманию – значит, не соответствуете. Но формальный критерий по количеству лет опыта не так важен, я думаю.
Автор: galimova_ruvds