В нашем журнале не раз проскакивали темы о том, как заработать денег с
помощью разработки флеш-игр, игр для платформы Android и т.д. и т.п. Но было бы
нечестно не упомянуть о том, как рубят лавэ белошляпые хакеры, а именно —
баг-хантеры. Именно так, сегодня ты узнаешь, как, имея навыки в поиске багов и
написания сплоитов, срубить от десяти до ста бумажек с портретом президента
Франклина.
Работа…
Если ты в будущем хочешь связать свою жизнь с ИБ, то у тебя есть множество
путей реализации этой затеи. Конечно, ты столкнешься со многими препятствиями,
начиная от разного понимания, что такое "ИБ", у тебя и у "босса", заканчивая
тем, что в итоге, если ты хочешь генерировать ключи по ГОСТу или разбираешься в
бумажках от ФСТЭК по персональным данным, то работы полно, а если ты любишь
"техническую" работу, то предложений уже не так много, и скорее всего все
закончится вакансией системного администратора или программиста (хорошо, если с
уклоном в ИБ). Конечно, все это я говорю о легальной, законной работе, ведь
заниматься "грязью" — это для нас как переход на Темную Сторону Силы…
Благодаря стандарту PCI DSS, который приподнял рынок пентестов в стране, шанс
найти работу в этом направлении есть, однако я хочу поговорить о другом. Вопрос
поиска работы в области ИБ достаточно индивидуален и зависит от интересов и
возможностей соискателя. Поэтому я буду говорить о тех, в чьи интересы входит
реверсинг, баг-хантинг и эксплойт-девелопмент. То есть, если ты хочешь искать
уязвимости, писать эксплойты и при этом получать свою копейку, то эта статья для
тебя :).
Баг-хантинг
У баг-хантера три пути развития (на мой скромный взгляд):
Вариант 1. НТП/НИИ/НПО имени кого-то там при чем-то там. Да-да. В
принципе, кибер-война — это уже не шутки, и нашей стране нужно все то же самое,
что и МОССАДу с ЦРУ. Поэтому баг-хантер и эксплойт-райтер — полезный человек.
Так как в ФСБ просто так не попасть, можно найти работу в каком-либо
учреждении, которое работает, выполняя заказы "сами-знаете-кого". Уверен, что
они там делают полезную и важную работу :). Попасть туда можно из универа (если
кафедра соответствующая), по "протекции" или при внимательном поиске работы. В
принципе, и в само ФСБ после такого универа попасть реально (после года
собеседований и тестов получишь офицерскую ЗП и командировки раз в год черт
знает куда, и не факт, что тебе дадут ту работу, которую хочешь ты).
Вариант 2. Блэк-Хат. Если вариант 1 был для любителей милитаризма и
шлема Дарта-Вейдера, то данный вариант для любителей рискнуть свободой и
здоровьем :). Эксплойт-паки нуждаются в пополнении новыми зеро-деями, и если у
тебя есть связи, то ты легко можешь продать свежую багу/эксплойт (0day) кому
надо за много-много $$$. Этот вариант я не поддерживаю, и потому не жди никаких
деталей. К тому же, кто захочет, сам найдет и освоит эту дорогу; только помни,
как опасен и коварен путь Темной Стороны...
Вариант 3. Свободная продажа. В мире существует множество фирм,
которые с удовольствием купят у тебя инфу о зеро-дее и эксплойте. Причем все это
абсолютно законно и легально. Такие компании используют эту информацию
длявключения ее в сигнатуры своих IDS/IPS-устройств, или включают в сплойт-паки
для пентестеров. Конечно, платят они чуть меньше, чем на черном рынке, зато ты в
ряде случаев получаешь еще и всякий PR в виде авторства уязвимости (но уже без
прав на нее) и возможность посещать всякие конференции и прочие фишки. К тому же
этот вариант можно совмещать с обычной работой и ничем, по сути, не отягощать
жизнь. Так как в первом и втором варианте присутствует скрытность и не всегда
свобода, а во втором — еще и криминал, то я лично поддерживаю вариант номер 3,
поэтому статья будет посвящена именно этому пути.
Рынок 0day
Существует множество компаний, которые хотят купить у тебя 0day. Процедура
покупки может отличаться, но примерно суть одна и та же. О ней мы поговорим чуть
позже, а пока рассмотрим рынок на основе опроса от unsecurityresearch.com.
Результат показывает, что в среднем за 0day-уязвимости на клиентской стороне
можно получить от 1000/2000 долларов. Это средняя цена, потолок же может
доходить и до 30000 долларов. Зависит от того, в каком продукте обнаружена
проблема. Из всех компаний, покупающих уязвимости, наиболее высокий средний
показатель у ребят из ZDI (Zero
Day Initiative), где большинство клиентских уязвимостей в промежутке от
одной до трех тысяч долларов. Кроме того, ZDI сохраняют авторство в публикации,
и когда инфа выходит в паблик, твое имя не сотрется (если ты сам этого не
желаешь). Кроме прочего, ZDI (а вернее, компания TippingPoint, основатели ZDI)
являются спонсорами ежегодного конкурса PWN to OWN на CanSecFest, и именно они
платят призовые фонды за взлом браузеров. Так что лично я для себя выбрал работу
именно с этими парнями.
С точки зрения статьи УК РФ 273 анализ бинарного кода с анализом
уязвимости не является ПО, и уж тем более вредоносным. Несмотря на то, что
эта информация позволяет написать эксплойт или червь, законом такая
информация не описывается, поэтому продажа ZDI такой инфы — дело не
преступное. Более того, PoC-эксплойт, например, для браузера, который
запускает калькулятор и предупреждает об этом пользователя, также
вредоносным кодом не считается (запуск калькулятора — это ж не опасно, но
помни, что "эксперты" у нас в стране могут вообще не разбираться в
предмете).
ZDI
Фактически TippingPoint является "подразделением" компании 3COM (а те, в свою
очередь, продались Hewlett-Packard) и занимается разработкой системы IPS, в
которую они и включают сигнатуры от купленных ими 0day-проблем. Фактически
сигнатура в их IPS появляется задолго до того, как выйдет патч. Кроме того, ZDI
уведомляет разработчика и проходит полный цикл от уведомления до ожидания патча
и скоординированной публикации о проблеме. До того, как информация станет
доступной, ZDI может делиться деталями проблемы с партнерами-вендорами решений
по защите информации. Таким образом, продав 0day-багу ZDI, ты помогаешь всем
владельцам железки TippingPoint защититься от потенциальной угрозы. Но хватит
рекламы, рассмотрим, каким же образом поднять лавэ.
Для начала надо найти уязвимость. В эпоху вездесущего
фаззинга это может быть
не так уж и сложно, но все же это требует определенных знаний и навыков, а
иногда даже и чутья с везением. Но, как бы то ни было, про поиск уязвимостей уже
написано немало букв. Вспомни хотя бы мою статью в
апрельском ][ про
эксплуатацию брешей в
ActiveX-компонентах. Итак, как найти уязвимость более-менее понятно, но не
рвись в бой, сначала надо определиться с жертвами. Очень большое значение имеет,
ГДЕ именно найдена уязвимость. ZDI четко описывает требования к багам, которые
они готовы купить:
- Удаленные уязвимости, связанные с выполнением кода
- Уязвимости, связанные с парсингом доверенных файлов
- Уязвимость должна быть в последней версии релиза ПО
- Уязвимое ПО должно быть широко распространено
Это значит, что можно забыть про XSS-, LFI- и SQL-инъекции в популярных
движках. Нас интересует настоящая жесть вроде ошибок с указателями, переполнения
буфера, ошибки формата строки внедрение команд и прочих багов, которые приводят
к выполнению произвольного кода. Нас интересуют знаменитые FTP/веб-сервера, базы
данных, системы бэкапа, а также браузеры, ActiveX и плагины популярного ПО для
браузеров, ПО корпоративных систем и т.д. В этот список могут входить как
платные, так и опенсорсные продукты, главное, чтобы они были популярны и широко
распространены. Ну вот, собственно, и все...
А вот и не все. На самом деле найти уязвимость — это зачастую задача более
простая, нежели проэксплуатировать ее. Поэтому надо показать, что найденная
тобой уязвимость реально опасна. Для этого можно написать Crash-PoC или эксплойт
с запуском калькулятора, а можно выслать подробный бинарный анализ проблемы с
выводами. От качества этой писанины зависит скорость, с которой ZDI отреагирует
на твой товар и, возможно, качество этой реакции. Очевидно, что этот шаг
являются самым трудным и, фактически, это и есть основная твоя работа. Чтобы
выполнить его, требуется опыт и знания, за что собственно и платят деньги.
Компания NSS анонсировала открытие портала-аукциона для пен-тестеров и
эксплойт-девелоперов. На этом портале эксплойт-райтеры могут продавать
эксплойты к не-0day-уязвимостям в формате модулей для Metasploit. Никто не
знает, выживет ли эта идея, но проект стоит оценить, откроется он уже скоро.
Шаг 1. Регистрация
Если нулевой шаг не поддается описанию в теме моей статьи (только затрагивает
область твоих интересов), то дальше я опишу сам процесс работы с ZDI. От
регистрации до вывода денег. Итак, шаг первый — регистрация. Для этого идем на
сайт
zerodayinitiative.com, где видим простой и понятный интерфейс. Смело жми
ссылку на "Researcher Login". Нас просят ввести логин и пароль, но понятное
дело, что у нас их нет... ищем в верхнем правом углу ссылку "Register". Отлично!
Тут мы вводим свой e-mail, пароль и желаемый логин. В принципе, этого
достаточно, но чуть ниже есть поле "Referal". На него можно забить, но я
рекомендую ввести туда мой логин :). Как только ты сдашь свой первый 0day, и тем
самым покажешь, что твой аккаунт имеет смысл, тот, кого ты указал в качестве
реферала, получит 2500 очков вознаграждения (о них позже), так что смело вводи в
это поле "asintsov", а я буду ждать твоих успехов :).
После регистрации ты сможешь войти в систему, но этого недостаточно —
необходимо официально подтвердить свою сущность. Для этого в закладке "My
Account" надо отправить несколько форм. Первая — "My Profile". Тут ты заполняешь
свои настоящие ФИО, указываешь адрес и страну, откуда ты. Обрати внимание на то,
что если ты из Кубы, Ирана, Северной Кореи, Сирии или, например, из Судана, то
ZDI не будет с тобой работать. Отправив эти данные, знай, что на веб-сайте они
не хранятся, а шифруются PGP-ключом и отправляются по e-mail'у в офис ZDI. Таким
образом, на веб-сервере нет никакой информации о тебе, кроме логина и e-mail'а.
После отправки профайла нужно подтвердить свою личность. Для этого иди и
заполняй следующую форму — "Copy of Government Issued ID". Кликнув по этой
ссылке, ты получишь PDF-файл, который надо распечатать, вписать ручкой свой
логин от системы, приложить свой паспорт (разворот с фоткой) и засунуть эту
художественную композицию в сканер. Полученную форму отправить по электронной
почте на zdi@3com.com, предварительно
зашифровав на открытом ключе —
https://www.zerodayinitiative.com/documents/zdi-pgp-key.asc (если не
параноик, то можешь и не шифровать). В общем, паспорт должен быть обычным, хотя
можно и загран — судя по всему, им там пофиг.
Следующий пункт — самый приятный — про то, каким путем ты хочешь получать
вознаграждение. Раньше было доступно три варианта: перевод Western Union, чеком
или банковским переводом. Вариант с WU был шикарен, но в итоге от него
отказались, и теперь существует только два варианта — чеком или банковским
переводом. Я выбрал банковский перевод; для этого надо знать номер своего счета
в банке (ну, и иметь этот счет), название банка, SWIFT- позывной и адрес. Все
это можно узнать как в самом банке, так и в интернете. Счет должен быть открыт в
долларах США. В идеале, если к этому счету привязана карточка, то деньги можно
снимать без комиссии в фирменных банкоматах банка. После того, как вся эта
информация заполнена и подтверждена, напротив данных форм появятся большие
зеленые кружочки с галочкой — мол, все ОК. Это значит, что можно работать. На
самом деле, даже пока галочек еще нет, уже можно слать инфу о багах, так как они
проверять уязвимости будут намного дольше, чем тебя регистрировать.
Шаг 2. Процесс
Итак, ты нашел уязвимость, написал эксплойт и описание на английском, и что
дальше? Дальше все просто — кликай по "Open Case" и заполняй эту форму. Не
бойся, никто у тебя уязвимость не украдет. Желательно рассказать, какие
привилегии нужны для реализации уязвимости, в конфигурации по умолчанию или нет
(лучше, если да), нужны ли элементы социальной инженерии при атаке (типа, надо
ли заманить на свой веб-сайт и т.д.). После того, как ты отправил уязвимость, не
жди моментального ответа, а начинай искать следующую багу. Дело в том, что
теперь твой "отчет" ждет проверки, и ждать он может больше месяца, поэтому не
стоит терять время. Через месяц тебя могут попросить по e-mail'у уточнить
какие-нибудь детали и опять исчезнуть на неделю-две, а могут сразу высказать
предложение купить твою багу и права на нее. Прямо в письме будет указана и
сумма. Если ты согласен, то ответь на письмо, что, мол, согласен. После этого
статус баги в меню "My Cases" обновится, а еще через неделю тебе на счет в банке
упадет ровно та сумма, на которую вы договорились. В меню "My Cases" можно
следить за судьбой проданной тобой дырки — тут через какое-то время будет
сказано и о факте уведомления разработчика, и о том, когда уже можно делать
публичное сообщение о проблеме, и тогда ты можешь на своем сайте воспроизвести
его — авторство уязвимости сохранено, нельзя только говорить больше, чем сказано
в публичном сообщении ZDI.
Награда
Кроме суммы на счет ты получишь очки вознаграждения. Эта фигня показывает
твою полезность для ZDI. За первый баг ты получаешь 2500 очков, потом 2500 можно
получать с тех, кто указал тебя в качестве реферала и уже сдал свой первый баг.
А потом с каждой новой проданной уязвимостью ты получаешь эти очки. Зачем они
нужны? А за тем, что, набрав 10000 очков, ты становишься бронзовым партнером,
20000 — серебряным, 35000 — золотым и, наконец, 50 000 — платиновым. Например,
всем известный хакер @WTFuzz имеет двойной платиновый статус. Эти статусы дают
разные полезные и вкусные плюшки, которые начисляются в конце календарного года
с момента начисления первых очков. Плюшки представляют собой следующие бонусы.
Бронзовый:
- +10% к денежным наградам за все баги в следующем году
- $1000 бонус
Серебряный:
- +15% к денежным наградам за все баги в следующем году
- +25% к начисляемым очкам вознаграждения в следующем году
- $5000 бонус
- Оплачиваемая путевка (перелет + регистрация) на DEFCON в Лас-Вегасе
Золотой:
- +20% к денежным наградам за все баги в следующем году
- +50% к начисляемым очкам вознаграждения в следующем году
- $10000 бонус
- Оплачиваемая путевка (перелет + регистрация) на BlackHat и DEFCON в
Лас-Вегасе
Платиновый:
- +25% к денежным наградам за все баги в следующем году
- +100% к начисляемым очкам вознаграждения в следующем году
- $20000 бонус
- Оплачиваемая путевка (перелет + регистрация) на BlackHat и DEFCON в
Лас-Вегасе + запись на курсы BlackHat
Как видишь, бонусы достаточно вкусные и приятные. Кроме того, не забывай про
основное вознаграждение, которое достаточно адекватно оценивает твою работу. За
простое переполнение буфера в ActiveX-компоненте, которое находится за пять
минут COMRaider'ом, могут заплатить 2500 — 3000 долларов. Если находить по две
уязвимости в месяц, то можно жить — не тужить вообще. Многие западные ресерчеры
только за счет ZDI и живут.
Однако нельзя же всю жизнь только баги искать...
Выводы
Если ты хочешь начать свою баг-хантерскую жизнь, то я рекомендую начать ее с
ZDI. После года-двух успешной работы ты получишь опыт, знания, новые интересные
контакты и шанс попасть на работу ресерчером/пен-тестером/консультантом куда
угодно, ведь нет лучшего резюме, чем связка адвайзори от ZDI с твоей фамилией.
Главное — не зацикливаться на однообразных задачах, а развиваться. Желаю тебе
удачи!
Компаний, которые хотят купить у тебя уязвимости, достаточно много; помимо
ZDI в список входят такие конторы, как iDefense —
labs.idefense.com,
SecuriTeam — securiteam.com
или NetraGard — netragard.com.
Кроме прочего, уязвимости в браузерах FireFox или Google Chrome можно продать
самим вендорам. Правда, думается мне, что за code execution больше можно
выручить у тех же ZDI.