Zum Inhalt wechseln

Als Gast hast du nur eingeschränkten Zugriff!


Anmelden 

Benutzerkonto erstellen

Du bist nicht angemeldet und hast somit nur einen sehr eingeschränkten Zugriff auf die Features unserer Community.
Um vollen Zugriff zu erlangen musst du dir einen Account erstellen. Der Vorgang sollte nicht länger als 1 Minute dauern.

  • Antworte auf Themen oder erstelle deine eigenen.
  • Schalte dir alle Downloads mit Highspeed & ohne Wartezeit frei.
  • Erhalte Zugriff auf alle Bereiche und entdecke interessante Inhalte.
  • Tausche dich mich anderen Usern in der Shoutbox oder via PN aus.
 

   

Foto

wie funktioniert ein trojaner builder?

- - - - -

  • Bitte melde dich an um zu Antworten
12 Antworten in diesem Thema

#1
fluffybunny

fluffybunny

    Pentester

  • Premium Member
  • Likes
    23
  • 119 Beiträge
  • 7 Bedankt

Hi Leute,

 

wollte nur mal wissen wie man sich das vorstellen kann, also wie ein trojaner builder dann die server.exe erstellt?

 

Wird dann innerhalb des Trojanerbuilders dann nochmal eine extra "exe" Datei kompiliert oder existiert die Server.exe soweit schon und wird durch den builder nur noch mit entsprechenden Werten/Daten gefüllt? Ich weiß leider nicht wie ich das sonst anders ausdrücken könnte, aber ich hoffe Ihr versteht was ich meine.

 

Freue mich auf eure Antworten.

 

mfg

 

fluffy



#2
Cube

Cube

    Würfel

  • Banned
  • PIPPIPPIPPIPPIPPIPPIPPIPPIPPIP
  • Likes
    7
  • 819 Beiträge
  • 1062 Bedankt
  • Android, Android [root]
  • Windows, Linux

Kommt auf die Programmiersprache an.

 

In der Regel existiert aber schon das Outputfile.

Der Builder schreibt (zumeist direkt hintendran) in das bereits existierende File die werte rein.

Sprich die werte werden einfach übergeben.

 

Unter .Net gibt es beispielsweise die Möglichkeit direkt eine datei zu kompilieren.

Stichwort: Codedom Compiler.

 

Lg

Cube


  • fluffybunny gefällt das

Jabber: cube@exploit.im

Only with OTR!

 

HQ Password-Recovery-Tool (Browser, Mail uvm.): TripleCCC


#3
R3s1stanc3

R3s1stanc3

    Hacktivist

  • Premium Member
  • Likes
    22
  • 72 Beiträge
  • 4 Bedankt
  • 687249355
  • Android [root]
  • Linux

Mir fällt neben dem Compilen und der EOF Technik, die Cube schon aufgezählt hat, noch eine 3. Möglichkeit ein:

Die Daten, die der Trojaner braucht werden in die Resourcen der Exe geschrieben. Das hat u.a. Becks bei seinem BTC Wallet Stealer so gelöst


  • Becks gefällt das

#4
Cube

Cube

    Würfel

  • Banned
  • PIPPIPPIPPIPPIPPIPPIPPIPPIPPIP
  • Likes
    7
  • 819 Beiträge
  • 1062 Bedankt
  • Android, Android [root]
  • Windows, Linux

Mir fällt neben dem Compilen und der EOF Technik, die Cube schon aufgezählt hat, noch eine 3. Möglichkeit ein:

Die Daten, die der Trojaner braucht werden in die Resourcen der Exe geschrieben. Das hat u.a. Becks bei seinem BTC Wallet Stealer so gelöst

Stimmt natürlich.

Total vergessen.

Kann man ebenfalls verwenden.

Dafür gibts ja sogar die WinAPI um die ressourcen zu lesen/schreiben.

 

Danke für die ergänzung!


Jabber: cube@exploit.im

Only with OTR!

 

HQ Password-Recovery-Tool (Browser, Mail uvm.): TripleCCC


#5
n1nja

