Warum man mit digitalen Zertifikaten signierten Dateien nicht blind vertrauen darf

Inhalt

Das Vertrauen in Dateien, die mit digitalen Zertifikaten signiert sind, bildet einen Anreiz für Cyberkriminelle, nach verschiedenen Mitteln und Wegen zu suchen, schädliche Dateien mit vertrauenswürdigen digitalen Zertifikaten zu signieren. Im vorliegenden Bericht werden die wichtigsten Bedrohungen diskutiert, die in Zusammenhang mit signierten Dateien stehen, und es werden Tipps gegeben, wie sich die Risiken minimieren lassen, die durch den Start solcher Dateien entstehen.

Das Vorhandensein von digitalen Zertifikaten wird immer mit der Sicherheit von Dateien gleichgesetzt. Für die Nutzer ist das Vorhandensein einer Signatur ein Zeichen dafür, dass die Datei keinen schädlichen Code enthält. Viele Systemadministratoren bauen die Sicherheitspolitik eines Unternehmens darauf auf, dass sie den Usern den Start von nur solchen Dateien erlauben, die mit einem digitalen Zertifikat signiert sind. Zudem stufen einige Antiviren-Scanner eine Datei als zweifelsfrei sicher ein, wenn sie mit einer gültigen digitalen Signatur versehen ist.

Mittlerweile ist es allerdings so, dass das übersteigerte Vertrauen in signierte Dateien Cyberkriminelle dazu veranlasst, nach Methoden zu suchen, schädliche Dateien mit vertrauenswürdigen Zertifikaten zu signieren, um diese Dateien dann im Folgenden zu verbrecherischen Zwecken zu verwenden.

Im vorliegenden Bericht werden die wichtigsten Bedrohungen diskutiert, die in Zusammenhang mit signierten Dateien stehen, und es werden Tipps gegeben, wie sich die Risiken minimieren lassen, die durch den Start solcher Dateien entstehen.

Erstellung einer digitalen Signatur

Um die Bedrohungen herauszuarbeiten, die mit der Verwendung von digitalen Zertifikaten zusammenhängen, betrachten wir zunächst die Reihenfolge der einzelnen Schritte, die beim Signieren einer Datei mit einer digitalen Signatur erforderlich sind:

certificates_1_de

  1. Ein Software-Entwickler kompiliert eine Datei.
  2. Aus der Datei wird eine der folgenden Hash-Funktionen errechnet: MD5, SHA1, SHA2.
  3. Der Hashwert der Datei wird mit einem privaten Schlüssel des Softwareentwicklers chiffriert.
  4. Der so erhaltene verschlüsselte Datenblock und das digitale Zertifikat werden an das Ende der Datei angefügt.

Das digitale Zertifikat enthält einen öffentlichen Schlüssel des Programmentwicklers, der die Entschlüsselung der Mitteilung und die Überprüfung der Dateiintegrität ermöglicht, sowie Informationen, die einen Identitätscheck des Softwareentwicklers möglich machen.

Der Nachweis der Authentizität des Dateiherstellers wird mit Hilfe einer vertrauenswürdigen Zertifizierungsstelle erbracht. Diese Organisation bestätigt anderen Anwendern, dass der öffentliche Schlüssel, mit dem die Hashfunktion entschlüsselt wird und die Integrität der Datei überprüft werden kann, tatsächlich diesem Softwareentwickler gehört. Dafür signiert die Zertifizierungsstelle das Zertifikat des Entwicklers, indem es damit gleichzeitig bestätigt, dass das einzigartige Paar aus öffentlichem und privatem Schlüssel genau diesem Entwickler gehört. Das Zertifikat der Zertifizierungsstelle, das die Echtheit der Datei bestätigt, wird zusammen mit dem Zertifikat des Entwicklers ebenfalls am Ende der Datei hinzugefügt.

Die Zertifikate der Zertifizierungsstellen werden von niemandem bestätigt, außer von diesen Organisationen. Damit das Betriebssystem Windows Zertifikaten vertraut, die von einer bestimmten Zertifizierungsstelle ausgegeben wurden, muss das Zertifikat dieser Stelle im Zertifikatsspeicher des Betriebssystems platziert werden. Die Zertifikate der angesehensten Zertifizierungsstellen, die ihrerseits eine Zertifizierung durchlaufen haben, werden automatisch in dem Speicher abgelegt und den Nutzern zusammen mit den Updates des Betriebssystems Windows geliefert. Die Zertifikate anderer Zertifizierungsstellen kann der Nutzer selbstständig dem Speicher hinzufügen, vorausgesetzt, er vertraut diesen Organisationen.

Nutzung vertrauenswürdiger Zertifikate durch Cyberkriminelle

Wir werfen jetzt einen Blick auf Attacken, die auf jeder einzelnen Etappe der Signatur einer Datei umgesetzt werden können. Dabei werden wir keine theoretischen Angriffe untersuchen, die mit schwachen kryptografischen Algorithmen zusammenhängen, die beim Signierungsprozess verwendet werden, sondern wir werden uns auf die Angriffsmethoden konzentrieren, die von Cyberkriminellen am häufigsten in der Praxis angewendet werden.

Einschleusung von Schadcode während der Kompilierung der Datei

In vielen großen Softwareschmieden wird die Signierung von Dateien automatisch umgehend nach Beendigung des Kompilierungsprozesses vollzogen, der ebenfalls zentralisiert auf einem speziellen Build-Server abläuft.

Nachdem sich ein Cyberkrimineller Zugriff auf das Unternehmensnetzwerk eines Softwareentwicklers verschafft hat, kann er den Build-Server der Firma nutzen, um auf ihm Schaddateien zu kompilieren und diese anschließend automatisch mit dem digitalen Zertifikat des Unternehmens signieren zu lassen. Als Ergebnis dieses Angriffs erhält der Online-Gangster eine schädliche Datei, die mit einer gültigen digitalen Signatur versehen ist.

In der Praxis ist diese Bedrohung allerdings recht selten, da die Build-Server in großen Softwareunternehmen ausreichend gut geschützt sind. Trotzdem ist ein Fall einer erfolgreichen zielgerichteten Attacke bekannt, die das Signieren von Schaddateien mit Zertifikaten vertrauenswürdiger Unternehmen zum Ziel hatte.

Diebstahl des privaten Schlüssels

Manchmal gelingt es Internetverbrechern in das Unternehmensnetzwerk einer Firma einzudringen und sich den privaten Schlüssel anzueignen, der zur Signatur von Dateien verwendet wird. Unter Verwendung dieses privaten Schlüssels können sie eine vorhandene schädliche Datei signieren und sie als Datei eines legalen Softwareherstellers ausgeben.

Eine Möglichkeit, den privaten Schlüssel zu stehlen, besteht im Einsatz einer speziellen Schadsoftware, die eigens für diesen Zweck entwickelt wurde.

Nach dem Diebstahl des privaten Schlüssels benutzt der Angreifer den geklauten Schlüssel entweder selbst oder er verkauft ihn weiter. Dabei gilt: Je bekannter der Softwarehersteller, dessen privater Schlüssel gestohlen wurde, desto interessanter ist er für Internetgauner, da Software von bekannten Herstellern kein Misstrauen bei den Nutzern und Sicherheitsadministratoren von Unternehmensnetzwerken weckt.

Allerdings werden die privaten Schlüssel in großen Unternehmen, die Software produzieren, separat, in gut geschützten Hardwaremodulen verwahrt, was ihren Diebstahl deutlich erschwert. Daher werden in der Regel die Schlüssel kleinerer Unternehmen oder freiberuflicher Softwareentwickler gestohlen, die der Sicherheit keine so große Bedeutung zumessen.

Sicherheitslücken im Überprüfungsalgorithmus der Signatur ausführbarer Dateien

