¿Qué sistemas operativos multiusuario permiten que un usuario vea la línea de comando actual de otros usuarios?


13

Estaba leyendo la página de manual deunzip , y me encontré con lo siguiente

-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.

Si bien la precaución de seguridad de no escribir contraseñas en texto claro (y hacer que terminen en el historial de shell) es, por supuesto, cierta, me resulta difícil creer que existan sistemas operativos en los que cualquier usuario pueda ver la línea de comandos de cualquier otro de usuario . ¿Podría alguien darme un ejemplo (sistemas heredados incluidos)?


Creo ps, topetc. son la respuesta para UNIX.


controlador de teclado)
STTR

@STTR Sé poco sobre hardware, por lo que no estoy seguro de si el controlador de teclado brinda a todos los usuarios acceso igual y completo, pero ciertamente no es un sistema operativo y no hay ningún tty conectado a él.
4ae1e1

1
Solo una nota, si desea evitar que un comando entre en el historial de bash, preceda el comando con un espacio.
joshreesjones

Respuestas:


4

Supongo que en los sistemas Unix / Linux el uso lsofpodría exponer la interacción del usuario. La lógica es que lsofmuestra una lista de archivos abiertos en el sistema. Y quizás si uno está descomprimiendo un archivo enorme, entonces todavía estaría abierto el tiempo suficiente para que alguien lo note y luego observe la actividad. Diablos, sería bastante trivial escribir un script Bash y ejecutarlo cada minuto más o menos a través de un trabajo cron para recopilar un registro continuo de actividad de archivo abierto.

Pero eso todavía me suena falso. Quiero decir lsof, expone potencialmente algo como las contraseñas MySQL en línea de esta manera. Pero no estoy al 100% en cuanto a si un usuario normal sin sudo/ derechos de root podría ver la lsofactividad de otros usuarios como ese.


3
Uh, definitivamente estás en el camino correcto. Creo que lsofmuestra archivos abiertos de otros usuarios y no necesita privilegios elevados (probado en el servidor de mi institución). Del mismo modo, psy toprevelar las líneas de comando de otros usuarios.
4ae1e1

1
Luego revisé las páginas de manual de ps, topy lsofno encontré ninguna mención de privilegio. También está esta pregunta: ¿Cómo hacer que un proceso sea invisible para otros usuarios? . Así que supongo que las líneas de comando son visibles para todos en los sistemas UNIX. Mmm, gran sorpresa.
4ae1e1

Me enteré ttysnoopy, conspysin embargo, no estoy seguro de si requieren o no privilegios de root.
Vinayak

¿Cuáles son las opciones para pasar lsofque permiten ver el parámetro de la línea de comando? con, por ejemplo, lsof -a +c0 /dev/nullpuedo ver el nombre del comando largo pero no el parámetro pasado al comando. ¿Qué me perdí? :-)
Hastur

4

Unix permite "ps". Además, Unix comúnmente tiene un comando "w" que mostrará qué usuarios están ejecutando. "w" normalmente puede cortar comandos basados ​​en el tamaño del terminal, pero eso puede ser anulado. (Una forma fácil puede ser simplemente usar un terminal más ancho).

Esto probablemente también afectará a múltiples sistemas similares a Unix (Linux, sistemas BSD, Solaris, etc.)

Creo que Microsoft Windows también lo mostraría en el Administrador de tareas. Bueno, tal vez eso sea menos común con Windows Vista y Control de cuentas de usuario, ya que puede ser necesario el Control de cuentas de usuario. Pero en el pasado en WinXP / Server2003 y anteriores, tales restricciones pueden haber sido más laxas. Hay una razón por la cual NET USE comenzó a admitir un asterisco y luego solicitó al usuario una contraseña. Con:

WMIC /NODE:ComputerName PROCESS LIST

un usuario probablemente ni siquiera necesita estar en la misma computadora para ver un comando que se ejecuta. Por otro lado, sospecharía que varios de TaskList, TList y PSList (todos distribuidos libremente por Microsoft) probablemente también admitan la capacidad de ver lo que está sucediendo, independientemente de qué usuario se esté ejecutando. Al menos, usuarios con privilegios de administrador, que era más común en los sistemas operativos anteriores a Vista. (En Win9x, el estándar general era que todos los usuarios tenían habilidades de administrador). Tenga en cuenta que Info-Zip, que es la documentación que está citando, es bastante más antiguo que WinXP. De improviso creo que es más antiguo que Win95.

Con los sistemas multiusuario más antiguos, el secreto no era una gran preocupación. Poder ver lo que está haciendo la computadora, incluidos los comandos que otros usuarios estaban ejecutando, probablemente fue visto como una característica positiva, no una violación negativa en la seguridad. Quizás una pregunta más aplicable es: ¿Hay algún sistema operativo multiusuario que no sea compatible con los usuarios para poder ver qué comandos se ejecutan en la computadora?

El enfoque más seguro es nunca poner contraseñas confidenciales en una línea de comando. Otra opción puede ser poner contraseñas en un archivo y luego especificar ese archivo en la línea de comando. p.ej:

type pwfile | command

Al menos de esa manera, los permisos basados ​​en la implementación del sistema de archivos probablemente ofrecerán cierta protección.


1
Para ver los procesos de otro usuario en Windows, debe ser administrador.
Moshe Katz

4

Algunas (y no creo) todas las formas de Linux para ver el comando zip -PThat_Password ...de otro usuario sin privilegios de root :

  • cat /proc/24695/cmdline si el PID es 24695 ...

    zip-P That_Password

    Nota: Sin espacios, pero es posible adivinar la contraseña.

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

    Archivo binario / proc / 24695 / cmdline coincide

    bueno, si funciona cat, funciona todo lo demás basado en texto ...

  • pgrep -a zipla opción -a enumera la línea de comando completa, así como la ID del proceso. (no siempre disponible en la versión anterior [por ejemplo, <2008] de pgrep)

    24695 zip -P esa_contraseña

y, por supuesto, la operación mencionada

  • 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 esa respuesta con algo como

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


@JakeGould Al menos en mis sistemas el comando como cat /proc/24695/cmdlinedar salida sin espacios ...
Hastur

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.