В данной статье мы поговорим о WiFiBeat, агенте, который может отправлять 802.11 фреймы в Elasticsearch, где мы можем их анализировать, строить графики и обнаруживать атаки. Вся эта система строится полностью на бесплатном ПО.

Введение


> Официальный сайт утилиты
> GitHub

WiFiBeat позволяет работать с Wi-Fi адаптером в режиме монитора, создавать из фреймов JSON объекты и отправлять в базу данных аналитического движка Elasticsearch. Кроме этого, WiFiBeat может читать фреймы из PCAP файла.

Анализ собранной информации происходит в другом бесплатном продукте от Elastic — визуализаторе Kibana.



WiFiBeat официально стабильно работает на Ubuntu 16.04, но, конечно, его можно запустить и на других дистрибутивах, однако могут возникнуть трудности с зависимостями и несоответствием версий библиотек, под которые писалась утилита. Мы будем использовать 64-битную Ubuntu 16.04, к которой подключен USB Wi-Fi адаптер TP-LINK TL-WN722N в режиме монитора, для запуска WiFiBeat.
Elasticsearch и Kibana будут развернуты на 64-битной Debian 9.

Установка WiFiBeat


Процесс установки детально описан на GitHub.

Устанавливаем libtins

wget https://github.com/mfontanini/libtins/archive/v3.5.tar.gz
tar -zxf v3.5.tar.gz
cd libtins-3.5
apt-get install libpcap-dev libssl-dev build-essential libboost-all-dev
mkdir build
cd build
cmake ../ -DLIBTINS_ENABLE_CXX11=1
make
make install
ldconfig

Устанавливаем недостающие пакеты в систему

apt-get install libyaml-cpp-dev libpoco-dev rapidjson-dev libtsan0 libboost-all-dev libb64-dev libwireshark-data build-essential libnl-3-dev libnl-genl-3-dev libnl-idiag-3-dev

Устанавливаем Codelite для сборки WiFiBeat

apt-get install codelite codelite-plugins

Запускаем codelite и создаем новый workspace



Тип C++



Запоминаем директорию



Когда workspace создан, переходим в директорию и скачиваем WiFiBeat и библиотеки с GitHub.

cd /root/WiFiBeat
git clone https://github.com/WiFiBeat/WiFiBeat
git clone https://github.com/WiFiBeat/elasticbeat-cpp
git clone https://github.com/WiFiBeat/simplejson-cpp

Добавляем все 3 проекта в наш workspace в codelite





В итоге должно получиться следующее



После двойного клика на wifibeat в списке проектов, он должен выделиться



Правым кликом на wifibeat выбираем Build



Выбираем компилятор, если не был выбран, и снова Build



Если все зависимости установлены в системе и Вы все сделали правильно до этого, то в завершении процесса компиляции Вы увидите сообщение об отсутствии ошибок.

====0 errors, 2 warnings, total time: 00:01:13 seconds====

Настройка


Процесс установки Elasticsearch и Kibana не будет рассматриваться в данной статье. На эту тему есть достаточно материалов в сети. Предполагаем, что они работают на машине 192.168.1.30, а WiFiBeat на машине 192.168.1.31. Elasticsearch слушает HTTP порт 9200 и не требует аутентификации.

К машине 192.168.1.31 я подключил Wi-Fi адаптер и перевел его в режим монитора.
В системе он отображается как mon0.

Из каталога с WiFiBeat копируем конфигурационный файл в etc и редактируем

cp wifibeat.yml /etc
vi /etc/wifibeat.yml

Этот файл хорошо документирован, коротко пройдемся по основным опциям.

Я собираюсь анализировать трафик одной сети, работающей на пятом канале диапазона 2.4 ГГц.
Поэтому в настройках интерфейсов оставляю одну запись. Есть возможность анализировать сразу несколько каналов и для каждого задать время прослушивания.

wifibeat.interfaces.devices:
        mon0: [5]

Удаляю все из раздела Output file
В разделе с PCAP-фильтрами я задам следующее

wifibeat.interfaces.filters:
                mon0: type mgt

Здесь указываются фильтры как в Wireshark, и в данном случае я указываю, что меня интересуют только Management фреймы 802.11. К ним относятся:

  • Authentication frame
  • Deauthentication frame
  • Association request frame
  • Association response frame
  • Reassociation request frame
  • Reassociation response frame
  • Disassociation frame
  • Beacon frame
  • Probe request frame
  • Probe response frame
  • Request to Send (RTS) frame
  • Clear to Send (CTS) frame
  • Acknowledgement (ACK) frame

В разделах Local file и Decryption я все закомментировал, ключи шифрования в моем примере мне не понадобятся и читать из PCAP файла я так же не буду.

В разделе Queues ничего менять не буду и в разделе Outputs задам адрес и порт Elasticsearch.

output.elasticsearch:
  enabled: true
  protocol: "http"
  # Array of hosts to connect to.
  hosts: [ "192.168.1.30:9200" ]

Сохраняем и переходим в каталог с WiFiBeat и подкаталог Debug. Здесь должен находиться скомпилированный исполняемый файл wifibeat.

Запуск


Запускаем Elasticsearch и Kibana на машине 192.168.1.30. Убеждаемся, что прослушивается порт 9200 (Elasticsearch) и Kibana (5601).

На машине 192.168.1.31 проверяем, что мы не допустили ошибок в конфигурации

./wifibeat -d

Вы должны увидеть парсинг конфигурационного файла. Если есть ошибки, то wifibeat сообщит о проблеме. Если все хорошо, то запускаем

./wifibeat -f

Ключ -f позволяет запустить wifibeat не в режиме демона. Для нас это пока удобнее.

Теперь если вы откроете Kibana и проверите индексы, то должны увидеть, что появился новый индекс wifibeat*



Настроим Kibana. Переходим в Management, Index Patterns



Создаем новый шаблон





Отмечаем его как основной



Теперь импортируем Dashboard-ы и Визализации, которые идут в комплекте с WiFiBeat





Выбираем файл kibana.json из каталога WiFiBeat/kibana

Если импорт прошел успешно, можно перейти на вкладку Dashboard и найти там WLAN



Если не использовать фильтры в wifibeat.yml он будет выглядеть так



С фильтрами (в нашем случае), мы не будем видеть данных по Control Frames и Data Frames.

Помимо дэшбордов у нас появились новые визуализации





В заключении


Далее при помощи еще одного компонента пакета Elasitc — X-Pack можно настроить действия при обнаружении, скажем всплеска фреймов деаутентификации, что может означать DoS атаку или попытку заполучить хэндшейк для брутфорса. Таким образом можно собрать систему обнаружения атак на беспроводную сеть.

Комментарии (8)


  1. ogoNEKto
    10.08.2017 21:49
    -3

    А нельзя сделать проще: утановил — запустил — поставил галки и смотришь, что происходит? Какой-то квест в бубном прямо получается…


    1. antgorka Автор
      10.08.2017 22:33
      +3

      Ничего не понял, что установил? Что запустил? Что смотришь? Какие галки? Где?


      1. nidalee
        11.08.2017 10:56
        +4

        Автор сообщения, видимо, жалуется на отсутствие скомпилированных .exe под винду.


  1. 4eshipuzik
    10.08.2017 22:32
    -3

    Опечатка GirHub —> GitHub


    1. antgorka Автор
      10.08.2017 22:45

      Спасибо, исправил


  1. redc0de
    11.08.2017 12:25

    Ещё хорошо бы детектить подбор wps


  1. FlameStorm
    11.08.2017 13:11

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


    1. Dreyk
      12.08.2017 10:30

      для триангуляции придется побегать с ноутом =)