13.11.2013

Взлом WiFi роутеров! Интервью с хакером!

image

В основе статьи лежит интервью с настоящим хакером Graf_Black.

Сергей Александрович Бабин
г. Кемерово
babins@inbox.ru

Материал, изложенный в этой статье  первоначально планировалось включить отдельной темой в  книгу под рабочим названием «Инструментарий хакера», которая должна вот- вот выйти в свет в издательстве БХВ (С-Петербург). Но, так  получилось, что книга уже была  сдана в набор, а данная  глава была еще  не совсем готова. Поскольку это может оказаться интересным для многих читателей то решено было сделать отдельную публикацию.

В основе статьи лежит интервью с настоящим хакером, что согласитесь, не часто можно встретить.

Не будем рассказывать о том, как произошло это знакомство, и как удалось уговорить хакера на придание огласке  нашей беседы. Отметим только, что весь диалог был виртуальным.

Наибольший интерес представляет даже не техническая сторона  конкретного взлома, о котором мы будем говорить,  а личное отношение интервьюера к некоторым аспектам  обсуждаемой темы. Итак, вот это интервью, правда, с некоторыми литературными правками, что не позволяет в полной мере оценить всю харизматичность  опрашиваемого, но дало возможность представить в более общепринятом виде.

С.А.Б.: Как мне вас называть?

Хакер: Сегодня можно – Graf_Black!

С.А.Б.: Вы хакер!
Graf_Black: Не думаю, что являюсь таковым в том смысле как Вы это  себе представляете.

 С.А.Б.:?

Graf_Black: Может быть я несколько витиевато выражаюсь! Но, во всяком случае, я не взламываю системы для проникновения в них  ради какой- то выгоды, да и вообще с целью проникновения.  Можно было бы меня назвать этичным хакером, но у меня нет и заказчиков для тестирования систем. Я просто изучаю системы ради интереса, и вообще стараюсь не  нарушать  закона, никому не делать зла.

С.А.Б.: Как Вы относитесь к различной литературе по теме хакинга?

Graf_Black: Да какая же это литература? «Сначала был ARPANET…. Потом был Интернет…Далее - первый  червь Морриса…. Появился  World Wide Web.  Хакер это тот- то, и тот-то… , и т.д.».  В таком духе - пару  сотен страниц! Не хочу кидать камня в Вашу строну, надеюсь, что будет по-другому.

С.А.Б.: Ну хорошо, перейдем к основному вопросу,  ради которого мы и договорились об этой встрече (если можно ее так назвать).
Вопрос в следующем: Сегодня Интернет  переполнен  описанием различных уязвимостей, методик по взлому, и так далее. Информации настолько много, что казалось бы, каждый второй должен бы стать опытным хакером, каждый третий защитником информации…. Однако, как мне кажется,  этого не происходит. Как правило,  опубликованные примеры почему-то не срабатывают. Почему?

Graf_Black: Для того чтобы ответить на этот вопрос давайте в качестве примера рассмотрим взлом WiFI роутера по протоколу WPS, который из всех опубликованных   на сегодня   способов представляется наиболее эффективным и простым!

Напомним: WPS – (Wi-Fi Protected Setup) протокол применяют  для  упрощения одноименного процесса настройки беспроводной сети.  Грубо говоря – протокол для ленивых, используемый в процессе подключения WiFi-устройства к роутеру, участвующий в процессе настройки этого устройства. Делается это так, что пользователю  не требуется стараться при конфигурировании подключаемого устройства, вводить сложный  секретный ключ для WPA2-PSK.  Нужно только знать pin-код устройства, состоящий всего из 8-и цифр (который по утверждению всех источников можно считать с этикетки на корпусе роутера). При настройке, если воспользоваться WPS, роутер сам выдаст устройству значение секретного ключа. Чтобы взломать устройство WiFi требуется знать только pin-код, и  не требуется производить сложных атак для  WPA2-PSK (например, пробовать взлом по словарю с применением заумных, сложных мутаций, и не факт что  это может привести к успеху).
Оказывается структура pin-кода  и самого процесса авторизации такова, что количество комбинаций при брутфорсе (взломе пароля методом перебора) значительно меньше, чем можно было бы предположить, за счет того, что код состоит  из трех частей: 

