IT-Sicherheit in Produktion und Technik
12.09.17 - 13.09.17
In Berlin

Be CIO: IT Management im digitalen Wandel
13.09.17 - 13.09.17
In Köln

IBC 2017
14.09.17 - 18.09.17
In Amsterdam

Orbit IT-Forum: Auf dem Weg zum Arbeitsplatz der Zukunft
27.09.17 - 27.09.17
In Leverkusen

it-sa 2017
10.10.17 - 12.10.17
In Nürnberg

... und wie einfach sie sich mit selbstgeschriebener Schad-Software umgehen lassen. Ein Beitrag von Kyle Adams, Chief Software Architect, Juniper Networks.

Antivirenprogramme (kurz AV) sind ein elementarer Teil einer größeren Sicherheits- und Verteidigungsstrategie. Schließlich lässt sich durch ihren Einsatz die Verbreitung von Schad-Software über das Internet wirkungsvoll verlangsamen. Stellen Sie sich einen Landwirt vor, der seinen Viehbestand schützen will. Ein kluger Bauer wird seine Tiere bereits vor dem Auftreten von Krankheiten gegen diese impfen. Und sollte sich doch einmal eines seiner Tiere infizieren, so wird dessen Kontakt mit den anderen Tieren unterbunden, bis die Bedrohung selbständig und mit geringsten Verlusten vorüber geht. Ein unvorsichtiger Landwirt dagegen lässt womöglich keine oder nur einen kleinen Teil seines Bestandes impfen. Hat sich dann ein einzelnes Tier angesteckt, verbreitet sich die Infektion über die ganze Herde und verheerende Verluste sind die Folge.

Analog hierzu entspricht der Einsatz von Antivirenprogrammen einer Schutzimpfung für alle, mit dem Internet verbundenen, Computer und Geräte. Taucht eine neue Bedrohung auf, so wird ein zugehöriger Impfstoff erstellt – im AV-Bereich ist das eine Virensignatur die in sämtliche Rechner ‚injiziert‘, die Bedrohung identifiziert. So wird die Wahrscheinlichkeit, dass ein ungeschützter Rechner mit der Infektion in Kontakt kommt, beträchtlich verringert. 

Dieses System impliziert jedoch, dass immer noch Schäden auftreten können, bevor ein entsprechendes „Heilmittel“ entwickelt werden kann. Dies ändert nichts an der Notwendigkeit von AV-Software, zeigt aber, dass sie keinen ausreichenden Schutz gegen Gefahren darstellt. Um ein Ziel gegen eine Bedrohung zu immunisieren, muss diese Bedrohung auch bekannt sein. Daher müssen zumindest einige wenige Rechner infiziert werden, bevor ein Impfstoff zur ihrem Schutz verfügbar ist. Viele AV-Anbieter kehren diese Tatsache unter den Teppich, und auch einige Kunden wollen sie nicht wirklich wahrhaben. Einerseits, weil der Einsatz von AV-Software seit Jahrzehnten Industriestandard ist, andererseits, weil Antivirenprogramme lange Zeit als Wunderwaffe angepriesen wurden. 

Antivirenprogramme und Aufspürstrategien

Kürzlich referierte ich über Antivirenprogramme und Strategien zum Aufspüren von Schad-Software, um dieser ganzen Thematik mehr Gewicht zu verleihen und klar zu machen, dass neue, nicht identifizierte Gefahren tagtäglich in Netzwerke eindringen und dabei unausweichlich ihre Opfer fordern. Zur Demonstration der Problematik entwickelte ich eine Schad-Software, die als sogenanntes Command-and-Control-Bot (C&C) agieren sollte. Sie sollte Befehle von einem Angreifer erhalten und diese mit einem Maximum an User-Rechten auf der infizierten Maschine ausführen.

Viele moderne Angriffsformen setzen eine große Zahl unabhängiger Maschinen voraus. Eine dezentralisierte Denial of Service-Attacke (DDoS) beispielsweise benötigt viele tausend über das Internet verteilte Rechner, die gleichzeitig auf eine bestimmte Website zugreifen, um die Server zu überlasten und sie zum Absturz zu bringen. Ein C&C-Bot vereinfacht diese Art der Attacke ungemein. Sind die Bots nämlich flexibel und generisch genug, so muss der Angreifer diese im Vorfeld nicht mit einem exakten Einsatzplan ausstatten, sondern kann sie bei Bedarf problemlos für individuelle Attacken einrichten, ohne dass die Verbreitung einer neuen Schad-Software nötig wird. Tatsächlich kann der Angreifer dann hunderttausende unabhängige Computer über das Internet hinweg unter seiner Kontrolle haben und mit ihnen beliebige Aktionen ausführen. Es gibt sicherlich zahllose Wissenschaftler aus allen Forschungsbereichen, die ihren rechten Arm für eine derart leistungsfähige Rechnerfarm geben würden. Vor allem, wenn sie für ihre Nutzung nicht mal Geld ausgeben müssten.

Mit einer selbst geschriebenen Schad-Software wollte ich herausfinden, wie effektiv moderne Antivirus-Programme gegenüber unbekannten Bedrohungen sind – schließlich hatte ja noch kein AV-Anbieter den Code meiner Malware zu Gesicht bekommen, und so konnte noch keine Signatur für meinen Virus erstellt werden. Die Signatur-Methode bringt die Anbieter von AV-Software in eine schwierige Position. Um wirklich Schutz bieten zu können, sind innovative Erkennungsstrategien vonnöten, die nicht darauf beruhen, dass bereits die Signatur einer bestimmten Bedrohung zur Verfügung steht.

"Code-Emulation"

An dieser Stelle kommt eine Technologie namens "Code-Emulation" ins Spiel, die viele AV-Lösungen nutzen, um die Schwäche der Signaturen auszugleichen. Code-Emulation ist eine innovative Strategie einiger ausgereifterer Antivirus-Programme, um schädliche Applikationen zu identifizieren, selbst wenn sie mit diesen zuvor nicht in Berührung gekommen sind. Nicht alle Antivirus-Programme nutzen diese Technik, manche setzen auch alternative Strategien ein oder flankieren die Code-Emulation mit diesen. 

Ich habe meinen selbstgeschriebenen Virus mit einer Anzahl weit verbreiteter AV-Programme getestet – und idealerweise hätten all diese Programme Code-Emulation und ähnliche Strategien nutzen sollen. In der Praxis stellte sich aber heraus, dass nur einer von acht getesteten AV-Anbietern fähig war, meine Schad-Software zu erkennen.

Realistisch betrachtet, war dieses Ergebnis gar nicht so dramatisch. Da wenigstens ein Anbieter meine vorher unbekannte Schad-Software erkannte schlussfolgert, dass diese Schad-Software in „freier Wildbahn“ halbwegs flott identifiziert worden wäre. Und sobald eine Malware von mindestens einem Anbieter auf mindestens einem Rechner erkannt wird, werden die entsprechenden Details gewöhnlich allen anderen Anbietern zugeführt, damit jeder die entsprechenden Signaturen veröffentlichen kann. 

Aber trotzdem: In den ersten Tagen wäre es zu einem gewissen Kollateralschaden gekommen, bis meine Schad-Software und das entsprechende Antivirus-Programm des einen Anbieters aufeinander getroffen wären und dieser seine Erkenntnisse veröffentlicht hätte.

Vom Standpunkt des Angreifers aus bedeutet die Entdeckung der Schad-Software durch wenigstens einen AV-Anbieter, dass sie ihm nicht mehr lange nutzen wird. Je länger es bis zur Entdeckung dauert, desto wertvoller ist die Schad-Software aber für den Angreifer. Mein nächster Schritt war deshalb, meine Schad-Software für alle bekannten AV-Programme unsichtbar zu machen – so wie das die professionellen Malware-Autoren auch machen. Da mein Virus nur von einem Anbieter entdeckt worden war, sollte mein Aufwand vergleichsweise überschaubar sein.

Die Code-Emulation funktioniert so, dass eine Mini-Virtuelle Maschine innerhalb der Antivirus-Software erstellt wird, in der die mutmaßliche Schad-Software sicher ausgeführt werden kann. Der Emulator zeichnet sämtliche Aktionen der vermeintlichen Malware auf und verwendet heuristische Verhaltensmuster um festzustellen, ob diese auf einen bösartigen Code hindeuten. Ein Beispiel: Wenn die Emulations-Software bei der Ausführung einer Datei in der virtuellen Maschine feststellt, dass diese einen 'Auto-Start'-Registry Key hinzufügen will, der auf eine ausführbare Datei im Papierkorb zeigt, dann kann mit ziemlicher Sicherheit davon ausgegangen werden, dass es sich bei der verdächtigen Datei tatsächlich um Schad-Software handelt. Malware verwendet häufig Auto-Start-Schlüssel; Ein legitimer Auto-Start-Schlüssel dürfte niemals auf eine Datei im Papierkorb zeigen, da solche Dateien gewöhnlich nicht dauerhaft vorhanden sind. Bestehen bei der Ausführung einer mutmaßlichen Malware dagegen die einzigen erkannten Aktionen aus Dialogen mit vielen Animationen, so nimmt das Antivirus-Programm an, dass es sich hier um ein Spiel und nicht um bösartige Software handelt.

Der Anbieter, der meinen selbsterstellten Virus aufspürte, nutzte in der Tat Code-Emulation. Als die Software das Eindringen des Virus-Codes in das System bemerkte, wurde dieser automatisch innerhalb der Emulations-Umgebung ausgeführt und sein Verhalten unter die Lupe genommen. Nachdem es sich ja um einen Virus handelte, wollte der Code tatsächlich Registrierungsschlüssel schreiben, Software downloaden, Dateien verstecken und so weiter. Und so identifizierte die Antivirus-Software dieses Verhalten korrekterweise als bösartig. 

Malware wird schnell "verbessert"

Allerdings sind die Autoren von Malware clever und passen ihre Software ständig an neue Erkennungsstrategien an. Im Stile eines echten Malware-Programmierers wollte ich herausfinden, wie sich der Code-Emulator austricksen lassen könnte, damit er die Datei als nicht-bösartig einstuft. Dieser Prozess beinhaltete die einfache Analyse der AV-Software. Ich spreche hier nicht vom Auseinandernehmen des Binärcodes oder der Untersuchung des Speichers, sondern nur von einem simplen Wahr-oder-Falsch-Testansatz auf Basis von Versuch und Irrtum. Der Ansatz drehte sich um das Schreiben von etwas zusätzlichem Code für die Malware, durch den sie herausfinden sollte, ob sie emuliert wird. Wäre das der Fall, würde die Schad-Software beendet, ohne etwas Verdächtiges zu tun. Erkennt die Malware also den Emulator, so stuft die AV-Software die Datei als nicht-bösartig ein. Misslingt die Entdeckung des Emulators, erkennt das Antivirus-Programm die Datei richtigerweise als Schad-Software. 

Nach etwa einer Stunde konnte ich die erste erfolgreiche Ausweichstrategie identifizieren. Dabei stellte ich fest, dass der Code-Emulator in der fraglichen AV-Software nur eine begrenzte Zahl von Befehlen über eine bestimmte Zeit hinweg abarbeitete, bevor er den Code als gefahrlos einstufte. Um dieses Verhalten auszunutzen, modifizierte ich meinen Code so, dass er eine Schleife mit 80.000 Befehlen ausführte, bevor er zu den bösartigen Bits gelangte. Dadurch verbrachte die Antivirus-Software ihre begrenzte Zeit mit der Analyse der Schleife am Anfang des Virus, und erreichte nicht die Code- Zeilen, die sich bösartig verhalten. Das Ergebnis: Keine Entdeckung.

Letztlich nutzte ich hier nur eine einzige Methode, um herauszufinden, ob meine selbsterstellte Malware in einem Emulator läuft. Ich kenne aber mindestens sechs weitere Wege, den Emulator-Schutz zu umgehen. Alle sieben Techniken ließen sich dazu verwenden, eine Entdeckung der Malware durch die AV-Software zu verhindern. Und dabei sind diese Techniken weder wissenschaftliche Meisterleistungen, noch nutzen sie Day-Zero-Sicherheitslücken. In Wirklichkeit sind diese Methoden und hunderte, wenn nicht tausende Weitere bestens in den Foren der Malware-Autoren dokumentiert – und schon bis zu fünf Jahre alt.

AV-Programme sind keine Wunderwaffe

Der Zweck meiner Recherche und der Grund, sie öffentlich zu präsentieren, bestehen darin, einen Fokus auf den möglichen Erstschlag-Kollateralschaden zu setzen. Für mich war es absolut trivial, eine Malware (ob nun bestehend oder neuentwickelt) so zu verändern, dass sie von keinem einzigen aktuell auf dem Markt befindlichen AV-Programm aufgespürt werden kann. Wer das versteht, wird Antivirenprogramme nicht länger als Wunderwaffe und Allheilmittel ansehen. AV-Software mag wertvoll für die Verhinderung einer langfristigen Ausbreitung von Viren sein, kann aber ein Netzwerk nicht einmal vor mäßig intelligenten Malware-Autoren schützen. 

