본문 바로가기

FORENSIC

keyboard warrior.pcap

keyboardwarrior.pcap
0.02MB

hint: Bluetooth HCI ACL, Value
flag 형식: buckeyectf{...}
I found a PCAP of some Bluetooth packets being sent on this guy's computer.
He's sending some pretty weird stuff, you should take a look.

 

문제 의도는 위와 같다.

Bluetooth HCI ACL 프로토콜에 따라 패킷 구조가 다른데 이를 구글링해 알아내고,

시간 순서대로 패킷을 분석해 패턴을 찾아내자.

Value 변화를 집중적으로 관찰하고, 데이터를 가공하여 1대1로 대응되는 프로토콜이 어떤 문자를 전송하는지 알아내자.

 

우선 프로토콜의 종류는 위의 세 가지로 이루어져 있다.

 

HCI_CMD, HCI_EVT, ATT.

 

https://tta.or.kr/data/androReport/ttaJnal/JTGHBY_2001_s76_105.pdf

Bluetooth : 네이버 블로그 (naver.com)

 

위의 링크를 참고하여 보건대, 

 

호스트 컨트롤러 인터페이스,

HCI는 블루투스 프로토콜 스택에서 가장 기본이 되는 것으로 블루투스 스택의 대부분을 차지 하고 있다.

하드웨어 인터페이스 종류에 따라 UART, USB, PCMCIA로 나누어지며, HCI의 송/수신 부분이 약간씩 달라진다.

호스트와 호스트 컨트롤러 사이에 명령어와 그 수행결과를 전달하고 또한 데이터를 전달한다.

명령어(Command), 이벤트(Event) 그리고 데이터(Data) 송/수신으로 크게 나눌 수 있다.

 

하드웨어적인 인터페이스가 UART 인 경우, 패킷의 포맷

 

HCI를 통해서 아래 4가지 종류의 데이터

패킷 종류
설명
Command packet
호스트에서 블루투스 칩 제어용 명령 전송
ACL data packet
무선으로 전송될 사용자 데이터
Synchronous data packet
무선으로 전송될 오디오 데이터
Event packet
블루투스 칩에서 호스트로 특정 event 발생을 알림

 

시간 순서대로 패킷을 분석해보겠다.

우선 프로토콜의 변화를 보자.

 

1~24: HCI_EVTx24

25: HCI_CMDx1

26~33: HCI_EVTx8

34~39: HCI_CMD, HCI_EVT 번갈아서 x3

40~80: HCI_EVTx41

 

81~93: HCI_CMD, HCI_EVTx1, HCI_CMD, HCI_EVTx2, HCI_CMD, HCI_EVTx3, HCI_CMD, HCI_EVTx2, HCI_CMD

 

94~96: 뭔가 예외적인듯?

97~172: ATTx2, HCI_EVTx1 이 대략 25번 반복

173~375: ATTx203

376~382: HCI_CMD, HCI_EVTx2, HCI_CMD, HCI_EVTx1, HCI_CMD, HCI_EVTx1

 

383~416: HCI_EVTx34

 

위의 패킷들 중에서 Value 값이 존재하는건

100, 103, 106, 109, 112, 114, 116, 119, 122, 125, 128, 131, 138, 143, 146, 149, 152, 156, 159, 162, 165, 171, 174~375 ATT.

 

 

 

display filter로 ATT만 필터링할 수 있다.

 

아마 플래그는 buckeyectf{...} 형식이므로, b로 시작할 것이다.

b와 매치되는 Hex을 찾아내면 수월할 것이다.

뒤가 u라면 더할나위 없이 좋다.

 

Universal Serial Bus HID Usage Tables (usb.org)

 

위 문서 53페이지 Keyboard 부분을 보면,

 

 

 

b는 05.

u는 18.

 

Value가 05인 패킷을 찾아서 필터링해보자.

 

 

188, 191, 255, 296, 326번 패킷이 b이다.

 

바로 뒤의 Value가 18인 것을 찾자.

 

+1번 패킷은 0이기 때문에 무시한다.

위의 Not selected를 이용해 필터링할 수도 있다.

 

 

 

257번 패킷의 Value가 18이다.

 

그 뒤는 6, e, 8, 1c, 8, 6, 17, 9, 20000, 2002f, 20000, 21, 19, 20, 15, 21, a, 20, 20000, 2002d, 5, 12, 20, 20000, 2002d, 20000, 20, 11, d, 27, 1c, 20, 15, 20000, 20030, 20000, 4, 5, 6, 7, 8, 9, a, b, c, d...

 

buckeyectf { 4v3r4g3 _bo3 _ 3nj0y3r }

인 것 같다...

 

 

'FORENSIC' 카테고리의 다른 글

[DFC 2023] 101  (0) 2023.07.16
[DFC 2021] 204 Slack Off  (0) 2023.06.25
Shark's secret.pcapng  (0) 2023.05.20
who_is_it.pcap  (0) 2023.05.20
find_pw.pcapng  (0) 2023.05.20