Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sweyntooth_bluetooth_low_energy_attacks — Sweyntooth Bluetooth Low Energy (BLE) 취약점에 대한 개념 증명(Proof of Concept). | Kitploit
도구/GitHubGitHub/matheus-garbelini/sweyntooth_bluetooth_low_energy_attacks
Bluetooth SecurityPayload GenerationVulnerability AnalysisExploitationFuzzingWireless SecurityPenetration TestingHardware & IoT Security

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
matheus-garbelini/sweyntooth_bluetooth_low_energy_attacks

sweyntooth_bluetooth_low_energy_attacks

Sweyntooth Bluetooth Low Energy (BLE) 취약점에 대한 개념 증명(Proof of Concept).

저장소 보기
3327774년 전Kitploit 검토 완료

SweynTooth - Bluetooth Low Energy를 통한 대혼란 유발

이 저장소는 ASSET Research Group의 연구 성과의 일부입니다. attack_logo

SweynTooth는 6개 주요 시스템온칩(SoC) 벤더의 서로 다른 Bluetooth Low Energy (BLE) 소프트웨어 개발 키트(SDK) 전반에 걸친 18개 취약점 군을 포착합니다. 이 취약점들은 특정 BLE SoC 구현의 결함을 드러내며, 무선 범위 내의 공격자가 상황에 따라 교착 상태, 충돌 및 버퍼 오버플로를 유발하거나 보안을 완전히 우회할 수 있게 합니다. (업데이트) BLE KNOB 변종에 대한 기기 점검 테스트 스크립트도 포함했습니다.

취약점, 사용 가능한 패치 및 영향을 받는 기기에 대한 자세한 정보는 ASSET Research Group SweynTooth 공개 웹사이트에서 확인할 수 있습니다.

Fitbit, August Smart Lock, Eve Energy, CubiTag 및 기타 "스마트" 기기가 영향을 받습니다.

  • Fitbit Inspire 충돌 및 CubiTag 교착 상태 - https://www.youtube.com/watch?v=Iw8sIBLWE_w
  • Eve Energy 및 August Smart Lock 충돌 - https://www.youtube.com/watch?v=rge1XeJVpag&t=6s

이 PoC에 포함된 라이브러리

이 PoC는 Scapy 및 Colorama와 같은 잘 유지 관리되는 라이브러리를 사용합니다. BLE 패킷 생성 및 분석은 맞춤형 Scapy 프로토콜 레이어(bluetooth4LE 및 bluetooth.py)를 통해 수행됩니다. Scapy의 메인 저장소에 우리의 추가 사항을 포함하기 위한 병합이 진행 중입니다.

시작하기 (설치)

먼저 시스템에 Python2.7과 requirements.txt 파일에 나열된 Python 패키지가 있는지 확인해야 합니다. Ubuntu를 사용하는 경우 다음을 실행하세요:

root@kitploit:~
sudo apt-get install python2.7
sudo pip install -r requirements.txt

둘째, SweynTooth는 Nordic nRF52840 동글을 사용하여 취약한 주변 기기와 무선으로 원시 링크 계층 패킷을 송수신합니다. Python 2.7 스크립트를 시작하기 전에 드라이버 펌웨어를 보드에 플래시해야 합니다.

펌웨어 코드의 바이너리는 nRF52_driver_firmware.zip 파일에 있습니다. 보드에 펌웨어를 플래시하려면 nrfutil 도구를 설치해야 합니다. 플래시하기 전에 nRF52840을 DFU 모드로 전환해야 합니다(PC에 연결된 상태에서 작은 리셋 버튼을 눌러 USB 동글을 리셋하세요).

dongle_reset_button

다음 명령을 실행하여 Python 종속성을 설치하고 펌웨어를 플래시할 수 있습니다:

root@kitploit:~
python -m pip install nrfutil pyserial pycryptodome
nrfutil dfu usb-serial -p COM_PORT -pkg nRF52_driver_firmware.zip

스크립트는 Linux 또는 Windows에서 작동합니다. COM_PORT 매개변수를 nRF52840 포트 이름에 맞게 변경하기만 하면 됩니다.

(대체 nRF52 드라이버 플래시 방법)

이전 플래시 방법이 작동하지 않는 경우, hex 펌웨어(nRF52_driver_firmware.hex)를 플래시할 수 있는 편리한 인터페이스를 제공하는 nRF Connect App for Desktop을 사용하여 펌웨어를 플래시할 수도 있습니다.

개념 증명(PoC) 스크립트 실행

요구 사항이 설치된 후 다음 명령을 실행하여 익스플로잇 스크립트를 실행할 수 있습니다:

root@kitploit:~
python Telink_key_size_overflow.py COM7 A4:C1:38:D8:AD:A9

첫 번째 인자는 직렬 포트 이름(일반적으로 Linux에서는 /dev/ttyACM0)이고 두 번째는 취약한 BLE 기기의 주소입니다. BLE 스캐너나 nRF Connect App을 사용하여 해당 주소를 찾을 수 있습니다.

Key Size Overflow 취약점을 예로 들면, 취약한 기기가 충돌 후 멈추는 경우 스크립트는 다음과 같은 출력을 제공합니다:

attack_logo

Linux용 Docker 이미지 (선택 사항)

Python 종속성 설치를 피하기 위해 Docker 이미지로 SweynTooth를 사용하려면, docker.sh 헬퍼 스크립트를 사용하여 Docker 인스턴스를 빌드하고 실행하거나 릴리스 페이지에서 제공되는 사전 빌드된 Docker 이미지(링크)를 다운로드할 수 있습니다. docker.sh의 사용법은 아래에 설명되어 있습니다.

root@kitploit:~
---------  HELP -------------
sudo ./docker run <script_name> <serial_port> <ble_target_address> - Start any sweyntooth script by its name (<script_name>)
sudo ./docker build                                                - Build docker container
sudo ./docker build release                                        - Build docker container and create compressed image for release
sudo ./docker shell                                                - Start docker container shell
---------- EXAMPLE ----------
./docker.sh run extras/Microchip_and_others_non_compliant_connection.py /dev/ttyACM0 f0:f8:f2:da:09:63

사용 가능한 BLE 익스플로잇

각 익스플로잇 스크립트는 하나의 결함에 대응합니다. 다음 요약 표는 취약점과 영향을 받는 SoC에서 해당 취약점을 익스플로잇하기 위한 스크립트 간의 대응 관계를 보여줍니다.

일반적으로 영향을 받는 SoC를 사용하는 제품에는 오류 발생 시 BLE SoC를 자동으로 재시작하는 워치독이 탑재되어 있으므로 모든 제품이 교착 상태에 빠지는 것은 아닙니다. 그럼에도 불구하고 제품이 충돌 후 재시작되면 시각적 또는 청각적 표시를 확인할 수 있을 것입니다.

Zero LTK 설치 (CVE-2019-19194)

SweynTooth에서 가장 치명적인 취약점은 Zero LTK 설치로, 0으로 채워진 LTK로 암호화 설정 절차를 강제하여 공격자가 최신 Bluetooth 페어링 절차(보안 연결)를 완전히 우회할 수 있게 합니다. 이 취약점에 대해 기기를 테스트하려면 기기가 페어링 방법으로 보안 연결을 수락하거나 지원해야 합니다. PoC는 다음과 같이 실행할 수 있습니다:

root@kitploit:~
python Telink_zero_ltk_installation.py COM7 A4:C1:38:D8:AD:A9

COM7 및 A4:C1:38:D8:AD:A9 인자는 설정에 따라 다릅니다. 기기가 취약한 경우 PoC는 다음과 같은 출력을 제공합니다:

zero_ltk

LLID 교착 상태 (CVE-2019-17060/1)

LLID 교착 상태 스크립트는 주변 기기와 재연결할 때마다 버전 요청 또는 페어링 요청을 번갈아 보내면서 LLID 필드를 클리어합니다. 이는 NXP와 Cypress의 취약한 SoC 모두에서 취약점을 트리거하기 위해 수행됩니다. 취약한 KW41Z를 대상으로 스크립트를 실행하면 스택이 교착 상태가 되어 순서가 뒤바뀐 링크 계층 패킷을 전송합니다. 스크립트는 스택이 교착 상태가 되는 시점을 감지하려고 시도하며, 취약한 KW41Z 기기의 경우 다음과 같은 출력을 제공합니다:

zero_ltk

