it says that the user does not have a UID
Eu certamente posso concordar com isso. Um usuário como definido por "usuário malicioso executando coisas em um servidor" não tem um UID, mas isso é porque esse usuário é uma pessoa que pode (talvez) executar coisas como UIDs diferentes em sua máquina (a partir de agora eu vou ficar para o termo "atacante").
Portanto, o caminho correto é tentar descobrir qual caminho o invasor tomou para controlar um processo em sua máquina que poderia executarfork()
e exec()
. Esse é um bom ponto de partida porque, no final do dia, um ataque bem-sucedido começa por ganhar controle (possivelmente de uma maneira muito complicada) de um processo que pode fazer isso. Como o invasor consegue chegar a esse ponto é o que varia no ataque.
Dito isto, a resposta do sobre o que fazer com um servidor comprometido é eliminá-lo da órbita . Não é mais seu computador, e você não pode ter certeza de quanto acesso o invasor conseguiu. O invasor conseguiu privilégios de root, assim como você pode se conectar a uma VM em execução no que já foi seu servidor. Ou você pode até estar lidando com um rootkit.
(Nota: "nuke de órbita" significa uma "nova instalação" pela maioria das pessoas)
Voltar para a pergunta real:
why the username does not have a UID?
Ou melhor, o implícito pelo texto da pergunta:
(how a process is running without an UID?)
A ideia de que um processo está sendo executado sem um UID é um absurdo. A estrutura do kernel que mantém a existência de um processo (na verdade, o KSE) contém um campo UID que deve ser preenchido (mesmo se for preenchido com lixo no caso de, digamos, um bug do kernel). Portanto, todo processo sempre tem um UID.
O mais provável é que o UID não esteja listado em /etc/passwd
, o que, apesar de estranho para um processo, não é diferente de fazer touch leet; chown 1337 leet
(supondo que você não tenha um usuário leet com esse UID, isso é). Praticamente todas as ferramentas * nix padrão funcionam em UIDs como em nomes de usuários. ou seja,
lsof -u username
é equivalente a
lsof -u 'id -u username'
e
find . -user username
também é equivalente a
find . -user 'id -u username'
Portanto, de volta para a primeira citação (ênfase minha):
it says that the user does not have a UID
Qualquer que seja o it , não é uma ferramenta padrão * nix. Ou você está realmente mais ferrado do que acredita, e está rodando dentro de um ambiente estranho criado pelo atacante.