Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3482 / 786 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 14:

Анализаторы сетевых потоков

Password Sniffer. Мы сумели перехватить пароль в сессии telnet, но опция Password Sniffer ищет только попытки входа в систему и пытается перехватывать любые имена пользователя и пароли, которые проходят в открытом виде. В следующем примере пользователь связывается с Originix с помощью telnet как пользователь "bob", а затем становится привилегированным пользователем. BUTTSniffer достаточно умен, чтобы выделить начальный вход в систему со словом "bob", потому что это начало подключения, но он не будет подбирать su привилегированного пользователя. Это означает, что мы все еще должны были бы вести наблюдение с использованием режима Monitor Connections, чтобы подобрать пароль. Многие системы не позволят вам использовать telnet для привилегированного пользователя.

Диалоговый режим довольно легко использовать, но в нем нигде не делается запись каких-либо из полученных данных. Вы узнаете, как это делать, когда мы опишем режим дампа на диск в разделе "Режим Disk Dump" в этой лекции.

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

Эта опция меню позволяет устанавливать фильтры для диалогового режима. Она заставляет BUTTSniffer наблюдать только за определенными видами сетевого трафика, идущего к или от определенных хостов. Важно понять, как эти фильтры работают, потому что мы будем определять их в текстовых файлах, когда перейдем к следующему режиму программы (дамп на диск).

Основная цель опции Configure - включить фильтры. На следующей иллюстрации обратите внимание, что мы сначала задаем исключение всех IP-адресов (*.*.*.*), а затем включаем только 192.168.1.100. Способ работы программы BUTTSniffer таков, что по умолчанию он включает все, что только возможно. Прежде чем вы сможете определить, на каких хостах и портах вы хотите сосредоточиться, нужно исключить те, которые вас не интересуют.

Внутри этой опции имеется еще две возможности. Сначала мы можем выбирать прослушивание только допустимых TCP-подключений. Необычные подключения (подобные тем, которые делают проходы сканеров nmap stealth, когда просматривают сетевые порты) будут игнорироваться. Вторая опция, War Mode (Военный режим), является переключением на применение этого анализатора сетевых потоков в качестве дополнительного модуля ( plug-in ) к хакерскому закулисному пакету Back Orifice. Хотя BUTTSniffer первоначально предназначался для того, чтобы помогать контролировать сетевой трафик на собственном блоке Windows, привлечение режима War Mode позволяет пользователю захватывать некоторые сетевые подключения и сбрасывать их, срывая работу неосведомленных пользователей системы.

Совет. Если вы хотите удостовериться, что никто не разместил на вашей системе BUTTSniffer в диалоговом режиме, используйте некоторые из инструментальных средств, о которых мы говорили в предыдущих лекциях. В местном масштабе утилита netstat (лекции "Системные средства с открытым программным кодом: основы" и "Компоновка и использование набора инструментов для расследования хакерских атак, то есть для "живого ответа" в системе Windows" ) сообщит вам, что порты TCP открыты и прослушиваются на вашем блоке Windows. Если вы видите что-то, чего не можете распознать, свяжитесь с ним с помощью утилиты telnet и посмотрите, что произойдет. В удаленном масштабе сканеры портов типа nmap или SuperScan (лекция "Сканеры портов" ) могут идентифицировать необычные TCP-порты. Так как некоторые из этих инструментальных средств могут фактически захватывать баннеры с портов, то вы получите связку мусора с порта демона программы BUTTSniffer. Вы можете применить telnet непосредственно к этому порту, чтобы подтвердить его присутствие.
Режим дампа на диске

Если вы хотите контролировать некоторые виды деятельности в течение длительного периода времени, намного легче использовать режим дампа на диске. В этом режиме вы теряете многие из свойств "легкого использования" диалогового режима, но получаете возможность записывать эту деятельность в файл в определенных форматах, который позволяет вам запустить анализатор сетевых потоков ( sniffer ), оставить его работающим в течение дня и затем позже анализировать полученный журнал ( logfile ). Хакеры или системные администраторы могли бы даже писать скрипты для создания отчетов на основе выходных файлов анализатора.

