Технология HTTP Fingerprint

Discussion in 'Уязвимости' started by gemaglabin, 6 Sep 2006.

  1. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    Технология определения удаленного сервера HTTP Print


    Зачастую для поднятие прав на удаленном сервере нам приходится сканировать на открытые порты с целью получения названий деменов и их версий
    и нахождения актуального эксплоита для нужной версии того или иного сервиса.Как правило,грамотные администраторы подделывают банеры с целью запутать хакера.В таких случаях версию приходится определять либо вслепую подбирая всевозможные poc,либо используя спецификацию демонов определять номер ветки продукта.

    Одной из самых уязвимой частей компьютера,доступного из сети является серверное обеспечение.Именно с него и может начинаться взлом.Очень важно знать полную информацию об этом демоне.Технология,позволяющая определять подлинный банер HTTPD называется HTTP Print.Впервые вплотную к описанию Fingerprint подошел Fydor (небезызвестый автор NMAP),описавший свой труд в статье "Remote OS detection via TCP/IP Stack Fingerprinting".Примерно на том же подходе и основывается HTTP Print - определение сервера с помощью их специфичной обработки протокола HTTP.

    0x00 . Simple Banner Grab

    Самый простой способ - посылка GET запроса на получение содержимого index страницы.

    Apache 1.3.33 :

    PHP:
    HTTP/1.1 200 OKT
    Server
    Apache/1.3.33 (Unix)
    IIS 5.0 :

    PHP:
    HTTP/1.1 200 OK
    Server
    Microsoft-IIS/5.0
    Netscape Enterprise :

    PHP:
    HTTP/1.1 200 OK
    Server
    Netscape-Enterprise/4.1
    Естествено,такой метод надежным не является,так как грамотному системному администратор не составит труда изменить выдаваемый банер.В таких open-source приложениях вроде Apache можно перекомпилировать часть кода с выдаваемой версией демона,IIS или Netscape Enterprise придется патчить любым HEX - редактором.Более ленивые предпочитают использовать дополнительные надстройки на HTTPD ( одной из таких утилит является ServerMask ).

    После патчинга получаем примерно такие заголовки

    Apache 1.3.33 :

    PHP:
    HTTP/1.1 200 OK
    Server
    Some-Fucking-WEBSERVER/1.0
    IIS 5.0 :

    PHP:
    HTTP/1.1 200 OK
    Server
    Yes we are using ServerMask
    Как мы видим,полагаться на такой метод нельзя,можно оставить кучу следов на целевой машине,что заставить администратора проявиться бдительность.

    0x01 . Начинаем думать

    Первое что приходит в голову - искать разницу в ответах хттп-демонов на различные нестандартные запросы.И правда - буквально через 5 минут всевозможных тестов находим лазейку :

    Apache 1.3.33 :

    PHP:
    HTTP/1.1 200 OK
    Date
    Tue05 Sep 2006 19:47:15 GMT
    Server
    Apache/1.3.33 (Unix)
    IIS 5.0 :

    PHP:
    HTTP/1.1 200 OK
    Server
    Microsoft-IIS/5.0
    Content
    -Locationhttp://iis.example.com/Default.htm
    DateTue05 Sep 2006 19:47:15 GMT
    Netscape Enterprise :
    PHP:
    HTTP/1.1 200 OK
    Server
    Netscape-Enterprise/4.1
    Date
    Tue05 Sep 2006 19:47:15 GMT
    Смотрим на порядок строк Date и Server выдаваемого банера.В случае с Apache на первом месте идет дата,далее имя демона,у IIS эти строки разделены параметром Content-Location,у Netscape,в отличие от Апача,сначала идет сервер,потом дата.Вполне неплохой способ,не правда ли?

    0x02. Альтернативные методы

    Роем дальше.В RFC по хттп запросам есть описание метода OPTIONS,который с потрохами выдает всю информацию о сервере.Обычно этот запрос используют прокси для определения доступных запросов с целью информировать юзера об возможной или невозможной передачи данных.

    OPTIONS * HTTP/1.1

    PHP:
    HTTP/1.1 200 OK
    Server
    Apache/1.3.33 (Unix)
    AllowGETHEADOPTIONSTRACE
    OPTIONS / HTTP/1.1

    PHP:
    HTTP/1.1 200 OK
    Server
    Apache/1.3.33 (Unix)
    AllowGETHEADOPTIONSTRACE
    Nginx вообще выдаст себя по ответу

    PHP:
    400 Bad Request
    nginx
    /0.3.33
    Почему мы можем ориентироваться на эти данные?Да потому что мало кто задумывается о смене запросов,отличных от GET \ POST.

    Пробуем явно запрещенные методы вроде DELETE

    Apache :

    PHP:
    HTTP/1.1 405 Method Not Allowed
    Server
    Apache/1.3.23 
    IIS 5.0 :

    PHP:
    HTTP/1.1 403 Forbidden
    Server
    Microsoft-IIS/5.0
    Netscape :

    PHP:
    HTTP/1.1 401 Unauthorized
    Server
    Netscape-Enterprise/4.1
    Апач не поддерживает такой вид запросов,для применения такого рода запросов в нетскейпе и иис надо иметь достаточно прав.

    Экспереметируем с изменением версий протоколов

    GET / HTTP/4.0

    Apache :

    PHP:
    HTTP/1.1 400 Bad Request
    Server
    Apache/1.3.23  
    IIS 5.0 :

    PHP:
    HTTP/1.1 200 OK
    Server
    Microsoft-IIS/5.0
    Netscape :

    PHP:
    GET HTTP/3.0
    HTTP
    /1.1 505 HTTP Version Not Supported
    Разница видна даже невооруженным глазом.

    Пробуем отправить POST нулевой длины.Только Apache вернет 200 Ok,в остальных случаях будет Bad Request.

    PHP:
    POST HTTP/1.0
    Host
    cup.su
    Content
    -length0
    PHP:
    HTTP/1.1 200 OK
    Server
    Apache/1.3.33 (Unix)
    Интересен запрос вида JUNKMETHOD.

    JUNKMETHOD / HTTP/1.0
    Host: cup.su

    Nginx легко можно обнаружить по свойственному ему признаку - выдавать 502 Bad Gateway на все нестандартные запросы.


    0x03 Подводим итоги.[/b]

    Server Field Ordering DELETE Method Improper HTTP version Improper protocol
    Apache/1.3.23 Date, Server 405 400 200
    Microsoft-IIS/5.0 Server, Date 403 200 400
    Netscape Server, Date 401 505 no header

    *При написании статьи я использовал следующие материалы


    Самый подробный материал по HTTP-PRINT,собствено вся статья состоит из перевода этого документа + мои добавки
    http://net-square.com/httprint/httprint_paper.html

    NMAP OS Fingerprint - лучше руководство от Федора по REMOTE OS FINGERPRINT
    http://www.insecure.org/nmap/nmap-fingerprinting-article.html

    После прочтения RFC авторы решили поэксперементировать с различными запросами
    http://www.ietf.org/rfc/rfc2616.txt

    HMAP web server fingerprinter
    http://wwwcsif.cs.ucdavis.edu/~leed/hmap/

    Утилита,поддерживающая все возможные технологии HTTP fingerprint`а

    http://net-square.com/httprint/httprint_win32_301.zip
     
    6 people like this.
  2. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    Вот еще чтото по финерпринт

    http://www.neolive.org/macintosh/utilities/14241prog.html

    И тут немного

    http://www.unix.kg/modules/myarticles/article.php?storyid=43
     
    1 person likes this.
  3. Dracula4ever

    Dracula4ever Elder - Старейшина

    Joined:
    8 May 2006
    Messages:
    418
    Likes Received:
    183
    Reputations:
    26
    ну даеш...
    ты только ришел на античат и уже столько репы набрал!!!

    Вот немного про то как защититься от fingerprinting http://www.samag.ru/art/06.2005/06.2005_13.html
     
  4. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    Еще два линка в тему

    http://www.securitylab.ru/contest/212103.php
    http://www.honeynet.org/papers/finger/
     
  5. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    Сетевая дактилоскопия

    Потрогай нежно


    Есть у меня папочка отдельная в сканерах - "fingerprinting", где собрано несколько популярных программ:

    Linux:
    grabbb-0.0.7.tar.gz
    siphon-0.0.1.tar.gz
    skin-0.1.2.tar.gz
    xprobe2-0.3.tar.gz
    paketto-1.10.tar.gz
    amap-5.2.tar.gz
    hping3.tar.gz
    p0f.tgz

    Windows:
    K9 v1.0
    amap-5.2-win
    p0f-win32
    winfingerprint-0.6.2
     
    1 person likes this.
  6. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    =))) Спасибо за прогу под макось =)))
     
    _________________________