# Проект Кибер Полигон #### Часть I # ## Что такое Bug Bounty Баг-баунти, от слов "баг" и "вознаграждение" Bug Bounty - это программа, в которой компания привлекает сторонних белых хакеров или “рисерчеров” для тестирования своего программного обеспечения на уязвимости за вознаграждение и признание. Эти программы позволяют разработчикам обнаружить и устранить ошибки, прежде чем широкая общественность узнает о них, предотвращая злоупотребления. Система вознаграждения в Баг-баунти программах основана на оплате за результат, т.е. за найденный баг рисерчер получает баунти. Компания оглашает Скоуп - объем работ, уровень вознаграждения за найденные уязвимости и хакеры могут зарегистрироваться и принимать участие в Баг-баунти программе. *Примечателен тот факт, что компании США регулярно отчитываются о работах по кибербезопасности.* # ## Известные Bug Bounty платформы: * Hackerone * Bugcrowd * Synack * HackenProof * Intigriti * YesWeHack * Bugbounty Japan * Bountyfactory * Antihack Там же примеры дизайна, стиля сообщений, примеры форумов и технических составляющих. # ## Основная суть проекта Реализация платформы, объединяющей хакеров и бизнес предприятия в одном месте. Хакеры работают по программе баг-баунти: за каждый уровень найденной уязвимостей в IT структуре компании хакер получает награду. Сумма награды варьируется от уровня уязвимости и ежегодного оборота компании. Бизнесу платформа помогает проводить профилактику защищенности своих сетей. Особенно актуально в момент распространения Ransomwares. Тестирование на проникновение (жарг. Пентест) проводится в виртуальной копии сети компании, где нет конфиденциальной информации. # ## Составляющие платформы • Сама система, платформа, сайт • Мобильные приложения для платформ iOS, Android, Windows Phone • Сообщество хакеров • Специалисты платформы по кибербезопасности (триажеры), которые проверяют баги, присланные рисерчерами # ## Открытые публикации платформы * Текущие Баг-баунти программы * Анонсы, предстоящие программы * Список компаний * Страницы компаний * Рейтинг хакеров * Список максимальных полученных Баунти * Истории примечательных пентестов и найденных уязвимостей * Акции * Новости * Форум комьюнити хакеров в мессенджере * Правила участия * Система вознаграждения * Требования к отчету # # Процесс Баг-баунти программы # ## Обращение компаний К платформе обращается клиент, который хочет протестировать свои продукты. * Действия со стороны бизнеса: * Регистрация * Связь с нами (платформой) по электронной почте * Верификация компании. В случае успешной верификации мы предоставляем логин и пароль для админ панели компаний (не путать с основной админкой) * Компания предоставляет виртуальную копию необходимой инфраструктуры / сети, где нет конфиденциальной информации. * Внесение депозита. В любом случае депозит не возвращается обратно. * Платформа вместе с клиентом составляют “скоуп” работ. Он описывает: * какие уязвимости ищет клиент, * на каких ресурсах * политика вознаграждения * что необходимо указать хакерам в отчете об уязвимостях * градация узявимостей и наград: * если входная точка - компьютер, по нарастающей: 1. Доступ к заведомо недоступной информации от непривелигированного юзера. То есть хакер имеет r/w право на папки с конфиденциальными документами 2. Поднятия System прав на компьютере # ## Запуск программы компании * Компания заносится в список на странице сайта * Создаётся страница компании * Публикуется составленный скоуп работ * Запускаются маркетинговые активности, привлекая сообщество белых хакеров принять участие. # ## Регистрация хакера * Регистрация платная - цену обговорим позже, для фильтрации людей. * Никаких личных данных. # ## Баг-баунти программа в действии * Один из ключей (любой) отдается хакерам, другой отдается предпринимателю, чтобы он, в свою очередь, поместил этот ключ в инфраструктуре для пентеста. * Для начала пентеста хакер может воспользоваться двумя видами входа в IT структуру предприятия: * VPN с доступом ко всем устройствам. Пример - эмуляция взлома шлюза * Доступ к рядовой машине пользователя с минимальными правами * Ресерчеры находят уязвимости в тестируемом продукте и присылают отчеты на сайт баг-баунти платформы. # ## Примеры найденных уязвимостей ##### * Получение доступа выше начального, к примеру - доступ к другой группе компьютеров или юзера с привилегиями выше начального. * Доступ к заведомо недоступной информации от непривилегированного юзера. То есть хакер имеет r/w право на папки с конфиденциальными документами. * "Поднятие" system-прав на сервере # ## Отчеты об уязвимостях Хакеру необходимо сдать флаг в систему проверки, которая доступна на странице компании на платформе. Написать отчет по уязвимости компании: 1. детальное описание уязвимости 1. уязвимые узлы 1. влияние на безопасность 1. сценарий атаки 1. необходимые шаги для устранения этих уязвимостей. 1. общие рекомендации по безопасности # ## Проверка отчетов Команда триажеров верифицирует каждую присланную уязвимость. Проверяет баги, присланные рисерчерами и отслеживает * спам отчеты, * некорректные отчеты, * неправильно оформленные отчеты, * является ли уязвимость уникальной (или была уже найдена другим рисерчером) * находится ли в пределах скоупа После того как баг был верифицирован командой триажеров, формируется отчет, который направляется компании, которая должна также удтвердить тикет. # ## Действия со стороны бизнеса, после получения тикета * Верификация тикетов о уязвимостях # ## Вознаграждение * Белый хакер получает баунти - вознаграждение * Ему начисляют репутацию в лидборде для рейтингования хакеров. # ## Арбитраж В случае, когда клиент - компания отказывается утвердить тикет (принять работу, верифицировать баг) и хакер не согласен с отказом компании, может возникнуть спор, арбитраж. Арбитраж происходит на основе мессенджера. Выполняются следующие действия: 1. Хакер создает беседу с админами и представителем компании в мессенджере 1. Обе стороны пишут свои аргументы 1. Админы выносят вердикт и в случае победы хакера сами верифицируют тикет # **** # # Проект Кибер Полигон #### Часть II, основная. Платформа и реализация. # # Платформа Сервер не содержит и не хранит личных данных и IP. В качестве ID юзера использовать адрес его BTC кошелька. На сервере хранить md5(md5(btc+пароль)) # ## 1.0 Страницы # ### 1.01 Главная страница Содержит: * Два основных поля: список компаний для пентеста и мессенджер. * Логотип * Анимация фона * Небольшая анимация на переднем плане * Ссылки на открытые для доступа страницы всё уточнить # ### 1.02 Регистрация для хакера * btc address * e-mail (optional. Почта для различных уведомлений). * password (required: letters & digits & size>=N & upper case & lower case & special symbols). Пароль - длина от 16 до 50 символов. # ### 1.03 Регистрация для компаний * логин * e-mail * пароль (required: letters & digits & size>=N & upper case & lower case & special symbols). Пароль - длина от 16 до 50 символов. уточнить и дополнить # ### 1.041 Авторизация хакера * авторизация по логину/почте паролю *Примечание:* отсутствует ведение логов по хакеру. # ### 1.042 Личный кабинет хакера * мессенджер (обращения к администрации, арбитраж, группы, личные сообщения, каналы, беседы и пр., смотри ниже) * подробную статистику активности хакера, которая ему будет полезна (представить на рассмотрение). # ### 1.043 Авторизация компаний * авторизация по логину/почте паролю # ### 1.044 Личный кабинет компаний * При авторизации представитель компании попадает на основную страницу, где доступны три поля: * мессенджер (обращения к администрации, арбитраж и пр.) * тикеты хакеров * статистика об атаках и нагрузке * Предоставление виртуальной копии инфраструктуры * Пополнение депозита * Верификация тикетов об уязвимостях # ### 1.05 Пополнение депозита * Bitcoin, Tether и другие топ-криптовалюты * Payeer * PayPal * Advanced Cash * Google Pay * Apple Pay * ЮMoney * Qiwi * ePayments * WebMoney * Perfect Money # ### 1.06 Список компаний Список компаний для пентеста. При клике на каждую компанию открывается отдельная страница, где выводится подробная информация. # ### 1.07 Страница компании участницы На странице выводится: * оборот компании, * количество устройств, * загруженность vpn шлюза, * маска подсети, * список подсетей, * количество хакеров, которые атакуют компанию. * реализовать два вида входных точек в компанию: * VPN через шлюз. В случае VPN коннекта пользователь скачивает OVPN конфиг прямо с сайта (как в hackthebox.eu) * через рядовой компьютер, вероятность компрометации которого путем фишинга максимальная. В этом случае необходимо продумать, как хакеры могут пентестить сеть, не мешая друг другу. # ### 1.08 Мессенджер Реализовать Discord - подобный мессенджер со всем присущим функционалом: • деление на группы (к примеру, для локализации, где каждый хакер может общаться с хакерами со своей же страны) • личные сообщения • каналы • создание и редактирование бесед Мессенджер должен быть максимально удобным и быстрым: • средняя задержка сообщения меньше 2х секунд • в среднем страница открывается за 5 секунд приложить примеры изображений и сделать отметки на них # ### 1.09 Сдача флагов Хакеру необходимо сдать флаг в систему проверки, которая доступна на странице компании на платформе. Определить форму и страницу сдачи флагов. # ### 1.010 Арбитраж В случае несогласования действий компании и хакера открывается арбитраж. Определить форму и страницу арбитража. # ### 1.011 О компании * Вступительная статья * Новости, содержит 3 последние новости (анонсы) в формате: дата, заголовок, краткое содержание * Контактная информация - телефон и e-mail компании # ### 1.012 Страница административной части * Мониторинг загруженности системы. * Ленту входящих запросов к серверу. * Скорость работы системы. * Оперативное оповещение о любых феноменальных отклонениях работы сервера. # ### 1.013 Страница триажеров * Отображает список присланных багов * Оповещает о вхождении нового отчета звуковым сигналом. # ## 1.1 Требования к разделению доступа Все открытые разделы сайта должны быть доступны на чтение без аутентификации пользователя. При попытке входа в закрытый раздел у пользователя не прошедшего аутентификацию, должен быть запрошен логин и пароль. После прохождения аутентификации система должна проверять полномочия пользователя на доступ к запрошенному разделу. Если доступ запрещен, пользователю должно быть выведено сообщение о невозможности доступа в закрытый раздел. ## 1.2 Требования к объему страницы Объем одной стандартной загружаемой страницы сайта в среднем не должен превышать 50 kb. # ## 1.3 Требования к скорости загрузки страниц Любая страница Платформы и Мессенджера должна грузиться не более 3 секунд. # ## 1.4 Требования к лингвистическому обеспечению * Основная локализация англоязычная. * Основной - английский язык. * Далее - реализация поддержки топ 10 языков. * Предусмотреть возможность переключения между русским и английским языками на любой из страниц сайта. # ## 1.5 Требования к технической эстетике Сайт должен быть оптимизирован для просмотра при разрешении 1024х768, 1280х1024, 1920х1080, 2560x1440 без горизонтальной полосы прокрутки и без пустых (белых) полей для основных типов разрешения. # ## 1.6 Требования к хранению данных Использовать шифрование базы данных (средствами sql) # ## 1.7 Требования к персоналу Для эксплуатации системы от администратора не должно требоваться специальных технических навыков, знания технологий или программных продуктов, за исключением общих навыков работы с персональным компьютером и стандартным веб-браузером. # ## 1.8 Порядок предоставления дистрибутива По окончании разработки Исполнитель должен предоставить Заказчику дистрибутив системы в составе: • архив с исходными кодами всех программных модулей и разделов сайта; • дамп проектной базы данных с актуальной информацией. Дистрибутив предоставляется ссылкой в облаке, в zip архиве. # ## 1.9 Порядок переноса сайта на технические средства заказчика После завершения сдачи-приемки сайта, в рамках гарантийной поддержки Исполнителем производится однократный перенос разработанного программного обеспечения на аппаратные средства Заказчика. Соответствие программно-аппаратной платформы требованиям настоящего документа обеспечивает Заказчик. # ## 1.10 Требования к техническому обеспечению Для функционирования сайта необходимо следующее техническое обеспечение со следующими минимальными характеристиками ... # ## 1.11 Требования к безопасности системы *Примечание:* • Самописные движки и элементы трудны в обслуживании, изменении, но обладают высокой гибкостью. • Готовые элементы платформы, фреймворки и CMS удобны и дёшевы в обслуживании, постоянно обновляются, содержат гораздо меньше ошибок, легче и быстрее для старта проекта. # # 2.0 Требования к представлению сайта ## 2.01 Макеты подготовить содержимое всех страниц, сопровождая изображениями макетов с размещением элементов страниц и примечаниями. # ## 2.02 Требования к дизайну *Примечание:* * Основная цветовая палитра - темная, как в hackthebox.eu. Ориентироваться на дизайн подобных платформ (предоставить ссылки, скриншоты, подборки для презентаций). * Безопасность компании - важнейший аспект, чему и должен так же соответствовать Дизайн. * Стиль максимально “мощный” и универсальный. *В то же время:* * На примере hackthebox.eu, дизайн создает атмосферу престижа, значимости, увлеченности, принадлежности к особой группе / ассоциации. * Учесть в дизайне одну из задач - вовлечение белых хакеров и создание большого сообщества. Возраст хакеров - от 18 лет. * Примеры дизайна, стиля сообщений, примеры форумов и технических составляющих: * Hackerone * Bugcrowd * Synack * HackenProof * Intigriti * YesWeHack * Bugbounty Japan * Bountyfactory * Antihack # ### Разработать: * Дизайн и анимацию первой страницы * Дизайн страниц в основной платформе * Реализовать Discord - подобный мессенджер, размеры шрифта и элементов как у Discord * Адаптивность под настольные экраны, планшеты и смартфоны * Дизайн рекламной компании * 404-й страницы * Страница попытки доступа в закрытый раздел. # ## 2.03 Порядок утверждения дизайна Предварительные * Представить не менее десяти предварительных вариантов дизайна Финальные * Представить в виде презентаций с комментариями, демонстрирующих общее визуальное (композиционное, цветовое, шрифтовое, навигационное) решение. * Представить адаптивные версии под настольные экраны, планшеты и смартфоны. Если представленная концепция не удовлетворяет требованиям Заказчика, последний мотивирует отказ от принятия концепции с указанием деталей, которые послужили препятствием для принятия концепции и более четкой формулировкой требований. В этом случае Исполнитель разрабатывает второй вариант дизайн-концепции. Обязательства по разработке второго варианта дизайн-концепции Исполнитель принимает после согласования и подписания дополнительного соглашения о продлении этапа разработки дизайн-концепции на срок не менее пяти рабочих дней. Дополнительные (третий и последующие) варианты разрабатываются Исполнителем за отдельную плату на основании дополнительных соглашений. *пункт утвердить* # ## 2.04 Порядок сдачи работ по дизайну Дизайн-концепция представляется: 1. на одной из онлайн - платформ совместной разработки 1. в виде файла (нескольких файлов) в растровом формате 1. в распечатке по согласованию сторон # # 3.0 Стиль сообщений, слоганы *Примечание:* На примере hackthebox.eu виден эффект стиля доносимой информации, слоганов. Стиль в духе системы, выразительный, завлекающий, интригующий и вызывает интерес уже при открытии первой страницы. Составить текст, содержащий специальную творческую составляющую: * Первой страницы * 404-й страницы * Страницы запрета доступа * Рекламной компании * Возможно что-либо в остальном в основной платформе Получить отзыв, проконсультироваться: • с хакерами • с представителями компаний # # 4.0 Мобильные приложения 1. Разработать все необходимые документы для начала создания приложений 1. Разработать мобильные приложения для платформ iOS, Android, Windows Phone # # 5.0 Рекламная компания и маркетинг 1. журнал Хакер 2. рассылка по предоставленным адресам 3. форумы: exploit.im, xss.is 4. реклама в тематических каналах телеграма # # 6.0 Бюджет После выбора платформы, фреймворка или CMS предоставить необходимую финансовую информацию # # 7.0 Сроки После выбора платформы, фреймворка или CMS определиться со сроками и предоставить в письменном виде в договоре # **** # # Проект Кибер Полигон #### Часть III. TO-DO 1. разобраться с ip масками 2. придумать уровни для хакеров #### Описание на 21.12.2020 ## Необходимые поля: ### ХАКЕРЫ Рега: - btc address - e-mail (optional) - password (required: letters & digits & size>=N & upper case & lower case & special symbols) Авторизация: - btc address - password (все что выше просто хранится в бд на бэке) ### ПРЕДПРИНИМАТЕЛИ нужно вписать ## "термины" CALL - вызов метода -> - return ## Логика: ### ХАКЕРЫ: #### Рега: 1. пользователь вводит все данные. back отправляет запрос к btc в запрос кладет адрес btc коешлька 2. **back CALL btc.GetBalance(btc_address) -> int (balance in satoshi)** 3. back проверяет что баланс ненулевой и разрешает продолжить, иначе просит повторить попытку #### Авторизация: 1. пользователь просто вводит данные и бек его "впускает" на сайт ### ПРЕДПРИНИМАТЕЛИ: #### Рега: 1. рега с верификацией компании и различных данных (про блокчейн нет пока ничего) #### Авторизация: 2. просто авторизация по логину/почте паролю #### Создание "тикета": 1. **back CALL btc.GenerateAccount() -> private_key_1, private_key_2, multi_sig_address, public_key_admin** - multi_sig_address - адрес, куда необходимо внести депозит, public_key_admin - публичный ключ нашего аккаунта, чтобы пользователи смогли создать копию multi Signature кошелька 2. после того как депозит внесен (сделать отдельную кнопку, которая позволит отметить пользователю что он внес депозит) back убежадется в том, что депозит внесен: 3. **back CALL btc.GetBalance(multi_sig_address) -> int (balance in satoshi)** 4. после этого дергает метод в grpc для того, чтобы взять 20% как комиссию 5. **back CALL btc.TakePercents(private_key_1, private_key_2) -> str (response)** **Success** - успешно забрали 20% **Zero balance** - на счет не перевели ничего **Not enough funds** - на счет перевели слишком мало, не хватает на совершение одной транзакции если все ок то: 1) один из ключей (любой) отдается хакерам, другой отдается предпринимателю, чтобы он в свою очередь поместил этот ключ в инфраструктуре для пентеста.