← 최신 논문
💻 computer science

Control Flow Graph Recovery for Dynamically Loaded Code via Symbolic Library Resolution

본 논문은 동적으로 로드된 코드에서 제어 흐름 그래프를 복원하기 위해 예측적 라이브러리 프리로딩과 사용자 정의 후크를 결합한 안전하고 심볼릭 실행 기반의 분석 기법을 제안하며, 이는 정적 분석 대비 노드 및 엣지 복원 성능을 크게 향상시키면서도 라이브러리 탐지에서 100%의 정밀도와 재현율을 유지합니다.

원저자: Oleksandr Mostovyi

게시일 2026-05-29
📖 4 분 읽기☕ 가벼운 읽기

원저자: Oleksandr Mostovyi

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

복잡한 기계가 어떻게 작동하는지 그 설계도를 보고 이해하려고 한다고 상상해 보세요. 컴퓨터 소프트웨어 세계에서는 이러한 설계도를 **제어 흐름 그래프 (Control Flow Graphs, CFGs)**라고 부릅니다. 이는 프로그램이 취할 수 있는 모든 가능한 경로를 매핑하여 코드가 다음에 어디로 이동하는지 보여줍니다.

그러나 현대 소프트웨어 (및 악성코드와 같은 악성 프로그램) 는 설계도를 숨기기 위한 한 가지 트릭을 배웠습니다. 바로 **동적 로딩 (dynamic loading)**이라는 기술을 사용하는 것입니다. 모든 부품을 처음부터 주 기계에 내장해 두는 대신, 일부 부품은 잠긴 상자에 보관했다가 기계가 실행되는 동안에만 상자를 열고 부품을 조립합니다.

문제: 보이지 않는 부품들

전통적인 소프트웨어 분석 도구는 정적 건축가와 같습니다. 그들은 테이블 위에 놓인 설계도를 보고 "여기가 경로입니다"라고 말합니다. 하지만 기계가 실행되는 동안 상자에서 숨겨진 부품을 꺼내면, 정적 건축가는 아무것도 보지 못합니다. 문이 있어야 할 곳에 빈 공간만 보이기 때문에, 그 문을 통과하는 경로를 그릴 수 없습니다.

이는 보안에 있어 매우 큰 문제입니다. 숨겨진 경로를 볼 수 없다면, 그 기계가 안전한지 아니면 함정인지 판단할 수 없습니다.

해결책: "추측적" 탐정

이 논문의 저자 O. S. Mostovyi 는 새로운 유형의 탐정 도구를 개발했습니다. 단순히 설계도를 보는 대신, 이 도구는 시간 여행을 하는 시뮬레이터처럼 작동합니다.

다음은 간단한 비유를 통해 그 작동 방식을 설명한 것입니다:

  1. 시뮬레이션 (기호적 실행): 실제로 소프트웨어를 실행하지 않고도 실행할 수 있는 로봇이 있다고 상상해 보세요. 이 로봇은 "만약에"라는 세계에서 코드를 실행합니다. 위험한 부분을 실제로 실행하는 대신, 단순히 그 부분을 생각하며 검토합니다.
  2. 이중 아키텍처: 이 도구는 함께 작동하는 두 가지 특별한 감각을 갖추고 있습니다:
    • 1 단계 (도서관 사서): 이 부분은 소프트웨어가 새로운 부품을 요청할 때를 감시합니다. 소프트웨어가 "네트워크에서 라이브러리가 필요하다"거나 "숨겨진 메모리 위치에서 파일이 필요하다"고 말하면, 사서는 그 요청을 가로챕니다. 소프트웨어가 파일 이름이 암호화되거나 난독화되었다고 말하더라도, 도구는 수학을 통해 해당 파일이 실제로 무엇인지 파악합니다. 그런 다음 로봇이 볼 수 있도록 해당 파일을 시뮬레이션에 "추측적으로" 로드합니다.
    • 2 단계 (교통 경찰): 이 부분은 로봇이 이동하는 도로를 감시합니다. 로봇이 숨겨진 변수 (비밀 주소 등) 에 따라 방향이 결정되는 도로 분기점에 도달하면, 교통 경찰은 그 도로가 실제로 어디로 이어지는지 확인하기 위해 "만약에" 시나리오를 점검합니다.