n1nja

    1337

  • Premium Member
  • Likes
    140
  • 303 Beiträge
  • 84 Bedankt
  • Android [root], iPhone
  • Windows, Linux, Mac OS
Da gibt es unterschiedliche Wege das zu machen.
Der größte Unterschied bei allen, ist aber die Dedectionrate danach:)

Die häufigsten hat Cube bereits genannt.
Ich schätze mal die meiste Methode die verwendet wird ist, das man die Daten einfach anhängt:) (EOF)

Da die wenigstens sich nicht richtig damit auseinander setzen und eigene zu finden:)

Bearbeitet von n1nja, 22 May 2015 - 14:00 Uhr.


#6
fluffybunny

fluffybunny

    Pentester

  • Premium Member
  • Likes
    23
  • 119 Beiträge
  • 7 Bedankt

ok super vielen dank für eure antworten. mit programmieren selbst kenn ich mich auch noch nicht so viel aus aber habe mir jetzt fest vorgenommen c++ zu lernen mit dem buch "der c++ programmierer".

 

ging erstmal rein um das verständnis.

 

also in den meisten fällen besteht dann die server.exe schon und die daten/werte werden dann einfach an das Ende der server.exe angehängt? Ich verstehe bloss nicht wie die Server.exe dann die daten aufnimmt/verwertet, wenn diese einfach ans ende der datei geschrieben werden und wie genau werden die dort reingeschrieben? Wird dort dann nochmal sourcecode angehängt, wahrscheinlich eher nicht? Oder hexdezimal/binär etc. :D

 

Sorry bin da echt noch totaler Anfänger :-)



#7
n1nja

n1nja

    1337

  • Premium Member
  • Likes
    140
  • 303 Beiträge
  • 84 Bedankt
  • Android [root], iPhone
  • Windows, Linux, Mac OS

Da gibt es wieder verschiedene Sachen, wie genau man das realisieren kann.

 

Kleiner Crashkurs :)

 

Dein Builder besteht aus Code zb.123456789, wobei jetzt die 9 deine Daten wären.

Die Server.exe besteht aus Code zb. 654321. Das ist das reine Gerüst.

 

Nun wird im Builder die Server.exe eingelesen und die Daten angehängt. Dann sieht der Code von der Server.exe so aus: 6543219.

 

Beim Starten der Server.exe ließt sich die Datei selbst aus. So hat die Server die Daten und kann damit arbeiten.

 

Hoffe konnte es dir bisschen näher bringen.

 

Wie genau das geht. Das erklären wir dir dann, wenn du soweit mit den Programmieren bist :)


  • will, fluffybunny und Dean36 gefällt das

#8
Imperial

Imperial

    Favoured Management

  • Premium Member
  • Likes
    544
  • 421 Beiträge
  • 606 Bedankt
  • 340868
  • verifiziert
  • iPhone
  • Windows, Mac OS

Also EOF (End of File) ist eigentlich eine eher unsaubere Lösung.

 

Du möchtest z.B. das Wort "Hallo" ans Ende der Datei setzten.

Dazu lädst du (der, die, das)? Stub, also der eigentliche Server, in deinen Builder als ByteCode.

Dann hast du ganz viele Nullen und Einsen.

 

Und ans Ende setzt du dann das "Hallo", natürlich auch in binärer Form.

 

0010111010101010100101011100101010010101010

0101010110101010101000101010001010111111001

...

0110100100001100001011011000110110001101111

 

 

Das Rote ist das Wort "Hallo".

Danach musst du noch die Länge hinten dran setzten, damit du weißt, wie viel du wieder auslesen musst.

 

 

Und das wars dann auch schon.

Die Daten sollten aber natürlich dann verschlüsselt angehangen werden, da man diese sonst mit einem Hex Editor ganz einfach auslesen kann.

 

 

 

Ich kann dir daher nur das Übergeben via Ressourcen empfehlen.

Du brauchst dafür nur drei Windows-Methoden.

- BeginUpdateResource

- UpdateResource

- EndUpdateResource

 

 

Zum Auslesen dann die Drei:

- FindResource

- LoadResource

- LockResource


  • will und fluffybunny gefällt das

There Is No Business Like Coding Business

 


#9
Cube

