Нам всем говорят, что HTTPs - это круто. Ведь если сайт использует HTTPs, то невозможно перехватить соединения, прочитать информацию или подменить траффик. Но неужели это работает на 100%?
Давайте для начала вспомним, что означает зелёный замочек в адресной строке браузера, когда вы заходите на сайт.
Этот замочек говорит о том, что сайт использует протокол передачи данных HTTPS, который позволяет шифровать любое подключение к сайту при помощи алгоритмов SSL/TLS. Таким образом, существенно повышается безопасность в работе сайта, ведь подразумевается, что:
- Ваш интернет-провайдер не сможет просматривать траффик между вами и сайтом. Он не увидит, какие страницы сайта вы посещаете, какие данные отправляете и т.д.;
- Вы открыли настоящий сайт, а не подделку. То есть атаку через файл hosts или подмену записей DNS провести не получится;
- В большинстве случаев, провайдер даже не знает, на какой именно сайт вы заходите. Он просто видит подключение к какому-то IP (он же IP сервера, на котором расположен сайт)
Сейчас большинство сайтов работают по HTTPs, а браузеры выдают большие, жирные предупреждения, если сайт всё ещё работает по обычному HTTP. Кроме того, SSL/TLS используются не только для подключения к сайтам, но и для подключения по другим протоколам: FTP (обмен файлами), SMTP (отправка почты), RDP (удалённое управление компьютером на Windows), SSH и др.
Для того, чтобы сайт работал на HTTPs, к нему нужно получить SSL-сертификат. Это аналог цифровой подписи, который выдаётся аккредитованными организациями лично каждому сайту. Когда браузер подключается по HTTPs, он проверяет этот сертификат и, если всё хорошо, разрешает подключение.
Такие сертификаты выдают хостинги и регистраторы доменов. В большинстве случаев, они автоматически подключаются к сайту и не требуют дополнительной настройки.
При желании можно сделать собственный SSL-сертификат, который можно использовать везде и он будет работать абсолютно так же, как и все. Единственное, что при подключении к сайту с таким сертификатом браузер будет выдавать предупреждение, т.к. не ясно, откуда вообще появился этот сертификат. Ссылочка о самоподписанных сертификатах на Википедии.
Любой SSL-сертификат должен быть подписан удостоверяющим центром. Список тех, чьим сертификатам можно доверять, лежит в любой операционной системе, на любом устройстве с выходом в интернет. Он никогда ниоткуда не скачивается и присутствует в системе сразу после установки.
При любом подключении по SSL/TLS, ваш компьютер на уровне самой операционной системы выполняет проверку сертификата. ОС заблокирует подключение, если сертификат не прошёл проверку. Это касается всех браузеров, онлайн-игр, почтовых клиентов, мессенджеров и т.д.
У некоторых браузеров есть свой список удостоверяющих центров, чьим сертификатам можно доверять.
Здесь просыпается главная уязвимость: любая программа на вашем компьютере потенциально может менять список УЦ, которым можно доверять. Тем самым, мошенники могут подменять сайты и, при этом, браузер не выдаст ни одного предупреждения, а зелёный замочек так и останется в адресной строке (благодаря тому, что ОС жертвы начнёт доверять тем сертификатам, которые выпустили вы сами). Тем же, кстати, занимаются интернет-провайдеры Казахстана. Они вручную редактируют список доверенных УЦ на ваших устройствах, чтобы затем использовать свои сертификаты и спокойно перехватывать и анализировать ваш трафик.
Выходит, если не следить за своим компьютером (или смартфоном), то весь смысл в HTTPs теряется. Чтобы стало более понятно, вот демонстрация схемы, как при помощи фишинга злоумышленники могут красть ваши средства персональные данные.
ВНИМАНИЕ! Схема продемонстрирована только в ознакомительных целях для повышения знаний информационной безопасности. Любые подобные действия не в образовательных целях влекут за собой последствия, согласно уголовному кодексу вашей страны.
Есть утилита, позволяющая выпустить SSL-сертификат на любой домен и IP. Достаточно всего лишь запустить эту утилиту на компьютере жертвы и указать домен сайта, который нужно подменить.
Так же нам нужно будет подменить DNS-записи на компьютере жертвы, чтобы шло подключние не к настоящему серверу сайта, а подставному.
Осталось собрать вирус, который подменит DNS, подменит список доверенных сертификатов и, теперь, можно будет перехватывать, смотреть, изменять любой HTTPs трафик жертвы.
Таким же образом, кстати, можно перехватывать не только HTTPs трафик, но и VPN, SSH, RDP и другие, которые используют SSL. Деанон на лицо, уж простите за каламбур.