Quanto è sicuro usare i nomi di directory segrete per condividere file su unix?

0

Esiste un vecchio trucco sui sistemi unix per consentire a un utente non root di condividere "in sicurezza" file con particolari altri utenti.

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

EDIT (chiarimento): Devo dire alle persone che voglio condividere i file con il percorso segreto (in questo caso, ~ myid / share / d2ef7c19-5d7e-446f-ab97-d7d6c3dc8a8c) per condividere i file con loro.

La mia domanda è: quanto è sicuro questo? Se una terza parte (non root) non conosce il nome della condivisione segreta (nell'esempio sopra: d2ef7c19-5d7e-446f-ab97-d7d6c3dc8a8c), c'è un modo per apprenderlo?

    
posta Joe 07.07.2016 - 20:27
fonte

2 risposte

0

Bene, hai detto qualsiasi mezzo.

Non è efficiente, ma un mezzo per farlo sarebbe quello di analizzare continuamente tutti i processi in esecuzione su un sistema (in particolare se ci si aspetta che qualcuno acceda a un file in pochi istanti) e ispezionare tutti i loro argomenti per trovare i percorsi corrispondenti directory di base della condivisione. Una volta trovata una corrispondenza, stampi il risultato.

La speranza è che l'accessor stia usando un comando che prende il percorso del file come argomento.

EDIT: Questo funziona per me per processi in esecuzione un po 'più lunghi come vim, dd o catting un file di grandi dimensioni.

#!/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

Non viene visualizzato rapidamente come "tocco" nella sua forma attuale. Potresti potenzialmente aumentare le tue possibilità, biforcando molti processi facendo la stessa ricerca e / o sovraccaricando le risorse della CPU per aumentare la lunghezza di esecuzione dei processi di destinazione, anche se su Linux a causa dello scheduler e del raggruppamento automatico è ancora piuttosto difficile.

Questo programma non funziona se hidepid = 1 o hidepid = 2 è l'opzione proc mount in uso. Questo non è un valore predefinito per la maggior parte delle distro in circolazione.

    
risposta data 07.07.2016 - 22:05
fonte
1

Questo è chiamato " Sicurezza per oscurità ", e non è affatto una forma affidabile di nascondere i file. Ci sono molti strumenti che possono cercare all'interno di un intero file system e indicizzare i file all'interno, indipendentemente da quali autorizzazioni si assegnano a una cartella con un nome casuale.

Hai confuso un avversario non sapendo che qualcosa con loro non sarebbe stato in grado di impararlo. Nel tuo esempio, non stai facendo nulla per fermare qualcuno che ottiene il nome della cartella dall'elenco e dalla lettura dei contenuti. Una volta che il nome smette di essere segreto, il jig è attivo. Diversamente da una password, poiché le password sono memorizzate in un hash unidirezionale, mentre i nomi delle cartelle sono in chiaro sul file system.

Un'analogia: hai una casa, con una porta, e vuoi impedire alla gente di entrare dalla tua porta. Puoi spostare la porta in un punto difficile da trovare sulla casa che non è visibile semplicemente camminando all'esterno. Ma non c'è niente che impedisca a qualcuno di premere su varie parti della tua casa per trovare la porta.

Oppure puoi mettere la porta in una posizione ovvia, ma impedire a chiunque di aprirla, con un lucchetto.

    
risposta data 07.07.2016 - 20:35
fonte

Leggi altre domande sui tag