반응형
문제 정보
You have just been recruited to our intelligence agency, Blue Teamer! Your task is to analyze our VSOC alert containing an encrypted message.
During a routine inspection of in-vehicle traffic, the agency has intercepted suspicious messages on the CAN bus. The frames include a broadcast labeled BEGIN and a data sequence. At first glance, this appears to be a backdoor, but perhaps it isn’t. The key seems to be weak.
Our sources say it’s a hint to a broadcast message for our comrades. Determine the frequency in MHz and submit it as a flag. This challenge is accessible via the VicOne xNexus tool, with the listed credentials below
This challenge is accessible via the VicOne xNexus tool
Flag Format hint: bh{the_flag}
문제 풀이 요약
- VicOne xNexus 페이지의 OAT Event에서 Suspicious CAN Bus Message Content by payload Fingerprint Model으로 된 데이터 확인
- 데이터 내 CAN_Frame를 추출하고 시간 순으로 정렬하여 확인
- Frame 중 BEGIN과 ENDFLAG 사이에 있는 0x11X 범위의 값을 추출하여 암호문으로 구현
- 문제 힌트의 backdoor 를 이용하여 암호문을 AES ECB 방식 key[backdoorbackdoor]로 복호화
- base64 문자열로 복호화되며 디코딩 시 x.com 도메인의 주소로 이동
- 해당 피드글에서 11616kHz라는 값을 찾아 FLAG bh{16.161MHz} 확인
문제 풀이 상세
1. 문제에서는 차후 힌트를 통해 flag format이 bh{0MHz}라는 점과 AES 암호화 알고리즘을 사용한다라는 정보를 제공받았습니다.
2. CAN 트래픽을 확인하기 위해선 제공된 VicOne의 xNexus 서비스의 OTA Event 기능을 이용합니다.
- OTA Event 내 Suspicious CAN Bus Message Content by payload Fingerprint Model 데이터에는 CAN Frame이 존재하며 해당 데이터 위주로 추출합니다.

3. 문제에서 말하는 Frame은 BEGIN의 식별자가 있다고 했기 때문에 아래에서 보이는 부분이라고 추측하였습니다.
- 424547494e => BEGIN
...
{'id': '9134934', 'eventTime': '1755795611000', 'receivedTime': '1755795615749', 'can_id': '0x200', 'can_frame': '0110'}
{'id': '9134935', 'eventTime': '1755795614000', 'receivedTime': '1755795615749', 'can_id': '0x100', 'can_frame': '424547494e'}
{'id': '9134946', 'eventTime': '1755795618000', 'receivedTime': '1755795622208', 'can_id': '0x110', 'can_frame': '9722a9b59f5e9eca'}
{'id': '9134945', 'eventTime': '1755795621000', 'receivedTime': '1755795622208', 'can_id': '0x111', 'can_frame': '90469c61dab4cb7b'}
{'id': '9134944', 'eventTime': '1755795624000', 'receivedTime': '1755795631665', 'can_id': '0x112', 'can_frame': '568bf34238d88e5c'}
{'id': '9134943', 'eventTime': '1755795629000', 'receivedTime': '1755795631665', 'can_id': '0x113', 'can_frame': '1e8cec17b1b3f31f'}
{'id': '9134936', 'eventTime': '1755795632000', 'receivedTime': '1755795638085', 'can_id': '0x114', 'can_frame': '9a3c0e07738cca40'}
{'id': '9134937', 'eventTime': '1755795635000', 'receivedTime': '1755795638085', 'can_id': '0x115', 'can_frame': 'c2589a060f248ab6'}
{'id': '9134939', 'eventTime': '1755795638000', 'receivedTime': '1755795641537', 'can_id': '0x116', 'can_frame': 'e2bb72592abd6b61'}
{'id': '9134938', 'eventTime': '1755795641000', 'receivedTime': '1755795641537', 'can_id': '0x117', 'can_frame': '3da429614f3507e3'}
{'id': '9134941', 'eventTime': '1755795644000', 'receivedTime': '1755795650934', 'can_id': '0x118', 'can_frame': '634465b4b52b6c63'}
{'id': '9134942', 'eventTime': '1755795649000', 'receivedTime': '1755795650934', 'can_id': '0x119', 'can_frame': 'e41e8b6249a6a769'}
{'id': '9134940', 'eventTime': '1755795652000', 'receivedTime': '1755795660837', 'can_id': '0x1ff', 'can_frame': '454e44464c414731'}
{'id': '9134949', 'eventTime': '1755795652000', 'receivedTime': '1755795660837', 'can_id': '0x1ff', 'can_frame': '454e44464c414731'}
{'id': '9134950', 'eventTime': '1755796391000', 'receivedTime': '1755796397715', 'can_id': '0x619', 'can_frame': '0102'}
...
4. 0x11X 범위의 CAN ID를 가진 Frame들의 데이터를 CAN ID 오름차순으로 정렬하여 데이터를 암호문으로 설정하고 AES ECB 방식으로 복호화를 진행하였습니다.
- Tool로는 CyberChef를 이용하였습니다 :)

5. 복호화된 값은 base64 format이었으며 decode하면 x.com 도메인의 주소가 나옵니다.

6. 해당 피드글은 Moscow calling과 관련된 글로 내용에 11616kHz라는 값이 있었습니다.

7. FLAG값을 포맷에 맞춰 bh{11.616MHz}를 입력하여 챌린지에 성공하였습니다.
반응형
'CTF' 카테고리의 다른 글
| [Global Vehicle Cybersecurity Competition 2025] #3 Firmware Reveal Write-Up (0) | 2025.09.14 |
|---|---|
| [Global Vehicle Cybersecurity Competition 2025] #2 SAE EAS Write-Up (0) | 2025.09.14 |
| [Global Vehicle Cybersecurity Competition 2025] 참여 후기 (0) | 2025.09.14 |
| [Dream Hack] xss-2 풀이 (0) | 2022.09.07 |
| [Dream Hack] xss-1 풀이 (0) | 2022.09.06 |