von Frank Ully

Dieser Artikel ist der erste Teil einer Reihe über Windows PowerShell und darüber, wie Angreifer es missbrauchen, wie Incident Responder und Forensiker diese Angriffe erkennen können – und welche Verteidigungslinien IT-Sicherheitsverantwortliche ziehen können.

Denn bei fortgeschrittenen Angreifern gehört der Einsatz von PowerShell-Skripten inzwischen fest zum Repertoire.

Einführung

Als Teil von Windows PowerShell, Microsofts Automatisierungs- und Konfigurationsmanagement-Framework, ist die gleichnamige Skriptsprache integraler Bestandteil aktueller Windows-Installationen.

PowerShell eignet sich besonders für Angriffe, weil es als legitimes Administrationswerkzeug an sich keinen Verdacht erweckt und Zugang zu allen für einen Angriff benötigten Funktionen bereitstellt: So kann es etwa weiteren Code aus dem Internet oder von einem anderen System herunterladen und ausführen sowie auf wesentliche Schnittstellen von Windows zugreifen.

Durch seine enge Einbindung in Microsofts Betriebssysteme bietet sich PowerShell für bösartige Zwecke an, weil so für Angreifer die Notwendigkeit entfällt, eigene Binärdateien auf der Festplatte abzulegen. Alle bösartigen Befehle werden lediglich im nicht-dauerhaften Arbeitsspeicher ausgeführt. Damit wird nicht nur das Erkennen durch Malwarescanner erschwert – die Flüchtigkeit der Beweismittel behindert auch eine spätere forensische Untersuchung.

Zunächst beschreibt dieser Artikel die Phasen echter Angriffe und stellt das Konzept der Post Exploitation vor. Anschließend folgt eine Einführung in die technischen Grundlagen von Windows PowerShell.

In den kommenden Artikeln der Reihe werden die in diesem Artikel gelegten Grundlagen aufgegriffen.

Phasen echter Angriffe

Cyber Kill Chain

Der Rüstungskonzern Lockheed Martin hat die so genannte Cyber Kill Chain entwickelt, um das Vorgehen von echten Angreifern zu beschreiben. Die Kill Chain teilt ausgehend von militärischen Begriffen einen Angriff in sieben Phasen ein [1]:

  1. In der vorbereitenden Reconnaissance-Phase wählt der Angreifer sein Ziel aus, sammelt Informationen darüber, etwa über öffentlich verfügbare Quellen. Er versucht, Schwachstellen in seinem Zielnetzwerk zu identifizieren.
  2. In der vorbereitenden Weaponization-Phase erstellt der Angreifer auf seinem Rechner eine Schadsoftware (Malware), maßgeschneidert auf eine spezifische Schwachstelle seines Ziels.
  3. Bei der eindringenden Delivery-Phase sendet der Angreifer den Schadcode zu seinem Ziel, etwa als E-Mail-Anhang oder über USB-Sticks.
  4. Bei der eindringenden Exploitation-Phase wird der Schadcode des vorbereiteten bösartigen Programms aufgeführt.
  5. Bei der eindringenden Installation-Phase wird die Malware permanent auf dem Zielrechner installiert.
  6. Um schließlich Daten entwenden zu können, wird in der als Command and Control bezeichneten Phase ein dauerhafter Zugriff auf die Infrastruktur des Ziels eingerichtet; dazu werden weitere Hintertüren installiert.
  7. In der letzten und wichtigsten Phase führt der Angreifer die für sein eigentliches Ziel notwendigen Handlungen durch (Action on Objectives), etwa indem er Daten stiehlt, löscht oder zur Erpressung verschlüsselt. Dies ist die umfangreichste und kleinteiligste Phase; sie kann Monate dauern.
Abbildung 1: Lockheed Cyber Kill Chain

Die Cyber Kill Chain hat sich als oft referenzierter und einfach verständlicher Standard etabliert [2], wird aber durchaus kritisiert, etwa weil sie sich auf die Verteidigung an den Außengrenzen des Unternehmensnetzwerks fokussiert – und die ersten beiden Phasen vollständig außerhalb des Angriffsziels stattfinden, somit dort gar nicht detektiert werden können [3].

