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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
btlejack — 블루투스 저에너지 스위스 군용 칼 | Kitploit
도구/GitHubGitHub/virtualabs/btlejack
Bluetooth SecurityExploitationWireless SecurityPenetration Testing
GitHubvirtualabs/btlejack

btlejack

블루투스 저에너지 스위스 군용 칼

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

BtleJack: Bluetooth Low Energy를 위한 새로운 만능 도구 #####################################################

Btlejack은 Bluetooth Low Energy 장치를 스니핑, 재밍, 하이재킹하는 데 필요한 모든 것을 제공합니다. 하나 이상의 BBC Micro:Bit <http://microbit.org/>_ 장치에 전용 펌웨어를 실행하여 작동합니다. 또한 Adafruit의 Bluefruit LE 스니퍼 <https://www.adafruit.com/product/2269>_ 또는 nRF51822 Eval Kit <https://www.waveshare.com/wiki/BLE400>_를 사용할 수도 있습니다. 이 장치들에 대한 지원이 추가되었습니다.

현재 버전(2.0)은 BLE 4.x 및 5.x를 지원합니다. BLE 5.x 지원은 제한적이며, 1Mbps Uncoded PHY만 지원하고 채널 맵 업데이트는 지원하지 않습니다.

요구 사항

UNIX 기반 시스템(예: Raspberry Pi)이 필요합니다. BBC Micro:Bit를 사용하는 경우 1~3개의 Micro:Bit 장치(3개 권장)가 필요하며, 각 장치마다 하나의 USB 포트가 필요합니다. Micro:Bit의 전력 소비는 상당히 낮으므로, 단일 USB 포트와 수동 허브를 사용하여 권장되는 3개의 장치에 전원을 공급할 수 있습니다.

컴퓨터에 3개의 microbit를 동시에 연결하면 Btlejack이 모든 광고 채널에서 스니핑할 수 있으며 연결 요청을 캡처할 확률이 훨씬 높아집니다.

설치 방법

먼저, Pip을 사용하여 btlejack Python3 클라이언트 소프트웨어를 설치하십시오:

::

$ sudo pip3 install btlejack

그런 다음, USB 케이블을 사용하여 Micro:Bit 장치를 컴퓨터에 연결하고, 관련 대용량 저장 장치를 마운트한 후(마운트 지점에 MICROBIT이 포함되어야 함), 다음 명령을 실행하십시오:

::

$ btlejack -i

이 명령은 컴퓨터에 연결된 모든 Micro:Bit 장치를 프로그래밍하여 Btlejack과 함께 사용할 수 있도록 준비합니다. 현재 클라이언트 소프트웨어에 맞는 올바른 펌웨어 버전을 사용하므로 Btlejack을 업데이트할 때마다 이 펌웨어 설치 절차를 수행하는 것이 좋습니다.

Bluefruit LE 스니퍼 또는 nRF51822 Eval Kit를 사용하는 경우, 외부 SWD 프로그래머를 사용하여 이 펌웨어 <https://github.com/virtualabs/btlejack-firmware/raw/master/dist/btlejack-firmware-ble400.hex>_를 장치에 플래시하십시오.

장치를 연결된 상태로 유지하면 모든 준비가 완료됩니다!

참고 이는 POSIX 호환 시스템에서만 작동합니다.

Btlejack 사용 방법

Btlejack 사용은 매우 쉽습니다. Btlejack은 다음을 할 수 있습니다:

  • 다양한 장치 사용
  • 기존 BLE 연결 스니핑
  • 새로운 BLE 연결 스니핑
  • 기존 BLE 연결 재밍
  • 기존 BLE 연결 하이재킹
  • 캡처된 패킷을 다양한 PCAP 형식으로 내보내기

사용할 장치 지정

Btlejack은 일반적으로 연결된 호환 장치(현재는 Micro:Bit만)를 자동 감지하여 사용하려고 하지만, 펌웨어를 해킹하거나 수정하여 다른 nRF51822 기반 보드에서 작동하도록 할 수 있으므로, 이러한 장치와의 호환성을 허용하는 특정 옵션을 제공합니다.

