was ist eine dll injection?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Eine DLL-Datei enthält an sich Code, welcher dynamisch von Programmen verwendet wird. Das heißt beispielsweise, jedes Betriebssystem hat seine eigene dynamiche Bibliothek( in Windows .dll) und das Programm nutzt dann je nach Betriebssystem selbsständig die passende.

Dabei ist das Programm darauf angewiesen, dass es die dynamische Bibliothek je nach System selbstständig findet. Das kann beispielsweise dadurch bewerkstelligt werden, dass das programm beim Betriebssystem nachfragt, wo die Bibliothek liegt oder indem immer ein fester Ordner verwendet wird, in dem sich die Datei finden lässt.

Eine DLL-Injection nutzt dabei aus, dass das Programm sich darauf verlassen muss, dass die dynamische Bibliothek, die es findet, tut, was sie soll und keine Malware enthält.

Dem Angreifer gelingt es, eine dynamische Bibliothek auf dem PC auszutauschen.(Beispielsweise wenn sich ein Nutzer eine .dll-Datei von einer herstellerfremden Seite herunterlädt. Im Zusammenhang mit VCRUNTIME dürfte das öffters vorkommen).

Sobald dann ein Prozess auf diese dynamische Bibliothek zugreift, führt die dynamische Bibliothek, statt oder neben dem Code, den sie ausführen sollte, ihren eigenen Code aus und infiziert den Computer.


redsky 
Beitragsersteller
 06.09.2020, 13:09

Ja ok verstehe soweit. Diese schädliche .dll könnte im Prinzip code enthalten die den ganzen PC lahm legt nehme ich an.

Destranix  06.09.2020, 13:26
@redsky

Ja.

Oder beliebigen andern Code. Trojaner oder soetwas.

Destranix hat bereits eine ausführliche Antwort geschrieben, eine .dll Datei enthält kompilierten Code, der ansich geschlossen ist. Eine .dll kann auch Icons und andere Recourcen enthalten aber vorallem Funktionen auf die Programme die diese .dll referenzieren zugreifen können.

Bei einer .dll Injection wird der Bytecode ausgetauscht durch ebenfalls kompilierten code oder es wird mit einem Hexeditor an der .dll herumgepfuscht um Sprungmarken zu ändern.

Wichtig für eine erfolgreiche Injection ist, dass das Wirtprogramm keinen Fehler wirft und die .dll das zu tun scheint was sie sonnst auch macht nur vielleicht noch ein paar zusätzliche Dinge, so kann die .dll jedes Programm starten und wird von einem AV nur sehr schwer erkannt.

Hauptanwendungen von .dll Injection ist Cracken von Programmen, da die Sicherheitseinstellungen oft in der .dll ausgelagert sind.

Es ist sehr komplizert eine .dll Inection durchzuführen, da sind Kenntnisse im Decompilieren und Assembler als Disziplin von Nöten, aber wenn mann es schafft in einer Reihe von NOP Anweisungen (No OPeration 3 Systemtakte) JMP Befehle (Jump zur Adresse) einzufügen und anschiessend wieder da weiter macht wo das Programm grad war fällt nichts auf.

Woher ich das weiß:eigene Erfahrung

redsky 
Beitragsersteller
 08.09.2020, 00:28

Danke! Fand ich ne schöne Ergänzung zum kommentar von Destranix.

Manche Cheats funktionieren so, um ein AntiCheat zu umgehen. Beim Spielstart ist alles normal aber nach der Injection wird halt Code "verändert" (anstatt vom originellen Code ausgeführt) und in den Game Files merkt man keinen Unterschied

Woher ich das weiß:Hobby – Hobbyprogrammierer
Bei einer DLL-Injection muss Code anstelle von anderem Code ausgeführt werden.