там написано, что у пользователя нет UID
Я конечно с этим согласен. Пользователь, определяемый как «злонамеренный пользователь, запускающий что-то на сервере», не имеет UID, но это потому, что этот пользователь — это человек, который может (возможно) запускать что-то под разными UID на вашем компьютере (с этого момента я буду придерживаться к термину «агрессор»).
Таким образом, правильный путь — попытаться выяснить, какой путь выбрал злоумышленник, чтобы получить контроль над процессом на вашей машине, который может выполнять
fork()
иexec()
. Это довольно хорошая отправная точка, потому что, в конце концов, успешная атака начинается с получения контроля (возможно, очень запутанным способом) над процессом, который может это сделать. То, как злоумышленнику удается добраться до этой точки, зависит от атаки.Тем не менее, канонический ответ о том, что делать со скомпрометированным сервером, состоит в том, чтобы уничтожить его с орбиты. Это больше не ваш компьютер, и вы не можете быть уверены, какой доступ получил злоумышленник. Если злоумышленник получил привилегии root, то вы можете также подключиться к виртуальной машине, работающей на том, что когда-то было вашим сервером. Или вы даже можете иметь дело с руткитом.
(Примечание: "nuke from orbit" означает "новая установка" для большинства людей)
Вернемся к основному вопросу:
почему имя пользователя не имеет UID?
Или лучше подразумеваемый текстом вопроса:
(как процесс работает без UID?)
Идея, что процесс работает без UID, абсурдна.Структура ядра, которая поддерживает существование процесса (фактически KSE), содержит поле UID, которое необходимо заполнить (даже если оно заполнено хламом в случае, скажем, ошибки ядра). Поэтому каждый процесс всегда имеет UID.
Скорее всего, вы имеете дело с тем, что UID не указан в
/etc/passwd
, что, хотя и странно для процесса, ничем не отличается от выполненияtouch leet; chown 1337 leet
(при условии, что у вас нет пользовательского leet с таким UID). Практически все стандартные инструменты *nix работают с UID так же, как и с именами пользователей. т.е.lsof -u username
эквивалентно
lsof -u `id -u username`
И
find . -user username
также эквивалентно
find . -user `id -u username`
. Поэтому вернемся к первой цитате (выделено мной):
говорится , что у пользователя нет UID
. ] Что бы там ни было it, это не стандартный инструмент *nix. Или вы действительно более облажались, чем думаете, и работаете внутри какой-то довольно странной среды, созданной злоумышленником.