취약한 Cypress 기기는 일반적으로 공격 후 광고를 비활성화합니다. 따라서 충돌이 감지되었음을 나타내는 오류 메시지가 표시될 것입니다. 취약한 Fitbit Inspire를 대상으로 이 스크립트를 테스트하면 스마트워치가 즉시 충돌하거나 일시적으로 광고를 비활성화합니다. 이 기기에 대한 간헐적 공격은 영구적인 BLE 오작동을 유발하므로 사용자가 Fitbit Inspire를 수동으로 재부팅해야 합니다.

KNOB 테스터 (Bluetooth Low Energy 변종)

KNOB는 키 크기가 1바이트로 축소되어 주로 Bluetooth Classic 기기에 영향을 미쳤지만, SMP 페어링 절차 중에 Bluetooth Low Energy 기기의 키 엔트로피를 7바이트(규정을 준수하는 최소 키 크기)로 줄이는 것은 여전히 가능합니다. 이러한 규정 준수 BLE 엔트로피 감소의 영향은 Antonioli, Daniele 등의 "Low Entropy Key Negotiation Attacks on Bluetooth and Bluetooth Low Energy"에서 논의되었습니다.

BLE 주변 기기가 수용 가능한 키 크기를 확인하는 간단한 스크립트를 제공했습니다. BLE KNOB 테스터는 다음과 같이 실행할 수 있습니다:

root@kitploit:~
# Windows
python extras\knob_tester_ble.py COM6 a4:c1:38:d8:ad:a9
# Linux
python extras/knob_tester_ble.py /dev/ttyACM0 a4:c1:38:d8:ad:a9

COM6과 a4:c1:38:d8:ad:a9를 nRF52 동글 직렬 포트(일반적으로 Linux에서는 /dev/ttyACM0) 및 테스트 대상 BLE 기기의 주소에 따라 다른 값으로 변경하는 것을 잊지 마세요. 도구가 16바이트 이외의 다른 키 크기를 수용하는 주변 기기를 감지하면 아래와 같이 해당 키 크기를 나열합니다:

zero_ltk

캡처

captures 폴더에는 각 취약점에 대한 샘플 캡처가 포함되어 있습니다.

또한 일부 SoC에서 감지된 비준수 사례도 추가했습니다.

추가 자료

extras 폴더에는 비준수와 관련된 추가 스크립트와 일부 SweynTooth 변종이 포함되어 있습니다. 자세한 내용은 extras/README.md의 엑스트라 스크립트 표를 확인하세요.

감사의 말

이 연구는 Keysight Technologies의 일부 지원을 받았습니다.

  • Scapy - 패킷 조작 라이브러리.
  • Colorama - Python용 크로스 플랫폼 컬러 터미널 텍스트.
도구 다운로드
취약점CVE(s)벤더스크립트 파일
링크 계층 길이 오버플로CVE-2019-16336
CVE-2019-17519
Cypress
NXP
link_layer_length_overflow.py
LLID 교착 상태CVE-2019-17061
CVE-2019-17060
Cypress
NXP
llid_dealock.py
잘린 L2CAPCVE-2019-17517DialogDA14580_exploit_att_crash.py
은밀한 길이 오버플로CVE-2019-17518DialogDA14680_exploit_silent_overflow.py
공개 키 충돌CVE-2019-17520Texas InstrumentsCC2640R2_public_key_crash.py
잘못된 연결 요청CVE-2019-19193Texas InstrumentsCC_connection_req_crash.py
잘못된 L2CAP 프래그먼트CVE-2019-19195MicrochipMicrochip_invalid_lcap_fragment.py
순차 ATT 교착 상태CVE-2019-19192STMicroelectronicssequential_att_deadlock.py
키 크기 오버플로CVE-2019-19196TelinkTelink_key_size_overflow.py
Zero LTK 설치CVE-2019-19194TelinkTelink_zero_ltk_installation.py
DHCheck 건너뛰기CVE-2020-13593Texas Instrumentsnon_compliance_dhcheck_skip.py
ESP32 HCI 디싱크CVE-2020-13595Espressif Systemsesp32_hci_desync.py
Zephyr 잘못된 시퀀스CVE-2020-10061Zephyr Projectzephyr_invalid_sequence.py
잘못된 채널 맵CVE-2020-10069
CVE-2020-13594
Zephyr Project
Espressif Systems
Microchip
invalid_channel_map.py