WhatsApp обнюхивает ssl-трафик с помощью wirehark

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

Итак, как мне узнать, какой сертификат используется и существует ли другой способ расшифровать эти сообщения?

Я не хочу читать чьи-либо чаты, я действительно хочу видеть сообщения протоколов по сети. Чтобы понять, выполните обратный инжиниринг и разработайте простой API-интерфейс JAVA для личных рабочих целей.

Я использую wirehark для чтения ssl-трафика.

снимок экрана с записью чата WhatsApp


person thiagoh    schedule 17.09.2013    source источник
comment
если бы это было возможно, онлайн-банкинга не существовало бы в том виде, в каком мы его знаем.   -  person mvp    schedule 17.09.2013
comment
но сертификат установлен на моем компьютере, и мне нужно видеть только МОЙ трафик, а не чужие   -  person thiagoh    schedule 17.09.2013
comment
Возможно, вы сможете увидеть свой собственный трафик, но только если вы перехватите вызовы локальной библиотеки SSL.   -  person mvp    schedule 17.09.2013


Ответы (5)


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

HTTP-прокси:
http://fiddler2.com/get-fiddler
Это программное обеспечение генерирует очевидный поддельный сертификат, который вы можете принять, если приложение позволяет.

Прикрепление сертификата:
https://security.stackexchange.com/questions/29988/what-is-certificate-pinning

person WMIF    schedule 17.09.2013
comment
Похоже, что для Mac вам нужно использовать Fiddler везде, и у него нет той же функциональности. - person Ben Butterworth; 25.07.2020

Вы не можете расшифровать сообщения, если не управляете сервером (приватный ключ для пакетов аутентификации 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

Используя регистрацию ключей сеанса, вы можете получить доступ к ключам сеансов. После этого wirehark может разрешить пакеты с его помощью.

  1. Включите ведение журнала сеанса на машине.

    Для Windows: «Дополнительные системные настройки» -> «Переменные среды».

    Добавьте новую переменную с именем «SSLKEYLOGFILE» и указанным файлом /path/to/sslkeylog.log.

    Linux, MAC OS:

    $ export SSLKEYLOGFILE = ~ / путь / к / sslkeylog.log

  2. Добавить файл журнала сеанса в Wireshark

    Правка -> Настройки -> Протоколы -> Выбрать SSL

    Просмотрите файл "sslkeylog.log" до имени файла журнала (Pre) -Master-Secret, затем сохраните.

Подробные инструкции см. Здесь: https://jimshaver.net/2015/02/11/decrypting-tls-browser-traffic-with-wireshark-the-easy-way/

person ozust    schedule 17.03.2016
comment
пожалуйста, кратко опишите шаги здесь, так как ссылка может не работать в будущем - person Noam Hacker; 17.03.2016

Это невозможно. Хотя у каждого есть сертификат сервера и открытый ключ, для расшифровки информации вам понадобится закрытый ключ. Закрытый ключ существует только на сервере (WhatsApp).

Единственный способ расшифровать эту информацию - это взломать сервер WhatsApp и украсть его закрытый ключ (пожалуйста, не делайте этого).

person gerrytan    schedule 17.09.2013
comment
после того, как WhatsApp расшифрует сообщения, чтобы показать их пользователям WhatsApp, должен быть способ дешифрования, иначе пользователи не могли прочитать сообщения - person thiagoh; 17.09.2013
comment
@thiagoh См. эта диаграмма о подтверждении SSL. Чтобы вы могли расшифровать информацию обратно пользователю, вам нужно будет украсть симметричный ключ пользователя (что сложно) - person gerrytan; 20.09.2013
comment
шифрование данных я понимаю .. проблема в расшифровке, которой нет на этой диаграмме .. как клиент расшифровывает данные, поступающие с сервера? - person thiagoh; 20.09.2013

Если у вас есть ключи, возможно, этот плагин вам поможет! Посмотри

https://github.com/davidgfnet/wireshark-whatsapp

person Leonardo Hermoso    schedule 06.11.2015