-d 옵션을 사용하면 Btlejack과 함께 사용할 하나 이상의 장치를 지정할 수 있습니다. 이 옵션은 자동 장치 감지를 비활성화하며, 필요한 만큼 많은 장치를 추가해야 합니다:

::

$ btlejack -d /dev/ttyACM0 -d /dev/ttyACM2 -s

기존 연결 스니핑

먼저, btlejack으로 대상 기존 연결을 찾으십시오:

::

$ btlejack -s BtleJack version 1.1

[i] Enumerating existing connections ... [ - 54 dBm] 0xcd91d517 | pkts: 1 [ - 46 dBm] 0xcd91d517 | pkts: 2

첫 번째 값(dBm)은 신호의 세기를 나타내며, 이 값이 클수록 스니핑된 연결의 품질이 좋습니다.

두 번째 값(16진수)은 관련 액세스 주소로, 두 Bluetooth Low Energy 호환 장치 간의 링크를 식별하는 32비트 값입니다.

마지막 값은 이 액세스 주소로 본 패킷 수입니다. 이 값이 높을수록 해당 액세스 주소가 사용 중일 가능성이 높습니다.

그런 다음, -f 옵션을 사용하여 특정 연결을 따라가십시오:

::

$ btlejack -f 0xdda4845e BtleJack version 1.1

[i] Detected sniffers:

Sniffer #0: fw version 1.1

[i] Synchronizing with connection 0xdda4845e ... ✓ CRCInit: 0x2a035e ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 15 [i] Synchronized, packet capture in progress ... LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70 LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70

1개 이상의 microbit를 사용하는 경우, Btlejack은 연결 매개변수 복구 속도를 높이기 위해 일부 스니핑 작업을 병렬화합니다!

새로운 연결 스니핑

btlejack에서 지원하는 -c 옵션을 사용하면 대상 BD 주소를 지정하거나 any를 사용하여 생성된 모든 새 연결을 캡처할 수 있습니다:

::

$ btlejack -c any BtleJack version 1.1

[i] Detected sniffers:

Sniffer #0: version 1.1 Sniffer #1: version 1.1 LL Data: 05 22 df b4 6f 95 c5 55 c0 0a f6 99 23 40 1d 7b 2f 0a 9a f4 93 01 12 00 27 00 00 00 d0 07 ff ff ff ff 1f 0b [i] Got CONNECT_REQ packet from 55:c5:95:6f:b4:df to 40:23:99:f6:0a:c0 |-- Access Address: 0x0a2f7b1d |-- CRC Init value: 0x93f49a |-- Hop interval: 39 |-- Hop increment: 11 |-- Channel Map: 1fffffffff |-- Timeout: 20000 ms

LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 0b 06 0c 08 0f 00 09 41 LL Data: 03 06 0c 07 1d 00 d3 07

또는 대상 BD 주소를 지정할 수도 있습니다:

::

$ btlejack -c 03:e1:f0:00:11:22

연결 재밍

일단 액세스 주소로 식별된 연결이 있으면 -j 옵션을 사용하여 해당 연결을 재밍할 수 있습니다:

::

$ btlejack -f 0x129f3244 -j̀

BLE 연결 하이재킹

Btlejack은 기존 연결을 하이재킹할 수도 있으며, -t 옵션을 사용하여 수행할 수 있습니다. 하이재킹되면 Btlejack이 프롬프트를 제공하여 하이재킹된 장치와 상호 작용할 수 있습니다.

먼저, 기존 연결을 하이재킹하십시오:

::

$ btlejack -f 0x9c68fd30 -t -m 0x1fffffffff BtleJack version 1.1

[i] Using cached parameters (created on 2018-08-11 01:48:24) [i] Detected sniffers:

Sniffer #0: fw version 1.1

