Hackerpraktikum/-projekt (Master) (HackMSc) - Exam.pdf

Hackerpraktikum/-projekt (Master) (HackMSc) - Exam
Hackerpraktikum/-projekt (Master) (HackMSc) - Exam Aufgabe 1) Du arbeitest in einem Softwareunternehmen und sollst eine sichere Kommunikationsanwendung entwickeln. Zum Schutz der Vertraulichkeit und Integrität der Daten sollst Du verschiedene Kryptographiemethoden einsetzen. Eine Kombination aus symmetrischer und asymmetrischer Verschlüsselung sowie Hashfunktionen soll implementiert werden. a) Erk...

© StudySmarter 2024, all rights reserved.

Hackerpraktikum/-projekt (Master) (HackMSc) - Exam

Aufgabe 1)

Du arbeitest in einem Softwareunternehmen und sollst eine sichere Kommunikationsanwendung entwickeln. Zum Schutz der Vertraulichkeit und Integrität der Daten sollst Du verschiedene Kryptographiemethoden einsetzen. Eine Kombination aus symmetrischer und asymmetrischer Verschlüsselung sowie Hashfunktionen soll implementiert werden.

a)

Erkläre den Unterschied zwischen symmetrischer und asymmetrischer Verschlüsselung. Gib je ein Beispiel für einen Algorithmus beider Verschlüsselungsmethoden und erläutere, wann welche Methode vorzuziehen ist.

Lösung:

Unterschied zwischen symmetrischer und asymmetrischer Verschlüsselung

  • Symmetrische Verschlüsselung:
    • Definition: Beide Kommunikationsparteien verwenden denselben Schlüssel zum Ver- und Entschlüsseln der Daten.
    • Beispiel für einen Algorithmus: AES (Advanced Encryption Standard)
    • Vorteile: Schnelle Verschlüsselung und Entschlüsselung, weniger Rechenleistung erforderlich.
    • Nachteile: Sichere Schlüsselverteilung ist notwendig. Falls der Schlüssel abgefangen wird, ist die gesamte Kommunikation kompromittiert.
    • Anwendungsfälle: Übertragung großer Datenmengen, wo Geschwindigkeit entscheidend ist und der sichere Schlüsselaustausch gewährleistet werden kann.
  • Asymmetrische Verschlüsselung:
    • Definition: Es werden zwei verschiedene Schlüssel verwendet: ein öffentlicher Schlüssel zum Verschlüsseln und ein privater Schlüssel zum Entschlüsseln.
    • Beispiel für einen Algorithmus: RSA (Rivest-Shamir-Adleman)
    • Vorteile: Sichere Kommunikation ohne vorherige Schlüsselverteilung. Der öffentliche Schlüssel kann frei verteilt werden, während der private Schlüssel geheim bleibt.
    • Nachteile: Langsamere Verschlüsselung und Entschlüsselung, mehr Rechenleistung erforderlich.
    • Anwendungsfälle: Sicherer Schlüsselaustausch, digitale Signaturen, sichere E-Mail-Kommunikation.
  • Wann welche Methode vorzuziehen ist:
    • Symmetrische Verschlüsselung ist vorzuziehen, wenn eine schnelle Datenübertragung notwendig ist und die sichere Verteilung des Schlüssels kein Problem darstellt.
    • Asymmetrische Verschlüsselung ist vorzuziehen, wenn die sichere Schlüsselverteilung problematisch ist oder zusätzliche Sicherheitsmechanismen wie digitale Signaturen benötigt werden.
    • Kombination: Oft werden beide Methoden kombiniert, um ihre jeweiligen Vorteile zu nutzen. Zum Beispiel mit einem asymmetrischen Algorithmus wird ein symmetrischer Sitzungsschlüssel sicher übertragen, der dann für die eigentliche Datenübertragung verwendet wird.

b)

Beschreibe, wie Du ein hybrides Verschlüsselungssystem in Deinem Kommunikationsprogramm implementieren würdest. Gehe auf die einzelnen Schritte zur sicheren Schlüsselverteilung und verschlüsselten Kommunikation ein. Erkläre die Rolle von Public-Key-Infrastrukturen (PKI) in diesem Prozess.

Lösung:

Implementierung eines hybriden Verschlüsselungssystems

Ein hybrides Verschlüsselungssystem kombiniert die Vorteile von symmetrischen und asymmetrischen Verschlüsselungsmethoden, um eine sichere und effiziente Kommunikationslösung zu bieten. Hier ist eine Schritt-für-Schritt-Beschreibung, wie Du ein solches System in Deinem Kommunikationsprogramm implementieren würdest:

1. Erzeugung und Austausch der asymmetrischen Schlüssel

  • Jede Partei (Sender und Empfänger) generiert ein Paar von Schlüsseln: einen öffentlichen Schlüssel und einen privaten Schlüssel.
  • Der öffentliche Schlüssel wird sicher an die andere Partei gesendet. Dieser Schritt kann durch die Public-Key-Infrastruktur (PKI) unterstützt werden, um die Authentizität und Integrität der öffentlichen Schlüssel zu gewährleisten.

2. Erstellung eines symmetrischen Sitzungsschlüssels

  • Der Sender generiert einen zufälligen symmetrischen Sitzungsschlüssel, der für die eigentliche Datenverschlüsselung verwendet wird.

3. Verschlüsselung des Sitzungsschlüssels

  • Der Sitzungsschlüssel wird mit dem öffentlichen Schlüssel des Empfängers asymmetrisch verschlüsselt.
  • Der verschlüsselte Sitzungsschlüssel wird an den Empfänger gesendet.

4. Übertragung und Empfang verschlüsselter Daten

  • Der Sender verschlüsselt die eigentlichen Nachrichten oder Daten mit dem symmetrischen Sitzungsschlüssel.
  • Die verschlüsselten Daten werden an den Empfänger gesendet.

5. Entschlüsselung des Sitzungsschlüssels und der Daten

  • Der Empfänger entschlüsselt den Sitzungsschlüssel mit seinem privaten Schlüssel.
  • Sobald der Sitzungsschlüssel wiederhergestellt ist, kann der Empfänger damit die empfangenen verschlüsselten Daten entschlüsseln.

Rolle der Public-Key-Infrastrukturen (PKI)

  • Authentifizierung: PKIs stellen digitale Zertifikate aus, die die Authentizität der öffentlichen Schlüssel bestätigen. Dies verhindert Man-in-the-Middle-Angriffe, bei denen ein Angreifer versucht, seine eigenen öffentlichen Schlüssel anstatt der echten zu senden.
  • Integrität: Digitale Zertifikate gewährleisten, dass die öffentlichen Schlüssel während der Übertragung nicht manipuliert wurden.
  • Vertrauenswürdigkeit: PKIs schaffen ein Vertrauensnetzwerk, indem sie die Identität der Kommunikationspartner verifizieren, wodurch sichergestellt wird, dass Sender und Empfänger tatsächlich diejenigen sind, für die sie sich ausgeben.

Aufgabe 2)

Du arbeitest als IT-Sicherheitsberater und Deine Aufgabe ist es, einen umfassenden Penetrationstest für ein mittelständisches Unternehmen durchzuführen. Das Unternehmen verwendet eine Mischung aus on-premise und cloudbasierten Diensten. Deine Aufgabe ist es, die Sicherheit des gesamten Systems zu bewerten und dabei potenzielle Sicherheitslücken zu identifizieren und auszunutzen. Du hast Zugriff zu den notwendigen Tools und den grundlegenden Informationen über die Netzwerkinfrastruktur des Unternehmens.

a)

Beschreibe den kompletten Ablauf eines Penetrationstests für dieses Unternehmen. Gehe dabei auf alle Phasen des Penetrationstests ein und erläutere detailliert, welche Methoden und Tools Du in jeder Phase verwenden würdest. Verwende dafür die folgenden Phasen:

  • Reconnaissance
  • Scanning
  • Exploitation
  • Post-Exploitation
  • Reporting

Lösung:

Ablauf eines Penetrationstests für ein mittelständisches Unternehmen

