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