Für versierte Administratoren gehört die Arbeit mit Tools wie Nikto [1] (und auch Whisker [2]) mittlerweile längst zum Alltag, denn mit Hilfe solcher Werkzeuge lassen sich in Windeseile Schwachstellen der Serverkonfiguration (und damit der Website) aufspüren. Durch die alarmierende Sicherheitslage werden aber auch immer mehr Privatanwender (vielleicht betreiben Sie eine kommerziell ausgerichtete Website?) mit diesen Werkzeugen konfrontiert. Die folgende Aufstellung umreißt die wichtigsten Einsatzgebiete Niktos. Sie können es verwenden, um
- Webserver umfassend auf Schwachstellen zu prüfen,
- Default-Webfiles aufzufinden,
- CGI-Skripts auf Sicherheitslücken zu testen und
- veraltete Server-Software zu testen.
Nikto, das Tool wurde in Perl geschrieben, setzt auf der bekannten Bibliothek LibWhisker auf und erweitert den Aktionsradius derselben sogar noch. So können Sie mit Nikto HTTP- und HTTPS-Requests absetzen. Falls Ihnen in diesem Zusammenhang Programme wie Nessus, Satan und Saint einfallen, liegen Sie grundsätzlich richtig. Überdies ist Nikto in der Lage, so genannte NIDS-Programme (NIDS=Network Intrusion Detection System) auszutricksen. Das Programm schaltet dazu in den Evasive Mode (evasive=ausweichen), der wiederum durch die zugrunde liegende Bibliothek LibWhisker aktiviert wird. Diese Vorgehensweise ist besonders hilfreich, um die Leistungsfähigkeit, Konfiguration und Verlässlichkeit eingesetzter NIDS-Systeme auszutesten (Snort und Co.).
Apropos: Sie können mit Nikto auch einfache Portscans durchführen; zudem verfügt das Tool last not least über einen automatisierten Download-Mechanismus, um bei Bedarf selbstständig Updates vom Mainserver vorzunehmen (dazu unten mehr). Dieses Feature garantiert, dass Sie sicherheitstechnisch stets auf dem neuesten Stand sind.
Achtung: Nikto darf selbstverständlich zur Wahrung berechtigter persönlicher Interessen verwendet werden. Setzen Sie Nikto jedoch gegen fremde Sites ein, wird dieses Vorgehen als Angriff verstanden und zieht Ärger nach sich. Und: Beim Einsatz Niktos ist Vorsicht geboten, denn das Tool ist in der Lage, bis zu 70.000 Requests abzusetzen, d.h. ein funktionierendes System kann unter Umständen, bei falscher Handhabung des Serverscanners, schnell in die Knie gehen. Deshalb ist es in der Tat notwendig, die Dokumentation eingehend zu studieren.
Grundlagen
Nikto wird von den Entwicklern kostenlos abgegeben. Eine Installation entfällt glücklicherweise auch, da das Programm lediglich eine funktionierende Perl-Installation voraussetzt (unter Linux ist Perl vorinstalliert). Welche Perl-Version an Bord ist, zeigt dieser Aufruf:ich@meinrechner>perl -V | lessSummary of my perl5 (revision 5 version 8 subversion 6) configuration:Platform:osname=linux, osvers=2.6.9, archname=i586-linux-thread-multi...
Sie müssen sich Nikto allerdings selbst aus dem Netz besorgen, da es nicht zum Lieferumfang einer typischen Linux-Distributionen gehört. Entpacken Sie den Tarball wie üblich in einem Verzeichnis Ihrer Wahl:
ich@meinrechner> tar xvzf nikto-verXXX.tar.gz
Danach wechseln Sie in das neu angelegte Verzeichnis und testen anschließend, ob Nikto einwandfrei funktioniert:
ich@meinrechner> perl nikto.pl -help | less
Das typische Aufrufschema für einen einfachen Serverscan sieht so aus:
ich@meinrechner> perl nikto.pl -h 192.168.1.100
Der Schalter -h spezifiziert den Host. Hier sehen Sie Teile der Ausgabe:
ich@meinrechner> perl nikto.pl -h macbeth---------------------------------------------------------------------------- Nikto 1.34/1.29 - www.cirt.net+ Target IP: 192.168.1.100+ Target Hostname: macbeth+ Target Port: 80+ Start Time: Fri Mar 25 15:48:26 2005---------------------------------------------------------------------------- Scan is dependent on "Server" string which can be faked, use -g to override+ Server: Apache/1.3.29 (Darwin)...
ich@meinrechner> perl nikto.pl -h localhost...+ Allowed HTTP Methods: GET,HEAD,POST,OPTIONS,TRACE+ HTTP method 'TRACE' is typically only used for debugging. It should be disabled....
Vorsicht: Achten Sie unbedingt darauf, dass standardmäßig die HTTP-Methoden PUT und DELETE deaktiviert sind, denn mit diesen kann man direkt auf den Server zugreifen! Und auch TRACE sollte im Normalfall, Nikto warnt im Beispiel, nicht erlaubt sein.
Das nächste Beispiel zeigt, wie man einen HTTPS-Scan (Port 443) durchführt, der Schalter -s erzwingt SSL-Verschlüsselung - falls SSL-Support angeboten wird (Serverheader werden im Beispiel ignoriert):
ich@meinrechner> perl nikto.pl -h 192.168.1.100 -p 443 -s -g
Um einen bestimmten Port-Bereich abzufragen, verwenden Sie wiederum dieses Schema:
ich@meinrechner> perl nikto.pl -h 192.168.1.100 -p 22-80
Sind Sie hingegen nur an bestimmten Ports interessiert, hilft folgender Aufruf weiter:
ich@meinrechner> perl nikto.pl -h 192.168.1.100 -p 80,443,8000,8080
Tipps
Zum Lieferumfang Niktos gehört auch die zentrale Konfigurationsdatei config.txt. Mit Hilfe der in config.txt enthaltenen Variablen steuern Sie das Laufzeitverhalten des Serverscanners und passen Nikto step-by-step an eigene Bedürfnisse an. Beispielsweise enthält config.txt die Variable @CGIDIRS wie man sieht, handelt es sich um ein Perl-Array). Diese Variable nimmt die verschiedenen existierenden Bezeichnungen für CGI-Directories auf (cgi-bin, cgi-sys etc.): Zur Laufzeit wird die Variable ausgelesen und alle darin enthaltenen Verzeichnisse werden nun von Nikto beim Scannen berücksichtigt. Die mitgelieferte Dokumentation liefert diesbezüglich weiterführende Informationen.Es wurde bereits erwähnt, dass Nikto in der Lage ist, selbstständig Updates vorzunehmen. Mit diesem Aufruf aktivieren Sie dieses Verhalten:
ich@meinrechner> perl nikto.pl -update
Der Befehl sorgt dafür, dass sich Nikto automatisch mit cirt.net, dem Mainserver, verbindet. Von dort werden dann Updates für die interne Scan-Datenbank scan_database.db sowie aktuelle Plug-in-Dateien heruntergeladen. Seien Sie aber auf der Hut und prüfen Sie genau, woher Sie die Daten beziehen. Diese Option (-update) darf übrigens nicht mit anderen Schaltern kombiniert werden.
Abschliessend muss vor dem Hintergrund der Serversicherheit unbedingt auf Programme wie Ethereal [3] und Snort [4] hingewiesen werden, da beide aus sicherheitstechnischer Perspektive absolut empfehlenswert sind (natürlich auch tcpdump). Außerdem sind beide Tools, genau wie Nikto, frei erhältlich (Snort wird zudem in einer kommerziellen Version angeboten).
Ethereal, häufig als Super-tcpdump bezeichnet, verfügt über eine ausgezeichnete grafische Oberfläche, die es Ihnen gestattet, einen guten Überblick über den Netzwerkverkehr zu bekommen. Und für Snort existieren ebenfalls optionale GUI-Lösungen (Barnyard etc., auf der Homepage finden Sie weitere Angaben).
Besonders der kombinierte Einsatz von Nikto, Ethereal und Snort hilft enorm, den Server (nebst Webauftritt) effektiv zu schützen. Somit können Sie Szenarien nachstellen und handfeste Erfahrungen im Umgang mit Netzwerken sammeln. Vielleicht entdecken Sie beim Einsatz von Snort am Ende gar die Spuren eines Nikto-Scans.
Fazit
Heutzutage ist man gut beraten, Tools wie Nikto regelmäßig einzusetzen, um den eigenen Webauftritt besser vor Angriffen zu schützen. Nikto ist mächtig und hilft, eklatante Sicherheitslücken aufzuspüren. Durch die gewonnenen "Einsichten" machen Sie Angreifern in Zukunft das Leben schwerer. Es darf jedoch nicht verschwiegen werden, dass gute HTTP-Kenntnisse eine wichtige Voraussetzung für das erfolgreiche Handling sind.Links
- [1] Nikto im Netz: www.cirt.net/code/nikto.shtml
- [2] Homepage von Whisker: www.wiretrip.net/rfp
- [3] Homepage von Ethereal: www.ethereal.com
- [4] Homepage von Snort: www.snort.org
- [5] Die Internet-Protokolle im Detail: www.faqs.org/rfcs/
- [6] W. Richard Stevens: TCP/IP Illustrated, Volume 1. Addison Wesley, 1994




