
IotShark - Мониторинг и анализ IoT-трафика
Это наш финальный проект по курсу CS 219 для четверти осень 2019 года.
IoTShark — это сервис мониторинга IoT-устройств, который позволяет пользователям отслеживать тенденции в передаче/приёме данных их IoT-устройств. Обычно настройка атаки «человек посередине» с правильной конфигурацией может занять довольно много времени и может показаться пугающе невозможной для тех, у кого мало или совсем нет опыта в компьютерной безопасности или даже в компьютерных науках.
IoTShark стремится предоставить [почти] полностью автоматизированное решение для мониторинга IoT-устройств, просто запустив один скрипт. Пользователю нужно только выбрать устройство, которое он хочет отслеживать, а программа берёт на себя всю остальную работу: запускает ARP-спуфинг, настраивает пересылку пакетов и перехватчик пакетов «человек посередине». Также имеется понятный и интерактивный веб-интерфейс, где пользователь может фильтровать пакеты по портам, типам и временным меткам, чтобы получить более широкое представление о том, сколько и когда передаются данные.
Мы также стремимся классифицировать определённые виды данных, такие как heartbeat-сообщения, передачи данных и аномалии, хотя последнее, вероятно, будет продемонстрировано на незашифрованном тесте RPi, поскольку сложно проводить обнаружение аномалий без огромных объёмов данных (а для сбора такого количества данных потребовалось бы много устройств и людей).
🚨🚨🚨 Обратите внимание, что следующие инструкции были проверены только на MacOS. Если вы используете Linux или Windows + WSL, результат может отличаться, и программа может не работать. 🚨🚨🚨
pip3 install -r requirements.txtsudo sysctl net.inet.ip.forwarding=1sudo python3 iotshark.pyСоздайте виртуальное окружение Python и установите пакеты зависимостей.
virtualenv --python=`which python3` venv
source venv/bin/activate
pip install -r requirements.txt
Убедитесь, что на вашем локальном компьютере включена пересылка пакетов. Это необходимо для работы атаки «человек посередине». В macOS это можно сделать с помощью:
sudo sysctl net.inet.ip.forwarding=1
Запустите основную программу iotshark.py. В этом скрипте указаны поддерживаемые опции.
В настоящее время программа выполняет следующие 4 действия:
-s) или в наборе общих домашних подсетей.-f с относительным путём к CSV-файлу).После запуска ARP-спуфинга вы можете изучать трафик с целевого устройства с помощью Wireshark с фильтром отображения, например:
(ip.src==192.168.0.215 or ip.dst==192.168.0.215) and tcp.port != 443
Захваченные данные сохраняются в CSV-файле следующего формата:
{timestamp, incoming_bytes, outgoing_bytes, srcport, dstport, transfer_protocol, connection_protocol, srcip, dstip}
123123213, 0, 240, 36, 80, 65124, HTTP, UDP, 192.168.0.215, 104.24.4.5
123123240, 300, 0, 800, 443, 65125, HTTPS, TCP, 104.24.4.5, 192.168.0.215
Например, вот длинная строка, которую мы можем сказать Alexa Echo Dot/Google Home во время сниффинга их трафика. Обратите внимание, передаёт ли устройство данные до слова пробуждения.
It is a dark and stormy night. My friends and I just came back from the Yosemite National Park, where the quick brown fox jumps over the lazy dog. Next week is Thanksgiving. Black Friday in 2019 is coming as well. It's a good time to do something exciting, such as taking a Computer Security class or a Programming Language class at UCLA. By the way, the first Airbus A380 jumbo jet is retiring. We like flying in that plane.
WAKE_WORD, what is the weather like in Los Angeles on Thanksgiving?
Anyways, we have Boeing 787 Dreamliners for cross-continental flights. The Web and Mobile System class with Ravi is amazing. We should upgrade the commercial laundry machine during the Black Friday sale. The bright and sunny weather is coming back and a trip to Joshua Tree National Park awaits. Well, I just saw a slow cat crashed into a new Android robot. There are some other robots made by Apple and Amazon too.