All Projects → seemoo-lab → Internalblue

seemoo-lab / Internalblue

Bluetooth experimentation framework for Broadcom and Cypress chips.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Internalblue

IOsonata
IOsonata multi-platform multi-architecture power & performance optimized software library for fast and easy IoT MCU firmware development. Object Oriented design, no board package to define, just pure plug & play any boards
Stars: ✭ 40 (-89.28%)
Mutual labels:  firmware, bluetooth, ble
ESP32 BLE OTA Arduino
OTA update on ESP32 via BLE
Stars: ✭ 41 (-89.01%)
Mutual labels:  firmware, ble
Ios Pods Dfu Library
OTA DFU Library for Mac and iOS, compatible with nRF5x SoCs
Stars: ✭ 349 (-6.43%)
Mutual labels:  ble, bluetooth
IoT-iBeacon
An Ionic app for indoor localization and navigation using BLE iBeacons.
Stars: ✭ 39 (-89.54%)
Mutual labels:  bluetooth, ble
seeed-ambd-firmware
This RTL8720DN firmware export a RPC server interface through hardware SPI/UART port to MCU.
Stars: ✭ 20 (-94.64%)
Mutual labels:  firmware, bluetooth
android-ble-made-easy
An Android Library for handling Bluetooth Low Energy on Android Easy
Stars: ✭ 34 (-90.88%)
Mutual labels:  bluetooth, ble
IOS-DFU-Library
OTA DFU Library for Mac and iOS, compatible with nRF5x SoCs
Stars: ✭ 400 (+7.24%)
Mutual labels:  bluetooth, ble
bluetooth-gatt-parser
Bluetooth GATT service and characteristic parser
Stars: ✭ 61 (-83.65%)
Mutual labels:  bluetooth, ble
bluenet
Bluenet is the in-house firmware on Crownstone hardware. Functions: switching, dimming, energy monitoring, presence detection, indoor localization, switchcraft.
Stars: ✭ 79 (-78.82%)
Mutual labels:  firmware, bluetooth
Sweetblue
BLE on Android, the easy way. THIS IS NOW DEPRECATED. Please visit website for info on new versions.
Stars: ✭ 339 (-9.12%)
Mutual labels:  ble, bluetooth
Easybluetooth
一款iOS BLE蓝牙调试工具,非常简单容易,也可以作为一个蓝牙库,快速集成和开发。 可以两步搞定蓝牙开发操作。 第一步连接设备,第二步特征读写数据。
Stars: ✭ 282 (-24.4%)
Mutual labels:  ble, bluetooth
bluetooth-manager
Java Bluetooth Manager. A library/framework for managing bluetooth adapters, bluetooth devices, GATT services and characteristics
Stars: ✭ 75 (-79.89%)
Mutual labels:  bluetooth, ble
bluetooth
Android Bluetooth examples
Stars: ✭ 80 (-78.55%)
Mutual labels:  bluetooth, ble
ble-utilities-unreal
This is Unreal Engine plugin that allows to scan for BLE devices with Cycling Power service running, connect to one of them and subscribe for its notifications.
Stars: ✭ 48 (-87.13%)
Mutual labels:  bluetooth, ble
wx-ant-ble
微信、支付宝小程序BLE蓝牙SDK
Stars: ✭ 75 (-79.89%)
Mutual labels:  bluetooth, ble
ruuvitag-demo
Demo of reading Bluetooth Low Energy sensor measurements of RuuviTag environmental sensors and feeding them to MQTT, a database and dashboards
Stars: ✭ 14 (-96.25%)
Mutual labels:  bluetooth, ble
python-sonicare
Python library to communicate with a Phillips Sonicare toothbrush via Bluetooth Low Energy
Stars: ✭ 46 (-87.67%)
Mutual labels:  bluetooth, ble
Rubble
(going to be a) BLE stack for embedded Rust
Stars: ✭ 292 (-21.72%)
Mutual labels:  ble, bluetooth
JDY-08
JDY-08 Bluetooth transparent transmission module, with resource for KiCAD
Stars: ✭ 48 (-87.13%)
Mutual labels:  bluetooth, ble
Ble examples
Additional examples to compliment TI's Bluetooth Low Energy Stack offerings.
Stars: ✭ 289 (-22.52%)
Mutual labels:  ble, bluetooth

InternalBlue

Broadcom chips are used in approximately a billion of devices, such as all iPhones, MacBooks, the Samsung Galaxy S series, the older Google Nexus series, older Thinkpads, Raspberry Pis, various IoT devices, and more. In 2016, Cypress acquired the IoT division of Broadcom. Since then, firmware variants slightly diverged, as Broadcom kept non-IoT customers like Apple and Samsung. However, the firmware interaction and update mechanism stayed the same. We reverse-engineered how the operating systems patch this firmware and interact with it. Based on that we developed a Bluetooth experimentation framework, which is able to patch the firmware. This enables various features that otherwise would only be possible with a full-stack software-defined radio implementation, such as injecting and monitoring packets on the link layer.

InternalBlue has not only been used for our own research at the Secure Mobile Networking Lab (SEEMOO). Also, the KNOB and BIAS attack prototype were implemented using InternalBlue LMP messages and the SweynTooth attacks also experimented with InternalBlue for crafting LCP messages. Note that in contrast to tools like btlejack or Ubertooth, InternalBlue does not aim at performing Machine-in-the-Middle attacks. However, the device running InternalBlue can send arbitrary packets and also inject these into existing connections. During monitoring, all packets that are received by the device running InternalBlue are captured, and there is no packet loss. InternalBlue does not have any issues with analysis of encrypted connections or Classic Bluetooth. If you have specific feature requests for your security research, feel free to open a ticket.

In addition to security research, InternalBlue also opens possibilities for further analysis such as Bluetooth Low Energy performance statistics and improvements. Anything that can be improved within a Bluetooth stack can be directly tested on off-the-shelf devices.

Our recent research features Frankenstein, which emulates the firmware including thread switches and virtual modem input. The emulated firmware can be attached to a Linux host. Thus, the approach is full-stack. We mainly used it for fuzzing and found vulnerabilities that include host responses to be triggered. Frankenstein is in a separate repository, but depends on InternalBlue to take state snapshots etc. on a physical device.

Moreover, we just published Polypyus. It enables binary-only binary diffing, independent from IDA and Ghidra. However, it integrates into that workflow by identifying good starting points for further analysis. We already tried it across various Broadcom Wi-Fi and Bluetooth firmware.

Looking for our random number generator measurements that we did within the analysis of CVE-2020-6616? You can find them here.

Due to Spectra 👻🌈 the write and read RAM commands are disabled after driver initialization. Workarounds for this are described in the according Android and iOS instructions, bypasses for other devices will follow if needed.

Table of Contents

License

Copyright 2018-2021 The InternalBlue Team

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].