Ссылка утеряна несколько лет назад, и кажись это было на hackforums. Предположили, что netgear, из-за внаглую сворованного веб-интерфейса, и некоторой вероятности того, что помимо веб-интерфейса украли еще что-то. Форум этот - подобие нашего ХАКЕР.РУ, так что к информации оттуда я серьезно не относился бы. У нетгиров алгоритм может быть и похож на тенду, только беда в том, что их очень мало в 3wifi. Их вполне хватает, как оказалось. Надо будет изучить поподробнее и эти устройства.
Интерфейс своровать я ещё понимаю, но своровать алгоритм он значит есть в прошивке или я чего-то не понимаю Даже если у нетгиров подобный алгоритм то это мало чем помогло бы. Я не очень понимаю что искать в целовом алгоритме для Тенд. У меня изначально была надежда найти первые Тенды в партии и посмотреть на их пин-коды, DeltaMAC, возможно что-то ещё, в рассчёте на то что будет что-то интересное. Переиспользование мак адресов это осложняет. Рытьё в прошивках дало мало толка - там ничего я не нашёл, возможно плохо искал. Кстати целевые тенды которые на eCos они не только на Lexra. Есть ещё версии на MIPS которыем можно покопать в дизасме. Если у кого есть идеи в каком направление копать под этот алгоритм то делитесь идеями.
Думаю, стоит поковырять, дабы окончательно удостовериться, вшит ли там пин в виде константы (ибо в противном случае, он обязан генерироваться). Х.з., может в Нетгирах и есть? 1. Найти две максимально длинные SolidChain (можно не совсем Solid) из разных партий (с разными точками начала отсчёта) и проанализировать пересечения между ними (если таковые будут иметь место) на предмет совпадения всей последовательности с момента пересечения. 2. Найти хотя-бы одну длинную SolidChain и исследовать периоды флуктаций различных битов-довесков (в надежде на их взаимонезависимость).
Тогда надо бы сделать выборку по Нетгирам и попробовать скормить её нашим генераторам для Тенды (походу, есть надежда, что буржуи побрезговали реюзать маки). Spoiler: Netgear OUIs Code: 00:09:5B Netgear 00:0F:B5 Netgear 00:14:6C Netgear 00:18:4D Netgear 00:1B:2F Netgear 00:1E:2A Netgear 00:1F:33 Netgear 00:22:3F Netgear 00:24:B2 Netgear 00:26:F2 Netgear 00:8E:F2 Netgear 04:A1:51 Netgear 08:02:8E Netgear 08:36:C9 Netgear 08:BD:43 Netgear 10:0C:6B Netgear 10:0D:7F Netgear 10:DA:43 Netgear 14:59:C0 Netgear 20:0C:C8 Netgear 20:4E:7F Netgear 20:E5:2A Netgear 28:80:88 Netgear 28:C6:8E Netgear 2C:30:33 Netgear 2C:B0:5D Netgear 30:46:9A Netgear 38:94:ED Netgear 3C:37:86 Netgear 40:5D:82 Netgear 44:94:FC Netgear 44:A5:6E Netgear 4C:60:DE Netgear 50:4A:6E Netgear 50:6A:03 Netgear 6C:B0:CE Netgear 74:44:01 Netgear 78:D2:94 Netgear 80:37:73 Netgear 84:1B:5E Netgear 8C:3B:AD Netgear 9C:3D:CF Netgear 9C:C9:EB Netgear 9C:D3:6D Netgear A0:04:60 Netgear A0:21:B7 Netgear A0:40:A0 Netgear A0:63:91 Netgear A4:2B:8C Netgear B0:39:56 Netgear B0:7F:B9 Netgear B0:B9:8A Netgear BC:A5:11 Netgear C0:3F:0E Netgear C0:FF:D4 Netgear C4:04:15 Netgear C4:3D:C7 Netgear CC:40:D0 Netgear DC:EF:09 Netgear E0:46:9A Netgear E0:91:F5 Netgear E4:F4:C6 Netgear E8:FC:AF Netgear F8:73:94 Netgear
Я посмотрю в нетгирах. Если роутеры прошиваются на заводе то буржуи из нетгир должны на завод давать и утилиту для генерации пин-кодов, по идее . На заводе можно своровать или скопировать утилитку.
Подробный разбор DeltaPIN_8 1. Первое приближение. Для наглядности, пока отбросим младшие 3 цифры дельты, т.е., разберём DeltaHalf_8 (что не совсем корректно, но, тем не менее, познавательно). Вот все обнаруженные варианты: Code: +-----------+---------+------+ | DeltaHalf | Signed_ | n | +-----------+---------+------+ | 0195 | +195 | 1954 | | 0261 | +261 | 814 | | 0196 | +196 | 193 | | 9195 | -805 | 47 | | 4418 | -5582 | 30 | | 9261 | -739 | 29 | | 1195 | -8805 | 25 | | 0326 | +326 | 11 | | 1261 | -8739 | 10 | | 4483 | -5517 | 9 | | 4484 | -5516 | 6 | | 1196 | -8804 | 3 | | 9196 | -804 | 3 | | 9419 | -581 | 1 | | 0327 | +327 | 1 | | 9858 | -142 | 1 | | 8884 | -1116 | 1 | +-----------+---------+------+ 17 rows in set (0.00 sec) (два полседних варианта я считаю случайным вбросом). Как видим, положительных дельт всего 5. И минимальную из них (+195) можно считать основой, а все остальные есть основа+довесок (довески могут быть сложными--состоять из нескольких битов, и разбираться с ними следует на полных, а не на халф-дельтах). Идём дальше: дельты 1195,1196 и 1261, а также 9195,9196 и 9261 есть частные случаи для 195, 196 и 261 соответственно, природа которых мне известна (могу рассказать подробнее). Таким образом, истинно-отрицательных дельт у нас всего три: 4418, 4483 и 4484 (и, похоже, ещё 9419). (продолжение следует)
Это так не работает. Если пин-код вшит в прошивку – он статичный. Иначе он может быть вшит в раздел загрузчика или в так называемую NVRAM. Но если взять прошивку с сайта производителя (не дамп, считанный программатором с флеш-памяти), то в ней не получится найти эти данные, т. к. если пин-код записывается в какой-либо из разделов, то делается это на заводе индивидуально для каждого устройства. Что касается части целевых устройств, которые я смог загрузить в Ghidra: это модели на eCos и SoC Realtek RTL8196E: N301, F3, F9, F300 и FH456. Хочу сказать пару слов о том, как загрузить прошивку такой Тенды в Гидру. Получение образа Есть 2 варианта: 1) зайти на официальный сайт, выбрать модель и перейти в раздел загрузок; 2) искать образы (и, что важно, дампы флеш-памяти) на просторах интернета. Распаковка При анализе binwalk'ом видна примерно такая картина: Spoiler Распаковываем прошивку (binwalk -e) и определяем архитектуру CPU (RTL8196E — это MIPS 32 big endian): Spoiler И чтобы окончательно убедиться, что перед нами исполняемая часть eCos, анализируем её binwalk'ом. Должна выглядеть примерно так (начинается с eCos excetion handler): Spoiler Если работаете с дампом флеш-памяти, а не с образом с сайта производителя, то при распаковке будет другая картина (появится ещё несколько частей): Spoiler В таком случае берите участок, сжатый с LZMA, который имеет больший размер. Ну а также для подстраховки проанализируйте его инструкции, чтобы определить архитектуру (binwalk -Y): должна быть MIPS 32 BE. Загрузка в Ghidra Создайте новый проект, перетащите файл исполняемой части eCos в окно Гидры и, когда появится окошко, выберите Language MIPS:BE:32:default:default Spoiler: окошко Spoiler: выбор архитектуры CPU Нажмите ОК, запустите анализ, дождитесь окончания анализа (это может занять около 15 минут).
Или в так-называемый Non-vol и т.п. И для прояснения ситуации, само-собой, желательно иметь полный дамп. 3) слить дамп самому
Потенциальные дубли, с налезающими друг на друга пинкодами?? 032х - тоже подлые дубли, или что-то имеющее место быть? Они хоть и очень редкие, но больше похожи на довесок к 195528 (2FBC8h + 20000h = 4FBC8h, т.е. 326600 и так далее), нежели на попавшийся дубль. Желательно с примерами mac и pin, которые к месту были бы и для остальных примеров дельт-"неформалов". С этим нужно копать в сторону экспериментального генератора, точнее с его инструментами для работы с выгрузкой. Вместо тех фильтров, которые есть сейчас, нужен рекурсивный парсер, основанный как раз на этих минимальных, 100% достоверных дельтах. С перекрестными проверками после каждой итерации. Затея сулит огромными профитами: - Возможность работы с многострадальным диапазоном C8:3A:35, с которым сейчас нельзя ничего сделать из-за горы нецелевых устройств, дублей, статических пинов, и невалида. 17 мегабайт полезных данных, лежит мертвым грузом. - Получение достоверных дельт для генератора, вычисленных, а не собранных. Шанс попадания мусора из-за недочищенной выгрузки должен быть куда ниже. - Получение solidchain длиной из всех роутеров в серии, в теории. - И исходя из вышесказанного - исправление ошибки из прошлого. Всего лишь одна фотография наклейки, превратит сотни безликих Tenda Realtek и Tenda 11N во вполне осмысленные Tenda N304 и Tenda F3, к примеру.
Генерация пин-кода в D-Link DWR-932B. https://pierrekim.github.io/blog/20...-vulnerabilities.html#weak-wps-pin-generation
Если кто захочет разобраться с генерацией пин-кодов на TP-LINK то неплохой идеей будет посмотреть на Mercysys. Mercysys - это бренд туполинков и у них есть странности с генерацией пин-кода. https://3wifi.stascorp.com/find?bssid=38:6B:1C:0*:*:*
Внутри группы со схожими пинами (скажем, 674....) разница между пинами равна разнице между суммой всех (или последних 3, по крайней мере) октетов BSSID.
Ещё бы знать, откуда берутся эти группы. Поглядеть бы выборку с моделями... PS А добавили бы колонку с моделью в стандартной выборке--цены бы Вам не было!
Пин-коды причём повторяются, вот пины из групы 674 https://3wifi.stascorp.com/find?bssid=◯&pin=67487363 https://3wifi.stascorp.com/find?bssid=◯&pin=67487509 https://3wifi.stascorp.com/find?bssid=◯&pin=67487608
А с чего бы им не повторяться при таком алго? PS А выборку кто-то уже сделал? Интересно: сколько всего известно констант-точек отсчёта?
Просьба к @binarymaster, @Felis-Sapiens и другим админам 3wifi (если таковые существуют): пожалуйста, поищите в базе другие OUI с этой уязвимостью, и сделайте по ним выборку с моделями устройств. Как-то так: Code: SELECT OUI, COUNT(DISTINCT(PIN))/COUNT(DISTINCT(PIN-CONV(LEFT(NIC,2),16,10)-CONV(MID(NIC,4,2),16,10)-CONV(RIGHT(NIC,2),16,10)))>2 y FROM [TABLE] GROUP BY OUI HAVING y ORDER BY OUI;
А картина не так проста, как ожидалось: 1) константы бывают и сингл-, кросс-модельными; 2) и как мажорными, так и минорными (возможно, это не миноры, а просто не дефолтные пины, но некоторые из них уж очень похожи на мажоры!) 3) кросс-OUI констант пока не выявлено, но данных для этого проанализировано слишком мало (всего 6 устройств из трёх малочисленных OUI и 3 костанты соответственно) Выборка по OUI C0:A5D и C8:E78 может прояснить ситуацию. А пока: Code: +---------+-----+---+-----------------------------------------------------------------+ | const | n | m | Models | +---------+-----+---+-----------------------------------------------------------------+ | 2732971 | 113 | 3 | 305R, hardware: 1.0 | 305R, hardware: 2.0 | 325R, hardware: 2.0 | | 6324054 | 33 | 3 | 301R, hardware: 1.0 | 305R, hardware: 2.0 | 305R, hardware: 1.0 | | 1418951 | 29 | 2 | 301R, hardware: 1.0 | 301R, hardware: 2.0 | | 214517 | 26 | 2 | 301R, hardware: 1.0 | 301R, hardware: 2.0 | | 6739656 | 21 | 2 | 301R, hardware: 1.0 | 305R, hardware: 1.0 | | 1672762 | 9 | 2 | 301R, hardware: 1.0 | 301R, hardware: 2.0 | | 2877196 | 4 | 2 | 301R, hardware: 1.0 | 301R, hardware: 2.0 | | 6748288 | 262 | 1 | 301R, hardware: 2.0 | | 3032128 | 144 | 1 | 301R, hardware: 2.0 | | 1198183 | 76 | 1 | 301R, hardware: 2.0 | | 2299773 | 70 | 1 | 301R, hardware: 2.0 | | 7198110 | 39 | 1 | 305R, hardware: 2.0 | | 9288922 | 23 | 1 | 305R, hardware: 2.0 | | 5107645 | 22 | 1 | 301R, hardware: 2.0 | | 1782372 | 15 | 1 | 301R, hardware: 2.0 | | 5874232 | 14 | 1 | 301R, hardware: 2.0 | | 5737450 | 6 | 1 | 325R, hardware: 2.0 | | 9686483 | 5 | 1 | 325R, hardware: 2.0 | | 2980878 | 4 | 1 | 305R, hardware: 2.0 | | 324127 | 3 | 1 | 301R, hardware: 2.0 | | 7782299 | 3 | 1 | 305R, hardware: 2.0 | | 1144728 | 2 | 1 | 325R, hardware: 2.0 | | 4538175 | 2 | 1 | 305R, hardware: 1.0 | | 6321639 | 2 | 1 | 325R, hardware: 2.0 | | 8639731 | 2 | 1 | 325R, hardware: 2.0 | | 1144979 | 1 | 1 | 325R, hardware: 2.0 | | 1198192 | 1 | 1 | 301R, hardware: 2.0 | | 1419512 | 1 | 1 | 301R, hardware: 2.0 | | 1419669 | 1 | 1 | 301R, hardware: 2.0 | | 1419818 | 1 | 1 | 301R, hardware: 2.0 | | 1639824 | 1 | 1 | 301R, hardware: 1.0 | | 1781942 | 1 | 1 | 301R, hardware: 1.0 | | 1782255 | 1 | 1 | 301R, hardware: 1.0 | | 2300391 | 1 | 1 | 301R, hardware: 2.0 | | 2733061 | 1 | 1 | 305R, hardware: 1.0 | | 3616317 | 1 | 1 | 301R, hardware: 2.0 | | 4191216 | 1 | 1 | 325R, hardware: 2.0 | | 4863394 | 1 | 1 | 325R, hardware: 2.0 | | 6740099 | 1 | 1 | 301R, hardware: 2.0 | | 6740167 | 1 | 1 | 301R, hardware: 2.0 | | 7097342 | 1 | 1 | er MW300R rebranded | | 3288806 | 2 | 0 | NULL | | 6776076 | 2 | 0 | NULL | | 9884461 | 2 | 0 | NULL | +---------+-----+---+-----------------------------------------------------------------+ 44 rows in set (0.01 sec) +---------+-----+---+-----------------------------------------------------------------+ | const | n | m | Models | +---------+-----+---+-----------------------------------------------------------------+ | 214517 | 26 | 2 | 301R, hardware: 1.0 | 301R, hardware: 2.0 | | 324127 | 3 | 1 | 301R, hardware: 2.0 | | 1144728 | 2 | 1 | 325R, hardware: 2.0 | | 1144979 | 1 | 1 | 325R, hardware: 2.0 | | 1198183 | 76 | 1 | 301R, hardware: 2.0 | | 1198192 | 1 | 1 | 301R, hardware: 2.0 | | 1418951 | 29 | 2 | 301R, hardware: 1.0 | 301R, hardware: 2.0 | | 1419512 | 1 | 1 | 301R, hardware: 2.0 | | 1419669 | 1 | 1 | 301R, hardware: 2.0 | | 1419818 | 1 | 1 | 301R, hardware: 2.0 | | 1639824 | 1 | 1 | 301R, hardware: 1.0 | | 1672762 | 9 | 2 | 301R, hardware: 1.0 | 301R, hardware: 2.0 | | 1781942 | 1 | 1 | 301R, hardware: 1.0 | | 1782255 | 1 | 1 | 301R, hardware: 1.0 | | 1782372 | 15 | 1 | 301R, hardware: 2.0 | | 2299773 | 70 | 1 | 301R, hardware: 2.0 | | 2300391 | 1 | 1 | 301R, hardware: 2.0 | | 2732971 | 113 | 3 | 305R, hardware: 1.0 | 305R, hardware: 2.0 | 325R, hardware: 2.0 | | 2733061 | 1 | 1 | 305R, hardware: 1.0 | | 2877196 | 4 | 2 | 301R, hardware: 1.0 | 301R, hardware: 2.0 | | 2980878 | 4 | 1 | 305R, hardware: 2.0 | | 3032128 | 144 | 1 | 301R, hardware: 2.0 | | 3288806 | 2 | 0 | NULL | | 3616317 | 1 | 1 | 301R, hardware: 2.0 | | 4191216 | 1 | 1 | 325R, hardware: 2.0 | | 4538175 | 2 | 1 | 305R, hardware: 1.0 | | 4863394 | 1 | 1 | 325R, hardware: 2.0 | | 5107645 | 22 | 1 | 301R, hardware: 2.0 | | 5737450 | 6 | 1 | 325R, hardware: 2.0 | | 5874232 | 14 | 1 | 301R, hardware: 2.0 | | 6321639 | 2 | 1 | 325R, hardware: 2.0 | | 6324054 | 33 | 3 | 301R, hardware: 1.0 | 305R, hardware: 2.0 | 305R, hardware: 1.0 | | 6739656 | 21 | 2 | 301R, hardware: 1.0 | 305R, hardware: 1.0 | | 6740099 | 1 | 1 | 301R, hardware: 2.0 | | 6740167 | 1 | 1 | 301R, hardware: 2.0 | | 6748288 | 262 | 1 | 301R, hardware: 2.0 | | 6776076 | 2 | 0 | NULL | | 7097342 | 1 | 1 | er MW300R rebranded | | 7198110 | 39 | 1 | 305R, hardware: 2.0 | | 7782299 | 3 | 1 | 305R, hardware: 2.0 | | 8639731 | 2 | 1 | 325R, hardware: 2.0 | | 9288922 | 23 | 1 | 305R, hardware: 2.0 | | 9686483 | 5 | 1 | 325R, hardware: 2.0 | | 9884461 | 2 | 0 | NULL | +---------+-----+---+-----------------------------------------------------------------+ 44 rows in set (0.01 sec)