- последняя цифра  это контрольная сумма, полученная из первых 7-цифр (только за счет этого уже значительно   уменьшилось количество комбинаций),
- две части из 4-х и 3-х цифр участвуют в авторизации по отдельности  (в результате чего для полного перебора требуется еще меньше комбинаций).

Благодаря  Интернету укоренилось  мнение:   в результате того, что в указанном  протоколе  (WPS) имеется уязвимость, можно с легкостью взломать чуть ли не каждый роутер и  за считанные часы.

Но, теория теорией, а  действительность  такова, что взламывать – то оказывается и нечего (сразу оговорюсь – количественные оценки сделаны на основе личного опыта):

  • Некоторые  давно изготовленные роутеры  вообще не поддерживают протокол WPS (процентов 10).
  • Часть маршрутизаторов с момента опубликования уязвимости, уже «перепрошита» более новыми версиями программного обеспечения (процентов 20), в котором производители учли эту уязвимость «вкрутив»  туда блок,   отвечающий  за то, что при слишком уж частом, неуспешном обращении по указанному протоколу  увеличивается  тайм-аут для  «отлупа» тому, кто пытается получить авторизацию. Указанный программный блок   в таком случае   дает команду роутеру на время  «замкнуться в себе» (напоминает  мою подругу:  обидевшись на что-то, она может по неделе со мной не разговаривать, и я называю это  состояние - «замкнуться в себе»), или даже вообще - «предписывает» перманентный «бан» нападающему. Причем интересно, что  исправляющие уязвимость «перепрошивки» были установлены пользователями (или теми, кто  обслуживает их роутер) даже вовсе не по причине наличия обсуждаемой уязвимости, а просто  потому, что во всех этих роутерах  хватает и других «багов» не устраивающих пользователя. Устранение  возможности взлома  произошло не нарочно, по воле пользователя, а как бы попутно!
  • Некоторые  устройства уже более новые и программное обеспечение учитывает обсуждаемую уязвимость (процентов 40):  по умолчанию протокол WPS не включается, или при частом обращении в роутере происходят  те же действия, какие указаны   в предыдущем пункте  (роутер «замыкается  в себе»,  вас посылают…., не пугайтесь,  я хотел сказать – посылают  в «перманентный бан»).
  • На части роутеров (5 процентов) продвинутым пользователем протокол WPS отключен принудительно. Отключен потому что, во-первых, программное обеспечение  роутера это позволяет, во-вторых, пользователь  знает о наличии уязвимости (рисунок 1):

Рисунок  1.

  • Часть роутеров, находящихся в окружении атакующего, вообще со слабым сигналом (15 процентов). А для взлома по указанной  уязвимости, как известно, требуется очень мощный сигнал.  Т.е., нужно находиться в непосредственной близости от взламываемого роутера.

Были названы не все причины, только основные! На этой цифре 10+20+40+5+15=90% WiFi роутеров, не подлежащих взлому,  пожалуй, и остановлюсь! А то ненароком, увлекшись,  насчитаю более 100  процентов! Оставим себе шанс, что процентов  около 10% роутеров, находящихся  в Вашем окружении,  все же взломать можно.

Сплошные сложности. И это еще не все! Пойдем дальше.  О том, что для взлома роутера требуется максимум 10 – часов, как описывается во всех без исключения  статьях на эту тему,  вообще  какая-то слишком уж  теоретическая цифра!  Сказал однажды кто-то, и все: как аксиома тиражируется всеми, никто не подверг сомнению! Уверяю Вас – на практике  нужно до  48 часов.  Если на взламываемом  роутере pin-код имеет значение 99999991, то вы потратите 2-ое суток (в худшем случае может быть даже немного больше). А если  значение pin-кода – 09999991, можно  обойтись и за 2-4 часа.

Роутер с таким значением pin-кода, как на рисунке 2, можно  взломать даже менее чем за час:

Рисунок  2.

Правда,  вряд ли  Вам удастся взломать, именно это устройство! Просто   потому что это мой роутер, и  вхожу  в 5 процентов  тех,  кто в курсе. Шучу! Кроме того, как вы видите  pin-код можно и поменять, остановившись на большем его значении!

Попутно  замечу, что не встречал ни в одной из статей по обсуждаемой уязвимости,  упоминания о том, что pin-код может быть не написан на корпусе, а выводится в одном из меню роутера (как мы видим в  случае на рисунке 2).

Переходим непосредственно к практике взлома. Я, повторяясь,  подробно опишу уже известный порядок.  Сделаем это, для того чтобы не отсылать вас на другие ресурсы. Если Вы впервые хотите «войти в тему» пусть будет все «в одном флаконе». Кроме того, такой подход поможет лучше понять мою мысль о том, почему обычному человеку трудно повторить атаку успешно по широко «разрекламированному» алгоритму.

1. Получим  в Интернете  какой-нибудь не очень древний набор BackTrack 5  (рисунок 3) и загрузим  Linux.  Причем все равно как мы это сделаем: установим набор на жесткий диск, или загрузимся,   сделав  загрузочный  компакт-диск (флешку), используя образ…

Рисунок  3.

2.В  нашем примере мы использовали   комакт-диск. Linux загрузился в режиме командной  строки. Для того чтобы загрузиться в графическом режиме наберем команду startx (рисунок 4):

Рисунок  4.

Возможно, что для вашей версии потребуется ввести пароль пользователя root (имя суперпользователя, под которым мы будем работать). Используйте тогда  пароль: <toor>.

Проверим наличие программы сетевой карты поддерживающей WiFI , для чего  первоначально войдем в терминальный  режим ( Aplications → Accessories→ Terminal, рисунок 5):

Рисунок  5.

Затем выполним команду:
iwconfig

По результату срабатывания  указанной команды видим, что WiFi-адатер он работает, и нужный нам  интерфейс будет обозначен как Wlan0 (рисунок 6):

Рисунок  6.

Убедимся, что  в состав набора входит программа для взлома reaver. Для этого  попробуем запустить  программу также в терминальной сессии (рисунок 7):

Рисунок  7.

Необходимо, чтобы программа reaver, реализующая взлом по уязвимости протокола WPS, входила бы в состав этого  дистрибутива, и чтобы она была не ниже  версии 1.4. Поэтому в п.1. мы говорили о том, что сборка BackTrack 5 (BT5)  не должна быть очень старой. Если программы нет,  Вам придется ее устанавливать, например,  так (способов вообще-то много):

2.1. Способ 1. Выполнить команды:
apt-get update
apt-cache search reaver
apt-get install reaver
Первая команда  обновляет  список доступных пакетов. Вторая позволяет проверит есть ли  reaver. Третья команда установит reaver

2.2. Способ 2. Выполнить команды:

svn cleanup reaver-wps
svn checkout http://reaver-wps.googlecode.com/svn/trunk reaver-wps

Часть скрин-шота от команды  svn checkout  приведена на рисунке 8:

Рисунок 8.

Далее нужно выполнить команды:
cd ./reaver-wps/src/
./configure
make
make install

«Перегрузим» сетевой интерфейс командами:
ifconfig wlan0 down
ifconfig wlan0 up

После каждой перезагрузки интерфейса будем проверять имя интерфейса присвоенного системой (команда iwconfig).

Понятно, что для установки программы нужно, чтобы у Вас было соединение с Интернет. Настраивается в меню: Aplication → Internet→Wicd Network Manager (рисунки 9,10):

Рисунок  9.

Рисунок  10.

Повторимся: эти шаги по установке вам вряд ли придется делать, так как в последних сборах нужная нам программа  присутствует!

3.В терминальном режиме запустим программу для перевода  интерфейса в режим монитора:

airmon-ng start wlan0

Получим результат (рисунок 11):

Рисунок  11.

4. Командой wash проверим наличие точек доступа, которые можно взламывать:

wash –i  mon0  

О том, что протокол WPS на роутере не блокирован, обозначено значением  <No> в столбце <MPS Locked> (рисунок 12):

Рисунок  12.

Необходимо понимать, что если по п.3 команда airmon-ng показывала имя монитора не mon0, а   mon1 (или какое-то другое), то  и в команде wash следует в качестве значения ключа ставить mon1 (или какое-то другое).  Напоминаем об этом, потому что  значение в имени монитора  цифра может каждый раз увеличиваться после перезагрузки сетевого  интерфейса (ifconfig wlan0 down, ifconfig wlan0 up).

5.Выбрав жертву  запустим команду  reaver,  указав MAC-адрес жертвы:

reaver  -i  mon0 –b 64:66:6С:58:D4:1C –c  4  –vv  --dh-small

Если все пойдет нормально, увидим обмен  пакетами с роутером для различных значений pin-кода, т.е. будет осуществляться брутфорс-атака (рисунок 13). Значение  подбираемого pin-кода будет все время увеличиваться.

Рисунок  13.

Что касается ключей команды  reaver,  то укажем некоторые, неочевидные, которые использовались  в нашем случае:

  • -с     -указывается  номер канала на котором работает роутер-жертва, чтобы не перебирать все каналы в поисках роутера (по результатам действия команды на рисунке 12 мы  видим, что для выбранной жертвы нужно указывать 4-ый канал);
  • -vv       -выводится  вся подробная информацию по работе команды reaver;
  • --dh-small        -убыстряется скорость работы, за счет того что используется небольшое значение секретного ключа.

Все другие ключи Вы  найдете в Интернете.

Оказалось что, дойдя до определенного значения подбираемого  pin-кода, не приходит никаких  ответов на все наши  запросы. Когда в течение нескольких часов мы уже начинаем понимать, что уже никаких ответов больше не получим дальнейшая атака не имеет смысла, используя комбинацию клавиш Ctrl+C, прерываем сессию (рисунок 14):

Рисунок  14.

Кстати, обратите внимание: при прерывании  - сессия взлома запоминается (Session saved), и впоследствии  ее возможно продолжить с этого же места.

Можно было бы подумать, что роутер просто «завис». Но, если начать взлом сначала, не используя запомненную сессию, для чего после повторения команды:

reaver  -i  mon0 –b 64:66:6С:58:D4:1C –c  4  –vv  --dh-small

на запрос об использовании запомненной ранее  сессии ответить <N> (no), мы с удивлением видим, что роутер по-прежнему работает и отвечает на наши запросы.

Аналогичная ситуация по «долгому  timeout» повторялась для любого из трех наугад выбранных роутеров, только значения pin-кода на которых они «затыкались» для каждого роутера было свое:

39525673 – для нашего роутера,
69975677 и 20630287 для двух других.

В чем же дело? Не знаю! Могу предположить, что  это хитрый прием защиты применяемый разработчиками роутеров. Да  это  сейчас и не  важно!

Важно то, что  продолжить атаку, обойдя  значение Pin-кода на котором мы застопорились, невозможно.  Просто потому, что программа не имеет ключа (или я просто его не нашел), с вводом которого мы могли бы начать атаку с нужного нам значения.  Ключ <pin> – не спасет, потому что он применяется для того, чтобы «долбится» на роутер с одним конкретным значением pin –кода.

Вспомним известный пример, о том, что делать  выводы на малом количестве испытуемого материала – дело опасное:

Возьмем первые попавшиеся нечетные цифры из общего числового ряда – 1,3,5, 7…
Пожалуй, достаточно (мы же взяли первые попавшиеся, да и не так уж мало). Что можно решить, проанализировав эту выборку? По результатам анализа  делаем ошеломляющий вывод (ошибочный): все нечетные цифры являются простыми (делятся только сами на себя и единицу)!
А ведь для того, чтобы не сделать ошибочного вывода, можно было просто случайно использовать другие, пусть,  примеру, следующие, четыре цифры: 9, 11, 13, 15…. Причем даже три цифры  можно было взять, девятка уже делится не только  сама на себя.

