Logo Scheinsicherheit

 

-- The Art of Patching -- Baustelle



 


1. The Art of Patching



Nachfolgender Artikel erschien im August 2002 im "Supernature-Forum":

 

"The Art of Patching -- Ein neuer Trend?
***************************************

Ich konnte seit längerer Zeit zum ersten Mal wieder einen kurzen Abstecher in die mir noch halbwegs vertraute VX Szene unternehmen. Eigentlich erwartete ich, dass sich die Diskussion dort vor allem um Optix Lite Firewall Bypass und ähnliche auf Tooleaky basierende Konzepte dreht. Letztlich habe ich dann aber etwas viel Interessanteres und wohl auch Bedrohlicheres entdeckt... das "Patchen" ;-)

-- Hintergrund --

Bislang hatten selbst erfahrene Remotecontroller (Anwender von Trojanern) erhebliche Schwierigkeiten, den Trojanerserver vor guten AV Scannern (insbesondere McAfee und KAV sind in der Szene "gefürchtet") zu verbergen. Die wenigen noch existenten .exe Packer/Crypter Kombinationen, die sowohl KAV als auch McAfee täuschen, wurden als absolute Geheimtips gehandelt. Inzwischen werden aber zunehmend sog. "gepatchte" Server (entgeltlich oder unentgeltlich) angeboten. Nach meiner Überzeugung wird es nur noch kurze Zeit dauern, bis selbst weniger erfahrene Remotecontroller die Technik des Patchens beherrschen und unerkennbare Trojaner-Mutationen herstellen können. Da die Verbreitung solcher gepatchten Trojaner voraussichtlich nicht nur über die allseits bekannten Trojaner-Websites, sondern zunehmend auch "unter der Hand an Freunde und Bekannte" erfolgen wird, dürften die AV Hersteller Schwierigkeiten bekommen, alle gepatchten Server zeitnah in ihre Signaturdatenbanken aufzunehmen.

-- Was ist Patchen? --

Durch das Patchen wird ein Trojanerserver so verändert, dass ihn der AV Scanner nicht mehr erkennt. Dazu wird zunächst die Signatur ermittelt, die der AV Scanner zur Erkennung benutzt. Anschliessend wird der in der Serverdatei enthaltene Hexcode, der der Signatur zugrunde liegt, geringfügig verändert. Dies geschieht etwa dadurch, dass die im Trojanerserver vorhandenen Assemblerbefehle durch synonyme Anweisungen ersetzt werden. Das Ganze ist wesentlich leichter, als es sich zunächst anhören mag. Besonders unangenehm: Von der Technik des Patchens sollten anders als beim Crypten & Packen nicht nur sog. Filescanner, sondern auch solche AV Scanner betroffen sein, die den laufenden Trojaner im Arbeitsspeicher zu erkennen versuchen (z.B.: Trojanhunter oder TDS-3).

Nachfolgend werde ich das oben Gesagte anhand eines Beispiels verdeutlichen, dabei jedoch nicht so sehr ins Detail gehen, dass eine Anleitung zum Patchen daraus wird. (Deshalb bleiben meine Formulierungen teilweise etwas vage. Zu Testzwecken wurde jedoch ein Optix Lite 0.4n Server erfolgreich gepatcht und gestartet.)

-- Wie läuft das Patchen ab? --

Es gibt bereits einige Tools, die einen Trojanerserver automatisch mit den Signaturen eines Virenscanners vergleichen können und auf diese Weise die benötigten Informationen zum Patchen offenlegen. Wenn man beispielsweise den Trojaner Optix Lite Version 0.4 mit der Kaspersky Signaturdatenbank vergleicht, ergibt sich folgendes Ergebnis:
________________________________________________________________
Wait Please ... Loading *.AVC files ...

backdoor.avc - Found 4936 valid signature(s) from 5397 records
daily.avc - Found 93 valid signature(s) from 156 records
eicar.avc - Found 2 valid signature(s) from 9 records
macro.avc - Found 105 valid signature(s) from 4744 records
malware.avc - Found 1408 valid signature(s) from 1588 records
script.avc - Found 265 valid signature(s) from 1841 records
trojan.avc - Found 5735 valid signature(s) from 6491 records
avp0208.avc - Found 24132 valid signature(s) from 28301 records
up020809.avc - Found 183 valid signature(s) from 255 records

Total valid signatures found: 36859

Checking files...

server.exe infected: Backdoor.Optix.04.d

Signature 1 found:
Offset: 45633 ( D851h)
Length: 7 ( 7h)
Checksum: (444198B8h)

Signature 2 found:
Offset: 51556 ( D604h)
Length: 255 ( FFh)
Checksum: (E1D3CE3Fh)
________________________________________________________________

Sucht man sich nun mit einem Hexeditor die entsprechende Stelle im Trojanerserver heraus, hat man die von KAV verwendeten Signaturen gefunden. Im Beispiel lautet die erste Signatur "6A00E33464F4FF". (Wird dieser String geringfuegig verändert, erkennt KAV den Server nicht mehr. Offenbar müssen bei KAV beide Signaturen 100% mit dem Server übereinstimmen, damit ein Alarm ausgelöst wird.)

