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

в 10:37, , рубрики: elasticsearch kibana wifi 802.11, Блог компании PentestIT, информационная безопасность, метки:

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

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

Введение

Официальный сайт утилиты — https://www.wlanpros.com/resources/wifi-beat/
GirHub — https://github.com/WiFiBeat/WiFiBeat

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

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

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

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

Тип C++

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

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

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

Когда 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: Обнаруживаем подозрительный трафик в беспроводной сети - 6

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

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

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

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

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

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

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

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

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

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

====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*

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В заключении

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

Автор: antgorka

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js