• 제목/요약/키워드: Code Obfuscation

검색결과 54건 처리시간 0.021초

유전 알고리즘에 기반한 코드 난독화를 위한 인라인 적용 기법 (A Technique to Apply Inlining for Code Obfuscation based on Genetic Algorithm)

  • 김정일;이은주
    • 한국IT서비스학회지
    • /
    • 제10권3호
    • /
    • pp.167-177
    • /
    • 2011
  • Code obfuscation is a technique that protects the abstract data contained in a program from malicious reverse engineering and various obfuscation methods have been proposed for obfuscating intention. As the abstract data of control flow about programs is important to clearly understand whole program, many control flow obfuscation transformations have been introduced. Generally, inlining is a compiler optimization which improves the performance of programs by reducing the overhead of calling invocation. In code obfuscation, inlining is used to protect the abstract data of control flow. In this paper, we define new control flow complexity metric based on entropy theory and N-Scope metric, and then apply genetic algorithm to obtain optimal inlining results, based on the defined metric.

제어 흐름 난독화를 효과적으로 수행하기 위한 전략 (A strategy for effectively applying a control flow obfuscation to programs)

  • 김정일;이은주
    • 한국컴퓨터정보학회논문지
    • /
    • 제16권6호
    • /
    • pp.41-50
    • /
    • 2011
  • 악의적인 소프트웨어 역공학으로부터 프로그램이 가지는 코드를 보호하기 위해서 코드 난독화가 제안되었다. 이것은 기존에 존재하는 프로그램 코드를 어렵게 변환시키는 것으로 프로그램 코드에 대한 악의적인 정적 분석을 어렵게 만든다. 코드 난독화는 난독화 목적에 따라 레이아웃, 데이터, 제어 난독화로 분류되어진다. 이 중 제어 난독화는 프로그램이 가지는 제어 흐름에 대한 추상적인 정보를 보호하는 것으로 다양한 종류의 개별 제어 흐름 난독화 변환이 제안되었지만, 이를 효과적으로 적용할 수 있는 방법은 제안되지 않았다. 본 논문에서는 제어 흐름 난독화 변환을 프로그램에 효과적으로 적용할 수 있는 난독화 전략을 제안하고, 실험을 통해서 제안한 난독화 전략의 효용을 보였다.

VMProtect 동작원리 분석 및 자동 역난독화 구현 (VMProtect Operation Principle Analysis and Automatic Deobfuscation Implementation)

  • 방철호;석재혁;이상진
    • 정보보호학회논문지
    • /
    • 제30권4호
    • /
    • pp.605-616
    • /
    • 2020
  • 난독화 기술은 프로그램의 기능성은 그대로 유지하면서 자료구조, 제어흐름 등 내부 로직을 변형함으로써 프로그램의 분석을 지연시키는 기술이다. 그러나 이러한 난독화 기술을 악성코드에 적용함으로써 안티바이러스 소프트웨어의 악성코드 탐지율을 저하시키는 사례가 빈번하게 발생하고 있다. 소프트웨어 지적재산권을 보호하기 위하여 적용되는 난독화 기술이 역으로 악성코드에 적용됨으로써 악성코드 탐지율을 저해할 뿐만 아니라 이의 분석을 어렵게 하여 악성코드의 기능성 파악에도 어려움을 주게 되므로 난독화가 적용된 코드를 원본에 가깝게 복원할 수 있는 역난독화 기술의 연구 또한 꾸준히 지속 되어야 한다. 본 논문에서는 상용 난독화 도구 중 대중적으로 널리 알려져 있는 도구인 VMProtect 3.4.0에서 제공하는 세부 난독화 기술 중 Pack the Output File, Import Protection의 옵션이 적용되어 난독화 된 코드의 특징을 분석하고 이의 역난독화 알고리즘을 제시하고자 한다.

가상화 기반 난독화 및 역난독화를 위한 코드 자동 분석 기술 (Code Automatic Analysis Technique for Virtualization-based Obfuscation and Deobfuscation)

  • 김순곤
    • 한국정보전자통신기술학회논문지
    • /
    • 제11권6호
    • /
    • pp.724-731
    • /
    • 2018
  • 코드 난독화는 프로그램을 해석하거나 위조 또는 변조 방지를 목적으로 프로그램을 쉽게 이해할 수 없도록하는 기술이다. 역난독화는 난독화된 프로그램을 입력으로 받아 원 소스의 의미를 역공학 기술을 통해 분석하는 기술이다. 본 논문은 가상화 기반 환경에서 바이너리 코드에 대한 난독화 및 역난독화 기술에 대한 분석 연구이다. VMAttack를 기반으로 정적 코드분석, 동적 코드분석, 최적화 기법에 대한 구체적인 분석을 통해 난독화 및 역난독화 기술을 구체적으로 분석한 후 실레 바이너리 코드에 대해 난독화와 역난독화 기술을 실험하였다. 본 논문를 통하여 다양한 가상화, 난독화에 대한 연구를 진행할 수 있을 것으로 기대된다. 특히, 스택-기반 가상 머신에서 연구한 것을 레지스터-기반 가상 머신에서 실행될 수 있게끔 기능을 추가하여 연구를 시도해볼 수 있을 것이라 기대된다.

