[========================== Обнаружение и Обход Firewall ===========================]


                                    /T /I
                                   / |/ | .-~/
                               T\ Y  I  |/  /  _
              /T               | \I  |  I  Y.-~/
             I l   /I       T\ |  |  l  |  T  /
          T\ |  \ Y l  /T   | \I  l   \ `  l Y
      __  | \l   \l  \I l __l  l   \   `  _. |
      \ ~-l  `\   `\  \  \\ ~\  \   `. .-~   |
       \   ~-. "-.  `  \  ^._ ^. "-.  /  \   |
     .--~-._  ~-  `  _  ~-_.-"-." ._ /._ ." ./     Written by
      >--.  ~-.   ._  ~>-"    "\\   7   7   ]
     ^.___~"--._    ~-{  .-~ .  `\ Y . /    |
      <__ ~"-.  ~       /_/   \   \I  Y   : |
        ^-.__           ~(_/   \   >._:   | l ______
            ^--.,___.-~"  /_/   !  `-.~"--l_ /     ~"-.
                   (_/ .  ~(   /'     "~"--,Y   -=b-. _)
                    (_/ .  \  :           / l      c"~o \
                     \ /    `.    .     .^   \_.-~"~--.  )
                      (_/ .   `  /     /       !       )/
                       / / _.   '.   .':      /        '
                       ~(_/ .   /    _  `  .-<_
                         /_/ . ' .-~" `.  / \  \          ,z=.
                         ~( /   '  :   | K   "-.~-.______//
                           "-,.    l   I/ \_    __{--->._(==.
                            //(     \  <    ~"~"     //
                           /' /\     \  \     ,v=.  ((
                         .^. / /\     "  }__ //===-  `
                        / / ' '  "-.,__ {---(==-
                      .^ '       :  T  ~"   ll     -D4rk Eagle
                     / .  .  . : | :!        \\
                    (_/  /   | | j-"          ~^
                      ~-<_(_.^-~"


 Содержание :
 1. Вступление
 2. Принцип обнаружения
 3. Принцип обхода
 4. Вывод

 [ 1. Вступление  ]

Многие статьи, описывающие принципы обхождения брандмауэров не описывают главного!
Того как  можно  их  обнаружить...  В  данной   статье  я   постараюсь  восполнить
этот   пробел и рассказать вам  сразу  о  двух принципах :  принципе  обнаружения  и
обхождения фаерволла...
Итак поехали...

 [ 2. Принцип обнаружения  ]

Как и следует  ожидать,  каждый  фаерволл имеет свое  имя, значит  имеет некое "клеймо" в
сети, т.е. некоторые   фаерволлы открывают спец.  порт, по  которому  вы   можете узнать
версию, название и другую интересную  информацию. При  обнаружении  фаерволла  нужно быть
очень внимательным  и не упускать ничего мимо своих глаз. По сути  обнаружение фаерволла
делится на несколько этапов...Это и банальное сканирование, это  отслеживание маршрутов,
считывание сервисных банеров и т.д.Про каждый пункт  обнаружения я постараюсь рассказать
подробнее. Так же хочу сказать, что существует   некоторое количество спец. утилит, которые
очень хорошо помогают при обнаружении  фаерволлов...  Про них я тоже постараюсь подробнее
рассказать.

Итак, пришло время подробнее узнать о принципах обнаружения.


 A. Банальное сканирование

Надеюсь многие из вас сканировали в сети порты какого-либо IP-адреса...У каждого сервиса
есть свой уникальный порт, будь то ftp (21), http (80), ssh (22) и т.д., не обошло внима
нием и фаерволлов, но не всех... Сразу скажу,  что не все фаерволлы слушают порт. Некото
рые маскируются под  демоны вроде порта 23 (на них обычно  висит Cisco Router или ему по
добные). Приведу некоторый список портов, на которых иногда  висят фаерволлы или их мене
джеры по умолчанию :

 приложение:                            порт:

 cisco-manager (mgmt)                   4001 (6001, 2001)
 checkpoint                             DNS (53udp/tcp) RIP (520udp)
 cisco-xremotesrv                       9001
 wingate                                8080, 81
 realsecure                             2998/2997/2999

Это, возможно, самые распространенные фаерволлы на сегодняшний день.
Итак, при подключении на  выше описанные  порты,  возможно,  считать  сервисный банер фаерволла.
Но опять же повторюсь, что не  всегда!  Скажу  еще,  что  грамотно сконфигурированный фаерволл
не даст вам сканировать  порты  в  "массах",  т.е.  вы  не сможете просканировать адрес,  при ска
нировании более одного порта...  Тогда  действительно  задача   атакующего усложняется и  прихо
дится выдумывать некие способы  сканирования ( будь то сканирование  с подменной source адреса ).
Так же хочу сказать,  что  некоторые  фаерволлы    конфигурируются  так,  что  во внутреннюю сеть
доступ запрещен всем, кроме  их же внутренней сети т.е.  вы  не сможете присоединиться к  портам,
которые  фильтруются  фаерволлом,  если  вы  не   принадлежите  к  внутренней  сети хостинга или
локальной сети... Способов обхода таких  защит не  так  уж много.  Скажу  лишь то, что один из
способов сканирования "за фаерволлом"  придумал   небезызвестный  всем  бывший редактор журнала
Phrack - Route. Его утилита  Firewalk  способна  сканировать  порты как бы  за фаерволлом.  Но
при этом так же не нужно полагаться на все  100%, что она правильно   просканирует порты  т.к.
многие фаерволлы конфигурируются так, что  фаерволл   может  определить  TLL  пакета до  его при
бытия (проверки по списку).  Поэтому  пакеты  типа ICMP  оповещающие о истечении TLL будут  отсы
латься в любом случае...

Теперь перейдем к пункту об отслеживании маршрута прохождения пакета по сети...

 B. Tracerouting

Многие надеюсь, сталкивались с программой типа tracert или traceroute, так вот скажу, то что
эти программы способны отследить маршрут прохождения пакета по сети...

В WIN32 системах, утилита tracert.exe, а в Unix Like системах - traceroute.

Давайте рассмотрим пример прохождения пакета, чтобы идентифицировать фаерволл на пути прохо
ждения нашего udp/icmp пакета :

Трассировка маршрута к 168.75.176.102

с максимальным числом прыжков 30:

  1     *     4366 ms     *     Loopback0.GW8.ALA2.nursat.net [195.82.29.53]
  2  3373 ms     *     4287 ms  Ethernet0-0-2.GW1.ALA2.nursat.net [195.82.28.7]
  3     *     4463 ms     *     Serial6-1.GW2.MOW1.nursat.net [195.82.28.198]
  4     *        *        *     Превышен интервал ожидания для запроса.
  5     *        *        *     Превышен интервал ожидания для запроса.
  6     *        *        *     Превышен интервал ожидания для запроса.
  7     *        *        *     Превышен интервал ожидания для запроса.
  8  2274 ms   971 ms   958 ms  so-2-3-1-zar1.skt.cw.net [166.63.220.69]
  9   928 ms   945 ms   958 ms  ge-3-3-0-ycr1.skt.cw.net [166.63.220.129]
 10   954 ms   958 ms     *     so-1-0-0-ycr1.cpi.cw.net [208.173.216.25]
 11   958 ms   958 ms   971 ms  so-2-0-0-ycr2.cpi.cw.net [208.173.216.2]
 12   981 ms   958 ms   958 ms  so-2-0-0-bcr1.amd.cw.net [208.173.211.233]
 13  1059 ms  1050 ms  1049 ms  dcr1.nyk.cw.net [195.2.1.3]
 14  1050 ms  1037 ms  1036 ms  65.59.192.13
 15  1041 ms  1050 ms  1063 ms  ge-0-3-0.bbr2.NewYork1.Level3.net [209.247.9.209]
 16  1050 ms  1036 ms  1076 ms  ge-7-0-0.edge1.NewYork1.Level3.net [64.159.4.150]
 17  1050 ms  1063 ms  1050 ms  xo-level3-oc12.NewYork1.Level3.net [209.244.160.178]
 18  1050 ms  1062 ms  1076 ms  p5-0-0.RAR1.NYC-NY.us.xo.net [65.106.3.37]
 19  1115 ms  1523 ms  1757 ms  p6-0-0.RAR2.Chicago-IL.us.xo.net [65.106.0.29]
 20  1324 ms  1471 ms  1324 ms  p1-0-0.RAR1.Dallas-TX.us.xo.net [65.106.0.34]
 21  1141 ms  1141 ms  1141 ms  p6-0-0.RAR2.LA-CA.us.xo.net [65.106.0.14]
 22  1732 ms  1377 ms  1456 ms  p4-0-0.MAR2.LasVegas-NV.us.xo.net [65.106.5.34]
 23  1155 ms  1141 ms  1128 ms  p15-0.CHR1.LasVegas-NV.us.xo.net [207.88.81.78]
 24  1404 ms  1181 ms     *     66.238.47.34.ptr.us.xo.net [66.238.47.34]
 25  1614 ms  1378 ms  1378 ms  168.75.176.102

Трассировка завершена.

В выше приведенном примере очень ярко отображается структура  прохождения  пакета по сети.
Можно предположить, что фаерволл создает некую цепочку адресов,   по которым проходит наш
пакет... В трассировке по прыжкам 1-3 можно наблюдать,  что  dialup  сервер фильтрует входя
щие пакеты, далее происходит послание пакета по сети по  цепочке  адресов...   В конечном
итоге можно видеть, что наш пакет приходит к месту назначения  -  168.75.176.102... В это
случае могу сказать, что вероятнее всего фаерволл  -  66.238.47.34,  хотя 100 процентных ре
зультатов я не даю, т.к. в этом деле нужно быть крайне внимательным...

 C. Считывание сервисных банеров.

Ну этот способ я думаю крайне прост, хотя на данный  момент  крайне трудно найти такой фаер
волл, который бы выводил о себе информацию, но   опять же "чем черт не шутит"... Считывание
банеров   заключается в том, что при подключении к фаерволлу, вы получаете  некое послание
от удаленного фаерволла... Т.е. при соединении,  например  295  (порт CheckPoint Firewall),
вам выводиться информация о версии фаерволла, тогда вы с уверенностью  можете  идти искать
в bugtraq уязвимость  в этом  фаерволле,  чаще   всего,   когда я сталкивался с фаерволлами
CheckPoint,  мне  выходила    некая   информация,   я   поначалу совсем не понимал что она
обозначает... А заключается она в том, что при подключении  к фаерволлу CheckPoint, он вы
водит некую последовательность цифр, например: 30003, 30002  и  т.д. Как позже я узнал, что
это свойственно фаерволлу CheckPoint...

Ну вот по сути самые распространенные способы  обнаружения вражеского  фаерволла... Теперь
я хочу поведать вам несколько способов обхода обнаруженного фаерволла...
Итак, поехали...

 [ 3. Принцип обхода  ]

Начнем мы с того, что каждый фаерволл настроен на  то, чтобы фильтровать пакеты, которые  вы
посылаете, когда соединяетесь с каким-либо портом  удаленной машины. А  это происходит на  ос
новании составленных правил фаерволла. Т.е. при  подключении фаерволл считывает пакет и   ана
лизирует все данные... Т.е. если ваш адрес не стоит  в базе фаерволла, фаерволл не пропустит
вас во внутреннюю сеть... На ум приходит множество способов обхода  фаерволла. Первый, пожа
луй самый легкий способ обхода, это сканирование подсети фаерволла на нахождение уязвимых  ма
шин и последующим взломом их... Так же скажу, что не всегда этот способ прокатывает, т.к. хо
роший администратор скорее всего не будет ставить разрешение входа на всю подсеть, он скорее
поставит разрешение на избранные сетевые машины...

Существует еще один очень  интересный способ :   Тунелирование ICMP/UDP пакетами... Оно заключа
ются в том, что у некоторых фаерволлов нет правила на блокирование ICMP ECHO,  ICMP ECHO REPLY,
UDP. Все это способствует хорошей атаки... Сказу скажу, что этот способ проходит, если вы нахо
дитесь в подсети фаерволла.  Для его осуществления вам понадобятся две программы - loki, lokid
(демон). Для того чтобы осуществить атаку, вам следует установить демон за фаерволлом и после
дующей эксплуатацией с помощью утилиты loki...

 [ 4. Вывод  ]

Вывод можно сделать один - нет ничего совершенного! В каждом устройстве, программе и
т.д. всегда найдутся способы, чтобы всячески её сломать, обойти и т.д. Конечно в данной статье
не представлены все способы обхода фаерволлов... Способов  очень много... По мере того, как ста
нут появляться новые устройства, будут появляться новые способы...
На последок хочу дать вам некоторый список программ, которые помогут вам в вашей повседневной жизни :)

1. hping - кстати, на securitylab.ru недавно вышла новая версия этой замечательно программы... Советую
вам всем её быстро скачать.

2. Firewalk - творение одного из редакторов Phrack "Route". Тоже очень пригодится. Советую скачать.

3. Datapipe - тут думаю, комментарии излишни...

P.S. Читайте Bugtraq и следите за новостями из мира IT  :-)
P.P.S. Ваши комментарии по поводу статьи буду рад почитать. Писать на darkeagle@list.ru

(C) Copyright by D4rk Eagle