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

Как найти сигнатуру ssl_read и ssl_write из нового boringssl

IPirateS6

(L3) cache
Пользователь
Регистрация
02.06.2020
Сообщения
211
Реакции
107
Приветствую. В процессе написания вебинжектов. Наткнулся на такой проект как NetRipper (https://github.com/NytroRST/NetRipper) и даже адаптировал под нужный мне формат. Да только вот проблема: в 64 битном хроме работает, а на 32 битном работать не хочет. Вопрос: как добыть сигнатуры ssl_read и ssl_write из нового boringssl данного формата?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Если вкратце, то в сорцах хрома есть deps файл, в нем прописана хэш версия boringssl
 
Greetings. In the process of writing webinjects. I came across a project like NetRipper ( https://github.com/NytroRST/NetRipper ) and even adapted it to the format I needed. Yes, but here's the problem: it works in 64-bit chrome, but does not want to work on 32-bit. Question: how to get the ssl_read and ssl_write signatures from the new boringssl of this format?
Вам удалось перепроектировать chrome.exe? Я не могу по нескольким причинам.
Я использую WINDBG, и всякий раз, когда я ставлю точку останова с помощью bp chrome!SSL_read , она не работает.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Я использую WINDBG, и всякий раз, когда я ставлю точку останова с помощью bp chrome!SSL_read , она не работает.
В каком смысле? Bp не срабатывает или windbg не находит SSL_read, во втором случае он и не найдет, потому, что она не экспортируется
 
Пожалуйста, обратите внимание, что пользователь заблокирован
во втором случае он и не найдет, потому, что она не экспортируется
Ерунда, WinDbg использует символьную информацию. Если она есть, то на любую функцию бряка поставится. Пример с неэкспортирумой функцией ниже.

notexported.png
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ерунда, WinDbg использует символьную информацию. Если она есть, то на любую функцию бряка поставится. Пример с неэкспортирумой функцией ниже.

Посмотреть вложение 36834
Я понял, просто об этом надо было сказать сразу.
Во первых - надо проверять соответствует ли вкладка в браузере процессу, который ты отлаживаешь в windbg, ну то есть знаем, что для каждой вкладки хром создаёт для него процесс, именно эти процессы отвечают за передачу пакетов
Во вторых - надо проверять какой протокол используется, сейчас чаще используются http2/http3, чем https, который в данный момент ты хочешь словить. То есть функция SSL_read предназначена только для https.
Если 2 пункта выше - верны и все равно не срабатывает bp, то пиши мне, кажется я знаю в чем проблема
 
Я понял, просто об этом надо было сказать сразу.
Во первых - надо проверять соответствует ли вкладка в браузере процессу, который ты отлаживаешь в windbg, ну то есть знаем, что для каждой вкладки хром создаёт для него процесс, именно эти процессы отвечают за передачу пакетов
Во вторых - надо проверять какой протокол используется, сейчас чаще используются http2/http3, чем https, который в данный момент ты хочешь словить. То есть функция SSL_read предназначена только для https.
Если 2 пункта выше - верны и все равно не срабатывает bp, то пиши мне, кажется я знаю в чем проблема

Отрубить SPDY, HTTP/2 можно через цмд параметры, тогда всегда будет бряк срабатывать
 
В каком смысле? Bp не срабатывает или windbg не находит SSL_read, во втором случае он и не найдет, потому, что она не экспортируется
Это из-за нескольких процессов, я просто запускал хром в одном процессе, и точки останова были в порядке.
Даже если я отлаживаю дочерние процессы, основной процесс загружает только хром (то есть exe), он будет искать символы chrome_exe.pdb, а не dll, поэтому windbg запутывается.
Не знаю, что делать с этого момента, может кто-нибудь дать мне несколько советов?
 
Если вкратце, то в сорцах хрома есть deps файл, в нем прописана хэш версия boringssl
Ерунда. Можно, конечно, цепляться за коды ошибок, которые хром отправляет в свой враппер над дебаг выводом, но лучше сделать вот, что. Можно искать референсы на строки DoPayloadRead и DoPayloadWrite, первая нужна для нахождения ssl_read_*, вторая для ssl_write_*
Берём отладчик, подключаемся к сетевому процессу хрома и видим два обращения к этим строкам:
Screenshot_7.png

В случае с DoPayloadWrite, третий call в списке ведёт на нужную нам функцию:
Screenshot_8.png


Брякаемся на функции и видим результат:
Screenshot_9.png


Метод работает стабильно, не нужно постоянно обновлять сигнатуры и ебать себе голову вопросом "почему всё падает?")
 
Ерунда. Можно, конечно, цепляться за коды ошибок, которые хром отправляет в свой враппер над дебаг выводом, но лучше сделать вот, что. Можно искать референсы на строки DoPayloadRead и DoPayloadWrite, первая нужна для нахождения ssl_read_*, вторая для ssl_write_*
Берём отладчик, подключаемся к сетевому процессу хрома и видим два обращения к этим строкам:
Посмотреть вложение 46188
В случае с DoPayloadWrite, третий call в списке ведёт на нужную нам функцию:
Посмотреть вложение 46189

Брякаемся на функции и видим результат:
Посмотреть вложение 46191

Метод работает стабильно, не нужно постоянно обновлять сигнатуры и ебать себе голову вопросом "почему всё падает?")
Привет. Подскажешь, пожалуйста, как найти ssl_read? По твоему совету искал через DoPayloadRead, но там структура функций совсем не такая чёткая как в старых версиях и много джампов за пределы функции, а среди тех call'ов которые внутри DoPayloadRead нет ни одного который ведёт на SSL_read.
 


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