Damit das Betriebssystem weiß, wo in der Datei es nach Informationen über das Vorhandensein einer digitalen Signatur suchen muss, enthält der Header jeder ausführbaren Datei 8 Byte Daten mit Informationen über den Standort und die Größe der digitalen Signatur, die bei der Überprüfung der digitalen Signatur ausgeschlossen werden. Wenn am Ende der Dateisignatur ein Datenblock ergänzt und die Größe der Signatur um den entsprechenden Wert gesteigert wird, so haben diese Veränderungen ebenfalls keine Auswirkungen auf die Überprüfung der Signatur. Dadurch wird es möglich, in einer signierten Datei zusätzlichen Raum zu gewinnen, wobei die Daten in diesem Raum das Ergebnis der Signaturüberprüfung nicht beeinflussen.

certificates_2_de

Dieser Algorithmus findet aktive Anwendung in legalen Web-Installern: Ihre Autoren verändern die Größe der Signatur so, dass ein zusätzlicher Datenblock auftaucht, der es ermöglicht, in den Block der digitalen Signatur einen Link auf die Datei einzufügen, die der jeweilige Installer von der Site des Softwareentwicklers herunterladen und im System des Anwenders installieren soll. Für Entwickler ist dieser Ansatz deswegen komfortabel, weil er es nicht erforderlich macht, den Installer bei jeder Veränderung des Links auf ein Distributiv des Programms erneut zu signieren – es reicht völlig aus, den Link zu verändern, der im Block der digitalen Signatur gespeichert ist.

Internetkriminelle verwenden den oben beschriebenen Algorithmus zu ihren eigenen Zwecken. Sie verändern in einem Web-Installer eines legalen Programms den Link auf das herunterzuladende Distributiv, damit der Installer Malware lädt und im System installiert. Daraufhin legt er den veränderten Installer auf den Websites ab, über die Programme verbreitet werden.

Um diese Sicherheitslücke zu beseitigen, hat Microsoft ein Sicherheitsupdate herausgebracht, das eine strenge Überprüfung der digitalen Signatur einer Datei ermöglicht. Allerdings wird dieses Update nicht automatisch angewendet, da viele Softwareentwickler den oben beschriebenen Algorithmus in ihren Installern verwenden und die Programme dieser Entwickler nach der automatischen Aktivierung dieses Updates als nicht mehr signiert gelten würden. Bei Bedarf können Nutzer dieses Update manuell aktivieren.

Nutzung eines auf legalem Wege erhaltenen Zertifikats

Während Zertifikate noch vor wenigen Jahren ausschließlich von großen Softwareherstellern (juristischen Personen) verwendet wurden, so werden sie heute immer häufiger auch von privaten Softwareentwicklern und kleineren Firmen eingesetzt. Die folgende Grafik zeigt die Zuwachsdynamik der Kaspersky Lab bekannten Zertifikate, die zum Signieren von Code vorgesehen sind. Wie man sieht, steigt die Zahl der Zertifikate von Jahr zu Jahr weiter an.

Zahl der Kaspersky Lab bekannten Zertifikate, deren Echtheit von Zertifizierungsstellen bestätigt wurde

Die notwendige Prozedur zum Erwerb eines Zertifikats zum Signieren von ausführbarem Code ist überaus einfach: Von Privatpersonen werden Ausweisdaten gefordert, von Unternehmen die entsprechenden juristischen Angaben. Dabei kontrollieren einige Stellen, die Zertifikate ausgeben, noch nicht einmal die Tätigkeit des Unternehmens, das ein Zertifikat erwirbt. Alles, was die Zertifizierungsstelle tut, ist, dass sie ein Zertifikat mit dem Recht zum Signieren von ausführbaren Dateien ausgibt und bestätigt, dass das Zertifikat tatsächlich an die jeweilige Person oder das jeweilige Unternehmen ausgegeben wurde.

Das eröffnet Cyberkriminellen die Möglichkeit, legal ein Zertifikat zum Signieren von schädlicher und potentiell unerwünschter Software zu kaufen.

