Содержание статьи
warning
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный с применением материалов из этой статьи. Ее цель — проинформировать поставщиков услуг и дать рекомендации по устранению уязвимостей.
На территории России и бывшего СССР самый распространенный способ подключать абонентов к провайдеру — это витая пара. Если ты не занес немного денег за внешний IP, после подключения провайдер выдаст твоему устройству «серый» IP-адрес по DHCP из сети класса А (10.
), а также пропишет в настройках подключения свои DNS-серверы. Это позволяет взаимодействовать с ресурсами провайдера (DNS/VPN-сервер, личный кабинет), а также с другими абонентами локальной сети провайдера с использованием таких адресов.
Чтобы появился интернет, необходимо настроить подключение к VPN по L2TP, используя выданные провайдером учетные данные. Когда баланса на твоем счете недостаточно для списания абонентской платы, подключение L2TP работает только в режиме перенаправления всех HTTP-запросов на личный кабинет, остальные запросы блокируются и ты остаешься без интернета, но все равно будешь подключен к локальной сети до тех пор, пока тебя физически не отключат.
На практике этот процесс может затянуться, потому что веская причина физического отключения, по сути, только одна: это когда необходимо подключить нового абонента, но заняты все порты на конечном оборудовании провайдера (которое обычно стоит где‑нибудь на чердаке среди гор керамзита и голубиных какашек). Тогда монтажники провайдера могут провести ревизию и отключить того, кто не пользуется их услугами и не платит звонкой монетой. Но если такой нужды нет, то вполне логично держать абонентов подключенными — вдруг еще вернутся?
Активные и пассивные абоненты
Смекалистый читатель уже догадался, какие творческие возможности открываются, когда есть подключение к локальной сети и отсутствуют ограничения на сетевое взаимодействие между абонентами. Можно, например, «расшарить» интернет от другого абонента и не платить за доступ.
Что необходимо желающему провернуть подобный фокус?
Активный абонент, который добросовестно платит за интернет и будет выступать в роли раздающего. Например, если у халявщика и его родственника, друга, знакомого или коллеги один и тот же провайдер — это идеальный вариант, в противном случае жертвой может стать случайный человек. Причем абоненты физически могут находиться в разных частях города.
Из оборудования необходим роутер/сервер, который будет выступать в роли L2TP-клиента для провайдера и в роли VPN или прокси‑сервера для пассивного абонента. Подойдет любой достаточно мощный роутер, на который можно установить OpenWRT.
Пассивный абонент — который не платит, но подключен к локальной сети провайдера. У пассивного абонента может быть и обычный самый дешевый домашний роутер, если он поддерживает нужные для подключения технологии (L2TP, IPSec, OpenVPN).
Схематически подобное подключение выглядит вот так.
Давай внимательно посмотрим на эту схему. Главная уязвимость, на мой взгляд, — это отсутствие ограничений на межабонентское взаимодействие. И речь не об одном широковещательном домене: за время моего исследования было обнаружено более 160 подсетей (подробнее в разделе про ботнет) с различной IP-адресацией, и никаких ограничений между ними выявлено не было. Как говорится, «any to any — allow». Если ты знаешь, для чего так сделано, поделись в комментариях 😉
Еще одна проблема для провайдера — это неуправляемые коммутаторы, играющие роль конечного оборудования. Отсутствие возможности отключать порты автоматически, программно и удаленно, ведет к тому, что подключиться к абонентской локальной сети может кто угодно, если этот некто имеет доступ к сетевому оборудованию. Которое, как правило, слабо защищено физически или вовсе стоит в лестничных шкафах, запертых на кусок проволоки.
Что делать провайдеру
Провайдер может запретить или ограничить сетевое взаимодействие между абонентами из различных подсетей. Тогда уязвимость останется только у абонентов одного широковещательного домена, но об этом поговорим дальше.
DHCP-сервер провайдера в локальной сети должен каждый раз назначать рандомный IP-адрес абонентам при превышении короткого lease time. Тем самым пассивный абонент будет вынужден менять в своих настройках IP-адрес подключения сервера при каждом завершении lease time у активного абонента либо использовать доменное имя.
Следует разделить DNS-серверы провайдера по способу обработки внутренних и внешних запросов. Запретить сторонние DNS и резолвить только внутренние домены по белому списку (VPN-сервер и личный кабинет). Это снизит вероятность того, что к активному абоненту можно будет подключиться по доменному имени. А уже внутри L2TP-соединения назначать DNS-сервер, который резолвит внешние запросы.
Такой способ заодно защищает от атак типа DNS Tunneling. Впрочем, из‑за низкой пропускной способности мы ее здесь даже не рассматриваем — пользоваться таким туннелем в качестве основного канала вряд ли кто‑то захочет.
Ботнет
Во время исследования у меня появилась идея проанализировать, что будет происходить с сетевым устройством, которое подключено к локальной сети провайдера, но не подключено к интернету. Например, кто его сканирует и по каким портам.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»