it-swarm-pt.tech

Visualização ao vivo dos comandos do Linux Shell executados por outro usuário?

É possível que o usuário root no Linux tenha uma visualização em tempo real (ou quase em tempo real) dos comandos do Shell sendo executados por outro usuário conectado através de um terminal ou SSH? Obviamente, eles são armazenados em .bash_history, mas isso só é salvo quando o usuário efetua logoff e também pode ser desativado.

Edit: idealmente algo que pode ser facilmente ligado e desligado.

28
EMP

como root, você pode substituir o Shell deles por um script de wrapper simples que registrou seus comandos antes de passá-los para o Shell real. Isso só funcionaria antes do login.

17
Tim Howland

Use sniffy se desejar invadir a sessão do usuário ou screen -x se você tiver cooperação.

Lembre-se de que a espionagem de seus usuários pode estar sujeita a regulamentos ou até mesmo ser ilegal, dependendo da legislação local.

9
David Schmitt

Mudar o Shell é muito trivial para contornar, é melhor corrigir o próprio Shell, mas você precisa corrigir todos os shells. Nosso cracker favorito usa isso, como bônus, ele não se incomoda em desativar o bash_history.

ssh Host /bin/sh -i  

Snoopy é um invólucro em torno das funções exec e registra qualquer binário externo que é executado (não embutido no Shell)

A sugestão de @David Schmitt sniffy usa um método melhor, ele toca no pseudoterminal.

ttysnoop usa o mesmo método, mas não é mantido. (Eu provavelmente tive problemas para fazer o log de conexões ssh, não me lembro)

Você pode tentar corrigir o ssh para registrar uma sessão, mas esse patch é antigo.

pseudópode e rootsh pode ser usado para registrar sudos legítimos. E shwatcr é outra coisa para monitorar logins.

7
hayalci

Sysdig é uma ferramenta poderosa de exploração em nível de sistema - é isso que você deseja;)

exemplo:

sysdig -i spy_users

Categoria: Segurança

spy_users Exibir atividade interativa do usuário

lista todos os comandos que os usuários iniciam interativamente (por exemplo, do bash) e todos os diretórios que os usuários visitam

4
Andrzej Chabierski

Se você estiver cooperando, poderá usar tela GN entre dois usuários - faça com que um estabeleça a sessão de tela e faça com que o outro participe usando screen -x.

Se você deseja que o root "espie" outros usuários sem o conhecimento deles, a melhor e mais eficiente solução pode ser o software/hardware do keylogger.

4
Tim

Você pode tentar o patch bash-BOFH. Procure pelo patch.

2
squillman

Eu escrevi um método para registrar todos os comandos/bash 'bash' em um servidor de arquivo de texto ou 'syslog' sem usar um patch ou uma ferramenta executável especial.

É muito fácil de implantar, pois é um shellscript simples que precisa ser chamado uma vez na inicialização do 'bash'.

Veja o método aqui: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger

1
Francois Scheurer

Snoopy destina-se ao log de comando leve.

Se você deseja visualizar ao vivo os comandos executados no seu sistema, pode ser isso. Aviso: o snoopy não é uma solução de auditoria adequada e pode ser facilmente contornado.

No entanto, se você deseja ver todos os caracteres digitados no terminal, precisará usar outra ferramenta.

Divulgação: Eu sou atual mantenedor do Snoopy.

1
Bostjan Skufca
function spy() { 
   ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] [email protected] ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] [email protected] ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

Parece funcionar muito bem se você não se importa em classificar várias quebras de linha.

1
Jessica Parker