Techniken zur obfuskation von quellcode

Was ist Obfuskation?

Unter Obfuskation versteht man in der IT alle Methoden, die darauf abzielen, die Lesbarkeit und das Verständnis eines Teils des Quellcodes zu verändern, ohne dessen Funktionsweise zu verändern.

Anwendungsschutz durch Obfuskation ...

Obfuskation kann als Werkzeug zum Schutz einer Anwendung in der Produktion eingesetzt werden, um deren „Reverse Engineering“ zu verhindern, d. h. die Möglichkeit für einen externen Benutzer, Quellcode zu verstehen, um beispielsweise potenzielle Schwachstellen auszunutzen.

Zu diesem Zweck ist es möglich, Variablennamen durch Zeichen wie den Unterstrich „_“ zu ersetzen, um keine Informationen über ihre Wichtigkeit preiszugeben.

... aber auch ein Werkzeug, das ausgenutzt werden kann

Techniken wie Obfuskation können jedoch auch für böswillige Zwecke eingesetzt werden. Im Hinblick auf die Sicherheit von Webanwendungen ermöglicht Obfuskation die Umgehung einiger Beschränkungen, z. B. von Sicherheitsmechanismen direkt im Quellcode oder von Firewalls für Webanwendungen.

Sie ist also ein zweischneidiges Schwert, da sie sowohl zum Schutz einer Anwendung als auch für Angriffe auf bestimmte Anwendungen geeignet ist.

Was ist der Unterschied zwischen einem normalen Angriff und einem Angriff durch Obfuskation?

1. Normaler Angriff

Standard Attack

Bei einem normalen Angriff sendet der Angreifer einfach einen Angriff auf den Server des Unternehmens, z. B. eine Befehlsinjektion, doch die Web Application Firewall analysiert die Anfrage und erkennt den Angriff. Da die Anfrage nicht legitim ist, kann der Benutzer nicht auf den Server zugreifen, und der Angriffsversuch wird in einem Protokoll festgehalten.

2. Obfuskation

Obfuscation attack

In diesem Beispiel sendet der Angreifer denselben Angriff, aber verschleiert diesen (dank der Techniken, die wir weiter unten sehen werden), so dass die Algorithmen keine zuverlässigen Schlüsse ziehen können.

In diesem Fall lässt die Webanwendungs-Firewall, die nicht dafür ausgelegt ist, Obfuskation zu erkennen, den Angriff durch und der Server kann gefährdet werden, weil die Webanwendungs-Firewall nicht in der Lage ist, eine echte Anfrage von einer gefälschten zu unterscheiden.

Welche verschiedenen Arten von Verschleierungen gibt es?

Es gibt mehrere Verschleierungstechniken, die sich von einer Sprache zur anderen unterscheiden:

Code-Verschleierung, welche Sprache?

1. Doppelte Kodierung

In einer Web-Anfrage (HTTP-Anfrage) entspricht jedes Zeichen einer hexadezimalen Zahl und kann folgendermaßen dargestellt werden: %XX, wobei XX die Zahl in hexadezimaler Form ist, z. B. %2F für “ / „.

Um einige Filter zu umgehen, ist es möglich, das Zeichen „%“ zu kodieren, so dass das „/“, das in Hexadezimalwerten %2F ergibt, als %252F kodiert werden kann.

Die doppelte Kodierung kann auch verschlüsselt werden, man spricht dann von Multikodierung, die verwendet wird, um Schwachstellen vom Typ Directory Traversal auszunutzen.

Damit eine Schwachstelle ausgenutzt werden kann, muss das Backend natürlich auch Multi-Decodierung beherrschen.

2.  Base64-Kodierung

Die Base64-Kodierung ist ein Verfahren, das für verschiedene Zwecke verwendet werden kann. Nehmen wir als Beispiel die Befehlsinjektion (siehe den entsprechenden Artikel).

Auf einem Terminal ist es möglich, einen Befehl in base64 zu konvertieren und ihn dann wie folgt auszuführen: „eval $(echo „bHMK“ | base64 -d)“.

Wenn eine Web Application Firewall nur dafür ausgelegt ist, bestimmte Befehle zu filtern, wird sie dieser Manipulation nachgeben und kann leicht umgangen werden.

3. Eigenschaften einer Sprache

Es gibt noch andere Möglichkeiten der Verschleierung, die mitunter direkt in einer Sprache implementiert sind, wie zum Beispiel Javascript mit seinem atomaren Teil.

Diese Verschleierungstechnik basiert auf einer Zeichenkette mit nur 6 Zeichen: [, ], (, ), ! und +, und ermöglicht es, Javascript-Code in ein für Menschen unverständliches Skript zu verwandeln.

Um den einfachen Buchstaben „d“ zu erhalten, muss man „[[][]]+[])[!+[]+[]]“ verwenden, so dass ein Code zur Ausnutzung eines XSS leicht mehr als 20.000 Zeichen erreichen kann.

Wie schützt R&S®Cloud Protector vor Obfuskation?

Um eine Falle zu vermeiden, verwendet R&S®Cloud Protector Normalisierungs-Engines, um Verschleierungstechniken zu erkennen, bevor die Analyse beginnt.

Die von R&S®Cloud Protector verwendeten Engines können rekursiv aufgerufen werden und so mehreren Verschlüsselungen entgegenwirken.

So werden die verschleierten Teile einer Anfrage entschlüsselt, analysiert und je nach Angriffsmuster an die verschiedenen Sicherheitsmodule weitergeleitet.

Fordern Sie Ihre 14-tägige gratis Testversion an

In nur 60 Sekunden Websites und Anwendungen schützen Worauf warten Sie?