>>я просто для других напишу: LD_PRELOAD решает в данном случае задачу не только закрепления в системе.
> Этот хак с LD_PRELOAD работает с правами обычного пользователя с правами которого
> запущен или root необходим в принципе?Напоминаю Unix-way: каждая программа хорошо делает своё дело.
1. "эксплоит" - получает права;
2. руткит - закрепляется в системе, скрывает присутствие, осуществляет атаку "человек посередине" - всё это решается одним махом - _документированным_ и предназначенным именно для этого способом, т.е. не хаком, как это было бы в случае инъекций кода в чужие адресные пространства.
> Если без рута ни как вообще, то твои опасения безпредметны, и судя
> по тому как твой оппонет делал такие вещи таки права рута
> необходимы, иначе бы сейчас тварился полный абзац с вирусами.
"Оппонент" пока что не нашёл ничего лучше чем убеждать меня, что мы с коллегой не написали 15 лет назад реализацию стандартной библиотеки Си++, которая позволяет собирать std::cout << "hello" в 25кб исполняемый файл без зависимостей от C runtime. То есть скатился до отрицания объективной реальности.
Не надо уподобляться ему - изучайте вопрос. Начать можно так:
1. вбиваем LD_PRELOAD в поисковик
2. тыкаем наобум ссылку на журнал Ксакеп https://xakep.ru/2020/12/29/ld_preload-rootkit/
3. читаем:
К примеру, если нам нужно предзагрузить библиотеку ld.so, то у нас будет два способа:
Установить переменную среды LD_PRELOAD с файлом библиотеки.
Записать путь к библиотеке в файл /etc/ld.so.preload.
В первом случае мы объявляем переменную с библиотекой для текущего пользователя и его окружения. Во втором же наша библиотека будет загружена раньше остальных для всех пользователей системы.
Далее перепроверяем. Есть документация https://man7.org/linux/man-pages/man8/ld.so.8.html
LD_PRELOAD
A list of additional, user-specified, ELF shared objects
to be loaded before all others. This feature can be used
to selectively override functions in other shared objects.
Есть исходники...