Как стать автором
Обновить

Хождение по граблям в чистом поле или как собрать MAC-адреса близлежащих Wi-Fi-устройств

Время на прочтение11 мин
Количество просмотров29K
Всего голосов 32: ↑30 и ↓2+28
Комментарии44

Комментарии 44

Как-то видел компанию, которая похожие решения на MikroTik LtAP Mini LTE собирала и предлагала людям. Договорились, что они приедут к нам в офис и потом дадут список мак адресов наших айфонов. И на этом основании примем решение о приобретении. Ребята эти так и не приехали...

Спасибо за статью!
большое количество рекламных сетей позволяют таргетироваться по списку адресов устройств

вспомнив факт, что мобильные устройства, зачастую, для сокрытия своего истинного MAC-адреса генерируют локальные адреса
Мне лень ходить по ссылкам — проще спросить, потому что Вы знаете точнее, чем написано на каких-то заборах (о чем как раз Ваша статья).
Мой вопрос:
правильно ли я понимаю, что МАС генерируются рандомно, но их начало хотя бы соответствует вендору железки?

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

Необязательно. В MAC-адресе есть бит — признак локальности сгенерированного адреса. Другой бит отвечает за broadcast-вещание. Возможно, префикс действительно берется из исходного устройства (да, забыл написать, что в серверной инкарнации я импортировал себе справочники производителей и показывал, чье устройство источник адреса).

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

Очень просто. Рекламная платформа, как правило, знает ваш MAC-адрес (приложения Гугла и Яндекса есть почти на каждом смартфоне, равно как и привязка их к аккаунтам). Вы просто загружаете список адресов в рекламную сеть, они отбирают только те, что им известны, после чего на них можно настроить рекламную компанию. Можно посмотреть в самой первой ссылке на стартап — там у них на сайте все хорошо описано.

У Гугла есть такой интересный патент на этот счет — patents.google.com/patent/US9501777B1/en
Необязательно.
Извините мою тупость, и из статьи я не понял: весь этот таргетинг применим только для тех железок, которые не рандомят свои МАС-и?
Все так.
С учётом того, что этим уже занимаются Android (Starting in Android 8.0, Android devices use randomized MAC addresses when probing for new networks while not currently associated with a network), Apple и даже Windows — вы опоздали с такой штуковиной года на три-четыре.

Кроме того, много девайсов, использующих рандомный мак кладут болт на бит U/L, поэтому фильтрация по этому биту что мёртвому припарки.
Для пробы — да, используется рандомизация. Как только точка известна — соединение с ней происходит с применением реального адреса.

Поклание на U/L — это нехорошо, но я так понимаю, примерно с той же вероятностью рандомизация может быть и отключена.

Вообще-то вся статья писалась только ради первого и последнего предложения (как песня про выборы Шнура), но окей, опоздал так опоздал.
Это не так.
«In Android 10, MAC randomization is enabled by default for client mode, SoftAp, and Wi-Fi Direct.» — современные устройства уже ушли от работы с реальным MAC.

При этом, если вы посмотрите на большой хотспот с андроидами, то увидите, что второй бит там поголовно равен 0, а устройство сохранило OUI производителя. Т.е. на U/L положено на уровне дефолтных настроек как минимум андроида и эпла.
Я проверил на моем телефоне с Android 10 и нашел его MAC (отображается в настройках устройства) в списке захваченных. Не знаю, следует ли из этого делать какие-то обобщения, но не могу принять вашу категоричность.
Обобщения лучше делать из официальной документации, а не из частных случаев.
source.android.com/devices/tech/connect/wifi-mac-randomization?hl=ru

Там:
The System UI must… have MAC randomization enabled by default for all newly added networks.

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

Меня немного смутило:
. In Android 9, you can enable a developer option (it's disabled by default) to cause the device to use a randomized MAC address when connecting to a Wi-Fi network.


Я бы не стал доверять документации, она, порой, бывает весьма оптимистична и порой откровенно неточна. Практика, как правило, много разнообразнее.

Мой телефон вполне среднестатистический, известного китайского бренда (не Xiaomi). Возможно да, забили. А может быть и нет. Встроенная паранойя не дает повода для надежды. )
К слову, у меня под рукой лежал еще один телефон на Android 10 от Nokia. Его MAC тоже нашелся в списке найденных. Так что, похоже, тотальная рандомизация MAC еще не столь всеохватывающая. Свежей продукции Apple, увы, под рукой нет, проверить не могу.
Какой-то он уже устаревший — этот патент.
И здесь большая часть посвящена реализации передачи MAC адреса (понимать как: идентификатора устройства) веб-сайту.
Там на пятом рисунке очень интересная диаграмма, как раз про выдачу рекламы.
"… направив рекламную компанию на проходящих мимо пользователей, мы с большой долей вероятности получим новых посетителей"
Как вы собрались направлять на кого-то рекламную кампанию? С помощью раздачи им wi-fi? Встроить баннер в HTTP? Так зачем вам нужны MAC адреса? Если вы маленькая точка — то и ассортимент фиксирован, а если кто-то вроде М.Видео — да в жизнь не угадаете, зачем человек зашел — ноутбуки посмотреть или телевизоры.

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

