Betriebsysteme

Angriffe auf Betriebsysteme

In den vergangenen Jahren haben die Angriffe auf Betriebsysteme stark zugenommen. Wobei der finanzielle Aspekt immer mehr in den Vordergrund gerückt ist. Wenn ganz am Anfang noch die persönliche Herausforderung private Entwickler angetrieben hat, einen Virus zu entwickeln, welcher sich möglichst schnell und weit ausbreitet, so ist heute ein ganzer Industriezweig entstanden, bei dem es vorwiegend um Spionage und Erpressung geht.

Quelle av-test.org

Unterschiede von Malware

Malware steht für Malicious Software dabei gibt es drei Hauptkategorien, Würmer, Viren und Trojaner. Oft eine Kombination aus zwei oder gar drei Arten.

Wurm

Der Wurm ist eine Malware, welche sich eigenständig durch Datenaustausch verbreitet. Hierbei nutz dieser entweder die Anbindung an ein Netzwerk oder Wechseldatenträger wie USB-Sticks. Eine eigentliche Gefahr geht von Würmern nicht aus, da diese nur die Zielsetzung haben sich schnell und weiträumig auszubreiten.

Virus

Der Virus hingegen ist eine bösartige Software, welche sich wie der Wurm selbständig ausbreiten will und und zu dem noch Daten sammelt oder Veränderungen am System vornimmt. Vorzugsweise gibt es systemspeziefische Viren, das heisst, Viren die nur für ein Betriebsystem erstellt wurden. Immer wieder hört man zwar von polymorphen Viren, die angeblich ihre Struktur verändern können und so auch mehrere Betriebsysteme gleichzeitig angreifen können, jedoch wurde bis jetzt noch keiner gefunden.

Trojaner

Der Trojaner ist eine Software, welche sich unbemerkt im System einnistet und gezielt nach Daten sucht um diese dann an einen Angreifer zu übermitteln. Auch kann dieser gezielt im System für Schäden eingesetzt werden. Ein Trojaner repliziert sich im Gegensatz zu einem Virus nicht von selbst.

Eine der häufigsten Kompilationen ist ein Trojaner-Virus, der sich im System versteckt um Eingaben von Passwörter mitzulesen und sich zusätzlich auf andere Systeme übertragen möchte.

Ransomware

Ransomware als „Modeerscheinung“ in Kombination mit Kryptowährungen. Mit dem Aufkommen der „anonymen“ Währungen hat sich ein neuer interessanter Markt entwickelt, die Ransomware. Die Ransomware ist eine Torjaner-Virus Kombination, welche sich möglichst schnell und flächendeckend auf Systeme ausbreiten möchte um dann dort die Dateien der Besitzer zu verschlüsseln. Danach fordert die Ransomware den Computerbesitzer auf ein „Lösegeld“ in einer Kryptowährungen anonym an den Angreifer zu zahlen um dadurch seine Daten wieder entschlüsseln zu können.

Scareware

Hierbei handelt es sich um einen Trojaner, der sich als Virenscanner ausgibt und vermeintlich gefundene Viren gegen Bezahlung löscht. Der Benutzer wird hier dadurch erpresst, dass man ihm vorspielt, sein System sei schon „verseucht“ und, dass nur der vermeintliche Virenscanner diesen Virus löschen kann.

Oft wird Herstellern von Virenscanner nachgesagt, dass diese selbst die Entwicklung von Malware vorantreiben, um eine Daseinsberechtigung auf dem Markt zu haben.

Warum gibt es „keine“ Malware für macOS von Apple oder Linux Betriebsystemen? Oft liegt es einfach daran, dass der Marktanteil zu gering ist und zusätzlich gewisse Betriebsysteme wie beispielsweise Linux von affinen Usern benutzt wird, die sich selbst helfen können und/oder sich nicht von den Erpressern täuschen lassen. Ach so neben bei bemerkt, der erste bekannte Virus aus 1982 heisst Elk Cloner und war ein Virus für das Betriebssystem von Apple 😉

