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
'보안' 카테고리의 다른 글
[시스템해킹] PIE (0) | 2024.04.26 |
---|---|
[시스템해킹] Return Oriented Programming(ROP); ret2main (0) | 2024.04.26 |
[시스템해킹] Return Oriented Programming(ROP); GOT Overwrite (0) | 2024.04.24 |
[시스템해킹] Return to Library (0) | 2024.04.23 |
[시스템해킹] Background: Library (0) | 2024.04.23 |