Cube

    Würfel

  • Banned
  • PIPPIPPIPPIPPIPPIPPIPPIPPIPPIP
  • Likes
    7
  • 819 Beiträge
  • 1062 Bedankt
  • Android, Android [root]
  • Windows, Linux

Imperial hat völlig recht.

Die ganz klassische Methode funktioniert (so meine gesammelte Erfahrung) funktioniert nicht mit der Übergebung der Länge der angehängten Bytes (damit ich weiß, ab wo meine angehängten bytes genau stehen), sondern mit einer noch "einfacheren" Methode: Filesplit-so der Überbegriff.

 

WIe gesagt, anstatt die Länge zu übergeben, suche ich mein eine Zeichenkonstruktion aus, die überlicherweise nicht vorkommt.

Beispiel (bewusst Pseudo gehalten...):

 

Dein Stub Code (übersichtlicher wäre ntürlich HexadzeimalCode, bin aber zu faul):

kl8i9wi4fik4wef4eß0of4epflk403to04eogepglep4

 

Jetzt willst du folgenden Code dranschieben ans Ende der Stub: kkk3948394393432pp

 

Und nun suchen wir uns einen Zeichensatz (auch Filesplit gennant) aus der widerspiegelt wo die Stub endet und wo der darngehängte Code beginnt: ###THATSMYSHITTYFILESPLITSTRING###

 

Nun gehen wir wie folgt vor:

Stub Code auslesen, Filesplit dranhängen, und eigentlichen Code hinten anhängen.

Sieht dann wie folgt aus:

 

kl8i9wi4fik4wef4eß0of4epflk403to04eogepglep4###THATSMYSHITTYFILESPLITSTRING###kkk3948394393432pp

 

Fertisch.

WIe geht nun die Stub.exe vor wenn sie geöffnet wird?

Sie liest sich selbst aus.

Sucht nach dem FilesplitString und weis: Aha, alles was davorsteht is der original Stubsource, und alles was danach kommt ist der drangehängte Code.  --> Und nun mach damit was du willst, in den meisten fällen: Ausführen ;)

 

Hoffe es war halbwegs verständlich.

 

LG

Cube


  • fluffybunny gefällt das

Jabber: cube@exploit.im

Only with OTR!

 

HQ Password-Recovery-Tool (Browser, Mail uvm.): TripleCCC


#10
n1nja

n1nja

    1337

  • Premium Member
  • Likes
    140
  • 303 Beiträge
  • 84 Bedankt
  • Android [root], iPhone
  • Windows, Linux, Mac OS

Soviel ich aber weiß, macht Filesplit ja auch nix anderes als die Daten an zu hängen, bzw in die Stub zusätzlich zu schreiben.

Die Methode FileOpen, FilePut gibt es ja soviel ich mich erinnern kann scho ab VB5.

 

Im Prinzip funktioniert ein RAT-Server-Builder genauso wie ein Crypter. Daten müssen bzw werden verschlüsselt irgendwo abgelegt, die man nicht sehn sollte.

Da die EOF und die Filesplit Methode sehr bekannt sind, würde ich sie nicht mehr benutzen in der heutigen Zeit.

 

Zu meiner Zeit, war es schwierig die EXE danach FUD zu bekommen, was man ja davon ausgehen sollte, das fast 98% der RAT Benutzer es wollen :)

 

Ich hab damals lange überlegt und einiges versucht, was anderes zu machen.

Bin dann auf die Sachen irgendwann gekommen mit die Daten einfach selber zu kompilieren.

So hast du danach auch nicht das Problem, das Icon oder die Assemblys zu ändern.

 

Das wurde aber, meiner Meinung, nach einiger Zeit auch sehr dedected. Da kann man verschlüsseln wie man wollte ;)

 

Ich weiß nicht, ob es bis jetzt bekannt ist, aber ich hab vor Jahren dann endlich was "eigenes" gefunden.

Mein RAT hatte damals einen Inbuild Crypter. Der hat die erstelle Server.exe direkt gecryptet.

 

Und zwar habe ich die Daten in einer existierenden Datei geschrieben, nicht Resourcen, nicht angehängt.

 

