IT-Sicherheit
- Setup Virtual Machines
- Härtung Firewall
- Weiteres
- Kali Linux
- Härtung Suricata [SQL-Injection]
- Penetration Testing
Setup Virtual Machines
- Netzwerkkarte 1: Bridge - automatische Erkennung
- Netzwerkkarte 2: Privat auf meinem Mac
- net-tools auf allen installieren
- tcpdump auf allen installieren
- iptables auf allen installieren
- iptables-persistent auf allen installieren
apt update && apt upgrade -y
apt install net-tools tcpdump iptables iptables-persistent -y
- Firewall erstellen
-
- IP: 10.10.10.2
- ssh installieren
- Webserver erstellen
- IP: 10.10.10.3
- apache2 installieren
- Adminserver erstellen
- IP: 10.10.10.4
- ssh installieren
Nach Software-Installation die Interfaces ins Internet auf Webserver und Admin deaktivieren!
Netzwerkkonfiguration (/etc/network/interfaces)
# Webserver
auto ens256
iface ens256 inet static
address 10.10.10.3
gateway 10.10.10.2
netmask 255.255.255.0
# Firewall
auto ens256
iface ens256 inet static
address 10.10.10.2
netmask 255.255.255.0
# Adminserver
auto ens256
iface ens256 inet static
address 10.10.10.4
gateway 10.10.10.2
netmask 255.255.255.0
Firewall-Regeln
Firewall-Maschine:
iptables -A PREROUTING -t nat -i ens256 -p tcp --dport 80 -j DNAT --to 10.10.10.3:80
iptables -A PREROUTING -t nat -i ens256 -p tcp --dport 22 -j DNAT --to 10.10.10.4:22
Commands
Enable ip-forwarding (auf der Firewall):
echo 1 > /proc/sys/net/ipv4/ip_forward
Persistieren vom ip-forwarding: In Datei /etc/sysctl.conf
netstat:
netstat -rn
tcpdump:
tcpdump -i <INTERFACE> port <PORT>
iptables Regeln anzeigen:
iptables -L PREROUTING -t nat
VMs Internet geben (auf Firewall):
iptables -t nat -A POSTROUTING -o <PUBLIC-INTERFACE-NAME> -j MASQUERADE
Schaubild
Härtung Firewall
Firewall-Commands (auf Webserver und Firewall)
# Akzeptiert Verbindung von Adminserver
iptables -A INPUT -p tcp -s 10.10.10.4 --dport 22 -j ACCEPT
# Lässt keine erstmal keine Verbindung auf Port 22 zu
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
# Für jeden weiteren Eintrag - Input auf 2 damit die 0.0.0.0/0 Regel an Pos 1 bleibt
iptables -I INPUT 2 -p tcp -s hier neue ip --dport 22 -j ACCEPT
Intrusion Detection System
Suricata
ICMP-Alerts
# Start von Suricata
# -D = Detatched
# suricata -i [INTERFACE1] -i [INTERFACE2] -D
suricata -i ens160 -i ens256 -D
Commands zum Beenden eines Prozesses
# Prozess anzeigen
ps aux | grep suricata
# Prozess killen
kill -9 [PID]
# oder
kill [PID]
DNS-Alerts
Diese Regel in Suricata überwacht den DNS-Verkehr (Domain Name System) und löst eine Warnung aus, wenn eine DNS-Anfrage den Begriff "google" enthält.
- alert dns: Dies gibt an, dass die Regel auf DNS-Verkehr angewendet wird.
- dns any any -> any any: Dies bedeutet, dass die Regel für jede DNS-Anfrage von jeder Quelle zu jedem Ziel gilt.
- (msg: "DNS LOOKUP for Google";: Dies ist die Nachricht, die in der Warnung angezeigt wird.
- dns_query;: Dies gibt an, dass die Regel nur auf DNS-Anfragen angewendet werden soll (keine Antworten).
- content: "google";: Dies ist die Bedingung, die erfüllt sein muss, damit die Warnung ausgelöst wird. Die DNS-Anfrage muss das Wort "google" enthalten.
- sid:1000001;) Dies ist eine eindeutige ID für die Regel.
Mit folgenden Befehlen kann man testen:
# Google pingen
ping google.com
# DNS-Auflösung
nslookup google.com
Ausgehende SSH-Verbindungen erkennen und alterten
alert tcp 10.10.10.0/24 any -> any 22 (msg:"Ausgehende SSH-Verbindung erkannt"; flow:established,to_client; sid:1000002; rev:1;)
Suricata als Service in Debian machen
create user for suricata
useradd -r -s /usr/sbin/nologin suricata
change the IFACE at /etc/default/suricata
and make it listen to our infterface
change the owner of /var/log/suricata using command below
chown -R suricata:suricata /var/log/suricata
edit interfaces at /etc/suricata/suricata.yaml and make it listen to our infterface
start the Suricata and make sure it has been running well
systemctl start suricata
systemctl status suricata
Weiteres
Ausblick nächstes Semester
- Aufgabe: Gutes Ziel für einen Penetrationtest raussuchen - derjenige muss davon wissen
- Ist prinzipiell illegal (ausnutzen von Sicherheitslücken) - mit dem Eigentümer des Systems muss es eine Vereinbarung geben
- Gerät, Software, Docker-Image
- Professionell gemanagte Dinge sind meist ziemlich sicher und schwierig etwas zu finden
- Es werden Gruppen gebildet und wir gehen durch einen Pentesting Prozess inkl. Bürokratie
- Prüfungsleistung am Ende des Semesters ist eine Präsentation
- Wissen aus diesem Semester ggf. mit abdecken
- Penetrationtests
Kali Linux
- Gebaut für die Durchführung von Penetrationtests und Offensive Security
- Zahlreiche Tools vorhanden um Systeme anzugreifen
- Nutzen gute und böse Personen (Schwachstellen aufdecken oder Missbrauch)
- In der Regel eine VM, Windows Subsystem for Linux hat mittlerweile auch eine Version
Tools
- aircrack-ng: WLAN Passwörter knacken
- Burp suite: Proxy zum Client und Server (Web) App Security - Anfragen manipulieren
- OWASP-ZAP: Web App Scanner
- Nmap, Wireshark: Netzwerk-Analyse
- Nessus: Schwachstellenscanner - gibt Gesamtbild über ein System ob etwas angreifbar ist (z.B. Datenbank)
- SQLmap: SQL Injection (vor allem Webseiten)
- xkcd - Comic zur SQL Injection https://xkcd.com/327/
SQLMap
- Erkennung von SQL-Injection-Schwachstellen: Sqlmap kann automatisch Schwachstellen in Webanwendungen erkennen, indem es verschiedene Arten von SQL-Injection-Angriffen testet.
- Ausnutzen von SQL-Injection-Schwachstellen: Sobald eine Schwachstelle gefunden wurde, kann sqlmap diese ausnutzen, um auf die zugrunde liegende Datenbank zuzugreifen.
- Datenbank-Interaktion: Sqlmap bietet eine Vielzahl von Funktionen zur Interaktion mit der Datenbank, wie z.B. das Abrufen von Tabellen- und Spaltennamen, das Auslesen von Daten, das Ausführen von SQL-Befehlen und sogar das Hoch- und Herunterladen von Dateien.
- Umfangreiche Datenbankunterstützung: Sqlmap unterstützt eine Vielzahl von Datenbankmanagementsystemen, darunter MySQL, PostgreSQL, Microsoft SQL Server, Oracle und viele andere.
Webseite testen:
- Auf SQL-Injection-Schwachstellen scannen falls vorhanden und Namen der Datenbanken auflisten
sqlmap -u "http://192.168.108.129/" --dbs
- Scan mit Post-Daten
- Befehl sendet POST-Daten an die URL
login.php
- Befehl sendet POST-Daten an die URL
sqlmap -u "http://192.168.108.129/login.php" --data="username=test&password=test" --dbs
sqlmap -u "http://192.168.108.129/" --cookie="PHPSESSID=12345" --dbs
Log-Dateien ansehen:
- Liegen beim Webserver im /var/log/apache2/access.log
- Zugriffe von SQLmap werden hier sichtbar
Härtung Suricata [SQL-Injection]
- SQL Injection über Kali ans Host-Netzwerk über die Firewall auf den Webserver
- Nutzung von SQLmap
Alerts für SQL-Injection
# Kritisch weil gibt schnellen Alarm wenn jemand irgendwas mit select schreibt
alert http any any -> any any (msg: "SQL-Injection erkannt! (content: Select)"; content:"Select"; nocase; sid:1000004;)
# Leicht umgehbar weil userAgent geändert werden kann
alert http any any -> any any (msg: "SQLmap erkannt! (user_agent: sqlmap)"; http.user_agent; content:"sqlmap"; nocase; sid:1000005;)
Weitere Möglichkeiten:
- Kommentare "--" im Content suchen (auch kritisch weil schneller Alarm)
Penetration Testing
Was ist Pentesting?
- Aufdecken von Sicherheitslücken
- Mögliche Angriffszenarien durchgehen
- Sicherheitslücken aufzeigen
- Dokumentation aller durchgeführten Schritte und Ergebnisse, jedes kleine bisschen
- Fließt in die Präsentation ein
- "Ethical hacking"
- Eindringen mit Zustimmung
- Simulation eines Cyber-Angriffs ohne Schaden anzurichten
- Nutzung von Werkzeugen eines Angreifers
- Standards: OWASP Testing Guide, OSSTMM3
- Kunde möchte am Ende die Dokumentation der Ergebnisse: Was wurde getestet? Wie wurde es getestet? Was ist das Ergebnis?
Definition
- Verbesserung der IT-Sicherheit eines Systems
- Erkennung Schwachstellen
- "Nachweis" der Sicherheit durch eine 3. Partei (gelegentlich)
- Verbesserung interner Sicherheitsprozesse
Rechtliches
- Straftat Computerbetrug §263 StGB
- Ausspähen von Daten §202a StGB
- Abfangen von Daten §202b StGB
- Vorbereiten des Ausspähens oder Abfangens (Hacker-Paragraph) §202c StGB
- Datenhehlerei §202d StGB
Beauftragung
- Beauftragungsdatum hier: 10.01.2025
- Klärung Ziel, Zeitplan und Aufwand
- Festlegung des Ablaufs (Projektplan)
- Vertraulichkeitsvereinbarung (NDA)
- Rollen und Verantwortlichkeiten auf Tester und Kundenseite
- Umfang und Arbeitsaufwand
- Kommerzielle Aspekte: Kosten, Zahlungsmodalitäten, Haftung/Haftungsausschluss (im Projekt hier nicht)
Briefing
- Definition zu testende Systeme u. Netzwerkadressen (Scope)
- Klärung, in welchem Maß Zugang bestehen:
- Internet?
- Aus authentisierter Nutzer einer Anwendung?
- Physikalischer Zugriff auf Netze im Haus?
- Sollen Maßnahmen mit zerstörerischen Auswirkungen durchgeführt werden?
- Was sind Kriterien und Vorgehen für Abbruch des Tests?
- DoS, DDoS eingeschlossen?
- Ausschluss bestimmter Techniken (z.B. Social Engineering, Gold Tickets, ...)
- Keine personenbezogenen Daten und Passwörter in die Dokumentation schreiben
Black Box Test
- Keine Informationen über das zu testende System
- Strukturen, Schwachstellen, ... müssen von außen erkannt werden
- Vorteile
- Perspektive eines externen Angreifers
- Realistische Angrifssimulation
- Nachteile
- Hoher Zeitaufwand durch aufwändige Analyse
White Box Test
- Vollständiger Zugriff auf Dokumentation, Quellcode, ... (Position eines gut informierten Insiders)
- Vorteile
- Gezieltes Angreifen von Komponenten
- Verständnis für den Gesamtnetzzusammenhang
- ...
Gray Box Test
- Zugriff zu ausgewählter Dokumentation bestimmter Systemkomponenten
- Vorteil
- Gezielt Komponenten angreifen
- Angriffswege können vorab identifiziert und geplant werden
- Test kann auch bei unvollständiger Dokumentation durchgeführt werden
- Nachteil
- Auftraggeber muss die bereitgestellte Dokumentation auswählen
Umfang des Pentests
- Uneingeschränkt
- Alle Systeme können angegriffen werden
- Ausnahmen können definiert werden für besonders kritische Systeme
- Eingeschränkt (meistens)
- Nur bestimmte Systeme und Netze angreifen z.B. Alle Systeme in der DMZ
- Nur bestimmte Systeme und Netze angreifen z.B. Alle Systeme in der DMZ
- Fokussiert (häufig)
- Es wird nur eine bestimmte Anwendung oder Komponente getestet
- z.B. Test einer neuen Webanwendung vor der Inbetriebnahme
Pflichten Auftraggeber und Auftragnehmer
- Auftraggeber
- Bereitstellung Briefing-Informationen
- Information von potentiell betroffenen Dritten (Cloud/Hoster)
- Vermeidung unnötiger Schäden durch den Test
- Auftragnehmer
- Geheimhaltung der erhaltenen Informationen und Schwachstellen
- Dokumentation Vorgehensweise und Ergebnisse (Nachvollziehbarkeit)
- Allgemeine Sorgfaltspflicht zur Vermeidung unnötiger Schäden
"Permission to attack"
- Angriffe gegen IT-Systeme sind normalerweise strafbar (§202a StGB)
- Bestätigung des Auftrags zum Angriff sichert den Pentester rechtlich ab
- Dokumentation sollte schriftlich erfolgen als sog. "permission to attack"
Durchführung
- Start-/Ende-Meldungen (z.B. Security Monitoring Team + Incident Management)
- Kontaktdaten für ggfs. Abbruch
- 5 Phasen
- Vorbereitung
- Tools installieren (Kali Linux)
- WLAN aufsetzen in dem man die Geräte einbringen kann, ...
- Reconnaissance
- Überblick über die Zielsysteme bekommen
- Analyse des Angriffsziels mit dem Ziel möglichst umfassende Informationen zu sammeln
- Identifikation der vorhandenen Systeme die Teil des Angriffsziels sind
- Nutzung öffentlicher Informationsquellen ("OSINT") im Internet
- Verbindungsaufbau zu den Zielsystemen (Websiten-Aufrufe, Ports, Scans, ...)
- Auswertung
- Analyse erkannter Systeme und Schwachstellen
- Auswahl von Angriffszielen, Dokumentation der Auswahl für den Abschlussbericht
- Recherche von Angriffsmustern und Schadcode/Exploits
- Angriffsversuche
- Erfolgreicher Einbruch in die Zielsysteme
- Aktive Einbruchsversuche mit ausgewählten Werkzeugen
- Prüfung, in wie weit die Schwachstellen ausnutzbar sind
- Prüfung, welche Konsequenzen die Ausnutzung der Schwachstellen für die Zielsysteme hat
- Je nach Beauftragung kann auf die Durchführung des Angriffs verzichtet werden (Doku der Möglichkeit reicht dann aus)
- Abschließende Analyse
- Aufstellung der erkannten und angegriffenen Systeme
- Darstellung identifizierter Schwachstellen
- Ableitung damit verbundener Risiken
- Darstellung nach (nachvollziehbare) Dokumentation erfolgreicher Angriffsversuche
- Empfehlungen von Maßnahmen zur Behebung der Schwachstellen
- Vorbereitung
Abschlussbericht
- Erklären was das Ziel ist
- Was sind die Briefing Informationen?
- Vorstellung der Ergebnisse des Pentests beim Kunden
- Vorgehen und eingesetzte Werkzeuge
- Identifizierte Systeme und Schwachstellen
- Bewertung der Schwachstellen
- Handlungsempfehlungen und Gegenmaßnahmen
- In Präsi: Kein Protokoll erzählen "das haben wir gemacht, und das ..." sondern eine gute Story erzählen
Tools - Kali Linux
- Optimiert für die Durchführung von Pentests
- Basiert auf Debian
- Läuft auch auf Windows WSL
Ausgewählte Tools:
- Aircrack-ng (WLAN Credentials)
- Burp suite (Application Security Scanner)
- Technisch gesehen Proxy Server
- MITM Angriff gegen TLS
- Bildungsregeln für Token und Cookies
- Manipulation und Veränderung von Anfragen
- Einfügen von Strings, SQL-Injection
- OWAP-ZAP (Web Application Scanner)
- Scan nach Standardproblemen (x-site-scripting)
- Nmap, Wireshark (Netzwerk-Analyse)
- Nessus (Schwachstellenscanner)
- OpenVAS - Fork von der letzten OS-Nessus-Version aber OpenSource
- spiderfoot - Crawlen von Websites und extrahieren von interessanten Informationen
- ARP cache poisoning
- Manipulation Auflöstung von ARP-Adressen auf IP-Adressen
- Daten kommen auf Gerät des Angreifers an statt auf dem Standard-Gateway
- Angreifer kann in geswitchten Netzen Daten mitlesen
- Tool: arpspoof
- Schutz davor: TLS
- fuzzer - z.B. API-Pentest Tool (viele Fehlereingaben senden)