top of page

[★]BiSwert: 바이너리 프로그램에서 제어구조를 식별하는 도구

최종 수정일: 6월 12일
















팀명

Swify


팀원 명단

안상준, 박혜연, 손예진


지도교수

조은선 교수님


작품 배경 및 목적

<작품배경>

최근 악성코드는 분석 회피를 위해 난독화 기법을 적극적으로 활용하고 있으며, 그중에서도 가상화 난독화는 제어 흐름을 가상 머신 기반으로 바꿔 분석을 어렵게 만든다. 이 과정에서 loop- switch 같은 핵심 제어 구조가 숨겨지기 때문에, 실제 프로그램의 동작을 파악하기 매우 어렵다.

본 프로젝트는 이러한 난독화 코드에 대해 대규모 언어 모델(LLM)을 활용하여 숨겨진 제어 흐름 구조를 자동으로 식별하는 도구를 개발하는 것이 목적이다. 이는 악성코드 분석, 리버스 엔지니어링, 보안 자동화 도구 개발에 실질적인 도움을 줄 수 있다.



작품 내용

GitHub와 AtCoder 등에서 수집한 C 코드를 기반으로 함수 단위 데이터를 정제하고, Tigress 도구를 활용해 Flattening, Opaque Predicate, Virtualization 등의 난독화 기법을 적용하였다. 원본 코드와 난독화된 코드를 비교하여 각 함수의 제어 흐름 구조(loop, switch 등)를 분석하고, 이에 대한 라벨링을 통해 학습용 데이터셋을 구축하였다.

이후 구축한 데이터셋을 활용해 BERT 기반 모델을 학습시켰으며, 모델은 난독화된 코드가 어떤 제어 흐름 구조를 가졌는지, 그리고 어떤 난독화 기법이 적용되었는지를 예측하도록 설계되었다. 구체적으로는 8개의 클래스로 구성된 다중 분류(Multi-class classification)를 통해, switch 사용 여부와 함께 적용된 난독화 기법(없음, Flattening, Opaque, Virtualization 등)을 식별할 수 있도록 하였다.

실험 결과, BERT 모델은 난독화된 코드에서 특징적인 패턴을 학습하여 제어 구조를 비교적 높은 정확도로 예측해냈으며, 이는 향후 난독화 탐지 및 리버스 엔지니어링 자동화 도구로 확장 가능성을 보여준다.



ree



댓글


bottom of page