А вы что хотите?
Я прям даже не знаю что ответить, кроме как «а с кем вы сейчас разговаривали?» )
Да вроде не ошибся. Вы собирались собирать MAC адреса, чтобы как-то таргетировать рекламу (я делаю тоже самое только двумя ESP8266 и для другой цели, однако диапазон сбора ограничен только частотой 2.4G). Вот и хотел уточнить, собрали вы адреса — а дальше?
А дальше до меня дошло. Эти MAC передаются рекламным сетям, которые крутят рекламу в мобильном приложении, а мобильное приложение уже знает MAC адрес.
Да, все так. Только MAC-адреса сопоставляются не мобильным приложениям, а конкретным пользователям. Реклама же может прилететь вообще из других каналов и устройств.
Впрочем, развлекаться — так по-полной.

Как вы собрались направлять на кого-то рекламную кампанию?

В рекламных сетях есть инструмент выбора аудитории, когда вы на всех жертв, доступных рекламной сети (вы пользуетесь Яндексом, Мейлом или Гуглем — поздравляю, вас посчитали), фильтруете по какому-либо признаку. Если рекламная сеть знает о принадлежности вам какого-либо устройства (а она знает, если у вас есть приложение с аутетифицированным аккаунтом), то она знает и MAC-адрес устройства. Например, так. Соответственно, рекламодатель может по списку MAC-адресов подобрать аудиторию и сказать «вот эту рекламу покажите этим пользователям». А дальше уже вопросы сети, как она это будет делать.

Да, отключение WiFi в публичных местах и использование блокировщика рекламы выключит вас из этого увлекательного процесса. Но это — нетипичное поведение. At mass определенная часть пользователей все же попадет «под раздачу». Разумеется, как потом их настигнет реклама заведения, мимо которого они ходят каждый день — головная боль рекламной сети.

Встроить баннер в HTTP?

Вы что-то путаете. Вышеописанное в статье устройство пассивно слушает эфир и собирает данные. Для встраивания в трафик необходимо завернуть на себя мобильное устройство (например, притворившись популярной открытой точкой доступа) и уже в этом случае можно говорить о каком-то встраивании через DPI или transparent proxy. Это другая интересная задача, впрочем, как вы верно отметили, абсолютно бесполезная вследствие повального использования HTTPS. Поэтому особо хитрые используют для этого captive portal непосредственно при подключении к точке доступа. А, поскольку анонимный доступ к публичному wifi запрещен законодательно, можно посредством captive portal и данных dhcp еще и выудить телефон подключенного пользователя. На особых параноиках не сработает, а вот с остальными не уверен.

Если вы маленькая точка — то и ассортимент фиксирован, а если кто-то вроде М.Видео — да в жизнь не угадаете, зачем человек зашел — ноутбуки посмотреть или телевизоры.

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

Стартап я понял, с рандомизацией MAC адреса он нежизнеспособен.

Вы не совсем правильно понимаете. Рандомизация MAC-адресов происходит при сканировании эфира в поисках новых точек доступа, к которым можно подключится. При наличии известной точки доступа рандомизация не используется, устройство работает на своем «родном» MAC-адресе.

Больше похож на какой-то развод, если честно.

Тут я не доктор. Но беглый гуглинг выдал пять штук аналогичных проектов. Особое впечатление произвело как эти ребята бодаются на ЦП.
>> Встроить баннер в HTTP?
>> Вы также пишите и " для своих клиентов, дабы раздавать интернет "
Я имел в виду: раздавать интернет и встроить баннер. Уточнял, т.к. целесообразности не вижу.

>> При наличии известной точки доступа рандомизация не используется, устройство работает на своем «родном» MAC-адресе.
Это я тоже знаю, сразу и написал ниже. И насколько ещё знаю, устройство не подключится к открытой неизвестной сети, пока вы явно не разрешите. Сначала будет уведомление. А за это время потенциальная жертва мимо вас уже пройдет, а если останется, с целью использования wi-fi — то, скорее всего это школьник-халявщик в торговом центре.

Это просто сужает аудиторию. Потом же ее можно будет сверху отполировать по возрасту и другим предпочтениям.

Сеть можно сделать и известной, например, с названием MT_FREE. В Москве многие используют WiFi в транспорте...

Действительно, тогда телефон к ней автоматически подключится и сольет реальный MAC. Но применимо только в «экосфере» Москвы.
Все чаще (в смысле новые устройства), пока телефон не подключен к известной ему WiFi сети, то он использует случайный MAC адрес. Возможно не полностью случайный, но узнать, что каждый день мимо вас проходит один и тот же человек не получится.
пока телефон не подключен к известной ему WiFi сети — он использует случайный MAC адрес.
А после обнаружения известной он признается во всем и перекрашивается обратно? А что, фильтры доступа по МАС все еще кто-то где-то всерьез использует? Именно учитывая этот модный нонче рандом…
… вопросы, вопросы, вопросы...
Пока да. Для удобства ещё как используется: по MAC адресам DHCP IP адреса назначает.
Все чаще (в смысле новые устройства), пока телефон не подключен к известной ему WiFi сети, то он использует случайный MAC адрес.

