Python Forensics unter Linux
Das Hauptanliegen digitaler Untersuchungen ist es, wichtige Beweise oder Daten mit Verschlüsselung oder einem anderen Format zu sichern. Das grundlegende Beispiel ist das Speichern der Passwörter. Es ist daher notwendig, die Verwendung des Linux-Betriebssystems für die digitale forensische Implementierung zu verstehen, um diese wertvollen Daten zu sichern.
Informationen für alle lokalen Benutzer werden meist in den folgenden beiden Dateien gespeichert:
- /etc/passwd
- etc/shadow
Der erste ist obligatorisch und speichert alle Passwörter. Die zweite Datei ist optional und speichert Informationen zu den lokalen Benutzern, einschließlich der gehashten Kennwörter.
Es treten Probleme hinsichtlich des Sicherheitsproblems beim Speichern der Kennwortinformationen in einer Datei auf, die von jedem Benutzer gelesen werden kann. Daher werden gehashte Passwörter in gespeichert/etc/passwd, wo der Inhalt durch einen speziellen Wert ersetzt wird "x".
Die entsprechenden Hashes müssen nachgeschlagen werden /etc/shadow. Die Einstellungen in/etc/passwd kann die Details in überschreiben /etc/shadow.
Beide Textdateien in Linux enthalten einen Eintrag pro Zeile und der Eintrag besteht aus mehreren Feldern, die durch Doppelpunkte getrennt sind.
Das Format von /etc/passwd ist wie folgt -
Sr.Nr. | Feldname & Beschreibung |
---|---|
1 | Username Dieses Feld besteht aus den Attributen des für Menschen lesbaren Formats |
2 | Password hash Es besteht aus dem Passwort in verschlüsselter Form gemäß der Posix-Kryptofunktion |
Wenn das Hash-Passwort als gespeichert ist emptyDann benötigt der entsprechende Benutzer kein Kennwort, um sich beim System anzumelden. Wenn dieses Feld einen Wert enthält, der vom Hash-Algorithmus nicht generiert werden kann, z. B. ein Ausrufezeichen, kann sich der Benutzer nicht mit einem Kennwort anmelden.
Ein Benutzer mit einem gesperrten Kennwort kann sich weiterhin mit anderen Authentifizierungsmechanismen anmelden, z. B. SSH-Schlüsseln. Wie bereits erwähnt, ist der Sonderwert "x"bedeutet, dass der Passwort-Hash in der Schattendatei gefunden werden muss.
Das password hash beinhaltet die folgenden -
Encrypted salt - Die encrypted salt Hilft bei der Pflege der Bildschirmsperren, Pins und Passwörter.
Numerical user ID- Dieses Feld gibt die ID des Benutzers an. Der Linux-Kernel weist diese System-ID dem System zu.
Numerical group ID - Dieses Feld bezieht sich auf die primäre Gruppe des Benutzers.
Home directory - Die neuen Prozesse werden mit einer Referenz dieses Verzeichnisses gestartet.
Command shell - Dieses optionale Feld gibt die Standard-Shell an, die nach einer erfolgreichen Anmeldung am System gestartet werden soll.
Die digitale Forensik umfasst das Sammeln der Informationen, die für die Verfolgung von Beweismitteln relevant sind. Daher sind die Benutzer-IDs bei der Pflege der Datensätze hilfreich.
Mit Python können alle diese Informationen automatisch auf die Analyseindikatoren analysiert werden, um die letzten Systemaktivitäten zu rekonstruieren. Mit der Implementierung von Linux Shell ist das Tracking einfach und unkompliziert.
Python-Programmierung unter Linux
Beispiel
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:])
Ausgabe
Das Passwort wird in einem hexadezimalen Format in gespeichert pass_db.txtwie im folgenden Screenshot gezeigt. Die Textdateien werden zur weiteren Verwendung in der Computerforensik gespeichert.