Einige Sicherheitsforscher kritisieren am Nutzen der Kill Chain, dass Angreifer nicht in jedem Fall deren starrem Modell folgen. Zum Beispiel können sie sich um ein Festsetzen im Netzwerk (Persistenz) bemühen, bevor sie sich darin weiter ausbreiten (Lateral Movement). Deswegen wurden angepasste Versionen der Kill Chain vorgeschlagen [4, S. 9].

Abbildung 2: Modifizierte Kill Chain von Cisco

Dennoch kann die Kill Chain von Organisationen genutzt werden, um die Sicherheit des eigenen Netzwerks einzuschätzen. Zudem gibt sie Hinweise auf die Dauer der einzelnen Phasen und dient als Erinnerung, dass eine frühe Erkennung eines Angriffs die Dauer und die Kosten der Aufräumarbeiten und notwendigen forensischen Untersuchungen stark verkürzt [2].

Der Verizon Data Breach Report 2018 stellt fest, dass in über 90 Prozent der untersuchten Fälle die Installation-Phase (Bezeichnung dort: Compromise) innerhalb von Minuten abgeschlossen war. Auch die Action on Objectives erfolgte in 98 Prozent der Fälle innerhalb von Tagen, also das Hinaustragen (Exfiltration) von gestohlenen Daten [5. S. 10]. Die Zeit für Verteidiger, einen Einbruch zu erkennen und abzuwehren, ist demzufolge sehr kurz. In der Praxis dauert es hingegen im Mittel fast 100 Tage, bis die Anwesenheit von Angreifern in einem Unternehmensnetzwerk bemerkt wird – in diesem Zeitraum können die Angreifer ungestört ihre Ziele verfolgen [6, S. 47].

Phasen der Post Exploitation

Bei der Cyber Kill Chain finden die Phasen Installation, Command and Control sowie Action on Objectives nach der Exploitation-Phase statt, können also als Post Exploitation zusammengefasst werden: die Aktivitäten nach dem erfolgreichen Eindringen in das Zielnetzwerk [7, S. 3].

Die Post Exploitation bezieht sich auf spezifische kompromittierte Systeme, ermittelt wichtige Netzwerkkomponenten und zielt auf das Erlangen jener Daten ab, die einer Organisation am wichtigsten sind und die sie zu schützen versucht. Typischerweise möchte ein Angreifer möglichst viele Informationen über die Systeme herauszufinden, die er erfolgreich kompromittiert hat: er sucht etwa nach interessanten Dateien; er versucht höhere Rechte zu erlangen; er bewegt sich innerhalb des Netzwerks von System zu System; schließlich versucht er, gestohlene Daten unbemerkt zu sich zu übertragen [8, S. 277-278]. Ein Angreifer verbringt einen Großteil seiner Zeit damit [7, S. 3-4].

Es gab mehrere Versuche, die Cyber Kill Chain besser auf tatsächlich beobachtete Post Exploitation durch Angreifer anzupassen. Der Sicherheitsforscher Xavier Ashe etwa schlug vor, in der Kill Chain die Phase Install in Persistence umzubenennen und Command and Control treffender als Lateral Movement zu bezeichnen [9, S. 4].

Der Sicherheitsdienstleister Carbon Black benennt in seinem Bericht über Power­Shell-Angriffe [10, S. 5] die folgenden Post-Exploitation-Aktivitäten: Command and Control; Lateral Movement; Establishing Persistence; Credential Theft; Escalating Privileges; Data Exfiltration; System Disruption.

In Tabelle 1 werden unterscheidbare Ziele und Aktivitäten eines Angreifers innerhalb der Post Exploitation überblicksartig dargestellt. Quellen sind die Cyber Kill Chain [1], die Carbon-Black-Einteilung [10, S. 5] sowie als Ergänzung ebenfalls verbreitete Klassifizierungen, die etwa die Sicherheitsforscher Sean Metcalf und Wil Allsopp verwenden [11, S. 35] [12, S. XXVIII].

Tabelle 1: Post-Exploitation-Aktivitäten