Так же как и в диалоговом режиме, командная строка для режима дампа на диске в качестве первого параметра содержит номер устройства вашего интерфейса (полученный при первом выполнением команды buttsniff -l ). Второй параметр - это имя файла, который вы хотите использовать в качестве журнала регистрации. Третья опция - вид файла регистрации, который вы хотите получить. Для этой опции возможны три варианта: raw (r) (необработанный), encapsulation (e) (инкапсулированный) и protocol (p) (протокол). Варианты raw (r) и encapsulation (e) полезны только в том случае, если вы имеете шестнадцатеричный редактор и хорошее знание протокола, который вы прослушиваете, чтобы быть способным перебрать информацию байт за байтом. Большинство из нас выберут опцию протокола, поскольку в ней TCP-пакеты расшифровываются и отображаются в информативном, но простом для чтения файле регистрации.

Ниже приведена часть вывода из файла регистрации, полученного при использовании команды buttsniff -d 1 proto.log p:

Source IP: 192.168.1.101 Target IP: 192.168.1.100
TCP Length: 0 Source Port: 2111 Target Port: 23 Seq: 0919F2F2 Ack: 00000000
Flags: S Window: 65535 TCP ChkSum: 64163 UrgPtr: 0

Source IP: 192.168.1.100 Target IP: 192.168.1.101
TCP Length: 0 Source Port: 23 Target Port: 2111 Seq: 7BFD410D Ack: 0919F2F3
Flags: SA Window: 32120 TCP ChkSum: 49167 UrgPtr: 0

Source IP: 192.168.1.101 Target IP: 192.168.1.100
TCP Length: 0 Source Port: 2111 Target Port: 23 Seq: 0919F2F3 Ack: 7BFD410E
Flags: A Window: 65535 TCP ChkSum: 27212 UrgPtr: 0
Source IP: 192.168.1.101 Target IP: 192.168.1.100
TCP Length: 3 Source Port: 2111 Target Port: 23 Seq: 0919F2F3 Ack: 7BFD410E
Flags: PA Window: 65535 TCP ChkSum: 19269 UrgPtr: 0
 00000000: FF FB 1F                             яы.

Source IP: 192.168.1.100 Target IP: 192.168.1.101
TCP Length: 0 Source Port: 23 Target Port: 2111 Seq: 7BFD410E Ack: 0919F2F6
Flags: A Window: 32120 TCP ChkSum: 60624 UrgPtr: 0

Source IP: 192.168.1.101 Target IP: 192.168.1.100
TCP Length: 18 Source Port: 2111 Target Port: 23 Seq: 0919F2F6 Ack: 7BFD410E
Flags: PA Window: 65535 TCP ChkSum: 10271 UrgPtr: 0
 00000000: FF FB 20 FF FB 18 FF FB 27 FF FD 01 FF FB 03 FF  яы яы.яы"яы.яы.я
 00000010: FD 03                                э

Мы вывели здесь совсем немного информации, так что давайте слегка разберемся с ней.

Ясно, что каждый пакет имеет свою собственную запись в журнале. Из первого пакета мы видим, что с адреса 192.168.1.101 послан пакет на адрес 192.168.1.100 с портом назначения 23 (telnet). Если мы посмотрим на флаги на этом пакете, то увидим, что установлен флаг S (или SYN ). Флаг SYN указывает на инициирование TCP-подключения. Следующая строка показывает ответ с адреса 192.168.100 обратно по адресу 192.168.1.101 к порту назначения (2111, в этом случае) с установленным флагом SA (или SYN/ACK ). Следующая строка показывает пакет с адреса 192.168.1.101 с установленным флагом A (или ACK ). Все это представляет методологию TCP - "трехэтапное квитирование" для установления соединения.

