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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
blur — BLURtooth: Bluetooth Classic 및 Bluetooth Low Energy에서 교차 전송 키 유도(Cross-Transport Key Derivation) 악용 [CVE-2020-15802] [CVE-2022-20361] | Kitploit
도구/GitHubGitHub/francozappa/blur
Bluetooth SecurityVulnerability AnalysisExploitationWireless SecurityPapers & ResearchLearning & Education
GitHubfrancozappa/blur

blur

BLURtooth: Bluetooth Classic 및 Bluetooth Low Energy에서 교차 전송 키 유도(Cross-Transport Key Derivation) 악용 [CVE-2020-15802] [CVE-2022-20361]

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

README

AsiaCCS'22에서 발표된 BLUR 공격에 관한 저장소입니다. 논문 제목: BLURtooth: Bluetooth Classic 및 Bluetooth Low Energy에서의 크로스-트랜스포트 키 유도(Cross-Transport Key Derivation) 악용.

유용한 링크: pdf, video, slides, website.

BibTex 항목:

root@kitploit:~
@inproceedings{antonioli22blur,
    author={Antonioli, Daniele and Tippenhauer, Nils Ole and Rasmussen, Kasper
    and Payer, Mathias},
    title={{BLURtooth: Exploiting Cross-Transport Key Derivation in
    Bluetooth Classic and Bluetooth Low Energy}},
    booktitle={Proceedings of the  Asia conference on computer and
    communications security (ASIACCS)},
    month={May},
    year={2022}
}

BLUR 공격에는 CVE-2020-15802 및 CVE-2022-20361이 할당되었습니다.

초기화

이 README의 나머지 부분에서는 *Bluetooth Classic (BR/EDR)*을 BT로, Bluetooth Low Energy를 BLE로, Cross-Transport Key Derivation을 CTKD로 표기합니다. 또한 공격 장치와 피해 장치가 BT, BLE 및 CTKD를 지원한다고 가정합니다. 이는 장치들이 Bluetooth 4.2+ 및 BT/BLE 보안 연결(Secure Connections)을 지원한다는 의미입니다.

공격을 수행하는 가장 쉬운 방법은 하나의 장치를 피해자이자 공격 장치로 동시에 사용하는 것입니다. 예를 들어, Linux 노트북을 피해자/공격 장치로 사용하고 다른 장치를 다른 피해자로 사용하는 것을 권장합니다.

우리는 bluez 및 bluez tools를 실행하는 Linux 시스템을 사용합니다. btmgmt 도구에 의존하며, 그 소스 코드를 훑어보면 도움이 될 수 있습니다. 특히 pair 하위 명령어를 사용하는데, 이 명령어는 임의의 입출력 기능을 선언하면서 BT/BLE를 통해 임의의 페어링 요청을 보낼 수 있게 해줍니다.

root@kitploit:~
Usage: pair [-c cap] [-t type] <remote address>

논문에 제시된 정확한 공격 시나리오를 재현하려면 추가 작업을 수행해야 합니다. 구체적으로는 BIAS attack에 제시된 설정을 재현해야 합니다. 설정이 준비되면 개발 보드를 BT/BLE 컨트롤러로, Linux 노트북을 호스트로 사용할 수 있어야 합니다. 또한 호스트의 링크 계층 패킷(예: BT LMP 트래픽)을 스니핑하고 internalblue를 사용하여 개발 보드의 펌웨어를 런타임에 동적으로 패치할 수 있어야 합니다.

BLUR 공격 수행

NoInputNoOutput 기능 하드코딩(MitM 플래그 해제 없이)

이 단계는 선택 사항이며 자체 Linux 커널에 패치를 적용해야 합니다.

btmgmt -c 3을 사용하면 bluez가 자동으로 MitM 보호 플래그를 해제합니다. 예를 들어 AuthReq 바이트를 0x03이 아닌 0x02로 설정합니다. 그러나 BLUR 공격은 이 플래그를 해제할 필요가 없으며, 원격 장치가 입출력 기능을 지원할 때 NoInputNoOutput 기능만 선언하면 됩니다. 이렇게 하면 MitM 플래그를 해제하지 않고도 페어링 절차가 Just Works로 다운그레이드됩니다.

이 설정을 구현하려면 Linux 커널을 약간 수정해야 합니다. 특히 /net/bluetooth/hci_event.c에서 다음을:

root@kitploit:~
cp.authentication = conn->auth_type;

다음으로 변경합니다:

root@kitploit:~
cp.authentication = 0x03;

이렇게 하면 선언하는 입출력 기능과 관계없이 AuthReq 플래그가 0x03으로 하드코딩됩니다.

정상적인 페어링

피해 장치들을 평소처럼 페어링합니다. 예를 들어 스마트폰을 대상으로 하는 경우 노트북(피해자이자 공격 장치 역할을 수행)과 페어링합니다. 페어링 과정에서 사용자 상호 작용(예: 숫자 비교(Numeric Comparison))이 필요할 수 있습니다.

