LINUX.ORG.RU

Как запретить чтение системных ID программам?

 , ,


0

1

Привет, чат!

Два вопроса, от частного к общему.

Частный случай: есть проприетарная прога (сразу уточню, впопенсорцных анало говнет и не предвидится), которая для проверки активации использует мак-адрес сетевой карты, и если тот меняется, активация слетает. На ноутбуке с рандомизированным для приватности маком это, понятное дело, неудобно. Есть ли готовые решения, которые позволят эту херню убрать? Можно через eBPF перехватывать сисколлы или вставлять .so в процессы, но если кто-то уже сделал, будет круто узнать.

Добавлю, прога легально куплена мной, поэтому это вопрос исключительно удобства, к пиратству отношения не имеющий.

Общий вопрос: линукс позволяет юзерспейсным процессам вообще слишком много доступа к разным железным ID, начиная от тех же мак-адресов и заканчивая вагоном разных штук в /sys. Хуже того, с приходом dbus и systemd каждая система имеет уникальный /etc/machine-id за каким-то хером, который доступен вообще каждом программе. Есть ли какой-нибудь более-менее список этих трекеров и рецепты как их заткнуть, не сломав работу зависящего от них кода?

Спасибо, чат.



Последнее исправление: yorshka (всего исправлений: 1)

которая для проверки активации использует мак-адрес сетевой карты

Ну, не знаю, попробовать упаковать ПО в свой netns, пробросив туда tap и ему уже MAC какой надо задавать.

линукс позволяет юзерспейсным процессам вообще слишком много доступа

это куда-то в сторону песочниц/контейнеров/VM

более-менее список этих трекеров и рецепты как их заткнуть

вроде у firejail был какой-то набор шаблонов https://github.com/netblue30/firejail/tree/master/etc/profile-a-l
актуальность/правильность шаблонов сами смотрите, у всех хотелки более менее разные

Flotsky ★★★
()
Ответ на: комментарий от Flotsky

Ну, не знаю, попробовать упаковать ПО в свой netns, пробросив туда tap и ему уже MAC какой надо задавать.

Я думал об этом тоже, но настраивать отдельный роутинг внутри компа – это какой-то особенный геморрой. Плюс, если мне память не изменяет, netns ломает гуй, потому как вялянд и иксы всё ещё через unix sockets работают. Могу тут ошибаться.

это куда-то в сторону песочниц/контейнеров/VM

Тут скорее я весь пользовательский сеанс упаковать в такую песочницу. Зачем, например, юзерским процессам знать мак-адрес сетевухи и вообще зачем им знать о сетевых интерфейсах в принципе? Что они будут делать с этой информацией?

yorshka
() автор топика

Никак. Это даже в вебе не могут побороть. Там достаточно закешированной в фоне картинки, чтобы довольно долго отслеживать пользователя, и это только один из сотни способов трекинга. Собственно любая программа может сохранить случайный ID где-нибудь в .local и это будет вечным трекером, не нужен никакой /sys dbus /etc. В очередной раз порекомендую тупо запускать такое на отдельном ноутбуке, единственное достаточно простое решение, пусть там обследятся по самые гланды.

neumond ★★
()
Ответ на: комментарий от gagarin0

Поможет только если код проверки дёргает библиотеку через динамическую линковку. Но зачем так дёргать мак адрес, да ещё и выносить защиту из основного бинаря, я ХЗ.

anonymous
()
Ответ на: комментарий от neumond

Скорее всего он завязался на кучу параметров, один из которых мак.

anonymous
()
Ответ на: комментарий от ya-betmen

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

neumond ★★
()

Когда мне надо былр подменить id чтобы лицензия не терялась, использовал обычный bind mount. Если нужно локально для программы - мржно завернуть в mount namespace, либо запускать в chroot. Проверка собирала id в sysfs

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от neumond

Без рандома любой равшан в ларьке с шавухой узнает статистику по возврату клиентов. С рандомом нужно башлять гуглу или ябблу. Так что да, денег заработали.

ya-betmen ★★★★★
()

Что будет если mac будет все нули, реактивация пройдет? Вообще я видел что codex/claude с такими задачами справляются легко, главное чтобы тебе поверили, что ты действительно купил. Но вообще нужен какой-то софт, который завернет в свой chroot, и даст твой указанные mac-адреса. Вообще как вариант, если небольшие лаги UI не страшны (на самом деле их не должно быть если это не софт для обработки видео), можно просто завернуть в локальный контейнер, а потом по локалке окно с софтом открывать, плюс этого, что будет стабильно работать когда настроишь, а не какой-то скрипт, который сломается если они добавят дополнительную защиту.

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 2)

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

mogwai ★★★★★
()
Ответ на: комментарий от yorshka

Я думал об этом тоже, но настраивать отдельный роутинг внутри компа – это какой-то особенный геморрой.

Во-первых можно настроить bridge, т.е. обойтись без роутинга. Во-вторых роутинг всё же нужен для изоляции от WWW (зачем всем подряд юзерским процессам неограниченный доступ в WWW?)

Плюс, если мне память не изменяет, netns ломает гуй, потому как вялянд и иксы всё ещё через unix sockets работают.

ну тот же firejail же как-то работает ...

Тут скорее я весь пользовательский сеанс упаковать в такую песочницу.

Почему бы и нет. Но нужно что-то сделать с sysfs и devfs...

MirandaUser2 ★★
()
Ответ на: комментарий от neumond

Буквально твой уникальный айди, который ты носишь с собой и сообщаешь в открытую каждому вайфаю/снифферу вокруг.

То что в стране публичный вайфай по паспорту давно - это так, детали

