PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Builder coden, Techniken Payload an Stub zu binden



0ilZ
14.07.2015, 18:39
Hi, hab in letzter Zeit einen einfachen Crypter in C++ geschrieben.
Der Builder zerlegt den Payload in 200KB große Stücke und fügt sie als Ressourcen in den Stub ein.
Kleine Dateien unter 500KB werden gecryptet nur von Avira als Dropper erkannt, größere aber von ziemlich vielen AVs.
Welche anderen Techniken gibt es, um den Stub FUD zu kriegen?

R3s1stanc3
14.07.2015, 18:50
Ich würde damit anfangen, einzelne Funktionen Schritt für Schritt rauszunehmen (bzw einfach den Code durch leere returns zu ersetzen um so rauszufinden, welcher Teil von deinem Code detected wird. Dann kannst du den umschreiben

gORDon_vdLg
14.07.2015, 18:53
Du dropst den Krämpel aber nicht einfach oder?

0ilZ
14.07.2015, 21:27
Ne hat schon ne RunPe.
Allerdings ist da auch das Problem, dass ich beim Stub im Linker die gleiche Base Adresse einstellen muss die der Payload hat, ansonsten kommt die Meldung "Anwendung konnte nicht gestartet werden 0x05".

Der Stub selbst wird nur von Avira detected, von etlichen anderen AVs nur wenn über ca. 3 200 KB Ressourcen eingefügt sind.

Jut4h.tm
14.07.2015, 21:48
womit verschlüsselst du denn den Payload? Ich kann dir in ner PM mal nen paar Ansätze schrieben

gORDon_vdLg
14.07.2015, 21:50
Hast du schonmal probiert ne Section hinzuzufügen anstatt das ganze als Ressource einzubinden? Du hast ja dann über den PE Header die Adressen, kannste zum Testen ja auch hardcoded probieren.

IRET
16.07.2015, 11:46
Hast du schonmal probiert ne Section hinzuzufügen anstatt das ganze als Ressource einzubinden? Du hast ja dann über den PE Header die Adressen, kannste zum Testen ja auch hardcoded probieren.

Meiner Erfahrung nach wird eine zusätzliche Section öfters als schädlich spezifiziert als eine zu große Ressource.

@TE: Welche Detection kriegst du? Schon mal probiert eine eigene RunPE zu schreiben?

0ilZ
16.07.2015, 13:44
Von Avira ist die Detection TR/Dropper.Gen.

rax
16.07.2015, 16:02
Haste die üblichen Sachen überprüft?
Hier ein vielleicht nützlicher Link: http://itsecuritylab.eu/index.php/2010/09/03/writing-crypter-bypassing-antivirus-how-to-for-beginners/

IRET
16.07.2015, 17:11
Von Avira ist die Detection TR/Dropper.Gen.



Ist die Detection auch ohne Payload (also nur die Stub) existent?

0ilZ
16.07.2015, 21:25
Ja aber bei den anderen 7 AVs von denen es detected wird nur mit Payload.

IRET
17.07.2015, 08:30
Ja aber bei den anderen 7 AVs von denen es detected wird nur mit Payload.

Ich würde erstmals die Dropper-Detection behandeln. Die ist halt sehr generell und kann von vielen Sachen kommen (u.A. auch zu große Ressourcen, aber auch von RunPEs usw). Leider beantwortest du essentielle Fragen nicht, wie ob du eine eigene RunPE verwendest und somit sind Fragen wie ob du "API-Encryption" verwendest, welche Calls du verwendest, welche Encryption du verwendest, usw. auch eher sinnlos.

Bei der Speichermethode kannst du auf die Sections zugreifen. Natürlich geht es mit .data, allerdings wird das höchstwahrscheinlich auch eine Detection auslösen. Du könntest den Payload aber in die Code-Section einfügen (PE-Header nachträglich ändern). Auch kannst du deine RunPE zu Shellcode umschreiben. Wenn in der IAT "LoadLibrary" und "GetProcAddr" steht, führt das auch öfters zur Dropper-Detection. Praktisch hierbei wäre, dass du deine RunPE dann komplett verschlüsseln könntest und diese dann einfach an Ort und Stelle entschlüsseln und direkt aufrufen. Sollte es am Ende dann tatsächlich nach all den Versuchen am Payload scheitern, kannst du dieses auch in der .code-Section speichern und mittels push auf den Stack schieben (und dann die RunPE aufrufen). Eine Weiterentwicklung davon wäre dass du dann zu den Pushes verschiedene Jumps einfügst und ein wenig Trashcode (nur Berechnungen). Das würde dein Payload allerdings auf das 2- bis 4-fache aufblasen.

0ilZ
17.07.2015, 13:06
Danke, werde versuchen einige deiner Vorschläge umzusetzen.