Zu dem Zeitpunkt hat das super geklappt.

 

Ob bis heute jmd das gemacht hat in irgendeiner Weiße, das weiß ich nicht. Da ich mich lange nicht mit diesen Thema beschäftigt habe.



#11
SAR

SAR

    Regelmäßiger Übertreiber

  • Premium Member
  • Likes
    320
  • 394 Beiträge
  • 287 Bedankt
  • 608463167
  • verifiziert
Unter nativen Sprachen wäre es auch möglich, alle Variablen zu deklarieren und initialisieren. (Im Server)
Als Beispiel: Man will den Hostnamen (=char[], bzw String) und einen Port (=int16/short) in den Server bringen.

Bei nativen Sprachen lässt sich berechnen (vermutlich nur manuell), an welcher Stelle die Variablen angelegt werden.
Wobei man zuerst die int16 und danach den String anlegen sollte (int16 hat eine fixe Größe). String muss man mit einem 0-Byte abschließen. Jetzt kann man die entsprechenden Werte vom Builder überschreiben lassen.
Das erfordert aber eine Menge an informatischen Verständnis. _0021_%5E%5E.png


Eine kleine Vorführung:
testors19.gif


Mfg.
SAR

Bearbeitet von SAR, 24 May 2015 - 05:55 Uhr.

  • Cube und fluffybunny gefällt das

Eingefügtes Bild


#12
R3s1stanc3

R3s1stanc3

    Hacktivist

  • Premium Member
  • Likes
    22
  • 72 Beiträge
  • 4 Bedankt
  • 687249355
  • Android [root]
  • Linux

Sollte nicht nur in nativen Sprachen möglich sein.

Dabei muss man nur beachten, dass in Net Sprachen zwischen den Chars in einem String immer ein Nullbyte 0x00 steht. Man initialisiert also einen möglichst langen String, findet die Adresse in der Exe heraus und lässt den Builder den String dann durch den Hostnamen ersetzen


  • SAR und fluffybunny gefällt das

#13
SAR

SAR

    Regelmäßiger Übertreiber

  • Premium Member
  • Likes
    320
  • 394 Beiträge
  • 287 Bedankt
  • 608463167
  • verifiziert
@

Please Login HERE or Register HERE to see this link!

<- Dieser Source passt von einer .exe ein Int und ein String an.

Please Login HERE or Register HERE to see this link!

<- Dies ist der Inhalt der main() von dem Base-File

Es wurde doch noch etwas unübersichtlich. Kann man bestimmt schöner machen. ^^



Mfg.
SAR
  • fluffybunny gefällt das

Eingefügtes Bild




  Thema Forum Themenstarter Statistik Letzter Beitrag

Dieses Thema wurde von 93 Mitglied(ern) gelesen


    <Kevin>, AFK_D4m4ge, Alpha63, Ar@m!s, Avni, B1nary, Bad Grandpa, Becks, BlackZetsu, bones, Born2Hack, Bot4ng, Botmopp, bumg2, Bypass, casamonica, caspR, Ch!ller, ChiLLiN, Commentor, Cranky, Crowx88, Cube, Cyber Tjak, CyberFlash, Dean36, Denver, dev-0, easysurfer, eXalT, FalkE, Filth, Flex.Net, fluffybunny, Framerater, g0rillaz, Georgiana, gutzuu, Haksor, Imperial, Injection, Interimere, Janjij, juPP, kafkas, keyb0ardz, kiwitone, len0, lion., lolorollo, Mantrayana, mantwohouse, mdwd, MiD_NiGHT, Mk3E, most_uniQue, muLTiii, n1nja, NamiMote, Neonxen, nibble nibble, notfound, ofrefol, omgsrc, paulaner, pdr0, peppi200, PHIPU, R3s1stanc3, Rikanono, Rushkiller1000, SAR, Sayco, Scrilla, sh!fted, Silent0wn3r, SpyMorpheus, Stanley, superuser123, t33t86, Take1T, Tittler, TypX, ueEqlL, vital, vôl, will, Wizzle, x64ktg, Xenio, xmmlegends, xxas, Z3LuX
Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.