Benennung Englische Benennung(en) Ziele des Angreifers
Aufklärung Reconnaissance, Information Gathering, Situational Awareness, Enumeration Informationen über angegriffenen Rechner und unmittelbare Netzumgebung sammeln; interessante Dateien und Daten finden, etwa Kreditkartendaten oder Geschäftsgeheimnisse
Steuerung Command and Control, Code Execution Einen oder mehrere übernommene Rechner fernsteuern
Persistenz Persistence, Backdooring Dauerhaften unbemerkten Zugriff auf ein System einrichten; mindestens auf einen Rechner im Zielnetzwerk permanenten Zugriff halten
Datendiebstahl Credential Theft, Asset Discovery Vertrauliche Informationen, geistiges Eigentum, oder Zugangsdaten wie Benutzernamen, Passwörter und Passworthashes auslesen
Rechteerweiterung Privilege Escalation Rechte erweitern: von einem normalen Benutzerzugang mit eingeschränkten Privilegien über lokale Administrator-Befugnisse bis hin zu Domänen-Administrator-Rechten
Ausbreitung Lateral Movement, Pivoting, Network Colonization Von einem befallenen Rechner den Zugriff auf weitere Rechner ausbreiten
Spurenbeseitigung Log Tampering Spuren des Angriffs von den befallenen Systemen entfernen
Systemstörung System Disruption, Denial of Service Dienste und Systeme unmittelbar in ihrer bestimmungsgemäßen Funktion stören
Datenausschaffung Data Exfiltration, Complete Mission Gestohlene Daten unbemerkt aus dem angegriffenen Netzwerk ausschaffen

Windows PowerShell

Windows PowerShell ist eine von Microsoft entwickelte interaktive objektorientierte Kommandozeilenumgebung. Mit kleinen Cmdlets (von Command) genannten Programmen können heterogene Umgebungen einfach konfiguriert, administriert und verwaltet werden [13, S. 6].

Jedes Cmdlet ist konsistent nach dem Muster VerbNomen (auf Englisch) benannt – etwa Get-Service und Stop-Service – wodurch einfach zu sehen ist, welche Aufgabe es verrichtet. Auch die Parameter sind standardisiert: der Befehl Get-Service -Name "Netlogon" etwa fragt den Status des Dienstes mit dem in Anführungszeichen stehenden Namen ab.

Schließlich steht ein sehr umfangreiches sowie regelmäßig aktualisiertes Hilfesystem direkt auf der Kommandozeile zur Verfügung; Get-Help Get-Service -Example etwa zeigt Anwendungsbeispiele zum Befehl Get-Service an.

Abbildung 3: PowerShell-Kommandozeile mit Befehl Get-Help

Zugleich ist PowerShell ein Automatisierungs- und Konfigurationsmanagement-Framework für Windows. Die gleichnamige Skriptsprache – PowerShell – ermöglicht das Automatisieren dieser Befehle zur Administration von Windows-Umgebungen. Sie ersetzt den wegen Sicherheitslücken in Misskredit geratenen Vorgänger Visual Basic Script (kurz VBScript) und betont im Gegensatz zu Unix-artigen Skriptsprachen die Arbeit mit Objekten statt mit Zeichenketten [14, S. 17].

Erstmals veröffentlicht wurde PowerShell im Jahr 2006 als optionale Erweiterung für Windows XP, Vista und Server 2003. Seitdem wird mit jeder Version von Windows eine neue PowerShell-Version veröffentlicht; am weitesten verbreitet ist derzeit PowerShell 4.0, das gleichzeitig mit Windows Server 2012 R2 und Windows 8.1 erschien, aber auch für ältere Windows-Versionen verfügbar ist [15, S. 4].

Seit 2011 ist PowerShell fester Bestandteil aktueller Windows-Installationen: Beginnend mit Windows 7 Service Pack 1 wird PowerShell auf Client-Systemen mitgeliefert; seit Windows Server 2008 R2 ist es gar integrales Element des Verwaltungsinstrumentariums der Server-Betriebssysteme, auf das grafische Oberflächen nur aufsetzen. Ab Windows Server 2012 Core steht für IT-Administratoren standardmäßig nur eine Text-Bedienoberfläche mit PowerShell bereit, eine darauf aufbauende grafische Benutzeroberfläche kann nachinstalliert werden [16, S. 9]. Zudem sind Cmdlets für PowerShell in fast allen neuen Produktversionen von Microsoft integriert, darunter etwa der Mailserver Exchange und der Datenbankserver Microsoft SQL [17, S. 5].

PowerShell baut auf Microsofts Software-Plattform .NET-Framework auf, das unter anderem über Klassenbibliotheken und Programmierschnittstellen der Entwicklung von Programmen vorranging unter Windows dient, aber auch auf andere Betriebssysteme portiert worden ist.

Im August 2016 veröffentlichte Microsoft den Quellcode der Kernkomponenten von PowerShell. Gleichzeitig wurden Beta-Versionen von PowerShell für Linux- und Mac OS-Systeme verfügbar [18]. PowerShell Core für Linux und Mac OS erschien im Januar 2018 in einer produktiv einsetzbaren Version [19].

PowerShell enthält Hunderte von Cmdlets, die direkt über das .NET-Framework Zugriff auf viele Systemfunktionen bieten. Zudem kann es über einen Zwischenschritt unmittelbar auf die tiefer liegende Windows-Programmierschnittstelle (Application Programming Interface, API) zugreifen. PowerShell erlaubt den einfachen Zugriff auf verschachtelt im Rechner abgelegte Datenspeicher wie die Windows-Registrierung, Zertifikatsspeicher, Active-Directory-Einträge und Datenbanken auf dieselbe Art wie auf das Dateisystem.

Dadurch kann PowerShell unter anderem: Befehle auf dem lokalen Computer ausführen, Dateien aus dem Internet herunterladen, Dokumente suchen, die Registrierung bearbeiten, Dienste verwalten, Prozesse untersuchen, Ereignisprotokolle auslesen [20].

Potenziert wird dieser große Funktionsumfang durch den objektorientierten Ansatz, bei dem in einer Pipeline Objekte einfach zwischen Cmdlets ausgetauscht werden können und beim Weg durch die Pipeline etwa gefiltert oder anderweitig manipuliert werden.

Schließlich können über die Funktion PowerShell Remoting Befehle nicht nur auf dem lokalen Rechner, sondern auf anderen Rechnern im Netzwerk ausgeführt werden. Remoting baut auf dem WinRM-Protokoll auf (das eine Implementierung des WS-Management-Standards ist) und kommuniziert über den TCP-Port 5985 (HTTP) und verschlüsselt auf Port 5986 (HTTPS) [20, S. 47]. Auf dem entfernten Rechner lauscht der sogenannte Windows Remote Management (WinRM) Dienst auf eingehende Remoting-Verbindungen [21].

Folgende Abbildung zeigt die Komponenten von PowerShell Remoting. Der eigentliche Prozess, der PowerShell-Befehle auf dem fremden Rechner ausführt, ist wsmprovhost.exe [21]. Seit Windows Server 2012 ist Remoting im Standard auf Windows-Serverbetriebssystemen aktiviert [22].

Abbildung 4: Komponenten von PowerShell Remoting

 
Der nächste Teil der Artikelreihe beleuchtet näher, welche Eigenschaften PowerShell als Angriffswerkzeug so beliebt machen.

Ausführlich beschrieben werden die Eignung für und der Einsatz von PowerShell in  Schadsoftware und durch Angreifergruppen.

Über den Autor

Frank Ully studierte Technische Redaktion an der Hochschule Karlsruhe – Technik und Wirtschaft und schloss das Studium als Diplom-Technikredakteur ab (inzwischen: Master Kommunikation und Medienmanagement). Noch während seines Studiums baute er die Abteilung Unternehmenskommunikation und Dokumentation eines Berliner Softwareherstellers auf und leitete sie einige Jahre. Später betreute Frank Ully dort interne Anwendersysteme und war für die IT-Sicherheit verantwortlich. Berufsbegleitend schloss er den Masterstudiengang Security Management mit Spezialisierung auf IT-Sicherheit an der Technischen Hochschule Brandenburg ab und zertifizierte sich zum Offensive Security Certified Expert (OSCE) sowie Offensive Security Certified Professional (OSCP). Frank Ully verfügt zudem über die Zertifikate GIAC Reverse Engineering Malware (GREM) sowie Linux Professional Institute Certification Level 3 (LPIC-3) und ist zertifizierter OSSTMM Professional Security Tester (OPST). Zum Ende seines Masterstudiums begann er im November 2017 seine Arbeit als Penetration Tester und Security Consultant bei Oneconsult Deutschland. Seit April 2018 ist Frank Ully Senior Penetration Tester & Security Consultant.

Über Oneconsult