Тем не менее, не имея лаборатории, большого количества роутеров различных марок, и попробовав  взломать первых попавшихся в свободном пространстве три подходящих роутера, получив нулевой вариант  - все же рискнем сделать   вывод: на практике вероятность взлома роутеров WiFi близка к  0%!.  Если значение pin Для роутера не слишком маленькое (что редко), Вы просто рано или поздно дойдете до точки «затыка».
А сейчас вернемся немного в наших рассуждениях назад! Ранее, по публикациям в Интернете  мы  наивно думали:  взломаем все,  что попадется под руку! Таков уж общий настрой от этих публикаций. Об имеющейся проблеме  никто не пишет!

Таким образом,  мы ответили на Ваш вопрос, почему имея огромное количество статей  по этой теме, в основном скомпилированных от первоисточника, обычные пользователи на практике не могут осуществить якобы совсем простого взлома.

Да! Чуть не забыл: пользователь, немного  потыкавшись как слепой котенок, не очень то бежит рассказывать всем, что он пробовал, а ничего не получилось (боится – засмеют, осудят:  может не так что делал)! Как правило, он отложит все для «разборок» на потом. А позже понемногу интерес проходит, и он уже не возвращается к этой  теме.

С.А.Б.: Стоп! Стоп! Стоп! По Вашей логике получается  причина  неудач в том, что при обнаружении уязвимости, в печати или других средствах массовой информации, изначально появляется какая-то переводная статья (более близкая к теории чем к практике), а далее – как лавина размножаются скомпилированные на ее основе другие тексты…  В итоге,  потому что нет практики, нет реальности, у пользователей ничего не выходит… Тогда, если сейчас мы с Вами  не приведем какого- то решения, хотя бы для данного обсуждаемого случая (думаю, оно есть), никто не поверит, что я разговаривал с настоящим хакером! Чтобы доказать правдивость Ваших умозаключений  Вы просто обязаны поделиться! Большей части читателей нужен только взлом, а не разговоры о  его вероятности!

Graf_ Black: Опять Вы про хакера…. Сколько раз говорить – не хакер я! Лично я считаю хакерами тех людей, которые сами находят уязвимости и пишут соответствующие программы  для взлома с использованием найденных возможностей! Таких единицы! Все остальные те, кто пользуются этими программами:  либо шалунишки, либо просто откровенное  хулиганье! А может это просто любознательные (и таких немало)!
Конечно, взлом по указанной уязвимости все же возможен для тех 10 процентов, на которых мы остановились до перехода к практике…
Вообще-то роутеры взламывать не нужно! У меня есть много знакомых, которые ругают своего соседа (причем они его даже не знают в лицо), потому, что тот в очередной раз вовремя не заплатил провайдеру 1-го числа за Интернет, в результате  бедняги  пару дней не могли им (Интернетом) пользоваться.

Расскажу, как все же получить положительный результат. Но, обещайте, что все  будет использовано только в благих целях!

С.А.Б.: Обещаю за всех!

Graf_ Black: Перед нами стоит задача: как продолжить атаку с заданного значения pin-кода?! Как видно (рисунок 14) после прерывания сессии все необходимые данные куда-то записываются. Нужно просто найти это файл и исправить в нем значение для нашего злополучного примера с 39525673, скажем на 40000000, обойдя (с небольшим запасом) злополучное место!

Ищем файл. Оказывается  файлов два,  и расположены они по следующему пути:

/usr/local/etc/reaver/ 

Причем один файл с расширением wpc (название его числовое и соответствует MAC адресу роутера)  можно прочитать текстовым редактором, а другой, имеет расширение – db (reaver.db), и он  бинарный, структуры <SQLlite format 3> (это становится понятно по  надписи в теле фала при просмотре  каким-нибудь редактором).