В москве есть MT_FREE, к сожалению, без пароля.
Да в общем-то не важно с WPA* она или нет — это одинаково поможет идентификации устройств там, где она есть всем желающим (MAC адреса не шифруются).
Для Orange pi платы есть вот такой проект.
Это мини линукс, типа OpenWrt для загрузки с spi flash. MicroSD не нужна.
У меня куча устройств на нем, от роутеров до ip-serial конвертеров.
Рекомендую попробовать.
Ага, спасибо, интересный проект.

Увы, у меня не было в тот момент OPI Zero с SPI-флешкой, они, вроде, стали их напаивать только в LTE-инкарнации. Поэтому пришлось MicroSD + Armbian.
Всё уже украдено до вас: evotor.ru/news/evotor-zapustil-dmp-na-oflajn-dannyh
У Эвотора сейчас более 600 тысяч Wi-Fi-сенсоров, расположенных не только в городах, но и в малых населенных пунктах. Это крупнейшая сеть Wi-Fi-сенсоров в стране.
Сниффер MAC-ов встроен как функция в онлайн-кассу. У которой хороший процессор и by design подключение к интернету, чтобы отсылать фискальные чеки в ФНС. А ещё касса стыкует данные о ваших покупках с вашим maс-адресом (если в чеке «Доширак», вас запишут в один сегмент, если икра — в другой).
Всё уже украдено до вас
да, только в гугл-маркете число установок смешное, а на самом сайте ссылки ведут не туда, а на начало страницы.
И ваще они мелкие совсем в сравнении с монстрами вроде
marketolog.mts.ru
target.megafon.ru
moskva.beeline.ru/business/services/beeline-prodvizhenie/sms-rassylka
msk.tele2.ru/business/option/sms-target-new
Но и цены тут другие, хе-хе…

А где цены высокие и технологии модные — там и tiktok.baza.io
МегаФон-таргет работает по другому принципу, он для другого. К телекомовским трекинговым технологиям я руку прикладывал, мне можно про них не рассказывать.

да, только в гугл-маркете число установок смешное


вы не понимаете. Сниффер стоит в кассе. Касс в России у Эвотора — 600 тыс. Если вам пробили чек, то ваш телефон посчитали. Если вы постояли у витрины — вас посчитали. Независимо от того, какие у вас там приложения стоят. Их авторам заплатили за то, что они поставили совершенно бесплатную AppMetrica или MyTracker, а они позаботятся о том, чтобы к вашему MAC подверстать ID в рекламных системах и куки.

Смотреть надо не в плей-маркет, а в target.my.com/segments/external, например.

аж жалко ребят, столько мучаются, собирают, чтобы показать мне потом то, что не пропустит adblock. Хотя, если их данные потом влияют на то, какие видео мне рекомендует ютюб, то усилия не напрасны.
Реклама — это частности; переживать вам стоит о том, что на основании этих данных решается, по какой ставке вам дать (или вообще не дать) ипотеку.

А не рассматривали возможность использовать андроид? Почему-то о нем ни слова. И да, очень понравился стиль изложения материала, приятно читать. Спасибо

Да, наверняка, можно использовать Android. Увы, у меня больше опыта с классическим Linux-ом и OpenWRT, поэтому выбор пал именно на них.

Спасибо.

Linux, aircrack-ng, OpenWRT… И все это для простейшей задачи сниффинга с фильтрацией по типу пакета?


Есть же ESP32 — готовая железка для этих целей. Относительно небольшой код на C++ (практически все в SDK уже есть).
Сам недавно подобное делал (ну точнее несколько большее по общему функционалу и для других целей).

С удовольствием прочитаю про ваш опыт. Где можно глянуть?

https://habr.com/ru/post/493412/
Там же ссылка на Git.
Одна из функций — это получение списка STA (как активно подключенных, так и просто включенных).


Одновременно сниф и доступ к данным снифа я не делал (не нужно было), но в принципе, это должно работать.

Ага, спасибо.
Ох… В своё время я пробовал почти точно такую же штуку сделать, только заказчику хотелось, чтобы устройство отгружало МАСи по мобильной связи. Взяли самую дешёвую железку — Orange Pi 2G-IOT. Это было очень зря, свои мытарства описал даже на Хабре: Orange Pi 2G-IOT: карта минного поля. Добиться стабильной работы так и не удалось. Вероятно, надо было бы просто взять любой модем и любую железку с вай-фаем, нормально работало бы, но на тот момент я не хотел закапываться в эту тему
Содержательный текст))



Я по названию сначала подумал что тут будет что то вроде эпизода из Кремниевой долины, но оказалось все немного проще.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории