Python Forensics in Linux
La principale preoccupazione delle indagini digitali è proteggere le prove oi dati importanti con la crittografia o qualsiasi altro formato. L'esempio di base è memorizzare le password. È quindi necessario comprendere l'utilizzo del sistema operativo Linux per l'implementazione forense digitale per proteggere questi dati preziosi.
Le informazioni per tutti gli utenti locali sono per lo più memorizzate nei seguenti due file:
- /etc/passwd
- etc/shadow
Il primo è obbligatorio, che memorizza tutte le password. Il secondo file è facoltativo e memorizza le informazioni sugli utenti locali comprese le password con hash.
Sorgono problemi relativi al problema di sicurezza dell'archiviazione delle informazioni sulla password in un file leggibile da ogni utente. Pertanto, le password con hash vengono archiviate in/etc/passwd, dove il contenuto è sostituito da un valore speciale "x".
Gli hash corrispondenti devono essere cercati in /etc/shadow. Le impostazioni in/etc/passwd può sovrascrivere i dettagli in /etc/shadow.
Entrambi i file di testo in Linux includono una voce per riga e la voce è composta da più campi, separati da due punti.
Il formato di /etc/passwd è il seguente -
Sr.No. | Nome e descrizione del campo |
---|---|
1 | Username Questo campo è costituito dagli attributi del formato leggibile dall'uomo |
2 | Password hash Consiste nella password in una forma codificata secondo la funzione crypt di Posix |
Se la password hash viene salvata come empty, quindi l'utente corrispondente non richiederà alcuna password per accedere al sistema. Se questo campo contiene un valore che non può essere generato dall'algoritmo hash, come un punto esclamativo, l'utente non può accedere utilizzando una password.
Un utente con una password bloccata può comunque accedere utilizzando altri meccanismi di autenticazione, ad esempio le chiavi SSH. Come accennato in precedenza, il valore speciale "x"significa che l'hash della password deve essere trovato nel file shadow.
Il password hash include quanto segue:
Encrypted salt - Il encrypted salt aiuta a mantenere i blocchi dello schermo, i pin e le password.
Numerical user ID- Questo campo denota l'ID dell'utente. Il kernel Linux assegna questo ID utente al sistema.
Numerical group ID - Questo campo si riferisce al gruppo principale dell'utente.
Home directory - I nuovi processi vengono avviati con un riferimento di questa directory.
Command shell - Questo campo facoltativo denota la shell predefinita che deve essere avviata dopo un accesso riuscito al sistema.
La digital forensics include la raccolta delle informazioni rilevanti per il monitoraggio di una prova. Quindi, gli ID utente sono utili per mantenere i record.
Utilizzando Python, tutte queste informazioni possono essere automaticamente analizzate per gli Indicatori di Analisi, ricostruendo l'attività recente del sistema. Il monitoraggio è semplice e facile con l'implementazione di Linux Shell.
Programmazione Python con Linux
Esempio
import sys
import hashlib
import getpass
def main(argv):
print '\nUser & Password Storage Program in Linux for forensic detection v.01\n'
if raw_input('The file ' + sys.argv[1] + ' will be erased or overwrite if
it exists .\nDo you wish to continue (Y/n): ') not in ('Y','y') :
sys.exit('\nChanges were not recorded\n')
user_name = raw_input('Please Enter a User Name: ')
password = hashlib.sha224(getpass.getpass('Please Enter a Password:')).hexdigest()
# Passwords which are hashed
try:
file_conn = open(sys.argv[1],'w')
file_conn.write(user_name + '\n')
file_conn.write(password + '\n')
file_conn.close()
except:
sys.exit('There was a problem writing the passwords to file!')
if __name__ == "__main__":
main(sys.argv[1:])
Produzione
La password è memorizzata in un formato esadecimale in pass_db.txtcome mostrato nello screenshot seguente. I file di testo vengono salvati per un ulteriore utilizzo in informatica forense.