Die Oneconsult-Unternehmensgruppe ist seit 2003 Ihr renommierter Schweizer Cyber Security Services Partner mit Büros in der Schweiz und Deutschland und 1500+ weltweit durchgeführten Security-Projekten.

Erhalten Sie kompetente Beratung vom inhabergeführten und herstellerunabhängigen Cyber Security-Spezialisten mit 35+ hochqualifizierten Cyber Security Experten, darunter zertifizierte Penetration Tester (OPST, OPSA, OSCP, OSCE, GXPN), IT-Forensiker (GCFA, GCFE, GREM), ISO Security Auditoren (ISO 27001 Lead Auditor, ISO 27005 Risk Manager) und dedizierte IT Security Researcher, um auch Ihre anspruchsvollsten Herausforderungen im Informationssicherheitsbereich zu bewältigen. Gemeinsam gehen wir Ihre externen und internen Bedrohungen wie Malware-Infektionen, Hacker-Attacken und APT sowie digitalen Betrug und Datenverlust mit Kerndienstleistungen wie Penetration Tests / Ethical Hacking, APT Tests unter Realbedingungen und ISO 27001 Security Audits an. Bei Notfällen können Sie rund um die Uhr (24 h x 365 Tage) auf die Unterstützung des Incident Response & IT Forensics Expertenteams von Oneconsult zählen.

www.oneconsult.com


[1]: https://web.archive.org/web/20170218060551/http://lightcyber.com/deconstructing-the-cyber-kill-chain/
[2]: https://www.csoonline.com/article/2134037/cyber-attacks-espionage/strategic-planning-erm-the-practicality-of-the-cyber-kill-chain-approach-to-security.html
[3]: https://www.darkreading.com/attacks-breaches/deconstructing-the-cyber-kill-chain/a/d-id/1317542
[4]: https://www.cisco.com/c/dam/m/hr_hr/training-events/2017/cisco-connect/pdf/ConnectCRO_cats_vs_rats_scsordas.pdf
[5]: https://www.verizonenterprise.com/resources/reports/rp_DBIR_2018_Report_en_xg.pdf
[6]: https://www2.fireeye.com/rs/848-DID-242/images/RPT-M-Trends-2017.pdf
[7]: D. Kennedy, J. O’Gorman, D. Kearns and M. Aharoni, Metasploit: The Penetration Tester’s Guide, San Francisco: No Starch Press, 2011.
[8]: G. Weidman, Penetration Testing: A Hands-On Introduction to Hacking, San Francisco: No Starch Press, 2014.
[9]: https://xavierashe.files.wordpress.com/2016/09/lateral-movement-hacker-halted-2016.pdf
[10]: https://www.carbonblack.com/wp-content/uploads/2016/04/Cb-Powershell-Deep-Dive-A-United-Threat-Research-Report-1.pdf
[11]: https://adsecurity.org/wp-content/uploads/2016/05/BSidesCharm-2016-PowerShellSecurity-Defending-the-Enterprise-from-the-Latest-Attack-Platform-FINAL.pdf
[12]: W. Allsopp, Advanced Penetration Testing: Hacking the World’s Most Secure Networks, Indianapolis: Wiley, 2017.
[13]: https://www.slideshare.net/RusselVanTuyl/powershell-for-cyber-warriors-bsides-knoxville-2016
[14]: https://docs.google.com/presentation/d/1VjTpY6ucmH_UnNbK4PtH_eJQA8VhxnZFJ7yEvuX8boU/
[15]: https://www.blackhat.com/docs/us-14/materials/us-14-Kazanciyan-Investigating-Powershell-Attacks-WP.pdf
[16]: http://www.docslides.com/lois-ondreau/powershell-fu-with-metasploit
[17]: http://www.trustedsec.com/files/PowerShell_Defcon.pdf
[18]: https://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/
[19]: https://github.com/PowerShell/PowerShell/releases
[20]: https://www.blackhat.com/docs/us-14/materials/us-14-Kazanciyan-Investigating-Powershell-Attacks.pdf
[21]: https://devops-collective-inc.gitbooks.io/secrets-of-powershell-remoting/content/manuscript/remoting-basics.html
[22]: https://blogs.technet.microsoft.com/askpfeplat/2015/08/09/leveraging-windows-native-functionality-to-capture-network-traces-remotely/