이번 포스팅은 The Car Hacker’s Handbook: A Guide for the Penetration Tester에 대해 리뷰해보겠습니다.
Motivation
이 책을 읽게된 계기는 자동차 보안에 관심을 갖게 되었는데, 자동차 보안에 대한 전반적인 지식이 없어 자동차 보안 지식을 학습하고자 책을 읽게 되었습니다. 또한, LISAthon과 AutoHack을 대비하고자 해당 책을 읽게 되었습니다.
Car Hacker’s Handbook
책 내용이 많고, 책을 리뷰하는 것이라서 각 목차마다 학습한 것을 짧게 정리하겠습니다.
01. 위협 모델의 이해
- 위협 모델링: 다이어그램 작성 → 맵 제작 → 체크리스트 작성
- 위협 식별: 데이터 흐름 파악 → 데이터 처리 프로세스 분석 → 데이터처리 프로세스 세분화
- 위협 등급 체계에는
DREAD와CSVV등이 있음
02. 버스 프로토콜
- CAN 패킷 → 표준형/확장형
- ISO-TP 프로토콜: CAN 패킷 확장
- SAE J1850 프로토콜: CAN보다 오래되고 전송 속도 느리지만, 구현 비용 저렴 → PWM, VPW
- KWP2000 → ISO 9141-2, K-Line
- LIN 프로토콜 → 구현 비용 가장 저렴
- MOST 프로토콜 → 멀티 미디어 장치를 위해 설계
- 플렉스레이(FlexRay): 전송 속도가 10Mbps정도의 고속 버스이고, 구현 비용이 비싸 고급 시스템에 구현
03. SocketCAN을 이용한 차량 통신
can-utils최고..- SocketCAN을 이용해 CAN 장치들의 인터페이스를 하나로 통합하는 방법과 장치에 적절한 비트 레이트를 설정해 버스에 연결하는 방법 다룸
04. 고장 진단과 로깅
- OBD-II 커넥터는 고장과 관련된 정보를 저장하고 MIL(Malfunction Indicator Lamp)를 통해 엔진 경고등을 점등
- 진단 검사 루틴은 차량의 주요 ECU인 PCM(Powertrain Control Module)에 동작
- DTC(고장 진단 코드) → PCM 저장 → 데이터 = 프리즈 프레임(Freeze Frame)
05. CAN 버스 리버스엔지니어링
- CAN 버스 연결하거나
can-utils와 와이어샤크를 이용한 CAN 버스 통신 리버싱 - CAN 버스 퍼징은 문서화되지 않은 진단 기능이나 그 외의 기능을 찾는데 좋은 방법
- 하지만 CAN 버스 퍼징은 유용하지 않음 → 퍼징을 통해 발견할 수 있는 유용한 패킷은 보안 토큰을 통한 인증이 성공한 뒤에 사용할 수 있는 진단 서비스와 같은 특별한 패킷들의 일부이기 때문
06. ECU 해킹
- ECU 해킹: 프론트 도어 공격 / 백도어 공격 / 익스플로잇
- 프론트 도어 공격(Front Door Attacks): OEM의 접근 메커니즘을 사용하는 공격 방식 → Seed-Key 알고리즘 등..
- 백도어 공격(Backdoor Attacks): 전형적인 하드웨어 해킹을 통한 공격 방식 → 회로 기판 분석
- 익스플로잇(Exploits): 의도치 않은 접근 메커니즘을 발견하는 공격 방식
07. ECU 테스트 벤치 구축과 활용
- ECU 테스트 벤치를 구축 = CAN 버스에 대해 배우고 툴을 제작하는 데 가장 효과적인 방법
08. ECU와 기타 임베디드 시스템 공격
- 임베디드 해킹: 부채널 공격, 글리칭
- Fault Injection = Glitching → 클럭 글리칭 / 전력 글리칭 / 물리적 결함 주입
09. 차량 내 인포테인먼트 시스템
- IVI 공격 지점: 보조 입력 잭, 무선 입력, 네트워크 등
- 보조 입력 잭(Auxiliary jack): CD-ROM, DVD, USB, 터치 스크린, 손잡이 버튼, 물리적인 입력 방식 등..
- 하나 또는 그 이상의 무선 입력: 블루투스, 이동통신 연결, 디지털 라디오, GPS, 와이파이, XM 라디오
- 내부 네트워크 컨트롤: 버스 네트워크(CAN, LIN, KWP, K-Line 등), 이더넷, 고속 미디어 버스
10. V2V 통신
- V2V 통신 관련 약어 설명
- 단거리 통신 프로토콜(DSRC) → CAM, DENM, WAVE
- CAM: 주기적인 차량 상태 알리는 메세지
- DENM: 특정 이벤트에 의한 안전 상태 알림 메세지
- WAVE: 차량 환경 무선 접속
11. CAN 결과의 활용
- 익스플로잇(쉘코드)
- 쉘 코드는 최대한 작게 만들어야 함(C → 어셈블리) + NULL 제거
12. SDR을 이용한 무선 시스템 공격
- TMPS: 타이어 안쪽에 장착하여 타이어 관련 동작 상태를 ECU 전달
- 키포브 ↔ 이모빌라이저(차량 도난 방지 시스템)
- 키포브 공격: 재밍, 메모리 추출, 브루트포스, 사전 대입, 리버싱, PKES 시스템 공격
13. 성능 튜닝
- 튜닝 = 안전을 최우선적으로 고려하면서 원하는 목표를 달성할 수 있게 설정해야 함
- 치핑(Chipping): 물리적으로 칩을 제거하고 ECU 외부에서 칩에 리프로그래밍 해서 다시 ECU 설치
- 플래시 튜닝: 물리적 수정을 필요로 하지 않음
Conclusion
이 책은 자동차 보안에 대한 지식은 전반적으로 채울 수 있지만.. 그 깊이가 너무 얕다. 책에서도 언급했듯이 목차를 보고 참고용으로 보자..
References
[1] The Car Hacker’s Handbook: A Guide for the Penetration Tester