ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Research & Technique] ‘Black Hat USA 20하나8’을 통해 살펴본 자동차 해킹과 시스템 해킹
    카테고리 없음 2020. 3. 6. 22:16

    >


    보안 ∙, 해킹의 최근의 기술을 발표하고 관련 교육을 공급하는 최대의 보안 콘퍼런스'Black Hat USA 2018'이 8월 41에서 91(미국 서부 때에 기준)까지 총 61간 미국 라스 베가스에서 행해졌다. Black Hat는 크게 훈련(Training), 브리핑(Briefing), 그 외의 프로그램(Business Hall, Arsenal, Careerzone, Innovation City 등)으로 구성되어 있다. 컨퍼런스 기간 동안 본인의 일간에는 실습 기반의 트레이닝 세션을, 본인의 나머지 기간에는 조사 결과를 발표하는 브리핑 세션이 진행된다. 그 중 트레이닝 세션에서는, 최근의 기술 관련 해킹 기법과 깊어진 침투 테스트의 비결을 교육 및 실습합니다.


    >


    이달에서는 'Black Hat USA 2018'훈련 과정에서 이뤄진 'CAR HACKING HANDS-ON'과 'DARK SIDE OPS 2-ADVERSARY SIMULATION'총 2개 스토리울 같이 보았고, 해킹 기술을 공유하고 싶다.


    ■Black Hat Training 하나 - CAR HACKING HANDS-ON


    사물인터넷(IoT)의 발달로 자동차와 인터넷의 연결이 가능해지면서 지역에서 '커넥티드 카(Connected Car)'가 등장하게 됐다. '커넥티드 카'란 다른 차량이 본인의 교통통신 기반시설에 접속되어 내비게이션, 원격 차량제어 등의 서비스를 제공하는 것을 의미합니다. 그러나 이처럼 외부 네트워크가 폐쇄망인 자동차 내부망(CAN)에 접속할 수 있기 때문에 지역에서 해킹하는 사례가 늘고 있다. 특히 자동차 해킹으로 인한 오작동은 운전자와 보행자의 생명과 직결돼 있어 보안의 중요성이 더욱 커지고 있다.자동차 보안에 대한 중요성이 높아진 만큼 올해'Black hat USA 20하나 8'에서는 자동차 제조/제공 업체, 베디 두 보안 두 이당쟈 등을 대상으로 'CAR HACKING HANDS-ON'이란 훈련 과정이 열렸다. 교육과정은 자동차 전자 시스템과 통신 네트워크의 개념, CAN bus 구축하고, 네트워크 데이터의 송수신을 실시하는 과정으로 구성되어 있다.


    >


    최근부터는 자동차 해킹을 위한 자동차 네트워크의 기본적인 개념 설명과 CAN을 이용하여 메시지를 요청하고 응답을 받는 과정을 살펴보겠습니다.


    1. 자동차 네트워크의 기본 개념 소개-ECU(Electronic controlunit, 전자제어장치)자동차가 고성능화되어 자동차 내의 서브시스템을 제어하는 ECU(Electronic controlunit, 전자제어장치)를 탑재하게 되었다. ECU의 종류에는 엔진 제어 모듈(ECM, Engine Control Module), 변속기 제어 모듈(TCM, Transmission Control Module), 중앙 제어 모듈(CCM, Central Control Module), 브레이크 제어 모듈(Brake Control Module, BCM) 등의 제어 모듈이 포함된다. 이러한 ECU는 네트워크로 연결되어 있어 데이터 공유와 제어가 가능하다. 이에 따라 자동차 정보를 확인해 기능 오작동 여부를 점검할 수 있게 됐다.현재 자동차에는 약 80개 이상의 ECU가 탑재됐고 자동차 회사마다 ECU가 제어하는 시스템은 같지 않다. 그에 따른 제어 데이터도 다르다.


    CAN (Controller Area Network) bus 통신 CAN bus는 자동차의 네트워크 통신을 위해 공통으로 사용하는 프로토콜로 중앙관리자 없이 각 ECU간의 독립적으로 버스를 통해 차량 동작 데이터의 송수신을 할 수 있다. 자동차 메이커 마다 적합한 프로토콜을 사용하는데, 통상 사용되는 대표적인 프로토콜은 OBD(On-Board Diagnostics)-II 커넥터에 연결되는 CAN이었다. CAN프로토콜은 OSI 7계층에서 물리 계층(Physical Layer)와 데이터 링크 층(Data Link Layer)에 해당하는 케이블을 통해서 물리적으로 연결하여 식전 입으면을 표시 도달하는 역할을 하는 것이다.CAN은 Micro Controller, CAN Controller, CAN Transceiver로 구성된다. Micro Controller는 명령에 따라 TTL 수준의 Tx(Transmit), Rx(Receive) 신호를 송수신하는 역할을 할 것이다. CAN Transceiver는 CAN bus로 데이터를 전송하기 위해 Tx 신호를 CAN 규격의 차동 신호로 변환하고 본인, 데이터 수신을 위해 차동 신호를 Rx 신호로 변환하여 CAN Controller로 전송한다.


    >


    CAN은 데이터 전송을 위해 비틀림선(CAN High, CAN Low)을 사용합니다. 비틀림선 중 일선이 전압을 발생시키면 다른 선에서 동일량만큼 전압을 내려 차동신호를 발생시킨다. 예를 들어 CAN High의 전압이 하나 V가량 증가하면 CAN Low의 전압이 하나 V 떨어지고 신호의 차이가 2V가 되고, 이때 실제 전송되는 데이터 비트는 'dominant(0)'이프니다니다. 한편, 신호의 차이가 없는 경우, 데이터 비트는 "recessive(하나)"가 전송된다. 자동차 내 센서와 ECU가 앞서 말한 신호를 감지하여 처리하는 것입니다. 반면 반적으로 폴크스바겐, 피아트, 현대자동차에서 Body 네트워크로 쓰인다.


    >


    CAN메시지 프레입니다. 구조는 자주 형하(Standard)확장형(Extended)총 2종류가 있다. 자주 형은 ID에 일일이 Bit을 저장할 수 있는 반면, 확장형은 29Bit에 더 큰 ID값을 저장할 수 있다. 가장 최근부터는 프레데스의 각 필드가 무엇을 의미하는지 보려고 할 것이다. Arbitration Field(식별자)는 통신을 시도하는 디바이스를 식별하기 위해서 고유 ID값을 보존하는 공간이었다. Identifier Extension(식별자 확장비트)는 자주 형하 CAN bus선물입니다고 항상'0'값을 갖는다. Data Length Code(데이터 길이 코드)는 데이터 바이트 수(0~8 byte)이며, Data Field(데이터 필드)은 전송하는 데이터를 저장하는 것이다.


    >


    확장형 프레이의 경우 자주 형하 프레이 다과는 달리 Arbitration Field(식별자)영역에 메시지의 우선 순위를 자신의 잡으려는 식별자가 크기 11bit, 18bit의 두 부분으로 구성되어 있다. Identifier Extension(식별자 확장비트)는 데이터의 프라이의 경우 dominant(0)이며, 원격 요청의 프라이 다인 경우 recessive(1)였던 Data Length Code(데이터 길이 코드)와 Data Field(데이터 필드)에는 자주 형하고 동 1 한다.


    -자동차 진단 그대로 프로토콜:ISO첫 5765-2&ISO첫 4229ISO첫 5765-2는 CAN bus에서 데이터 패킷을 전송하기 위한 전송 프로토콜로, 네트워크층(Network Layer)과 전송 계층(Transport Layer)에 해당합니다. 일반적으로 통합 진단 통신 프로토콜인 UDS(Unified Diagnostic Services)를 사용하는 자동차에서 진단 메시지를 주고받는 데 이용된다. 이 프로토콜은 CAN 프레임에서 8 바이트 이상의 메시지 전송이 가능하다. 긴 메시지의 경우, 복수의 프레임에 분할되어 각 프레임을 해석하기 위한 메타데이터(Protocol Control Information, PCI)가 추가되어 수신시에 완전한 메시지 패킷으로서 재구성된다. 메시지 패킷 당 최대 4,095바이트를 전달할 수 있다. 대부분의 자동차(GM, Ford, Chrysler, BMW, Toyota 등)에서 진단 프로토콜로 사용하고 있다.ISO첫 4229(UDS)는 통합 진단 서비스에서 자동차 ECU의 진단 기능을 제어하기 위해서 진단 서비스의 요구 사항을 그대로화한 것이었다 이는 ISO첫 5765-2전송 계층을 기반으로 한 OSI 7계층의 사랑기·케이션층(Application Layer)에 해당하는 자동차의 서버를 모니터링 및 진단하는 데 사용된다. 폴크스바겐, 포드, 크라이슬러/피아트 등 자동차 업체에서 광범위하게 사용되고 있다. .


    >


    2.CAN bus프로토콜을 이용한 자동차 진단의 실습과 자동차 진단의 실습 준비물


    >


    - CAN bus 프로토콜을 이용한 자동차 진단 실습 - 입출력 제어 입출력 서비스는 입력 신호, 내부 ECU 기능, 전자 시스템의 출력을 제어하는 것을 의미한다. 본 실습에서는 LED의 입출력을 제어하고 싶다.입출력을 제어하기 위한 메시지는 다음과 같은 형식으로 정의되어야 한다. 처음(#한개)아르바이트에는 서비스 ID를 입력하고 두번째(#2)와 셋째(#3)에는 2바이트의 크기의 PID(Parameter identifier)을 넣어 준다. PID는 진단 시에 CAN을 제어할 수 있는 진단 파라미터를 의미할 것이다. 그리고 마지막 네번째(#4)에는 짧은 기간에 조절하는 옵션 가격'03'을 넣는다.


    >


    Step처음이다.ISO첫 4229(UDS)국제 보동 문서 내의 서비스 목록에서 입 ∙ 출력 제어 서비스 ID가 2F(Hex)임을 확인합니다.


    Step 2. 두번째(#2)와 셋째(#3)의 데이터 바이트에 PID를 넣기 위해서 입 ∙ 출력에 의해서 제어할 수 있는 진단 PID 찾아야 한다. 먼저 PID에 2바이트의 크기인 00 00값을 삽입하고, PID를 하봉잉하 본인의 증가시키고 입 ∙ 출력 제어 PID를 확인한다.밑그림은 Vehicle Spy의 Message Editor화면에 전송하는 메시지(IO Control)에 이미 정의한 값을 입력한 것으로 자신 먼 아르바이트는 '00'값을 패딩 했다. 이때 CAN데이터 패킷 전송을 위한 ISO한개 5765-2프로토콜을 설정했다.


    >


    Step 3.Function Blocks의 Script기능을 이용하여 PID색출 명령을 스크립트로 구성되어 자동적으로 수행한다. 메뉴 Scripting and Automation >> Function Blocks를 선택한 후 Function Blocks에 'Find IOPIDs' 이름으로 스크립트를 생성한다.스크립트 구성은 먼저 진단 개시의 메시지를 전송한 지 약 Hex3일 00(DEC것 2,544)까지 PID을 그때마다씩 증가하고 메시지를 전송하고 이에 대한 입 ∙ 출력 응답치(SId)'6F'존재 여부를 확인한다.


    >


    Step 4. 스크립트를 구동한 결과 입∙ 출력 서비스 응답('6F')은 2개가 존재하고 해당 PID는 '1001','2150'이었다.


    >


    Step 5. 메시지의 두번째(#2)와 셋째(#3)에 PID를 각각 삽입하고 전송한 뒤(뒤)CAN으로 출력이 제어되는 것을 확인할 수 있다.


    >


    "CAR HACKING HANDS-ON"트레이닝에서 CANbus에 연결해 자동차의 서브시스템을 제어하는 하드웨어 모듈 공격의 실습을 실시했다.실제 ICT 기술의 발전에 의해 CANbus와 이다베디드 프로세서 프로그램에 의해 다른 차량이 스스로의 인프라에 접속할 수 있게 되고, 공격자는 말웨어를 삽입함으로써 ECU를 장악할 수 있게 된다. 그 결과, 이 다의로 자동차를 제어하는 즉시, 서비스 거부 공격(DoS)이라고 하는 악의 있는 명령을 수행할 수 있게 되었다. 따라서 공격자가 변조한 데이터에 의해 실수로 시스템을 제어하는 등 악용 가능한 많은 취약점이 존재하기 때문에 자동차 해킹에 대해 ECU 침입 탐지 시스템 지령은 무선통신 보안을 적용할 필요가 있다.


    ■ Black Hat Training 2-DARK SIDE OPS 2-ADVERSARY SIMULATION


    이 훈련 과정은 보다 정교한 공격을 수행하기 위해 자동화 공격 툴을 활용하지 않고 실제 공격에 사용하는 기능을 개발하는 능력을 향상시키는 과정으로 구성되어 있습니다.


    >


    과정은 Silent Break Security에 소속된 총 두명으로 이뤄지며, 철저한 실습 위주로 코딩 시간이 모두의 80%, 발표자의 각 단계별 개념의 설명이 20%정도의 비율을 차지했습니다. 총 3개의 VM환경(공격자, 서버, 타겟)가 주어지고 실습 중 궁금한 것, 오류 생성 등 사항이 있으면 사회자에게 실시간으로 조회할 수 있었다.실제 훈련과정의 실습단계는 다음과 같다.


    단계별 스토리울 크게 4단계로 정리하면 다음과 같다.    [1~3]단계:공격을 위한 서버 구성이나 웹 페이지의 접근 시 프로세스 구동 실습[4~5]탄게:침입한 시스템에 존재할 수 쵸은세울게 소가족 및 우회 비결에서 실습[6]단계:침입한 시스템 내부 정보 습득의 비결 실습[7~11]단계:Rootkit의 작성을 통한 SYSTEM의 권한 셰일 획득의 실습


    위의 내용을 보면 훈련 수강에 활용하는 언어가 다양하고 운영체제에 대한 이해를 수반하지 않으면 그 과정을 이수할 수 없음을 알 수 있다. 후반부에 실습이 진행될수록 요구되는 지식과 모두 트러블 슈팅이 많았다. IT관련 학과가 없어 실무를 경험하지 않은 학생, 모의 해킹 1~2년 차 정도는 정보 검색 및 문제를 해결하는데 때 때 로이 오래 걸맀 슴니다.모의 해킹 실무 경력에서 3년 이상의 경험, 악성 코드 분석의 실무를 하는 정도의 수준이라면 무난히 실습의 진행이 가능했다. 해당 과정의 각 실습단계는 서로 연계되어 있어 한 단계 진행하지 않으면 다소의 실습에 지장이 생기므로 주의가 필요했다.훈련 전반에 걸쳐서 사용된 지식 중 확실히 체크하고 넘어가야 할 지식은 강사가 10~15분 정도 PPT에서 설명했다. 그러나 모든 사람이 개념에 대해 어느 정도 안다고 의견을 밝혔고 구체적으로 지적하지는 않았기 때문에 이를 추가로 검색하고 이해하는 부분은 학습자의 역량에 따라 큰 차이를 보였다. 지금부터는 실습 주요 내용 중 2개를 정리하고자 합니다.처음에는 앞서고, 감염된 표적 PC내의 주요 정보를 수집하는 노하우나 스크립트를 작성하는 6번째의 실습 과정이었다. 고객들로부터 파워チュー을 활용해 주요 정보를 수집하는 노하우를 중심으로 설명하고 여유롭게 실습을 진행할 수 있었다.


    >


    파워チュー을 활용하여 시스템 내에 설치된 AV 확인, UAC 확인, 부정한 프로세스를 탐지할 수 있는 프로세스 확인, 패치 현황, 특정 디렉터리 내에 사용자가 최근 수정한 파하나 등의 정보를 수집합니다. 해당 프로세스는 비교적 짧은 기간 진행되었으나 파워チャット을 통해 사용자의 중요 데이터를 확인할 수 있는 중요 포인트를 알 수 있었다. 역시, 한정된 관리가 필요한 패스워드가 많은 경우를 가족과 패스워드 관리 프로그램을 사용할 경우에, 키 데이터를 추출하기 위한 프로세스도 진행되었다.최종적으로는 해당 기능을 동작시키기 위해 최초 실습 시에 공급되는 플레이더워크에 기능을 추가하고 이를 타겟으로 하여 실행함으로써 해당 실습단계는 종료했다.두번째는 Rootkit의 작성을 통한 SYSTEM의 권한의 셸 실행에 대한 7~9번째의 실습 과정이었다. 해당 과정의 실습시간이 제한되지만 블루스크린이 발생하는 경우가 많았다.


    >


    이 과정은 Windows 64bit OS를 대상으로 실습하지는 않았지만, 드라이버 작성 시 기본적인 개념에 대한 설명으로 Driver Signing, PatchGuard에 대한 창별보다 이야기를 함께 설명했다.64bit환경에서 주요 스토리웅 Rootkit드라이버의 Driver Signing을 우회하기 때문에 아래에 언급된 도구, 로더를 활용한다는 점이었다-DSEFix:ntoskrnl!g_CiEnabled/CI.DLL!g_CiOptions커널 변수를 조작. 해당 작업은(Win 8)하나/한개 0)PathcGuard가 BSOD를 임의로 생성시킬 가능성이 있어 안정성이 끊어져-TDL(Turla Driver Loader):커널의 변수를 조작하지 않기. 드라이버 작성이 곤란, 예외 처리 불가, Driver unloading이 불가, 실제의 실습은 Windows하나 0 32bit에서 열렸다. 드라이버 로드는 파워 チュー 스크립트로 진행하였다. 프로세스 은닉의 실습은 전에 잘 알려진 EPROCESS구조 내의 2개의 포인터에 대한 조작을 통해서 프로세스를 은닉하 노하우울 실습하고 있어 쉽게 탐지가 가능하다는 스토리울 설명했다.SYSTEM 권한 셸 획득 부분은 WFP(Windows Filtering Platform)를 활용해 APC(Asynchronous Procedure Calls) Injection을 활용한 공격 코드를 작성할 필요가 있었다. 전체 스토리는 공격자가 조작한 ping을 타겟 PC로 전송하는 경우 사전에 로딩한 디바이스 드라이버가 이를 트리거 조건으로 체크하고 SYSTEM 권한의 셸을 실행시키는 실습이었다.'DARK SIDE OPS 2-ADVERSARY SIMULATION'훈련에서 공격 대상을 완전히 제어하기 위해서 rootkit까지 작성하는 과정에서 열렸다. 해당 훈련 과정에는 포함되지 않았지만 공격자 입장에서는 이런 rootkit를 작성하고 은닉하는 데 노력을 기울일 것이고, 우리가 생각해야 할 부분은 이를 탐지해 안전하게 제거하는 노하우일 것이라는 두 과정에 참여하면서 해커들은 과연 수단과 노하우를 가려내면서 해킹을 할까라는 질문을 해봤다. 이에 대한 대답은 역시 본인 '아니오'였다. 다양한 IT기술에 대한 공격이 우리의 일상과 점점 가까워지고 있다. 그에 관한 기술의 정리 및 연구가 항상 계속되어야 한다는 것을 다시 한번 생각해 봐야 한다.


    >


    [EQST Insight] 디지털 보안 시대로의 안내


    [Infosec Product] 적극적인 엔드포인트 위협 대응, EDR 솔루션 전격 분석


    >



    댓글

Designed by Tistory.