Zero-Day-Exploits

Zero-Day-Exploits sind neu aufgedeckte Schwachstellen, bei der die Entwickler keine Zeit hat, also zero days, um ein Sicherheits-Patch bereitzustellen. Ausführliche Erklärung von Kaspersky.

Verbreitung von Malware

Es gibt drei Wege der Verbreitung, der klassische Weg ist ist hierbei über den Datenaustausch über das Netzwerk, also per e-Mail Anhang oder bei einer Installationsroutine durch Nachladen aus dem Internet.

Durch den drive-by-Download, der auch momentan zur häufigsten Verbeitungsmethode zählt. Hierbei gelangt die Malware durch den Besuch einer infizierten Webseite auf den Computer des Opfers. Oft ist die Malware hierbei in Java, Javascript oder Flash versteckt.

Oder letztere Verbeitungsmethode, die physische Verbreitung durch Datenträger. Diese wird sehr oft bei Angriffen gegen Unternehmen angewendet. Beispielsweise in dem man infizierte USB-Sticks im oder vor dem Unternehmen verteilt oder platziert. Der Mensch ist durch seine Neugier der beste Wirt für diese Art der Verbreitung.

Die Universität Illinois legte ca. 300 Flash-Drives mit „gutartiger Malware“ auf ihrem Campus aus, welche beim öffnen einer bestimmten Datei einen Ping zu einem Server ausführte um dadurch zu sehen, wieviele Finder einen fremden USB-Stick bedenkenlos in Ihren Rechner stecken.
45% der verteilten Sticks meldeten einen Ping. Den ausführlichen Artikel finden sie auf kaspersky.de.

Gegenmassnahmen

Einen 100%-igen Schutz wird es niemals geben, aber mann kann einige Sicherheitsvorkehrungen treffen, in diesem Fall ist es Ratsam immer ein aktuelles Betriebsystem zu verwenden, da hier Sicherheitspatches schnell und regelmässig vom Entwickler bereitgestellt werden. Zudem sollte man ein vertrauensvolles Antivirenprogramm verwenden, welches regelmässig mit Updates versorgt wird. Und zu letzt sollte man nur Datenträger aus bekannten und sicheren Quellen in seinen Rechner stecken.

Antivirenprogramme

Antivirenprogramme arbeiten fast alle auf dem selben Prinzip, in dem diese Dateien auf Signaturen von bekannter Malware untersucht. D.h. wurde eine neue Malware von einem Antivirenprogrammehersteller entdeckt, so untersucht dieser den Code der Schadsoftware und erstellt zu dieser eine Signatur. Diese Signatur wird dann an alle Benutzer des Antivirenprogramms per Update bereitgestellt. Das Antivirenprogramm untersucht dann auf dem Computer des Benutzer des Antivirenprogramms nach genau diesen Signaturen.

Reaktives Scannen

Beim Reaktives Scannen wird überprüft, ob die Signatur der Datei bekannt ist. Hierbei wird auch auf (geringfügige) Mutation der Datei geprüft, z.B. wenn Virus gepackt oder verschlüsselt ist. Hierfür verwendet das Antivirenprogramm eine Sandbox, eine vom System Abgeschottete quarantäneartige Umgebung um dort die Datei zu entpacken und/oder zu entschlüsseln.

Proaktives Scannen

Hierbei werden Verhaltensmuster des Systems mit bekannten Verhaltensmuster anderer Systeme verglichen um möglichst genaue Vorhersagen im Verhalten treffen zu können. Gibt es größere Abweichungen im verhalten des zu überprüfenden Systems, wird ein reaktiver Scan durchgeführt.

Systemscan (reaktiv)

Hierbei führt (durch den Benutzer veranlasst) das Antivirenprogramm einen partiellen oder ganzen Scan der Festplatte durch und sucht nach Dateien, welche die selbe Signatur besitzen, wie die vom Hersteller bereitgestellten Viren-Signaturen.

Real-Time Detection (reaktiv)

