mDNS это плюс или минус?
Добрый день, уважаемые жители хабра!
Сегодня я хотел бы понакомить новичков с рядом протоколов, используемых в сети интернет, и объяснить как современные технологии с одной стороны упрощают нам жизнь, а с другой, добавляют проблем с безопаснотью.
Впервые я познакомился с протоколами компьютерных сетей около 20 лет назад. Тогда основным стандартом передачи данных в компьтерных сетях был протокол IPv4. С тех пор многое изменилось, были добавлены новые рекомендации, новые протоколы, операционные системы ориентируясь на удобство пользователей активно стали использовать предлагаемый функционал. Так ли это безопасно?
Ранее я занимался разработкой прошивок устройств. Эти устройства относились к различным классам. Это и банальные моргалки светодиодами, и автоэлектроника, и сетевое оборудования класса домашних маршрутизаторов, и даже с кодом модемов LTE от компании Sequans Communication работать приходилось.
Так что же хорошего таит в себе mDNS, и что в нем плохого. Поскольку стаья ориентирована на людей, не знакомыми с компьютерными сетями, я попробую сначала описать это простыми словами, а затем расскажу, как же это происходит на самом деле, без аналогий. Наченм с аналогий.
Представтье что Вы устроились в новую компанию. Это аналог того что Ваш компьютер и или смартфон подключился к гостевой сети компании или просто интернет кафе. Что Вы делаете дальше? Вероятно знакомитесь. Когда Вы находитесь за закрытыми дверьми в организации, никто обманывать Вас не будет. Но предположим что в компании есть люди, которые не хотят знакомить Вас с руководителем. Они всячески хотят отвести Ваше внимание от него чтобы Вы не смогли поговорить с руководителем, а вместо этого поговорили с коллегой, которому Вы непонтравитесь и он Вас уволит, а руководителю скажет что Вы ушли сами. Вообще говоря такая атака, в области информационной безопасности называется аббревиатурой MITM или человек посередине. Меня давно атакуют таким образом, от подключения Internet, до турдоустройства. Вероятно кто то натравил на меня RedTeam-команду, и никак не оставляют в покое. Но давайте попробуем понять как это происходит на сетевом уровне.
Все дело в том, компьтеры, в сети не знают как обратиться на какой то конкретный ресурс по имени. Все сетевые ресурсы, сайты, облачные хранилища, и все остальное имеют адрес. Адрес, это всего лишь набор цифр. Но обращаясь, например на habr.com, Вы должны как то получить адрес этого ресурса. В моем случае он будет следующим »178.248.237.68». Но как компьютеру или телефону, узнать этот набор цифр? Для определения адреса по имени, существуют специальные сервисы и протоколы. В нашем случае это протокол DNS и протокол mDNS. Как они работают и в чем их различия? Для того чтобы получить адрес, по имени с использованием протокола DNS, требуется заранее знать где спросить адрес ресурса. Т.е. нужно знать адрес DNS сервера. Он может быть например таким »8.8.8.8»,- это бесплатный адрес сервера, который предоставляет компания Google. Приведу аналогиию. В вашей компании, когда Вы только пришли, HR-менеджер сказал что все контакты коллег Вы можете узнать у своего руководителя Василия Петрова, с личным номером 12345. Когда Вам нужно познакомиться, Вы обращаетесь к Василию Петрову, и он знакомит Вас с тем человеком, с которым познакомится требуется. Это аналог запроса адреса по имени с использованием протокола DNS и DNS-сервера. Конечно, тут существует уязвимость. А что если бейдж Василия Петрова на рубашку прицепит Вася Пупкин и скажет что Ваш начальник, рядом сидящий Александр Злобный? А тот Вас просто уволит без лишних Вопросов из за конкуренции. Такой тип атаки назвается человек посередине с атакой на DNS. Обычно это применяется одновременно с технологией ARP-спуфинга, но об этом позже. В случае наличиая на рабочем месте настоящего Василия Петрова, данную атаку провести намного сложнее чем в случае его отсутствия. Это был пример атаки на DNS.
А чем отличается протокол mDNS. Это тот же протокол DNS, только он не имеет конкретного адресата. Если привести аналогию, то это будет выглядеть как громкий вопрос в коллективе как вас найти кабинет, где сидит Василий Петров. Предстваьте что на него отвечает анонимный человек из коллектива и Вы ему верите. Если этот человек доверенный человек в компании, то конечно все будет хорошо. Доверенных сотрудников может быть много. Кто нибудь да подскажет. А что если это Ваш конкурент, который так же как и Вы пришел устраиваться на работу. Т.е. такой же гость в этой WiFi сети что и Вы?
А теперь представьте что Вы это банковское приложение установленное на сматфоне, и Вы запрашиваете адрес банка? Что будет? Можно и ситуацию проще. Вы находителсь в другой стране, хотите написать своей девушке, подключаетесь к чужому серверу Telegram, а она говорит что больше не хочет с Вами общаться. Вот к чему может привести использование mDNS, и прочих сервисов делающих нашу жизнь проще в ущерб безопасности…