Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03153.jsonl.gz/741

Bei unseren Security Audits untersuchen wir auch regelmässig Clients. Dort finden wir mal besser und mal schlechter eingeschränkte Clients. Ein gut eingeschränkter Client ist so konfiguriert, dass der Mitarbeitende alles machen kann, was er für die tägliche Arbeit benötigt und gleichzeitig so eingeschränkt ist, dass dieser nichts am System selber verändern kann. Dabei werden bei Windows Clients beispielsweise die Befehlszeilen und PowerShell deaktiviert, aber auch der Zugriff auf USB-Geräte (z.B. USB-Stick, CD/DVD) eingeschränkt. Bei einigen Clients werden auch Systempartitionen versteckt, um den Zugriff auf die Konfigurationsdateien von Windows zu verhindern.
Um dennoch auf das Dateisystem zugreifen zu können, ist es eine verbreitete Methode von einem Wechseldatenträger, mit einem Mini-Linux Betriebssystem, zu booten. Da das installierte Windows Betriebssystem nicht bootet, gelten die Einschränkungen von Windows nicht mehr. Und so ist es möglich auf den gesamten lokalen Datenträger zuzugreifen. Als kleiner Nebeneffekt sind die von Windows gesperrten Dateien ebenfalls offen und auslesbar.
Manchmal sind die Clients noch ein bisschen besser eingeschränkt, indem USB-Geräte für den Bootvorgang deaktiviert sind, der Zugriff auf das BIOS mit einem Kennwort geschützt ist und Änderungen der BIOS-Einstellungen (z.B. Bootreihenfolge) nicht ohne weiteres möglich sind. Funktionsbedingt ist das Booten über PXE (Preboot Execution Envicronment) aber meist erlaubt.
Vorbereitung (Konfiguration)
PXE (Preboot Execution Enviroment)
PXE [1] ist ein Netzwerkprotokoll, um Computer über das LAN zu booten. Beim Booten bekommt der Computer von einem DHCP-Server die IP-Konfiguration und vom TFTP-Server die Boot-Dateien.
Abbildung 1: Übersicht
PXE-Server gibt es für alle gängigen Betriebssysteme. Für unsere Testumgebung benötigen wir einen PXE-Server und ein Windows Client (z.B. Windows 8). Als PXE-Server nutzen wir hier eine Standard Kali Linux Installation. Diese kann direkt bei Kali.org [2] heruntergeladen werden.
DHCP- und TFTP-Server installieren
Als erstes müssen wir die Installationspakete für DHCP- und TFTP-Server installieren.
DHCP-Server konfigurieren
In der Konfigurationsdatei isc-dhcp-server wird das Interface (z.B. eth0), für den DHCP-Server, der IP-Adressen verteilen soll, eintragen:
nano /etc/default/isc-dhcp-server
Konfigurationsdatei isc-dhcp-server:
# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="eth0"
Die IP-Konfiguration inklusive des PXE-Servers wird in die dhcp.conf eingetragen:
nano /etc/dhcp/dhcpd.conf
Konfigurationsdatei dhcp.conf:
default-lease-time 600;
max-lease-time 7200;
subnet <ip-pii> netmask <ip-pii> {
range <ip-pii> <ip-pii>;
option routers <ip-pii>;
next-server <ip-pii>;
filename "/pxelinux.0";
}
TFTP-Server konfigurieren
In der Konfigurationsdatei tftpd-hpa muss der Pfad zum TFTP-Verzeichnis hinterlegt werden:
nano etc/default/tftpd-hpa
Konfigurationsdatei tftpd-hpa:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="<ip-pii>:69"
TFTP_OPTIONS="--secure";
PXE-Bootdateien herunterladen und entpacken
Als nächstes müssen wir das /tftpboot Verzeichnis anlegen und den Bootloader [3] installieren. Den Bootloader laden wir von repo.kali.org herunter.
cd /tftpboot
wget http://repo.kali.org/kali/dists/kali-rolling/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar zxpf netboot.tar.gz
rm netboot.tar.gz
Kali Linux Live-CD kopieren
Jetzt benötigen wir die Live-CD, welche vom PXE-Server gestartet werden soll. Die Kali Live-CD kann unter kali.org [2] heruntergeladen werden. Von der heruntergeladenen Datei benötigen wir den Inhalt aus dem live Verzeichnis, welches wir in das Verzeichnis kali-live-x64 kopieren:
cd kali-live-x64
PXE-Boot Menü anpassen
Das PXE-Bootmenü kann über die txt.cfg geändert werden:
Hier fügen wir die nachfolgenden Zeilen ein für das Booten von der Kali Live-CD:
menu label ^Live TFTP (amd64)
linux /kali-live-x64/vmlinuz
initrd /kali-live-x64/initrd.img
append boot=live components splash username=root hostname=goSecurity-kali fetch=tftp://<ip-pii>/kali-live-x64/filesystem.squashfs
IP-Adresse vergeben
Damit unser Server im Netzwerk erreichbar ist und als PXE-Server dienen kann, müssen wir eine IP-Adresse hinterlegen. Für unsere Testumgebung haben wir uns für eine statische IP-Konfiguration entschieden.
Abbildung 2: Statische IP-Adresse
DHCP- und TFTP-Server starten
Nachdem wir alles fertig konfiguriert haben, müssen wir die Dienste auf unserem Kali Client starten:
service tftpd-hpa start
Angriff
Für unseren Angriff verbinden wir unseren Kali Linux Client direkt mit dem Netzwerk und hoffen, dass unser DHCP-Server zuerst antwortet oder verbinden den Windows-Client direkt mit dem Kali Linux Client (die bessere Variante). So ist sichergestellt, dass sich nur der Windows Client mit unserem Kali Linux Client verbindet. Hinweis: Auf DHCP-Ebene gibt es keine Authentifizierung. Der Client nimmt die erste Antwort eines DHCP-Servers als richtig und vertraut an.
Wenn alles richtig konfiguriert ist, bekommt der Windows-Client eine IP-Adresse von unseren DHCP-Server und bootet über unseren PXE-Server in unser angepasstes Boot Menü.
Abbildung 3: Boot-Menü
Im Boot Menü wählen wir «Live TFTP» aus und starten die Kali Live-CD. Mit dem Zugriff auf die lokale Festplatte haben wir vollen Zugriff über den Client.
Wir können nun beispielsweise die Windows Kennwort Hashes mit Ophcrack auslesen und knacken. Ist das Passwort nicht knackbar, können wir immer noch den Hash für einen Pass-The-Hash-Angriff [4] verwenden.
Abbildung 4: Ophcrack
Oder wir können einfach die sethc.exe (Einrastfunktion, StickyKeys) im system32-Verzeichnis durch eine cmd.exe (Windows Befehlszeile) ersetzen.
Abbildung 5: StickyKeys, sethc.exe
Die Datei sethc.exe startet die Anwendung StickyKeys, eine Anwendung für Computerbenutzer, die (z.B. aufgrund eines Handicaps) Mühe haben zwei oder mehrere Tasten gleichzeitig zu drücken. Diese Datei wird mit Systemrechten (LocalSystem) ausgeführt. Drückten wir beim Anmeldefenster fünfmal die Shift-Taste, öffnete sich eine Befehlszeile mit der LocalSystem-Berechtigung [5].
Abbildung 6: Windows Login
Fazit
DHCP ist ein sehr nützliches Protokoll für die Verteilung von IP-Adressen. Da es keine Authentifizierung gibt und der Client die erste Antwort als richtig annimmt, ist es einfach die PXE-Funktion zu missbrauchen. Unsere Erfahrung zeigt, dass PXE häufig aktiviert ist und auch eingesetzt wird. Ein entsprechender Angriff ist verhältnismässig einfach. Die Herausforderung für einen echten Angreifer besteht darin, einen gefälschten PXE-Server im Netzwerk unterzubringen und sicherzustellen, dass sein DHCP-Server schneller reagiert. In der Praxis sind solche Angriffe deshalb eher im Bereich der gezielten Attacken (APT) zu erwarten.
Empfehlungen
Um sich vor solchen Angriffen zu schützen, empfehlen wir Ihnen:
- ein BIOS-Kennwort setzen
- falls es nicht benötigt wird, PXE-Boot im BIOS deaktivieren
- Verschlüsselung einsetzen: Der beste Schutz vor diesen Angriffen ist es, die lokalen Festplatten zu verschlüsseln. Wird z.B. Bitlocker verwendet, erstellt Bitlocker eine Mini-Bootpartition von der Windows startet. Erst nach dem Windows gestartet ist, kann auf weitere Systemdateien zugegriffen werden.
- Nur die lokale Festplatte als Bootlaufwerk zulassen (Bootreihenfolge festlegen)
- Security Audits: Mit regelmässigen Kontrollen, können die Schwachstellen Ihrer IT-Infrastruktur rechtzeitig entdeckt und korrigiert werden.