Dieser Scan wird immer vor einem Zugriff (Lesen oder Schreiben) auf eine Datei durchgeführt und überprüft die Datei auf die vom Antivirenprogrammhersteller bekannten Malware-Signaturen.

Activity Monitoring (proaktiv)

Hier lassen sich die Antivirenprogrammhersteller nicht so gerne in die Karten schauen, denn diese Erkennung unterscheidet die Antivirenprogramme in deren Funktionsweise. Activity Monitoring bedeutet, dass ein System periodisch auf Veränderungen überprüft wird. Dabei schaut das Antivirenprogramm darauf, ob die Veränderung rechtmässig ist, also vom System selbst oder durch den Benutzer aktiv durchgeführt wurde. Weitere Überprüfungen sind darüber hinaus ob das System ein virentypisches Verhalten zeigt beispielsweise Replikation gewisser Daten, Änderungen im AutoStart und welche DNS-Anfragen durchgeführt werden.

EICAR-Test

Wie Sicher ist Ihr System? Mit dem EICAR-Test können Sie Ihren Virenschutz überprüfen. EICAR stellt hierfür eine Signatur einer vermeintlichen Malware zur Verfügung welche von Ihrem Antivirenprogramme als Virus erkannt werden sollte, sobald diese auf Ihrem System erkannt wird. Der Test kann auf EICAR unter http://2016.eicar.org/85-0-Download.html in verschiedenen Formen heruntergeladen werden. Mehr über den EICAR-Test finden Sie auch auf Wikipedia.

Wie effektiv sind Virenscanner?

Da wir jetzt wissen, dass Virenscanner nur schon längst bekannte Viren erkennen können, stellt sich die Frage, wie effektiv sind denn dann Vierenscanner überhaupt und welche Faktoren spielen alles eine rolle bei einem Antivirenprogramm.

Ausschlaggebend für ein gutes Antivirenprogramm ist, dass die Datenbank der bekannten Malware-Signaturen tätig erweitert und sehr aktuell gehalten wird. Denn ein Antivirenprogramm, welches nur Malware vom letzten Jahr erkennt, ist sicherlich kein gutes Antivirenprogramm. Darum spielt der Faktor Zeit eine sehr große Rolle, bei der Erkennung neuer Viren. Liefert ein Antivirenprogrammhersteller seine neu gefundenen Viren-Signatur zeitnahe aus, so ist eine Ausbreitung der neuen Malware auf dessen geschützen Systemen nicht möglich.

Ein weiterer Faktor ist, dass der Antivirenprogrammhersteller genügend infizierbare Systeme (Honeypot) potentiellen Angreifern zur verfügung stellt, damit die Angreifer den Antivirenprogrammhersteller unwissentlich mit neuer Malware versorgen. Hier ist das Stichwort Erkennung durch Activity Monitoring und für den privaten Nutzer kostenlos bereitgestellte Antivirenprogramme in Betracht zu ziehen. Denn welchen Grund hat ein Antivirenprogrammhersteller Kunden mit kostenloser Software zu belifern, die in der Entwicklung sehr kostspielig ist? Antivirenprogrammhersteller wollen Ihr Produkt möglichst flächendeckend über verschiedene Systeme verteilen um diese als Honypot für Angreifer bereit zu stellen. Durch seine (hoffentlich sehr gut funktionierendes) Activity Monitoring werden neue Infizierungen frühzeitig vom Antivirenprogramm erkannt, an den Hersteller übermittelt, dort schnell und genau Untersucht, um dann andere Systeme schon vor dem Befall zu schützen.

Erfolgsstatistik von Antivirenprogrammen

Bei aktuellen Testverfahren die die Erkennungsquote von Antivirenprogrammen untersucht, variiert die Erkennung einzelner Antivirenprogrammen zwischen 40% und 99.9% erfolgreicher Malware-Erkennung. Hierbei wird aber nur auf schon bekannte Malware getestet, darum sollte die Erkennung eigentlich bei 99.9% liegen, jedoch löschen einige Antivirenprogrammhersteller alte Malware-Signaturen aus Ihrer Datenbank und mindern damit Ihrer Malware-Erkennungsquote. Oder Antivirenprogrammhersteller liefern Ihre aktuelle Malware-Signaturen nur an zahlende Kunden aus und versorgen ihre zur kostenlosen bereitgestellten Versionen nur etwas stiefmütterlich mit neuen Signaturen.

