Hallo zusammen,
ich versuche derzeit das Konstrukt eines guten PE-Crypters zu verstehen und umzusetzen, jedoch tauchen einige Fragen dazu auf.
Es scheint bei Cryptern ja immer um möglichst einzigartige, unbekannte Stubs zu gehen. Wäre es als Verschleierung für eine Stub bzw. die Stub und das daran gebundene Anhängsel sinnig, das Anhängsel zu codieren und danach den gesamten Programmcode zu nehmen, byteweise durcheinanderzuwürfeln und durch Sprungbefehle wieder den korrekten Programmablauf zu gewährleisten? So entstünde jedes Mal ein neues, unerkanntes Programm. Würde das die Erkennungsrate nach unten drücken? Oder ist es so, dass Virenscanner nach bestimmten vorkommenden Elementen suchen, z.B. den gängigen RunPE-Methoden? Was wäre ein guter Weg um eine Stub möglichst lange unerkannt zu lassen?
Ein weiterer - mit sehr viel Arbeit verbundener - Weg wäre es, praktisch die Stub in 10 Varianten zu schreiben und die einzelnen Arbeitsgänge vom Code her miteinander zu variieren, so dass praktisch pro Arbeitsgang eine Potenz von 10 entstehen würde. Jedoch - die Anzahl der verfügbaren RunPE- Methoden ist begrenzt, einige Variationen sind möglich, nur kann ich das Rad leider nicht xMal neu erfinden - irgendwann ist auch das detected.
Macht es in VB6 Sinn den Variablen / API-Aufrufen kryptische Bezeichnungen zu geben? Meines Wissens werden die Namen im kompilierten Code doch gar nicht mitgespeichert, oder?
Und nun zur letzten Frage: Nehmen wir an, der Virenscanner schlug bisher nicht an, die Stub mit dem gebunden Programm wird ausgeführt, das angehängte Programm wird zur Laufzeit entschlüsselt und in den Speicher geladen um nun dessen Code nun ausführen zu können. Jemand schrieb, dass Virenscanner mittlerweile auch den RAM überwachen, dass also spätestens jetzt Alarm vom Scanner ausgelöst wird. Würde es Sinn machen, die Malwäre wie oben beschrieben mit Sprungbefehlen zu durchsetzen und sinnlosen Code beizumengen oder gibt es dafür bessere Techniken?
Bitte nehmt mir diese Anfängerfragen nicht krumm. Mit diesen Informationen erspart ihr mir unglaublich viel Try&Error. Ich danke euch im Vorab für Denkanstöße und wünsche euch weiterhin einen schönen Abend.