Notice
Recent Posts
Recent Comments
Link
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

방망이

[프로젝트]UEFI DXE 바이너리 취약점 분석기 8주차 - Ghidra Script 로직 보강 본문

2026_졸업프로젝트

[프로젝트]UEFI DXE 바이너리 취약점 분석기 8주차 - Ghidra Script 로직 보강

망구입니다 2026. 3. 16. 09:10

이번 주에는 지난 주에 여러 취약점을 추가한 기드라 스크립트에 필요한 로직 보강과 추가 취약점 분석을 추가하는 방향으로 진행하였다.

 

[수정 사항]

  1. 논리식 평가 고도화
  2. 빈 DEPEX (Empty DEPEX) 조기 탐지 로직 추가 및 Apriori 파일에 존재하는 드라이버일 경우 제외 처리 추가
  3. OP_SOR 오프코드 처리 방식 수정
  4. 프로토콜 제공자(Provider) 추론 로직 경량화
  5. 악성 코드가 들어있는 드라이버를 하나 정의하고, DEPEX에 그 드라이버의 GUID가 존재한다면 잡아내는 취약점 추가
  6. 취약점 탐지라는 핵심 목적과 무관하게 폴더에 생성되던 dependency_graph.txt 및 protocol_providers.txt 관련 변수 (graphWriter, protocolWriter)와 생성 메서드 삭제
  7. 이 외의 자잘하게 로직 보강

GhidraDepexHunter_v8.java
0.05MB

 

 

 

 

위 수정 사항 외에 필요한 부분은 아래와 같다. 다음주부터 보강할 계획이다.

 

[수정 예정 사항]

  1. SOR 연산 로직 보강 필요 ( -> 굉장히 까다로움)
  2. bypass (TRUE OR), dead (FALSE AND)에 대해 좀 더 알아보기
  3. simplifyExpression 함수 로직 보강 필요 (AST 기반 parser 필요할듯)
  4. Missing protocol 로직 보강 필요 -> 많은 protocol이 DXE Driver가 제공하는 것은 맞지만, SMM core, PEI phase, Platform code 등에서 제공되는 경우도 존재. 이에 대한 보강 필요.
  5. currentProgram.getMemory().findBytes(...) 로직 보강 필요 (GUID Search 로직)
  6. Malicious GUID detection 로직 보강 필요(Protocol GUID와 Driver GUID 구분 필요 -> 일반적인 AND/OR 조합에서 쓰는 guid는 protocol, before/after 조함에서 쓰는 guid는 driver)
  7. protocol provider inference 로직 보강 필요 (휴리스틱함)

 

현재 8개의 취약점을 탐지하고 있는데, 가장 치명적이고 중요한 취약점을 소량 정하여 집중적으로 탐지하면서 오탐률을 줄이는 것이 좋을 것 같다는 생각이 들었다.

 

이제 앞으로 진행할 부분에 대해 정리를 해보자면, 

  • 성능 실험
  • 위 [수정 예정 사항] 부분 로직 보강 및 조사
  • 탐지하면 좋을만한 취약점 추가 조사 및 CVE 조사
  • 취약점 조사를 마치고, 그 중 4~5개정도 추려서 기준을 잡은 후 집중적으로 로직 보강 및 정확도 올려나가기
  • 타임스탬프 찍기

 

[교수님, 팀원분들과 상의할 내용]

  1. 지난주에 protocol_providers.txt 파일(protocol을 제공해주는 driver 정리)과 dependency_graph.txt 파일(DEPEX를 기반으로 한 의존성 그래프)을 생성 했었는데, "취약점 탐지 스크립트"라는 주제와는 살짝 멀어진 것 같아서 이번주에는 뺀 상황. 이를 복구시키는 것이 좋을지, 아니면 유지하는 것이 좋을지
  2. 취약점 4~5개에 집중하는 것이 괜찮을지
  3. JSON 파일 형식 정확히 정하기

dependency_graph.txt

 

protocol_providers.txt