Alles in Allem ist ein Antivirenprogramm nur so gut wie Ihr Activity Monitoring System, der zeitnahen Versorgung neuer Signaturen so wie der Datenbestand bekannter Malware-Signaturen.

Wer bei Daten ganz sicher sein will, dass diese sauber sind, dem empfehle ich die zu überprüfende Datei auf VirusTotal hochzuladen, hier wird die Datei durch über 70 aktuelle Antivirenprogramme überprüft. Es gibt auch eine Desktopversion, welche auf dem Computer installiert werden kann um empfangene Daten schnell auf Malware zu überprüfen. Hier finden Sie die Desktopversion für Windows und macOS. Oder auch eine Extension für den Firefox Browser.

Isolation

Durch die Isolation von Programmen soll Vertraulichkeit (engl. Confidentiality), also Schutz vor unautorisierter Informationsgewinnung gewährleistet werden. Dies kann durch Implementierung erzielt werden, indem jede Anwendung in einer eigenen Umgebung (Sandboxing-Verfahren) läuft.

Umsetzung durch Virtualisierung

Der Grundaufbau ist, dass ein Virtualisierungsprogramm auf Anwenderebene durch das auf dem System installieren Betriebsystem verwaltet wird und isolierte, virtualisierte Hardware für Gastsysteme bereitstellt. Diese Gastsysteme können dann ein bereitgestelltes Programm in ihrer gesicherten Umgebung ausführen. Bei der Virtualisierung unterscheidet man zwischen Containern und Virtuellen Maschinen (VMs).

Virtuelle Maschine (VM)

Bei der Virtuellen Maschine wird die Hardware virtualisiert, das heisst, man kann Verschiedene Hardware virtuell einbinden. Dadurch ist man fast komplett vom Host-System und dessen Hardware gelöst. Vorteil ist, dass man dadurch eine Test-Hardwareumgebung oder eine für ein Betriebsystem benötigte Hardwareumgebung schaffen kann. Beispiel ein Intel-System kann ein AMD-System oder auch umgekehrt Virtualisieren. Nachteil ist, dass die Hardware virtualisiert wird und Rechenleistung und damit verbundene Zeit benötigt

Container

Bei einem Container ist man auf das Betriebsystem des Hosts angewiesen, denn hierbei teilen sich die Container das Betriebsystem des Hosts. Dadurch ist diese art der Virtualisierung „leichtgewichtiger“ als VMs, jedoch kann keine Hardware virtualisiert werden. Beispiel ein Intel-System kann kein AMD-System, oder umgekehrt virtualisieren. Vorteil, die Hardware wird nur durchgereicht und muss nicht virtualisiert werden, dadurch ist weniger Rechenleistung notwendig.

Intel Software Guard Extensions (SGX)

SGX ist ein spezielles Crypto-Modul auf Intel-Chips ab der Skylake Serie,
mit dem Hardware-geschützte Container („Enklaven“) erzeugt werden. Dadurch ist es möglich, dass man diese Container völlig isoliert vom System laufen lassen kann.

Trusted Platform Module (TPM)

Ein Trusted Platform Module ist eine vertrauenswürdige Hardware-Komponente, welche entweder bei der Herstellung des Systems oder im Nachhinein integriert wurde. TPMs beinhalten spezielle Module wie beispielsweise Crypto Engines zur schnelleren / besseren Berechnung von Verschlüsselungsalgorithmen wie RSA, SHA, PRG, usw. Auch besitzen TPMs speziell gesicherten Speicher für Schlüssel zur Ver- und Entschlüsselung und Platform Configuration Registers (PCRs) zur Systemüberprüfung.

Platform Configuration Registers (PCRs)

