Содержание статьи
warning
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный с применением материалов из этой статьи. Ее цель — проинформировать поставщиков услуг и дать рекомендации по устранению уязвимостей.
На территории России и бывшего СССР самый распространенный способ подключать абонентов к провайдеру — это витая пара. Если ты не занес немного денег за внешний IP, после подключения провайдер выдаст твоему устройству «серый» IP-адрес по DHCP из сети класса А (10.
), а также пропишет в настройках подключения свои DNS-серверы. Это позволяет взаимодействовать с ресурсами провайдера (DNS/VPN-сервер, личный кабинет), а также с другими абонентами локальной сети провайдера с использованием таких адресов.
Чтобы появился интернет, необходимо настроить подключение к VPN по L2TP, используя выданные провайдером учетные данные. Когда баланса на твоем счете недостаточно для списания абонентской платы, подключение L2TP работает только в режиме перенаправления всех HTTP-запросов на личный кабинет, остальные запросы блокируются и ты остаешься без интернета, но все равно будешь подключен к локальной сети до тех пор, пока тебя физически не отключат.
На практике этот процесс может затянуться, потому что веская причина физического отключения, по сути, только одна: это когда необходимо подключить нового абонента, но заняты все порты на конечном оборудовании провайдера (которое обычно стоит где‑нибудь на чердаке среди гор керамзита и голубиных какашек). Тогда монтажники провайдера могут провести ревизию и отключить того, кто не пользуется их услугами и не платит звонкой монетой. Но если такой нужды нет, то вполне логично держать абонентов подключенными — вдруг еще вернутся?
Активные и пассивные абоненты
Смекалистый читатель уже догадался, какие творческие возможности открываются, когда есть подключение к локальной сети и отсутствуют ограничения на сетевое взаимодействие между абонентами. Можно, например, «расшарить» интернет от другого абонента и не платить за доступ.
Что необходимо желающему провернуть подобный фокус?
Активный абонент, который добросовестно платит за интернет и будет выступать в роли раздающего. Например, если у халявщика и его родственника, друга, знакомого или коллеги один и тот же провайдер — это идеальный вариант, в противном случае жертвой может стать случайный человек. Причем абоненты физически могут находиться в разных частях города.
Из оборудования необходим роутер/сервер, который будет выступать в роли L2TP-клиента для провайдера и в роли VPN или прокси‑сервера для пассивного абонента. Подойдет любой достаточно мощный роутер, на который можно установить OpenWRT.
Пассивный абонент — который не платит, но подключен к локальной сети провайдера. У пассивного абонента может быть и обычный самый дешевый домашний роутер, если он поддерживает нужные для подключения технологии (L2TP, IPSec, OpenVPN).
Схематически подобное подключение выглядит вот так.
![Схема подключения через активного абонента Схема подключения через активного абонента](https://static.xakep.ru/images/eb61b83f46e4b125711c68a452056e0e/21144/prov1.png)
Давай внимательно посмотрим на эту схему. Главная уязвимость, на мой взгляд, — это отсутствие ограничений на межабонентское взаимодействие. И речь не об одном широковещательном домене: за время моего исследования было обнаружено более 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»