LINUX.ORG.RU

Как определить наличие https-MitM у стороннего пользователя?

 , ,


1

6

Планирую переводить сайты на https, но сейчас всё чаще попадаются провайдеры, перехватывающие трафик под свой сертификат. Хотелось бы в этом случае пользователю выдавать жирное предупреждение. Как это сделать, куда копать?

★★★★★

Скорее всего никак, ибо (прошу прощения у швимов за, возможно, резкое высказывание) «на каждую хитрую жопу найдётся свой пенис с винтом».

Следить за сертификатами — задача юзера. Можно задействовать всякие разные HSTS, Certificate Pinning и какие там ещё волшебные технологии придумали за последние годы, но в результате всё-равно: если у юзера установлен сертификат казахстана, то подделать можно абсолютно все заголовки.

В глубокой теории можно даже написать на яваскрипте клиента для туннелирования траффика, но опять же: если есть вторжение, то при большом желании можно и модифицированный JS подсунуть и всё-равно ничего не выйдет.

Отсюда мораль: решать административные вопросы административно, а не технически.

Goury ★★★★★
()

Да никак. Как ты узнаешь, что сертификат был подменен, если он подменяется для пользователя? Только если по ip провайдера определять и вести базу «плохих».

Deleted
()
Ответ на: комментарий от Goury

В глубокой теории можно даже написать на яваскрипте клиента для туннелирования траффика

Вроде уже есть реализация TLS на JS: https://github.com/digitalbazaar/forge

если есть вторжение, то при большом желании можно и модифицированный JS подсунуть и всё-равно ничего не выйдет

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

sholom
()
Ответ на: комментарий от sholom

Да как нехер делать. Будут подсовывать какой-нибудь JS-RDP.

Goury ★★★★★
()

https://bugzilla.mozilla.org/show_bug.cgi?id=728650

Steps to reproduce:

I have googled for JavaScript access to SSL ceritficates chain details.

Actual results:

Nothing found

Expected results:

I want Firefox JavaScript provide access to current HTTPS session information.

ps. зато нашлось https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity - но это лишь позволяет убедиться что скрипты целые

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Можно просто проверять наличие CP-плагина через navigator.plugins или какой-нить activeX для осла. Если CP-плагина (запастись списком самых распространенных) нет, выдавать предупреждениерекомендацию и ссылку на установку в зависимости от браузера. По другому только если готовую базу «черных» уже иметь.

znenyegvkby
()

В случае с MitM к тебе коннектится тот самый MitM, а не клиент.

Для защиты обычно используют DNSSEC (защита от подмены DNS) и HPKP. В случае с HPKP если провайдер подменяет сертификат, то пользователь на сайт уже не зайдет. Но обрати внимание на https://tools.ietf.org/html/rfc7469#section-2.6 Если сертификат MitM находится в локальном хранилище сертификатов, то никакого предупреждения не будет.

sjinks ★★★
()
Ответ на: комментарий от Deleted

Да никак. Как ты узнаешь, что сертификат был подменен

Браузер же знает и предупреждает. Несоответствие домена, например.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от sjinks

В случае с HPKP если провайдер подменяет сертификат, то пользователь на сайт уже не зайдет.

Не годится. Т.к. пользователь должен иметь доступ. Но должен быть предупреждён (сверх того, о чём выругается браузер).

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Ну будет он предупреждён - и что это ему даст? Смысл столько париться ради тупой задачи - профита ноль. Если сертификат подменят - браузер должен разорвать соединение, это самое правильное действие. Плюс смотри чтобы невозможно было https сайт открывать по http.

menangen ★★★★★
()
Ответ на: комментарий от KRoN73

Несоответствие чему?
При mitm с казахским сертификатом домен будет соответствовать как надо.

Goury ★★★★★
()

но сейчас всё чаще попадаются провайдеры, перехватывающие трафик под свой сертификат

Браузер и так уже об этом пользователю сообщит так как у него не будет установлено сертификата CA которым подписан сертификат, которым будут подменять оригинальный. Плюс врядли будут заморачиваться и генерировать сертификат отдельно для каждого домена, там что в СN и altnames будет несовпадение, что опять же заставит браузер ругаться.

anonymous_sama ★★★★★
()
Ответ на: комментарий от menangen

Если сертификат подменят - браузер должен разорвать соединение, это самое правильное действие.

Бред какой. Если сертификат подменяют – нормальный браузер должен об этом оповестить, а ничего сам не «разрывать» там. Это должно стать решением конечного пользователя – твое дело предупредить.

znenyegvkby
()
Ответ на: комментарий от KRoN73

Тогда, собственно, немного вариантов: с клиента делать запрос к серверу (через какой-нибудь flash или дождаться поддержки raw sockets в браузерах), получить данные сертификата (serial, common name, whatever), отослать их серверу, а на сервере сравнить то, что получено, с тем, что установлено. Костыли, но иначе (пока) никак.

Если самому велосипедить не хочется, есть Forge.

sjinks ★★★
()

Расширение HTTPS everywhere от eff вроде умело проверять аутентичность используемого сертификата, в том числе через тор. Наверно выпилили.

anonymous
()
Ответ на: комментарий от sjinks

HPKP

так вот почему у меня половина веба не работает

anonymous
()
Ответ на: комментарий от KRoN73

Надо штобы один раз HSTS прошёл, дальше броузер не даст долбопользователю принять левый сертификат

anonymous
()
Ответ на: комментарий от menangen