까다로운 트릭 처리 방법

이 논문은 악의적인 행위자들이 로딩 과정을 숨기기 위해 다양한 방법을 사용한다고 설명합니다. 이 도구는 그 모든 것을 포착하도록 설계되었습니다:

  • 파일리스 실행: 일부 프로그램은 하드 드라이브에 존재하지 않고 RAM 에서만 존재하는 파일을 생성합니다. 이 도구는 이러한 보이지 않는 파일들을 감지합니다.
  • 네트워크 로딩: 일부 프로그램은 실행 중 인터넷에서 코드를 다운로드합니다. 이 도구는 도착하는 내용을 확인하기 위해 해당 다운로드를 시뮬레이션합니다.
  • 암호화된 이름: 프로그램이 "파일 [암호화된 코드] 로드"라고 말하면, 도구는 수학적 솔버를 사용하여 코드를 해독하고 실제 파일 이름을 찾습니다.

결과: 누락된 지도 채우기

이를 테스트하기 위해 저자는 단순한 트릭부터 복잡한 다단계 암호화에 이르기까지 다양한 숨기기 기법을 사용한 16 가지 다른 "함정 (벤치마크)"을 만들었습니다.

결과는 매우 명확했습니다:

  • 완전성: 이 도구는 기존 정적 도구보다 경로 (노드) 를 29.8% 더 많이 발견했고, 연결 (간선) 을 26.5% 더 많이 찾았습니다. 지도의 빈 공간을 채웠습니다.
  • 정확성: 정확도는 **100%**였습니다. 숨겨진 라이브러리를 발견했다고 말할 때마다 그것은 정확했습니다. 오탐지는 전혀 발생하지 않았습니다.
  • 안전성: 위험한 코드를 실제로 실행하는 대신 시뮬레이션 (기호적 실행) 을 사용했기 때문에, 악성코드가 탈출하거나 손상을 입힐 위험 없이 이러한 까다로운 프로그램을 안전하게 분석할 수 있었습니다.

한계점

저자는 이 도구가 아직 할 수 없는 것에 대해 솔직하게 인정합니다:

  • 탐정은 있지만 마술사는 아님: 이 도구는 숨겨진 문을 찾고 경로를 그릴 수는 있지만, 복잡한 난독화 (교란) 를 자동으로 "되돌려" 코드를 읽기 쉽게 만들지는 못합니다. 이는 여전히 어려운 문제입니다.
  • 플랫폼 제한: 현재는 특정 컴퓨터 칩에서 Linux 시스템 (특히 ELF 파일) 에 대해서는 잘 작동하지만, Windows 나 다른 운영체제에서는 아직 작동하지 않습니다.
  • 숨겨진 흐름: 명시적으로 이동하는 데이터는 추적하지만, 복잡한 수학 함수를 통한 것처럼 미묘하고 간접적인 방식으로 이동하는 데이터는 때때로 놓치기도 합니다.

요약

간단히 말해, 이 논문은 실행될 때까지 자신의 부품을 숨기는 소프트웨어를 매핑하는 새로운 방법을 제시합니다. "만약에" 시뮬레이터와 숨겨진 파일 요청을 가로채고 해결하는 지능형 시스템을 결합함으로써, 이 도구는 프로그램의 행동을 완전히 매핑하여 보안 분석가들에게는 이전까지 보이지 않았던 경로를 드러냅니다. 이 도구는 16 가지 다른 시나리오에서 성공적으로 테스트되어 숨겨진 라이브러리를 완벽하게 찾아낼 수 있음을 입증했습니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →