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 выведет на экран информацию о найденных сетях. По умолчанию красным цветом выделяются сети с небезопасным шифрованием WEP, зеленым — сети без шифрования, а желтым с шифрованием WPA.

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

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

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

Условно, задачи, решаемые с помощью 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-приемника. И хотя при наличии большого количества информации запеленговать точку вполне реально, программа не ставит себе такую задачу — это дело сторонних продуктов.

В процессе движения логи будут быстро расти, поэтому следует подумать о свободном объеме памяти.
Данные, полученные программой сохраняются в простом понятном формате. Так, например, интересующий нас, географический XML-лог состоит из множества таких элементов:
Все атрибуты интуитивно понятны и разобраться с данными не составит труда любому программисту. Как использовать эти данные — решение разработчика. Можно построить карту Wi-Fi точек доступа в своем районе, можно разработать систему пеленгации. В Google заявили о сборе этих данные для псевдо-GPS навигации, когда в качестве ориентира используются не спутники, а базовые станции. Комбинируя данные из различных логов можно собирать статистику, анализировать, составлять карты и графики — всё ограничивается лишь фантазией. Любой может построить в своем автомобиле часть Google Street View и заняться какой-нибудь полезной исследовательской деятельностью.
У Kismet есть и более серьезная, хоть и менее востребованная функциональность. Не секрет, что многие предприятия используют Wi-Fi для внутренней связи. Информация в таких сетях зачастую не предназначена для широкой общественности. Защита беспроводного эфира — не менее важная мера, чем любая другая, направленная на поддержание уровня внутренней безопасности. Kismet может обнаруживать большой список сетевых атак на канальном и сетевом уровне. Для этого в программе реализован механизм тревожного оповещения, или попросту говоря — алерты.
Правила тревоги для конкретного случая указываются в конфигурационном файле. Рассмотрим работу системы обнаружения вторжений на примере правила APSPOOF. Этот, пожалуй, один из самых простых методов — он позволяет распознать атаку, в ходе которой злоумышленник выступает в роли поддельной точки доступа.
Конфигурация этого правила выглядит так:
Validmacs — допустимые значения MAC адреса для точки доступа с именем «Politia», которую необходимо защитить. Спровоцированную с помощью Karma Tools атаку, Kismet обнаруживает мгновенно о чем и сообщает в окне Alerts и логе.

Точно таким же образом настраиваются и другие правила тревоги. Использовать 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: Перенесено в блог «Информационная безопасность».
Свое начало проект Kismet берет в далеком 2001 году. Изначально выпускаемая под лицензией GNU GPL и регулярно обновляемая на протяжении почти 10 лет, программа сумела обрасти своим сообществом и войти в десятку лучших сетевых анализаторов. Несмотря на то, что Kismet — кросс-платформенная разработка, некоторые функции доступны только в Linux, и разработчик заявляет в этом случае о наиболее полной поддержке, поэтому всё нижесказанное справедливо при запуске собственно под Linux.
Установка.
Прежде чем устанавливать Kismet необходимо убедиться, что Wi-Fi карта поддерживает режим мониторинга RFMON. Этот режим переключает 802.11 адаптер в режим наблюдения, в котором он захватывает все пакеты, проходящие в эфире. Всё зависит от конкретного случая, некоторые устройства поддерживают этот режим без проблем, каким-то сможет помочь только сторонний драйвер, а отдельные экземпляры и вовсе не обладают такой возможностью.
Как всегда пакеты в репозиториях отстают от актуальных разработок, поэтому разумнее скачать последнюю версию исходных кодов и собрать программу. Процедура ничем не отличается от стандартной, никаких специфичных требований к системе не предъявлено, разве что поскольку пользовательский интерфейс построен на основе Curses, могут потребоваться соответствующие биб��иотеки. Забегая вперед стоит отметить, что для Kismet есть отдельный QT графический интерфейс.
Разработчиком предусмотрены разные конфигурации безопасности. Поскольку для некоторых действий (например смена режима работы сетевого адаптера) требуется root-доступ, следует подойти ответственно к настройке безопасности при установке. Программа построена на клиент-серверной архитектуре, поэтому распределять права — дело не хитрое, а в документации подробно описаны нюансы этой процедуры.
Подготовка к работе
Если всё было сделано правильно, программа запустится командой kismet.

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

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

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

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

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

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

Использование программы на практике
Условно, задачи, решаемые с помощью 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-приемника. И хотя при наличии большого количества информации запеленговать точку вполне реально, программа не ставит себе такую задачу — это дело сторонних продуктов.

В процессе движения логи будут быстро расти, поэтому следует подумать о свободном объеме памяти.
Данные, полученные программой сохраняются в простом понятном формате. Так, например, интересующий нас, географический 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 и логе.

Точно таким же образом настраиваются и другие правила тревоги. Использовать 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: Перенесено в блог «Информационная безопасность».