[i] Synchronizing with connection 0x9c68fd30 ... ✓ CRCInit: 0x81f733 ✓ Channel map is provided: 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 9 [i] Synchronized, hijacking in progress ... [i] Connection successfully hijacked, it is all yours \o/ btlejack>

그런 다음 다음 명령을 사용하여 장치와 상호 작용하십시오:

  • discover: 서비스 및 특성 열거를 수행하여 서비스와 특성에 대한 모든 정보를 제공합니다.
  • write: 특정 값 핸들에 데이터를 씁니다.
  • read: 특정 값 핸들에서 데이터를 읽습니다.
  • ll: 원시 링크 계층 패킷을 전송합니다 (전문가용).

discover 명령 ^^^^^^^^^^^^^^^^^^

discover 명령은 Bluetooth LE 패킷을 송수신하고 모든 서비스 UUID 및 매개변수, 그리고 특성 UUID 및 매개변수를 검색합니다:

::

btlejack> discover start: 0001 end: 0005 start: 0014 end: 001a start: 0028 end: ffff Discovered services: Service UUID: 1801 Characteristic UUID: 2a05 | handle: 0002 | properties: indicate (20) \ value handle: 0003

Service UUID: 1800 Characteristic UUID: 2a04 | handle: 0019 | properties: read (02) \ value handle: 001a

Characteristic UUID: 2a00 | handle: 0015 | properties: read (02) \ value handle: 0016

Characteristic UUID: 2a01 | handle: 0017 | properties: read (02) \ value handle: 0018

Service UUID: 1824 Characteristic UUID: 2abc | handle: 0029 | properties: write indicate (28) \ value handle: 002a

read 명령 ^^^^^^^^^^^^^^

read 명령은 단일 매개변수, 즉 읽고자 하는 특성에 해당하는 값 핸들을 받습니다:

::

btlejack> read 0x16 read>> 4c 47 20 77 65 62 4f 53 20 54 56

write 명령 ^^^^^^^^^^^^^^^

write 명령은 세 개의 매개변수를 받습니다:

::

btlejack> write

지원되는 데이터 형식:

  • hex: 16진수 데이터 (예: "414261")
  • str: 텍스트 문자열, 큰따옴표로 묶을 수 있음

ll 명령 ^^^^^^^^^^^^

이 마지막 명령은 Bluetooth Low Energy 링크 계층 PDU를 16진수 형태로 전송할 수 있게 하며, 이는 Volume 6, Part B, Chapter 2.4에 명시된 대로입니다.

PCAP 파일 내보내기

Btlejack의 흥미로운 기능 중 하나는 캡처된 데이터를 PCAP 파일로 내보내는 기능입니다.

Btlejack은 다음 DLT 형식을 지원합니다:

  • DLT_BLUETOOTH_LE_LL_WITH_PHDR (same)
  • DLT_NORDIC_BLE (the one used by Nordic' sniffer)
  • DLT_BLUETOOTH_LE_LL (supported on latest versions of Wireshark)

출력 파일은 -o 옵션으로 지정할 수 있으며, 출력 형식은 -x 옵션으로 지정할 수 있습니다. 유효한 형식 값은 ll_phdr, nordic, 또는 pcap(기본값)입니다.

::

$ btlejack -f 0xac56bc12 -x nordic -o capture.nordic.pcap

ll_phdr 내보내기 유형은 암호화된 연결을 스니핑할 때 유용하며, crackle <https://github.com/mikeryan/crackle>_에서도 지원됩니다. 따라서 암호화된 연결을 스니핑하고 해독하려면 이 방법을 사용하는 것이 좋습니다.

또한 -s 옵션을 사용하여 crackle에 특정 해독 전략을 알려야 할 수도 있습니다:

::

$ crackle -i some.pcap -s 1

연결 캐시

Btlejack은 연결 캐시를 사용하여 연결 관련 값을 저장하여 작업 속도를 높입니다. 이 연결 캐시는 특히 액세스 주소가 이전에 보였던 경우 문제를 일으킬 수 있습니다.

이 캐시는 -z 옵션을 사용하여 플러시할 수 있습니다:

::

$ btlejack -z

Wireshark로 실시간 패킷 덤프

Btlejack 2.0은 패킷 실시간 분석을 위해 FIFO 경로(기존 또는 신규)를 지정할 수 있는 새로운 -w 옵션을 도입했습니다:

::

$ btlejack -c any -w /tmp/blepipe

FIFO와 출력 파일을 동시에 사용할 수도 있습니다:

::

$ btlejack -c any -w /tmp/blepipe -o blepackets.pcap

Raspberry Pi에서 btlejack 사용을 위한 힌트

이전에 USB를 통한 가상 이더넷(RNDIS)을 활성화한 경우(예: USB를 통해 Raspberry Pi Zero W를 설정), 이를 다시 비활성화해야 합니다(즉, boot/config.txt에서 dtoverlay=dwc2를 제거하고 boot/cmdline.txt에서 modules-load=dwc2,g_ether를 제거한 다음 sudo reboot를 실행). 그렇지 않으면 스니퍼의 USB 연결에 간섭이 발생할 수 있습니다.

Bluetooth LE 5 및 5.1 지원

이 버전은 Bluetooth Low Energy 버전 5 및 5.1을 지원하며, 특히 버전 5에 도입된 새로운 채널 선택 알고리즘(CSA #2)을 지원합니다. 그러나 사용된 하드웨어가 버전 5부터 추가된 두 가지 새로운 PHY를 지원하지 않으므로, 1Mbps uncoded PHY를 사용하는 연결만 스니핑, 재밍, 그리고 아마도 하이재킹할 수 있을 것입니다.

또한 현재 Btlejack에 포함된 CSA #2 구현은 현재 채널 맵 업데이트를 지원하지 않습니다.

새로운 BLE 5 연결 스니핑

Btlejack은 사용된 채널 선택 알고리즘을 자동으로 감지하므로 걱정할 필요 없이 평소처럼 패킷을 캡처하면 됩니다.

기존 BLE 5 연결 스니핑

기존 BLE 5 연결(1Mbps uncoded PHY, 그리고 이 PHY만 사용)을 스니핑하는 것은 그리 어렵지 않습니다. 먼저, -5 옵션을 사용하여 BLE 5 연결을 대상으로 지정해야 합니다. 기존 연결이 CSA #2 또는 CSA #1을 사용하는지 알 수 있는 방법이 없으므로, 하나가 작동할 때까지 두 기술을 모두 시도해야 합니다.

::

$ btlejack -f 0x11223344 -5

그러면 Btlejack이 사용된 채널 맵과 홉 간격 값을 복구합니다:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160

그런 다음 이 연결의 PRNG 카운터 값을 복구하려고 시도합니다:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160 ✓ CSA2 PRNG counter = 5137 [i] Synchronized, packet capture in progress ...

완료되면 Btlejack이 이 연결과 동기화되어 평소처럼 패킷을 처리합니다.

기존 BLE 5 연결 재밍

여기서 새로운 것은 없으며, -5 옵션을 사용하여 BLE 5 연결을 공격하고 있음을 지정해야 한다는 점입니다.

-m 및 -p 플래그를 각각 사용하여 사용할 채널 맵과 홉 간격 값을 지정하면 이 공격을 최적화할 수 있습니다. 두 값 모두 제공되어야 하며, 그렇지 않으면 작동하지 않습니다.

기존 BLE 5 연결 하이재킹

현재로서는 BLE 5 연결을 하이재킹하는 데 성공하지 못했습니다. 이 공격은 시간에 민감합니다. 제 BLE 5 장치는 대기 시간이 0이므로 지연이 허용되지 않아 이 공격이 실패합니다.

합법적인 BLE 5 장치를 몇 개 손에 넣으면 이 부분을 개선할 예정입니다.

도구 다운로드