Web-Application- und E-Business-Security - APT

Aus FernFH MediaWiki
Zur Navigation springen Zur Suche springen

APT

Einleitung

Advanced Persistent Threat (APT, also „fortgeschrittene, andauernde Bedrohungen“) stellen zielgerichtete Angriffe meist auf kritische IT-Infrastrukturen und vertrauliche Daten dar. Das Kapitel zeigt exemplarisch eine Aufarbeitung eines echten Angriffes auf die ThyssenKrupp AG. APTs gibt es viele, meist haben sie neben/statt der Nummer auch einen eigenen Namen [1] , wie in dem Fall „WINNTI“.

Der Angreifer

„The WINNTI Group“ ist der Name einer Hacker Gruppe, die die Malware Familie WINNTI verwendet [66]. Es gibt allerdings keine gesichert von der Gruppe stammenden Veröffentlichungen. Alle bekannten Informationen sind aus Analysen der Angriffe abgeleitet oder stammen aus Recherchen im Internet. Bis heute hat sich die Art der Angriffe mit WINNTI stark diversifiziert und auch die Anzahl der Angriffe hat signifikant zugenommen, dass spekuliert wird, dass WINNTI mittlerweile als Angriffswerkzeug von mehreren Gruppen benutzt wird [67]. Die erste Gruppe scheint bereits seit 2009 aktiv zu sein [67]. Anfänglich scheint die Gruppe sich für den Diebstahl von Quellcode von online Spielen und digitalen Zertifikaten sowie Netzwerkinfrastrukturen und Know-how im Allgemeinen interessiert zu haben[66]. Die Gruppe hat ihre Aktivitäten dann im Laufe der Zeit auf professionelle Industriespionage ausgedehnt. Auf Grund von Aktivitäten um gestohlene Zertifikate wird spekuliert, dass die WINNTI Gruppe entweder eine chinesische Hackergruppe ist, im Zertifikatshandel auf dem chinesischen Schwarzmarkt tätig ist oder zumindest sehr gute Kontakte zu einer oder mehreren chinesischen Hackergruppen unterhält[66]. Die Gruppe benutzt außerdem chinesische Kommentare in ihren Programmen. Es wurde jedoch gezeigt, dass die Angreifer koreanische Betriebssysteme benutzen[66]. Basierend auf den vorliegenden Fakten wird die Gruppe daher keinem konkreten Land, sondern einem nicht weiter spezifizierten südostasiatischen Land zugeordnet. Bei der Analyse der verwendeten Malware wurde mehrfach der String „YDTeam“ identifiziert. Recherchen haben gezeigt, dass es ein gleichnamiges Hackerteam zu geben scheint. Es wird daher vermutet, dass zumindest eine der WINNTI Gruppen auch unter dem Namen YDTeam arbeitet[66].

Das Ziel

Es wird vermutet, dass die Gruppe, die hinter WINNTI steht, in ihren Anfängen hauptsächlich Spielehersteller angegriffen hat. Später kamen offenbar andere Wirtschaftsunternehmen als Ziele hinzu. Im Rahmen dieses Kapitels wollen wir uns jedoch auf das prominenteste Ziel, die ThyssenKrupp AG, fokussieren. Im Folgenden wird die ThyssenKrupp AG als Ziel vorgestellt. Die gemachten Angaben beruhen auf dem Geschäftsbericht 2015 /2016 der ThyssenKrupp AG [68] und spiegeln somit den wirtschaftlichen Zustand des Unternehmens zum Zeitpunkt des Angriffs wieder. Die ThyssenKrupp AG ist ein deutscher Mischkonzern mit dem Schwerpunkt Stahlverarbeitung. Das Unternehmen ging 1999 aus der Fusion der Friedrich Krupp AG Hoesch-Krupp mit der Thyssen AG hervor. Die ThyssenKrupp AG verfügt in 78 Ländern über insgesamt ca. 2000 Standorte und 6 regionale Zentralen. Bei der Netz-Infrastruktur von ThyssenKrupp handelt es sich somit um ein globales Netzwerk, dessen Zugänge sich nur schwerlich vollständig kontrollieren lassen. 156.487 Mitarbeiter erwirtschafteten im Jahr Geschäftsjahr 2015 / 2016 einen Auftragseingang von 37.424 Millionen € und einen Umsatz von 39.263 Millionen €. Hieraus wurde ein Jahresüberschuss von 261 Millionen € erwirtschaftet. Die ThyssenKrupp AG verfügt folglich über erhebliche Werte im Bereich des geistigen Eigentums. Entsprechend ist die AG ein attraktives Ziel für professionelle Angreifer mit monetären Absichten. Gleichzeitig ist die ThyssenKrupp AG aber auch in viele kritische staatliche Projekte eingebunden, sodass die ThyssenKrupp AG auch ein interessantes Ziel für staatlich oder politisch motivierte Angreifer, sogenannte Hacktivisten ist. Innerhalb von ThyssenKrupp waren die konkreten Ziele die Geschäftsbereiche Industrial Solutions und Steel Europe mit der Zielsetzung des Diebstahl von technologischem Know-how und Forschungsergebnissen [69].

Angriff

Der Angriff auf die ThyssenKrupp AG lässt sich als Advanced Persistent Threat (APT) einordnen. Die im Folgenden angegebenen Sachverhalte beruhen auf einer Reportage des Vorfalls in der deutschen Wirtschaftswoche [67]. Hierbei ist zu beachten, dass die Reportage in Zusammenarbeit mit ThyssenKrupp entstanden ist und somit nicht als objektiv betrachtet werden kann.

Ablauf des Angriffs

Professionelle Angreifer gehen bei Ihren Aktivitäten nach bewährten Mustern vor. Wie die folgende Abbildung zeigt, gliedert sich ein Angriff hierbei in die drei Phasen Initiierung, Vorbereitung und Durchführung.

BSI Phasen eines Angriffs

Initiierung Bis zum heutigen Tag ist man der Täter nicht habhaft geworden. Über Angriffszweck, Angriffsziele und die komplette Angriffsart kann daher nur spekuliert werden. ThyssenKrupp geht davon aus, dass es die eigentliche Zielsetzung des Angriffs war, Know-how über bestimmte Produktionsprozesse zu erfahren, um einen Wettbewerber langfristig im Anlagenbau positionieren zu können. Vorbereitung Ein Angriff auf ein hoch komplexes Netzwerk wie die ThyssenKrupp Infrastruktur, welches durch Anomalien Erkennung überwacht wird, erfordert eine intensive Vorbereitung, bei der alle möglichen Informationsquellen ausgenutzt werden. Über die Vorbereitung des Angriffs konnten keine belastbaren Informationen gefunden werden. Plattformen wie Shodan und Google bieten die Möglichkeit Informationen über die äußeren Perimeter der Infrastruktur zu sammeln ohne dass ein potenzielles Opfer die Möglichkeit hat, dies zu bemerken. Daher ist es sehr naheliegend, dass diese oder vergleichbare Werkzeuge auch in der Vorbereitungsphase für diesen Angriff genutzt wurden. Der Angreifer ist bei seinem Angriff sehr gezielt vorgegangen und hat sich auf spezielle Systeme fokussiert. Dies deutet darauf hin, dass er bereits in der Vorbereitungsphase detaillierte Informationen über den Netzwerkaufbau benötigte und sich diese auch beschaffen konnte. Es ist allerdings unklar, wie dies geschehen ist. Durchführung Es konnte bisher nicht geklärt werden, wie der Angreifer den ersten Schritt in das ThyssenKrupp Netzwerk vollziehen konnte. ThyssenKrupp selbst spekuliert, dass das erste System vermutlich durch Phishing-Mails mit Malware infiziert wurde. Anfang des Jahres wurde diesbezüglich eine hohe Aktivität beobachtet.Nachdem der Angreifer einmal im Netz war, hat er sich weltweit in verschiedene Systeme eingenistet und sich auch Zugang zur Kommunikationsinfrastruktur, konkret dem E-Mailsystem, verschafft. Im Laufe des Angriffs hat sich der Angreifer dann von Rechner zu Rechner durch das Netzwerk bewegt. Wenn er einen Rechner nicht mehr benötigte, wurde dieser von ihm bereinigt. Die Verwendung des Werkzeugs WINNTI dazu wird weiter unten in einem eignen Abschnitt beschrieben. Zeitlicher Ablauf Nach 45 Tagen wurde der Angriff durch ThyssenKrupp erkannt. Auslöser für die Entdeckung war, dass die Angreifer ungewöhnliche Dateinamen verwendeten, welche als Anomalie auffielen. In der Zwischenzeit schafften es die Angreifer einen Computer im Produktionsnetzwerk des Walzwerkes Hohenlimburg in Hagen zu übernehmen. Somit hatten die Angreifer ab diesem Zeitpunkt sowohl Zugriff auf die IT als auch die OT Netzwerke. Kurz vor dem Erkennen des Angriffes wurde das vermutlich primäre Ziel, der Geschäftsbereich Industrial Solutions angegriffen. Angreifer drangen in die IT-Systeme von fünf Standorten (Duisburg, Essen, Bochum, Dortmund und Berlin) ein. Kurz darauf gelang es den Angreifern weitere Systeme in den USA, Indien, Südafrika, Argentinien und der Schweiz zu infizieren. Nach etwa 200 Tagen gelang es dann den Experten von ThyssenKrupp die Angreifer zu isolieren und aus dem Netzwerk zu entfernen. Der Angriff lief somit über insgesamt ca. 8 Monate.

Eingesetzte Werkzeuge

Das primäre Werkzeug für Angriff war das Tool WINNTI. Ausgehend vom Namen des Tools, werden die Angreifer als WINNTI Gruppe bezeichnet. Zusätzlich wurde Gebrauch von der bekannten und mittlerweile geschlossenen Windows-Sicherheitslücke „Plugx.X“ gemacht. Diese Werkzeuge implementieren die gesamte Funktionalität eines RAT (Remote Administration Tool). Der Angreifer hat damit am infizierten Computer folgende Möglichkeiten:

  • Verbindung zu Command-and-Control (C&C)-Server zu erstellen.
  • Dateien herunterladen und ausführen.
  • Dateien löschen.
  • Dateien übertragen.
  • Zugriff auf Tastatur, Auslesen der Tastenbetätigungen.
  • Systemeinstellungen modifizieren.
  • Schadsoftware an, im Netzwerk befindliche Computer verteilen.

Für den Datentransfer und die Fernsteuerung der infizierten Computer werden speziell dafür eingerichtete C&C-Server verwendet. Diese Server wurden von den Angreifern betrieben und boten diesen die Möglichkeit, Daten der infizierten Computer zu sammeln und mit Hilfe von Remoteprotokollen das Verhalten der infizierten Computer zu beeinflussen. Command-and-Control-Server (C&C- Server) Command-and-Control-Server sind Teil von Bot Netzwerken. Ein Botnetz ist ein Netzwerk von Rechnern, die mit einer speziellen Malware infiziert sind. Ein einzelner Rechner eines solchen Netzwerkes wird als Bot bezeichnet. Der Command-and-Control-Server ist kommunikationsmäßig das Gegenstück der Bots. Die Aufgabe des Command-and-Control-Server besteht darin, von den Bots gesendete Daten entgegenzunehmen und neue Anweisungen an die Bots zu verteilen. Eine weit verbreitete Vorgehensweise ist, dass die Bots iterativ eine TCP-Verbindung zu den C&C-Servern aufzubauen versuchen. Dadurch erhalten die C&C-Server die aktuellen IP-Adresse der Bots. Durch den Aufbau der Verbindung vom Bot zum Server, passiert der Traffic vielfach Firewalls ungehindert. Diese Kommunikationsstrecke kann dann zum Versand für Anweisungen vom Angreifer verwendet werden. Die Kommunikation zwischen den Bots und den C&C-Servern erfolgt meist mittels sitzungslosen, nicht-persistenten HTTP-Verbindungen unter Verwendung des Port 80. Die Kommunikation kann daher nur schwer vom legitimen Netzwerkverkehr unterschieden werden. Auch der gesamte Datendurchsatz wird durch die Bots-Kommunikation nicht signifikant erhöht, da die Kommunikation immer nur vom Bot zum C&C-Server initiiert wird und die Bots nicht via Polling[71] (also zyklisch) abgefragt werden. Windows Sicherheitslücke (Backdoor) „Win32/Plugx.X“ Wird die Schadsoftware als base64 enkodierte Datei auf den Zielrechner transferiert und ausgeführt, werden folgende, mit Schadsoftware versehenen Komponenten installiert.

  • RasTls.exe
  • RasTls.dll
  • RasTls.dll.msc