btmgmt 셸 열기

  • 피해자의 블루투스 주소를 기록합니다. REMOTE-BTADD로 표시됩니다.
  • 터미널을 엽니다.
  • hciconfig를 실행하고 자신의 hci 인덱스(예: 0)를 기록합니다.
  • sudo btmgmt -i 0을 실행합니다.
  • [hci0] #이 포함된 파란색 터미널 프롬프트가 표시되어야 합니다.

BLE를 통한 중앙(Central) 사칭 공격, BT 페어링 키 [덮어]쓰기

여기서는 피해 장치가 공개 BLE 주소를 사용한다고 가정합니다. 임의 주소를 사용하는 경우 -t 옵션을 2로 변경하세요.

btmgmt CLI에서 다음을 실행합니다:

root@kitploit:~
pair -t 1 REMOTE-BTADD

연관(association)을 Just Works로 다운그레이드해야 하는 경우 다음을 실행합니다:

root@kitploit:~
pair -c 3 -t 1 REMOTE-BTADD

-c 플래그는 공격자의 입출력 기능을 설정하며, 0x3 값은 NoInputNoOutput에 매핑됩니다. 반면 랩톱/스마트폰의 기본값은 0x1로 Display Yes/No에 매핑됩니다.

BT를 통한 주변(Peripheral) 사칭 공격, BLE 페어링 키 [덮어]쓰기

이 경우 BLE Peripheral을 사칭하더라도 Central로서 BT를 통해 페어링합니다.

btmgmt CLI에서 다음을 실행합니다:

root@kitploit:~
pair -t 0 REMOTE-BTADD

연관을 Just Works로 다운그레이드해야 하는 경우 다음을 실행합니다:

root@kitploit:~
pair -c 3 -t 0 REMOTE-BTADD

의도하지 않은 세션 공격

피해자에게 현재 알려지지 않은(즉, 페어링되지 않은) 장치를 사칭하면서 위에서 설명한 공격을 반복합니다.

Q&A (Bluetooth, CTKD, Linux, bluez, Wireshark)

내 BT/BLE 장치를 검색 가능(discoverable)/연결 가능(connectable)/페어링 가능(pairable) 상태로 설정하려면 어떻게 해야 하나요?

bluetoothctl CLI에서 discoverable을 on 또는 off로 설정하고 pairable을 설정할 수 있습니다. btmgmt CLI에서도 connectable 플래그를 설정할 수 있습니다.

내 장치가 얼마나 오랫동안 discoverable 상태로 유지되는지 어떻게 제어하나요?

bluetoothctl에서 discoverable-timeout을 사용하여 검색 가능 시간 제한을 제어할 수 있습니다. 예를 들어 0으로 설정하면 장치가 항상 검색 가능 상태가 됩니다.

내 BT/BLE 장치가 페어링을 지원하거나 페어링 가능한지 어떻게 확인하나요?

BT의 경우 Central 또는 Peripheral로서 원격 장치와 페어링하는 동안 페어링이 허용되지 않음(오류 코드: 0x18)을 나타내는 다음 LMP 패킷을 수신하게 됩니다: LMP not accepted ext (opcode: 0x02)

BLE의 경우 Central 또는 Peripheral로서 원격 장치와 페어링하는 동안 Pairing Not Supported(이유: 0x05)를 나타내는 다음 SMP 패킷을 수신하게 됩니다: SMP Pairing Failed Command (opcode 0x05).

내 BT/BLE 장치가 Secure Connections를 지원하는지 어떻게 확인하나요?

BT의 경우 원격 장치와 페어링하는 동안 LMP 기능 패키지에서 호스트와 컨트롤러의 Secure Connections 지원 여부를 확인합니다. 예를 들어 다음 Wireshark 표시 필터를 사용합니다: btbrlmp.efeat.scc or btbrlmp.efeat.sch.

BLE의 경우 원격 장치와 페어링하는 동안 SMP 페어링 요청(Pairing Request) 또는 응답(Response)에서 Secure Connection 플래그가 포함된 AuthReq 바이트를 확인합니다. 예를 들어 다음 Wireshark 표시 필터를 사용합니다: btsmp.sc_flag == 1.

내 BT/BLE 장치가 CTKD를 지원하는지 어떻게 확인하나요?

BT의 경우 원격 장치와 페어링하는 동안 BLE SMP 트래픽은 L2CAP을 통해 터널링됩니다. 따라서 btl2cap.payload Wireshark 필터를 사용하면 Central에서 Peripheral로 전송되는 0x01(SMP Pairing Request)로 시작하는 페이로드를 가진 패킷 하나와 반대 방향으로 0x02(SMP Pairing Response)로 시작하는 페이로드를 가진 또 다른 패킷을 볼 수 있습니다. 그런 다음 SMP 키 분배 단계를 인코딩하는 다른 원시 L2CAP 패킷도 볼 수 있습니다.

BLE의 경우 원격 장치와 페어링하는 동안 SMP 페어링 요청 또는 응답에서 Central과 Peripheral 모두 SMP 키 분배 중에 링크 키를 보내고 받을 의향이 있는지 확인합니다. 예를 들어 다음 Wireshark 필터를 사용합니다: btsmp.key_dist_linkkey or btsmp.key_dist_linkkey.

도구 다운로드