Уязвимость в протоколе Wi-Fi Protected Setup

Discussion in 'Беспроводные технологии/Wi-Fi/Wardriving' started by gpuhash, 30 Dec 2011.

  1. Fioletovosyniy

    Joined:
    15 May 2019
    Messages:
    18
    Likes Received:
    37
    Reputations:
    1

    Дополнения по этому файлу:
    Отсеял отрицательные разности (когда пин-код большего BSSID меньше пин-кода меньшего BSSID):
    https://dropmefiles.com.ua/W954C8AD3
    Эта таблица составлена на основе данных из 3WiFi с помощью скрипта, и в ней большой разброс шагов сдвига. 195528 – это не минимальная разность
     
    TOX1C likes this.
  2. TOX1C

    TOX1C Elder - Старейшина

    Joined:
    24 Mar 2012
    Messages:
    914
    Likes Received:
    1,422
    Reputations:
    18
    Меньше только 49062, судя из выгрузки. Не буду гадать, это результат от попадания некорректных данных, или еще что-то.
    И эта разность, это не совсем разность получается, а некая битовая маска, которая неизвестно как формируется, и неизвестно как и на какие входные данные применяется.
    В hex формате все еще интереснее - pin коды на конце идут двумя парными гирляндами, 0-8-0-8-0-8-1-9-1-9-1-9-2-A-2-A-2-A, соответствуя MAC адресам, которые тоже идут парно для всей серии - это 0-8-0-8-0-8 или 1-9-1-9-1-9 в их конце.
    [​IMG]
    Для набора данных из предыдущего поста, это тоже справедливо. Несмотря на то, что после 6хххххх пошли 1хххххх пины. Зная примерную позицию роутера в этой "гирлянде", можно примерно подгадать, какое "добавляющее число" должно быть правильным, не перебирая все возможные варианты.
     
    Kakoluk, 4Fun, binarymaster and 3 others like this.
  3. Fioletovosyniy

    Joined:
    15 May 2019
    Messages:
    18
    Likes Received:
    37
    Reputations:
    1
    Если у кого есть желание купить роутер для тестов то алгоритм такой:
    1. Купить роутер любой из этих моделей: F3, F9, N301.
    2. Сделать снимок микропрограммы роутера из флешки SPI (NVRAM), воспользовавшись программатором.
    3. Найти значение заводского MAC-адреса в снимке и изменить его на произвольное (возможно, с таким же OUI, как у заводского).
    4. Прошить флешку получившейся микропрограммой.
    5. Запустить роутер и сбросить его настройки до заводских.
    6. Узнать, изменился ли заводской WPS пин-код.
    7. Если пин-код изменился – составить список MAC-адресов для исследования и сгенерировать файлы микропрограммы с MAC-адресами из списка. Почерёдно прошивать микропрограммы и записывать получившиеся WPS пин-коды.
     
  4. Fioletovosyniy

    Joined:
    15 May 2019
    Messages:
    18
    Likes Received:
    37
    Reputations:
    1
    У меня такое ощущение, что алгоритм устроен так: сначала вычисляется основание (предпологаю, оно вычисляется на основе OUI, то есть первых трёх байтов мака), а потом вычисляется шаг (по-другому разность) на основе NIC. Это предположение как раз объясняет то, почему у MAC-адресов с одинаковым NIC, но разными OUI разные пин-коды: основание отличается.
     
    TOX1C likes this.
  5. 4Fun

    4Fun Member

    Joined:
    25 Jul 2018
    Messages:
    7
    Likes Received:
    19
    Reputations:
    0
    Нашёл интересное место в выгрузке
    [​IMG]
    Видно, что шаг пин-кодов равен шагу BSSID, в связи с этим есть предположение, что его величина зависит от OUI (первых трёх байтов BSSID), ведь таких маленький шагов не встречается, к примеру, среди 04:95:E6* Хотя, может быть, такое не встречается среди 04:95:E6*, потому что там гораздо меньше записей в 3WiFi.
     
    #4625 4Fun, 18 Aug 2019
    Last edited: 18 Aug 2019
    Kakoluk, Andrey9999, TOX1C and 3 others like this.
  6. shk01nik

    shk01nik New Member

    Joined:
    18 Dec 2018
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Возможно ли запускать прошивки роутеров на MIPS-эмуляторе? Это избавило бы от необходимости искать алгоритм wps для каждой конкретной модели роутера. Просто запускаем прошивку на эмуляторе с нужным BSSID и узнаем сгенерированный пин.
     
  7. TOX1C

    TOX1C Elder - Старейшина

    Joined:
    24 Mar 2012
    Messages:
    914
    Likes Received:
    1,422
    Reputations:
    18
    В выгрузку попали некорректные данные, это mac2pin алгоритм, с генерацией от LAN MAC (он в роутере и прописан, BSSID генерируется от него).
    [​IMG]
    Для тенды f3, и может быть других тенд на броадкоме, с "генерацией" все просто. У них в памяти есть 3 области - одна с заводским файлом конфигурации, две других области - это пользовательский конфиг и его бекап. В заводском конфиге прописан MAC и PIN. Насколько я понял, при зажатой кнопке сброса роутер загоняет заводской конфиг в зону с пользовательским, и идет на перезагрузку. <-- ЭТИ СЛОВА КАК 100% ИСТИНУ НЕ ВОСПРИНИМАТЬ!!!

    С дешевым реалтеком все сложно, нестандартный набор инструкций и нет рабочего дизассемблера для него. С дорогим реалтеком, и дорогими двухдиапазонными тендами - ac6 ac9 ac10 и т.д. все должно быть легче. В этой статье автор потрошил немного другой девайс, но на том же процессоре https://habr.com/ru/post/460591/
    В базе их нет и не будет, доступ снаружи включается только тогда, когда сменен пасс админа, да и не все из них парсятся. А алгоритм с виду похож на искомый.
     
    #4627 TOX1C, 18 Aug 2019
    Last edited: 18 Aug 2019
    Kakoluk, hydra, V777 and 3 others like this.
  8. 4Fun

    4Fun Member

    Joined:
    25 Jul 2018
    Messages:
    7
    Likes Received:
    19
    Reputations:
    0
    Обновил выгрузку: отфильтровал левые данные (спасибо TOX1C за то, что указал на mac2pin), добавил новые записи из 3WiFi. Важное замечание: среди MAC-адресов с OUI C8:3A:35 встречается множество роутеров, у которых левые статические пин-коды, не подходящие под искомый алгоритм; к сожалению, я пока не смог их отфильтровать.

    Выгрузка, разделённая по OUI:
    https://mega.nz/#!au4ByIaI!FPxLo19HtUQWm-jSnqoA3X2GQkETLNPoL2f4j_L2cnI

    Вся выгрузка, отсортированная по BSSID:
    https://mega.nz/#!arwngYoQ!KIzaiK2UfcoWQXWRa6SEUgwQFkL_GV-u6fG6pu7STKY

    Отсортировано по NIC:
    https://mega.nz/#!mj4RRIRa!VYzPuviweHbcQHY9QcFfZ4JMu1NNicOua543G4XpKg4

    Отсортировано по пин-коду:
    https://mega.nz/#!H35jRIab!G7moMCPqI1vHsTAbjdC2HGnLu-UXRPff1ZbqdvqwgIo

    Отсортировано по BSSID и пин-коду:
    https://mega.nz/#!KmpzFYRZ!qU9S3XGUS7ZbU0jziWFQ3AxvliVB4N5RPTDmvBC1X80

    Отсортировано по NIC и пин-коду:
    https://mega.nz/#!fq5j1AYT!ml60K1DD2wRa_uy_jZoDZ93efnJGQpj8FDCWq-hyAQQ
     
    #4628 4Fun, 18 Aug 2019
    Last edited: 19 Aug 2019
    hydra, CRACK211 and Fioletovosyniy like this.
  9. 4Fun

    4Fun Member

    Joined:
    25 Jul 2018
    Messages:
    7
    Likes Received:
    19
    Reputations:
    0
    Похоже, что все роутеры Tenda с BSSID, оканчивающимися на нечётную цифру (как правило, 0+1 или 8+1), при генерации пин-кода используют MAC-адерс WAN, который на единицу меньше BSSID.
    Примеры таких роутеров:
    04:95:E6:00:35:39 (WAN MAC: 04:95:E6:00:35:38)
    04:95:E6:00:35:41 (WAN MAC: 04:95:E6:00:35:40)
    04:95:E6:00:35:79 (WAN MAC: 04:95:E6:00:35:78)
     
    binarymaster, hydra, CRACK211 and 2 others like this.
  10. TOX1C

    TOX1C Elder - Старейшина

    Joined:
    24 Mar 2012
    Messages:
    914
    Likes Received:
    1,422
    Reputations:
    18
    Или LAN MAC, для некоторых ADSL роутеров характерно. Положняк таков - реальные MAC адреса оканчиваются только на 0 или 8, других нет вовсе.
    Или немножко не так - берется сразу весь MAC адрес, и путем неизвестных операций с его частями, большое число, коим является мак адрес, превращается в число поменьше. Причем алгоритм сформирован так, чтобы для одной партии роутеров, сгенерировались все возможные комбинации пинкодов - от 0 до 9. А не как раньше было, когда для серии роутеров с отличием в последнем октете, первые 3 цифры пина не менялись. А тут взял в руки 2 роутера - а там пины различаются значительно - рандом, господа :D

    Максимум, за который алгоритм прокрутит весь пул возможных пинкодов от 0 до 9 - 51 роутер (если сдвигать постоянно на 195528).
    Минимум - не берусь гадать, бывают срывы последовательности. В теории - что-то около 30. Похоже на партию, которую отгружает завод.

    С нулём тоже не все так просто - алгоритм принципиально отказывается генерировать пинкоды с ведущими нулями - вместо них он пользуется 1. После срыва или переполнения, отсчет начинается с 1 и потом снова идут пины с 1. И только после этого начинаются пины на 2, 3, и т.д.

    Сейчас я пытаюсь понять, как из всех возможных вариаций для неизвестного пина, выбрать правильный. Восстановить недостающие в базе данные можно, но пока что далеко не для всех случаев.
    [​IMG]
     
  11. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    601
    Likes Received:
    3,582
    Reputations:
    154
    Формулу видели в таблице, которую я давно скидывал? При расчёте пина явно берётся остаток по модулю 10^7.
    С этим тоже всё просто - если сгенерированный пин меньше 10^6, к нему прибавляется 10^6. Для значений в таблице, я это уже подкорректировал.
     
    Kakoluk, binarymaster, TOX1C and 4 others like this.
  12. tamer44

    tamer44 New Member

    Joined:
    10 Sep 2018
    Messages:
    74
    Likes Received:
    3
    Reputations:
    0
    Hi binary master ,,,,thanks for your reply ,,,your words forced me to do all of my best to hack the password for this network unfortunately all the pins are not valid the correct pin is not listed and it was (50408054) the router type is (TD-W8960N) I want to tell you that for more than 1.5 year I am trying to hack this network without any result I performed evil twin attack against him more than 17 times but he did not even connect to the new network using the evil twin attack I forced him to change the SSID & the password but unfortunately he left his home so I did not catch the handshake for more than 20 days ,,,,on 12.08.2019 I found that he changed the SSID and password again and i catched it what I am going to say that for every user do not lose hope patience is a virtue
    thanks
     
    khamyk likes this.
  13. Fioletovosyniy

    Joined:
    15 May 2019
    Messages:
    18
    Likes Received:
    37
    Reputations:
    1
    Свежая выгрузка с базы, уже отсортирована эта выгрузка очищена от всех левых устройств

    https://dropmefiles.com.ua/WYXUCek4
     
    #4633 Fioletovosyniy, 23 Aug 2019
    Last edited: 23 Aug 2019
    4Fun and CRACK211 like this.
  14. TOX1C

    TOX1C Elder - Старейшина

    Joined:
    24 Mar 2012
    Messages:
    914
    Likes Received:
    1,422
    Reputations:
    18
    В основном, в выгрузке встречаются роутеры, у которых разница в MAC адресе между двумя роутерами составляет 8 бит. Но попадаются и роутеры, у которых эта разница 16 бит. И у них между PIN кодами такой же сдвиг, как и у "восьмибитных" роутеров. Хотя, если к некоему основанию потом добавляется сдвиг, который высчитывается из MAC адреса, и приводится к неким допустимым шагам сдвига, сдвиг у них должен быть одним из тех, который будет "через роутер" у "восьмибитных".
    Очень редко, между ними затесывается роутер, с совсем не тем пинкодом, что у соседних роутеров.
    [​IMG]
    Получается, что алгоритм, ответственыый за генерацию PIN кодов, и MAC адреса генерирует. Ну не может же быть так, что в качестве входного аргумента у генератора, служит MAC адрес предыдущего роутера. Или MAC и PIN генерируются от совсем другого основания - серийного номера роутера например; от для рождения китайца, который алгоритм сочинял, или от фазы луны...
    Или пары MAC и PIN создаются сразу же, для всей серии выпускаемых роутеров, и независимо друг от друга.
    Живой пример такого случая есть - это статическая последовательность PIN кодов у старых роутеров DIR-300, DIR-320 и т.д.

    Дальше бред и ахинея, можно не читать.

    Алгоритм работает с шестнадцатиричными данными, в диапазоне 0x000000 и 0xFFFFFF. Этот диапазон разбит на 2 секции, чтобы нагенерированное можно было представить десятеричным значением - для диапазона возможны 16 млн значений. И у него есть 2 переполнения: десятеричное, когда 9 сменяется на 1, и шестнадцатиричное - когда 6 сменяется на 1 (то, что я посчитал за срыв).
    Судя по данным, которые взяты из выгрузки 3wifi, если взять те последовательности PIN кодов, и попытаться их изобразить на графике, то получается некая хрень, похожая на аппроксимированную синусоиду, или что-то такое.
    [​IMG]
    Синусоида приведена только для наглядности, дабы показать ход PIN кодов в последовательности, не нужно к ней привязываться.

    Не покидает ощущение, что алгоритм работает по принципу подбора "ближайшего к заданному". На всем диапазоне от 0x000000 0xFFFFFF расставлены числа с равным интервалом, например 0x20000, 0x40000, 0x60000 и т.д. И есть алгоритм, у которого установлен константой минимальный шаг сдвига в виде 195528, и возможные добавки к нему, в виде +256, +512, +65536 (и почему-то, +1). Алгоритм пытается подобрать значение для генерируемого, как можно ближе к заданному, с переменным успехом.
    [​IMG]
    Этим, возможно, можно обьяснить "пилообразное" поведение добавляющего числа - докинув +65536 или чего побольше, точка окажется ближе к заданному, чем с +512, но потом приходится постоянно сдвигать следующие точки на минимальный интервал, пока заданное не "догонит" ушедшее вперед значение точки.
    Этим, наверное, возможно и объяснить ход pin кодов в обратную сторону. Китайцы могли сделать версию своего "Tenda Mass Production Tool"-а, в котором при ходе в обратную сторону, пин-коды тоже шли от большего к меньшему. А потом решили в этой утилите чего-то поменять, заодно и алгоритм подправили.
     
    Toroid, Fioletovosyniy, 4Fun and 3 others like this.
Loading...