소스 코드 난독화 기법에 의한 Clang 정적 분석 도구의 성능 영향 분석 (Analysis of Detection Ability Impact of Clang Static Analysis Tool by Source Code Obfuscation Technique)

  • 진홍주;박문찬;이동훈
    • 정보보호학회논문지
    • /
    • 제28권3호
    • /
    • pp.605-615
    • /
    • 2018
  • 사물 인터넷 시장 규모의 급격한 성장에 따라 임베디드 시스템에서 가장 많이 쓰이는 언어인 C/C++ 언어의 사용도 증가하고 있다. C/C++ 언어의 코드 품질을 향상시키고 개발 비용을 절감시키기 위해 소프트웨어 개발 전반부에서 수행 가능한 소프트웨어 검증기법인 정적 분석을 사용하는 것이 좋다. 많은 프로그램들이 정적 분석을 사용하여 소프트웨어의 안전성을 검증하고 있으며 많은 정적 분석 도구들이 사용 및 연구되고 있다. 본 논문에서는 Clang 정적 분석도구를 사용하여 검증된 시험 코드에 대한 보안 약점 검출 성능을 확인한다. 또한 소스 코드 난독화 기법인 구획 난독화, 데이터 난독화, 제어 흐름 난독화 기법이 각각 적용된 시험 코드에 대한 정적 분석 결과와 원본 시험 코드에 대한 정적 분석 결과를 비교하여 소스 코드 난독화 기법에 따른 Clang 정적 분석 도구의 성능 영향을 분석한다.

가상화 난독화 기법이 적용된 실행 파일 분석 및 자동화 분석 도구 구현 (Analysis of Virtualization Obfuscated Executable Files and Implementation of Automatic Analysis Tool)

  • 석재혁;김성훈;이동훈
    • 정보보호학회논문지
    • /
    • 제23권4호
    • /
    • pp.709-720
    • /
    • 2013
  • 가상화 난독화 기법은 보호하고자 하는 코드영역에 가상화 기법을 적용함으로써 코드의 분석을 어렵게 하는 기법이다. 상용 가상화 난독화 도구로 보호된 프로그램은 가상화된 코드가 원본코드로 복원되는 시점이 존재하지 않고 다양한 난독화 기법으로 가상화 영역이 보호되어 있어 분석하기 어렵기로 잘 알려져 있다. 그러나 이러한 가상화 난독화 기법이 악성코드 보호에 악용되면서 악성코드의 분석 및 대응에 어려움을 겪고 있는 현실이다. 본 논문에서는 상용 가상화 난독화 기법의 핵심 요소들을 자동으로 추출하고 실행 과정을 트레이스 할 수 있는 도구를 구현함으로써 상용 가상화 난독화 도구로 보호되어 있는 악성코드의 분석 및 대응에 활용할 수 있도록 한다. 이를 위하여 가상화 난독화 기법의 기본 구조와 동작 과정을 정리하고, 상용 가상화 난독화 기법으로 보호된 실행 파일을 대상으로 프로그램 분석 기법 중 하나인 Equation Reasoning System을 활용한 분석 결과를 제시한다. 또한 상용 가상화 난독화 도구로 보호되어 있는 실행 파일에서 가상화 구조를 추출하고 프로그램 실행 순서를 도출할 수 있는 자동화 분석 도구를 구현한다.

대입문 병합을 이용한 효율적인 자바 난독화 기법 (An Effective Java Obfuscation Technique Using Assignment Statements Merging)

  • 이경호;박희완
    • 한국컴퓨터정보학회논문지
    • /
    • 제18권10호
    • /
    • pp.129-139
    • /
    • 2013
  • 자바 바이트코드는 타겟 머신이 아닌 자바 가상머신 상에서 동작된다. 이러한 자바 바이트코드는 바이너리 코드보다 고수준 표현을 사용하고 있어서 대부분의 자바 바이트 코드는 다시 자바 소스 파일로 바꿀 수도 있다. 난독화란 기본적으로 코드를 이해하기 어렵게 만드는 기술을 의미한다. 자바 코드의 보호를 위해서는 난독화가 사용될 수 있다. 그러나 프로그램을 복잡하게 만드는 난독화 기법은 대부분 프로그램의 크기를 증가시키고 실행 속도 또한 느려지게 만드는 원인이 된다. 본 논문에서는 대입문 병합 기법을 이용한 효율적인 자바 난독화 기법을 새롭게 제안한다. 대입문 병합 기법이 적용되면 대입문에 부작용(side effects)이 추가되어 대입문을 이해하기 어렵게 된다. 추가적으로 바이트코드의 크기가 줄어드는 장점도 있다.