Diese Komponenten sind in Windows eigentlich für die Implementierung des Dienstes für Routing und Remote Access verantwortlich. Die Datei RasTls.exe ist nicht mit Schadsoftware versehen und wird somit von Sicherheitsprogramme am Rechner nicht als Gefahr bewertet. Die Datei RasTls.dll hingegen implementiert eine Schadsoftware, bekannt als Backdoor:Win32/Plugx.X. Bei Ausführung der RasTls.exe wird die, im gleichen Ordner liegende RasTls.dll geladen. In diesem Ladeprozess wird der Quellcode der Backdoor.Win32/Plugx.X entschlüsselt und von der Datei bzw. dem Programm RasTls.dll.msc in die Registry geschrieben. Danach wird die Datei RasTls.dll.msc vom System entfernt, der Schadquellcode ist nur noch binär in der Registry abgelegt. Als nächstes wird ein Windowsdienst deklariert, der diesen Schadquellcode bei jedem Systemstart ausführt. [2] Die laufende Schadsoftware verbindet sich zu seinem Command-and-Control-Server und bietet dessen Betreiber den Zugang zu dem infizierten Computer. Winnti Kaspersky Lab Global Research and Analysis Team veröffentlichte im April 2013 einen ausführlichen Bericht[67] indem die technischen Details des Winnti-Werkzeugs beschrieben wurden. Im Folgenden werden diese technischen Details erläutert. Den Kern von Winnti bildet eine, mit Schadsoftware versehene DLL. Diese DLL soll die Funktionalität einer der Windows-Standard-DLLs winmm.dll widerspiegeln. Konkret handelt es sich bei der winmm.dll um eine Windows-System-Bibliothek die Multimedia-Funktionen implementiert. Die winmm.dll wird von vielen Anwendungen verwendet, unter anderem auch vom Windows-Explorer-Prozess, der als Kernkomponente von Windows zuständig für die Benutzerschnittstelle ist. Standardmäßig wird die DLL vom %WINDIR%\System32-Ordner geladen. Ist allerdings eine gleich benannte DLL im selben Ordner wie die ausführbare Datei des konsumierenden Prozesses abgelegt, wird diese statt der Original-DLL geladen. Diesen Effekt machen sich die Angreifer zunutze. Sie kreieren eine DLL, welche ebenfalls den Namen winmm.dll trägt und implementierten eine Weiterleitung (Proxy) zu den Funktionen der Original-winmm.dll. Dadurch bleibt für den konsumierenden Prozess die Funktionalität der winmm.dll erhalten wie die folgenden Abbildungen zeigen.

Normale Beziehung zwischen Anwendung und DLL
Beziehung zwischen Anwendung und DLL via Proxy-DLL