Als IT-Sicherheitsberater ist es Deine Aufgabe, einen umfassenden Penetrationstest durchzuführen. Dafür sind verschiedene Phasen notwendig, die nacheinander bearbeitet werden. Hier sind die Einzelheiten zu den einzelnen Phasen und welche Methoden und Tools Du dafür nutzen könntest:

  • Reconnaissance

    In dieser Phase sammelst Du Informationen über das Unternehmen, seine Infrastruktur und potenzielle Angriffsziele. Hier sind einige Methoden und Tools, die Du verwenden könntest:

    • Passive Reconnaissance: Nutzung von öffentlichen Quellen wie Unternehmenswebseiten, Social Media, und Datenbanken (z.B. WHOIS-Abfragen).
    • Active Reconnaissance: Netzwerk-Scanning-Tools wie nmap, um offene Ports und aktive Dienste zu identifizieren.
    • OSINT-Tools: Open Source Intelligence Tools wie Maltego oder theHarvester zur Sammlung von E-Mail-Adressen, Unterdomänen und anderen relevanten Informationen.
  • Scanning

    In dieser Phase führst Du detailliertere Scans durch, um spezifische Schwachstellen in der Infrastruktur zu identifizieren.

    • Vulnerability Scanners: Tools wie Nessus oder OpenVAS, um Schwachstellen in Netzwerken und Systemen zu identifizieren.
    • Port Scanning: Wiederum nmap für umfassendere Scans, um detailliertere Informationen über die offenen Ports und laufenden Dienste zu erhalten.
    • Web Application Scanners: Tools wie OWASP ZAP oder Burp Suite, um Schwachstellen in Webanwendungen zu identifizieren.
  • Exploitation

    Nachdem Du die Schwachstellen gefunden hast, versuchst Du, diese auszunutzen, um unautorisierten Zugriff zu erlangen.

    • Exploitation Frameworks: Tools wie Metasploit, um automatisierte Angriffe auf identifizierte Schwachstellen durchzuführen.
    • Manuelle Ausnutzung: Nutzung von benutzerdefinierten Skripten oder spezifischen Exploits, die auf den gefundenen Schwachstellen basieren.
  • Post-Exploitation

    Nach erfolgreichem Einbruch untersuchst Du das kompromittierte System weiter und bewertest den Schaden, den ein echter Angreifer anrichten könnte.

    • Privilege Escalation: Tools und Techniken wie Linux Kernel Exploits oder Windows User Account Control (UAC) Bypasses zur Erweiterung der Rechte des Angreifers.
    • Maintaining Access: Implementierung von persistenten Zugängen durch Techniken wie Web Shells oder Backdoors.
    • Data Exfiltration: Testen von Methoden zum Diebstahl von Daten, wie FTP- oder HTTP-Uploads.
  • Reporting

    In dieser abschließenden Phase dokumentierst Du alle Befunde, die während des Penetrationstests gemacht wurden, und gibst Empfehlungen zur Behebung der identifizierten Schwachstellen.

    • Detaillierter Bericht: Detaillierte Beschreibung aller durchgeführten Tests, identifizierten Schwachstellen und erfolgreichen Exploits.
    • Executive Summary: Ein zusammenfassender Bericht für das Management, der die wichtigsten Risiken und Empfehlungen enthält.
    • Technische Empfehlungen: Konkrete Anweisungen zur Behebung der Schwachstellen, basierend auf bewährten Verfahren und Standards.

Durch die sorgfältige Durchführung jedes dieser Schritte gewährleistest Du einen gründlichen und effektiven Penetrationstest, der dem Unternehmen hilft, seine Sicherheitslücken zu schließen und seine IT-Infrastruktur zu stärken.

b)

Während der Scanning-Phase hast Du herausgefunden, dass der Webserver des Unternehmens eine veraltete Version von Apache verwendet, die für Cross-Site Scripting (XSS) anfällig ist. Erläutere, wie Du diese Sicherheitslücke nutzen würdest, um weiteren Zugriff auf das System zu erlangen. Dokumentiere den gesamten Prozess, angefangen bei der Identifikation der Schwachstelle bis hin zur Ausnutzung und den möglichen Post-Exploitation Schritten. Verwende konkrete Tools und Methoden in Deiner Antwort, z.B. Burp Suite und Metasploit.

Lösung:

Ausnutzung einer XSS-Schwachstelle im Webserver eines Unternehmens

Nachdem Du während der Scanning-Phase festgestellt hast, dass der Webserver eine veraltete Version von Apache verwendet, die anfällig für Cross-Site Scripting (XSS) ist, gehst Du wie folgt vor, um diese Sicherheitslücke auszunutzen:

  • Identifikation der Schwachstelle

    Um die XSS-Schwachstelle zu identifizieren, verwendest Du Tools wie Burp Suite. Dabei gehst Du wie folgt vor:

    • Starte Burp Suite und konfiguriere Deinen Browser, um den Proxy von Burp Suite zu nutzen.
    • Besuche die Webanwendung des Unternehmens und interceptiere die HTTP-Anfragen mit Burp Suite.
    • Analysiere die HTTP-Antworten und suche nach Stellen, an denen Eingaben des Benutzers ohne ausreichende Filterung in der Webseite wieder angezeigt werden.
    • Versuche, ein einfaches XSS-Payload wie <script>alert('XSS')</script> in diese Eingabefelder oder URL-Parameter einzufügen.
    • Wenn der Payload erfolgreich ausgeführt wird und eine JavaScript-Popup-Nachricht erscheint, hast Du die XSS-Schwachstelle bestätigt.
  • Ausnutzung der Schwachstelle

    Um die XSS-Schwachstelle auszunutzen, kannst Du komplexere Payloads einsetzen, um auf vertrauliche Informationen zuzugreifen oder weitere Angriffe durchzuführen:

    • Erstelle einen Payload, der Session-Cookies eines angemeldeten Benutzers stiehlt:
    <![CDATA[]]>
    • Hoste eine Webseite, die die entwendeten Cookies empfängt und speichert.
    • Sende den Payload an gezielte Benutzer, z.B. durch Phishing-Nachrichten oder durch Verwundbarkeiten der Webseite, um möglichst privilegierte Benutzer anzusprechen.
    • Verwende die gestohlenen Session-Cookies, um Dich als das betroffene Konto anzumelden und auf weitere Ressourcen der Webanwendung zuzugreifen.
  • Post-Exploitation Schritte

    Nach dem erfolgreichen Angriff über XSS kannst Du weitere Schritte durchführen, um den Zugriff auf das System zu vertiefen:

    • Privilegieneskalation: Versuche auf weitere administrative Funktionen der Anwendung zuzugreifen.
    • Persistenter Zugang: Implantiere Backdoors in der Webanwendung oder im Server, um dauerhaft Zugriff zu haben. Dies kann durch das Hochladen schadhafter Skripte oder die Manipulation von Datenbankeinträgen geschehen.
    • Datendiebstahl: Durchsuche die kompromittierten Bereiche nach vertraulichen Daten wie persönlichen Informationen, Zugangsdaten, internen Dokumenten usw., und exfiltriere diese Daten.
    • Scanning und Ausnutzung weiterer Schwachstellen: Verwende Tools wie Metasploit, um weitere Schwachstellen auf dem Server oder in den angeschlossenen Systemen zu identifizieren und auszunutzen.

Durch die sorgfältige Vorgehensweise bei der Identifikation und Ausnutzung der Sicherheitslücke sowie durch das Durchführen von Post-Exploitation-Schritten maximierst Du die Effektivität des Penetrationstests, um dem Unternehmen ein detailliertes Bild der Schwachstellen und deren mögliche Auswirkungen zu geben.

Aufgabe 3)

Intrusion Detection Systeme (IDS) sind entscheidend für das Erkennen von unerwünschten und schädlichen Aktivitäten in Netzwerken und Computersystemen. Sie setzen verschiedene Typen und Methoden ein, um diese Aktivitäten zu identifizieren und darauf zu reagieren. Es gibt Host-based IDS (HIDS) und Network-based IDS (NIDS) als Haupttypen. Die Methoden umfassen signaturbasierte und anomaliebasierte Ansätze. Ein IDS überwacht den Netzwerkverkehr und die Systemaktivität, alarmiert bei verdächtigen Aktivitäten und besteht aus Komponenten wie Sensoren/Sonden, einer Analyse-Engine und einer Managementkonsole. Die Ziele eines IDS sind es, Angriffe zu erkennen, Sicherheitsverstöße zu verhindern und Bedrohungen zu identifizieren. IDS werden häufig in Unternehmensnetzwerken und Rechenzentren eingesetzt.

