В 2014 году начали свое действие постановления правительства РФ №758 №801, обязывающие владельцев публичных WiFi сетей настроить на роутерах идентификацию пользователей через паспортные данные, sms или портал гос. услуг. Нежелание владельцев кафе тратиться за Captive portal'ы поспособствовало некоторым провайдерам в распространении своих точек доступа с платной sms-авторизацией. У меня возникло желание проверить, можно ли подобную sms-авторизацию обойти.
Дисклеймер
Данная статья написана в ознакомительных целях. Автор ни в коем случае не призывает читателей к нарушению законодательства РФ. Пожалуйста, не повторяйте действия, описанные в данной статье, предварительно не ознакомившись с главой 28 УК РФ. Все торговые марки и названия Wi-Fi сетей в данной статье являются выдуманными, а все совпадения — случайными.
К делу...
Для поиска подходящей жертвы я взял ноутбук с Debian'ом на борту и направился в ближайшую пиццерию. Рядом было пара торговых центров, и еще несколько забегаловок, что гарантировало мне найти подходящую «жертву». Я подключился к одной из доступных мне сетей, затем открыл браузер, чтобы зайти на заветный порнхаб habr.com и вот что я увидел:
Эта точка доступа оказалась подконтрольна одному из российских провайдеров. Мне предлагалось воспользоваться данной сетью в качестве гостя на минимальной скорости, получить премиум за 99 рублей или (если я являюсь клиентом данного провайдера) войти через личный кабинет. И, конечно же, я пошел путем, не входящим в этот список (иначе зачем бы я начал писать эту статью).
На своем опыте я знал, если пройти идентификацию на одной точке доступа этого провайдера, то при подключении того-же устройства к другой точке идентификацию проходить не требовалось (потом оказалось, что так у всех провайдеров, предоставляющих sms-авторизацию). Идентификация не требовалась даже когда использовался другой браузер. Значит, провайдер как-то запоминает наше «железо». Самое первое что мне пришло в голову — провайдер запоминает mac-адрес нашего устройства. А это значит, что если поставить себе mac-адрес того, кто уже прошел идентификацию, то мы сможем спокойно пользоваться сетью. И, как мы увидим дальше, интуиция меня не подвела.
Для атаки я решил воспользоваться утилитами из пакета aircrack-ng и WiFi-адаптером TL-WN722N с внешней антенной для большего охвата. Для начала я подключил адаптер и с помощью airodump-ng перевел его в режим монитора. Я описал этот процесс кратко, более подробно вы можете прочитать тут.
sudo -s # работать будем с правами супер пользователя
ifconfig # смотрим имя адаптера, который мы хотим использовать
Получаем вывод:
...
wlx60e32719503f: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 2a:36:62:d5:ec:63 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
wlx60e32719503f — это наш адаптер
Убиваем процессы, которые используют адаптер, и переводим его в режим монитора.
airmon-ng check kill
airmon-ng start wlx60e32719503f
Мы видим, что появился новый сетевой интерфейс — wlan0mon. Запускаем его
airodump-ng wlan0mon
Ждем пару минут, и получаем такую табличку
Нас интересуют поля BSSID (mac-адрес точки доступа), CH (канал) и ESSID (название сети). По полю ESSID я нашел интересующую сеть (она шестая по счету). Берем из таблицы mac-адрес точки доступа (CC:B2:**:**:**:FC), канал (4 канал), на котором она работает и передаем их в airodump-ng:
airodump-ng wlan0mon -c 4 --bssid CC:B2:**:**:**:FC
Ждем некоторое время, и теперь получаем такой вывод:
В первой таблице всего одна строка. Это наша атакуемая сеть. Во второй таблице мы видим список клиентов этой сети. Нас интересует поле STATION. Это mac-адреса клиентов, сохраняем их в текстовый файл. Нам необходимо заменить свой mac-адрес на один из них. Я выбрал mac предпоследнего клиента (1C:CD:**:**:**:43), так как этот клиент самый активный в сети, а следовательно, он наверняка прошел идентификацию.
Как всем известно (а я надеюсь, что вам известно), двум устройствам с одинаковыми mac-адресами будет трудно ужиться в одной сети. И сейчас у нас 2 варианта.
Можно воспользоваться утилитой aireplay-ng, чтобы провести деаутентификацию нашего клиента от сети
aireplay-ng -0 1000 -a CC:B2:**:**:**:FC -c 1C:CD:**:**:**:43 wlan0mon
- "-a CC:B2:**:**:**:FC" — это атакуемая точка доступа
- "-c 1C:CD:**:**:**:43" — это клиент, которого мы будем отключать
- "-0 1000" — тут мы указываем тип атаки (ноль это деаутентификация) и количество пакетов деаутентификации, чтобы отключить клиента, если он опять подключится.
Но я решил не вредить человеку, а пойти более гуманным способом — подождать, пока клиент сам уйдет (как раз есть время поесть пиццу).
К счастью, этот клиент быстро ушел. Теперь нам осталось поставить его mac-адрес себе. Есть много способов поменять mac-адрес на linux. Самый простой — указать нужный mac-адрес непосредственно в сетевых настройках.
Mac-адрес указан, теперь мы можем подключиться к точке, и проверить доступ к интернету командой ping.
Попробовал зайти в гугл, и еще на несколько сайтов — успешно.
Заключение
Таким образом удалось выяснить, что SMS-авторизацию легко обойти заменив свой mac-адрес на mac-адрес клиента, который уже прошел идентификацию. В заключении хочу еще раз сказать: «Данная статья написана в ознакомительных целях, автор ни в коем случае не призывает читателей к нарушению законодательства РФ».
Автор: DVoropaev