Quais sistemas operacionais multiusuários permitem que um usuário veja a linha de comando atual de outros usuários?

13

Eu estava lendo a página de manual de unzip , e correu para o seguinte

-P password
       use password to decrypt encrypted zipfile entries (if  any).   THIS
       IS  INSECURE!   Many  multi-user operating systems provide ways for
       any user to see the current command line of any other user; even on
       stand-alone systems there is always the threat of over-the-shoulder
       peeking.
Embora a precaução de não digitar senhas em texto puro (e fazer com que elas acabem no histórico do shell) é realmente verdade, acho difícil acreditar que existam sistemas operacionais por aí onde qualquer usuário pode ver a linha de comando de qualquer outro usuário . Alguém poderia me dar um exemplo (sistemas legados incluídos)?

Acredito que ps , top , etc. são a resposta para o UNIX.

    
por 4ae1e1 07.02.2015 / 02:32

4 respostas

4

Meu palpite seria que em sistemas Unix / Linux usando lsof poderia potencialmente expor a interação do usuário. A lógica é que lsof mostra uma lista de arquivos abertos no sistema. E, talvez, se alguém estiver descompactando um arquivo enorme, ele ainda estará aberto por tempo suficiente para que alguém perceba e depois espie a atividade. Heck, seria bastante trivial escrever um script Bash e executá-lo a cada minuto ou mais por meio de um cron job para coletar um registro contínuo da atividade de arquivos abertos.

Mas isso ainda soa falso para mim. Quero dizer lsof potencialmente expõe algo como senhas inline do MySQL desta forma. Mas não tenho 100% de saber se um usuário normal sem sudo / root poderia ver lsof de atividade de outros usuários assim.

    
por 07.02.2015 / 08:31
4

O Unix permite "ps". Além disso, o Unix geralmente possui um comando "w" que mostrará o que os usuários estão executando. "w" normalmente pode cortar comandos com base no tamanho do terminal, mas isso pode ser substituído. (Uma maneira fácil é simplesmente usar um terminal mais amplo).

Isso provavelmente também afetará vários sistemas semelhantes ao Unix (Linux, sistemas BSD, Solaris, etc.)

Eu acredito que o Microsoft Windows também mostraria isso no Gerenciador de Tarefas. Bem, talvez isso seja menos comum no Windows Vista e no Controle de Conta de Usuário, já que o Controle de Conta de Usuário pode ser necessário. Mas nos dias anteriores ao WinXP / Server2003 e anteriores, essas restrições podem ter sido mais frouxas. Há uma razão pela qual o NET USE começou a suportar um asterisco e depois solicitou uma senha ao usuário. Com:

WMIC /NODE:ComputerName PROCESS LIST

um usuário provavelmente nem precisa estar no mesmo computador para ver um comando que é executado. De improviso, eu suspeitava que múltiplos de TaskList, TList e PSList (todos distribuídos gratuitamente pela Microsoft) provavelmente também suportam a capacidade de ver o que está acontecendo, independentemente de qual usuário esteja rodando. Pelo menos, os usuários com privilégios de administrador, que era mais comum em sistemas operacionais pré-Vista. (No Win9x, o padrão geral era que todos os usuários tinham habilidades como Administrador.) Lembre-se de que o Info-Zip, que é a documentação que você está citando, é bem mais antigo que o WinXP. De improviso, acho que é mais antigo que o Win95.

Com sistemas multiusuários mais antigos, o sigilo não era uma grande preocupação. Ser capaz de ver o que o computador está fazendo, incluindo os comandos que outros usuários estavam executando, provavelmente foi visto como um recurso positivo, e não como uma violação negativa na segurança. Talvez uma pergunta mais aplicável seja: Existe algum sistema operacional multiusuário importante que não ofereça suporte aos usuários para ver quais comandos são executados no computador?

A abordagem mais segura é nunca colocar senhas confidenciais em uma linha de comando. Outra opção pode ser colocar senhas em um arquivo e, em seguida, especificar esse arquivo na linha de comando. por exemplo:

type pwfile | command

Pelo menos dessa forma, as permissões baseadas na implementação do sistema de arquivos provavelmente oferecerão alguma proteção.

    
por 08.02.2015 / 07:09
4

Algumas (e eu acredito que nem todas) as maneiras do Linux de ver o comando zip -PThat_Password ... de outro usuário sem privilégios de root :

  • cat /proc/24695/cmdline se o PID for 24695 ...

    zip-PThat_Password

    Nota: É sem espaços, mas é possível adivinhar a senha, no entanto

  • grep -H -e "zip" /proc/[0-9]*/cmdline

    Binary file /proc/24695/cmdline matches

    bem, se funciona cat funciona tudo o resto texto baseado ...

  • pgrep -a zip a opção -a lista a linha de comando completa, bem como o ID do processo. (nem sempre disponível na versão antiga [por exemplo, < 2008] de pgrep )

    24695 zip -P That_Password

e, claro, o op mencionado

  • ps -aux | grep zip

    That_User 24695 1.9 0.0 15012 1192 pts/40 T 12:37 0:45 zip -P That_Password

  • top -c -b -n 1 | grep zip essa resposta com algo como

    24695 That_User 20 0 15012 1192 820 T 0.0 0.0 0:45.12 zip -P That_Password

por 07.02.2015 / 11:24
1
ps ax

no Unix / Linux e similares.

    
por 07.02.2015 / 10:59