a)

Erkläre die Unterschiede zwischen Host-based Intrusion Detection System (HIDS) und Network-based Intrusion Detection System (NIDS). Nenne jeweils zwei Szenarien, in denen der Einsatz von HIDS bzw. NIDS besonders sinnvoll ist, und begründe deine Wahl.

Lösung:

Unterschiede zwischen Host-based Intrusion Detection System (HIDS) und Network-based Intrusion Detection System (NIDS)

  • Host-based Intrusion Detection System (HIDS):
    • HIDS ist auf einem einzelnen Host oder Endgerät installiert und überwacht dessen Aktivitäten und Status.
    • Es analysiert Protokolle, Systemaufrufe, Dateiänderungen und andere Aktivitäten auf dem Host, um Anomalien oder signaturbasierte Angriffe zu erkennen.
    • HIDS ist in der Lage, detaillierte Informationen über das Verhalten eines bestimmten Hosts zu liefern und bietet Schutz für dieses spezifische Gerät.
  • Network-based Intrusion Detection System (NIDS):
    • NIDS überwacht den gesamten Netzwerkverkehr und analysiert Datenpakete, die durch das Netzwerk gesendet werden.
    • Es kann verdächtige Aktivitäten im gesamten Netzwerk erkennen, da es den Datenfluss zwischen verschiedenen Hosts und Geräten überwacht.
    • NIDS ist optimal für die Erkennung von Netzwerk-basierten Angriffen, wie z.B. Denial-of-Service (DoS)-Angriffe oder Man-in-the-Middle-Angriffe.
Szenarien für den Einsatz von HIDS:
  • Server mit sensiblen Daten: Auf einem Server, der sensible Daten enthält (z.B. ein Datenbankserver), ist der Einsatz von HIDS sinnvoll, um sicherzustellen, dass nur autorisierte Aktivitäten stattfinden und um sofortige Alarme für potenzielle Bedrohungen zu erhalten.
  • Arbeitsstationen von Führungskräften: HIDS kann auf den Computern von Führungskräften eingesetzt werden, die Zugriff auf vertrauliche Informationen haben. Es schützt diese Endgeräte vor gezielten Angriffen und Insider-Bedrohungen.
Szenarien für den Einsatz von NIDS:
  • Unternehmensnetzwerke: In einem großen Unternehmensnetzwerk kann NIDS eingesetzt werden, um den gesamten Netzwerkverkehr zu überwachen und Bedrohungen zu erkennen, die sich über das Netzwerk verbreiten, wie z.B. Netzwerk-Scans oder computergestützte Angriffe.
  • Rechenzentren: NIDS ist sinnvoll in Rechenzentren, die viele Server und Netzwerkgeräte beherbergen. Es kann helfen, das gesamte Netzwerk zu überwachen und bösartige Aktivitäten frühzeitig zu erkennen, bevor sie großen Schaden anrichten.

b)

Stelle dir vor, du bist für die Implementierung eines IDS in einem mittelgroßen Unternehmen verantwortlich. Erläutere die Rolle und Funktion der Komponenten: Sensoren/Sonden, Analyse-Engine und Managementkonsole in deinem geplanten IDS. Beschreibe, wie diese Komponenten zusammenarbeiten, um unerwünschte Aktivitäten zu erkennen und darauf zu reagieren.

Lösung:

Rolle und Funktion der Komponenten eines IDS in einem mittelgroßen Unternehmen:

  • Sensoren/Sonden:
    • Rolle: Sensoren oder Sonden sind die Komponenten, die den Netzwerkverkehr und die Systemaktivitäten überwachen. Sie dienen als die Augen und Ohren des IDS.
    • Funktion: Sie erfassen und sammeln Daten aus dem gesamten Netzwerk oder von spezifischen Hosts. Diese Daten umfassen Paketheader, Protokollinformationen und verschiedene Systemereignisse.
  • Analyse-Engine:
    • Rolle: Die Analyse-Engine ist das Gehirn des IDS. Sie verarbeitet die von den Sensoren gesammelten Daten und erkennt potenziell schädliche Aktivitäten.
    • Funktion: Mithilfe von signaturbasierten und anomaliebasierten Methoden analysiert die Engine die Daten, um bekannte Angriffsmuster oder auffällige Verhaltensweisen zu identifizieren. Bei verdächtigen Aktivitäten generiert sie Alarme.
  • Managementkonsole:
    • Rolle: Die Managementkonsole dient als zentrale Schnittstelle für die Verwaltung und Überwachung des gesamten IDS.
    • Funktion: Sie zeigt die von der Analyse-Engine generierten Alarme und Berichte an. Zudem ermöglicht sie es Administratoren, auf Bedrohungen zu reagieren, Policies zu konfigurieren und Systemupdates durchzuführen.
Zusammenarbeit der Komponenten:
  • 1. Erfassung der Daten: Die Sensoren/Sonden erfassen kontinuierlich Netzwerkverkehr und Systemaktivitäten.
  • 2. Datenanalyse: Die gesammelten Daten werden an die Analyse-Engine weitergeleitet, die sie in Echtzeit verarbeitet und auf schädliche Muster untersucht.
  • 3. Alarmierung: Bei der Erkennung von verdächtigen Aktivitäten generiert die Analyse-Engine Alarme, die an die Managementkonsole gesendet werden.
  • 4. Überwachung und Reaktion: Sicherheitsadministratoren überwachen die Managementkonsole, um schnell auf Alarme zu reagieren, Bedrohungen zu untersuchen und entsprechende Gegenmaßnahmen zu ergreifen.
Beispiel zur Verdeutlichung:
  • Einer der Sensoren erkennt ungewöhnlich hohen Netzwerkverkehr auf einem bestimmten Port. Diese Daten werden an die Analyse-Engine gesendet.
  • Die Analyse-Engine vergleicht das Verkehrsmuster mit bekannten Denial-of-Service (DoS)-Angriffssignaturen und identifiziert eine Übereinstimmung.
  • Ein Alarm wird generiert und auf der Managementkonsole angezeigt.
  • Der Sicherheitsadministrator überprüft den Alarm über die Managementkonsole und initiiert Sofortmaßnahmen, wie das Blockieren des verdächtigen IP-Bereichs, um den Angriff zu stoppen.
Durch die enge Zusammenarbeit dieser drei Komponenten kann das IDS effektiv unerwünschte und schädliche Aktivitäten erkennen und darauf reagieren, wodurch die Sicherheit des Unternehmensnetzwerks gewährleistet wird.

c)

Von den Methoden zur Erkennung schädlicher Aktivitäten sind zwei besonders hervorzuheben: die signaturbasierte und die anomaliebasierte Methode. Für jedes dieser Verfahren, erstelle ein Beispiel, wie ein Angriff erkannt wird. Zeige dabei sowohl die Vor- als auch die Nachteile der jeweiligen Methode auf.

Lösung:

Signaturbasierte Methode

  • Beispiel:Ein signaturbasiertes IDS kann einen Angriff erkennen, indem es bekannte Angriffsmuster, wie z.B. die Signatur eines bestimmten Trojaners, in den ein- und ausgehenden Datenpaketen sucht. Wenn der Inhalt eines Pakets mit der Signatur des Trojaners übereinstimmt, löst das IDS einen Alarm aus.
  • Vorteile:
    • Effektive Erkennung bekannter Angriffe: Diese Methode ist sehr gut darin, bekannte Bedrohungen, deren Signaturen in der IDS-Datenbank vorhanden sind, schnell und präzise zu erkennen.
    • Geringe Fehlerquote: Da das System auf konkrete Signaturen basiert, gibt es weniger Fehlalarme im Vergleich zu anderen Methoden.
  • Nachteile:
    • Unfähig, unbekannte Angriffe zu erkennen: Diese Methode ist ineffektiv gegen neue oder zuvor unbekannte Bedrohungen, da keine Signatur dafür existiert.
    • Pflegeaufwand: Es erfordert regelmäßige Updates der Signaturdatenbank, um mit den neuesten Bedrohungen Schritt zu halten.