Diese Weiterleitungsfunktionalität wurde mit einem, von chinesischen Sicherheitsforschern entwickelten, Programm mit dem Namen AheadLib implementiert. Ursprünglich wurde dieses Programm für das Analysieren von Schadsoftware in Bibliotheken entwickelt. Mit Hilfe von AheadLib kann Quellcode für den Aufruf von Funktionen einer übergebenen DLL generiert werden. Dieser Quellcode kann wiederum in eine DLL kompiliert werden. Das Resultat ist eine simpel erstellte Proxy-DLL, die auf die Funktionen der übergebenen Original-DLL verweist. Durch Überladen von Funktionen, wie beispielsweise der Load()-Funktion, wird Schadquellcode in die DLL implementiert. Zusätzlich wird eine weitere DLL mit den Namen PlusDLL.dll in die schadhafte winmm.dll verschlüsselt eingebunden. Beim Laden der winmm.dll wird diese in den Prozessspeicher des konsumierenden Prozesses kopiert und entschlüsselt. Die PlusDLL.dll wird nicht im Filesystem abgelegt, sie existiert nur im Prozessspeicher des jeweiligen Prozesses, und wird daher von Sicherheitsprogramme nicht erkannt. Die PlusDLL.dll wiederum hat einen Windows-Treiber implementiert, welcher im Ordner %WINDIR%\System32\abgelegt, mittels NtLoadDriver-System-API geladen und sofort wieder aus dem Ordner %WINDIR%\System32\entfernt wird. Das Besondere an diesem Treiber ist, dass dieser mit einer gültigen Signatur versehen ist. Er ist mit einem gestohlenen aber gültigem Zertifikat signiert und kann somit in Windows 10 installiert und geladen werden. Die Aufgabe des Treibers besteht darin, die TCP-Kommunikation der, in der PlusDLL.dll implementierten Schadsoftware zu verschleiern. Dadurch bleibt die Kommunikation für Sicherheitsprogramme verborgen. Realisiert wurde dies durch Aufrufe von Kernel-API-Funktion NtSetQuotaInformationFile(). Wie in der folgenden Abbildung ersichtlich, wird der Return-Wert dieser API-Funktion manipuliert, sodass den konsumierenden Prozessen die TCP-Kommunikation verborgen bleibt.