Итак, мы зафиксировали начало telnet подключения между этими двумя хостами. Ни один из первых трех пакетов не имеет никаких данных вне TCP-заголовков, но если мы посмотрим несколько ниже, то увидим шестнадцатеричный и ASCII-дамп некоторого "мусора", извлеченного из поля данных TCP-пакетов. Помните, что прежде чем telnet предоставит вам приглашение на вход в систему, клиент и сервер ведут переговоры относительно некоторых опций telnet (тип терминала, например). Этот "мусор" как раз и содержит такие переговоры. Пропустив их, мы должны найти более ценную информацию. Вот полезный текст:

Source IP: 192.168.1.100 Target IP: 192.168.1.101
TCP Length: 7 Source Port: 23 Target Port: 2111 Seq: 7BFD418A Ack: 0919F33F
Flags: PA Window: 32120 TCP ChkSum: 35305 UrgPtr:   0
  00000000: 6C 6F 67 69 6E 3A 20                    login:

Source IP: 192.168.1.101 Target IP: 192.168.1.100
TCP Length: 0 Source Port: 2111 Target Port: 23 Seq: 0919F33F Ack: 7BFD4191
Flags: A Window: 65404 TCP ChkSum: 27136 UrgPtr:    0
Source IP: 192.168.1.101 Target IP: 192.168.1.100
TCP Length: 1 Source Port: 2111 Target Port: 23 Seq: 0919F33F Ack: 7BFD4191
Flags: PA Window: 65404 TCP ChkSum: 2039 UrgPtr:    0
 00000000: 62                                   b

Source IP: 192.168.1.100 Target IP: 192.168.1.101
TCP Length: 1 Source Port: 23 Target Port: 2111 Seq: 7BFD4191 Ack: 0919F340
Flags: PA Window: 32120 TCP ChkSum: 35322 UrgPtr: 0
 00000000: 62                                   b

Source IP: 192.168.1.101 Target IP: 192.168.1.100
TCP Length: 1 Source Port: 2111 Target Port: 23 Seq: 0919F340 Ack: 7BFD4192
Flags: PA Window: 65403 TCP ChkSum: 64245 UrgPtr:   0
 00000000: 6F                                   o

Source IP: 192.168.1.100 Target IP: 192.168.1.101
TCP Length: 1 Source Port: 23 Target Port: 2111 Seq: 7BFD4192 Ack: 0919F341
Flags: PA Window: 32120 TCP ChkSum: 31992 UrgPtr:   0
 00000000: 6F                                   o

Source IP: 192.168.1.101 Target IP: 192.168.1.100
TCP Length: 1 Source Port: 2111 Target Port: 23 Seq: 0919F341 Ack: 7BFD4193
Flags: PA Window: 65402 TCP ChkSum: 2037 UrgPtr:    0
 00000000: 62                                   b

Source IP: 192.168.1.100 Target IP: 192.168.1.101
TCP Length: 1 Source Port: 23 Target Port: 2111 Seq: 7BFD4193 Ack: 0919F342
Flags: PA Window: 32120 TCP ChkSum: 35318 UrgPtr:   0
 00000000: 62                                   b

Адрес 192.168.1.101 был представлен с приглашением входа в систему. Если мы сосредоточимся на пакетах, прибывающих с адреса отправителя 192.168.1.101 и направленных получателю 192.168.1.100, мы увидим, что пользователь набрал b-o-b. Каждый раз, когда хост с адресом 192.168.1.101 посылает символ, хост с адресом 192.168.1.100 повторяет его в обратном направлении. Сервер telnet "повторяет" то, что мы набрали, когда подтверждает получение наших символов. Другими словами, все, что мы набрали, никогда не должно отображаться у клиента. С протоколом telnet нажатия клавиши немедленно посылаются серверу вместо попадания в буфер клиента.