¿Qué tan seguro es usar nombres de directorios secretos para compartir archivos en unix?

0

Hay un viejo truco en los sistemas UNIX para permitir que un usuario no root pueda compartir archivos "de forma segura" con otros usuarios en particular.

mkdir share
chmod 711 share #others can traverse share, but can't list its contents
mkdir share/d2ef7c19-5d7e-446f-ab97-d7d6c3dc8a8c #(randomly chosen secret subdir name)
cp -R /path/to/stuff_to_share share/d2ef7c19-5d7e-446f-ab97-d7d6c3dc8a8c
chmod -R 755 share/d2ef7c19-5d7e-446f-ab97-d7d6c3dc8a8c #allow others who know the secret path to access shared files

EDITAR (aclaración): tengo que decirle a la gente que quiero compartir archivos con la ruta secreta (en este caso, ~ myid / share / d2ef7c19-5d7e-446f-ab97-d7d6c3dc8a8c) para compartir los archivos con ellos.

Mi pregunta es: ¿qué tan seguro es esto? Si un tercero (no root) no conoce el nombre secreto del recurso compartido (en el ejemplo anterior: d2ef7c19-5d7e-446f-ab97-d7d6c3dc8a8c), ¿hay alguna forma de que puedan informarlo?

    
pregunta Joe 07.07.2016 - 20:27
fuente

2 respuestas

0

Bueno, dijiste que cualquier significa.

No es eficiente, pero uno de los medios para hacer esto sería escanear continuamente todos los procesos en ejecución en un sistema (en particular si espera que alguien acceda a un archivo en unos momentos) e inspeccione todos sus argumentos para encontrar rutas que coincidan con las Directorio base del recurso compartido. Una vez que se encuentra una coincidencia, imprime el resultado.

La esperanza aquí es que el elemento de acceso esté usando un comando que toma la ruta del archivo como un argumento.

EDIT: esto funciona para mí en procesos de ejecución algo más larga como vim, dd o catting un archivo grande.

#!/usr/bin/python
import glob, re

share = re.compile('.*myshare.*')

while True:
  procs = glob.glob('/proc/*/cmdline')
  for p in procs:
    try:
      with open(p) as cmdline:
        cmd = cmdline.read()
        if share.search(cmd):
          print cmd.replace('
#!/usr/bin/python
import glob, re

share = re.compile('.*myshare.*')

while True:
  procs = glob.glob('/proc/*/cmdline')
  for p in procs:
    try:
      with open(p) as cmdline:
        cmd = cmdline.read()
        if share.search(cmd):
          print cmd.replace('%pre%', ' ')
    except OSError:
      pass
', ' ') except OSError: pass

No se recupera tan rápido como 'tocar' en su forma actual. Potencialmente, podría aumentar sus posibilidades forjando muchos procesos que realizan la misma búsqueda y / o sobrecargando los recursos de la CPU para aumentar la longitud de ejecución de los procesos de destino, aunque en Linux debido al programador y al agrupamiento automático, esto todavía es un poco difícil.

Este programa no funciona si hidepid = 1 o hidepid = 2 es la opción de montaje proc en uso. Esto no es un valor predeterminado en la mayoría de las distribuciones disponibles.

    
respondido por el Matthew Ife 07.07.2016 - 22:05
fuente
1

Esto se denomina " Security by Obscurity " y no es una forma confiable de ocultar archivos. Hay muchas herramientas que pueden buscar en todo un sistema de archivos e indexar los archivos, independientemente de los permisos que asignes a una carpeta con nombre aleatorio.

Has confundido a un adversario que no sabe algo con ellos al no poder aprenderlo. En su ejemplo, en realidad no está haciendo nada para evitar que alguien que obtiene el nombre de la carpeta incluya una lista y lea el contenido. Una vez que el nombre deja de ser secreto, la plantilla está arriba. Esto es diferente a una contraseña, ya que las contraseñas se almacenan en un hash de una sola dirección, mientras que los nombres de las carpetas están en texto claro en el sistema de archivos.

Una analogía: tienes una casa, con una puerta, y quieres evitar que la gente camine por la puerta. Puede mover la puerta a algún lugar difícil de encontrar en la casa que no sea visible simplemente caminando alrededor del exterior. Pero no hay nada que impida que alguien presione varias partes de su casa para encontrar la puerta.

O bien, puede colocar la puerta en un lugar obvio, pero evitar que alguien la abra con una cerradura.

    
respondido por el zymhan 07.07.2016 - 20:35
fuente

Lea otras preguntas en las etiquetas