요약
- openpilot을 지원하는 자동차는 대부분 CAB-bus 를 이용해 통신하는데, 최근 생산되는 자동차는 FlexRay 프로토콜을 사용함.
EPS를 조정하는 FlexRay 버스의 정상적인 비트를 조작하고 이를 panda 인터페이스 통해 전송하여 조향 시스템을 컨트롤 할 수 있음
- 주요 용어 설명:
*openpilot : 오픈소스 운전자 보조 시스템으로, 적응형 크루즈 컨트롤, 자동 차선 중앙 유지 장치, 전방추돌경고, 차선 이탈 경고 등의 기능을 제공함.
*CAN-Bus(Controlled Area Network Bus) : 차량 간 데이터 공유 시 사용되는 커뮤니케이션 프로토콜
*FlexRay : Daimler, BMW, Motorola, Philips가 공동 개발한 프로토콜로 CAN 프로토콜 보다 빠르고, 안정적임.
유럽 자동차 브랜드 Audi, BMW, Mercedes 등이 최근 생산된 자동차에 사용되고 있음
특징 : 기존 CAN과 비교할 때 타이밍(timing)이 매우 엄격함
(전자제어장치 (Engine Control Unit, ECU)가 보내는 모든 메시지의 전송 스케줄이 정해져 있음)
*Panda : OBD-II 포트에 부착하여 차량의 다수 종류의 버스(CAN/LIN 등)에 액세스/ 모니터링 가능
- 테스트 가정 : 조향에 관한 명령을 주입하기 위해서는 차선유지도움장치(Lane Keeping Assist System, LKAS)가 보내는 특정 메시지를 차단하고
임의의 명령어를 삽입할 수 있음.
- 테스트 요건
A. 대상 : 운전자 보조 패키지 탑재 Audi Q8 (*Q8은 FlexRay를 사용하는 Audi, Volkswagen사의 다른 모델과 매우 유사하나,
LKAS 카메라를 관리하는 운전자 보조 전자제어장치가 운전석 밑에 따로 매립되어 있는 차이점이 있음)
*운전자 보조 패키지 : 적응형 크루즈 컨트롤, 차선유지도움장치 포함.
B. PoC :
- 구현 목표 : EPS 모듈 쪽에 FPGA 하드웨어를 설치하고 자체적으로 특정 비트를 조작하여 CAN 메시지를 전달하면,
할당된 FlexyRay 타이밍에 메시지를 전달하여 조작을 수행
① 전자식 파워 조향장치(Electric Power Steering, EPS) 쪽의 FlexRay 버스 앞 단에 프록시 하드웨어를 설치하여 EPS 쪽으로 들어가는
모든 신호를 제어.
② FlexRay 메시지 리버스 엔지니어링을 통해 차선유지도움장치의 조향 명령이 프레임 ID 65에 속한다는 것을 확인
*Panda의 OBD-II 포트를 통해 LKAS CAN 메시지를 읽어 변경해야 하는 특정 비트를 알아내고 Bit를 만들어 보낼 수 있으나,
이를 통해 직관적인 조작은 불가능.
③ 일부 바이트를 조작한 패킷을 EPS로 전송
④ 조향장치 컨트롤 성공
참고자료
출처 : hxxps://medium.com/@comma_ai/hacking-an-audi-performing-a-man-in-the-middle-attack-on-flexray-2710b1d29f3f
'HW | SW Hacking' 카테고리의 다른 글
[2018.11.02] 미 법무부, 중국과 타이완 회사를 미국 반도체 기술 훔친 혐의로 기소 (0) | 2019.03.06 |
---|---|
[2018.10.26] 뉴욕 타임즈 중국/러시아 스파이 트럼프 대통령 개인 아이폰 도청 의혹 보도 (0) | 2019.03.06 |
[2018.10.11] 슈퍼마이크로 블룸버그 추가 보도 (0) | 2019.03.05 |
[2018.10.11]자동차 디지털 해킹 (0) | 2019.03.05 |
[2018.10.10] 블룸버그 슈퍼마이크로 기사 관련 의혹 (0) | 2019.03.05 |