Meistens greifen Unternehmen, die potentiell unerwünschte Software herstellen, auf den Erwerb eines Zertifikats zurück. Einerseits entwickeln diese Unternehmen keine schädliche Software, folglich können sie rechtmäßig ein digitales Zertifikat zum Signieren ihrer Programme erhalten. Andererseits bereitet die von diesen Unternehmen produzierte Software den Nutzern Unannehmlichkeiten. Um das Vertrauen in solche Programme seitens der Anwender zu stärken, werden solche Programme mit digitalen Zertifikaten signiert.

Nicht vertrauenswürdige Zertifikate

In allen oben beschriebenen Fällen – dem Diebstahl des privaten Schlüssels, dem Hack der Unternehmensinfrastruktur und der Signatur der Datei mit dem digitalen Zertifikat dieses Unternehmens, dem Kauf eines Zertifikats zum Zwecke des Signierens von schädlicher Software – in allen diesen Fällen läuft es auf ein und dasselbe hinaus: Ein vertrauenswürdiges Zertifikat signiert eine schädliche Datei.

Folglich können solche Zertifikate – ungeachtet der Tatsache, dass ihre Echtheit von einer Zertifizierungsstelle bestätigt wurde – nicht als vertrauenswürdig betrachtet werden, da sie zur Signatur von schädlichen Dateien benutzt wurden oder noch immer benutzt werden. Im Folgenden werden wir diese Zertifikate als nicht vertrauenswürdig bezeichnen.

Wird einem Softwareentwickler der private Schlüssel gestohlen oder wird illegal in die Infrastruktur eines Unternehmens eingedrungen und eine Schaddatei mit einem vertrauenswürdigen Zertifikat signiert, so bestätigen die Zertifizierungsstellen nicht länger die Vertrauenswürdigkeit der von ihnen vormals ausgegebenen Zertifikate (sie rufen das Zertifikat zurück). Die Reaktionsgeschwindigkeit der Zertifizierungsstellen hängt davon ab, wie schnell bekannt wird, dass das Zertifikat von irgendjemand anderem benutzt wurde als dem Entwickler.

Doch wird ein Zertifikat zum Zwecke der Signatur von potentiell unerwünschter Software gekauft, rufen die Zertifizierungszentren das Zertifikat nicht immer zurück, das heißt das Zertifikat behält seine Gültigkeit, wird dabei aber zur Signatur potentiell gefährlicher Programme benutzt.

Die folgende Grafik zeigt den Anteil der Zertifikate, die zur Signatur von potentiell unerwünschter Software benutzt werden, an allen nicht vertrauenswürdigen Zertifikaten (laut Daten von Kaspersky Lab).

certificates_4_de

Verteilung nicht vertrauenswürdiger Zertifikate nach Typen

Tipps zum Schutz vor dem Start von Programmen, die mit nicht vertrauenswürdigen Zertifikaten signiert sind

Wir haben die am weitesten verbreiteten Methoden betrachtet, die Cyberkriminelle verwenden, um ihre Dateien mit digitalen Zertifikaten zu signieren. Aktuell spitzt sich das Problem des Signierens von schädlichen und potentiell unterwünschten Programmen mit einem digitalen Zertifikat immer weiter zu: Während im Jahr 2008 etwa 1500 Zertifikate ausgegeben wurden, die in der Folge zum Signieren von Malware benutzt wurden, so gab es im Jahr 2014 bereits über 6000 solcher Zertifikate.

Veränderung der Zahl der Kaspersky Lab bekannten, nicht vertrauenswürdigen Zertifikate

In Anbetracht der Zunahme von Bedrohungen, die mit dem Signieren schädlicher Dateien zusammenhängen, dürfen Anwender und Administratoren dem Vorhandensein eines digitalen Zertifikats keinesfalls bedingungslos vertrauen und auf dieser Grundlage über den Start von signierten Dateien entscheiden.

