come sapere quale crittografia è stata utilizzata [duplicato]

3

C'è un modo per trovare quale tipo di crittografia / codifica viene utilizzata? Ad esempio, sto testando un'applicazione web che memorizza la password nel database in un formato crittografato. "AzOwKPoUYP4=" è la stringa crittografata di "admin" Come posso determinare quale hashing o crittografia è in uso?

    
posta user61186 21.11.2014 - 12:23
fonte

2 risposte

4

La risposta generale è: fare un po 'di reverse engineering sull'applicazione. Questa nozione di "reverse-engineering" è piuttosto ampia; include:

  • Leggere la documentazione (se presente) o altre note di progettazione che accompagnano l'applicazione.
  • Parlando con gli sviluppatori che hanno creato quell'applicazione (è incredibile cosa diranno le persone dopo due o tre pinte).
  • Passando attraverso il codice sorgente, se disponibile. Dal punto di vista di un attaccante, il codice sorgente può spesso essere ottenuto passando attraverso i cassonetti all'esterno degli uffici degli sviluppatori, per cercare dischi rigidi o nastri di backup scartati.
  • Esegui tu stesso i casi di test: registrati sull'applicazione con una password che conosci e guarda cosa diventa nel database. In particolare, verifica se cambiare la password più volte e tornare al primo ti riporta allo stesso valore memorizzato o ad un altro. Inoltre, verifica se due utenti distinti con la stessa password hanno lo stesso valore memorizzato.
  • Disassemblare i binari dell'applicazione. Questo è particolarmente semplice con bytecode Java e assembly .NET (per quest'ultimo, ho usato ILSpy con successo).

Senza tale reverse engineering, si torna a indovinare , un metodo la cui efficienza è discutibile. Nel tuo caso, l'esempio mostrato assomiglia alla codifica Base64 di un valore binario di lunghezza 8 byte ( 6b 33 b0 28 fa 14 60 fe , in particolare). Questo suggerisce un algoritmo che produce 64 bit, forse una variante del tradizionale hashing basato sul DES ma senza sale.

Ricordati che una password può essere crittografata , ma, molto più spesso, è hash ; a volte, è MACed . Queste sono nozioni molto distinte e troverete molta documentazione che è molto confusa e confusa su questo argomento. Quindi, come guida alla lettura:

  • Crittografia: utilizzando un tasto , trasforma alcuni dati di input in un altro formato che è illeggibile a chiunque eccetto quelli che conoscono la chiave; con la chiave, la trasformazione può essere invertita (questa è chiamata "decrittazione"), restituendo il valore originale.

  • Hashing: mescola e mescola i dati di input in un output a lunghezza fissa. Non c'è chiave; la funzione è deterministica e pubblica e tutti possono applicarla. L'hash non è reversibile; se la funzione hash è buona, l'unico metodo per trovare l'input originale (o almeno un input corrispondente) è luck (tu provi gli input finché non trovi quello giusto).

  • MAC: un po 'equivalente a un "hashing con chiave". Hai bisogno della chiave per calcolarlo; ma anche con la chiave, non è reversibile. Un MAC deve essere verificato , non "decrittografato".

risposta data 21.11.2014 - 15:04
fonte
-1

Strumenti per vederlo:

PEiD con il plugin Krypto Analyzer (KANAL)

Assistente keygener

IDA Pro con il Findcrypt

OllyDbg con SnD Crypto

Crypto Searcher di x3chun

Hash & Crypto Detector (HCD)

Draft Crypto Analyzer (DRACA)

Per sapere come eseguire gli strumenti di linux, apprendi bfcrypt - Crypto scanner

    
risposta data 21.11.2014 - 12:41
fonte

Leggi altre domande sui tag