PCRs enthalten Hashwerte der verbauten Hardware- und auch Softwarekonfiguration des Betriebsystem und Veränderungen in Form von Manipulation zu bemerken. Zur Messungen für die PCRs werden allen Komponenten beginnend von der Hardware, dem Betriebsystem, der installieren Programmen und auch dem Umfeld mittels Netzwerk einbezohen. Zu viele Veränderungen fallen dem PCR auf und machen das System unsicher. PCR erlauben es, den Systemzustand durch Dritte prüfen zu lassen (Attestation). Beispielsweise kann ein Unternehmen (z.B. eine Bank) damit überprüfen ob Veränderungen an seinen System (z.B. Bankautomat) vorgenommen wurde.

Attestation

Beispiel (vereinfacht): Der Server möchte überprüfen, ob der Client noch als sicher eingestuft werden kann. Hierbei übersendet der Server dem Client bei Verbindungsaufbau eine Challenge, das Betriebsystem reicht diese Challenge an das Trusted Platform Module (TPM) weiter. Das Trusted Platform Module (TPM) signiert die Challenge mittels privatem Schlüssel, und seinem PCR-Wert und reicht diese Signatur an das Betriebsystem, dieses überträgt dann die Challenge dann zurück an den Server. Der Server prüft darauf die Signatur bzgl. des zertifizierten öffentlichen Schlüssels des TPM.

Testen und Verifizieren

Was ist der Unterschied zwischen Testen und Verifizieren?

Testen

Testen kann man im Prinzip alles, egal ob Software oder Hardware, jedoch sind Tests beschränkt auf die Eingabevektoren. Das heisst ich kann eine Eingabe auf Korrektheit, also einem Ergebnis überprüfen, aber ich kann nicht alle Eingaben auf Korrektheit überprüfen. Testen ist immer unvollständig.

Ein Beispiel zur Verdeutlichung: Wenn Sie ein Programm geschrieben haben, welches mittels Eingabe aus zweier Zahlen ein Ergebnis berechnet, so können Sie bestimmte Berechnungen mittels Ergebnis überprüfen, aber niemals alle möglichen Eingaben (wen Sie diese nicht beschränken).

Tests werden entweder statisch anhand des Quellcodes oder dynamisch, also zur Laufzeit durchgeführt. Auch können Test als white-box-testing durchgeführt werden, das heisst mit Zuhilfenahme des Quellcodes, um beispielsweise gewisse Eingaben zu überprüfen. Oder können als black-box-testing durchgeführt werden, dh. der Quellcode ist nicht einsichtbar und es werden beispielsweise wahllose Eingaben gemacht, ohne zu wissen, was die eigentliche Intension des Programms ist.

Verifizieren

Bei der Verifikation geht es darum, dass man zeigt, dass eine Hardware oder auch Software bestimmte Spezifikation erfüllt. Dazu wird ein
Korrektheitsbeweis gemäß der geforderten Spezifikation durchgeführt. Diese Durchführung ist zwar komplex, aber sollte immer vollständig sein, da eine Spezifikation immer erfüllt oder nicht erfüllt werden kann.

Security Testing

Vulnerability Testing

Unter Vulnerability Testing versteht man automatisiertes Testen mittels Software, welche auf schon bekannte Schwachstellen abzielt. Dabei wird beispielsweise überprüft, ob die Software überlange Eingaben akzeptiert und es damit eine Schwachstelle für Buffed Overflow gibt.

Penetration Testing

Beim Penetration Testing werden Angriffe maschinell oder auch per Hand simuliert. Beispielsweise führt man hier dann durch eine gezielte Eingabe eine Buffed-Overflow-Angriff oder eine SQL-Injection durch.

Security Auditing

Beim Security Auditing betrachtet man eine Software / System gemäß Spezifikation und Standards. Beispielsweise dem ISO 27034-1 Standard für sichere Software. Nachzulesen auf dev-insider.de.

Risk Assessment

