it-swarm.com.de

Sind DLL-Dateien normalerweise in system32, aber jetzt im AppData-Ordner eines Benutzers immer verdächtig?

Ich musste kürzlich einige Malware-Berichte und zugehörige Protokolle durchlesen, um eine bestätigte Malware-Erkennung und eine anschließende Infektion eines Windows-Assets zu erhalten. In den Protokollen werden deutlich .dll - Dateien im Ordner AppData eines Benutzers angezeigt. Diese .dll - Dateien haben den gleichen Namen wie .dll, Die normalerweise in system32 Zu finden sind, z. B. cryptbase.dll.

Ich weiß, dass dies in diesem speziellen Fall definitiv Malware war und das Auspacken der Schurken .dll Teil des normalen Prozesses der Malware war. Ich habe im Chat danach gefragt und erfahren, dass die einzig wirklich glaubwürdige Erklärung für dieses Verhalten Malware (wie in diesem Fall) oder eine sehr schlechte Programmierpraxis ist, und selbst in diesem Fall ist dies ein seltenes Szenario.

Meine Frage ist zweifach; Gibt es ein Szenario, in dem .dll Dateien mit demselben Namen wie Standarddateien system32.dll aus einem anderen Grund als Malware oder im Ordner AppData eines Benutzers gefunden werden schlechte Programmierung?

Darüber hinaus ist es fair, .dll - Dateien, die in AppData enthalten sind und als Kopien von .dll - Dateien in system32 Zu erscheinen scheinen, als Indikator für zu behandeln Kompromiss?

26
TheJulyPlot

Da Microsoft die Standardberechtigungen für Program Files Ordner haben sich viele Entwickler an AppData als alternativen Speicherort für ihren Code gewandt. Die Logik besteht darin, dass eine auf diese Weise installierte Anwendung aktualisiert werden kann, ohne dass ein Zugriff auf Höhen- oder Administratorebene erforderlich ist. (Google Chrome tut dies beispielsweise).

Dies bedeutet auch, dass Sie manchmal legitime Bibliotheken finden, die normalerweise im system32 Ordner irgendwo unter dem Pfad AppData. Dies sind normalerweise Laufzeitkomponenten (wie MSVCRT, GDI + oder Capicom), die von der Anwendung selbst verwaltet und aktualisiert werden (normalerweise, weil sie eine bestimmte Version benötigen, aber manchmal, weil sie als Benutzerkomponente anstelle einer Systemkomponente übertragen werden und muss ohne Erhebung eingesetzt werden).

Das bedeutet nicht, dass Sie dort Bibliotheken finden sollten, die zum Betriebssystem gehören: Es gibt keinen legitimen Grund dafür, dass beispielsweise schannel.dll dort gefunden wird, da die einzige Anwendung, die diese Bibliothek verwaltet, das Betriebssystem ist.

Also, DLLs unter AppData mit dem gleichen Namen wie eine DLL in system32 sind nicht automatisch verdächtig.

31
Stephane

Obwohl dies nicht für die Verteilung geeignet ist, könnte ein anderer Grund sein, dass jemand das %appdata% Pfad für Systembibliotheken wäre für Laufzeit-Shimming.

Speziell : Wenn ich eine Laufzeitüberprüfung einer bestimmten API-Vertragsvalidierung durchführen lassen wollte (ein häufiges Beispiel ist malloc/free, aber dies wird bereits von AppVerifier verwaltet) oder allgemeines Verwendungsprofil. Ich könnte eine Shim-Ebene schreiben, die die Validierung durchführt und dann an die legitime Systembibliothek weiterleitet.

Im Allgemeinen sollten sich Systembibliotheken im entsprechenden System oder SXS Pfad befinden. Alle mit Windows Logo-Zertifizierung werden sich daran halten, aber viele Apps werden ohne Zertifizierung vertrieben.

4
Brycej

Ich würde es als schlechte Programmierung bezeichnen, wenn Sie die Standard-DLLs von Windows tatsächlich überschreiben. Wenn Sie sie an einem anderen Ort als System32 Platzieren, können Sie:

  • Verwenden Sie eine exakte DLL -Version ohne Abhängigkeit vom System. (Beispiel: Die DLLs von Direct 9 sind unter Windows 10 standardmäßig nicht enthalten, und jedes Spiel, das davon abhängt, stürzt ab.)
  • Aktualisieren Sie ausführbare Dateien ohne Administratorrechte (Firefox und Chrome macht das)
  • System überschreiben DLL nur für Ihre App (Warum sollten Sie das überhaupt tun)

Wenn eine Software gut gemacht ist, werden DLLs in AppData oder ihrem Installationsverzeichnis anstatt in System32 Abgelegt.

Wenn eine Malware gut gemacht ist, werden DLLs in System32 Eingefügt.

0
Charles Milette