Anschliessend wird der Hexcode disassembliert. Es stellt sich heraus, dass die Signatur folgende Befehle enthaelt:

push 00000000
call 0040428A

Es gilt nun diesen Code in beliebiger Weise zu verändern, ohne dabei die Funktion des Servers zu zerstören. Beispielsweise kann man den Call an eine andere Stelle umleiten und anschliessend an das ursprüngliche Ziel des Calls springen. Wie dies genau gemacht wird und welche Tools man dazu benutzen kann, möchte ich aus den o.g. Gründen hier nicht näher erläutern. Es ist aber im Prinzip sehr einfach.

Im Ergebnis funktioniert der gepatchte Server genau wie vorher, wird aber nicht mehr erkannt, da sich die Signatur verändert hat. (Edited: Um die Nachahmung zu erschweren, wurden die o.g. Zahlen ein wenig verfälscht.)

-- Konsequenzen? --

Ich denke, dass Trend des Patchens relativ ernst zu nehmen ist und den Nutzen von AV/Trojanerscannern ernsthaft in Frage stellt. Ich vermute, dass dem Patchen in nicht allzu ferner Zeit die gleiche Bedeutung zukommen wird, wie sie bislang dem Verwenden von .exe Packern und Cryptern zukam.

Das Problem des Packens und Cryptens von Trojanerservern ist dadurch weitgehend gelöst worden, dass gute AV Scanner inzwischen fast alle Packer und Crypter durchleuten können.

Um auch dem Patchen Paroli bieten zu können, müssten die AV Hersteller zunächst das Auslesen ihrer Signaturen erheblich erschweren. Insoweit sind wohl nicht nur Kaspersky erhebliche Versäumnisse vorzuwerfen. Letztlich lässt sich ein Auslesen der Signaturen aber wohl wirksam nicht verhindern (nicht mal mit einer SoftICE Protection). Ohnehin sind inzwischen bereits viele Signaturen bekannt. Es müssten also alle Signaturen neu erstellt werden...

Eine wirkliche Abhilfe gegen das Patchen kann meines Erachtens nur durch eine Abkehr vom signaturbasierten Scannen erfolgen. Die AV Hersteller müssten insoweit versuchen, eine bessere Heuristik zu entwickeln.

Auf Eure Meinung bin ich gespannt.

Gruss

Nautilus"

**************************************************

Um die Problematik des Patchens zu verdeutlichen, haben wir einen Optix Lite 0.4 Server in der oben beschriebenen Weise gepatched und ihn in unserem Testarchiv hinzugefügt. Unter anderem ging es uns darum herauszufinden, ob auch diejenigen AV Scanner, die die Kaspersky Scan Engine lizenziert haben, durch einen gegen Kaspersky Antivirus gerichteten Patch automatisch "mitbetroffen" sind.

 

 

2. Simples Hexediting

 

Eine wesentlich einfachere (und normalerweise auch weniger wirksame) Art, Malware vor AV/AT Scannern zu verbergen, ist das simple Hexeditieren von Strings: Es wird nicht der eigentliche Code des Schadprogrammes verändert, sondern es werden nur einige im Klartext vorkommende Wörter, wie beispielsweise der Name des Trojaners, modifiziert. Hierzu wird einfach die Suchen-und-Ersetzen-Funktion eines Hexeditors verwendet. Nähere Programmierkenntnisse oder ein grundlegendes Verständnis von Assembler sind nicht erforderlich.

 





Obiger Screenshot zeigt einen Ausschnitt des ungepackten Bionet 3.18 Servers. Es kann hier, ohne den Programmcode auch nur ansatzweise zu verstehen, einfach ein im Klartext vorkommender String, etwa das Wort "Bionet", durch eine andere Zeichenkette ersetzt werden. Da es sich um blossen Klartext handelt, wird die Funktionsfähigkeit des Programmes hierduch normalerweise nicht beeinträchtigt.

Wir haben zum Test an jeder Stelle im o.g. Programm das Wort "Bionet" durch den umgedrehten Ausdruck "Teniob" ersetzt. Auf vergleichbare Art und Weise haben wir einen ungepackten Optix Pro 1.2 Server hexeditiert.

Anschliessend haben wir die hexeditierten Server dem Testarchiv hinzugefügt, um zu sehen, ob sich AV oder AT Scanner durch diese simple Modifizierung der Trojaner beeindrucken lassen. Normalerweise sollte dies nicht der Fall sein, denn einer qualitativ hochwertigen Signatur liegen niemals solche leicht veränderbaren Strings zugrunde. Eine qualitativ hochwertige Signatur, die sich am eigentlichen Code des Programmes orientiert und sich deshalb nicht durch simples Hexeditieren verändern lässt, ist beispielsweise diejenige, die Kaspersky zur Erkennung des Trojaners Optix Lite 0.4 verwendet (siehe oben). Einige AV/AT Hersteller wählen dennoch "unsichere" Strings als Signaturen, da dies Arbeit spart und die namentliche Identifizierung eines Schadprogrammes erleichert.