Hacking Linux

Werbung
Lehrstuhl Netzarchitekturen und Netzdienste
Institut für Informatik
Technische Universität München
Hacking Linux
Proseminar Network Hacking und Abwehr
Vortragender: Marek Kubica
Betreuer: Holger Kinkelin
Programm


Warum Linux hacken?
Einige populäre Angriffe und was man dagegen tun kann :­)





Buffer Overflow
Symlink­Attacke
Input validation failure
Bruteforce password guessing
Und wie man auch sonst das System sicher bekommt :­)
 Software­Updates
 Interessante Linux­Features
Hacking Linux
2
Software auf Linux






Kernel
Mail: Sendmail, Postfix, Exim, Dovecot, SpamAssassin
Web: Apache, Lighttpd, nginx, Cherokee
FTP: UW­FTPd, ProFTPd
Datenbanken: PostgreSQL, MySQL, SQLite
Eine ganze Menge Einfallstore für Angriffe :­(
Hacking Linux
3
Buffer Overflow

Passiert wenn man über einen Puffer hinausschreibt
 In Lowlevel­Sprachen wie C sehr einfach möglich

Überschreibt dann irgendwelche anderen Daten :­(
 Etwa Rücksprungsadressen

Schleuse für ausführbaren Code (Shellcode)
Hacking Linux
4
Sicherung gegen Buffer Overflow

Von Neumann­Architektur
 Angreifer können Code in Speicher einschleusen :­(

NX­Bit
 “No eXecutable” Speicherbereiche
 Wenn Speicher NX, kann der Code im Speicher nicht ausgeführt werden

 Gefahr gebannt, Programm terminiert :­)
Prüfung der Stackframes
 Muss vom Compiler unterstützt und aktiviert werden
 Heißt bei GCC ProPolice
 Nur wenige Distributionen tun das standardmäßig :­(
Hacking Linux
5
Symlink­Attacke






Unix­Dateisysteme unterstützen transparente Links auf Dateien/Ordner
Bsp: /tmp/tempfile → /etc/shadow
Viele Programme nutzen temporäre Dateien
Temporäre Dateien + Symlinks: Breakage :­(
Ermöglicht “unterjubeln” von Symlinks an Programme die keine Symlinks erwartet haben
Programme mit root­Rechten können dumme Sachen mit den Symlinks anstellen
 Berechtigung auf “lesbar für alle” stellen
 Inhalte überschreiben
Hacking Linux
6
Kompartimentierung

Chroot
 “Sperrt” ein Programm in einen Bereich des Dateisystems
 Programme können nicht außerhalb der chroot lesen/schreiben
 “Ausbruch” dennoch möglich

OpenVZ, Virtuozzo, Xen, KVM, Lguest, Linux­VServer
 Und wiesiealleheißen ;­)
 Eine ganze Menge anderer Ansätze: Besseres chroot, Paravirtualisierung
Hacking Linux
7
Limitierung der Programmrechte

Nicht jedes Programm mit root­Rechten benötigt alle Privilegien
 Bsp: /etc/shadow lesen/schreiben ist meist nicht nötig

Nicht jedes Programm mit User­Rechten benötigt alle Privilegien
 Ein PDF­Reader muss keine Dateien löschen können


Linux bietet Security­Module die man ins System “einhängen” kann
SELinux
 Umfassend, aber kompliziert zu konfigurieren
 Im Linux­Kernel integriert :­)
 Von der NSA

AppArmor
 Novells Alternative zu SELinux
 Einfacherer Regelsatz :­)
Hacking Linux
8
Bruteforce password guessing









Passwörter (automatisiert) erraten
Viele Loginversuche => langsam; kann geblockt werden
Benutzernamen in /etc/passwd, Passworthashes in /etc/shadow
/etc/passwd für alle Systemuser lesbar :­(
/etc/shadow knacken
Manchmal läuft die Authentifizierung auch anders (LDAP & Co)
Lokale User nicht an /etc/shadow lassen
Root­Login verhindern
Anzahl der Login­Versuche limitieren
Hacking Linux
9
Input validation failure




User machen Fehler, Programme sollten Eingaben prüfen
Einige Programme crashen bei Falscheingaben
Manchmal machen sie stattdessen etwas dummes :­)
Beispiele:
 XSS
 SQL­Injection
 $ telnet -l “-froot” adresse_eines_solaris_10
Trying adresse_eines_solaris_10
Connected to adresse_eines_solaris_10
Escape character is '^]'
Last login: Sun Jul 27 14:13:55 from some_other_host
Sun Microsystems Inc.
SunOS 5.10
Generic January 2005
# id
uid=0(root) gid=0(root) :­)
 Linux NIC­Treiber und Jumbo­Frames: e1000, rtl8169 kaputt
Hacking Linux
10
Aktuelle Software

Sicherheitslücken werden oft schnell behoben
 Red Hat, Debian, Ubuntu, Novell, Mandriva


Zügige Updates nötig
Paketmanagement existiert :­)
 APT, YUM, Canary, Portage, Pacman, urpmi, ZYpp


Auf signierte Pakete achten (Man­in­the­middle)
Update­Announcements (Advisories) lesen
Hacking Linux
11
Modularisierung von root

Manchmal braucht man nur ganz bestimmte root­Rechte






Raw­Sockets
Listen() auf Ports unter 1024
Möglichkeit Berechtigungen beliebig zu setzen
Signale wie TERM, KILL an fremde Prozesse schicken
Kein Sinn das Programm dann komplett als root laufen zu lassen
Linux Capabilities bieten einzelne Rechte :­)
Hacking Linux
12
Wechsel der Software

Viel Software ist unsicher geschrieben :­(
 Weil man nicht von bösartigen Benutzern ausging
 Weil sie unachtsam geschrieben wurde

Sichere Alternativen existieren :­)
 Sendmail => Postfix
 UW IMAP => Dovecot
 WU­FTPD => vsftpd

Wechsel der Protokolle
 Rlogin => SSH
 FTP => SFTP
Hacking Linux
13
Zusammenfassung


Linux ist nicht per­se sicher
Die “üblichen” Angriffe sind auf Linux genauso möglich
 Dazu auch noch Angriffe die nur auf Linux/Unix machbar sind :­(

Es gibt jedoch eine ganze Reihe von Sicherheitsmaßnahmen :­)




Erfordert vom Administrator einiges an Wissen
Nicht immer komfortabel
Selten brauchbar dokumentiert
Dafür aber umfassend
Hacking Linux
14
Herunterladen