• 제목/요약/키워드: Binary Static Analysis

검색결과 32건 처리시간 0.023초

이진 코드의 정적 제어 흐름 분석 (Static Control Flow Analysis of Binary Codes)

  • 김기태;김제민;유원희
    • 한국콘텐츠학회논문지
    • /
    • 제10권5호
    • /
    • pp.70-79
    • /
    • 2010
  • 바이너리 코드 수준에서 정적인 프로그램 분석을 수행한다. 소스 코드가 아닌 바이너리 코드 수준에서 분석을 수행하는 이유는 일반적으로 로컬 컴퓨터에 설치하는 실행 파일은 소스 코드 없이 단지 바이너리로 된 실행 파일만 주어지는 경우가 대부분이기 때문이다. 또한 정적으로 분석을 수행하려는 이유는 정적인 제어 흐름 분석을 통해 프로그램이 수행 시 어떤 동작을 수행하게 될지를 수행 전에 파악하기 위해서이다. 본 논문에서는 바이너리 실행 파일로부터 함수간의 실행 순서 및 제어 흐름 등의 정보를 표현할 수 있는 실행 흐름 그래프를 작성하여 사용자가 바이너리 파일의 실행 흐름과 위험한 함수의 호출 여부를 동시에 파악할 수 있도록 하며, 그래프를 통해 바이너리 파일의 분석을 용이하게 한다. 또한 실행 흐름에 대한 자동 탐색 방법을 제공하여 수행될 프로그램의 안전성을 보장하고, 수행 전에 외부에서 다운받아 설치할 프로그램이 안전한지를 판단할 수 있도록 한다.

이진 코드의 정적 실행 흐름 추적을 위한 프레임워크 설계 및 구현 (Design and Implementation of Framework for Static Execution Flow Trace of Binary Codes)

  • 백영태;김기태;전상표
    • 한국컴퓨터정보학회논문지
    • /
    • 제16권6호
    • /
    • pp.51-59
    • /
    • 2011
  • 국내에는 바이너리 코드에 대한 분석 기술이 많이 부족한 상태이다. 일반적으로 컴퓨터에 설치되는 실행 파일은 소스 코드 없이 단지 바이너리로 된 실행 파일만 주어지는 경우가 대부분이다. 따라서 위험하거나 알 수 없는 동작이 수행되는 경우가 발생할 수 있다. 따라서 이 논문에서는 바이너리 수준에서 정적으로 프로그램 분석을 수행할 수 있는 프레임워크를 설계 및 구현한다. 이 논문에서는 바이너리 실행 파일로부터 실행 순서 및 제어 흐름 등의 정보를 표현할 수 있는 제어 흐름 그래프를 작성하여 실행 흐름과 위험한 함수의 호출 여부를 동시에 파악하고 개발된 프레임워크를 통해 바이너리 파일에 대한 분석을 용이하게 한다.

자체 수정 코드를 탐지하는 정적 분석방법의 LLVM 프레임워크 기반 구현 및 실험 (An LLVM-Based Implementation of Static Analysis for Detecting Self-Modifying Code and Its Evaluation)

  • 유재일;최광훈
    • 정보보호학회논문지
    • /
    • 제32권2호
    • /
    • pp.171-179
    • /
    • 2022
  • 자체 수정 코드(Self-Modifying-Code)란 실행 시간 동안 스스로 실행 코드를 변경하는 코드를 말한다. 이런 기법은 특히 악성코드가 정적 분석을 우회하는 데 악용된다. 따라서 이러한 악성코드를 효과적으로 검출하려면 자체 수정 코드를 파악하는 것이 중요하다. 그동안 동적 분석 방법으로 자체 수정 코드를 분석해왔으나 이는 시간과 비용이 많이 든다. 만약 정적 분석으로 자체 수정 코드를 검출할 수 있다면 악성코드 분석에 큰 도움이 될 것이다. 본 논문에서는 LLVM IR로 변환한 바이너리 실행 프로그램을 대상으로 자체 수정 코드를 탐지하는 정적 분석 방법을 제안하고, 자체 수정 코드 벤치마크를 만들어 이 방법을 적용했다. 본 논문의 실험 결과 벤치마크 프로그램을 컴파일로 변환한 최적화된 형태의 LLVM IR 프로그램에 대해서는 설계한 정적 분석 방법이 효과적이었다. 하지만 바이너리를 리프팅 변환한 비정형화된 LLVM IR 프로그램에 대해서는 자체 수정 코드를 검출하기 어려운 한계가 있었다. 이를 극복하기 위해 바이너리를 리프팅 하는 효과적인 방법이 필요하다.

바이너리 분석을 통한 UNIX 커널 기반 File System의 TOCTOU Race Condition 탐지 (Detecting TOCTOU Race Condition on UNIX Kernel Based File System through Binary Analysis)

  • 이석원;김문회;오희국
    • 정보보호학회논문지
    • /
    • 제31권4호
    • /
    • pp.701-713
    • /
    • 2021
  • Race Condition은 둘 이상의 프로세스가 하나의 공통 자원에 대해 입력이나 조작이 동시에 일어나 의도치 않은 결과를 가져오는 취약점이다. 해당 취약점은 서비스 거부 또는 권한 상승과 같은 문제를 초래할 수 있다. 소프트웨어에서 취약점이 발생하면 관련된 정보를 문서화하지만 종종 취약점의 발생 원인을 밝히지 않거나 소스코드를 공개하지 않는 경우가 있다. 이런 경우, 취약점을 탐지하기 위해서는 바이너리 레벨에서의 분석이 필요하다. 본 논문은 UNIX 커널기반 File System의 Time-Of-Check Time-Of-Use (TOCTOU) Race Condition 취약점을 바이너리 레벨에서 탐지하는 것을 목표로 한다. 지금까지 해당 취약점에 대해 정적/동적 분석 기법의 다양한 탐지 기법이 연구되었다. 기존의 정적 분석을 이용한 취약점 탐지 도구는 소스코드의 분석을 통해 탐지하며, 바이너리 레벨에서 수행한 연구는 현재 거의 전무하다. 본 논문은 바이너리 정적 분석 도구인 Binary Analysis Platform (BAP)를 통해 Control Flow Graph, Call Graph 기반의 File System의 TOCTOU Race Condition 탐지 방법을 제안한다.

ARM 아키텍처 기반 바이너리 정적 분석을 위한 기준 주소 분석 도구 (A Base Address Analysis Tool for Static Analysis of ARM Architecture-Based Binary)

  • 강지훈;류재철
    • 정보보호학회논문지
    • /
    • 제26권5호
    • /
    • pp.1185-1189
    • /
    • 2016
  • 현대 사회에서는 임베디드 장비의 수가 급증하고 있다. 그러나 급증하는 임베디드 장비와 동시에 악용 가능한 취약점과 백도어 등이 계속해서 발견되고 있어 이에 대한 분석의 필요성이 끊임없이 제기되고 있는 실정이다. 이에 따라 본 논문에서는 임베디드 장비 펌웨어의 정적 분석 환경 구축을 위해 필요한 기준 주소 정보를 추출하는 도구를 개발하고, 이를 사용하여 정적 분석 환경을 구축함으로써 펌웨어 내부 문자열의 파싱과 참조를 가능하게 하고, 증가된 함수식별 개수 등을 통해 도구의 타당성을 증명한다.

바이너리 정적 분석 기반 Out-of-Bounds Read 취약점 유형 탐지 연구 (A Out-of-Bounds Read Vulnerability Detection Method Based on Binary Static Analysis)

  • 유동민;김문회;오희국
    • 정보보호학회논문지
    • /
    • 제31권4호
    • /
    • pp.687-699
    • /
    • 2021
  • 프로그램에서 취약점이 발생하면 그에 대한 정보가 문서화되어 공개된다. 그러나 일부 취약점의 경우 발생한 원인과 그 소스코드를 공개하지 않는다. 이러한 정보가 없는 상황에서 취약점을 찾기 위해서는 바이너리 수준에서 코드를 분석해야 한다. 본 논문에서는 Out-of-bounds Read 취약점 유형을 바이너리 수준에서 찾는 것을 목표로 한다. 바이너리에서 취약점을 탐지하는 기존의 연구는 주로 동적 분석을 이용한 도구로 발표되었다. 동적 분석의 경우 프로그램 실행 정보를 바탕으로 취약점을 정확하게 탐지할 수 있지만, 모든 실행 경로를 탐지하지 못할 가능성이 있다. 모든 프로그램 경로를 분석하기 위해서는 정적 분석을 사용해야 한다. 기존의 정적 도구의 경우 소스코드 기반의 도구들이며, 바이너리에 수준의 정적 도구는 찾기 어렵다. 본 논문에서는 바이너리 정적 분석을 통해 취약점을 탐지하며, 메모리 구조를 모델링하는 방법으로 Heap, Stack, Global 영역의 취약점을 탐지한다. 실험 결과 기존의 탐지도구인 BAP_toolkit과 비교하였을 때 탐지 정확도 및 분석 시간에서 의미 있는 결과를 얻었다.

정적 주요 경로 API 시퀀스를 이용한 소프트웨어 유사성 검사 (Detecting Software Similarity Using API Sequences on Static Major Paths)

  • 박성수;한환수
    • 정보과학회 논문지
    • /
    • 제41권12호
    • /
    • pp.1007-1012
    • /
    • 2014
  • 소스코드가 없이 실행코드만으로 소프트웨어 간의 유사성을 비교하기위해 소프트웨어 버스마크를 이용한다. 소프트웨어 버스마크란 그 소프트웨어만의 고유한 특징으로 소프트웨어 식별에 사용된다. 본 논문에서는 정적 주요경로 상의 API 함수 시퀀스를 이용하여 소프트웨어 간의 유사성을 산정하는 방법을 제시한다. 바이너리코드에서 소프트웨어의 특성이 뚜렷하게 나타나는 API 함수만을 사용하여 소프트웨어 유사성 검사의 신뢰성을 높이고, 정적 분석 기법에 동적 분석 기법의 특징을 적용하여 강인성을 높이는 방법을 모색하였다. 정적 분석으로 바이너리코드의 주요경로를 추출하고, API 함수 시퀀스 간의 효과적인 유사성 측정을 위해 서열정렬 알고리즘인 Smith-Waterman 알고리즘을 이용한 유사성 척도를 제안한다. 버스마크의 신뢰성을 평가하기 위하여 같은 프로그램의 여러 버전을 대상으로 실험하였고, 강인성을 평가하기 위해 오픈소스 소프트웨어의 소스코드를 다양한 컴파일환경으로 바꾸어 실험하였다.

동적 링크를 활용한 특정 함수 호출 (Exploit the method according to the function call)

  • 옥근호;강영진;이훈재
    • 한국정보통신학회:학술대회논문집
    • /
    • 한국정보통신학회 2016년도 춘계학술대회
    • /
    • pp.755-758
    • /
    • 2016
  • 본 논문에서는 바이너리 프로그램에서 함수가 호출될 시 바이너리 내에서 어떠한 방법으로 함수를 호출하는지 설명한다. 그리고 그 함수를 호출할시 필요한 요소들과 C언어 파일의 동적링크 컴파일 과정과 그 요소들을 이어주는 '링커'라는 개념을 설명하고, 정적링크와 동적링크를 차이점을 비교 분석한다. 또한 동적 링크를 활용하여 취약점을 공격하는 Return To Dynamic Linker에 대해 간략히 서술하며 테스트바이너리에 시험해본다.

  • PDF

프로그램의 구조와 상수 값을 이용하는 바이너리 실행 파일의 차이점 분석 (Analyzing Differences of Binary Executable Files using Program Structure and Constant Values)

  • 박희완;최석우;서선애;한태숙
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제35권7호
    • /
    • pp.452-461
    • /
    • 2008
  • 바이너리 코드의 차이점 분석은 보안 패치와 같은 매우 유사한 두 프로그램 사이의 차이점을 구별해 주는 방법이다. 이전의 연구에서는 분석을 위하여 프로그램의 구조 또는 명령어의 세부 사항만을 각각 이용하였다. 프로그램의 구조를 이용하는 차이점 분석 방법은 제어 흐름의 변화는 잘 탐지해 낼 수 있지만, 버퍼 크기 변화와 같은 상수 값의 변화는 잘 찾아낼 수 없다. 명령어 기반의 차이점 분석 방법은 세부적인 값의 변화는 발견할 수 있으나 명령어 재배치와 같은 컴파일러에 의해 생성되는 불필요한 차이점을 결과로 낸다는 단점이 있다. 이 연구에서는 프로그램 구조를 이용한 비교 분석 방법에 상수 값의 변화를 함께 추적할 수 있는 방법을 제안하고 바이너리 차이점 분석 도구를 구현하였다. 구현된 도구는 윈도 보안 업데이트를 이용하여 평가하였다. 실험 결과 제안된 방법은 구조적인 차이점 분석과 같이 빠른 속도로 구조적인 변화를 찾아낼 뿐 아니라 상수 값의 변화까지 추적할 수 있다는 것을 보였다.

바이너리 코드의 정적 제어 흐름 분석을 위한 프레임워크 (Framework for Static Control Flow Analysis of Binary Codes)

  • 백영태;김기태
    • 한국컴퓨터정보학회:학술대회논문집
    • /
    • 한국컴퓨터정보학회 2010년도 제42차 하계학술발표논문집 18권2호
    • /
    • pp.67-70
    • /
    • 2010
  • 본 논문은 바이너리 코드 수준에서 정적인 프로그램 분석을 수행하는 프레임워크를 설계 및 구현한다. 정적으로 바이너리 코드 수준에서 분석을 수행하려는 이유는 일반적으로 컴퓨터에 설치되는 실행 파일은 소스 코드 없이 단지 바이너리로 된 실행 파일만 주어지는 경우가 대부분이고, 정적 제어 흐름 분석을 통해 수행 전에 동작을 파악하기 위해서이다. 본 논문에서는 바이너리 실행 파일로부터 실행 순서 및 제어 흐름 등의 정보를 표현할 수 있는 제어 흐름 그래프를 작성하여 바이너리 파일의 실행 흐름과 위험한 함수의 호출 여부를 동시에 파악할 수 있도록 하며, 그래프 시각화를 통해 바이너리 파일의 분석을 용이하게 한다. 또한 실행 흐름에 대한 자동 탐색 방법을 제공한다.

  • PDF