Gary ★★★★★
()
Ответ на: комментарий от mittorn

Когда мне надо былр подменить id чтобы лицензия не терялась, использовал обычный bind mount. Если нужно локально для программы - мржно завернуть в mount namespace, либо запускать в chroot.

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

yorshka
() автор топика
Ответ на: комментарий от Gary

То что в стране публичный вайфай по паспорту давно - это так, детали

Это легко обходится, так-то. Запускаешь airodump, смотришь какие клиенты подключены к точке и реально гоняют трафик, берёшь мак и IP одного из клиентов. Профит.

yorshka
() автор топика
Ответ на: комментарий от neumond

Там достаточно закешированной в фоне картинки, чтобы довольно долго отслеживать пользователя

Того, что прога обо мне узнать, я как раз не боюсь, потому что я её блин у авторов купил за деньги. Они и там знают обо мне. Меня просто бесит постоянно слетающая активация, в данном случае.

Собственно любая программа может сохранить случайный ID где-нибудь в .local и это будет вечным трекером, не нужен никакой /sys dbus /etc.

Вот это вообще легко обходится. Делаешь overlayfs над какими-нибудь дефолтными read-only настройками и всё. Но, опять же, зачем нужно запускать такой код изначально, если боишься его?

yorshka
() автор топика
Ответ на: комментарий от yorshka

По хорошему нужно написать авторам проги и попросить сборку без чтения мак адреса. Либо можно попытаться примонтировать нужный мак адрес куда-нибудь в /sys/class/net/*/phy80211/macaddress. Ну то есть, точечно обходить конкретные проблемы.

Но, опять же, зачем нужно запускать такой код изначально, если боишься его?

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

neumond ★★
()
Ответ на: комментарий от Gary

Хорошо, выявили одного из возможных следящих, саму точку доступа. Как насчёт всех остальных, кто просто рядом стоит с телефоном? Как насчёт процесса сканирования или просто прослушки эфира, когда ещё никакого паспорта введено не было, но связка локация + мак адрес уже записана?

neumond ★★
()
Ответ на: комментарий от vbr

как минимум в networkmanager (если в комбайне запилили, то уж ручками не проблема) такое есть в интересах защиты детей пользователя от слежки (или что там актуально). так, что технология есть, есть ли от неё прок другой вопрос.

anonymous
()

Отломай у софтины проверку, да и всё. В РФ это даже законно, если, конечно, ты не собираешься распространять и тем более продавать свою копию с отломанной проверкой.

Stanson ★★★★★
()
Ответ на: комментарий от anonymous

По дефолту это не включено. Если включено - там и отключить. Скорей всего через GUI настройки какие-нибудь. Интересно, в каком это дистрибутиве может быть включено из коробки. В федоре какой-нибудь небось?

vbr ★★★★★
()
Ответ на: комментарий от neumond

Либо можно попытаться примонтировать нужный мак адрес куда-нибудь в /sys/class/net/*/phy80211/macaddress.

Кстати, нельзя. Прогнал strace, прога читает мак через ioctl.

ioctl(23, SIOCGIFHWADDR, {ifr_name="wlan0", ifr_hwaddr={sa_family=ARPHRD_ETHER, sa_data=36:5a:d2:fa:08:39}}) = 0

Что отдельный прикол, потому что если бы она читала из упомянутого тобой файла, там был бы постоянный вшитый в сетевуху мак. И проблемы бы не было. В любом случае, такое только через eBPF перехватывать и никак иначе придётся.

yorshka
() автор топика
Последнее исправление: yorshka (всего исправлений: 1)
Ответ на: комментарий от neumond

А где он хранит макадрес, с которым нужно сравнивать? Там криптография или в открытом тексте лежит?

Криптография. Мак и пачка других данных отсылаются на сервер, тот присылает подписанный ключ, соответствующий этим данным.

yorshka
() автор топика
Ответ на: комментарий от Stanson

Отломай у софтины проверку, да и всё. В РФ это даже законно, если, конечно, ты не собираешься распространять и тем более продавать свою копию с отломанной проверкой.

Законность меня мало волнует. А вот получить бан очень не хочется. Лицуха стоит 270 евро.

yorshka
() автор топика
Ответ на: комментарий от Stanson

Тогда виртуальная сетевуха с нужным MAC.

Поздно. Я уже сделал код на eBPF, который перехватывает пользовательские попытки читать мак-адреса и возвращает заранее заданный.

yorshka
() автор топика
Ответ на: комментарий от neumond

Давно уже рандомизированные маки у мобилок, пока не коннектишься к нужному роутеру.

anonymous
()
Ответ на: комментарий от yorshka

Зачем, например, юзерским процессам знать мак-адрес сетевухи и вообще зачем им знать о сетевых интерфейсах в принципе? Что они будут делать с этой информацией?

Файрфоксу, например, эта информация была нужна чтобы злонамеренно дропать запросы. Для исправления в итоге задействовал LD_PRELOAD с блокировкой доступа куда не положено.

firkax ★★★★★
()
Ответ на: комментарий от yorshka

такое только через eBPF перехватывать и никак иначе придётся.

По-моему LD_PRELOAD проще, вряд ли он напрямую сисколл вызывает, скорее всего там libc-функция.

firkax ★★★★★
()
Ответ на: комментарий от firkax

По-моему LD_PRELOAD проще, вряд ли он напрямую сисколл вызывает, скорее всего там libc-функция.

ioctl много где используется. LD_PRELOAD будет медленнее. Плюс, прога может обнаружить изменение этой переменной.

yorshka
() автор топика
Последнее исправление: yorshka (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария