[HackMe] Nuovo metodo più sicuro per storage di password

di il
21 risposte

[HackMe] Nuovo metodo più sicuro per storage di password

Ciao ragazzi, perdonate il titolo fantasioso e il fatto che questa discussione è stata già postata, ma sfortunatamente negli ambienti in cui l'ho fatto non mi è stato fornito un supporto adeguato.

Ho inventato un nuovo tipo di implementazione logica per lo storage delle password, invece della solita combinazione user/password.
Volevo dei consigli da voi, sia perchè lo possiate confutare e solo nel caso fosse effettivamente più sicuro, vorrei implementarlo nel kernel UNIX al posto di quello attuale (solo che non posso leggermi tutto il kernel, perciò se avete articoli utili per ciò che riguarda l'astrazione del login linkatemi pure per favore).

Cominciamo con una premessa: è ovvio che il server deve essere sicuro, l'implementazione è solo una soluzione aggiuntiva nel quale l'attaccante è riuscito a bypassare le misure precedenti: come lo può essere criptare una password, o disabilitare eventuali direttive, .

Ho creato un POC in MySQL/MariaDB, perchè secondo me rende bene il concetto ma si può ovviamente implementare anche in NoSQL, o addirittura modificando la struttura della gestione delle password in /etc/shadow utilizzando il nono campo come indice del file che contiene delle password randomiche, fra cui quella dell'utente (.

File .SQL (Ho semplificato il più possibile il codice per rendere il tutto il più comprensibile possibile: se non volete incorrere in concorrenze se effettuate un inserimento massivo di utenti deve essere applicato il LOCK)

Nella teoria se l'attaccante accede ai dati privati a volte si ritrova a dover decriptare la password dell'utente interessato (e ogni tanto lo fa come ultima spiaggia nel caso il server sia ben configurato e protetto), mentre così si ritrova con n passwords non sapendo quale è quella che deve decriptare.

Per esempio in sistemi amministrativi o login root potrebbero auto-generare nMila password hash "fake".

Ma rimando ad un altro utente che spiega benissimo il suo funzionamento:

MItaly ha scritto:


Mm al di là del codice specifico, se ho ben capito la tua idea sarebbe non associare esplicitamente l'hash di salt+password all'utente, ma tenerli "alla rinfusa" in un'unica tabella, e usare il salt per evitare collisioni (oltre agli usuali problemi di sicurezza che risolve il salt).

Il miglioramento di sicurezza dovrebbe derivare dal fatto che, mancando l'associazione utente-password, dovrebbe essere più complesso cercare di craccare una password di un utente specifico, dato che non sai qual è l'hash corrispondente, ed è inoltre possibile aggiungere degli hash aggiuntivi "per depistaggio" alla tabella.
Confutazione del mio modello da parte di un utente:

Scara95 ha scritto:


Qualsiasi password restituisca uno degli hash presenti nella tua tabella hashes viene accettata, quindi invece di rendere il tutto più sicuro l'hai reso meno sicuro perché ci sono più possibilità fra cui scegliere
Non credo, hai letto il mio codice?

Contando che viene generate anche un salt (che possiamo, perchè no, rendere univoco), in questo caso non esisterà mai una combinazione salt+password che dia il risultato di un'altra chiave UNIVOCA della hash.

Mentre quanto è probabile la collisione di 255 chars di salt + [numero di stringhe che fanno da brute force per trovare una password qualsiasi], possa trovare una correlazione?

Googlando un pò ho anche trovato questo
Dove dice:
A hash function accepts inputs of arbitrary (or at least very high) length, and produces a fixed-length output. There are more possible inputs than possible outputs, so collisions must exist. The whole point of a secure hash function is that it is "collision resistant", which means that while collisions must mathematically exist, it is very very hard to actually compute one. Thus, there is no known collision for SHA-256 and SHA-512, and the best known methods for computing one (by doing it on purpose) are so ludicrously expensive that they will not be applied soon (the whole US federal budget for a century would buy only a ridiculously small part of the task).
Il rischio di questa collisione di cui parli, teoricamente, è attualmente, fortemente improbabile per non dire impossibile.

Però siccome vogliamo fare le cose per bene, ipotizziamo di voler scongiurare l'improbabile:

Se io imponessi input di lunghezza fissa (password+salt = [sempre stesso numero di caratteri]) potrei prevenire la (im)probabilità matematica di collisione, se si, quale è questa lunghezza?

Grazie a chiunque dimostrerà interessamento.

========================================================================================================

Si può chiudere.
Il metodo si può essere utile per non rilevare la password in chiaro (siccome bisognerebbe cercarla fra tante), però come una doppia lama fornisce nHash con cui cercare di collidere, quindi direi che il metodo è decisamente da buttare .

Ringrazio, minomic, Scara95 e MItaly ancora per il tempo speso, mi hanno permesso di evitare di buttare tempo in una implementazione seria dell'algoritmo.

21 Risposte

  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    Francamente non ho capito un granché.
    Cosa ti turba?
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    Non si capisce se chiedi ancora un parere o se hai chiuso il topic. Comunque confermo che col tuo metodo all'attaccante è sufficiente trovare una password che porti ad una collisione con uno qualsiasi degli hash memorizzati. Mentre con il metodo classico dovrebbe trovare una password che collida con l'hash associato allo specifico utente.
    Comunque, solitamente questi attacchi non vengono condotti con la forza bruta, ma si ricorre a dizionari che riducono notevolmente lo spazio di ricerca.

    P.S.: se un domani dovessi veramente scoprire o inventare qualcosa di nuovo, ricordati che pubblicare tutti i dettagli su un forum pubblico è il modo migliore di farsi fregare l'idea.
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    dvaosta ha scritto:


    Non si capisce se chiedi ancora un parere o se hai chiuso il topic. Comunque confermo che col tuo metodo all'attaccante è sufficiente trovare una password che porti ad una collisione con uno qualsiasi degli hash memorizzati. Mentre con il metodo classico dovrebbe trovare una password che collida con l'hash associato allo specifico utente.
    Si può chiudere perchè il metodo è stato confutato.

    dvaosta ha scritto:


    Comunque, solitamente questi attacchi non vengono condotti con la forza bruta, ma si ricorre a dizionari che riducono notevolmente lo spazio di ricerca.
    Era un esempio per rendere il concetto.

    dvaosta ha scritto:


    P.S.: se un domani dovessi veramente scoprire o inventare qualcosa di nuovo, ricordati che pubblicare tutti i dettagli su un forum pubblico è il modo migliore di farsi fregare l'idea.
    Ok grazie, però non è che mi interessasse particolarmente l'autorialità di un metodo che aveva lo scopo di rendere i dati più sicuri (o in questo caso il contrario ).
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    A me invece non è chiarissimo un punto.
    Se posso leggere la tabella delle password (che sia un file, uno shadow, che siano hash, un database o quello che vuoi), significa che sono già un utente.
    se ho privilegi così elevati da leggere quei dati, nessuno mi vieta di
    - bloccare il server mysql
    - avviarlo in modalità monoutente
    - cambiare la password root
    - riavviarlo
    - cambiare tutto quello che voglio, comprese le procedure di login per farle sempre "riuscire"

    quale era, a tuo parere, lo scopo finale? avere degli hash più difficilmente invertibili?
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    +m2+ ha scritto:


    A me invece non è chiarissimo un punto.
    Se posso leggere la tabella delle password (che sia un file, uno shadow, che siano hash, un database o quello che vuoi), significa che sono già un utente.
    se ho privilegi così elevati da leggere quei dati, nessuno mi vieta di
    - bloccare il server mysql
    - avviarlo in modalità monoutente
    - cambiare la password root
    - riavviarlo
    - cambiare tutto quello che voglio, comprese le procedure di login per farle sempre "riuscire"
    Insomma... dipendentemente da come è configurato il server puoi benissimo uppare una shell e se non hai alcun tipo di vulnerabilità da sfruttare sul server rimanere nella tua cartella con il tuo singolo inutile file rigirandoti i pollici, e al massimo vedere la struttura del database.

    +m2+ ha scritto:


    quale era, a tuo parere, lo scopo finale? avere degli hash più difficilmente invertibili?
    1 Impedire di trovare la password di un admin con una sql injection;
    2 evitare che craccki quella dello /etc/shadow (ipotizzando che l'attaccante non abbia vulnerabilità per il server su cui è acceduto e quindi l'unico modo per fare qualcosa è quello di decriptare la password);
    3 Evitare che craccki una password solo per riutilizzarla con il nome utente di un altro servizio a cui è interessato l'attacante;

    Tutto questo in teoria, perchè in pratica aumento solo le probabilità che succedano i punti 1o e 2 e l'ultimo punto perde sicuramente di appeal se permette i precedenti.
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    Scusa ma non hai spiegato come qualcuno dovrebbe poter leggere le password (o la shadow)
    SQL injection non c'entra nulla con autenticazione
    Inoltre a sua volta le tabelle mysql non sono criptate, o meglio lo sono su mariadb
    Ma di nuovo la password è nel sistema, quindi leggibile.
    in realtà può essere su altra macchina ad esempio con un Mount nfs (ma è solo uno spostamento)
    In sintesi direi che di sicurezza informatica non sai praticamente nulla.
    non lo dico in tono aggressivo, diciamo che hai idee parecchio confuse sia su come si attacca, sia su come ci si difende
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    Prima che io risponda alle tue domande, posso sapere tu, come lo effettueresti un attacco a un server (con un paio di esempi senza andare troppo nel dettaglio, ipotizzando già di avere server X con vulnerabilità Z e Y)?

    Edit: Come esempio, prendiamo che stai da casa tua, quindi non hai la posizione reale a cui agganciarti.
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    TommyB1992 ha scritto:


    Prima che io risponda alle tue domande, posso sapere tu, come lo effettueresti un attacco a un server (con un paio di esempi senza andare troppo nel dettaglio, ipotizzando già di avere server X con vulnerabilità Z e Y)?

    Edit: Come esempio, prendiamo che stai da casa tua, quindi non hai la posizione reale a cui agganciarti.
    Non so cosa siano vulnerabilità Z e Y (è un modo abbastanza gentile per dire "non sai di cosa parli")
    Nè cosa sia un "attacco" (perchè non ha alcun significato).
    Neppure "un server" (ce ne sono tanti diversi, che fanno tante belle cose diverse).
    La domanda, in sè, prova che non hai la sia pur vaga idea di questi argomenti.
    Lo dico senza acidume, come una costatazione.
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    Io invece lo vedo abbastanza come un attacco (ma non su un server, sul personale ). Ma evidentemente è un problema mio...

    Il non rispondere direttamente alla domanda lo vedo piuttosto una elusione, non posso specificare tutti gli ambiti applicativi di qualcosa quando il mio esempio includeva in maniera piuttosto ovvia che si parlasse di una scatola collegata alla rete (mi sa che devo pure aggiungere che non si parla di rete domestica, senno non si capisce a cosa mi riferisco).

    Il motivo per cui sono stato generale è per darti la possibilità di esprimerti artisticamente (vedila come una gentilezza), così da poter dimostrare, che tu a differenza mia, ne capisci di sicurezza.
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    TommyB1992 ha scritto:


    Io invece lo vedo abbastanza come un attacco (ma non su un server, sul personale ). Ma evidentemente è un problema mio...

    Il non rispondere direttamente alla domanda lo vedo piuttosto una elusione, non posso specificare tutti gli ambiti applicativi di qualcosa quando il mio esempio includeva in maniera piuttosto ovvia che si parlasse di una scatola collegata alla rete (mi sa che devo pure aggiungere che non si parla di rete domestica, senno non si capisce a cosa mi riferisco).

    Il motivo per cui sono stato generale è per darti la possibilità di esprimerti artisticamente (vedila come una gentilezza), così da poter dimostrare, che tu a differenza mia, ne capisci di sicurezza.
    Vedi, non che debba dimostrare alcunchè, è un dato di fatto oggettivo.
    Pensa che il mio lavoro è proprio andar a "battere sulla spalla" di chi fa accessi abusivi a sistemi informatici.
    E lo faccio da quando (se 1992 è la data di nascita) andavi alle elementari.

    Volevo segnalarti che scrivere "un server" è come scrivere "niente".
    "con vulnerabilità" altrettanto.
    E così via.
    Se, con il dovuto rispetto, non sai neppure porre una domanda, ti aspetti davvero che ti dia una risposta?

    Un poco come dire "dovrei fare un trapianto, come si fa?"
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    +m2+ ha scritto:


    Vedi, non che debba dimostrare alcunchè, è un dato di fatto oggettivo.
    Ho scomesso con un amico 5€ che sarebbe stata la tua risposta, tutto sommato questa discussione non è stata così inutile...
    Se mai ti offro una birra, è anche merito tuo.

    +m2+ ha scritto:


    Pensa che il mio lavoro è proprio andar a "battere sulla spalla" di chi fa accessi abusivi a sistemi informatici.
    Bene, quando verrai a battere sulla mia, allora ne riparleremo, per il momento rimani a immaginare di battere le mani sulle spalle a chicchessià.
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    Bhè per la verità non è poi così difficile verificare quanto scrivo, basta andare sul sito del tribunale X e vedi nome, cognome e attività.
    Puoi farti ridare i 5 euro.
    Riguardo alla tua spalla ti suggerisco di lasciar stare, proprio su un altro forum a un utente è venuto un mezzo "coccolone" quando mi ha scritto la stessa cosa, anche senza 5 euro.

    Detto questo, scommetto 5 euro in croccantini col mio gatto che se ti chiedo "cos'è per te un server" non sai rispondere.
    Stupiscimi!
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    +m2+ ha scritto:


    Detto questo, scommetto 5 euro in croccantini col mio gatto che se ti chiedo "cos'è per te un server" non sai rispondere.
    Stupiscimi!
    Poi però li mangi?
  • Re: [HackMe] Nuovo metodo più sicuro per storage di password

    TommyB1992 ha scritto:


    +m2+ ha scritto:


    Detto questo, scommetto 5 euro in croccantini col mio gatto che se ti chiedo "cos'è per te un server" non sai rispondere.
    Stupiscimi!
    Poi però li mangi?
    Non ti arrabbiare, su.
    Sto finendo un lavoro che dura da quasi 2 settimane, un'oretta dovrei avercela.

    Allora, mi fai un esempio concreto di questo fantomatico "server"?
Devi accedere o registrarti per scrivere nel forum
21 risposte