Frage zu Volatility

Ich habe eine Frage bezgl. des mächtigen Programms "Volatility2.1 Standalone". Ich habe einen Rechner hier, auf dem vermutlich Schadcode ausgeführt wird. Zu Testzwecken habe ich einmal ein RAM Dump erstellt und dieses mit Volatility untersucht. Es bauen sich tatsächlich seltsame Verbindungen auf. Eine nach Japan und eine nach Singapur - nicht gerade für seriöse Software bekannt^^

Meine Frage ist nun folgende: ich würde mir gerne die Prozesse anzeigen lassen, also "...pstree" - dies geht aber nicht, es kommt folgende Meldung

Code:
Volatile Systems Volatility Framework 2.1
No suitable address space mapping found
Tried to open image as:
 WindowsHiberFileSpace32: No base Address Space
 WindowsCrashDumpSpace64: No base Address Space
 WindowsCrashDumpSpace32: No base Address Space
 AMD64PagedMemory: No base Address Space
 JKIA32PagedMemory: No base Address Space
 IA32PagedMemoryPae: Module disabled
 JKIA32PagedMemoryPae: No base Address Space
 IA32PagedMemory: Module disabled
 WindowsHiberFileSpace32: No xpress signature found
 WindowsCrashDumpSpace64: Header signature invalid
 WindowsCrashDumpSpace32: Header signature invalid
 AMD64PagedMemory: Incompatible profile WinXPSP2x86 selected
 JKIA32PagedMemory: No valid DTB found
 IA32PagedMemoryPae: Module disabled
 JKIA32PagedMemoryPae: No valid DTB found
 IA32PagedMemory: Module disabled
 FileAddressSpace: Must be first Address Space

Warum ist das so? Es ist nicht mein Rechner, ich habe den Dump bei ihm erstellt, aber das ist ja egal. Zu Testzwecken habe ich einen anderen Rechner gedumpt, dort wird alles korrekt angezeigt.

2. Es werden völlig unrealistische PID`s angezeigt, einer davon ist "1684291952" - kann das sein? Wohl eher nicht. Kann mir jemand helfen? Ich möchte es rein interessenhalber wissen, da es nicht schaden kann, mittels Volatility genau zu untersuchen, wohin Verbindungen aufgebaut werden, was diese anrichten usw.

Edit:
AMD64PagedMemory: Incompatible profile WinXPSP2x86 selected

Verstehe ich auch nicht, da es sich um einen win7 x64 Rechner handelt.
 
Zuletzt bearbeitet:
Der Rechner, der zur Analyse verwendet wird oder der, von dem der Dump gezogen wurde?

Der Dump ist von dem Rechner, auf dem auch die Analyse stattfinden soll. Zu Testzwecken habe ich mehrer Verusche durchgeführt.

Edit: Wobei Volatility sich nicht genau entscheiden kann, es wird nicht nur Win 7 als "Imageinfo" angegeben, sondern auch Server 2008. dort scheint das Programm Probleme zu haben. Bei einem Dump eines XP SP3 z.B. steht sowhol XP SP3 als auch XP SP2 als Imaginfo, also "Volatility -f Dateiname Imaginfo".
 
Zuletzt bearbeitet:
Edit: Wobei Volatility sich nicht genau entscheiden kann, es wird nicht nur Win 7 als "Imageinfo" angegeben, sondern auch Server 2008. dort scheint das Programm Probleme zu haben.

Da würde ich mir keine Gedanken machen, weil 2008er Server und Win 7 diesselben NT-Kernel/Versionen haben.

Es gibt so einige "ältere" und nicht geupdate Programme die einen Windows 7 PC als Server 2008 deklarieren bzw. nicht genau zuordnen können und dazu gehört Dein Programm wohl auch.
 
Zeig am besten mal die komplette Kommandozeile, mit der du Volatility ausführst.
Als Profil sollte natürlich das Profil des Memory-Dumps ausgewählt sein, denn auf die Strukturen darin möchtest du ja zugreifen *g*.
Funktionieren denn pslist/psscann/psxview (würde ich bezweifeln, wenn kein/das falsche Profil angegeben wurde)?
 
@chr0n0s

Deshalb mache ich mir auch bestimmt keine Sorgen, ich habe es nur der Form halber erwähnt.

dazu gehört Dein Programm wohl auch.
"Mein" Programm? Volatility ist ein Forensik Tool^^

Zeig am besten mal die komplette Kommandozeile, mit der du Volatility ausführst.

Bin grad nicht am Rechner, aber folgendermaßen:

Volatility Standalone.exe (kann man ja über die Autokomplettierung mit "Tab" einfach eingeben, also

"Volatility Standalone.exe" -f Dateinname (liegt auf dem Desktop, wie Volatility auch) pstree/connscan - oder was auch immer.
 
Dann versuch es mal mit

Code:
"Volatility Standalone.exe" -f Dateinname --profile=Win7SP1x64 pstree

Bzw. dem entsprechenden vorgeschlagenen Profil in Imageinfo, wenn das nicht passt: https://code.google.com/p/volatility/wiki/CommandReference23#imageinfo

Wie gesagt benötigt Volatility noch eine Information über das Profil, um zu wissen, wo es die entsprechenden Strukturen zu suchen hat, bzw. wonach es überhaupt suchen soll, das würde also deine Fehlermeldung erklären :).

Edit: Im Anhang noch eine Logdatei, in der ich mal testweise pslist bei meiner virtuellen Maschine laufen lasse. Wie du am zweiten Befehl sehen kannst, gibt es die Fehlermeldung, wenn kein Profil angegeben wurde. Wird das Profil aus dem Imageinfo (Befehl 1) angegeben (Befehl 3), funktioniert die Prozessauflistung einwandfrei.
 
Zuletzt bearbeitet:
"Volatility Standalone.exe" -f Dateinname --profile=Win7SP1x64 pstree

Sobald ich Zeit finde, werde ich es testen. Allerdings wäre dies ja unabhängig vom System so, also von dem es ausgeführt wird. Auf einem anderen Rechner, auf dem ich es getestet habe, hat es funktioniert, ohne das Profil anzugeben - die Version von Volatility war dieselbe.

wonach es überhaupt suchen soll, das würde also deine Fehlermeldung erklären

Ja, das stimmt schon, das habe ich mir auch gedacht. Jedoch ist es auch so, dass mit der Abfrage nach dem Image auch ein Fehler kommt. Aber ich teste alles nochmal in Ruhe. Danke schon mal!

Edit: Tatsächlich, so geht es!! Nur seltsam, dass es auf dem anderen Rechner auch so ging, also ohne das Profil anzugeben. Aber so geht es. Und jetzt auch realistische PID`s^^

Edit: In Verbindung mit dem angegeben Profil funktioniert aber "connscan" nicht. Ohne das Profile schon, allerdings werden dort dann wieder 7-stellige PID`s angezeigt...

Scheinbar funktioniert connscan nur unter folgender Voraussetzung --> "This command is for x86 and x64 Windows XP and Windows 2003 Server only". Ich habe allerdings noch kein Befehl analog zu Windows 7 gefunden.

Edit: Also ich habe ja mehrere "Profile" zur Auswahl, hab einfach XPSP3 angegeben - was ja falsch ist, aber dann funktioniert es. Es kommen dieselben Ergebnisse, wie wenn ich kein Profil angebe, jedoch kann man mit der PID (1684291952) nichts anfangen...
 
Zuletzt bearbeitet:
Scheinbar funktioniert connscan nur unter folgender Voraussetzung --> "This command is for x86 and x64 Windows XP and Windows 2003 Server only". Ich habe allerdings noch kein Befehl analog zu Windows 7 gefunden.

Immerhin einen kleinen Schritt weiter :).
Statt connscan gibt es für Windows Vista und neuer den netscan Befehl: https://code.google.com/p/volatility/wiki/CommandReference23#netscan

Mit dem entsprechenden Profil sollten dann auch die PIDs wieder stimmen *g*.
 
Statt connscan gibt es für Windows Vista und neuer den netscan Befehl

Ja, vielen Dank! Ich habe diesen Befehl bereits getestet, leider hatte ich - da ich viel probiert habe - das Profil nicht angegeben. Jetzt geht es, die PID`s sind nun realistisch! Vielen Dank für den Hinweis.
 
Ich habe nochmals eine Frage. Ich habe einen definitiv kompromittierten Rechner. Diesen habe ich vorher - spaßeshalber (er muss neu aufgesetzt werden) - mit Volatility untersucht. Ich habe auch Prozesse ausfindig gemacht, die Schadcode beinhalten.

Um einen Dump der Prozesse zu erstellen, habe ich folgenden Befehl genutzt:

Code:
volatility -f Dateiname malfind --Profile=Win7SP1x86 --dump-dir Pfad

Es werden zwar Dumps durchgeführt, doch ich habe zufällig vier Speicheradressen, die ich zuvor mittels "...pstree" ermittelt habe, in dem Pfad gesucht, in dem die Dumps abgelegt wurden - Ergebnis, KEINER davon war gedumpt - warum??
 
Wie malfind funktioniert, ist aber bekannt (denn anders als der Name vermuten lassen könnte wird *nicht* nach Malware gesucht, sondern nur nach eingeschleustem Code, der gerne von Malware zum Verstecken genutzt wird)?: https://code.google.com/p/volatility/wiki/CommandReferenceMal23#malfind
Wenn malfind das richtige Werkzeug ist und du sicher bist, dass es in den von dir gefundenen Speicheradressen Schadware gibt, kannst du natürlich auch einfach procmemdump (https://code.google.com/p/volatility/wiki/CommandReference23#procmemdump) verwenden und die Datei dann in aller Ruhe "offline" analysieren.
 
Ja, das weiß ich.

dass es in den von dir gefundenen Speicheradressen Schadware gibt

Habe leider jetzt den Dump nicht hier, aber es läuft ein Prozess, der sogar im Taskmanager zu sehen ist, und der laut Google Schadcode ist. Leider weiß ich momentan nicht, wie der Prozess heißt.

kannst du natürlich auch einfach procmemdump

Vielen Dank, ich teste es.

Edit: So, habe nun mittels "procmemdump" analysiert und es war tatsächlich so, der Prozess (4zbrmon.exe) ist ein Virus. Dies wurde dann auch bei Virustotal so angezeigt, als ich die .exe erstellt hatte. Hätte aber der Prozess bzw. die Adresse des Prozesses im RAM nicht über "malfind" festgestellt werden müssen?
 
Zuletzt bearbeitet:
Solange der komplette Prozess einem Virus gehörte, nein, siehe oben

Ja, scheinbar gehört der Prozess nur diesem Virus. Aber egal, ich habe noch eine andere Frage. Ich möchte mir den Registryeintrag anzeigen lassen.

Ich habe folgenden Befehl eingegeben:

Code:
volatility -f Dateiname --profile=Win7SP1x64 printkey -K "Software\Microsoft\Windows NT\CurrentVersion"

So, wie es auch hier steht. Dann werden die Subkeys, also Unterschlüssesl, angezeigt. Ich interessiere mich für den Unterschlüssel "Winlogon". Wenn ich das aber hinter "CurrentVersion" hinzufüge, kommt die Meldung, dass der Schlüssel nicht vorhanden sei - das kann ja nicht sein. Auch mit dem ansprechen der virtuellen Adresse bin ich nicht weiter gekommen.

Ganz allgemein: wenn ich einen Pfad angebe, und es werden Subkeys angezieigt, dann muss ich doch eig. nur diesen hinter den letzten Schlüssel, z.B. "CurrentVersion", eben den neuen, z.B. "Winlogon" setzen, oder?
 
Kann leider doch sein *g*.
Das liegt meine ich daran, wie Windows die Registrierungsdateien speichert (denn es sind ja mehrere Dateien, die dann nur im Registrierungseditor schön zusammengefasst angezeigt werden).
Wenn mich nicht alles täuscht, existiert der Schlüssel "SOFTWARE" in der Form nicht als Unterschlüssel von HKLM, sondern besteht lediglich aus der Referenz auf eine Datei (%SystemRoot%\system32\config\SOFTWARE), welche dort eingelesen wird.
Versuch daher mal den Befehl
Code:
printkey -K "Microsoft\Windows NT\CurrentVersion\Winlogon"
, das sollte funktionieren.

Edit: Ich sehe gerade, du wunderst dich, warum du Winlogon angezeigt bekommst, aber nicht auslesen kannst. Ich nehme an, dass du den Winlogon-Schlüssel eines der Benutzer angezeigt bekommst, welcher allerdings wiederum selbst keine Werte enthält. Das hat allerdings dann mit dem Winlogon aus dem HKLM-Hive nichts zu tun.
 
Zuletzt bearbeitet:
existiert der Schlüssel "SOFTWARE" in der Form nicht als Unterschlüssel von HKLM, sondern besteht lediglich aus der Referenz auf eine Datei (%SystemRoot%\system32\config\SOFTWARE), welche dort eingelesen wird.

Exakt so muss es sein! Zumindest hat es mit

Code:
printkey -K "Microsoft\Windows NT\CurrentVersion\Winlogon"

funktioniert. Aber blöde Frage, woher weißt du dann, dass es eben so heißen muss? Sorry, ich beginne erst die Ausbildung^^

welcher allerdings wiederum selbst keine Werte enthält. Das hat allerdings dann mit dem Winlogon aus dem HKLM-Hive nichts zu tun.

Genau, diesen hab ich in der Reg auch gefunden

Also würde dir nochmals danken, aber geht net, da ich erst anderen danken muss^^

Edit: Mich wundert allerdings, in einem Tutorial im Netz hat es so funktioniert, wie ich es zuerst getestet habe. Allerdings war es das Image eines XP Rechner, es wird wohl daran liegen. Dass es in einer VM durchgeführt wird, daran liegt es sicher nicht.
 
Zuletzt bearbeitet:
Kein Problem, freut mich doch immer, wenn ich helfen kann ;).
Du kannst dir eine recht gute Liste mit den verschiedenen Speicherpfaden für die Registrierungsdateien hier anschauen: https://en.wikipedia.org/wiki/Windows_Registry#File_locations
Da siehst du dann unter anderem eben auch "%SystemRoot%\System32\Config\Software – HKEY_LOCAL_MACHINE\SOFTWARE", dementsprechend kann man erkennen, dass HKLM\SOFTWARE eben nicht direkt in einer der Dateien zu finden ist, also muss der Pfad ein wenig angepasst werden.
 
Hallo! Ich weiß, der Thread ist alt, aber es passt einfach hier rein:)

@DerW

Ich habe mal wieder eine Frage. Und zwar möchte ich - testweise - den erstellten Dump meines RAM analyiseren. Allerdings ist es so, dass unter Windows 7 x64 die Befeheö bezüglich der aufgebauten Verbidnungen (also "connections" oder "connhost") nicht mehr unterstützt werden. Auch mit der Hilfe, also "volatility...standalone.exe -h" geht es ´nicht mehr, alle Befehle, die angegeben sind,m gehen nicht mehr. Wie kann ich das machen`?

Kann es eig. sein, dass die von dir verlinkten Seiten von damals nicjht mehr dieselben sind? Da steht zwar von volatility drin,aebr nicht von standalone-Version.
 
Zurück
Oben