Datentransfer von PlusDLL.dll to sp1itter.sys [

Ist der Treiber im System geladen, wird die Hauptfunktion der PlusDLL.dll ausgeführt. Dies wird allerdings nicht direkt, sondern, mittels manipulierter SetWindowStationUser()-Funktion, welche in der User32.dll implementiert ist, bewerkstelligt. Mit identischer Methodik werden weitere Funktionen wie die Initialisierung der Kommunikations-Stacks ausgeführt. In der Hauptfunktion wird ein Thread erstellt, der den eigentlichen Programmablauf implementiert und somit das Verhalten des Bots definiert wie die folgende Abbildung zeigt.

PlaPlusDLL.dll Aufruf der eigenen Funktionen mit erstellten Thread

Dieser indirekte Aufruf der PulsDLL.dll-Funktionen ist wiederum ein Verschleierungsmanöver gegenüber Sicherheitsprogrammen wie Virenscannern. Durch den Aufruf der user32.dll-Funktionen sind für Sicherheitsprogramme die eigentlichen Sprungadressen der Funktionen der PlusDLL.dll nicht ersichtlich. Die Aufgabe des Programmablaufes, welcher im erstellten Thread ausgeführt wird, ist das Sammeln und Übertragen von Daten des infizierten Computers. Die Kontroll-Funktionalität wird mittels separater Module (Plugins) in Form von weiteren DLLs, die von einem C&C-Server geladen werden, bewerkstelligt. Diese zusätzlich heruntergeladenen DLLs existieren nur im Prozessspeicher des ausführenden Prozesses. Dateien werden dafür keine abgelegt, sodass auch diese Module von Sicherheitsprogrammen unentdeckt bleiben. Die Module (Plugins) werden aufgrund der initial gesammelten Daten des Angriffszielrechners heruntergeladen und ausgeführt. Es existieren Module sowohl für das Auslesen weiterer Daten als auch für die Konfiguration und Fernsteuerung des Computers. Dadurch kann der Angriff individuell an das Angriffsziel angepasst, ausgeführt werden. In der folgenden Abbildung ist der grundsätzliche Angriffs-Ablauf visualisiert.

Ablauf

Die Kommunikation zwischen Bot und C&C-Server ist mittels TCP über die Ports 53, 80 und 443 realisiert. Die Daten werden mit dem LZMA-Algorithmus komprimiert und verschlüsselt übertragen. Der Kommunikationsablauf sieht folgendermaßen aus:

  • Der Bot meldet sich durch das Senden eines Datenblocks an den C&C-Server.
  • Der C&C-Server sendet als Antwort eine Liste aller verfügbaren Module (Plugins) an den Bot zurück.
  • Der Bot initiiert einen Download-Request pro benötigtes Modul.
  • Der C&C sendet daraufhin die Module zu dem Bot.
  • Der Bot bestätigt den Empfang der Module.
  • Sind sämtliche Module übertragen, werden diese vom Bot im Prozessspeicher instanziiert.
  • Der Bot wechselt in den Standby-Mode und wartet auf Instruktionen vom C&C-Server. Im 15 Sekunden-Intervall sendet er einen KeepAlive-Datenblock zum C&C-Server um dessen IP-Adress-Eintrag des Bots aktuell zu halten.

Die Adressierung des C&C-Server ist mittels DNS gelöst. Eine gängige Methode ist das Registrieren von third-level-domains deren A-record auf den C&C-Server verweisen. Diese Domains werden speziell für das Angriffszielunternehmen angepasst, erstellt, wie die folgende Abbildung zeigt.

C&C Domain-Auflösung

Winnti ist somit ein sehr gut geeignetes Werkzeug, um unentdeckt Zugriff und Kontrolle eines Computers zu erhalten. Der einzige Schwachpunkt ist das kurze Vorhandensein der zu installierenden Treiber-Dateien, die während der Inbetriebnahme im Dateisystem abgelegt werden müssen. Sicherheitsprogramme haben somit die Möglichkeit Winnti zu entdecken. Durch die gültige Signierung des Treibers ist die Wahrscheinlichkeit als Schadsoftware entdeckt zu werden trotzdem gering. Für die Verwendung von WINNTI sind die folgenden vorbereitenden Maßnahmen notwendig:

  • Diebstahl von Zertifikaten um den Treiber signieren zu können.
  • Aufsetzen und Inbetriebnahme eines C&C-Server.
  • Registrierung von DNS-Einträge für die Adressierung des C&C-Server.
  • ProxyDLL mit Hilfe von AheadLib erstellen.
  • Bot-Verhalten in PlusDLL implementieren.
  • Kommunikationsverhalten in PlusDLL implementieren.
  • Module (Plugins) angepasst für den Ziel-Rechner entwickeln.

Man kann gut erkennen, dass der Aufwand zur Ziererreichung relativ hoch ist. Solche Angriffe werden daher meist nur ausgeführt, wenn das Erreichen der Ziele für die Angreifer deutliche wirtschaftliche Vorteile bringt.

Zusammenfassung

Dieses Kapitel hat exemplarisch einen APT im Detail analysiert, um den Aufwand und das nötige hohe Knowhow hinter APT Angriffen aufzuzeigen.

Übungsbeispiele

Übungsbeispiel 1

Suchen Sie sich einen weiteren APT und analysieren Sie diesen wie in diesem Kapitel. Eine gute Auswahl hierzu bietet beispielsweise FireEye. [3]

  1. Von einigen Exploits gibt es auch den Source Code in einem eigenen Repository: https://github.com/ytisf/theZoo
  2. Mittlerweile wird dieser Angriff von Windows Defender, ein von Microsoft hergestelltes Malware-Protection-Programm, erkannt und unterbunden.
  3. https://www.fireeye.de/current-threats/apt-groups.html