• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Исследование gmail

Ph1exon

RAM
Забанен
Регистрация
28.10.2010
Сообщения
102
Реакции
26
Пожалуйста, обратите внимание, что пользователь заблокирован
У меня есть разработка на php и node js для исследования gmail, делалась для одной из нашумевшей организаций, которая потом развалилась из-за токсичности.

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

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

Рекомендуется для людей не стеснённых в средствах, приблизительный расчёт ~ 1 год.

Полный отчёт дам в личку.

30.10.2021
Служебная записка

Задание
Требуется создать систему регистрации почтовых аккаунтов на серверах Gmail, AOL, Yahoo, GMH с возможностью рассылки почтовых сообщений с эмуляцией действий человека.

Выполнение работ
Дан сервер *.
В директории /home/dad/puppeteer создана система для общего управления регистрацией и манипуляцией почтовых аккаунтов на основе puppeteer.

В файле gmail.js (запускается в консоли так: node gmail.js) создан скрипт автоматической регистрации почтового аккаунта на сервере Gmail, основанный на телефонах, полученных из API сайта *. Этот скрипт учитывает состояние кук, создаёт временные задержки, имитируя действия человека.

Также применяются все виды ввода данных, включая движения мышью и нажатия на клавиши, что иллюстрируется на приведённых скриншотах, созданных puppeteer’ом.
1685867244820.png

Рис.1 Вставлен номер телефона
1685867306785.png

Рис.2 Вставлен месяц рождения

1685867341267.png

Рис.3 Вставлен день рождения

1685867371337.png

Рис.4 Вставлен год рождения
1685867397959.png

Рис.5 Вставлен пол
1685867426467.png

Рис.6 После нажатия кнопки Next

1685867452106.png

Рис.7 После нажатия кнопки Yes, I’m in


1685867480376.png

Рис.8 Финал, аккаунт создан (личные данные генерируются API сайта *)

Аккаунт создаётся, но при попытке войти в него выдаётся сообщение, что аккаунт создан программой, "Вы можете попытаться его восстановить, подав соответствующую заявку".
1685867506455.png

Рис.9 Аккаунт заблокирован

Один аккаунт я так почти восстановил, но попросили ввести номер телефона, а он не сохраняется.

В статье Detecting Headless Chrome разбирается случай, когда, якобы, можно сделать “безголовый” Хром невидимым. Я проверил, это оказалось не так.

1685867537414.png

Рис.10 Отдача скрипта (из статьи) до проверки

1685867556663.png

Рис.11 Отдача скрипта (из статьи) после проверки

Я списался с автором статьи, мы поработали вместе немного над этим вопросом, потом он, видимо, испугался и перестал отвечать.

Для решения этой задачи - устранения проблемы с обнаружением puppeteer'а, в директории /var/www/clients/client1/web2/web была создана с помощью фреймворка Yii2 система анализа трафика, который был записан между сервером и внешними устройствами в процессе создания почтового аккаунта. Также был записан поток трафика в течение 8 часов без никаких взаимодействий с сервером Gmail. Это было сделано для того, чтобы сравнить внешние серверы, которые появляются при взаимодействии с Gmail. Для этого была создана система по адресу *, где представлены логи трафика, упомянутые выше.


Под названием пункта меню Simple IP compare представлена таблица из 192 тысяч пакетов за 8 часов.

1685867594713.png

Рис.12



Под названием пункта меню Gmail IPs представлена таблица из 9725 пакетов трафика, записанных при взаимодействии с серверами Gmail.


1685867621569.png

Рис.13


В таблице IP difference, состоящая из 9264 записей, представлен трафик как разница между первыми двумя таблицами.


1685867683234.png

Рис.14


В таблице Grouped difference представлены 54 записи, представляющие собой домены и адреса внешних серверов, с которыми взаимодействует наш сервер во время работы с Gmail.


1685867704685.png

Рис.15


В пункте меню Detailed difference представлены 9724 пакета трафика во время работы с серверами Gmail, преобразованные из формата .json и записанные в 352 поля. Это очень подробные данные, автоматизировано разнесённые по разным полям для скрупулёзного анализа.

1685867724859.png

Рис.16

Описание моделей и методов консольных классов

Модели
Созданы по классическому принципу “толстая модель, тонкий контроллер”.
Модель Simple
Метод getImport()
Производит с помощью метода getFilesNames() импортирование файлов csv, находящихся в базовой директории. Запускается из консоли в базовой директории консольных моделей /var/www/clients/client1/web2/web командой ./yii simple.

Модель Gmail
Делает то же самое с трафиком взаимодействия с сервером Gmail, записанным консольной утилитой tshark и преобразованным в формат csv, записан в базовую директорию. Запускается из консоли в базовой директории консольных моделей /var/www/clients/client1/web2/web командой ./yii gmail.

