Erkennung von polymorphen/metamorphen Shellcodes

 

Shellcode:

Ein Shellcode ist ausführbarer Code, der von einem Angreifer verwendet wird um Buffer Overflows [1] in Programmen auszunutzen und beliebigen Code einzuschleusen. Viele der in den letzten Jahren aufgetretenen Würmer (Slammer, Blaster, Code Red, Sasser usw.) basieren auf solchen Angriffen [2] und verursachten große finanzielle Schäden. Daher werden Verfahren benötigt, um Shellcodes schon rechtzeitig zu erkennen und wenn möglich zu stoppen, bevor sie eine Sicherheitslücke auf einem Server attackieren können. "Normale" Shellcodes können bereits mit einfachen signatur-basierten Verfahren erkannt werden. Aus diesem Grund wurden in den letzten Jahren so genannte polymorphe/metamorphe Shellcodes entwickelt, deren Erkennung mit solchen Verfahren nicht mehr möglich ist.

Polymorphe Shellcodes:

Polymorphe Shellcodes [3], [4], [5] verwenden verschiedene Methoden, um eine Erkennung zu erschweren. Dazu gehören:

  • Verschlüsselung des eigentlichen Angriffcodes
  • Mutation der Entschlüsselungs-Engine (Polymorphismus und Metamorphismus)
  • Mutation der Return Adresse
  • Veränderung der NOP Zone eines Shellcodes

Alle der zuvor genannten Würmer verwenden keine dieser Verfahren. Daher war es nach einer Analyse möglich, einfache Signaturen für ihre Erkennung zu erstellen. Dies wäre bei einem polymorphen/metamorphen Shellcode nicht mehr möglich. Es ist aber nur mehr eine Frage der Zeit bis solche Shellcodes für Angriffe verwendet werden. Aus diesem Grund haben wir uns im Zuge von mehreren Arbeiten genauer damit beschäftigt, welche Methoden für die Erkennung von solchen Shellcodes verwendet werden können.

Erkennung

Es gibt bereits Verfahren zur Erkennung von polymorphen Shellcodes, die aber nur sehr eingeschränkt verwendet werden können. Dazu gehören:

  • Buttercup [6]
  • Fnord [7]
  • APE - Abstract Payload Exectution [8]

IAIK hat diese Verfahren analysiert und einen Ansatz entwickelt, in dem man sich für die Erkennung auf den Codeteil, der für die Entschlüsselung des eigentlichen Angriffs benötigt wird, konzentriert. Da einfache signatur-basierte Verfahren nicht verwendet werden können, werden dabei verschiedene Methoden aus dem Bereich "Maschinelles Lernen" verwendet, um eine Erkennung trotzdem zu ermöglichen. Die Verfahren lernen dabei die Struktur der Decryption Engine und wenden die gelernten Modelle auf den Netzwerkverkehr an.

Ansätze:

  • Erkennung von polymorphen Shellcodes mit Markov Ketten [9], [10]
  • Erkennung von polymorphen Shellcodes mit neuronalen Netzwerken [11], [12]
  • Erkennung von polymorphen Shellcodes mit SVM (Support Vector Machines)


Weitere Arbeit:

  • Verwendung von virtuellen Maschinen, um eine Analyse der ausgeführten Instruktionen zu ermöglichen.
  • Erweiterung der entwickelten Verfahren, um eine Erkennung von Viren zu ermöglichen.
  • Entwicklung von polymorphen/metamorphen Shellcode Engines, um die entwickelten Erkennungsmethoden zu evaluieren und zu verbessern
  • Integration von anderen Methoden aus dem "Maschinellen Lernen"

Literatur

[1] Smashing the stack for fun and profit - abgerufen von http://www.insecure.org/stf/smashstack.txt am 29.07.2005

[2] Experiences using Minos as A Tool for Capturing and Analyzing Novel Worms for Unknown Vulnerabilities - Jedidiah R. Crandall, S. Felix Wu, and Frederic T. Chong - abgerufen von http://minos.cs.ucdavis.edu/dimvamionos.pdf am 29.07.2005

[3] ADMmutate 0.8.4 by k2 - abgerufen von http://www.ktwo.ca/security.html am 29.07.2005

[4] Clet - Polymorphic shellcode engine using spectrum analysis - abgerufen von http://www.phrack.org/show.php?p=61&a=9 am 29.07.2005

[5] JempiScodes - Dragos Ruiu - abgerufen von http://www.shellcode.com.ar am 29.07.2005

[6] Buttercup - On network-based detection of polymorphic buffer overflow vulnerabilities - Pasupulati et al. - Network Operations and Management Symposium,   2004. NOMS 2004. IEEE/IFIP, volume 1, pages 235-248, 2004

[7] FNORD - abgerufen von http://cansecwest.com/spp_fnord.c am 29.7.2005

[8] APE- Abstract Payload Execution , Thomas Toth und Christopher Kruegel, Abgerufen von Accurate_Buffer_Overflow_Detection_via_Abstract_Payload_Execution.pdf am 29.7.2005

[9] U. Payer , S. Kraxberger: Markov Model for Polymorphic Shellcode Detection" INC 2005 Fifth International Networking Conference Workshops, 05 - 07 July 2005, Samos Island, Greece.

[10] U. Payer, S. Kraxberger "Polymorphic Code Detection with GA optimized Markov Models" CMS 2005 , 9th IFIP TC-6, TC-11Conference on Communications and Multimedia Security, 19-21 September 2005, Salzburg, Austria. (mit S. Kraxberger).

[11] U. Payer,   M. Lamberger, P. Teufl "Massive Data Mining for Polymorphic Code Detection" MMM 2005 , International Workshop on "Mathematical Methods, Models and Architectures for Computer Networks Security", 24 - 28 September 2005, St. Petersburg, Russia.

[12] U. Payer,   M. Lamberger, P. Teufl "Hybrid Engine for Polymorphic Code Detectione " DIMVA 2005 GI SIG SIDAR Conference on Detection of Intrusions and Malware & Vulnerability Assessment, 07 - 08 July 2005, Vienna, Austria.