В нашем наборе файл reaver.db можно просмотреть и редактировать программой sqlite, входящей в набор BackTrack 5 . Но, поскольку все делается с командной строки, чтобы не разбираться в синтаксисе этой программы, просто скопируем целиком весь каталог с файлами на любой, подмонтированный  раздел жесткого диска (при желании можно   перенести файлы и на другой компьютер). И, перезагрузившись в Windows, подберем в Интернете программу,  которая понимает формат SQLlite 3 (возможно есть какая-то графическая утилита и для Linux, но я не искал).  Установим бесплатную версию программы SqliteDog (сайт –  http://sqlitedog.com/ru/) . Откроем файл <reaver.db3>:

Оказывается, база данных включает в себя три таблицы:
- history
-  status
- survey

Устанавливая по очереди курсор на  название каждой из таблиц, используя правую клавишу мыши, просмотрим все таблицы, посредство меню  <Получить данные>  (рисунок 15):

Рисунок 15.

Внесем нужные нам изменения в таблицу history: значение 3958 заменим на 4000. Чтобы внести изменения  возымели действие, нажимаем  на прямоугольную кнопку  с плюсом (рисунок 16).

Рисунок 16.

Таблица survey тоже интересна, хотя в  ней нам ничего не нужно править (рисунок 17):

Рисунок 17.

В файле *.wpc   вносим изменения в 4-е цифры вначале файла, поменяв значение 3958 на 4000 (рисунок 18):

Рисунок 18.

 

Данные подготовлены. Вновь загружаем BackTrack 5. Возвращаем  измененные файлы в каталог /usr/local/etc/reaver/.  Если сомневаетесь – можете проверить права пользователя на файлы (доступны ли на изменение), но это вряд ли необходимо.

Повторяем команды:

airmon-ng start wlan0
wash -i mon0  

Вот незадача!  Пока мы возились c исправлениями базы данных reaver, пользователь роутера уже переместил его с 4-го канала на 9-ый.  Видимо атаки на WPS все же тормозят устройство, и хозяин решил, что помехи в 4-канале слишком велики. Поэтому это нужно будет учесть, указав  при продолжении атаки другой канал.

Ну и последний штрих, запуск reaver:

reaver  -i  mon0 –b 64:66:6С:58:D4:1C –c  9  –vv  --dh-small

Номер канала  в команде reaver уже исправлен на 9-ый. Соглашаемся продолжить сессию с  прерванного места (рисунок 19), ответив <Y>:

Рисунок 19.

Далее атака продолжится уже на  9-ом канале с нового, нужного нам значения pin-кода 40000000, обойдя место «затыка». И вот, наконец, после всех  манипуляций, долгожданный  результат получен (рисунок 20):

Рисунок  20.

Таким образом, кроме того, что была решена проблема, существующая при атаке на WiFi роутеры, вдобавок  фактически мы еще получили способ вести нападение, распределив необходимые временные затраты на части.  Это удобно, потому что, попытку взлома можно сделать более незаметной,  да и не нужно тратить двое суток непрерывной работы компьютера, если он еще  кому-то нужен в семье. Вот и все! Убедил ли я Вас, что взломать можно процентов десять роутеров?

С.А.Б.: Да, конечно!

Graf_Black:  Так вот:  я вам наврал! Пошутил я! На самом деле  все же эта цифра может доходить процентов до  30.  Во-первых,  описывалась  заведомо  наихудшая ситуация. Во-вторых, процент взломанных роутеров возрастет, за счет компьютеров, которые были исключены из зоны успеха  в связи с низким уровнем сигнала. В конце – концов,  можно было просто поиграть местоположением при взломе,  поставить специальную антенну, запитать ноутбук от автомобиля, и свершить «набег» в несколько приемов, чтобы не «торчать» двое суток возле  интересующего объекта.

С.А.Б.: Еще один вопрос?!

Graf_Black: Хорошо, но один, не больше! Никогда так не уставал!

С.А.Б.: Сколько Вам лет:

Graf_Black: 82 года мне!

С.А.Б.: Ого! Да Вы оказывается еще совсем молоды... Не побоюсь этого слова: Вы дали сейчас надежду новому поколению юных хакеров (будем надеяться - законопослушным, этичным хакерам). Оказывается что-то все же возможно сделать когда, казалось бы,  выхода нет. «Бороться и  искать, найти и не сдаваться...»!  Ох! Что-то я уже не туда.... Извините, тоже шучу! Удачи Вам и скорейшего  взросления!

ноябрь 2013, г.Кемерово