Вопрос по encryption, fiddler, .net-4.0, ssl, c# – Какой смысл SSL, если fiddler 2 может расшифровать все вызовы по HTTPS?

45

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

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

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

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

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

EDIT

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

я верю, что он может только расшифровать информацию, предназначенную для вашей машины, потому что у вас уже есть закрытый ключ Mark
Ваша модификация вопроса ставит совершенно другой вопрос, чем оригинальный. Вам необходимо правильно проверить сертификат, отправленный сервером. Способ сделать это зависит от того, как вы подключаетесь (какие классы используются и т. Д.). Eugene Mayevski 'Allied Bits
Это правильно - это похоже на любой другой прокси-сервер для отладки - как уже упоминалось в ответе Алексея ниже, такие прокси только проверяют информацию, предназначенную для вашего компьютера, тем самым помогая в отладке (отсюда и название «отладочный прокси»). ) но не позволяет произвольно расшифровывать вызовы, сделанные с других машин. Таким образом, SSL по-прежнему безопасен, но локально доступен для наблюдения, что позволяет более эффективно отлаживать. waxspin

Ваш Ответ

3   ответа
7

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

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

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

49

http://www.fiddlerbook.com/fiddler/help/httpsdecryption.asp

Fiddler2 relies on a "man-in-the-middle" approach to HTTPS interception. To your web browser, Fiddler2 claims to be the secure web server, and to the web server, Fiddler2 mimics the web browser. In order to pretend to be the web server, Fiddler2 dynamically generates a HTTPS certificate.

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

РЕДАКТИРОВАТЬ: Существуют способы предотвращения атаки Fiddler / человек посередине - то есть в пользовательском приложении, использующем SSL, для связи могут потребоваться определенные сертификаты. В случае браузеров у них есть пользовательский интерфейс, чтобы уведомить пользователя о несоответствии сертификата, но в конечном итоге разрешить такую связь.

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

Обновлено. Обратите внимание, что я не являюсь экспертом в области SSL / защищенной связи, и если вы хотите сделать более серьезную защиту, чем SSL, вам нужно поговорить с людьми, специально обученными этому (обратите внимание, что SSL считается подходящим для банковских транзакций, поэтому может быть хорошо для тебя тоже).
Ключевым моментом для понимания является то, что если программное обеспечение работает на компьютере пользователя, он может просто изменить свои инструкции в памяти во время выполнения, чтобы обойти вашу проверку. Как отмечает Эндрю Купер, это та же проблема, с которой сталкивается DRM: «Ненадежный клиент» проблема.
Я добавил некоторую информацию к моему вопросу, если вы могли бы, пожалуйста, расширить то, что у вас есть, из моей новой информации, которая будет очень полезна. Landin Martens
6

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

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

Это обеспечит вам как можно более высокую безопасность, если вы не контролируете (одну) систему связи.

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

Похожие вопросы