Модель Difference
Метод getDifference()
Создан для вычисления разницы между восьмичасовым трафиком и трафиком взаимодействия с сервером Gmail. Запускается из консоли в базовой директории консольных моделей /var/www/clients/client1/web2/web командой ./yii difference.
Метод getFilesNames()
Предназначен для создания списка файлов, находящихся в базовой территории, имеющих расширение csv.
Метод getJson()
Предназначен для сбора наименований, размеров и значений всех полей пакетов трафика. Запускается из консоли в базовой директории консольных моделей /var/www/clients/client1/web2/web командой ./yii difference/json.
Метод allFields()
Принимает как параметры: объект, представляющий из себя отдельный пакет трафика и параметр для обозначения факта события - брать ли и возвращать ли значения данных этого пакета или нет.
Метод allFields() возвращает все поля объектов, рекурсивно вложенных друг в друга в отдельном пакете трафика.
Метод getStructure()
Предназначен для создания массива всех полей всех пакетов трафика, их типа, размера и наименования. Запускается из консоли в базовой директории консольных моделей /var/www/clients/client1/web2/web командой ./yii difference/structure.
Метод getRequest()
На основе метода getStructure() создаёт текстовую строку, представляющую из себя запрос к базе данных для создания таблицы БД detailed. Ограничительными параметрами для этой таблицы являются - размер поля пакета трафика больше 0, замена всех точек и дефисов на знак подчёркивания в наименовании поля таблицы базы данных, замена всех полей VARCHAR с размером больше 1kB на тип поля LONGTEXT для предотвращения переполнения длины строки. На выходе метода getRequest() получаем строку, записываемую в файл request.sql, в базовую директорию модели Difference. Таким образом, были преодолены ограничения базы данных MySQL. Запускается метод из консоли в базовой директории консольных моделей /var/www/clients/client1/web2/web командой ./yii difference/request.

Модель Detailed
Метод getField()
Предназначен для заполнения таблицы БД detailed данными подробного трафика, записанного в файл gmail.packets.json с преобразованием наименования полей пакета трафика в наименование полей таблицы БД путём замены знаков "дефис" и "точка" на знак подчёркивания “_”. Запускается из консоли в базовой директории консольных моделей /var/www/clients/client1/web2/web командой ./yii detailed.
Результат представлен на скриншоте phpmyadmin Рис.17.

1685867768897.png


Заключение
Таким образом, преодолены ограничения базы данных, появилась возможность производить множественные серии экспериментов для выяснения точного содержимого пакетов и их дешифрации, отправляемых при регистрации не только аккаунта Gmail, а также и других почтовых сервисов.
Ввиду экстремальной ценности развития этого вектора атаки на почтовые серверы, ибо это практически “золотое дно” для спама, прошу рассмотреть возможность присвоить этому направлению работ статус научно-исследовательской лаборатории с расширением количества штатных единиц до трёх работников и увеличением ежемесячного бюджета до пяти тысяч долларов (я, как ответственный за эту тему $3000, дешифровщик пакетов $1000 и специалист по искусственному интеллекту $1000). Повторюсь - при наличии возможности и желания. Без такого наличия я по-прежнему буду с удовольствием рыть эту жутко интересную тему в одиночестве, но хотелось бы ускорить получение результата.
 
Последнее редактирование:
Подход хороший, но при таком исследовании вы всеравно не сможете понять алгоритмы фрод скора которые находятся за первым гейтом бекенда.

Browser > Frontend client > MITM > Backend > Analytics > FraudScore

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

В сухом остатке, даже сверяя содержания пакетов, не просто src/dst, вы придете к тому, что надо подделать фингерпринты, чем и занимаются расплодившиеся антидетекты. Если охота использовать именно безголовый и быть ближе к коду, по попробуйте сделать то же самое с помощью сервисов, которые "нагуливают своих безголовых ботов", как я это пониманию. В свое время я плюнул пробивать Cloudflare и просто прибег к помощи этих сервисов:


Я думаю что можно сыграть на временном лаге аналитики, ведь биг дата требует исчилительного времени и попробовать залететь в аккаунт аккурат после его регистрации. Это подтвердит теорию бекендов. Если же временной лаг не будет отловлен, то либо на это выделенны приоритетные серверы для быстрой отбработки либо, ваш подход даст плоды и собака зарыта в одном из "лишних" ендпойнтов из вашей diff таблицы.

Эксперты вроде тех с кем вы общались любят писать новые методы обхода\детекта для headless. Поэтому может быть здравой идеей все же "нафазить" diff на более простых сервисах детекта безголовых. По идеи у них нет биг даты, они могу пользоваться "активным пентестом браузера посетителя":

http://f.vision/

Призываю экспертов в тред kolobok @stoomper
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Подход хороший, но при таком исследовании вы все равно не сможете понять алгоритмы фрод скора которые находятся за первым гейтом бекенда.
ну, попробовать-то нужно
послал в пм источник
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх