본문 바로가기

보안

[자동차해킹] 1. UNDERSTANDING THREAT MODELS

Finding Attack Surfaces

데이터가 차량에 들어올 수 있는 모든 방법, 즉 차량이 외부 세계와 통신하는 모든 방법을 알아야 한다.

 

> 차량 외부 조사 시 확인할 것

- 신호가 어떻게 수신되나? 전파? Key fobs? 거리 센서?

- 물리적 키패드 접근이 있나?

- 터치나 모션 센서가 있나?

- 전기차면, 어떻게 충전되나?

 

> 차량 내부 조사 시 확인할 것

- 오디오 입력 옵션은 무엇이 있나? CD? USB? Bluetooth?

- 진단 포트가 있나?

- 대시보드의 기능은 무엇인가? GPS? Bluetooth? Internet?

 

이렇게 다양한 방법으로 들어오는 데이터가 잘못되었거나 악의적이라면? -> threat modeling 필요

 

Threat Modeling

- 위협 모델링을 할 때는 목표의 아키텍처에 대한 정보를 수집하고, 차량의 각 부분이 어떻게 통신하는지 보여주는 다이어그램을 만든 후 다이어그램을 사용하여 더 높은 위험이 있는 입력을 식별하고 감사할 항목의 체크리스트를 유지한다. 

- 위협 모델은 일반적으로 제품 개발 및 설계 과정에서 만들어져, 제품이 개발 생명 주기를 거치면서 모델이 지속적으로 업데이트된다.

- 위협 모델은 여러 수준으로 구성될 수 있다.

 

Level 0: Bird's-Eye View

 

 

 

- 이 단계에서는 attack surface 고려할 때 작성한 체크리스트 사용

- 차량을 중앙에 그린 다음, 외부 및 내부 공간 라벨링

 

 

 

-> 위협 모델에 여러 개의 복잡한 부분이 있다면 순서대로 번호를 매김

 

 

 

 

 

 

 

 

 

 

Level 1: Receivers

- Level 1로 넘어가기 위해, 탐색할 프로세스 선택 (현재 다이어그램에는 프로세스가 1개니까, 차량 프로세스를 잘 살펴보고 각 입력이 어디에 연결되는지 확인)

- Level 0 입력을 받는 차량을 명시

- 각 수신기에 번호를 매김 ([프로세스 레이블].[수신기 번호])

- 3가지 프로세스: Immobilizer, ECU, TPMS 수신기

- 점선은 신뢰 경계의 구분을 나타냄; 다이어그램 상단의 입력이 가장 신뢰도가 낮음

- 통신 채널이 교차하는 신뢰 경계가 많을수록 그 채널은 더 위험해짐

 

Level 2: Receiver Breakdown

- 차량 내부 통신을 살펴봄; 예시로 리눅스 기반 infotainment 콘솔인 수신기 1.1에 포커스

  • infotainment: 차량용 인포테인먼트는 차 안에 설치된 장비들이 차량 상태와 길 안내 등 운행과 관련된 정보를 포함해 사용자를 위한 엔터테인먼트적 요소를 함께 제공하는 서비스를 지칭함

- 통신 채널을 점선으로 된 상자에 그룹화하여 다시 한 번 신뢰 경계를 나타냄

- 커널과 직접 통신하는 시스템은 infotainment 유닛의 접근 제어 매커니즘을 우회할 수 있기 때문에 시스템 애플리케이션과 통신하는 시스템보다 더 높은 위험을 가짐

- 따라서 Cellular 채널은 Wi-Fi 채널보다 더 높은 위험을 가짐

- 이 시스템은 리눅스 기반 In-Vehicle infotainment (IVI) 시스템이며, 리눅스 환경에서 흔히 사용되는 부품을 사용

- 커널 공간에서는 위협 모델의 입력을 받는 커널 모듈 udev, HSI, Kvaser를 참조

- udev 모듈은 USB 장치를 로드하고, HSI는 셀룰러 통신을 처리하는 직렬 드라이버이며, Kvaser는 차량의 네트워크 드라이버임

 

Threat Identification

