这是我们在2019年秋季学期CS 219课程的期末项目。
IoTShark 是一个物联网监控服务,允许用户监控其物联网设备在数据发送/接收方面的趋势。通常,设置一个配置正确的中间人攻击需要相当长的时间,对于在计算机安全甚至计算机科学领域经验不足的人来说,可能看起来难以实现。
IoTShark 旨在为用户提供一个[近乎]完全自动化的解决方案,只需运行一个脚本即可监控其物联网设备。用户只需选择要监控的设备,程序便会处理其余繁重的工作:启动ARP欺骗、设置数据包转发以及中间人数据包嗅探器。它还提供了一个易于理解且交互式的Web界面,用户可以根据端口、类型和时间戳过滤数据包,从而更全面地了解数据传输的数量和时间。
我们还旨在对心跳消息、数据传输和异常等某些类型的数据进行分类,尽管最后一项可能仅能在未加密的树莓派测试中演示,因为缺乏大量数据很难进行异常检测(我们需要许多设备和用户来收集那么多数据)。
🚨🚨🚨 请注意,以下说明仅在 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 文件,格式如下:
{时间戳, 入站字节数, 出站字节数, 源端口, 目的端口, 传输协议, 连接协议, 源IP, 目的IP}
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 流量时说出。注意设备在唤醒词之前是否在传输数据。
这是一个漆黑暴风雨的夜晚。我和朋友们刚从优胜美地国家公园回来,在那里敏捷的棕色狐狸跳过了懒狗。下周是感恩节。2019年的黑色星期五也即将到来。现在是做一些激动人心的事情的好时机,比如在加州大学洛杉矶分校修一门计算机安全课程或编程语言课程。顺便说一下,第一架空客A380巨无霸飞机即将退役。我们喜欢乘坐那架飞机。
唤醒词,感恩节那天洛杉矶的天气怎么样?
无论如何,我们有波音787梦想客机用于跨大陆航班。Ravi的网络和移动系统课程非常棒。我们应该在黑色星期五促销期间升级商用洗衣机。晴朗的天气即将回归,一次约书亚树国家公园之旅在等着我们。好吧,我刚看到一只慢猫撞上了一台新的安卓机器人。还有一些由苹果和亚马逊制造的其他机器人。