MCSoft Security Solutions
 
Home
Projekte
Überblick

Netzwerk
Shellcodes

Details und Analyse
Detektierung


MCSoft Projekt - Polymorpher Shellcode unter Win32

Details und Analyse

Mögliche Ciphermechanismen für Shellcodes
In bisher bekannten polymorphen Shellcodes werden zur Verschlüsselung XOR Verknüpfungen mit ein oder mehr Byte Schlüssel und diverse andere umkehrbare Operationen wie ADD, SUB, ROL, ROR, INCR, DECR durchgeführt. Einen guten Ansatz dazu stellt die Mutation Engine von CLET bereit. CLET generiert unterschiedliche Decipher Routinen und deshalb wird kein Code zwischen den Instruktionen eingefügt, da sich jedes Mal die verwendeten Register, die Abfolge der Instruktionen und die Type der Instruktionen (ADD, XOR, ROR,...) ändert. Eine alleinige Anwendung von XOR mit einer fixen Schlüssellänge ist nicht genug.
Ein trainiertes neuronales Netzwerk kann mit einer äußerst guten Erfolgsrate die Decipher Routinen von CLET erkennen. Unklar ist allerdings bis jetzt ob auch der von CLET verschlüsselte Shellcode erkannt werden kann (wird noch untersucht). Hier in dieser Arbeit sollen andere mögliche Ciphermechanismen für Shellcodes geprüft werden. Polymorphismus in CLET durch XOR, ADD und ROT erzeugt soll hier durch einen einfachen Cipher Algorithmus erzeugt werden. Es ist dadurch mit hoher Wahrscheinlichkeit sichergestellt, dass der verschlüsselte Shellcode selbst nicht erkannt werden kann. Die Herausforderung besteht darin, dass die Decipher Engine des Shellcodes polymorph gestaltet wird um den Ansatzpunkt für herkömmliche Erkennungsmechanismen zu nehmen.

Analyse von polymorphem Shellcode und polymorphen Viren unter Win32
Windows basierte Shellcodes beinhalten verschiedene Module und es gibt mehrere Möglichkeiten die benötigten Funktionen umzusetzen. Durch die Verwendung von System calls muss ein Übergang vom Usermode in den Kernelmode vollzogen werden. Deshalb wird zunächst die kernel32.dll gesucht um die Symbol Adressen der verwendeten Funktionen ausführen zu können bzw. nicht geladene DLL's nachladen zu können. Für all diese Prozeduren gibt es verschiedene Ansätze, wie PEB, SEH oder TOPSTACK.
Es sind bereits eine vielzahl von polymorphen Generatoren bei Viren analysiert worden. Eine Kombination dort verwendeter Methoden scheinen sich gut bei der Generierung von polymorphen Shellcode zu eigenen. Generatoren von Viren verwenden polymorphe Compiler, Instruction Substitution, zwei Layer Verschlüsselung, Einfügen von fortgeschrittenen NOP Instruktionen. Ältere, wie die Trident Polymorphic Engine wurden durch komplexe Generatoren ergänzt sowie ersetzt.
Es steht hier auch zur Frage ob die Decipher Routine anderer Algorithmen besser, bzw. anders, mutiert werden kann, so dass möglicherweise das neuronale Netzwerk diese nicht mehr erkennen kann. Cipher Algorithmen weisen mehr Instruktionen auf und bieten deshalb eine Vielzahl an möglichen Mutationen.

Referenzen
[1] Phrack P61-0x09 Polymorphic Shellcode Engine
[2] Phrack P49-14 Smashing the stack for fun and profit
[3] The Metasploit Project
[4] Advanced Polymorphic Worms evading IDS by Blending in with Normal Traffic
[5] SNORT - The Open Source Network Intrusion Detection System
[6] NOLogin - Understanding Windows Shellcode
[7] The Shellcoder's Handbook: Discovering and Exploiting Security Holes, Jack Koziol, David Litchfield et al, Wiley Publishing, Inc., 2004
[8] A shellcode mutation Engine (ADMmutate)
[9] VX Information
[10] VX Heavens