[DE] Trojaner - Die grundlegende Funktionsweise

in deutsch •  7 years ago  (edited)

Der Begriff Trojanisches Pferd oder Trojaner tritt im Bereich der IT-Sicherheit öfters auf.
In diesem Artikel wird kurz dargestellt, was ein Trojaner ist. Des weiteren wird die prinzipielle Vorgehensweise zur Erstellung eines Trojaners beschrieben.

Was ist ein Trojaner ?

Der Name stammt aus einer Mythologie in der Griechische Krieger den Trojanern ein Friedensangebot machten und ein großes holz Pferd schenkten, indem sich Krieger befanden.

Als Trojaner bezeichnet man eine Malware, die den Anschein einer normalen und nützlichen Software hat.
Neben der eigentlichen Funktionalität wird weiterer Programmcode ausgeführt

Einer "Wirtsdatei" wird weiterer Code beigefügt, sodass die eigentliche Datei problemlos ausgeführt werden kann. So wird die Malware mit den entsprechenden Benutzer Rechten des Anwenders ausgeführt und oftmals nicht als diese Identifiziert.


Funktionsweise der Erstellung eines Trojaners

Vorneweg: Der Folgende Abschnitt wird etwas technischer.
Voraussetzung ist ein grundlegendes Verständnis von dem Aufbau eines Programmes(Stack, Register, Pointer)

Disclaimer: Ich möchte niemanden motivieren einen Trojaner zu erstellen um anderen damit zu schaden.
Hier soll lediglich die prinzipielle Vorgehensweise bei der Erstellung aufgezeigt werden.


1 Code Cave suchen

Um in einer Datei weiteren Code einzuschleusen gibt es grundsätzlich zwei Möglichkeiten. Entweder fügt man eine Section hinzu. Dies hat den Nachteil, dass die Datei sich in ihrer Größe verändert. Besser ist es, eine bereits bestehende Section zu verwenden. Dafür sucht man sich einen Code Cave. Ein Code Cave sind grob gesagt leere Bytes innerhalb einer Section die überschrieben werden können, ohne das Programm zu beeinflussen.

Wichtig zu beachten ist hierbei, dass das gewählte Programmsegment die Flags zum beschreiben und zum Ausführen gesetzt hat.


2 Programmfluss hijacken

Damit ist gemeint, im normalen Programmfluss an einer Stelle einen Sprungbefehl zum Code Cave einfügen(Schritt 1. in der Graphik). Somit springt das Programm zu unserem Teil einer Section, in die wir Code einfügen.


3 Schadcode einschleusen

3.1 Register sichern

Als erstes müssen die Register gesichert werden. Damit wird sichergestellt, dass unser Programm nach der Ausführung unseres Codes regulär weiter laufen kann.

3.2 Schadcode/Shellcode einfügen

Als Shellcode bezeichnet man OP-Codes (also eine Reihe von Maschinenbefehlen abhängig vom Prozessortyp), die eine Shell öffnen. In der Regel möchte man hier eine Reverse Shell erzeugen.

3.3 Stackpointer ausrichten

Um die Register zurücksetzen zu können muss der Stackpointer wieder an die Stelle ausgerichtet werden, an der die Register abgelegt worden sind.

3.4 Register laden

Die in 3.1 gesicherten Register des normalen Programmflusses werden wieder geladen, damit das Programm nach Ausführung unseres Codes normal weiter laufe kann.

3.5 Instruktionen wiederherstellen

An der Stelle, wo der Sprung auf unsern Code stattgefunden hat, wurde eine "reguläre" Instruktion des Programmes überschrieben. Diese wird an dieser Stelle ausgeführt.

3.6 Sprungbefehl zurück zu normalen Programmcode

Jetzt muss nur noch an die Stelle gesprungen werden, an der das eigentliche Programm weiterlaufen würde. Das Programm kann nun regulär weiterlaufen nachdem unser Code ausgeführt wurde.


Weitere Schritte

Der Trojaner wird an vermutlich direkt von einem Anti-Viren-Programm erkannt (Der Shellcode ist in der Signaturliste des Hersetellers). Der nächste Schritt wäre also diesen vor der Erkennung von AV Programmen zu schützen. Dies würde den Rahmen dieses Beitrags sprengen. Über die von AV Software genutzten Erkennungsmechanismen werde ich einen separaten Beitrag schreiben.



Ich hoffe ihr konntet diesem diesmal etwas technischeren Beitrag folgen. Bei Anmerkungen / offenen Fragen beantworte ich diese natürlich gerne in den Kommentaren.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Vor allem primär ein Schreckgespenst der Bundesregierung. Ein generalisierter vorbereitet Angriff. Glaube ich erst, wenn ich es sehe. Mal abgesehen von der höchst brisanten Handhabung. Wenn das Ding die Beweise nicht korrekt Sicherheit und einen Schaden verursacht oder ein echter Täter sich darauf beruft, dass die Sachen nachgeladen wurden und er freigesprochen wird. Man sollte das Ding an die Karriere von einigen Leuten verknüpfen...

Kalle Beitrag! Gehst du auch in Zukunft auf die Gegenmaßnahmen ein? Ich meine damit ASLR, Stack Canaries und CEP. Habe die Grundlagen aus dem Bereich zwar schon mal in der Uni gehört, aber da geht bestimmt mehr :)

Die von dir Erwähnten Verfahren sind in der Tat sehr interessant.
Sicher gäbe es hier einiges zu schreiben, sofern weiteres Interesse besteht.

Sehr interessanter Artikel - vielen Dank. :)

Mich würde hierzu ein Praxistutorial interessieren - entweder auf DTube oder heir mit Screenshots. Je nachdem natürlich wie routiniert du mit der Methodik bist und ob das mit vertretbarem Aufwand geht. Interessant wäre es auf jeden Fall ..

(Zum Thema Trojaner-Anleitung veröffentlichen: ich sehe das wie @Sempervideo mit seinen Videos. Es gibt bereits fertige Rootkit Baukästen und wie du bereits gesagt hast sollte jedes AV-Programm das Ganze erkennen.)

Danke sehr !
Ich schaue mal, wie es sich umsätzen lässt dass man ein Beispiel in Form eines Praxistutorials durchgeht :)

Vielen Dank für diese Erklärungen. Macht deutlich wie wichtig es ist Dateien nur aus vertrauenswürdigen Quellen zu laden und die Hash-Werte zu überprüfen...

Danke für diese detaillierte Aufschlüsselung wie genau sowas gebaut wird. Einerseits interessant aber auch erschreckend, weil man schon soviel darüber gelesen hat, was sowas anrichtet-

Wow! Hammer Post. Zwar sehr technisch und auf einem hohen Niveau, aber konnte trotzdem ein bisschen was mitnehmen ;D Super, dass es so einen content hier gibt

Sehr sehr geiler Post! Weiter so!

Top Beitrag!
Upvote + Resteem
Viele Grüße vom @deutsch-boost Team!