: 위협 식별 단계

 

Level 0: Bird's-Eye View

- 레벨 0에서 잠재적 위협을 결정할 때는 고수준에 머무르도록

- 이 목록에서는 모든 프로세스, 입력의 가능한 위협을 포함하는 것이 중요

  • 원격으로 차량 장악
  • 차량 셧다운
  • 차량 승객을 염탐
  • 차량 잠금 해제
  • 차량 절도
  • 차량 추적
  • 안전 시스템 방해
  • 차량에 악성 SW 설치
  • 랜섬웨어 ...

Level 1: Receivers

- 직접적으로 연결될 수 있는 것보다 각 장치의 연결에 초점

- 이 수준에서의 취약점은 차량 내 장치에 연결되는 것들에 영향을 미치는 취약점과 연관

 

Cellular; 차량의 셀룰러 연결을 악용 가능

  • 어디서든 내부 차량 네트워크에 접근
  • 인포테인먼트 유닛의 들어오는 호출을 처리하는 애플리케이션 악용
  • 인포테인먼트 유닛을 통해 가입자 인증 모듈(SIM)에 접근
  • 셀룰러 네트워크를 사용해 원격 진단 시스템(OnStar)에 연결
  • 셀룰러 통신 도청
  • 비상 호출 방해
  • 차량의 움직임 추적
  • 가짜 GSM(Global System for Mobile Communications) 기지국 설치

Wi-Fi

  • 300 야드 이상 떨어진 곳에서 차량 네트워크에 접근
  • 들어오는 연결을 처리하는 소프트웨어 취약점 찾기
  • 인포테인먼트 유닛에 악성 코드 설치
  • Wi-Fi 비밀번호 해독
  • 가짜 딜러 액세스 포인트를 설정하여 차량이 서비스 중이라고 속임
  • Wi-Fi 네트워크를 통과하는 통신을 가로챔
  • 차량 추적

Key Fob; 차량의 원격 제어 시스템을 작동시키는 작은 전자 장치, 보통 자동차 키에 부착

  • 차량의 이모빌라이저를 알 수 없는 상태로 만드는 잘못된 key fob 요청 전송(이모빌라이저는 차량을 잠금 상태로 유지하여 열쇠 없이 차의 시동을 거는 핫와이어링을 방지해야 함)
  • 이모빌라이저를 적극적으로 조사하여 자동차 배터리 소모
  • 키 잠금
  • 핸드셰이크 과정에서 이모빌라이저에서 누출된 암호화 정보 캡처
  • key fob 알고리즘에 대한 무차별 대입 공격
  • key fob 복제
  • key fob 신호 방해
  • key fob 전력 소모

Tire Pressure Monitor Sensor(TPMS)

  • 엔진 제어 유닛(ECU)에 불가능한 조건을 보내 결함 유발, 악용
  • ECU를 속여 잘못된 도로 조건에 과잉 반응하도록 함
  • TPMS 수신기나 ECU를 복구 불가능한 상태로 만들어 운전자가 평탄한 타이어를 확인하려고 차를 멈추게 하거나 심지어 차량을 정지시킬 수 있음
  • TPMS의 고유 ID를 기반으로 차량 추적 가능
  • TPMS 신호를 속여 내부 경고를 울릴 수 있음

Infortainment Console

  • 콘솔을 디버그 모드로 전환
  • 진단 설정 변경
  • 예기치 않은 결과를 초래하는 입력 버그를 찾을 수 있음
  • 콘솔에 악성 코드 설치
  • 악성 애플리케이션을 사용해 내부 CAN 버스 네트워크에 접근 가능
  • 악성 애플리케이션을 사용하여 차량 탑승자의 행동을 엿볼 수 있음
  • 악성 애플리케이션을 사용하여 사용자에게 표시되는 데이터(차량 위치 등)을 속일 수 있음

USB

  • 인포테인먼트 유닛에 악성 코드 설치 가능
  • 인포테인먼트 유닛의 USB 스택에서 결함 악용 가능
  • 주소록 및 MP3 디코더와 같은 인포테인먼트 유닛의 수입업자를 망가뜨리도록 특별히 제작된 파일이 포함된 악성 USB 연결
  • 차량에 수정된 업데이트 소프트웨어 설치
  • USB 포트를 단락시켜 인포테인먼트 시스템 손상 가능

