Ergebnis 1 bis 3 von 3

Hybrid-Darstellung

  1. #1
    Stanley Jobson Avatar von Lidloses_Auge
    Registriert seit
    05.01.2007
    Beiträge
    750

    Standard Information Gathering - Fingerprint Methoden

    Der Sicherheitsgrad eines Webservers lässt sich an vielen Faktoren messen, ein wichtiger Faktor sind hierbei die Informationen die preisgegeben werden.
    Es gibt viele Informationen, die einem Angreifer wichtige Details zum aufgesetzten Server geben können, und bei vielerlei Dingen ist es sehr einfach Informationen zu bekommen, auch
    Wenn diese zunächst uninteressant erscheinen.

    Einige Quellen aus denen man Informationen beziehen kann sind folgende:

    1. Server Banner:

    Das Server Banner wird bei jeden HTTP Request mitgeschickt.
    Ein Austausch von Nachrichten besteht aus Request und Answer.
    Im Request fragt der Nutzer eine bestimmte Quelle auf dem Webserver an,
    und versieht diese optional mit einigen Zusatzinformationen wie Cookie, Content-Type o.Ä. Diese stehen im sogenannten Header.
    Diesen gibt es auch bei der vom Webserver gelieferten Antwort, in der zum einen
    Das angefragte Dokument zu finden ist, und einige Informationen, wie je nach Optionen des Webservers mitgeliefert werden.

    Ein Feld im Antwort-Header kann zum Beispiel das „Server“ Feld, oder auch „Server-Banner“ sein. Dieses könnte wie folgt aussehen:

    Server: Apache/2.2.11 (Debian) mod_fastcgi/2.4.6

    An den Inhalt des Headers kann man mit den Firefox Erweiterungen „Live HTTP Headers“ oder „Server Spy“ kommen. Es würde allerdings auch ausreichen manuell ein HTTP Request abzusetzen, etwa mit Telnet. Dort wird auch direkt der Antwort Header ausgegeben.
    Welche Informationen wofür relevant sind werde ich später noch ausführen.

    2. Verhalten des Webservers

    Am Verhalten, wie der Webserver auf Veränderungen reagiert lässt sich auch sinnvolles extrahieren. Es gibt zum Beispiel bestimmte Anzeichen an Darstellung und
    Parsing Routinen an denen man Skriptsprache oder auch Versionen von Datenbanksystemen erkennen lassen.

    3. Automatisiertes Fingerprinting

    Mit dem Netzwerktool „nmap“ lassen sich automatisiert Fingerprinting Routinen ausführen, die detaillierte Informationen herausfinden können, bei denen man von Hand nicht unbedingt weiterkommt.

    Was an also über den Webserver herausfinden möchte liegt am Benutzer selbst, doch gibt es eine Reihe von Standardinformationen, die man sich auf jeden Fall anschauen sollte.

    Code:
    1.    Betriebssystem
    2.    Webserver
    3.    Scriptsprache
    4.    Datenbanksystem
    5.    Services + Ports
    6.    Weitere Websites auf Server
    1. Betriebssystem

    Es gibt einige Hinweise die auf das entsprechende Betriebssystem hindeuten können.
    Als eine der wichtigsten Quellen steht hier der Webserver. Man kann diesen in den meisten Fällen aus dem Server Banner auslesen.
    Steht hier etwa : „Microsoft-IIS/6.0“ kann man sich sicher sein auf ein Windows Betriebssystem gestoßen zu sein. Der Microsoft IIS Server läuft unter keinem anderen System als Windows.
    Findet man allerdings nur ein „Apache“ vor kann man sich nicht 100% sicher sein, da hier nur die Minimal-Angabe eingeschaltet ist.
    Die Webserver bieten 6 Optionen, mit denen sich die Ausgabe im Server Banner beeinflussen lässt. Diese nennen sich Server Tokens.
    Code:
    1.    Prod (“Apache”)
    2.    Major (“Apache/2”)
    3.    Minor (“Apache/2.0”)
    4.    Min (“Apache/2.0.41”)
    5.    OS (“Apache/2.0.41 (Unix)”)
    6.    Full (“Apache/2.0.41 (Unix) mod_fastcgi/2.4.6”)
    Man erkennt in diesen Beispielen die Ausgaben, die entweder nur vom Produkt, bis hin zu Versionsnummern und detaillierten Server Angaben über installierte Modifikationen reichen können. Ist hier „OS“ oder „Full“ eingeschaltet, ist die Suche nach dem Betriebssystem relativ schnell beendet.

    Ein weiterer Weg ist, den Webserver zu Fehlermeldung zu zwingen in denen der Pfad der aktuellen Datei stehen kann. Dies kann durch Sonderzeichen geschehen, die der Webserver nicht verarbeiten kann. Mögliche Ausgaben können folgende sein:

    Code:
    Warning: Header may not contain more than a single header, new line detected. in C:\xampp\htdocs\info.php on line 2
    Code:
    Warning: Header may not contain more than a single header, new line detected. In 
    /var/www/info.php on line 2
    Hier lässt der Pfad auf das Betriebssystem schließen, sofern es sich um den
    absoluten Pfad handelt. Beim ersten ist dies Windows, beim zweiten ein auf Linux
    basierendes Betriebssystem.

    Eine automatisierte Möglichkeit bietet sich auch mit dem bereits angesprochenen
    Tool nmap. Man startet also zunächst einen simplen Portscan mit:
    Nmap –v –A Host
    Findet man Ports vor wie 3389 oder den NetBIOS Port, ist dies mit großer
    Sicherheit ein Windows Rechner, oder man verlässt sich einfach auf
    die OS Fingerprint Option von nmap, die wir mit „-A“ eingeschaltet haben.

    2. Webserver

    Der Webserver lässt sich relativ schnell erschließen, sofern nicht besondere
    Maßnahmen zur Verschleierung getroffen wurden.
    Helfen wird uns wieder der Server Banner in dem bereits oben gezeigt wurde,
    dass in den meisten Fällen der Name des Webservers bereits angezeigt wird,
    selbst bei minimaler Darstellung.
    Z.b. „Apache“
    Sollte man nicht sofort Zugriff zu dem Server Banner haben, kann man auch
    Versuchen den Webserver zu einer Fehlermeldung zu zwingen, etwa in dem man
    Eine Seite aufruft die nicht existiert. In einigen Fällen wird der Webserver dann
    zurückmelden, dass die aufgerufene Seite nicht existiert, und auch gleich den
    Webserver mitsamt Version zurückgibt.
    Eine weitere Methode ist auch hier das Port und Servicescanning wo wir auf die
    Offenen Ports schauen sollten. Auch hier erscheint bei den laufenden Services
    In manchen Fällen der Webserver.

    3. Skriptsprache

    Etwas schwieriger gestaltet sich das Herausfinden der aktuellen Skriptsprache,
    denn nicht überall wo .php oder .html dransteht, muss es auch darin sein.

    Dieses Versteckspiel wird möglich gemacht vom Zuweisen des Typs auf eine
    Frei wählbare Endung, was in der httpd.conf geschieht und wie folgt aussehen
    kann:

    Code:
    AddType application/x-httpd-php .php .php4 .html
    Das .html am Ende macht deutlich, dass in diesem Falle auch Dateien mit der
    Endung html auf PHP Code geparsed werden und folglich auch eine
    index.html?id=1 als Ersatz für index.php?id=1 dienen kann. In den meisten Fällen
    ist aber den Endungen glauben zu schenken.
    Wer ganz sicher gehen will schaut in den altbekannten http Header, aus dem wir
    Auch diesmal nützliche Informationen ziehen können.
    Ausgegeben werden könnte z.B. dies:

    Code:
    X-Powered-By: PHP/5.2.9
    In dem Falle wissen wir sofort, dass es sich um PHP handelt. Dies ist aber nur
    möglich, wenn die Option „expose_php“ auf „on“ gestellt ist.

    Fehlermeldung die für eine Skriptsprache spezifisch sind, können auch ein starkes
    Indiz sein. Eine Blackboxing Methode einen Fehler hervorzurufen, wäre das
    Anhängen von Sonderzeichen wie ' " %00 etc. an einen Parameter.
    Ein möglicher Fehler wäre bei PHP dieser:

    Code:
    Warning: fopen(/test'.txt): failed to open stream: Permission denied in 
    /test.php on line 138
    Über eine Suchmaschine kann man dann anschließend Informationen über die
    auftretenden Fehlern beziehen.

    PHP wandelt Variablennamen die mit einem Leerzeichen beginnen automatisch in
    einen Namen ohne führende Leerzeichen um, also kann man mit folgendem
    simplen Test ebenso auf PHP überprüfen:

    Code:
    index.php?page=10
    Code:
    index.php?+page=10
    Wird in beiden Fällen das gleiche angezeigt, ist dies ein gutes Indiz für ein
    Vorhandensein von PHP. ASP zum Beispiel reagiert in diesem Falle anders, und
    wird ein anderes Dokument als zuvor anzeigen.
    Techniken, die die Dateiendungen verschleiern, wie zum Beispiel Mod Rewrite
    schützen nicht unbedingt vor der Informationsgewinnung. Ein Beispiel hat Player
    in seinem Artikel beschrieben, wie man eine PHP Installation erkennen kann.
    Zu finden ist dieser hier: http://novusec.com/php-easter-egg-sinnvoll-nutzen/

    4. Datenbanksystem

    Die Auswahl an großen Datenbanksystemen ist glücklicherweise nicht allzu groß
    und es gibt einige Möglichkeiten herauszufinden, welches installiert ist.
    Der Trick mit den Sonderzeichen greift in vielen Fällen auch hier sodass man zum
    Beispiel folgende Fehlermeldungen bekommen könnte:

    Code:
    You have an error in your SQL syntax; check the manual that corresponds to 
    your MySQL server version for the right syntax to use near ''3''' at line 1
    Code:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL 
    result resource in /var/www/test.php on line 92
    Code:
    Unclosed quotation mark before the character string
    Während die ersten beiden Meldungen auf MySQL hinweisen, ist die dritte eine
    Meldung des Microsoft SQL Servers. Die Meldungen können außerdem auf eine
    SQL Injection hindeuten. Dies funktioniert nur, solange die Option
    „display_errors“ auf „on“ geschaltet ist.

    Der Portscanner „nmap“ erledigt auch für die Informationsgewinnung über
    Datenbanken gute Dienste. Scannt man einen Webserver und findet den offenen
    Port 3306, dann ist dies ein laufender MySQL Server. MSSQL benutzt wiederum
    Andere Ports und Oracle Datenbanken ebenso andere.

    5. Services + Ports

    Sofern die Website mitsamt ihren Implementierungen abgesichert ist, gibt es über
    Die Seite selbst wenig Möglichkeiten für einen Angreifer Schaden anzurichten.
    Die auf dem Server installierten Services können jedoch auch zur Gefahr werden.
    Der Befehl:

    nmap –v –A Hostadresse

    liefert bei installiertem nmap eine detaillierte Auflistung über offene Ports und
    dessen Services. Die Programme können Schwachstellen enthalten wie Buffer
    Overflows oder Format Strings, die unter Umständen sogar aus der Ferne
    angegriffen werden können, und dem Angreifer die vollständige Kontrolle über
    den Server bieten, solange die Prozesse SUID root sind, also dem root Konto
    gehören.
    In großen Exploitdatenbanken kann man anschließend nachschauen, ob zu einem
    Gefundenen Service ein Exploit existiert.

    6. Weitere Websites auf dem Server

    Wird man auf einer Seite nicht fündig, kann man einen Umweg über die Websites
    gehen, die auf dem gleichen Server wie die Zielseite liegen.
    Das Stichwort ist hierbei „Reverse-IP“ oder „Reverse-DNS“.
    Einige Seiten bieten solch einen Dienst an, und zeigen die Seiten mit gleicher IP
    an. Manche Seiten sind weniger zuverlässig als andere, dies ist von der Domäne
    abhängig die für die Suche zurate gezogen wird.

    Beispiele für Reverse-DNS Dienste sind:

    http://www.myipneighbors.com/
    http://www.domaintools.com/reverse-ip/
    http://www.protect-x.com/reverse/

    Dies stellt nur einen groben Überblick an Informationen dar, die man beziehen kann, doch können diese Informationen essentiell für ein weiteres Vorgehen sein.
    Wer tiefer in die Materie einsteigen möchte sollte sich mit dem Stichwort „Fingerprinting“ umsehen.
    Quelle: http://www.novusec.com

  2. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Rapter (02.02.2010)

  3. #2
    Kevin Lee Poulsen Avatar von VeN0m
    Registriert seit
    30.12.2008
    Beiträge
    1.270

    Standard

    Sehr schön . Danke Dir . Einiges davon wusste ich noch nicht. Z.B. das mit nmap. Werde ich mir vielleicht mal anschauen. Man kann ja nie wissen, welche Informationen man gebrauchen kann. Weiter so .
    Come to the dark side - We have cookies

  4. #3
    Trojaner Avatar von bugyc66
    Registriert seit
    22.11.2008
    Beiträge
    98

    Standard

    Nice wahr sehr lehr reich auch wenn man es teilweise schon angewendet hat
    mein Blog!
    Momentmal da heist es ja Cash_eye! wiso?
    Weil ich Cash_eye und Bugyc66 Bin. Zwei sehlen in meiner Brust

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •