Os usuários têm a garantia de indicar todos os usuários no host?

2

Eu tenho o que acredito ser uma pergunta muito básica sobre hosts Linux:

O comando users garante a indicação de todos os usuários no host ou existem maneiras de os usuários ocultarem o fato de estarem ativos no host nesse momento?

Se este último for o caso, alguém sabe de técnicas que os usuários podem usar para esconder seu usuário dos resultados na saída de comando dos usuários?

Qualquer ideia que outras pessoas possam oferecer sobre essa pergunta seria muito útil.

    
por duhaime 18.08.2018 / 03:20

3 respostas

1

O utilitário users é um programa muito pequeno escrito em C - são apenas cerca de 150 linhas de código. Como faz parte dos principais utilitários GNU , você pode baixar os utilitários e ler o código do arquivo users.c .

De fato, por padrão, o utilitário users é apenas o wrapper para utmp e wtmp . Existem duas abordagens básicas óbvias para esconder o fato de que um usuário está logado.

A primeira abordagem é alterar o código do utilitário users e substituir o binário /usr/bin/users .

A segunda abordagem é limpar os rastreamentos dos arquivos de log utmp , wtmp , lastlog , utmpx , wtmpx etc. que podem existir em sistemas * nix. Existem ferramentas de limpeza de log disponíveis para essa abordagem, como cloak , zap , clear etc. de" APÓS A QUEBRA-IN "em" HACKING UNIX ".

Naturalmente, há muitas outras maneiras de evitar gravar em utmp e wtmp arquivos para aplicativos e usuários específicos, leia este exemplo para ssh .

Algumas opções adicionais de log básico e comum para login podem ser configuradas no arquivo:

/etc/login.defs

Para entender melhor do ponto de vista do administrador e do usuário, onde users utility analisa suas informações, basta explorar os arquivos:

utmpdump /var/run/utmp
utmpdump /var/log/wtmp
sudo utmpdump /var/log/btmp

Além disso, preste atenção à nota em UTMP (5) e WTMP (5) homem:

Unlike various other systems, where utmp logging can be disabled by removing the file, utmp must always exist on Linux. If you want to disable who(1), then do not make utmp world readable.

The file format is machine-dependent, so it is recommended that it be processed only on the machine architecture where it was created.

Então, a resposta para a pergunta: 'É possível ocultar do utilitário users o fato de um usuário estar logado?', - é SIM, é possível. A abordagem definitiva depende da situação definida - depende do nível de acesso a um sistema * nix, etc.

    
por 18.08.2018 / 07:03
2

É trivial ser "capaz de executar comandos do sistema e ter acesso a arquivos do sistema" em um sistema sem aparecer no arquivo /var/run/utmp que users(1) lê.

$ ssh testhost sh

por exemplo, não cria nenhuma indicação de users em um Centos 7 testhost que alguém está executando sh , que é capaz de executar comandos do sistema e acessar arquivos do sistema:

# users
root
# pstree | grep -3 'sh$'
        |-sshd-+-sshd---sshd
        |      |-sshd---bash-+-grep
        |      |             '-pstree
        |      '-sshd---sshd---sh
        |-sssd-+-sssd_be
        |      '-sssd_nss
        |-systemd-journal

Outra maneira: execute um shell em alguma porta alta com socat ou algo assim. Outra maneira: execute um servidor da Web que aceite comandos, execute-os e retorne os resultados. Outra maneira: programar comandos antecipadamente com at(1) e depois efetuar o logout.

    
por 18.08.2018 / 04:37
0

Basicamente, sim. Isso inclui os logados fisicamente e de hosts remotos.

De man users :

Output who is currently logged in according to FILE. If FILE is not specified, use /var/run/utmp

O banco de dados utmp inclui char ut_host[UT_HOSTSIZE]; para informações de login do host remoto.

No entanto, no caso de o usuário não ter um shell de login, ele pode não aparecer em users output, como aparentemente foi o caso em esta questão .

    
por 18.08.2018 / 04:31