Anomaliebasierte Methode
  • Beispiel:Ein anomaliebasiertes IDS kann einen Angriff erkennen, indem es ungewöhnliche Aktivitäten identifiziert, die von den normalen, erwarteten Aktivitäten abweichen. Zum Beispiel könnte ein plötzliches, untypisch hohes Datenaufkommen zu einer bestimmten Zeit als Anomalie erkannt werden, die auf einen Denial-of-Service (DoS)-Angriff hindeutet.
  • Vorteile:
    • Erkennung unbekannter Angriffe: Diese Methode kann neue und unbekannte Angriffe erkennen, indem sie Abweichungen vom normalen Verhalten identifiziert.
    • Keine Notwendigkeit für Signaturen: Es ist nicht erforderlich, ständig Signaturdatenbanken zu aktualisieren.
  • Nachteile:
    • Hohe Fehlalarmrate: Da das System auf Anomalien basiert, kann es häufig auch legitime Aktivitäten als Bedrohung einstufen, was zu einer hohen Anzahl von Fehlalarmen führt.
    • Komplexität der Implementierung: Es kann schwierig und zeitaufwendig sein, ein Baseline-Verhalten zu definieren und zu pflegen, gegen das Anomalien erkannt werden.

Aufgabe 4)

Analyse einer Schwachstelle und Entwicklung eines Exploits

In einem fiktiven Szenario wurde in einer Software eine Schwachstelle gefunden, die es einem Angreifer ermöglicht, eine Pufferüberlauf-Schwachstelle auszunutzen. Diese Schwachstelle kann das Zielsystem zum Absturz bringen oder potentiell ermöglicht es einem Angreifer, beliebigen Code auszuführen. Die Schwachstelle tritt in einer Funktion auf, die keine ordnungsgemäße Prüfung der Eingabelänge durchführt und einen benutzerdefinierten String in einen festen Speicherpuffer kopiert. Du hast Zugang zu folgendem Code der Funktion und den dazugehörigen Speicherinhalten:

void vulnerable_function(char *user_input) {    char buffer[50];    strcpy(buffer, user_input);}

a)

Schwachstellenanalyse

Analysiere die gegebene Funktion und identifiziere die Schwachstelle. Führe die notwendigen Schritte durch, um nachzuweisen, dass ein Pufferüberlauf möglich ist.

  • Erkläre, was bei einem Pufferüberlauf passiert und warum die gegebene Funktion anfällig dafür ist.
  • Zeige durch ein konkretes Beispiel, wie du diese Schwachstelle ausnutzen kannst, um den Speicher zu überschreiben und potentielle Folgen davon.

Lösung:

Schwachstellenanalyse

  • Erklärung des Pufferüberlaufs:

Ein Pufferüberlauf tritt auf, wenn mehr Daten in einen Speicherpuffer geschrieben werden, als der Puffer aufnehmen kann. Dadurch können angrenzende Speicherbereiche überschrieben werden, was zu unvorhergesehenem Verhalten des Programms führt. Im schlimmsten Fall kann dieser Fehler einem Angreifer die Ausführung beliebigen Codes ermöglichen.

In der gegebenen Funktion

void vulnerable_function(char *user_input) { char buffer[50]; strcpy(buffer, user_input);}
wird der vom Benutzer eingegebene String ohne Längenprüfung in einen 50 Byte großen Speicherpuffer (buffer) kopiert. Wenn der Benutzer mehr als 50 Zeichen eingibt, kommt es zum Pufferüberlauf, da strcpy() die Länge der Eingabe nicht überprüft und einfach alle Zeichen kopiert.
  • Beispiel zur Demonstration eines Pufferüberlaufs:

Angenommen, der Angreifer gibt eine Eingabe ein, die länger als 50 Zeichen ist. Beispielsweise könnte die Eingabe so aussehen:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Hier sind 64 Zeichen 'A' im Benutzereingabepuffer.

  • Speicherüberschreibung und Konsequenzen:

Das Überschreiben dieser 14 zusätzlichen Zeichen (64-50) überschreibt angrenzende Speicherbereiche, die für andere Variablen, Zeiger oder sogar Rücksprungadressen verwendet werden könnten. Dies könnte folgendes zur Folge haben:

  • Das Programm stürzt ab, weil es versucht, auf ungültige Speicheradressen zuzugreifen.
  • Ein Angreifer könnte die Rücksprungadresse überschreiben und die Kontrolle über den Programmfluss übernehmen, was zur Ausführung beliebigen Codes führen könnte.