Ну будет он предупреждён - и что это ему даст?

Предупреждение.

Если сертификат подменят - браузер должен разорвать соединение, это самое правильное действие.

Ага. Т.е. есть шансы, что скоро Интернет в России совсем перестанет работать, да? :D

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от anonymous_sama

Браузер и так уже об этом пользователю сообщит

99% пользователей это предостережение игнорируют и жмут «смотреть всё равно».

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от sjinks

с клиента делать запрос к серверу (через какой-нибудь flash или дождаться поддержки raw sockets в браузерах), получить данные сертификата

Ага, вот подобное я и хотел услышать. Сейчас погуглил — печально. Штатно из JS доступа к информации по сертификату нет. Хотя есть, вроде бы, реализации SSL/TLS на JS и можно запросить сервер отдельно. Видимо, так и придётся делать.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

такие лысипеды ради пары дебиков? может ещё приложение для айфона напишыш?

anonymous
()
Ответ на: комментарий от KRoN73

Так тебе это и нужно, как я тебя понял.

Не годится. Т.к. пользователь должен иметь доступ. Но должен быть предупреждён

Дополнительные костыли не нужны. Если кто-то CCЗБ, то это его проблемы. С HSTS или HPKP юзер зайти не сможет на твой сайт, если сертификат будет некорректный. И если HSTS еще можно обойти настроив браузер не должным образом, то с HPKP вообще никак, юзер даже информации о неверном сертификате, где можно на него посмотреть, не увидит.

99% пользователей это предостережение игнорируют и жмут «смотреть всё равно».

Это слишком плохого мнения о пользователях, большинство пугаются и больше на такой сайт не заходят. Да как уже заметили провайдер еще может http-заголовки зарезать.

anonymous_sama ★★★★★
()
Ответ на: комментарий от anonymous_sama

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

И никогда в жизни ни один производитель бровзеров не сделает невозможной подмену сертификатов. Потому что тогда пропадёт теоретическая возможность низкоуровнегого дебага и анализа.

Goury ★★★★★
()
Ответ на: комментарий от Goury

Из того, что я знаю: Это не взлетело, после статьи на хабре страницы удалили. Люди начали звонить и грузить поддержку почему почта и гугл не открываются. Никто сертификат и не поставил, так как юзеры ленивы. Процедуру же по добавлению сертификата в браузер store они никогда не пройдут. А ССЗБ юзеров и так ничто не спасет, разве что проверять certificate store браузера на наличие лишних сертификатов, и если такие есть, удалять без предупреждения. Но это тогда и более продвинутых пользователей коснется, у меня например есть еще свой internal CA и я даже базу серийных номеров выпущенных сертификатов для него веду.

anonymous_sama ★★★★★
()
Ответ на: комментарий от anonymous_sama

проверять certificate store браузера на наличие лишних сертификатов, и если такие есть, удалять без предупреждения

Тебе такую ахинею пороть не стыдно самому-то?

не взлетело

Не разогнали просто нормально. Надо было нормальных специалистов нанять, а не чуркобесов-гастарбайтеров. И тогда взлетеа бы установка сертификатов в автоматическом режиме.
Мы это проходили много раз уже, даже секретутки чугуниевые справляются, если им мануал с картинками дать вместо вконтача.

Goury ★★★★★
()

Для порядка: написать внятную инструкцию, приложение для проверки валидности (расширение, консоль, gui, сервис)

Пора задумываться о шифровании, мало зависящем от https/ssl

Предусмотреть возможность обмена gpg-сообщениями.

anonymous
()
Ответ на: комментарий от anonymous_sama

Если кто-то CCЗБ, то это его проблемы.
Это слишком плохого мнения о пользователях, большинство пугаются и больше на такой сайт не заходят.

«Узок их круг. Страшно далеки они от народа».

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Для порядка: написать внятную инструкцию, приложение для проверки валидности

Этим простые пользователи не будут заморачиваться. Иначе их проще переводить сразу на что-то типа ZeroNet или RetroShare. Но на это пойдёт менее 1% посетителей :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

99% пользователей это предостережение игнорируют и жмут «смотреть всё равно»

То есть они УЖЕ предупреждены, но им пофиг? Тогда можно вопрос - в чём смысл твоего наколенного предупреждения и почему пользователю будет пофиг в первом случае и не пофиг во втором?

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Тогда можно вопрос - в чём смысл твоего наколенного предупреждения

Психология поведения. Когда появляется стандартное диалоговое окошко, пользователь жмёт «ок» не глядя и больше не вспоминает. А когда на экране будет постоянно красный баннер, то он задумается, что это за нафиг.

Ну и как дисклеймер. Юзера будут постоянно ругаться, что за нафиг, у меня на сайте какие-то окошки выскакивают, а на других сайтах — нет. Значит, мой сайт плохой. Может, на нём вирусы какие... А вот в баннере будет разъяснение :)

KRoN73 ★★★★★
() автор топика
Последнее исправление: KRoN73 (всего исправлений: 1)
Ответ на: комментарий от KRoN73

- разумно, эдакое ненавязчивое напоминание ...

Кстати, браузеры на базе хромиум вроде как вообще отказываются работать с левыми сертификатами...

anonymous
()
Ответ на: комментарий от anonymous

Ещё не отказываются. Но такое у них, вроде, в планах.

KRoN73 ★★★★★
() автор топика
2 апреля 2017 г.
Ответ на: комментарий от anonymous_sama

Ага, спасибо! Похоже, то, что надо.

KRoN73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.