Comments 20
То ли статья обрывается, то ли я не понял: какой вывод и зачем это надо?
Тоесть вы только что нашли критичную ошибку ядра линукс(стандартные ps/psmisc не видят процесс, запущенный стандартным образом) и вот так свободно об этом на всеобщее обозрение выложили статью?
Замечательный метод для руткитов.
А побочные эффекты есть? Выделение памяти/ресурсов? renicing/schedulering? top что показывает при 100% загрузки ядра этим процессом например?
Замечательный метод для руткитов.
А побочные эффекты есть? Выделение памяти/ресурсов? renicing/schedulering? top что показывает при 100% загрузки ядра этим процессом например?
Чтобы это провернуть, надо сначала этот кастомный модуль ядра загрузить. А для этого уже нужны особые привилегии. Критической ошибкой не является.
Не особые, а рутовые. Но вопрос не в доступе к руту, есть куча других експлоитов. Вопрос в том, что процесс невидим после этого хака.
Если вы можете загрузить любой модуль ядра — считайте, что все в ваших руках. У вас есть тысяча и одна способов обмануть стандартные приложения, системы защиты, пользователей и получить полный контроль над системой.
Если вы можете загрузить модуль ядра, то вы уже можете всё. Вам даже не обязательно скрывать какой либо процесс, можно все желаемые действия выполнять из самого модуля.
Интересно, а это будет работать от имени простого пользователя? (Это же как нелегальная эскалация на кольцо 0 получается. Если PID/PPID можно изменить на 0. (Хотя в обоих случаях могу ошибаться.))
Никак, обычный пользователь не сможет загрузить такой модуль ядра.
Имеется ввиду после загрузки модуля рутом.
Зависит от прав, выставленных на устройство /dev/test. Если читать можно(модуль работает на чтение) то pid изменится. В планах реализовать смену pid через запись, найти бы нужную функцию для преобразования в число. Процесс в пользовательском пространстве, так и останется.
Ну если рут грузит в ядро код, который позволяет делать с ядром что угодно и кому угодно…
Никакой дополнительной защиты тут нет. Разработчики ядра считают что вы знаете что делаете.
Никакой дополнительной защиты тут нет. Разработчики ядра считают что вы знаете что делаете.
Знаете, я несколько сомневаюсь, что подобные эксперименты стоит выставлять на показ общественности, даже под тэгом 'ненормальное программирование'. Я уже молчу о большом количестве неточностей в матчасти, и сомнительном выборе в сторону модуля в качестве реализации.
А kill убивает невидимый процесс или нет?
Он его просто не находит
-bash: kill: (12345) - No such process
Вот это дыра :) Я понимаю, что если получен рут доступ — это считай компроментация всей системы. Но теперь можно его получить, затереть все следы и скрыть своё присутствие практически навсегда + сделать невозможным своё уничтожение.
Любопытное наблюдение, на ядре 4.13 (ubuntu) это сработало, а на ядре 4.9 (arch) нет. PID просто не поменялся.
Sign up to leave a comment.
Меняем PID процесса в Linux с помощью модуля ядра