Eins solches präpariertes Eingabe könnte auch wie folgt aussehen:

A (50 mal) + RETURN-ADDRESS (4 byte)

Beispielsweise:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBB

Die letzten 4 'B's stehen hier symbolisch für die Bytes, die die Rücksprungadresse überschreiben könnten.

Durch diese Demonstration wird klar, dass die gegebene Funktion anfällig für Pufferüberläufe ist und entsprechend angepasster schädlicher Code durch den Angreifer eingeschleust werden kann.

b)

Entwicklung eines Exploits

Entwickle basierend auf der analysierten Schwachstelle einen Proof of Concept (PoC)-Exploit, der den Wert des user_input nutzt, um die Rücksprungadresse der Funktion zu überschreiben und somit eine auszuführende Shellcode-Sequence in den Speicher schreibt. Verwende einen geeigneten Shellcode deiner Wahl und erläutere die einzelnen Schritte.

  • Beschreibe den Aufbau des Exploits und die einzelnen Komponenten des schädlichen Codes.
  • Erkläre, wie du den Speicherpuffer so füllst, dass der Shellcode ausgeführt wird, wenn die Funktion beendet wird.
  • Diskutiere mögliche Abwehrmechanismen gegen diesen Exploit und die Notwendigkeit von Patch-Management.

Lösung:

Entwicklung eines Exploits

  • Beschreibung des Exploit-Aufbaus und der Komponenten:

Ein Exploit für diese Schwachstelle nutzt die Tatsache, dass die Funktion strcpy() keine Längenprüfung durchführt und dies zu einem Pufferüberlauf führt. Um einen funktionierenden Exploit zu entwickeln, müssen folgende Schritte berücksichtigt werden:

  1. Ein Shellcode, der die gewünschte Aktion ausführt (z.B. eine Shell öffnen).
  2. Den Speicherpuffer so präparieren, dass die Rücksprungadresse der Funktion überschrieben wird.
  3. Der Shellcode soll sich im überschriebenen Bereich befinden, damit er ausgeführt wird, wenn die Funktion endet.

Beispiel-Shellcode (hier wird eine einfache /bin/sh-Shell gestartet):

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80
  • Füllen des Speicherpuffers:

Um den Puffer zu füllen, muss die Eingabe so präpariert werden, dass sie den Shellcode enthält und die Rücksprungadresse auf den Speicherort des Shellcodes verweist:

  1. Fülle die ersten 50 Bytes des Puffers mit beliebigem Inhalt (hier 'A').
  2. Füge anschließend die Rücksprungadresse hinzu, die den Instruktionszeiger auf den Speicherbereich zeigt, wo der Shellcode beginnt.
  3. Fügt den Shellcode nach der Rücksprungadresse ein, sodass der Speicherblock den Shellcode enthält.

Beispiel-Python-Code, um den Exploit zu erstellen:

 exploit = b'A' * 50  # Fill the buffer with 50 'A's return_address = b'\xf0\xff\xbf\xdd'  # Example return address pointing to the shellcode shellcode = b'\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80'  # Shellcode exploit += return_address exploit += shellcode print(exploit)
  • Abwehrmechanismen gegen den Exploit und Patch-Management:

Um solche Exploits zu verhindern, können verschiedene Sicherheitsmaßnahmen implementiert werden:

  • Stack Canaries: Einfügen spezieller Werte am Ende des Puffers, die überprüft werden, bevor der Funktion zurückgegeben wird. Wenn der Canary-Wert sich ändert, liegt ein Buffer-Overflow vor und das Programm wird beendet.
  • Address Space Layout Randomization (ASLR): Adressen im Speicher werden zufällig vergeben, was es schwieriger macht, die genaue Adresse des Shellcodes zu erraten.
  • Non-Executable Memory: Segmente, die nur für Daten vorgesehen sind (wie der Stack), werden als nicht ausführbar markiert.
  • Sichere Programmierung: Nutzung sicherer Funktionen wie strncpy() statt strcpy(), die eine Größenbegrenzung erlauben, um Pufferüberläufe zu verhindern.

Durch regelmäßiges Patch-Management und die Anwendung von Sicherheitsupdates können bekannte Schwachstellen geschlossen und die Systemstabilität verbessert werden.

Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden