Прослушивание сети с помощью ASUS SL1200
Прослушивание сети с помощью снифферов (sniffer) стало уже доброй традицией. Наверное, самым распространённым продуктом можно считать сетевой анализатор Ethereal, переименовавшийся в Wireshark. Однако не всегда существует возможность разместить компьютер или ноутбук, с установленным ПО непосредственно в том месте, где требуется произвести анализ трафика. Перехват трафика для его последующего анализа может быть произведён и с помощью встроенного в некоторые маршрутизаторы функционала. Примером такого устройства служит Asus SL1200, о котором и пойдёт речь далее. Получить доступ к прослушивающему механизму можно только из командной строки (telnet или консольный порт). Сразу хотелось бы отметить, что SL1200 – это не полнофункциональный сниффер, но маршрутизатор, то есть перехват пакетов является побочной функцией и не может считать законченным решением. Ловля пакетов с паролями (Telnet, FTP, IRC и прочие) – одна из основных задач, для решения которой может быть использовано данное устройство, так как проскакивание пакета с паролем периодично повторяется, то есть длительный перехват трафика рано или поздно покажет нужный пакет.
Для работы с консольным портом маршрутизатора использовалась программа PuTTy версии 0.6. Всю работу будем производить с компьютера, на котором установлена операционная система Windows Vista, поэтому все использованные команды и программы будут Windows-ориентированными.
Функция перехвата сетевых кадров в Asus SL1200 может быть активирована или деактивирована. Смена режимов производится с помощью команд привилегированного режима deb s и no deb s.
Вывод перехваченных пакетов также производится либо в telnet-сессию, либо в консоль. Для просмотра того, что уже было «наловлено» служит команда привилегированного режима sho p. В приведённом ниже примере выловлен один пакет, отправленный с WAN порта маршрутизатора.
Данные, содержащиеся в пакете, скопируем из окна вывода Putty в текстовый файл one_frame_original.txt. Полученный файл будем обрабатывать с тем, чтобы его можно было «открыть» с помощью Wireshark. Откроем его в Microsoft Word.
Заменим все символы конца абзаца на пробел с тем, чтобы в файле была одна строка, содержащая перехваченные данные, где каждый байт (две шестнадцатеричные цифры) был бы отделён от соседних пар пробелами.
Для дальнейшего преобразования посмотрим, какие ещё требования предъявляет утилита text2pcap.exe, поставляемая вместе с Wireshark, которые описаны в файле text2pcap.html.
Необходимо добавить в каждую строку число, соответствующее смещению в файле. Так как сейчас рассматривается только один кадр, то достаточно добавить в начало файла текстовую последовательность «000000». Преобразованные данные представлены в файле one_frame_edited.txt.
Теперь запустим утилиту text2pcap.exe для преобразования текстового файла в бинарник, понятный Wireshark.
Итак, файл one_frame.bin для разбора Wireshark готов, откроем его.
С одним пакетом разобрались. Но обрабатывать так по одному фрейму очень трудоёмко, поэтому попробуем преобразовать сразу несколько Ethernet кадров. Для начала получим их также из консоли путём чтения log-файла putty_original.log работы PuTTy. Уберём из лога начало и конец файла так, чтобы в нём остались только записи о пакетах (putty_edited_lite.log), добавим первую пустую строку.
Теперь необходимо избавиться от строк, содержащих информацию о пакетах (например, ID = 158, Captured from LAN, Packet size = 242), для чего воспользуемся системной командой «find /V "ID" putty_edited_lite.log > putty_edited.log» из каталога, где расположен файл putty_edited_lite.log. Начало полученного текстового файла представлено ниже.
Удалим запись «---------- PUTTY_EDITED_LITE.LOG» и две пустые строки в начале файла. Полученный файл putty_edited.log откроем в редакторе Microsoft Word. Заменим все удвоенные концы абзацев знаком ручного перевода строки, затем одинарные знаки абзаца удалим, после чего переводы строк заменим знаками абзацев, перед которыми расположены «смещения» (000000), необходимые для утилиты text2pcap.exe. Перед первой строкой смещение вставим вручную.
Получили файл, полностью готовый к преобразованию в формат TCPDUMP. Конвертируем его так, как описывалось выше. Результат работы конвертера text2pcap.exe должен быть похож на вывод, представленный на картинке.
После преобразования должен появиться файл putty_edited.bin, который и требуется открыть в Wireshark.
Единственная проблема, которая возникает при таком анализе, - быстродействие консольного порта. Скорости в 9600 кбит/с явно недостаточно для того, чтобы быстро передать захваченные данные на компьютер. Конечно, эту проблему можно решить с помощью telnet, но опять же встаёт вопрос об эффективности. Попробуем передать эти данные на FTP-сервер, к тому же это позволит запустить скрипт только на SL1200, который будет автоматически сливать данные на FTP. К сожалению, нам так и не удалось получить захваченные кадры иначе, чем командой sho p, поэтому в каталоге /configs на SL1200 был создан файл commands.fox, содержимое которого приведено ниже. Это команды, которые нужно передать программе-консоли для того, чтобы она вывела перехваченные кадры.
Дадим команду ps, из вывода которой видим, что именно является консолью.
Убедимся в этом ещё раз, вызвав соответствующий файл с перечисленными аргументами.
Теперь запустим файл консольного приложения и передадим в него тот набор команд, который уже был заготовлен заранее (commands.fox), а вывод сохраним в файле /configs/packets.fox. Символ «&» в конце строки нужен для того, чтобы запустить приложение в фоновом режиме.
Видим, что файл packets.fox содержит захваченные кадры. Передадим теперь этот файл на FTP-сервер.
Переданный файл можно обрабатывать так, как было описано ранее.
Все перечисленные процедуры обработки можно выполнить и с помощью только скриптов, выполняемых на машине с Windows, но мы решили не перегружать читателя подробностями shell-программирования, а показать на примере общеизвестного текстового редактора.
На время передачи захваченных пакетов через telnet или FTP придётся выключать сниффер, иначе в него попадут и пакеты с пересылаемыми данными. Этого можно избежать, если вручную (скриптом) фильтровать/разбирать файл с захваченными пакетами, но, на наш взгляд, это утомительное занятие. Также после «слива» кадров в файл необходимо почистить буфер сниффера с помощью консольной команды «cle b» привилегированного режима.
В заключение хотелось бы ещё раз отметить, что SL1200 прежде всего SOHO-маршрутизатор, а уже во вторую очередь сниффер.
Автор благодарит Владимира Хомутова за неоценимую помощь в подготовке материала.