company_banner

Как багхантеры перехватывали письма в пневмопочте на ZeroNights



    Про Bug Bounty уже многое сказано и необходимость подобных программ для компаний кажется очевидной. За время существования нашей собственной программы Почта Mail.ru выплатила более $250 000, средняя выплата составляет $379, чуть подробнее об этом мы уже писали. А сегодня, на примере недавно прошедшей конференции по информационной безопасности ZeroNights, мы расскажем о том, каким образом можно привлекать хакеров к участию в поиске багов и уязвимостей через профильные мероприятия.

    В этом году конференция ZeroNights прошла в Клубе А2 Green Concert в Санкт-Петербурге. Несмотря на переезд из Москвы, конференция собрала более 1000 участников за 2 дня. В рамках конференции звучали доклады многих крутых специалистов. Если нужен хардкор — посмотрите «NUClear explotion», «From Graphic Mode To God Mode, Discovery Vulnerabilities of GPU Virtualization», «Researching Marvell Avastar Wi-Fi: from zero knowledge to over-the-air zero-touch RCE». В этом году также было много интересных докладов про Web, можно посмотреть слайды и WebVillage и не только. Лично мне был важен доклад от Ильи Нестерова и Сергея Шекян. Отличить бота от реального пользователя становится всё сложнее и сложнее. Подробнее про доклады тут.

    Наши задачи


    Мы ставили перед собой следующие задачи:

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

    Идея


    Самый сложный челлендж в подобных проектах: разработать интересные задания, которые, во-первых, привлекут участников, а во-вторых, позволят нам проверить их реальные навыки.

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

    Стенд выглядел так:



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

    Схема действий:

    • Подключаемся к Wi-Fi-сети задания.
    • Находим в сети Raspberry Pi, которая подключена к Arduino, управляющей заслонками.
    • На RPi крутится веб-сервер. Нужно выполнить два задания — проэксплуатировать уязвимости и они в конце давали кнопки для активировации заслонок, которые позволяли и перенаправить «почту»



    Шарик символизирует пневмописьмо:



    Идеи для заданий мы взяли из репортов наших исследователей.

    Задания


    В первом задании участники должны были найти хост RPi3 и обнаружить там типовую уязвимость конфигурации для веб-сервера Apache: страницу /server-status, на которой отображаются все приходящие HTTP-запросы. В числе прочих на эту страницу приходил запрос с секретным значением в GET параметрах, который позволял пройти первый уровень. За это задание посетители получали промокод на $100 для участия в нашей программе Bug Bounty.

    Решение
    Уязвимость конфигурации Apache ищется обычными инструментами типа dirbuster, строка server-status есть во всех актуальных словарях. Кроме того, мы оставили несколько подсказок, чтобы задание можно было решить без каких бы то ни было скриптов и программ, даже с обычного телефона.

    Для прохождения второго задания необходимо было внимательнее изучить содержимое уже известной страницы мониторинга. В коде клиентского приложения необходимо было найти скрытый метод, который не вызывался из интерфейса, но содержал в себе уязвимость — «слепую» NoSQL-инъекцию в Mongodb.

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

    Придумать, как можно побитово получать интересующую информацию из БД (например, если вы хотите узнать значение поля secret='some_secret', можно использовать регулярные выражения. Сначала узнаём первый символ secret ~ '^a', secret ~ '^b'… secret ~ '^s'… После этого второй secret ~ '^sa', secret ~'^sb'… Аналогично получаем весь секретный токен).

    Это не единственная и не самая эффективная реализация, варианты получше можно посмотреть в коде sqlmap.

    Основную сложность представлял нетипичный стек технологий: MeteorJS, который активно использует Websockets, а также MongoDB и Pubsub вместо привычных для HTTP запросов и ответов не позволяли использовать существующий инструментарий и требовали от участников умения самостоятельно автоматизировать атаки. Многие участники искали уязвимости в функциональности самой платформы MeteorJS, ошибочно приняв его за код задания. Также для некоторых участников возникали трудности при автоматизации запросов через Websockets.



    В качестве приза за этот конкурс участники получали толстовку «Mail.ru Bug Hunter».

    Результаты


    Всего за два дня конференции в нашем конкурсе поучаствовало более 200 человек. С первым заданием справились 100 участников, второе задание выполнили 45 человек.

    Разумеется, успешно завершивших задачу мы прособеседовали прямо на месте. Розданные карточки на $100 имеют отложенный эффект, но уже несколько из них были активированы и мы получили хорошие баги на H1. Они стимулируют хакеров искать новые баги, помогать нам совершенствовать наши системы и улучшать безопасность. Маленькая карточка — большие результаты. А сто баксов — это сто баксов.



    • +29
    • 6,5k
    • 1
    Mail.ru Group
    1816,00
    Строим Интернет
    Поделиться публикацией

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

      0
      Я думаю это должны были быть «100 баг$ов»)

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

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