Интервью с багхантером Артёмом Московским. Он взломал Steam и получил самую крупную награду в истории Valve



    Артем Московский — багхантер, пентестер и безопасник которому сразу хочется задать стыдный вопрос «сколько ты зарабатываешь?» В прошлом году он получил самое большое вознаграждение в истории Valve — $20 тыс и $25 тысяч за две крупные уязвимости в Steam и еще $10 тыс за баги поменьше.

    Мы переписывались несколько дней, и Артем рассказал, как начал заниматься своим делом, какие скиллы для этого нужны, и не тянет ли с таким талантом на темную сторону.



    В 2006 году, когда мне было 9 лет, у меня появился первый ПК, и я неосознанно решил, что буду крутиться в IT. До 10 класса ориентировался на программирование. После, когда появились первые успехи в инфосеке, решил что безопасность интереснее.

    Началось с банального: нужно было сделать сайт для клана в игре Jedi Academy. Тогда выбор пал на старый добрый uCoz, но идея «делать сайты круто» осталась. Я посмотрел курсы «специалиста» по PHP. Параллельно зависал на античате и других тематических форумах, почитывая статьи о типовых уязвимостях. Просто было интересно.

    Шли годы, а я все еще был в поиске себя и это завело меня в рекламу. Тогда я пользовался одной крупной рекламной сетью для арбитража трафика. Ну, как пользовался — грустно обновлял статистику и унывал от отсутствия лидов. Как сейчас помню, взгляд зацепился за параметры даты в запросе на получение статистики. Несколько изящных движений пальцами рук, и в окне браузера появляется модальное окно — это была XSS. Я написал в поддержку, и через час мой баланс на сайте показывал уже 300$. Тогда в 10 классе, заработав первые «серьезные» деньги, я подумал — да, это моя тема. На этом заряде мотивации за следующий месяц я сделал в десять раз больше, помогая сайтам рекламных сетей стать безопаснее.

    Сейчас я живу в Одессе, учусь в Одесском политехе, специальность «Компьютерные науки». Но мою деятельность в интернетах к универу привязывать не стоит. Он особо на это не повлиял. Уже почти три года работаю пентестером на фултайме. Но для хорошей жизни багхантинга бы хватило.

    — У тебя тогда не сорвало крышу от своей крутости? Типа нахер учебу, работу — буду вот это делать.

    — Не сорвало, но определенный сдвиг произошел. Почувствовал себя независимым от системы.

    — А зачем пошел учиться и работать? Это же система, причем не особо эффективная.

    — Одно дело быть частью системы, другое дело зависеть от нее. Универ и работа это простой способ найти единомышленников и друзей.

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

    — Тебя засыпают офферами после твоих рассказов?

    Да, офферы приходят. Последний был в хорошую международную компанию на позицию Application Security Expert.
    В 2018 году Артем нашел уязвимость в Steam. Он раскрутил SQL инъекцию в базе данных на странице для партнеров и нашел возможность скачать ключи для любой игры.

    Подробно о процессе он писал здесь.

    «Сгенерировался файл с 36,000 ключей от игры Portal 2. Вау.
    Только в одном наборе оказалось такое количество ключей. А всего наборов на данный момент более 430,000. Таким образом, перебирая значения keyid потенциальный злоумышленник мог скачать все ключи, когда-либо сгенерированные разработчиками игр Steam»

    «Через 5 часов уязвимость была исправлена, однако статус triaged (принята) ей выставили через 8 часов и, черт возьми, для меня это были очень сложные 3 часа за которые мой мозг успел пережить стадии от отрицания до принятия.

    Так как уязвимость не обозначили принятой, я полагал что очередь до моего репорта еще не дошла. Но баг то исправили, а значит его могли зарепортить раньше меня.

    Теперь, если посчитать все деньги за уязвимости от Valve, получится 55 тысяч. Думаю вложить во что-то, но еще не решил.

    — Как вообще твое занятие правильно называть?»

    Багхантинг. Возникают проблемы когда пытаешься объяснить людям не из IT, чем занимаешься. Для них ближе всего слово «хакер». Мне не комфортно говорить так, потому что, в моем сознании, это слово опошлили школьники, которые грозились взломать твой ВК или вычислить по ip. Поэтому мой обычный ответ «Ну типа хакер» сопровождается неловким взглядом в пол.

    — Что за скилл для этого нужен?

    Понимание как работают вещи. Результатом предыдущего будет понимание, какие уязвимости могут быть в их реализациях. Мне нравится в багхантинге, что приходится иметь дело с разными технологиями. Это очень круто раздвигает твой кругозор вширь. Через некоторое время появляется опыт, интуиция, и ты уже в голове моделируешь угрозы для исследуемого приложения.

    Практически всегда я использую Python, потому что он легкий и красивый. Но если нужен какой-то вывод в веб, то прибегаю к PHP. Сейчас например автоматизирую некоторые задачи для разведки. Веб-интерфейс работает локально на PHP — вывод и управление задачами, а сами таски отправляются на Python-«агенты», которые хостятся на парочке VDSок.

    Иногда, когда пишу что-то на скорую руку и не секьюрно, то потом могу себе позволить в этом «продукте» пораскручивать инъекции, но это баловство не более.

    — Ты долго выбираешь цель?

    Я люблю искать уязвимости в том, что использую сам. Чувствуется какой-то челендж, появляется мотивация. Иногда даже знаешь, что тебе за это не заплатят, возможно даже не ответят, но просто интересно.

    Если ты выбираешь публичную программу на Х1, которая уже несколько лет платит за баги, то не стоит надеяться на XSS в поле поиска. Либо попади глубже, куда большинство не доходит, либо придумай вектор, до которого большинство не додумались.
    До истории с Valve Артем описывал, как нашел уязвимость в одном из пулов для совместного майнинга криптовалюты — как раз в то время, когда все чокнулись на блокчейнах и росте биткойна.

    Он нашел способ обойти двухфакторную идентификацию и завладеть любым аккаунтом в приложении. За репорт Артему дали один биткойн — на тот момент $18 000. Думать о том, сколько он стоит теперь Артему, наверняка, больнее, чем большинству из нас.

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

    — Тяжело даются провалы?

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

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

    — Что по-твоему действеннее, технические пути или социальные?

    Смотря для чего. Багхантерам за социальные не платят, возможно даже наказывают. В реальных атаках применяется и то, и другое.

    — Хороший безопасник должен иметь хакерский опыт?

    Ну если хакерский опыт — это не 2 года условно, а умение раскручивать инъекции и находить XSS, то да. Хороший, думаю, должен.

    — Твоя работа — это такая штука, где или получилось, или нет. Или ее можно делать качественно и некачественно?

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

    — Ты воспринимаешь безопасников как врагов или как коллег?

    — Как коллег. Я и сам считаю себя безопасником.

    — А чувствуешь ли превосходство над обычными разработчиками?

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

    Мне время от времени в голову приходят мысли о создании и разработке своих интересных сервисов и инструментов в сфере ИБ. Поэтому часто как раз нахожусь в процессе «создания». Пока все для себя, но возможно мир увидит мои творения.

    Чтобы я делал, если бы мир фантастическим образом подобрел и безопасность перестала быть нужна? Выбирал бы между работой в Uber и ЯндексТакси.

    Но если серьезно, то моих навыков бы хватило, чтобы работать средним программистом. Вообще не вижу сложности найти работу в IT, если у тебя уже есть какой-то кругозор, просто углубляешь свои знания в том, что интереснее всего.

    — Если бы ты сейчас составлял программу обучения на хакера/багхантера, какие бы предметы там были?

    Программирование. Английский язык — вся годная информация на английском. Литература — чтение отчетов с X1. Анонимность. Физкультура — на случай пативэна если плохо с анонимностью. Право — если плохо с физкультурой.

    — Я видел, в комментах тебя спрашивали, почему не переходишь на темную сторону. Если не отшучиваться, то реально — почему?

    Спокойный сон и внутренняя гармония важнее любых денег.

    — Если бы перешел, ты бы был хорошим преступником?

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

    Комментарии 21

      +2
      Помню у близзарда дырища в системе оплаты была размером с космос. Игры, подписки делал людям за золото в WoW'е. Но куда зарепортить баг так и не нашел. Так и кануло в лета.
        0
        Это точно дыра? В Wow есть механика покупки игрового времени с помощью внутриигровой валюты
        worldofwarcraft.com/ru-ru/news/18141101/introducing-the-wow-token
          +2
          Уж поверьте. В WoW точно нет механики покупки старкрафта и апгрэйда новых аккаунтов до последних дополнений :) И какое вообще отношение имеет механика игры до дыр в сервисах? Но это было много лет назад, наверняка поправили.
            0
            Так а золото-то при чём? Или золотом оплату брали?
              0
              Оплату брал. Что-то типа относительно анонимной альтернативной валюты на то время :)
              0
              В WoW точно нет механики покупки старкрафта и апгрэйда новых аккаунтов до последних дополнений :)

              Уже почти два года как есть — купленный за игровое золото жетон WoW можно либо потратить на 30 дней подписки, либо конвертировать в средства кошелька Battle.net (в кошелёк добавляется сумма, равная стоимости 30 дней подписки в стране игрока), а уже с кошелька Battle.net можно купить всё, что продаётся в магазине Battle.net (в том числе и другие доступные там игры).

                0
                Ну тогда с выходом из анабиоза меня :) Это было лет девять-десять назад.
            +2
            Да и у Valve в Steam какое-то время платежи через Webmoney не валидировались корректно, success-ссылка магазина была доступна публично. Можно было перейти на страницу платежа через Webmoney, отменить платеж, вручную ввести идентификатор платежа в success-ссылку, и этот платеж считали зачисленным.
            0
            Подождите, но разве XSS это не тогда, когда своими действиями я повлиял на что-то у другого пользователя сайта?
            Как сейчас помню, взгляд зацепился за параметры даты в запросе на получение статистики. Несколько изящных движений пальцами рук, и в окне браузера появляется модальное окно — это была XSS.
              +1
              Это называется non-persistent XSS. Основная схема эксплуатации: вынудить пользователя каким-то образом перейти по ссылке злоумышленника (со стороннего сайта, например).
                0
                Еще раньше называли пассивной XSS.
              0
              Если ты выбираешь публичную программу на Х1, которая уже несколько лет платит за баги, то не стоит надеяться на XSS в поле поиска.

              Литература — чтение отчетов с X1.

              Что такое Х1?
                0
                HackerOne, думаю
                  0
                  Площадка для white-hat и компаний говых платить баунти за уязвимости. hackerone.com
                  –1
                  Если в момент взятия интервью интервьюер не бухал с интервьюируемым, то использование термина «нахер» в вопросах выглядит странно.
                  Я бы после этого на вопросы уже отвечать не стал :)

                  Если бухали — то вопросов нет, это нормально в дружеском общении. Но тогда это в статье стоило бы уточнить.
                    0
                    Возникают проблемы когда пытаешься объяснить людям не из IT, чем занимаешься. Для них ближе всего слово «хакер». Мне не комфортно говорить так, потому что, в моем сознании, это слово опошлили школьники, которые грозились взломать твой ВК или вычислить по ip. Поэтому мой обычный ответ «Ну типа хакер» сопровождается неловким взглядом в пол

                    Почему не говорить "пентестер"? Это и относительно понятно, и, в целом отражает деятельность и ее белошляпность. Кто не знает этого термина, и других не знает, объяснять в любом случае.

                      0
                      Борцун с «системой»…
                        +1
                        А куда делся абзац про Luxoft?
                        P.S. Интернет все помнит если что.
                          +1
                          Спасибо, что напомнили. Пришлось удалить на время разбирательства, а потом забыл обновить.
                            +1
                            del — второй вопрос не имел смысла.

                            Спасибо что не проигнорировали вопрос.
                          0
                          Ты используешь какую-либо метологию для баг хантинга? Слышал про всякие bug bounty hunting methology v3, насколько они реально нужны?

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое