Это на 100% возможно. Для ttys/ptys (текстовый режим) самый простой способ - добавить шим к /bin /{ba, da, a} sh (например, второй сегмент .code, RX) и изменить точку входа (так же, как ELF). вирус бы). Запретив доступ к этому в этом случае, можно изменить ~ /.profile или ~ /.bashrc (и т.д.) В качестве очень простой гипотетической модели:
exec ~/.malicious_programme
который может загружать динамический код общего объекта, чтобы скрыть вредоносную программу (пример: разрешить чтение и модификацию .profile, но скрыть строку. И / или скрыть программу.)
Затем можно использовать систему UNIX98 pty(7) или даже просто pipe(2) для записи всего ввода в разветвленной оболочке, предполагая, что fd не помечен как FD_CLOEXEC, и даже изменить ввод пользователя в оболочку.
В X11, хотя kdm/gdm/xdm работают как root setuid (или эквивалент в возможностях [см. Setcap (8)] или любой другой модели безопасности, которую вы используете, если не по умолчанию), очевидно, что все становится более сложным. Можно ли повысить привилегии? iopl (2) или ioperm (2) облегчают жизнь благодаря прямому доступу к портам клавиатуры 0x60 / 0x64 на x86. Поскольку мы предполагаем, что вы не можете, мы должны искать альтернативный маршрут. Я знаю несколько, но я не совсем уверен, что вы хотите диссертацию о том, как это возможно и интерфейсы.
Достаточно сказать, что кольцо 3, троянские программы, не являющиеся суперпользователями, вполне возможны в * nix, несмотря на изоляцию процесса, в результате различных проблем (особенно с X), которые добавили функции для демонов пользовательского режима для предоставления, например, текста поддержка речи для всех приложений без ущерба для безопасности системы. Я уже обрисовал в общих чертах тот, который работает аналогично ttysnoops (срок действия которого истек), и для него не требуется root. У меня есть пример кода для этого случая (который будет включать в себя внутренние терминалы в X), но я еще не опубликовал его. Если вы хотите получить больше информации, пожалуйста, свяжитесь со мной.