와이어샤크를 활용한 네트워크 패킷 분석 - (3) Bluetooth

프로토콜

1. L2CAP

프로토콜 스택에서 중요한 역할을 하는 계층 중 하나로, 주로 상위 계층과 하위 계층 간의 데이터 전송을 관리하는 기능을 수행

 

2. RFCOMM

Bluetooth 프로토콜 스택의 상위 계층에서 사용되는 통신 프로토콜로, 주로 시리얼 포트 에뮬레이션을 제공하는 역할. 이는 Bluetooth를 통해 무선으로 시리얼 포트 통신을 가능하게 하며, 물리적 케이블을 대체하여 다양한 디바이스 간에 데이터를 교환할 수 있게함

 

Bluetooth 로그 취득 방법

1. 개발자 옵션 활성화

  • [설정] - [태블릿 정보] - [소프트웨어 정보] - 빌드 번호 7회 연속 선택

2. 블루투스 HCI 스누프 로그 사용

  • 블루투스 HCI 스누프 로그 사용을 사용 설정으로 변경 후 블루투스를 한번 껐다 켜주는 게 좋습니다.

3. Bluetooth 연결

 

4. 패킷 로그 취득

btsnoop_hci.log 파일 취득
아래 3가지 방법 중 가능한 방법 확인
1) 내장 메모리에서 확인
2) adb devices - adb shell - cd mnt/sdcard
3) adb devices - adb shell - cd data/local/storage/emulated/0


위 방법으로 btsnoop_hci.log 파일 확인이 안된다면 아래의 방법 활용
adb bugreport > bugreport.zip

 

5. 와이어샤크

  • 취득한 btsnoop_hci.log를 와이어샤크에서 확인

분석 내용

L2CAP 프로토콜 데이터 송수신 패킷 내 Frame is out of any 'connection handle' session 오류 확인

분석 예상 원인
암호화 키 동기화 문제
  1. 설명: 두 기기가 Bluetooth 연결을 설정할 때, 암호화된 통신을 위해 서로의 암호화 키를 교환합니다. 만약 두 장치 간의 암호화 키가 일치하지 않거나 동기화되지 않으면, 수신된 패킷을 해독할 수 없습니다.
  2. 연관성: Wireshark는 암호화된 패킷을 해석하지 못하기 때문에, 해당 패킷이 올바른 'connection handle'을 따르지 않는다고 판단하여 오류를 표시할 수 있습니다. 예를 들어, 두 장치가 사용하고 있는 암호화 키가 서로 다를 때, 수신된 패킷은 무효한 것으로 인식됩니다.
잘못된 암호화 상태
  1. 설명: Bluetooth 연결이 수립된 후 암호화 상태가 설정되면, 모든 패킷이 암호화된 상태로 전송됩니다. 그러나 한 장치가 암호화를 적용한 상태에서 패킷을 전송하는 반면, 다른 장치가 암호화를 해제한 상태이거나 암호화 설정이 제대로 되지 않은 경우, 패킷의 유효성을 검사할 때 문제가 발생할 수 있습니다.
  2. 연관성: Wireshark는 두 장치가 암호화 상태를 공유하지 않는 경우 패킷을 잘못된 연결 세션으로 간주할 수 있습니다. 예를 들어, 하나의 장치는 암호화된 패킷을 보내지만, 수신 측에서는 해당 패킷을 해독할 수 없으면 세션 정보가 일치하지 않는 것으로 인식됩니다.
암호화된 패킷의 무결성 검사 실패
  1. 설명: 암호화된 Bluetooth 패킷은 무결성 검사를 위해 MIC(Message Integrity Check) 또는 기타 체크섬을 포함할 수 있습니다. 암호화된 패킷의 무결성 검사가 실패하면, 수신 측에서 이를 올바른 패킷으로 인식하지 못합니다.
  2. 연관성: Wireshark는 이러한 무결성 검사 오류를 인식할 수 없기 때문에, 이를 일반적인 프로토콜 오류로 처리하고 "out of session" 오류로 표시할 수 있습니다.
Wireshark의 패킷 해석 문제
  1. 설명: Wireshark는 기본적으로 암호화된 패킷을 해석하지 못하며, 이를 위해서는 암호화 키 또는 특정 설정이 필요합니다. 따라서, 암호화된 패킷을 캡처할 때 Wireshark는 해당 데이터를 제대로 디코딩하지 못하고 오류로 간주할 수 있습니다.
  2. 연관성: 이로 인해 Wireshark는 이러한 패킷을 잘못된 연결 세션으로 간주하여 "Frame is out of any 'connection handle' session" 오류를 발생시킬 수 있습니다.
해결 방법
암호화 키 확인 및 동기화:
  1. 두 장치 간의 암호화 키가 올바르게 교환되고 동기화되었는지 확인합니다. 페어링 과정을 다시 수행하여 키를 교환하는 것이 좋습니다.
암호화 설정 검토:
  1. 두 장치에서 동일한 암호화 설정이 사용되고 있는지 확인하세요. Bluetooth 보안 설정에서 동일한 암호화 모드가 설정되어 있는지, 암호화가 올바르게 적용되고 있는지 검토합니다.
Wireshark의 암호화 설정:
  1. Wireshark에서 Bluetooth 암호화 키를 수동으로 설정하거나, 특정 프로파일 설정을 사용해 패킷을 디코딩할 수 있도록 합니다. 이를 위해 Wireshark에서 “Edit” -> “Preferences” -> “Protocols” -> “Bluetooth”로 이동하여 암호화 키를 설정할 수 있습니다.
무결성 검사 확인:
  1. 두 장치가 전송하는 패킷의 무결성 검사에 실패하지 않도록, 데이터 전송 과정에서 장애가 없는지 확인합니다. 신호 강도와 주변 간섭이 없도록 환경을 점검합니다.
결론
암호화가 적용된 Bluetooth 패킷이 제대로 해석되지 않을 때, Wireshark에서 "Frame is out of any 'connection handle' session" 오류가 발생할 수 있습니다. 이 오류는 주로 암호화 키 동기화 문제, 암호화 상태 불일치, 패킷 무결성 검사 실패, 또는 Wireshark의 해석 문제와 연관이 있습니다. 암호화된 통신이 제대로 이루어질 수 있도록, 위의 해결 방법을 시도해보세요. 추가적으로 문제가 발생하는 특정 상황이나 패킷에 대한 세부 정보를 제공해 주시면 더 구체적인 조언을 드릴 수 있습니다.