WiFiBeat: Обнаруживаем подозрительный трафик в беспроводной сети

Поговорим о 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
<span class="hljs-built_in">cd</span> libtins-3.5
apt-get install libpcap-dev libssl-dev build-essential libboost-all-dev
mkdir build
<span class="hljs-built_in">cd</span> 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.

<span class="hljs-built_in">cd</span> /root/WiFiBeat
git <span class="hljs-built_in">clone</span> https://github.com/WiFiBeat/WiFiBeat
git <span class="hljs-built_in">clone</span> https://github.com/WiFiBeat/elasticbeat-cpp
git <span class="hljs-built_in">clone</span> 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: <span class="hljs-built_in">type</span> 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: <span class="hljs-literal">true</span>
  protocol: <span class="hljs-string">"http"</span>
  <span class="hljs-comment"># Array of hosts to connect to.</span>
  hosts: [ <span class="hljs-string">"192.168.1.30:9200"</span> ]

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

Поделитесь с друзьями

Добавить комментарий

0 комментариев
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x