Bluetooth

  • 인포테인먼트 유닛에서 코드 실행 가능
  • 인포테인먼트 유닛의 블루투스 스택에서 결함 악용 가능
  • 주소록과 같이 코드를 실행하도록 설계된 손상된 정보 업로드 가능
  • 가까운 거리(300피트 이하)에서 차량 접근 가능
  • 블루투스 장치 방해

Controller Area Network(CAN)

  • 악성 진단 장치를 설치해 CAN 버스에 패킷 전송
  • CAN 버스에 직접 연결하여 키 없이 차량 시동 시도
  • CAN 버스에 직접 연결하여 악성 코드 업로드
  • 악성 진단 장치를 설치해 차량 추적
  • 악성 진단 장치를 설치해 원격 통신을 통해 CAN 버스에 직접 접근하게 하여, 통상적으로 내부 공격을 외부 위협으로 만들 수 있음

Level 2: 수신기 세부 분석

- 레벨 2에서는 특정 위협을 식별하는 것에 대해 더 자세히 분석

- 각 애플리케이션이 어떤 연결을 처리하는지, 가능한 위협 기반 검증 수행

 

Bluez; 리눅스 환경에서 bluetooth를 사용하기 위한 라이브러리

구버전 또는 패치되지 않은 버전의 Bluez 데몬:

  • 악용 가능
  • 손상된 주소록을 처리하지 못할 수 있음
  • 적절한 암호화를 보장하도록 구성되지 않을 수 있음
  • 안전한 핸드셰이킹을 처리하도록 구성되지 않을 수 있음
  • 기본 패스키를 사용할 수 있음

wpa_supplicant

  • 구버전 악용 가능
  • 적절한 WPA2 스타일 무선 암호화를 강제하지 않을 수 있음
  • 악성 액세스 포인트에 연결 가능
  • 드라이버에 대한 정보를 BSSID(네트워크 인터페이스)를 통해 누출 가능

HSI

  • 구버전 악용 가능
  • 주입 가능한 시리얼 통신(공격자가 데이터 스트림에 시리얼 명령을 삽입하는 중간자 공격)에 취약할 수 있음

udev

  • 구버전, 패치되지 않은 버전은 공격에 취약 가능
  • 유지관리되는 디바이스 화이트리스트가 없어 공격자가 테스트되지 않았거나 의도되지 않은 드라이버, USB 드라이버를 로드할 수 있게 함
  • 공격자가 외부 디바이스(키보드 등)를 로드하여 인포테인먼트 시스템에 접근할 수 있게 할 수 있음

Kvaser 드라이버

  • 구버전, 패치되지 않은 버전은 악용 가능
  • 공격자가 Kvaser 디바이스에 악성 펌웨어를 업로드할 수 있게 할 수 있음

Threat Rating Systems

- 일반적 평가 시스템에는 DREAD, ASIL, MIL-STD-882E가 있음

- DREAD는 웹 테스트에서 흔히 사용되며, 자동차 산업과 정부는 각각 ISO 26262 ASIL과 MIL-STD-882E를 위협 평가에 사용

 

The DREAD Rating System

  • Damage potential: 피해가 얼마나 큰가
  • Reproducibility: 얼마나 쉽게 재현 가능한가
  • Exploitability: 얼마나 쉽게 공격할 수 있는가
  • Affected users: 얼마나 많은 사용자가 위협을 받는가
  • Discoverability: 취약성을 발견하기 얼마나 쉬운가
  • Level 2의 HSI에 위협 평가를 해본 예시

 

CVSS(Common Vulnerability Scoring System): DREAD 대안

- DREAD보다 훨씬 더 많은 범주와 세부 사항 제공

- Base, Temporal, Environmental의 세 그룹으로 나뉘고, 각 그룹은 하위 영역으로 세분화

 

 

출처: The Car Hacker's Handbook, Craig Smith