0. Vorwort[Dieser Text ist aus mehreren Vorträgen und Versuchsreihen hervorgegangen, die das Network Test Center durchgeführt hat. Viele Administratoren nehmen Sicherheitsfragen auf die leichte Schulter oder übersehen Schwachstellen. Dieses Dokument liefert eine Fülle von abschreckenden Beispielen, wie ein Hacker Zugriff auf ein Netware-Netz erhalten kann. Dazu wurden ausschließlich Programme verwendet, die im Internet frei verfügbar sind.Da dieser Text über Sicherheitslücken aufklären, aber keine Hacker-Anleitung darstellen soll, sind alle Programmnamen durch XX ersetzt.] Jesco von Voss 1. Novell NetWare - GrundkonzeptNovell stellt mit seinem Netzwerkbetriebssystem NetWare einen Fileserver zur Verfügung. Das Prinzip besteht darin, mehrere Benutzer gemeinsam auf eine (geteilte) Festplatte und die darauf befindlichen Anwendungen / Daten zugreifen zu lassen. Zusätzlich zur gemeinsamen Datenträgerbenutzung ist auch die gemeinsame Benutzung von Druckern, Modems, etc. möglich. Auf Dateiebene kann für jeden Benutzer des Systems jedes Verzeichnis einzeln freigegeben und mit bestimmten Rechten versehen werden.
Rechtevererbung unter Netware 3Die Rechte der Mutterverzeichnisse bei der Vergabe von Gruppenrechten werden zu den Rechten in den Kindverzeichnissen addiert. Die dem Benutzer zustehenden Rechte sind das Ergebnis einer UND-Verknüpfung des aktuellen und aller Mutterverzeichnisse.
GruppenBenutzer können Rechtegruppen angehören. Alle Mitglieder dieser Gruppe haben dann die Gruppenrechte.
[ Anfang | Novell NetWare - Grundkonzept | Angriffspunkte | Sicherheitsmaßnahmen ] 2. AngriffspunkteIm Folgenden sollen die wesentlichen Angriffspunkte eines Novell NetWare-Netzes erläutert werden. 2.1. ServerEin frei zugänglicher Server stellt (als eigentlich unsicherer DOS-Rechner) die größte Gefahr für die Sicherheit des Novell NetWare-Netzes dar. Er kann sowohl trojanisiert als auch direkt über die Programmierschnittstelle zu Sicherheitseinbrüchen mißbraucht werden. Zu allem Überfluß existiert in jeder NetWare-Version ein Debugger, der mit <KBD><L-Shift><R-Shift><Alt><ESC> aktiviert wird und mit welchem der Arbeitsspeicher komplett betrachtet und verändert werden kann. Beispielsweise für NetWare 3.11 kann das Monitor-Paßwort folgendermaßen ausgelesen werden:
.m - Module anzeigen, dann den MONITOR.NLM-Datenbereich auslesen $???? - Dazuaddieren (bei 3.11) - anzeigen lassen und Paßwort notieren ... g - Weiter in NetWare Auch bei NetWare 4.01 steht das Paßwort noch im Klartext im RAM. Ein viel weitgehender Eingriff ist das Ausschalten sämtlicher Benutzer-Paßworte:
m 74 1F BE FF 00 00 00 - Auf dem Bildschirm erscheint eine Adresse *ADDRESS* c *ADDRESS* = EB - Paßwortfunktionen ausschalten g - Weiter in NetWare Dieses ist dann sogar bis zum nächsten Reboot aktiv. Auch durch das Einbringen neuer Hardware wird die Sicherheit von NetWare-Servern verletzt. Dazu ein Text aus dem Internet: Prepare an other hard disk, and mount it in the server as a secondary disk. Start your fileserver at the console. At the console, load the INSTALL NLM and make a new Novell disk. Do not mount this disk at this moment. On a workstation, make sure to copy the .DSK driver and the driver for the lan interface card. You can read the settings from the AUTOEXEC.NCF file in the SYSTEM directory (if you can read those) or you have to find out yourself if you have no access to this directory. Copy LOGIN.EXE to a local disk. logout from the workstation. Then, at the console, dismount sys: Load INSTALL from the dos partition or from the installation diskette, go to volume options and rename SYS: to OLDSYS: and your new disk must have the name SYS: Mount SYS: (your newly installed drive) and OLDSYS: (which happens to be the disk you want to inspect) Then at a workstation do login from the local disk. At this point you can login as the supervisor. By mapping OLDSYS: to a drive you can copy whatever you want. Map a searchg path to OLDSYS:PUBLIC . 2.1.1. Trojanisierung / Tools auf Serverbasis
Viele Backup-Programme benötigen zur Realisation von Backups 2.1.2. Ring 0 - AusnutzungBei dem Novell NetWare-Ring 0 handelt es sich um das Kernel der NetWare-Server. Das Kernel selbst kann durch Netware loadable Module (NLMs) direkt angesprochen werden. Mittels einfacher API-Aufrufe können alle Attribute der Bindery bzw. der NDS verändert werden.
BXXXXXX.NLM
Dieses Programm ist ein NetWare Loadable Module (NLM), welches durch simple API-Calls einen
Supervisor-äquivalenten Benutzer anlegt.
SXXXXX.NLM
Dieses Programm setzt - auf dem Server aufgerufen - das Paßwort eines Users auf einen
bestimmten Wert.
SXXXXXXX.NLM (Standard und gepatchte Version)
Dieses Programm setzt explizit das Supervisor-Paßwort, zuvor erfragt die nicht
gepatchte Version die Server-Seriennummer. In der Standardversion werden alle
Netzteilnehmer durch einen Broadcast über diese Änderung informiert. Die (vermutlich
von Hackern) gepatchte Version verzichtet auf den Broadcast und die Abfrage der
Seriennummer.
SMARTPASS.NLMSmartpass ist eigentlich als Hilfsmittel für den Supervisor zur Vermeidung von schwachen Paßwörtern erstellt worden. Dieses Programm prüft mit lexikographischen Methoden die Benutzerpaßwörter gegen Lexika ab. Zum Start von Smartpass wird in der ungepatchten Version aus Sicherheitsgründen das Administratorpaßwort abgefragt - ebenso können die Ergebnisse in dieser Version nur mit diesem Paßwort eingesehen werden.
TXXXXXX.NLM
Dieses Programm erzeugt zur Laufzeit einen Supervisor-äquivalenten Benutzer. 2.1.3. Ausnutzung der DOS-Struktur der ServerrechnerDa NetWare-Server auf der DOS-Architektur aufbauen (auch wenn in neueren Netware-Versionen ein eigenes Filesystem verwendet wird), sind diese Rechner ebenso wie DOS-Rechner durch Diskettenmonitore und auch spezielle Hack- Software angreifbar. Die Namen der Bindery-Dateien im SYS:SYSTEM - Verzeichnis: (Die *VAL-Dateien enthalten jeweils die Paßwörter.)
NetWare 2.x: NET$BIND.SYS, NET$BVAL.SYS Bei NetWare 4.xx liegen die entsprechenden Dateien im nicht zugänglichen SYS:_NETWARE Verzeichnis:
|
Ein einfaches Umbenennen der Files unter 2.x und 3.x in z.B. *.OLD reicht hier, um Supervisorrechte zu bekommen, unter 4.xx muß zusätzlich nach dem Umbenennen noch mit Install die NDS neu installiert werden. Einfacher zu handhaben hingegen sind Tools, die solche Manipulationen automatisch durchführen.
Dies ist ein Programm, welches auf der DOS-Ebene des Servers die NET$OS.EXE sowie die NET$BIND.SYS und NET$BVAL.SYS dahingehend patcht, daß sämtliche Sicherheitsinformationen des Netzes außer Kaft gesetzt werden. NXXXXXXX arbeitet unter den NetWare-Versionen 1.0 bis Version 2.15.
Dieses Netware Loadable Module benennt die Systemfiles (Netware 3.x) um und fährt den Server herunter - nach dem Umbenennen kann sich der Supervisor ohne Paßwort einloggen. Siehe auch die obige Beschreibung.
NetWare-Netze sind meist weitverteilte Systeme, in denen die Kabel die wohl unbeaufsichtigste Schwachstelle darstellen.
Während NetWare 2 noch unverschlüsselte Paßwörter benutzte, sind diese auf neueren Systemen nur mit „Sondererlaubnis“ einsetzbar. Ein bisher jedoch nicht beseitigter Fehler besteht bei der Benutzung von RCONSOLE, dem Fernsteuerungsprogramm für den Server. RCONSOLE benutzt ein schwach verschlüsseltes Paßwort, um eine Remote-Sitzung zum Server aufzubauen. Es existiert nicht nur ein Programm zum Entschlüsseln solcher Paßwörter (RXXX.EXE), sondern es liegt sogar eine explizite Anleitung für die Verwendung eines Sniffers (z.B. GOBBLER oder SNOOP) zum Erspähen solcher Pakete vor. Ein Auszug:
Now here are the first three packets that are sent after the user has hitafter entering the password. Ethernet packet sent from the workstation to the server to establish the SPX connection: BASE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 0000 00 80 29 00 34 35 00 00 A2 00 3D 77 00 2A FF FF 0010 00 2A 04 05 00 00 00 03 00 00 00 00 00 01 81 04 0020 00 00 00 02 02 60 8C A7 E9 AA 50 0E C0 00 44 00 0030 FF FF 00 00 00 00 00 06 ED 05 00 00 The server responses: BASE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 0000 00 00 A2 00 3D 77 00 80 29 00 34 35 00 2A FF FF 0010 00 2A 01 05 00 00 00 02 02 60 8C A7 E9 AA 50 0E 0020 00 00 00 03 00 00 00 00 00 01 81 04 80 00 90 82 0030 44 00 00 00 00 00 00 00 08 00 5A 7F And the password is sent: ADDR OFFSET BASE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 0000 00 80 29 00 34 35 00 00 A2 00 3D 77 00 AC FF FF
Auf weitere Details wurde hier verzichtet... nun noch der Aufruf von RXXX:
RXXX 47455A4D4E248C9C 00000002 02608CA7E9AA It will response with the following: decrypted pw: 0000 : 47 45 5a 4f 4e 44 00 3b e9 aa 15 15 15 17 17 75 - GEZOND.;éª.....u node address after encryption: 0000 : 11 11 11 13 13 71 9d b8 e5 a6 - .....q¸å¦
Durch eine Maskerade wird dem sich einloggenden Supervisor sein zu betreuender Server vorgespiegelt. Dieser Server kann z.B. ein trojanisiertes Login besitzen oder konzeptionell schwache Paßwort-Speichermechanismen.
Das ProgrammNovell Fake Fileserver ist der erste Versuch, einen solchen Server zu etablieren. Von Vorteil ist der GET NEAREST SERVER-Request, den die Shell des Rechners, der sich anmelden will, im allgemeinen absetzt. Daraufhin kann der falsche Server antworten und ein gefälschtes Login anbieten, welches das eingegebene Paßwort protokolliert.
Windows 95 ist nicht nur in der Lage, sich in einem Novell NetWare-Netz als Server auszugeben, es wird auch die meisten Login - Requests abfangen können. Dazu wiederum ein Text aus dem Internet:
During a Get Nearest Server request, the workstation will pick the Server with the least number of Hops that replies to the request, then ask that server for it's "Perferred Server". By design, WIN95 does not have an Internal Network number. What this means is, if there is a Netware Server and a WIN95 Server "Sapping", the WIN95 Server will ALWAYS BE 1 Hop shorter then the Netware Server. Unfortunatly, even though WIN95 will respond to Get Nearest Server, it doesn't understand handing off the call. You are left nowhere, with no way to get out.
Natürlich ist es auch möglich, einen NetWare-Server (z.B. in Form eines Notebooks) in das Netz einzubringen. Dieser Ersatz - Server kann entweder darauf hoffen, mittels GET NEAREST SERVER einen Login-Versuch zu bekommen, oder er kann den anderen Server zeitweise komplett ersetzen. Dieses wird vereinfacht, wenn switching- Techniken wie Repeater oder Hubs installiert sind, an denen unterbrechungsfrei Netzsegmente umgeschaltet werden können. Um nun die Paßworte mitzulesen, wird z.B. ein trojanisiertes Login verwendet. Es ist darüberhinaus durchaus möglich, zwei Server nebeneinander mit dem selben Namen laufen zu lassen - es ist nur darauf zu achten, daß nicht dasselbe Protokoll Verwendung findet.
Workstations, die an einem Server angeschlossen sind, sind naturgemäß die ersten Ansatzpunkte für einen Angriff von Hackern. Neben den Schwächen von DOS selbst (Das Paßwort bleibt nach Verlassen von login.exe im Tastaturpuffer im Segment .40h) gibt es diverse Novell NetWare-spezifische Angriffsprogramme.
Dieses Tool benutzt einen schwerwiegenden Sicherheitsfehler älterer NetWare-Versionen. Durch Modifikation des Attach - Befehls entstand KXXXX in den Niederlanden. Es verschafft dem Hacker nach einer gewissen Wartezeit Supervisorzugriff auf das komplette Netz.
HXXX ist ein Programm, welches bei eingeloggtem Supervisor dessen Pakete
imitiert, um mit Supervisor - Befehlen allen Usern Supervisorrechte zu verleihen.
Hierzu benutzt das Programm die Node-Adresse und Connection-Nummer des
Supervisors.
Eine zweite Variante dieses Programms setzt zusätzlich noch das Supervisorpaßwort
des eigentlichen Supervisors auf Super_hacker. Ausgenutzt wird
hierbei, daß von NetWare bis zur Version 3.11 keinerlei Authentisierung der Pakete vorgenommen wird.
Das Programm liefert folgende Ausgaben:
Major Revision : 3 Minor Revision : 2 Max. Connections : 15 Avl. Connections : 14 Completion Code : 0 Connection Number : 1 Object Name : GAST Object Type : 1 Object ID : 2 Completion Code : 0 Network Address : 00000002 Node Address : 004095123D7C Socket Number : 832 Connection ID : 1 Fileserver : SF_SERVER Completion Code : 0 Network Address : 00000001 Node Address : 000000000001 Completion Code : 0 Immediate Address : 0040951238D2 Completion Code : 0 Connection Number : 2 Object Name : SUPERVISOR Object Type : 1 Object ID : 1 Completion Code : 0 Network Address : 00000002 Node Address : 004095123E68 Socket Number : 832 ........................................ ........................................ ........................................ ................................ Completion Code : 0 Object Name : SUPERVISOR Object ID : 1 Completion Code : 215 Completion Code : 0 Object Name : GUEST Object ID : 1 Completion Code : 233 Dank u voor uw aandacht...
SUPER ist eigentlich nicht als maliziöses Programm gedacht, hilft jedoch
Hackern, die einmalig Supervisorzugriff hatten, sich zu tarnen. Das
Super - Programm modifiziert (bei Supervisor-Zugriffsrechten) das
Bindery-Objekt SECURITY_EQUALS eines beliebigen Benutzerobjekts
auf 0x22, welches dieses vom Objekt selbst beschreibbar macht. Der Benutzer
kann nun seine eigenen SECURITY_EQUALS verändern, auch
auf Supervisor-äquivalent.
Mittels SUPER - schaltet der Angreifer dann seine Supervisorrechte
aus, mittels SUPER + an. Diese Rechte sind außer durch das Programm
SUPER selbst nur löschbar, wenn der Benutzer komplett gelöscht und neu angelegt
wird.
Unter Novell NetWare 3.12 ist der Wert 0x22 für SECURITY_EQUALS unzulässig.
Syntax: SUPER [option] [User=<name>]
If no user name is added SUPER will affect the current user
Available options:
? Display this help screen
<none> Display current security status
- Remove supervisor equivalence, enable SUPER
+ Make user equivalent to supervisor
# Remove supervisor equivalence and disable SUPER
* Grant supervisor equivalence and disable SUPER
<cmd> Execute any command as supervisor (NW 386 only)
Aufspüren solcher User ist mit SECURITY und BINDFIX möglich:
Meldung von SECURITY.EXE:
Has incorrect access security on the SECURITY_EQUALS property
Meldung von BINDFIX.EXE:
Warning: Object
CHKNULL sucht auf dem Server nach Login-Namen, welchen kein Paßwort zugewiesen ist. Auf diese Weise lassen sich Sicherheitslücken, die z.B. durch Drittprodukte (Backup, Druckerserver) entstanden sind, aufdecken. Weiterhin können bestimmte Paßwörter (z.B. mit Wortlisten im Batch) geprüft werden.
Usage: chknull [-p] [-n] [-v] [wordlist ...] -p : check username as password -n : don't check NULL password -v : verbose output also checks words specified on the command line as password
BINDEDIT ist ein komfortables Tool, welches dem Supervisor das Edieren der Bindery von NetWare-Servern der Versionen bis einschließlich 3.12 erlaubt. Ähnlich wie mit einem Hex-Editor können hier die Properties (Eigenschaften) der einzelnen Bindery-Objekte und auch Attribute ediert oder gelöscht werden. Auch mit BINDEDIT können versteckte Supervisor-Äquivalente (s.o.) erzeugt werden.
Paßwörter werden in NetWare 3.12 als 16 Byte-Werte gespeichert, die durch eine Einwegfunktion (Input: User-ID, Paßwort) berechnet werden. Mit Hilfe von User-ID und angenommenen Paßwörtern kann nun ein Vergleich (lexikographischer Angriff) gestartet werden, ggf. auch off-line mit einer Kopie der Bindery. Das hier beschriebene Programm tut ein solches. Es existieren Solaris 1 / Sparc-Versionen, welche die höhere Rechengeschwindigkeit dieser Maschinen ausnutzen.
bxxxxxxx [/verify] [/numsub] pw-file dict-file /verify = Ausgabe der versuchten Paßwörter /numsub = Nummernsubstitution für Buchstaben pw-file = Gespeichertes Bindery-PW-File dict-file = Wortliste
Es sind zur Zeit noch keine NetWare 4.xx (NDS-spezifische) Programme bekannt geworden. Einige der 3.12-Programme dürften jedoch in der Bindery-Emulation durchaus erfolgreich laufen. Die im folgenden vorgestellten Verfahren sind vom Prinzip her nun gänzlich unabhängig von der eingesetzten NetWare-Version. Einige 4.xx-spezifische Sicherheitsprobleme gab es hingegen schon jetzt.
Folgender Text beschreibt, wie sich unter NetWare 4.1 unsichtbare Benutzer anlegen lassen:
What a client of mine did at my encouragement was to immediately build a new user after install. This new user was not made Admin equiv, but set up with the exact same rights as the Admin. The new user was placed in its own container, and the IRF was adjusted so that the user was completely hidden. The path and the user name, along with the password were written down and handed to the auditor who put the paper in a fire-proof safe in a secure area. A "backdoor" if you will.
Next another user was built and given the exact same rights as Admin. Finally Admin was given reduced rights, and then auditing was turned on the Admin account. This way the LAN guys could do their thing with the new account, and if anyone tried to hack Admin they would be tracked. Should they succeed, they would NOT be able to do anything.
A lot of work, but they had been hacked good and needed to feel secure. I gave them no guarantees. Even after the LAN guys left, I told the auditor to login to the backdoor and change the password.
Eine Version des LOGIN-Programmes von NetWare 4.0 enthielt einen sehr gravierenden Sicherheitsfehler. Beim Login wurde eine Swap-Datei erzeugt, die unter Umständen das Paßwort im Klartext enthielt. Dieser Fehler wurde jedoch schnell bemerkt und durch ein Update behoben.
Nach der Installation sind bei NetWare 4.xx folgende Accounts mit keinem Paßwort versehen: ADMIN, GUEST, USER_TEMPLATE. Während gewissenhafte Sysops die ersten beiden sicherlich schützen werden, wird USER_TEMPLATE meist vergessen und bietet den idealen Einstiegspunkt für Hacker.
Ein Problem, das nicht nur für Novell NetWare-Netze Bedeutung hat, sind TSR-Programme, die auf der DOS-Ebene Tastatureingaben mitprotokollieren. Viele dieser Programme dienen eigentlich der Arbeitserleichterung, um Makros zu erstellen. Doch liegt der Vorteil auch für Hacker auf der Hand, gleich die unverschlüsselte Tastatureingabe abzufangen. Diverse mehr oder minder gut getarnte und mehr oder minder intelligente Programme existieren. Eine Auswahl an Namen solcher Tools:
PHANTOM, DOSPHANTOM, CAPT, WATCH, NOVKILL
Intelligentere Tools warten auf die Novell NetWare-spezifische Eingabezeile für Name und Paßwort, oder sind sogar auf bestimmte Eingabetexte programmierbar.
Gefälschte Login-Programme können auf Workstations z.B. als Path - Companions gespeichert werden, die dann vor der Ausführung des Original-Login - Programms geladen werden. Von Angreifern, die einmalig Supervisorzugriff erhielten, kann dieses Login-Programm natürlich auch direkt im Netzverzeichnis gespeichert werden.
PXXX erzeugt eine neue Property, in der dann beim Login alle Paßwörter des durch das gefälschte Login - Programm gespeichert werden. Zum Aufruf von Prop muß Supervisorzugriff vorhanden sein.
Hier handelt es sich um einen Sourcecode eines Fake-Logins, welches die Eingaben (nach Protokollierung) an das Original-Login weiterleitet.
Mit Brute Force-Methoden wird versucht, ein Paßwort dadurch zu finden, daß alle möglichen Buchstaben-/Ziffernkombinationen eine bestimmten Länge als Paßwort ausprobiert werden. Diese Verfahren sind recht zeitaufwendig, finden jedoch theoretisch jedes mögliche Paßwort und nicht nur schwache Paßwörter.
Uns sind zur Zeit zwei dieser Programme bekannt.
Im folgenden nun stichwortartig die Maßnahmen, die zur Erhöhung der Sicherheit von NetWare-Systemen beitragen.
Der Server-Befehl Secure console
Der Server-Befehl Monitor · Lock Console verhindert Kommandozeilenzugriffe am Server.
Mit Hilfe von Syscon / Netadmin sollte der Systemverwalter