У меня есть веб-сервер, из-за устаревшего Wordpress какой-то хакер загрузил веб-оболочку. Посредством этого он запустил процесс, но команда ps не показывает имя для процесса:
root@serv ~ # ps aux|grep " 326 "
us432 326 0.0 0.0 25032 4476 ? S Aug27 0:16
root 3334 0.0 0.0 16656 2092 pts/2 S+ 14:58 0:00 grep 326
Из-за этого я не мог обнаружить проблему до сегодняшнего дня.
Операционная система сервера - Debian 8 с Apache и PHP 7. Веб-сайт работает под непривилегированным пользователем.
Я искал, как запустить процесс без имени или как удалить его имя во время выполнения, но ничего не нашел.
Кто-нибудь знает, как такое возможно?
Заранее спасибо.
Во-первых, предложение: поскольку вы знаете PID, используйте ps -p
чтобы указать конкретный PID. Моя стандартная команда goto - ps -fp <pid>
.
Я предполагаю, что имя исполняемого файла состоит из непечатных символов, чтобы его было сложно найти или изменить. (Все символы допустимы в именах файлов на * nix; некоторые из них просто трудно правильно экранировать.) Чтобы отобразить эти скрытые символы, попробуйте ps -fp 326 | cat -vet
. Я использую пневматическое устройство «отведи мою кошку к ветеринару», чтобы запомнить те флажки, на которых отображаются все непечатаемые символы. Тот же трюк можно использовать, например, с ls
вывод, чтобы обнаружить, что имя файла, который вы не можете удалить, заканчивается символом табуляции.