Hierbei wird eine Kosten-Nutzen-Analyse aufgestellt bei der man abwägt, welches Risiko besteht und wie real dieses Risiko sein kann. Z.B. Einen Backup-Server auf einem Berg gegen Hochwasser zu schützen.

Funktionale & sichere Software

Leider ist eine funktionale Software nicht immer gleich eine sichere Software, da bei der Entwicklung der Software im ersten Schritt immer nur von der optimalen Eingabe ausgegangen wird. Kleines Beispiel bei der Programmierung eines „Taschenrechners“ wird in erster Linie davon ausgegangen, dass ein Benutzer nur Zahlen ein gibt. Doch wie sieht es aus, wenn der Benutzer Buchstaben eingibt? Akzeptiert das Programm diese Eingabe, gibt es eine Fehlermeldung aus, oder stürzt das Programm ab und wenn es abstürzt, wie stürzt es ab? Ermöglicht es vielleicht beim gezielten Absturz dem Benutzer Administratorrechte einzuräumen?

sichere Überprüfung

Wie sicher ist eine sichere Überprüfung? Lässt mich eine Eingabe auf die Korrektheit schliessen? Kleines Beispiel zur Veranschaulichung, dass eine sichere Überprüfung nicht immer Sicher ist. Bei Smartcards, die beispielsweise bei PayTV oder auch EC- und Kreditkarten genutzt werden wurde der Stromverbrauch des eingebautem integriertem Schaltkreises (ICC oder auch Chip genannt) bei jeder PIN-Eingabe gemessen und aufgezeichnet. Dabei wurde entdeckt, dass der Stromverbrauch bei Eingabe einer korrekten PIN signifikant höher ist, als bei einer falschen PIN-Eingabe. Dies ist darauf zurückzuführen, dass bei der Eingabe einer falschen Zahl die restlichen Zahlen nicht mehr überprüft werden müssen und das Programm eine weitere Überprüfung überspringt. Aus dieser gewonnen Erkenntnis kann man jetzt Zahl für Zahl durchprobieren und den Stromverbrauch messen, bis man die richtige Kombination hat und das schon bevor man die eigegebene Pin zur Überprüfung freigibt. D.H. Angreifer können mit dieser Methode auch der Kartensperrung nach drei falschen PIN-Eingaben übergehen, da Sie schon während der Eingabe Rückmeldung über die Korrektheit der eingegebenen Ziffer bekommen und diese bei falscher Wahl korrigieren können.

Siehe auch Power Analyse.

Meltdown & Spectre

Meltdown

Hierbei handelt es sich um Angriffe auf die spekulative Ausführungen von Code bei (Intel) Prozessoren. Die spekulative Ausführung wird bei Prozessorgen dafür benutzt um Ihre Taktfrequenz zu optimieren. D.H. ein Prozessor bezieht aus vorigen Programmausführungen Informationen über mögliche weitere benötigte Daten aus dem Speicher nimmt und diese schon vorberechnet und dann Rückschlüsse auf den eigentlichen Inhalt gibt. Dadurch überbrückt man die Grenze zwischen einem Programm und dem Betriebsystem. Durch Meltdown ist es zum Beispiel möglich, dass der Angreifer auf den Speicher, der von Firefox reserviert ist zuzugreifen und dort dann die Passwörter in Klartext auszulesen.

Weitere Informationen finden Sie beim BSI.

Spectre

Ähnlich wie bei Meltdown wird auch hier ein Angriff auf die spekulative Ausführungen von Code bei (Intel) Prozessoren durchgeführt. Nur dass man bei Spectre die Grenze zwischen verschiedenen Programmen überbrückt. Durch diesen Angriff ist es beispielsweise Möglich Cache-Informationen auszulesen. z.B. Passwörter.

Beide Angriffe sind einfach durchzuführen, sobald man physischen oder virtuellen Zugriff auf das Betriebsystem hat und der Nutzer hat momentan keine Möglichkeit sich dagegen zu schützen, da hierfür Veränderungen bei der spekulativen Ausführungen im Prozessoren vom Prozessor Hersteller Intel durchgeführt werden müssen.