http://habrahabr.ru/post/243997/
Уж простите за пафосный заголовок, но раз
пошла такая пьянка, то продолжим. Мне лично такие посты нравились всегда.
Итак, речь пойдёт про уязвимость известного в Мск (да и не только) провайдере Beeline. Многие помнят его под именем Corbina. Без сомнения, это один из передовых интернет провайдеров, с большой и хорошей историей. В своё время он был спасением, благодаря качественному и быстрому инету, интранет сетям и т.п. В настоящий момент сотрудники провайдера в курсе уязвимостей и самые критичные уже закрыты. Однако, уверен, многие откроют для себя много нового и интересного. Тем более, что техника применима практически к любому провайдеру.
Волею судеб я оказался в съемной хрущёвке. У меня был свисток «Мегафона». Так как я должен был пробыть там с недельку, меня не напрягало отсутствие стационарного интернета. Однако моё пребывание там затянулось. Я решил, что это не беда, так как был вооружён инструментарием для вардрайвинга. Но сбрутить я ничего не смог за пару дней, кроме открытой сети Yota (facepalm). Как вы могли догадаться из названия поста, в прихожей квартиры я нашёл до боли знакомый оранжевый провод. Подключил — это был «Билайн». Казалось бы, это просто оранжевый провод. И тем не менее, это как минимум 100мб канал (оптимально) с доступом в локальную сеть (возможно). В нашем случае whois сказал, что это 10.0.0.0/8 подсеть. Понятно, что не все ip будут доступны, но уже лучше, чем ничего.
Тут в бой вступает nmap. Я забыл про него в начале 2000-х, т.к. вроде эра открытых портов прошла. Однако в начале 2010 я снова про него вспомнил, ибо широкую популярность получили всякого рода nosql и прочие подсервисы, которые часто были без авторизации. nosql экономили на всём в погоне за производительностью, а кучища подсервисов, типа заббикса, дженкинса и т.п. часто оказывались либо открытыми, из категории «да кто узнает, что у меня 12345 порт открыт», либо дырявыми. Тот же заббикс имел кучу дыр, в том числе sqli без авторизации. Короче, моей целью были роутеры. 80-ые порты. Раньше часто они были открыты на внешку, сейчас провайдеры блокируют внешку по дефолту, как и сами роутеры. Но я то для них был локальным.
Начал сканировать nmap`ом, но быстро передумал, так как он предложил мне подождать пару дней. В бой был отправлен
zmap. Можете почитать про него, но если кратко — это очень быстрая и узкая альтернатива nmap`у. zmap просканировал ту же подсеть за 2 минуты.
Уязвимость #1
Не имея логина/пароля от «Билайна», просто воткнув провод, я получал доступ ко всем локальным ресурсам и устройствам (роутерам, камерам, voip железкам итп)
То, что на железках были дефолтовые логины/пароли, я даже за уязвимость считать не буду. Старо как мир. Из категории «зачем мне ставить сложный пароль на свой роутер, если он локальный». Или, что ещё чаще: «Ой, всё».
Однако далее меня ждала более интересная деталь. 80% роутеров, что я нашёл — dir300 с прошивкой от Beeline. Без сомнений, это один из самых надёжных и доступных роутеров, который сполна справляется со своей задачей. Когда я столкнулся с нестандартными логинами/паролями, я решил посмотреть, что как и куда ходит. Т.е. открыл инспектор в браузере и начал снифать запросы. Удивительное рядом! Оказалось, что прошивка «Билайна» на попытку неверной авторизации возвращала:
{
auth: false
}
Однако прошивка зачем-то слала сразу несколько запросов на авторизацию. Одновременно. И когда первый просто ругался auth:false, второй выдавал что-то вроде:
{
auth: false,
…
settings: {
ssid: "blablabla",
wpakey: "12345678",
login: 089746254
password: "lovelove123"
…
}
}
Т.е. прошивка как бы говорила, что auth:false, прости парень. Но при этом попутно отдавала всю настройку роутера, в том числе логин/пасс от личного кабинета «Билайна» и от wifi. В некоторых случаях было вообще смешно, вебморда ругалась на неверный логин/пароль, но сама же и показывала логин/пароль, но это было скорее исключением, таких роутеров встретил может парочку штук:
Уязвимость #2
Прошивка «Билайна» для роутеров сама отдавал все настройки роутера без знания логина/пароля.
Признаюсь, я даже не подозревал, что всё так выйдет. Нашёл всё это случайно. И ведь действительно, если бы прошивка не слала сразу несколько запросов (явно по ошибке разработчиков), я бы никогда не додумался проверить её наличие.
Даже имея логин/пасс от личного кабинета, ничего мы с ним не сделаем. Во-первых, как только устройство зарегистрировалось под определённым логином/паролем в сети «Билайна», никакое другое устройство зарегистрироваться под этим логином/паролем уже не может. Во-вторых, это жёсткое палево.
Сканируем роутеры, собираем логины/пароли от wifi. Смотрим, какие сети есть в зоне досягаемости. Коннектимся к ним и сидим, как партизаны. Даже сети с огромным паролем не устоят, т.к. в роутере он хранится в открытом виде. Ну и чтобы совсем не палиться. Берём маркер и в подъезде пишем логин/пароль от этой wifi сети где-нибудь в труднодоступном месте. Под лестницей первого этажа, например. Т.е. даже если к вам придут, вы включаете дурака и говорите, что вон там под лестницей нашли логин и пароль и приписку: «Пользуйтесь все, бесплатный wifi».
В моём случае у меня не хватило терпения собрать все wifi доступы со всех роутеров. Единственная сеть, что я быстро нашёл и которая была в диапазоне видимости моего ноута, имела хорошую скорость, но пинги от 30мс до 7с. С AlfaNetworks я имел стабильный сигнал, но эти внешние wifi карты по всему миру имеют репутацию помощника вардрайвера, поэтому сидеть под ними тоже палевно.
Я продолжал собирать доступы к wifi. Их было очень много и мне это надоедало. Хотелось сети прямо сейчас. В голову пришла простейшая и гениальная идея. Предположим, что я нашёл роутер с открытым 80 портом по адресу 10.82.2.20. Стандартный dir300. Либо что угодно другое, это не важно. Выключаем DHCP, и пишем настройки сети:
gateway: 10.82.2.20 (роутер, что нашли)
ip: 10.82.2.222 (от балды в той же подсети)
dns: 8.8.8.8
Подключаем сеть, и, даже без интриги, имеем качественный интернет через провод, а не через wifi. Заходим на роутер, смотрим — да действительно, мы подключены к нему как-будто в lan.
Ещё раз читаем, медленно и вникая в каждое слово:
В качестве gateway прописываем ЛЮБОЙ активный IP сети и имеем коннект к нему по LAN.
Нормально? По-моему вполне.
Мне оставалось только проверить несколько роутеров в личном кабинете на нормальный тариф, чтобы выбрать «кем быть сегодня».
Честно говоря, это скорее уязвимость не столько (и не только) «Билайна», сколько роутеров. Но тем не менее.
Уязвимость #3
Возможность коннектится/регистрироваться локально на любом роутере внутри сети и получить с него интернет.
Получив моральное и эстетическое удовольствие, я связался с представителями провайдера и передал им все наработки.
На выходе, имея лишь провод Beeline, не зная логинов/паролей, можно было получить быстрый интернет на халяву. Просто, как 2 байта переслать.
Некоторые детали:1. 99% роутеров TrendNet имеют стандартные логин/пароль. За всё время я нашёл лишь 1 или 2 роутера от TrendNet, к которым не подошли дефолтовые доступы.
2. 0% роутеров Zyxel имеют стандартный логин/пароль. Скорее всего, при настройке они требуют поменять этот пароль.
3. 50% доступов к ЛК не меняются. Кто знаком с билайном знает, что при заключении договора, установщик делает пароль от ЛК либо равный логину, либо добавляет 1 символ в начало или конец логина.
И вот ещё что, на уровне фантастики. Опять же, совершенно случайно я наткнулся на живой роутер, прописал его в качестве гейтвея и себе локальный 192.168.0.222. Получил интернет, попользовался им, а потом пошёл в настройки роутера (на 192.168.0.1). Уже не помню зачем. Может что-то проверить или чего ещё. Представьте моё удивление, когда передо мной открылась форма логина ADSL роутера от МТС. Я перепроверил сеть, посмотрел checkip.dyndns.com, прохуизил внешний IP — да действительно, это МТС инет.
Я воткнул провод «Билайна», а получил интернет от МТС. Я долго ломал голову, в чём тут смысл и как такое возможно. Подключил к процессу сисадмина с работы и спецов от «Билайна». Единственный возможный вариант, что я придумал:
1. Есть чувак, у которого и МТС и «Билайн» инеты, соответственно, 2 роутера.
2. Оба роутера законекчены друг к другу.
3. «Билайн» роутер не имеет инета и спрашивает его у МТС роутера.
4. «Билайн» роутер не находится в сети 192.168.0.0/24
5. МТС роутер находится в сети 192.168.0.0/24
6. Зная локальный IP билайна, вставив его в качестве gateway, я коннекчусь через него к МТС роутеру и имею интернет с него.
Круто? Примечательно, что 1-го числа следующего месяца устройство пропало. Предположительно, чувак отключил «Билайн».
Спасибо сотрудникам «Билайна» за быструю реакцию. В частности хабражителям
geran_utran и
givtone. На самом деле частенько приходится общаться с админами и разработчиками того или иного сервиса по поводу безопасности и чаще натыкаешься на: «Да мы тебя посадим, да это подсудное дело!» и прочий неадекват. Ребята быстро поправили критические дыры и привлекли нужных людей. Я был уверен, что у меня будет ещё месяц-два халявы, пока всю сеть «Билайна» не перенастроят, но нет, всё решилось в течении суток, как только нашли ответственного. Молодцы, одним словом.