Pull to refresh

Kismet

Reading time 7 min
Views 81K
Kismet — это многофункциональная бесплатная утилита для работы с беспроводными сетями Wi-Fi. Пользователям она знакома в основном по статьям на тему взлома, где программа используется для обнаружения скрытых сетей или захвата пакетов. Взламывать чужие сети — плохо, а между тем Kismet — это гораздо больше чем отмычка в руках злоумышленника. В арсенале инженера информационной безопасности эта программа становится прекрасным инструментом для наблюдения и анализа эфира 802.11.

Свое начало проект Kismet берет в далеком 2001 году. Изначально выпускаемая под лицензией GNU GPL и регулярно обновляемая на протяжении почти 10 лет, программа сумела обрасти своим сообществом и войти в десятку лучших сетевых анализаторов. Несмотря на то, что Kismet — кросс-платформенная разработка, некоторые функции доступны только в Linux, и разработчик заявляет в этом случае о наиболее полной поддержке, поэтому всё нижесказанное справедливо при запуске собственно под Linux.

Установка.


Прежде чем устанавливать Kismet необходимо убедиться, что Wi-Fi карта поддерживает режим мониторинга RFMON. Этот режим переключает 802.11 адаптер в режим наблюдения, в котором он захватывает все пакеты, проходящие в эфире. Всё зависит от конкретного случая, некоторые устройства поддерживают этот режим без проблем, каким-то сможет помочь только сторонний драйвер, а отдельные экземпляры и вовсе не обладают такой возможностью.

Как всегда пакеты в репозиториях отстают от актуальных разработок, поэтому разумнее скачать последнюю версию исходных кодов и собрать программу. Процедура ничем не отличается от стандартной, никаких специфичных требований к системе не предъявлено, разве что поскольку пользовательский интерфейс построен на основе Curses, могут потребоваться соответствующие библиотеки. Забегая вперед стоит отметить, что для Kismet есть отдельный QT графический интерфейс.

Разработчиком предусмотрены разные конфигурации безопасности. Поскольку для некоторых действий (например смена режима работы сетевого адаптера) требуется root-доступ, следует подойти ответственно к настройке безопасности при установке. Программа построена на клиент-серверной архитектуре, поэтому распределять права — дело не хитрое, а в документации подробно описаны нюансы этой процедуры.

Подготовка к работе


Если всё было сделано правильно, программа запустится командой kismet.

Kismet

Как упоминалось ранее Kismet построена по технологии клиент-сервер, поэтому при запуске клиента будет предложено запустить сервер или указать его адрес. В этой статье предполагается, что программа используется на одной машине, поэтому следует запустить локальный.

Kismet

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

image

Знакомство с Kismet


После соединения с сервером и запуска начнется сканирование. Kismet выведет на экран информацию о найденных сетях. По умолчанию красным цветом выделяются сети с небезопасным шифрованием WEP, зеленым — сети без шифрования, а желтым с шифрованием WPA.

image

Фигуры под списком — визуальное представление пакетов и данных, проходящих в эфире, подобные графики встретятся и в других окнах программы. При выделении какой-либо сети в строке появится дополнительная информация: идентификатор (BSSID), время обнаружения, метод шифрования, количество пакетов и объем данных, переданных после обнаружения. Восклицательный знак, точка или пробел перед названием сети обозначают три уровня активности, колонка T — тип сети (A = Access point), C — тип шифрования (W = WEP, N = none и т.д). Поля данных можно убирать, ровно как и добавлять новые через меню настройки. Справа отображается общая статистика наблюдения, а значение Filtered показывает количество пакетов, попавших под созданные фильтры. В нижней части ведется лог, внимательный читатель мог заметить там ошибку соединения с GPSD сервером. Kismet может работать с GPS-устройством и снабжать захватываемые данные географическими координатами.

При выборе сети откроется окно, отображающее более подробную информацию:

image

Можно добавить еще два графических индикатора: уровень сигнала и количество повторов через меню View. Команда View → Clients отобразит список клиентов, подключенных к выбранной точке доступа:

image

Здесь, помимо основной информации, прибавляется важный параметр: IP-адрес клиента.

Последнее окно Kismet отображает информацию о клиенте:

image

Использование программы на практике


Условно, задачи, решаемые с помощью Kismet можно разделить на две сферы: аналитика и защита. В первом случае накопленные сведения должны обрабатываться сторонними приложениями, а во втором Kismet работает в качестве детектора различного рода сетевых атак. Рассматривать оба профиля лучше на конкретных примерах.

Сбор географической статистики

Совсем недавно отгремел скандал из-за сбора компанией Google информации о Wi-Fi точках доступа и захвата части трафика. Действительно, по словам Рафаэля Лейтерица (Raphael Leiteritz), бренд-менеджера Google, автомобили Street View собирали координаты Wi-Fi точек и базовых станций GSM ради развития сервиса навигации и еще целого списка добрых дел. Работала их система так: автомобиль Google Street View использовал антенну Maxrad BMMG24005 для приема 802.11 эфира и передвигался по маршруту, принимая вокруг себя все данные в диапазоне Wi-Fi. Полученные данные обрабатывались Kismet, которая в связи с GPS-приемником позволяет построить качественную станцию перехвата.

Создать собственную машину Street View, которая будет заниматься т.н. вардрайвингом не так сложно, как кажется на первый взгляд. Из дополнительного оборудования потребуется лишь GPS-приемник для привязки данных к географическому расположению.

Для начала сбора информации устройство GPS должно быть подключено и настроено для работы через демон GPSD. Нужно отметить, что Kismet работает с форматом JSON и поэтому использовать для тестов эмуляторы GPS не получится, разве только входящую в комплект GPSD утилиту gpsfake, которая может проигрывать существующие логи навигаторов. Впрочем, настройка GPS выходит за рамки обсуждения Kismet.

В этот раз сервер необходимо запустить в режиме протоколирования чтобы начать сбор информации. По умолчанию будет доступно 5 видов логов: тревожный протокол, географический XML-лог, текстовой список обнаруженных сетей, сетевой XML-лог и дамп пакетов в формате Pcap. Именно из-за последнего Google подвергся преследованию общественности, так как теоретически в этом файле могли находиться персональные данные, пролетающие в эфире.

Если всё сделано правильно, то теперь в главном окне будут отображаются данные о текущем географическом положении. Вопреки распространенному мнению, Kismet не знает координат Wi-Fi точки, а географические данные — не более чем координаты GPS-приемника. И хотя при наличии большого количества информации запеленговать точку вполне реально, программа не ставит себе такую задачу — это дело сторонних продуктов.

Kismet

В процессе движения логи будут быстро расти, поэтому следует подумать о свободном объеме памяти.

Данные, полученные программой сохраняются в простом понятном формате. Так, например, интересующий нас, географический XML-лог состоит из множества таких элементов:

<gps-point bssid="00:0C:42:2C:DA:C6" source="00:0C:42:2C:DA:C6" time-sec="1280155487" time-usec="724329" lat="47.133453" lon="28.504967" spd="0.000000" heading="0.200000" fix="3" alt="1225.000000" signal_dbm="-61" noise_dbm="0"/>

Все атрибуты интуитивно понятны и разобраться с данными не составит труда любому программисту. Как использовать эти данные — решение разработчика. Можно построить карту Wi-Fi точек доступа в своем районе, можно разработать систему пеленгации. В Google заявили о сборе этих данные для псевдо-GPS навигации, когда в качестве ориентира используются не спутники, а базовые станции. Комбинируя данные из различных логов можно собирать статистику, анализировать, составлять карты и графики — всё ограничивается лишь фантазией. Любой может построить в своем автомобиле часть Google Street View и заняться какой-нибудь полезной исследовательской деятельностью.

Обнаружение вторжений

У Kismet есть и более серьезная, хоть и менее востребованная функциональность. Не секрет, что многие предприятия используют Wi-Fi для внутренней связи. Информация в таких сетях зачастую не предназначена для широкой общественности. Защита беспроводного эфира — не менее важная мера, чем любая другая, направленная на поддержание уровня внутренней безопасности. Kismet может обнаруживать большой список сетевых атак на канальном и сетевом уровне. Для этого в программе реализован механизм тревожного оповещения, или попросту говоря — алерты.

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

Конфигурация этого правила выглядит так:

apsproof=Rule1:ssid="Politia", validmacs="70:3A:02:01:CE:AF"

Validmacs — допустимые значения MAC адреса для точки доступа с именем «Politia», которую необходимо защитить. Спровоцированную с помощью Karma Tools атаку, Kismet обнаруживает мгновенно о чем и сообщает в окне Alerts и логе.

image

Точно таким же образом настраиваются и другие правила тревоги. Использовать Kismet для защиты беспроводных сетей не сложнее чем захватывать пакеты, а в совокупности с другими мерами общий уровень защищенности становится значительно выше.

Из рассказов бывшего работника Службы Информации и Безопасности РМ. В 2005 году некая фирма обратилась в управление с просьбой о помощи. У предприятия на протяжении почти года регулярно случались денежные переводы не в том направлении. Служба внутренней безопасности разводила руками: бухгалтеров проверили от и до, ошибки банка не было, однако откуда-то появлялись платежные поручения, в которых номера счетов были изменены. Всё оказалось более чем тривиально: некие предприимчивые ребята арендовали кабинет этажом ниже, узнали пароль к Wi-Fi сети и иногда изменяли данные в платежках, которые бухгалтера педантично сохраняли в общей папке, а потом за раз печатали на принтере в каком-то важном кабинете. За время работы мошенникам удалось увести довольно крупную сумму денег.

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

Заключение


На самом деле об этой небольшой программе можно говорить и дальше. В статье не затронута тема плагинов, значительно расширяющих ее возможности. Не так давно Kismet перешла на новое ядро, поэтому количество плагинов не велико, но и среди них есть достойный экземпляр — DECT Sniffer, позволяющий использовать Kismet для работы с телефонными сетями, есть плагин и для Bluetooth. Но это — тема для отдельной публикации. А эта статья, надеюсь, справилась со своей задачей — познакомить русскоязычных пользователей с еще одной неплохой сетевой разработкой. Возможно Kismet поможет кому-то в работе как когда-то помогла мне.

При подготовке статьи использовалась документация Kismet, в которой очень подробно рассказывается о работе с программой; интересные письма Google; материалы сайта wve.org, где собраны все виды сетевых атак на беспроводные сети; сайт проекта GPSD (очень хорошая документация по GPS в Linux), личный опыт, рассказы друзей и ветеранов-защитников сетевого фронта.

Последняя версия программы всегда доступна по адресу https://www.kismetwireless.net/download.shtml

UPD: Перенесено в блог «Информационная безопасность».
Tags:
Hubs:
+81
Comments 14
Comments Comments 14

Articles