[리버싱 논문 리뷰] ① Reverse Engineering of Intel Microcode Update Structure

목욕탕오리·2025년 11월 23일

논문 리뷰

목록 보기
3/3

제목: Reverse Engineering of Intel Microcode Update Structure
저자: Zhiguo Yang; Qingbao Li; Ping Zhang; Zhifeng Chen
학술지: IEEE Access, vol. 8, pp. 169676-169687
발행 연도: 2020
DOI: 10.1109/ACCESS.2020.3024243
url: https://ieeexplore.ieee.org/document/9197630

============================================

1. Introduction

  • 성능, 효율성 높이려 CPU 내부에 마이크로코드 도입.
    - ROM -> RAM

    • 실제 보안 패치 사례 - 스펙터, 멜트다운
    • 단점(한계): 그러나 RAM의 휘발성 탓에 마이크로코드 업데이트는 영구적X 프로세서 리셋마다 re-load 필요. (mi- update 매커니즘 자체가 오류로 등재되기도)

    2. 데이터 분석 병행 + 사용한 알고리즘

    마이크로코드 업데이트 샘플 저장소

  • 샘플 걸러내고 형식 통일하는 과정

  • big-endian 방식 구버전. 현재는 little-endian

  • 순서. 추출 -> 포맷 변환 -> 중복 제거 -> 이름 변경 -> 체크섬

    SJNW-MA 분석 기법 : 통계와 알고리즘을 결합한 독창적인 반자동 분석법.

    아래 세 단계 순서.
    - SJ.자카드 지수 저장, 이에 기반해 행렬 계산. 자카드 지수 행렬은 그래프의 인접 행렬, 샘플은 node로 간주함. (샘플 > 쉬잉글 알고리즘 > 자카드 지수 계산 >>> 행렬 계산)

    • NW. 생물정보학에서 쓰이는 알고리즘. DFS 알고리즘으로 자카드 지수 행렬 순회하는 동안 니들만-운쉬로 edge 있는 node 2개의 최적 매칭 시퀀스 결정. 이후 여러 공통 데이터 블록으로 분류하여 candidate features로.
    • MA. 위에서 분류한 candidate features에 대해서 manual-review 수행. for 슬라이싱, 중복 제거, 평가 >>> 샘플 분류에 가장 효과적이고 단순화된 기준을 세우는 것.(1) SJ (Similarity Analysis based on Jaccard Index)
      - (목적) 파일들끼리 얼마나 비슷한지 거시적으로 파악하여 그룹화.
      - K- shingling: 바이너리 파일을 통째로 비교하는 대신, 데이터를 4바이트 단위의 ㅈ작은 조각(Shingle)로 잘게 쪼갠다.
      - 자카드 지수: 두 파일 A, B가 있을 때, (A와 B의 교집합) / (A와 B의 합집합) 공식으로 유사도를 계산함. 0이면 완전히 다르고, 1이면 완전히 똑같다고 판정.
      - (결과) 이 과정을 통해 유사한 파일끼리 뭉친 heatmap을 얻어내고, 결과적으로 분석 대상을 좁힐 수 있다.(2) NW (Needleman-Wunsch Algorithm)
      - (본래 목적) 유사하다고 판명된 파일 쌍에서 구체적으로 어떤 데이터 블록이 공통되는지 찾아냄.
      - 원래 DNA나 단백질 서열을 정렬할 때 쓰는 알고리즘. 연구진은 마이크로코드 바이너리를 DNA서열처럼 취급하여 이 알고리즘을 사용.
      - (작동 원리) 두 파일의 비트열을 나란히 놓고 비교하여, 연속적으로 일치하는 구간을 자동으로 찾아냄. 헤더, 데이터 본문, 서명 같은 핵심 구조의 후보가 됨.(3) MA(Manual-Assisted Analysis)
      - (목적) 알고리즘이 찾은 후보 중 진짜 의미 있는 정보를 골라냄
      - how? 전문가가 개입하여 다음 작업들 수행 -> 쓰레기 값 제거(보안 분석을 방해하려 제조사가 일부러 넣은 Garbage data나 padding을 걸러냄), 구조 확정(남은 블록들을 통해 최종적으로 헤더, 암호화된 데이터, 전자 서명 등의 위치와 크기를 확정)

    3. 과정-결과

    구조적 분류

  • Category 1 & 2 (구형): 펜티엄 프로 등 아주 오래된 CPU. 리버스 엔지니어링을 방해하기 위한 더미(Dummy) 데이터가 많이 섞여 있으며, 현재는 거의 쓰이지 않음.

  • Category 3 (주류, 2006년~현재): 현재 대부분의 인텔 CPU가 사용하는 표준 구조. 데이터 영역 앞부분에 692바이트의 접두사(Prefix) 구조가 존재하며, 여기에 업데이트 버전, 날짜, 로더 정보 등이 담겨 있음. RSA 전자서명을 통해 파일의 위변조를 검증한다.

  • Category 4 (최신~, Ice Lake): 최신 아키텍처인 아이스레이크(Ice Lake)용 업데이트에서 발견된 새로운 구조. Category 3와 비슷하지만 보안이 대폭 강화됨.

보안 매커니즘의 규명

  1. 3072비트 RSA 키 발견 (Category 4)
  • 기존에는 2048비트 수준의 키를 썼으나, 최신 업데이트(Category 4)에서는 보안 강도가 훨씬 높은 3072비트 RSA 모듈러스를 사용한다는 사실을 세계 최초로 확인.
  • RSA 지수(Exponent) 값은 파일에 명시되어 있지 않았지만, 연구진이 시뮬레이션을 통해 65537 (0x10001)임을 알아내고 서명 검증에 성공.
  1. 24개의 RSA 공개키 추출
  • 여러 업데이트 파일에 공통적으로 쓰이는 24개의 RSA 공개키를 추출. 이는 기존 연구보다 12개나 더 많은 수치.
  1. 암호화 방식
  • 모든 업데이트는 암호화되어 있으며, Encryption-then-MAC(암호화를 먼저 하고 그 결과값에 인증 코드를 붙이는 방식)을 사용하는 것으로 확인됨
  • 무결성 검증을 위한 해시 알고리즘은 구형의 SHA-1에서 신형의 SHA-2, SHA-3로 진화했음을 확인함.

4. 한계 및 의의

  • 제조사의 폐쇄성으로 접근이 어려웠던 hw 펌웨어의 보안 구조를 데이터 과학적 기법으로 규명함.
  • 특히 생물정보학 알고리즘을 바이너리 분석에 융합하는 시도를 함으로써, 기존의 수동 분석보다 훨씬 효율적이고 정밀한 결과를 도출함.

0개의 댓글