Core Concepts
이 논문은 REMaQE라는 자동화된 프레임워크를 제안하여 바이너리 실행 파일에서 수학 방정식을 역공학하는 방법을 소개한다. REMaQE는 레지스터, 스택, 전역 메모리 또는 포인터를 통해 접근되는 방정식 매개변수를 처리할 수 있으며, C++ 클래스와 같은 객체 지향 구현도 역공학할 수 있다.
Abstract
이 논문은 임베디드 시스템의 사이버 보안 취약점을 분석하기 위해 바이너리 실행 파일에서 수학 모델, 제어 알고리즘 및 동적 동작과 같은 의미 정보를 복구하는 방법을 제안한다.
REMaQE 프레임워크는 다음과 같은 특징을 가지고 있다:
레지스터, 스택, 전역 메모리 또는 포인터를 통해 접근되는 방정식 매개변수를 자동으로 분석하여 식별한다. 이를 통해 C++ 클래스와 같은 객체 지향 구현도 역공학할 수 있다.
기호 실행과 대수적 단순화 기법을 사용하여 복잡한 조건부 방정식을 사람이 이해할 수 있는 수학 방정식으로 변환한다. 이는 기존 접근 방식의 한계를 극복한다.
REMaQE는 다음과 같은 과정을 거쳐 수학 방정식을 복구한다:
매개변수 분석 단계에서 입력, 출력 및 상수 매개변수의 저장 위치를 자동으로 식별한다.
기호 실행 단계에서 적절하게 초기화된 상태로 함수를 실행하여 출력 표현 트리를 추출한다.
대수적 단순화 단계에서 구현 세부 사항을 제거하고 조건부 표현을 단순화하여 사람이 이해할 수 있는 수학 방정식을 생성한다.
REMaQE는 Linux 커널의 "tmon" 도구에서 발견된 버그를 사례 연구로 제시하여 역공학된 수학 방정식이 어떻게 실제 문제를 발견하는 데 도움이 될 수 있는지 보여준다.
Stats
𝑡= 𝑥8 −𝑥1𝑥3
𝑥4
(𝑥0 −2𝑥6 + 𝑥7) −𝑥1𝑥2𝑥4 (𝑥0 −𝑥5) −𝑥1 (𝑥0 −𝑥6)
𝑦2 =
𝑡
for 𝑥5 −𝑥0 ≤𝑘2 and 𝑘4 ≥𝑡and 𝑘3 ≤𝑡
𝑘3
for 𝑥5 −𝑥0 ≤𝑘2 and 𝑘3 > 𝑡
𝑘4
for 𝑥5 −𝑥0 ≤𝑘2 and 𝑘3 ≤𝑡and 𝑘4 < 𝑡
0
otherwise
𝑦3 =
(
𝑥0
for 𝑥5 −𝑥0 ≤𝑘2
0
otherwise
𝑦4 =
(
𝑥0
for 𝑥5 −𝑥0 ≤𝑘2
0
otherwise