실행 파일 형태로 복원하기 위한 Themida 자동 역난독화 도구 구현 (Implementation of the Automated De-Obfuscation Tool to Restore Working Executable)

  • 강유진;박문찬;이동훈
    • 정보보호학회논문지
    • /
    • 제27권4호
    • /
    • pp.785-802
    • /
    • 2017
  • 악성코드를 이용한 사이버 위협이 꾸준히 증가함에 따라 많은 보안 및 백신 관련 업체들이 악성코드 분석 및 탐지에 많은 노력을 기울이고 있다. 그러나 소프트웨어의 분석이 어렵도록 하는 난독화 기법이 악성코드에 적용되어 악성코드에 대한 빠른 대응이 어려운 실정이다. 특히 상용 난독화 도구는 빠르고 간편하게 변종 악성코드를 생성해 낼 수 있기 때문에 악성코드 분석가가 새로운 변종 악성코드의 출현 속도에 대응할 수 없도록 한다. 분석가가 빠르게 악성코드의 실제 악성행위를 분석하도록 하기 위해서는 난독화를 해제하는 역난독화 기술이 필요하다. 본 논문에서는 상용 난독화 도구인 Themida가 적용된 소프트웨어를 역난독화하는 일반적인 분석방법론을 제안한다. 먼저 Themida를 이용하여 난독화가 적용된 실행파일을 분석하여 알아낸 Themida의 동작 원리를 서술한다. 다음으로 DBI(Dynamic Binary Instrumentation) 프레임워크인 Pintool을 이용하여 난독화된 실행파일에서 원본 코드 및 데이터 정보를 추출하고, 이 원본 정보들을 활용하여 원본 실행파일에 가까운 형태로 역난독화할 수 있는 자동화 분석 도구 구현 결과에 대해 서술한다. 마지막으로 원본 실행파일과 역난독화한 실행파일의 비교를 통해 본 논문의 자동화 분석 도구의 성능을 평가한다.

비주얼 C++소스 코드를 위한 obfuscator 구현 (Implementation of an Obfuscator for Visual C++ Source Code)

  • 장혜영;조성제
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제35권2호
    • /
    • pp.59-69
    • /
    • 2008
  • 자동화된 obfuscation은 보안 목적으로 코드를 이해하기 어렵게 만들어 역공학 공격을 방어하는데 가장 효과적인 방식이라고 알려져 있다. 본 논문에서는 역공학 공격과 같은 소프트웨어 지적재산권의 침해로부터 마이크로소프트사의 비주얼 C++ 소스 프로그램을 보호하기 위한 obfuscation 기법을 제안하고 구현하였다. 즉, 원본 비주얼 C++ 소스 프로그램을 기능은 동일하지만 이해하기에는 훨씬 힘든 또 다른 프로그램으로 변환시켜 주는 도구인 코드 obfuscator를 구현하였다. 비주얼 C++ 소스를 다루기 위해 ANTLR이라는 파서 생성기를 도입하여, '주석 제거', '식별자 스크램블', '변수 분할', '배열 중첩', '클래스 삽입', '루프 조건 확장'. '부가 피연산자 삽입', '무의미 코드 삽입' 등의 변환 방식들을 구현하였다. 또한, 복잡도, 복원력, 비용 등의 측면에서 본 obfuscator의 성능과 유효성을 평가하였다. 원본 소스 코드와 비교하여 실험한 결과, 변환된 소스 코드가 실행시간 오버헤드를 일부 유발시키긴 하지만 프로그램 보호에는 효과적임을 알 수 있었다.

난독화에 강인한 안드로이드 앱 버스마킹 기법 (Android App Birthmarking Technique Resilient to Code Obfuscation)

  • 김동진;조성제;정영기;우진운;고정욱;양수미
    • 한국통신학회논문지
    • /
    • 제40권4호
    • /
    • pp.700-708
    • /
    • 2015
  • 소프트웨어 버스마크는 한 프로그램이 보유한 고유한 특징으로 해당 프로그램을 식별하는데 사용될 수 있다. 소프트웨어 버스마크 기반으로 자바 프로그램의 도용을 탐지하는 연구들이 진행되어 왔다. 안드로이드 앱의 경우, 앱 보호를 위해 난독화 방법이 제공되고 있다. 그러나 공격자들도 자신이 도용한 프로그램을 감추기 위해 난독화를 적용하기도 한다. 특정 앱에 난독화를 적용하면 앱의 특징정보가 변경될 수 있다. 따라서 난독화를 고려한 버스마크 기반의 앱 도용 탐지 기법에 대한 연구가 필요하다. 본 논문에서는 난독화에 강인한 안드로이드 앱 버스마크 및 이에 기반한 앱 도용 탐지 기법을 제안한다. 몇몇 난독화 도구들을 분석하여 효과적인 버스마크로 메서드의 매개변수 및 반환값의 자료형을 선정하였고, 비교 대상 앱들로부터 해당 버스마크를 추출하여 이들 간의 유사도를 측정하였다. 여러 앱들을 대상으로 난독화 적용 전/후의 앱 유사성을 분석한 결과, 제안한 버스마크가 난독화가 적용된 앱에 대한 도용 탐지에도 효과적임을 확인하였다.