Вы не можете расшифровать сообщения, если не управляете сервером (приватный ключ для пакетов аутентификации RSA, серверное приложение или память программ) или клиентом (приложение или память) (ну, или оба согласовывают слабые шифры, но это уже другая тема)
Самый простой способ, но наиболее инвазивный и легкий для обнаружения как для сервера, так и для клиента: ssl / tls посредник с поддельными сертификатами. Поскольку это меняет сертификат сервера, клиентское приложение видит, что клиентское приложение может просто отклонить соединение (закрепление сертификата, жесткие контакты). Если это не так, хорошо для вас, вы управляете сервером, у вас есть доступ к согласованным ключам.
Почему? и клиент, и сервер согласовывают общий главный секрет, из которого они получают набор ключей сеанса клиента и сервера (используя tls prf, указанный в соответствующем RFC, например, rfc2246 - tls1.0).
Тем не менее, если вы не хотите или не можете связываться с сервером и у вас есть доступ к клиентскому процессу, вы можете каким-то образом найти способ извлечь мастер секрет из памяти и повторно вычислите ключи сеанса клиент / сервер, как указано в RFC. Извлечение может быть выполнено путем отладки приложения, поиска артефактов памяти или исправления его с последующим расшифровкой сообщений протокола. Обратите внимание, что главный секрет время от времени создается повторно, поэтому вам также придется отслеживать приветствия клиента (случайные клиентские), которые приводят к согласованию основного секрета, или точное время, чтобы wirehark мог сопоставить ключи для повторных согласований. Ключи действительны только для этого клиентского сеанса, и вы можете расшифровать шифры, не ограниченные аутентификацией RSA, поскольку главный секрет является окончательным секретом, который обе стороны согласовывают после завершения согласования ключа tls.
Когда у вас есть главный секрет и он сопоставлен с hellos клиента, вы можете просто передать его в wirehark в формат кейлога nss.
Вот пример того, как найти master_key в памяти: pymemscrape - это PoC, демонстрирующий, как найти master_key из образа памяти процесса.
person
tintin
schedule
23.10.2015