Hier ein paar praktische Tipps, wie man die Wahrscheinlichkeit verringern kann, neue, den Virenscannern bisher unbekannte Malware auszuführen, die mit einem gültigen digitalen Zertifikat signiert ist:

  1. Nur solchen Programmen die Ausführung erlauben, die von bekannten Herausgebern signiert sind.Das Risiko einer Systeminfektion lässt sich deutlich reduzieren, wenn Programmen der Start untersagt wird, die mit einer digitalen Signatur eines unbekannten Softwareherstellers ausgestattet sind. Denn wie bereits oben geschildert, werden meistens Zertifikate von kleinen Softwareentwicklern gestohlen.
  2. Den Start von Programmen aufgrund einzigartiger Attribute der digitalen Signatur erlauben.Unter ein und derselben Bezeichnung können mehrere Zertifikate verbreitet werden, die von einem Unternehmen ausgegeben werden. Wird eins von diesen Zertifikaten eines bekannten Unternehmens gestohlen, wird der Start einer Datei, die mit dem gestohlenen Zertifikat signiert ist, erlaubt, wenn das einzige Kriterium das Vertrauen zu bekannten Softwareherstellern ist.

    Um solche Situationen auszuschließen, muss der Start von Programmen, die mit bekannten Zertifikaten signiert sind, auch aufgrund von anderen Attributen als dem Zertifikatsnamen erlaubt werden. Solche Attribute können die Seriennummer oder die Hash-Summe sein. Da die Seriennummer nur in den Grenzen der Zertifizierungsstelle unikal ist, empfiehlt es sich, sie in Kombination mit dem Namen des Unternehmens zu verwenden, das dieses Zertifikat signiert hat.

  3. Update MS13-098 aktivieren.Erfahrene Benutzer und Systemadministratoren sollten das Update MS13-098 aktivieren – es korrigiert einen Fehler, der es ermöglicht, in eine signierten Datei zusätzliche Daten einzufügen, ohne dabei die Signatur der Datei zu zerstören. Nähere Details zur Aktivierung dieses Updates finden Sie im Sicherheitscenter von Microsoft.
  4. Keine Zertifikate von unbekannten Zertifizierungsstellen im Zertifikatsspeicher ablegen.Es empfiehlt sich nicht, Wurzelzertifikate von unbekannten Zertifizierungsstellen im Speicher zu installieren, da im Folgenden alle Dateien, die mit von dieser Zertifizierungsstelle bestätigten Zertifikaten signiert sind, als vertrauenswürdig gelten werden.
  5. Eine von AV-Anbietern bereitgestellte Datenbank vertrauenswürdiger Zertifikate verwenden.Einige AV-Hersteller, darunter auch Kaspersky Lab, integrieren in ihre Produkte eine Datenbank vertrauenswürdiger und nicht vertrauenswürdiger Zertifikate, die regelmäßig zusammen mit den Antiviren-Datenbanken aktualisiert wird. So erhält man aktuelle Informationen über bisher noch nicht zurückgerufene Zertifikate, mit der schädliche und potentiell unerwünschte Software signiert wird. Dateien, die mit nicht vertrauenswürdigen Zertifikaten aus dieser Datenbank signiert sind, unterliegen einer verstärkten Kontrolle seitens des AV-Programms.

    In der Datenbank der vertrauenswürdigen Zertifikate sind Zertifikate bekannter Herausgeber enthalten, die zur Signatur vertrauenswürdiger Programme verwendet werden. Das Vorhandensein eines Zertifikats in dieser Datenbank könnte eine Erlaubnisregel für die Programmstartkontrolle im Unternehmensnetzwerk werden.

    Mit einer solchen Datenbank als Bestandteil eines AV-Produkts kann der Druck auf den Administrator gemindert werden, da er von der Aufgabe befreit wird, eine Datenbank vertrauenswürdiger Zertifikate zu erstellen und diese regelmäßig zu pflegen.

Die Zahl der digitalen Zertifikate, die zum Signieren schädlicher und potentiell unerwünschter Programme benutzt werden, verdoppelt sich durchschnittlich innerhalb eines Jahres. Daher ist eine verstärkte Kontrolle signierter Dateien durch einen Antiviren-Schutz und die Verfolgung der oben beschriebenen Sicherheitspolitik unerlässlich.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.