A FreeBSD Kernel Rootkit
Inhaltsverzeichnis Background / Inspiration Rheya Hidden Channels Rootkits Hidden Channels Remote Exploiting Frameworks Forensik Rheya Komponenten Anti-Forensik Probleme bei der Implementation
...nach einem erfolgreichen Einbruch Attacker will Weiterhin Zugang zum System haben Auf dem System sein Zeugs machen und zwar so, dass es niemand merkt!
Rootkits: Anforderungskatalog Ziel: root behalten! Backdoor Möglichkeit, als User Root zu werden Möglichkeit, ohne Shell Zugang auf das System zugreifen zu können Möglichkeit, Daten zu verstecken Möglichkeit, Aktivität/Aktivitäten zu verstecken Möglichkeit, änderung zu verstecken
...was bedeutet das Aktivitäten des Angreifers sollen vom Admin oder von Software nicht (als bösartig) erkannt werden sonst verlust des System, evntl Forensische Analyse Lösung: Admin bekommt eine Virtuelle Sicht auf das System, die nicht mit der Realität übereinstimmt “alles sieht normal aus”
Rootkits: Funktionen Verstecken von Dateien Verstecken von Netzwerk Verbindungen eine möglichkeit, um root zu werden eine möglichkeit, remote befehle abzusetzen
Background: Rootkits Rootkits der ersten Generation im Userspace, Ring 3 ersetzen von Systemdateien mit gepatchten Versionen Daten verstecken: ls, rm, touch, mkdir, rmdir Aktivität verstecken: netstat, login, getty, sshd, who, lsof,... Zusätzliche Cloaking Tools / Log Cleaner lastlog, wtmp, /var/log/messages, apache log, ... entdeckbar mit Datei Checksums tripwire, AIDE, ... ... oder auch Integrity Checker (wtmp, lastlog) Techniq obsolete, wird aber noch angewendet
Background: Rootkits Rootkits der Zweiten Generation im Kernelmode (Ring 0) (Kernel Modul) keine Modifikationen von Dateien nötig Kernel Datenstrukturen Manipulieren Prozess aus Prozess List löschen: Prozess nicht mehr sichtbar, bekommt aber noch CPU Zeit VFS Modifikationen Kernel Funktionen ersetzen Syscalls (mit Trampoline) mkdir, getdirents, read/write, ... interne Funktionen (z.B. für Firewall)
Background: Rootkits Rootkits der Zweiten Generation Kommunikation Userspace Programme spezielle Packete (Hardcoded) Abwehr vom Userspace relativ schwer zu entdecken Entdeckung durch Daten Korrelation Verhindern: Kernel Module deaktivieren nützt nichts; /dev/kmem Windows Vista: nur signierte Treiber “nur”, “signiert” Exploit in einem Treiber
Background: Rootkits Hypervisor Rootkits unklar, ob man Bösartige Hypervisor Rootkits entdecken kann Zukunft
Background: Hidden Channels Motivation: Angreifer will nicht, dass er wegen der Kommunikation entdeckt wird Gefangenen Problem ein paar Netzwerk Hidden Channels als Payload in ICMP Echo Reply/Request als DNS Hostnames in DNS Requests SEQ Nummer bei Verbindungsaufbau Out-of-Order Byte bei TCP Timing von TCP Connects ... neu: Channel Hopping
Background: Forensik einfach zu bewerkstelligen Motivation: Attacker will so wenig wie möglich von sich Preisgeben Forensische Untersuchung eines gehackten Systems = HD untersuchen Abwehr: nichts berührt die HD einfach zu bewerkstelligen Falls Reboot-Safety erwünscht: HD! backdooring init + file redirection virus Hidden Channels: Encrypted
Background: Remote Exploition Frameworks Ziel: Framework zur Modularen Entwicklung von Exploits Metasploit Fehler in Software -> EIP First Stage Payload Als Shellcode/Eggcode lädt Second Stage Payload Second Stage Payload wird in einen bestehenden Prozess als DLL Injected stellt Mini-Server bereit (Meterpreter) CANVAS, ...
What's wrong with all the RK's? keines für FreeBSD jedes Implementiert einen eigenen Kommunikationskanal viele Proof of Concepts
Rheya: Ziel Zugriff behalten Präsenz des Angreifers verstecken Aktivitäten des Angreifers verstecken Aktivität des Angreifers verstecken Änderungen des Angreifers verstecken zusätzliche Daten verstecken änderung an Daten verstecken eigentliches Ziel: Angreifer bei seinen Aktivitäten schützen
Solyaris Rheya FreeBSD Kernel Rootkit / Backdoor Kelvin Client for the Rheya/Sartorius Sartorius Userspace Implementation of the Backdoor Snaut Userspace Helper Program for Rheya/Sartorius
Features Data Hiding Dateien/Prozesse/Connections verstecken File redirection Rootkit: Kommunikation bereitstellen Channels Encrypted and Authenticated Services Packet Forwarding Techniqs kmem injection for kbd dll injection for ubd init virii
Aufbau Solyaris
Feature: Covert Channels
Beschreibung Channels
Feature: File Redirection
Identifikation low-level und high-level Funktionen Identifikation des Rootkits low-level und high-level Funktionen versteckte Dateien: /dev/hda + Kernel, Bios? versteckte Prozesse: /dev/kmem, scheduler vorher/nachher checksums Syscall Jump Table Syscall Code Timings anzahl instruktionen eines mkdir syscall aufrufs
Identifikation Identifikation des Rootkits Signatur scanning in /dev/kmem Anomalien keine Inodes Packet Counter, Zombie Prozesse, .. ...
Identifikation NIDS ohne Durchblick HIDS pwnt verschlüsselung, hidden channels, channel hopping sowieso Totgeburt HIDS pwnt entdeckung vom Kernel Modul möglich vergleich mit Korrektem Zustand anomalie Detektion SELinux, RBAC, .. ? Tools um Hidden Channels zu entdecken entropie anomalie detection