Hier mal ein kleines Tutorial mit welchem ihr ohne sonderliche Kenntnisse im Bereich des Reversens ein Programm auf verdächtige Aktivitäten untersuchen könnt. Egal wie gut ein Programm gecryptet ist, irgendwann muss der eigentliche Teil des Programms zur Ausführung kommen, und dann offenbaren sich alle Aktivitäten. Wir können sowohl den Netzwerkverkehr, als auch die Prozessaktivitäten mithilfe von anderen Anwendungen protokollieren und anschließend auswerten. Da es viele mehr oder weniger effektive Anti-VMs gibt, sollte man nach Möglichkeit einen zweiten Computer zur Hand nehmen. Bei der VM müsst ihr davon ausgehen, dass die reguläre Ausführung des Programms unter Umständen von sich aus verhindert wird.
PE-Info: FileAlyzer 2
Netzwerkverkehr: Wireshark
Prozessaktivitäten: RegMon + FileMon
I. Datei Informationen
Bevor man überhaupt etwas logt, kann man sich schonmal die Anwendung an sich anschauen. Je nach Dummheitsgrad des Erstellers, finden sich hier Hinweise für eine verdächte Datei. Ich verwende den FileAlyzer 2, der Windows Explorer tuts im Zweifelsfall aber auch:
Erstellt: Wann die Datei auf eurem System erstellt wurde
Letzter Zugriff: Wann ihr das letzte mal darauf zugegriffen habt
Geändert am: Wann die PE zum letzten mal verändert/kompiliert wurde
Für uns ist also nur die letzte Eigenschaft wichtig. Hier sehen wir, dass die Datei offensichtlich erst heute erstellt wurde. Da wir an dieser Stelle nicht unbedingt wissen, dass unser Hacker007 ein Idiot ist, mag es nicht unwahrscheinlich sein, dass er die Datei erst wenige Minuten vor dem Uploaden erstellt hat. Soweit also alles in Ordnung. Die Prüfsummen, die ihr dort im FileAlyzer seht, werden übrigens zum Vergleich von PEs verwendet. Wenn ihr wie auch in unserem Fall mehrere Anwendungen miteinander vergleichen wollt, so könnt ihr dies anhand solcher Prüfsummen tun.
Zunächst wundert man sich hier natürlich darüber, dass HiJackThis etwas mit einem Teamspeak 2 Hack zu tun hat, aber das lassen wir einfach mal außen vor. Fragwürdiger ist an dieser Stelle jedoch der Name „stoned.exe“. Betrachten wir den Namen einfach mal als künstlerische Freiheit, so ist auch hier nichts großartiges zu sehen (manchmal ist der original Filename auch Server.exe ).
Hier wird es schon interessanter. Damit wir jetzt nicht zu weit vom „easy“ in den Bereich des PE-Formats abschweifen (wo mein Halbwissen dann vermutlich an seine Grenzen stoßen würde), seht ihr hier das Fenster von zwei Anwendungen. Links sieht man eine gewöhnliche Auflistung der Sections .. und ja .. rechts sieht man einen Haufen Dreck. So viel Dreck, dass er nichtmal auf einen Screenshot passt. Ich glaube man könnte das als Vergewaltigung des PE-Formats bezeichnen. Hier sieht man sehr deutlich, dass nachträglich etwas gefuscht wurde. Offensichtlich haben wir nicht die Originaldatei vor uns
II. Netzwerkverkehr
Am Netzwerkverkehr kann man ebenfalls viel erkennen. Schon an der Tatsache, dass überhaupt etwas gesendet wird, kann man abwägen, ob das Programm etwas hinter dem Rücken macht.
Solltet ihr mal keine Logs mit Wireshark bekommen, obwohl das Programm höchstwahrscheinlich Daten senden würde, dann weil das Programm womöglich auch Antis gegen Wireshark und ähnliche Programme hat. Diese kann man mit unterschiedlichen Methoden umgehen, braucht man aber nichtmal, da unschädliche Programm weder eine Anti-VM, noch eine Anti-Wireshark Funktion haben sollten. An dieser Stelle sollte der Verdacht ausreichen, um das gegebene File nicht auszuführen!
Da TheHacker007 (der nun vom Banhammer zerschmettert wurde) uns freundlicher Weise einen infizierten Teamspeak 2 Hack zur Verfügung gestellt hat, können wir diesen als konkretes Beispiel nehmen. Als ich das Programm das erste Mal mit Wireshark gesnifft habe, waren keinerlei Aktivitäten zu erkennen. Das kann bei der Ausführung auf einem leeren System einerseits an oben genannten Antis liegen, aber auch daran, dass der Stealer sich von sich aus dazu entscheidet keine Daten zu senden. Für einen Stealer macht das eigentlich bloß dann Sinn, wenn keine Daten vorhanden sind. Also hab ich mich mit falschen Daten auf Freehack angemeldet und diese in Firefox gespeichert. Oh wunder, auf einmal tat sich doch etwas:
Wireshark zeichnet den gesamten Netzwerkverkehr eures Systems auf. Um also nur die relevanten Daten zu erhalten, müsst ihr entweder die Programmeigenen Filter verwenden, oder euren sonstigen Netzwerkverkehr einstellen. Die genaue Analyse aller Pakete ist nicht notwendig, da hier offensichtlich etwas geschieht, obwohl (das habe ich oben vergessen) man zur Ausführung nur eine Fehlermeldung angezeigt bekommt. Direkt am Anfang sieht man die Namensauflösung von webel2010.bplaced.de und hat somit quasi schon die Zieladresse der folgenden Aktivitäten. Ein Klick auf die Seite offenbart bereits, dass es sich um irgendein Interface handelt (Bot, Stealer?). Im Folgenden sieht man eine HTTP Anfrage der index.php im Verzeichnis „filemanager“. Dort wird ein ganz schön langer String per Parameter an das php Script übergeben, was uns wiederum auf einen Stealer schließen lässt. Weiteres Vorgehen ist hier nicht notwendig: Infiziert!
III. Prozess-/Programmaktivitäten
Dieser Schritt kann natürlich auch vor der Netzwerkanalyse durchgeführt werden, ist jedoch meistens etwas zeitaufwändiger. Für den Fall, dass die Anwendung keine Netzwerkaktivitäten aufweist, ist die Analyse der Aktivitäten aber das einzige was bleibt.
Ich verwende FileMon für Aktivitäten zwischen Prozess und anderen Dateien und RegMon für die Aktivitäten zwischen Prozess und Registry. Beide Anwendungen loggen ebenfalls den gesamten Systemverkehr und müssen daher mit entsprechenden Filtern versehen werden. Das Setzen von Filtern ist hier jedoch ziehmlich einfach: Beim Start von FileMon werden bereits eine Reihe von Einträgen auftauchen, die aber offensichtlich nicht vom Zielprozess stammen (da dieser noch gar nicht geöffnet wurde). Mittels Rechtsklick->“Exclude Process“ auf den Prozessnamen (in Spalte 3) werden keine Aktivitäten dieses Prozesses mehr angezeigt. Das macht ihr solange, bis das Fenster gar keine Aktivitäten mehr verzeichnet. Nun könnt ihr die Zielanwendung starten und durchlaufen oder beenden lassen. Das Logfile ist jetzt ziehmlich lang, aber wenn man in etwa weiß wonach man suchen muss, dann findet man das relativ schnell:
Click here to view the original image of 1071x647px.
Unabhängig von der Suche nach Diensten und installierten Anwendungen, kann man einen Stealer mithilfe von Regmon und Filemon am besten daran erkennen, dass nach gespeicherten Passwörtern gesucht wird. Hier werden nämlich auch erfolglose Anfragen aufgelistet (also wenn die Datei gar nicht existiert). Hier ein paar Beispiel aus dem FileMon Log:
17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Programme\Trillian\users\default\msn.ini PATH NOT FOUND Options: Open Access: Read 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Programme\Trillian\users\default\msn.ini PATH NOT FOUND Options: Open Access: 00100001 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Programme\Trillian\users\default\aim.ini PATH NOT FOUND Options: Open Access: Read 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Programme\Trillian\users\default\aim.ini PATH NOT FOUND Options: Open Access: 00100001 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Programme\Trillian\users\default\yahoo.ini PATH NOT FOUND Options: Open Access: Read 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Programme\Trillian\users\default\yahoo.ini PATH NOT FOUND Options: Open Access: 00100001 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Dokumente und Einstellungen\Phil\Anwendungsdaten\.purple\accounts.xml PATH NOT FOUND Options: Open Access: Read 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Dokumente und Einstellungen\Phil\Anwendungsdaten\.purple\accounts.xml PATH NOT FOUND Options: Open Access: 00100001 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\DynDNS\Updater\config.dyndns PATH NOT FOUND Options: Open Access: Read 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\DynDNS\Updater\config.dyndns PATH NOT FOUND Options: Open Access: 00100001 17:26:45 TeamSpeak2_MH.e:1244 QUERY INFORMATION C:\Programme\Mozilla Firefox\sqlite3.dll SUCCESS Attributes: A 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Dokumente und Einstellungen\Phil\Anwendungsdaten\Mozilla\Firefox\profiles.ini SUCCESS Options: Open Access: Read 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Dokumente und Einstellungen\Phil\Anwendungsdaten\Mozilla\Firefox\Profiles\q3gjv0nh.default\ SUCCESS Options: Open Directory Access: 00100001 17:26:45 TeamSpeak2_MH.e:1244 QUERY INFORMATION C:\Dokumente und Einstellungen\Phil\Cookies SUCCESS Attributes: DHS 17:26:45 TeamSpeak2_MH.e:1244 QUERY INFORMATION C:\Dokumente und Einstellungen\Phil\Cookies SUCCESS Attributes: DHS 17:26:45 TeamSpeak2_MH.e:1244 OPEN C:\Dokumente und Einstellungen\Phil\Cookies\index.dat SUCCESS Options: OpenIf Access: 0012019F
Bei RegMon ist es genau so, also auch hier einige Beispiel aus dem Log:
1.81709385 TeamSpeak2_MH.e:1344 CloseKey HKLM\System\CurrentControlSet\Control\ComputerName SUCCESS 1.81789219 TeamSpeak2_MH.e:1344 OpenKey HKCU\Software\Google\Google Talk\Accounts NOT FOUND 1.81871688 TeamSpeak2_MH.e:1344 OpenKey HKLM\SOFTWARE\Vitalwerks\DUC NOT FOUND 1.81856108 TeamSpeak2_MH.e:1344 OpenKey HKLM\SOFTWARE\Valve\Steam NOT FOUND
Die genannten Logs kann man auch ohne sonderliche Kentnisse erkennen, da es sich bloß um die Namen und Verzeichnisse irgendwelche Anwendungen handelt, die von dem Stealer ausgelesen werden. Schließlich muss man ja nicht alles finden, sondern ein Eintrag sollte bereits ausreichen
Auch wenn die Informationen hier etwas sparsam sind, konnte ich hoffentlich trotzdem irgendjemandem helfen. Die meiste hier gepostete Malware lässt sich damit identifizieren, und vielleicht macht das in Zukunft ja dann mal wer anders
Anregungen und Kritik sind natürlich immer gerne gesehen!
Credits:100