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


13

Eu estava lendo a página de manualunzip e encontrei 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 segurança de não digitar senhas em texto não criptografado (e que elas terminem no histórico do shell) seja verdadeira, acho difícil acreditar que existam sistemas operacionais por aí onde qualquer usuário possa ver a linha de comando de qualquer outro usuário . Alguém poderia me dar um exemplo (sistemas legados incluídos)?


Eu acredito que ps, topetc. são a resposta para o UNIX.


driver de teclado)
STTR 07/02

@STTR Eu sei pouco sobre hardware, então não tenho certeza se o driver do teclado oferece a todos os usuários acesso igual e total, mas isso certamente não é um sistema operacional e não há nenhum tty anexado a ele.
4ae1e1

1
Apenas uma observação, se você deseja impedir que um comando entre no histórico do bash, anteceda o comando com um espaço.
Joshreesjones

Respostas:


4

Meu palpite seria que em sistemas Unix / Linux, o uso lsofpotencial pode expor a interação do usuário. A lógica é que lsofmostra uma lista de arquivos abertos no sistema. E, talvez, se alguém estiver descompactando um arquivo grande, ele ainda estará aberto por tempo suficiente para alguém perceber e depois espiar a atividade. Caramba, seria bastante trivial escrever um script Bash e executá-lo a cada minuto ou mais por meio de um trabalho cron para coletar um log contínuo da atividade de arquivo aberto.

Mas isso ainda soa falso para mim. Quero dizer lsof, potencialmente expõe algo como senhas embutidas do MySQL dessa maneira. Mas não sei se um usuário normal sem sudodireitos de root poderá ver a lsofatividade de outros usuários assim.


3
Você definitivamente está no caminho certo. Acho que lsofmostra arquivos abertos de outros usuários e você não precisa de privilégios elevados (testado no servidor da minha instituição). Da mesma forma, pse toprevele as linhas de comando de outros usuários.
4ae1e1 07/02

1
Eu verifiquei ainda mais as páginas de manual de ps, tope lsofe não encontrou nenhuma menção de privilégio. Há também a seguinte pergunta: como tornar um processo invisível para outros usuários? . Então, acho que as linhas de comando são realmente visíveis para todos nos sistemas UNIX. Hmm, grande surpresa.
4ae1e1

Eu descobri ttysnoope, conspyno entanto, não tenho certeza se eles exigem ou não privilégios de root.
Vinayak,

Quais são as opções a serem passadas para lsofque permitam ver o parâmetro da linha de comando? com, por exemplo, lsof -a +c0 /dev/nulleu consigo ver o nome do comando longo, mas não o parâmetro passado para o comando. Do que eu senti falta? :-)
Hastur 07/02

4

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

Provavelmente, isso também afetará vários sistemas do tipo Unix (Linux, sistemas BSD, Solaris etc.)

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, pois pode ser necessário. Mas nos dias anteriores no WinXP / Server2003 e versões anteriores, essas restrições podem ter sido mais frouxas. Há uma razão pela qual o NET USE começou a oferecer suporte a um asterisco e a solicitar 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 antemão, eu suspeitaria que vários TaskList, TList e PSList (todos distribuídos livremente pela Microsoft) provavelmente também suportem a capacidade de ver o que está acontecendo, independentemente de qual usuário esteja executando. Pelo menos, usuários com privilégios de administrador, o que era mais comum nos sistemas operacionais anteriores ao Vista. (No Win9x, o padrão geral era que todos os usuários tinham habilidades semelhantes a administrador.) Lembre-se de que o Info-Zip, que é a documentação que você está citando, é um pouco 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 preocupação tão grande. 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, não como uma violação negativa da segurança. Talvez uma pergunta mais aplicável seja: Existe algum sistema operacional multiusuário importante que não tenha suporte para que os usuários possam 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 as senhas em um arquivo e depois especificar esse arquivo na linha de comando. por exemplo:

type pwfile | command

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


1
Para ver os processos de outro usuário no Windows, você deve ser um administrador.
Moshe Katz

4

Algumas (e acredito que não todas) 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-P That_Password

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

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

    Correspondências binárias de arquivo / proc / 24695 / cmdline

    bem, se funcionar cat, funciona todo o resto com base em texto ...

  • pgrep -a zipa opção -a lista a linha de comandos completa e 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


@JakeGould Pelo menos em meus sistemas de comando como cat /proc/24695/cmdlinesaída dar sem espaços ...
Hastur

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.