Русский / Russian English / Английский

Сейчас на форуме: zds, _MBK_, asamoile, Lohmaty (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› Подмена пакетов при обмене с сервером
Посл.ответ Сообщение

Ранг: 9.1 (гость)
Статус: Участник

Создано: 02 июля 2020 17:06 New!
Цитата · Личное сообщение · #1

Добрый день.

Есть некоторое приложение, которое использует TLS и внутри собственный протокол обмена данных с сервером. Решаемая задача в том, чтобы считывать весь трафик/отправлять нужные пакеты.
Протокол разобрали на 70-80%. Приложение привязывается к железу, использует паспортные данные, карты пользователя и т.д. Т.е. любой пользователь, по-идее, может иметь только один аккаунт, т.к. там это всё проверяется. В приложении достаточно много различных вариантов обнаружения отладчиков, виртуальных машин, "запрещённого софта", контрольные суммы и т.п. Софт очень часто обновляется и все эти проверки сложно каждый раз отлавливать. Если на "той" стороне что-то не понравится, то этот пользователь банится "навсегда", т.к. использовались личные данные/карты при регистрации.

Вопрос в том, в какой момент и как лучше всего подменять/читать данные? Варианты и pros/cons следующие:

1. Просто патч программы на входе/выходе с расшифрованными данными. Минус в том, что если какую-то проверку из софта не убрали, то если "вдруг" - пользователь больше не сможет им воспользоваться.
2. Поиск SSL структуры по паттерну и перехват на уровне системы. Плюс в том, что мы только читаем память приложения, но минус - в системе всё равно "висим".
3. Завернуть трафик на роутере на промежуточную машину, где выполнять расшифровку. С этим, к сожалению, плохо знаком. Я так понимаю мы можем подменить сертификат тут на свой (может неверно выразился) и завставить думать, что мы и есть целевая машина? Произойдёт обмен ключами, а с этой машины уже соединение с реальным сервером установить. Возможно ли это?

Может есть другие варианты?




Ранг: 72.0 (постоянный)
Статус: Участник

Создано: 02 июля 2020 17:41 New!
Цитата · Личное сообщение · #2

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

| Сообщение посчитали полезным: Illuzion


Ранг: 9.1 (гость)
Статус: Участник

Создано: 02 июля 2020 19:22 · Поправил: Illuzion New!
Цитата · Личное сообщение · #3

morgot пишет:
Наверное, лучше проксировать программу и все уже подменять на прокси-сервере. Так работают банк-боты, правда, там протокол известен.


Мне этот момент как раз не очень понятен - как проксировать систему с открытым ключом, читая данные при этом. Вопрос тут в том также, насколько просто/сложно подмена сертификата обнаруживается на клиенте? Например, Хром, если не ошибаюсь, сразу сообщение выдаёт если что-то не так с сертификатом. Я так понимаю, мы его в доверенные должны добавить?




Ранг: 77.5 (постоянный)
Статус: Участник

Создано: 02 июля 2020 19:53 New!
Цитата · Личное сообщение · #4

Illuzion
Чем трафик просматриваете?



Ранг: 9.1 (гость)
Статус: Участник

Создано: 02 июля 2020 21:21 · Поправил: Illuzion New!
Цитата · Личное сообщение · #5

sefkrd пишет:
Чем трафик просматриваете?


При дебаге Wireshark, там CRAND+MS, MS из SSL struct, последнюю по сигнатуре версия TLS + проверяю корректность ссылок внутри структуры и длина ключа. CRAND, соответвенно, при обмене ключей. Потом распаковка, отдельно уже. Где-то проще было просто пропатчить, чтобы данные получить, а контрольные суммы отправляемые, заменить оригиналом. Но там очень часто обновления, не уверен, что мы все проверки нашли, поэтому решили на протоколе остановиться.




Ранг: 77.5 (постоянный)
Статус: Участник

Создано: 03 июля 2020 01:11 New!
Цитата · Личное сообщение · #6

Illuzion пишет:
Может есть другие варианты?

Они есть, но после вопроса "зачем" - их уже нет..


 eXeL@B —› Основной форум —› Подмена пакетов при обмене с сервером

Видеокурс ВЗЛОМ