Was sollen Netzwerk-Administratoren nun tun, wenn doch das Werkzeug, auf das sie seit Jahren vertrauen, ihr Unternehmen in Wirklichkeit gar nicht vor gezielten Angriffen zu schützen vermag? Zunächst einmal: Verwenden Sie weiterhin AV-Software! Die erkennt womöglich nicht den allerneuesten, individuell erstellten Virus oder eine kunstvoll gestaltete Variante eines bekannten Schädlings, ist aber wenige Tage nach dessen ersten Auftreten die einzige Verteidigung gegen einen weit gestreuten Infektionsvektor. Hier kann es nur um Schadenskontrolle gehen, und nicht um Schadensvermeidung.

Realistisch gesehen leitet sich der beste Schutz gegen neue Bedrohungen von der Kombination mehrerer fortgeschrittener Lösungen ab. Heute werden innovative Methoden beim Aufspüren von Malware entwickelt, die ohne Signaturen auskommen, was bedeutet, dass eine Bedrohung nicht von vornherein bekannt sein muss. Ähnlich der Code-Emulation, aber erheblich leistungsfähiger und schwerer zu umgehen, ist das Konzept des ‚Sandboxing‘. Bei Sandbox-Lösungen werden verdächtige Dateien innerhalb einer realistischen Rechner-Umgebung ausgeführt, so dass die Malware nicht mehr zwischen einer Testumgebung und einem echten Zielrechner zu unterscheiden vermag. Dadurch kann das Sandbox-Programm die fragliche Datei erheblich genauer untersuchen und feststellen, was der Code im System des Endnutzers wirklich bewirkt. Daneben werden Lösungen wie Datei- und URL-Reputations-Tracking sowie Strategien zum maschinellen Lernen die Effektivität des Antiviren-Kampfes erheblich erhöhen. 

Ebenfalls wichtig ist der Einsatz von Produkten, die zu einem schnellen Echtzeit-Informationsaustausch fähig sind, damit die zeitliche Lücke zwischen der Veröffentlichung der Schad-Software und dem Schutz via Signatur, so klein wie möglich gehalten wird. Hier sind Cloud-Sicherheitsdienste gefragt: Es ist erheblich schwieriger für Malware-Autoren, erfolgreiche Verschleierungsstrategien zu entwickeln, wenn sie gezwungen sind, ihre Schad-Software gegen ein Black-Box-Erkennungssystem zu testen, das vom Hersteller selbst gehostet wird.

Bester Schutz: Kombinationen

Durch die Kombination von Antivirus-Software auf Client-Rechnern und im Netzwerk, Sandboxing, Code-Emulation und Reputations-Diensten können Administratoren widerstandsfähigere Verteidigungsstrategien entwerfen. Der Einsatz einer leistungsfähigen Anti-Malware-Lösung kann tatsächlich ausreichen, um in Zukunft gezielte Malware-Angriffe abzuwehren. Nichtsdestotrotz ist es wichtig, dass Administratoren ein Auge auf die Häufigkeit des Auftretens von Malware innerhalb des Netzwerks haben, um gezielte Attacken früh erkennen und genau beobachten zu können. Wird ein einzelnes Unternehmen wirklich gezielt angegriffen, kann ohne ein erhebliches, manuelles Eingreifen nur wenig getan werden, um Attacken erfolgreich abzuwehren. Es ist daher elementar, zu wissen, zu welchem Zeitpunkt so ein Eingreifen notwendig ist.

Noch ist nicht alles verloren, aber der Kampf wird bis in alle Ewigkeit weitergehen. Um auf Dauer bestehen zu können, müssen wir sorgsam sein und unseren Schutz stetig weiterentwickeln. Wer nachlässig agiert, wird zweifellos immer und immer wieder ernsthaften Schaden erleiden. 

www.juniper.net

Frische IT-News gefällig?
IT Newsletter Hier bestellen:

Newsletter IT-Management
Strategien verfeinert mit profunden Beiträgen und frischen Analysen

Newsletter IT-Security
Pikante Fachartikel gewürzt mit Shortnews in Whitepaper-Bouquet