Подтвердить что ты не робот

Что такое точка SSL, если скрипач 2 может расшифровать все вызовы через HTTPS?

Я снова задал вопрос о том, как скрыть мои запросы HTTP-запроса и сделать их более безопасными в моем приложении. Я не хотел, чтобы люди использовали скрипач 2, чтобы увидеть звонок и настроить автоответчика. Все сказали мне, чтобы я пошел SSL, и звонки будут скрыты, а информация будет сохранена.

Я купил и установил SSL-сертификат и получил все настройки. Я загрузил скрипач 2 и запустил тестовое приложение, которое подключилось к веб-службе https, а также подключилось к https php script.

Fiddler 2 смог не только обнаружить оба запроса, но и расшифровать их! Я смог увидеть всю информацию, возвращающуюся и четвертую, что подводит меня к моему вопросу.

Какой смысл иметь SSL, если бы он делал нулевую разницу с безопасностью. С SSL или без него я могу видеть всю информацию, возвращающуюся назад и четвертую, и STILL настроить автоответчика.

Есть ли что-то в .NET. Мне не хватает, чтобы лучше скрыть мои вызовы, переходящие через SSL?

ИЗМЕНИТЬ

Я добавляю новую часть к этому вопросу из-за некоторых ответов, которые я получил. Что делать, если приложение подключается к веб-службе для входа в систему. Приложение отправляет веб-службе имя пользователя и пароль. Затем веб-служба отправляет данные обратно в приложение, говоря хорошие данные для входа или плохое. Даже если переходить через SSL, человек, использующий скрипач 2, мог бы просто настроить автоответчика, и приложение затем "взломало". Я понимаю, как было бы полезно видеть данные в отладке, но мой вопрос заключается в том, что именно нужно сделать, чтобы убедиться, что SSL подключен к тому, который он запрашивал. В основном говоря, не может быть среднего человека.

4b9b3361

Ответ 1

Это описано здесь: http://www.fiddlerbook.com/fiddler/help/httpsdecryption.asp

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

По сути, вы вручную доверяете любому сертификату Fiddler, то же самое будет верно, если вы вручную примете сертификат от случайного человека, который не соответствует доменному имени.

EDIT: Есть способы предотвратить атаку Fiddler/man-in-the-middle, то есть в пользовательском приложении с использованием SSL для использования могут потребоваться специальные сертификаты. В случае браузеров у них есть пользовательский интерфейс, чтобы уведомить пользователя о несоответствии сертификата, но в конечном итоге разрешить такое общение.

В качестве общедоступного образца для явных сертификатов вы можете использовать Azure-сервисы (например, с инструментами PowerShell для Azure) и sniff-трафик с помощью Fiddler. Он терпит неудачу из-за явного требования к сертификату.

Ответ 2

Вы можете настроить свой веб-сервис, чтобы потребовать сертификацию на стороне клиента для проверки подлинности SSL, а также на стороне сервера. Таким образом, Fiddler не сможет подключиться к вашему сервису. Только ваше приложение, имеющее требуемый сертификат, сможет подключиться.

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

Нет реального способа сделать это 100% доказательство пули. Это та же проблема, что и в киноиндустрии с обеспечением содержания DVD. Если у вас есть программное обеспечение, способное дешифровать DVD и воспроизводить контент, тогда кто-то может сделать дамп памяти, пока это программное обеспечение находится в действии и найдет ключ дешифрования.

Ответ 3

Точка SSL/TLS в общем случае такова, что случайный подслушиватель с Wireshark не может видеть ваши полезные нагрузки. Fiddler/Burp означает, что вы взаимодействовали с системой. Да, это очень простое взаимодействие, но для этого требуется (одна) система.

Если вы хотите повысить безопасность, сделав эти программы MITM бесполезными на таком базовом уровне, вам потребуется аутентификация сертификатов клиентов (двухсторонний SSL) и привязать как серверные, так и клиентские сертификаты (например, требуется, чтобы только конкретный сертификат действует для комм). Вы также зашифровывали бы полезную нагрузку, переданную на провод, с открытыми ключами каждой стороны и гарантировали, что личные ключи будут находиться только в тех системах, к которым они принадлежат. Таким образом, даже если одна сторона (Боб) скомпрометирована, злоумышленник может видеть только то, что отправлено Бобу, а не то, что Боб отправил Алисе. Затем вы должны зашифровать полезную нагрузку и подписать данные с помощью проверяемого сертификата, чтобы гарантировать, что данные не были подделаны (есть много споров о том, следует ли сначала шифровать или подписывать, например, btw). Кроме того, вы можете использовать подпись, используя несколько проходов, например, sha2, чтобы гарантировать, что подпись "отправлена" (хотя это в значительной степени неясный шаг).

Это обеспечит вас как можно дальше, насколько это возможно, когда вы не будете контролировать (одну) коммуникационных систем.

Как уже упоминалось, если злоумышленник контролирует систему, они управляют ОЗУ и могут изменять все вызовы методов в памяти.