• 제목/요약/키워드: 난독화 알고리즘

검색결과 20건 처리시간 0.04초

임베디드 시스템의 보안성 향상을 위한 LLVM 기반의 소스코드 난독화 도구 설계 (Design of Source Code Obfuscation Tool based LLVM to improve security in Embedded System)

  • 하재현;곽동규
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2022년도 추계학술발표대회
    • /
    • pp.201-203
    • /
    • 2022
  • 임베디드 시스템이 일상생활 및 각종 산업에 밀접하게 연관되어 개인 정보 및 국가 기술 등 지적 자산에 대한 보안의 필요성이 나타나고 있다. 이러한 문제점은 임베디드 시스템에 들어가는 소프트웨어의 역공학으로부터 초래된다. 따라서 본 논문은 소스 코드에 대해 제어 흐름 평탄화라는 난독화 알고리즘을 설계하는 방법을 제안한다. 이는 독자적으로 작성된 난독화 알고리즘이기 때문에 오픈 소스로 공개되어져 있는 다른 난독화 도구들에 비해 안전한 특징을 가진다. 제어 흐름 평탄화는 프로그램의 기능을 유지하면서 소스 코드의 정적 분석을 어렵게 하는 기법으로, 데이터를 탈취하려는 악의적인 행위를 사전에 예방할 수 있다. 본 논문에서 제안하는 제어 흐름 평탄화 알고리즘은 하나의 기본 블록으로 이루어진 단순한 소스 코드를 여러 개의 기본 블록으로 분할하고, 조건문을 통해 연결하는 방법을 사용하여 알고리즘의 복잡도를 높였다. 이처럼 새롭게 작성된 Pass를 통해 소스코드 난독화를 적용시켜 임베디드 시스템의 보안성을 향상시킬 수 있다.

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

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

유전 알고리즘을 이용한 코드 난독화에서의 효율적 함수 호출 인라인 기법 (Effective Technique for Inlining Function Calls in Code Obfuscation Using Genetic Algorithm)

  • 김정일;이은주
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2010년도 한국컴퓨터종합학술대회논문집 Vol.37 No.1(B)
    • /
    • pp.53-58
    • /
    • 2010
  • 코드 난독화 기법 중의 하나인 인라인(Inline)은 코드의 복사를 통하여 함수의 호출 구조를 파괴하여서 코드의 복원과 이해를 어렵게 만든다. 하지만 적절한 전략 없이 인라인 기법을 적용하게 되면, 프로그램 성능이 저하되며 난독화의 결과도 기대 이하일 가능성이 존재한다. 따라서 지나친 성능의 저하를 막으면서 결과적으로 코드의 복원과 이해를 최대한 어렵게 하기 위한 인라인 수행 전략이 필요하다. 이를 위하여 본 논문에서는 정적 함수 호출 그래프를 기반으로 인라인의 적용 여부를 유전 알고리즘을 사용하여 결정하도록 한다. 그리고 인라인 전후의 효용을 보여주기 위하여 정보이론 및 제어 흐름의 복잡도에 기반하여 전체 프로그램의 복잡도를 정의하였다. 마지막으로 해당 기법의 효용을 실험을 통해 보였다.

  • PDF

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의 옵션이 적용되어 난독화 된 코드의 특징을 분석하고 이의 역난독화 알고리즘을 제시하고자 한다.

난독화 알고리즘을 이용한 자바 역컴파일 방지기법에 관한 연구 (A Study on the Java Decompilation-Preventive Method by Obfuscating Algorithm)

  • 안화수
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2007년도 춘계학술발표대회
    • /
    • pp.1457-1458
    • /
    • 2007
  • 자바 언어의 중요한 특징 중의 하나는 어떤 기계에서든지 실행될 수 있다는 점이다. 이러한 플랫폼에 대한 독립성은 자바 프로그램이 바이트 코드 형태로 배포되기 때문에 가능한 일이다. 바이트 코드는 특정 기계에 종속되지 않고 자바 가상 머신(Java Virtual Machine:JVM)를 지원하는 곳이면 어디에서든지 실행 가능하다. 그런데 바이트 코드로 번역된 코드에는 자바 소스 코드의 정보가 그대로 포함되어 있는데, 이로 인해서 바이트 코드에서 자바 소스코드로의 역컴파일(Decompilation)이 쉽게 이루어진다는 취약점이 있다. 본 논문에서는 자바 바이트 코드의 난독화 기법을 살펴보고, Code Encryption Algorithm을 이용해서 역컴파일 하기 어려운 형태로 만드는 기술인 코드 난독처리(Code Obfuscation) 기법을 제안하였다.

  • PDF

안드로이드를 위한 난독화 도구 프로가드(Proguard) 성능 평가 (An Evaluation of the Proguard, Obfuscation Tool for Android)

  • 박희완;박희광;고광만;최광훈;윤종희
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2012년도 춘계학술발표대회
    • /
    • pp.730-733
    • /
    • 2012
  • 소프트웨어는 대부분 바이너리 형태로 배포되기 때문에 역공학 분석이 쉽지 않다. 그러나 안드로이드는 자바를 기반으로 한다. 즉, 자바 언어로 프로그래밍하고 생성된 클래스 파일을 dx라는 도구를 사용하여 안드로이드용 달빅(Dalvik) 코드로 변환한다. 따라서 안드로이드 역시 자바의 취약점을 가지고 있고, 자바용으로 개발된 역공학 도구에 의해서 쉽게 분석될 수 있다. 한편으로 자바 프로그램의 저작권을 보호하고 핵심 알고리즘이 노출되지 않도록 다양한 난독화 도구들이 개발되었다. 그 중에서 안드로이드 SDK에 포함되어 함께 배포되고 있기 때문에 널리 사용되고 있는 프로가드(Proguard)에 대해서 대표적인 기능 및 사용법, 프로가드로 난독화된 코드가 원본과 비교하여 어떻게 변경되었는지 평가한다. 그리고 프로가드가 가지고 있는 한계를 알아보고, 이것을 극복할 수 있는 방법을 모색한다.

리플렉션과 문자열 암호화를 이용한 안드로이드 API 난독화 도구 (An Android API Obfuscation Tool using Reflection and String Encryption)

  • 이주혁;박희완
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제4권1호
    • /
    • pp.23-30
    • /
    • 2015
  • 자바 리플렉션은 프로그램 구성 요소들을 조사하여 호출 및 조작할 수 있는 자바 언어의 기능이다. 이를 이용하면 보다 많은 호출 단계를 거치는 구조로 변형되기에 난독화 효과를 얻을 수 있다. 그러나 이를 이용할 때, 프로그램 자체의 구성 요소 이름이 문자열 형태로 노출된다. 본 논문에서는 안드로이드 애플리케이션에서 리플렉션을 적용하여 난독화하고, 이때 노출되는 문자열들을 비즈네르 암호화 알고리즘으로 은닉하여 정적분석을 방해하는 기법 및 도구를 제시한다. 실험 결과 소스 코드의 전체적인 복잡도를 증가시키는 데 효과가 있었다. 또한 서버와 로컬 기반의 두 가지 복호화 방법을 제공하는데, 이는 애플리케이션의 실행속도에 영향을 미치기 때문에 API의 중요도에 따라 선택할 수 있다.

스트리밍 영상을 위한 효율적 스크램블링 방법 연구 (A Study on Efficient Scrambling for Streaming Video)

  • 최종석;김보승;신용태
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2011년도 한국컴퓨터종합학술대회논문집 Vol.38 No.1(D)
    • /
    • pp.128-130
    • /
    • 2011
  • 디지털 미디어의 발전과 네트워크의 발전에 따라 영상 콘텐츠에 대한 사용이 늘어나고 있다. 이에 따라 저작물의 불법적 사용이 증가되고 이를 막기 위한 기법의 일환인 스크램블링 방법이 사용되고 있다. 스크램블링은 계산 비용과 에너지 소모를 줄이고 디지털 저작권 관리의 사용제어에 대한 요구사항을 만족시키기 위해 사용된다. 스크램블링은 일반적으로 동영상 압축의 변환 계수에 대한 헤더부분만을 암호화하거나 블록으로 나누고 변경과 회전을 통하여 난독화를 발생시킴으로 저작물을 대한 보호한다. 본 논문은 영상을 프레임 단위로 적출하여 영상 프레임이 가지는 색상정보 값에 난독화를 한 후 블럭 암호화 알고리즘을 적용한 스크램블링 기법을 제안한다.

안드로이드 환경에서 자바 리플렉션과 동적 로딩을 이용한 코드 은닉법 (A Code Concealment Method using Java Reflection and Dynamic Loading in Android)

  • 김지윤;고남현;박용수
    • 정보보호학회논문지
    • /
    • 제25권1호
    • /
    • pp.17-30
    • /
    • 2015
  • 본 논문은 기존에 널리 사용되는 바이트코드(bytecode) 중심의 안드로이드 어플리케이션 코드 난독화 방법과 달리 임의의 안드로이드 어플리케이션의 DEX 파일 자체를 추출하여 암호화하고, 암호화한 파일을 임의의 폴더에 저장한 후 코드를 수행하기 위한 로더 앱을 만드는 방법을 제시한다. 이벤트 처리 정보를 은닉하기 위하여, 로더 앱 내부의 암호화된 DEX 파일은 원본 코드와 Manifest 정보 일부를 포함한다. 로더 앱의 Manifest는 원본 앱의 Manifest 정보 중에서 암호화된 클래스에 포함되지 않은 정보만을 기재하였다. 제안기법을 사용시, 첫째로 공격자는 백신을 우회하기 위해 난독화된 코드를 포함한 악성코드 제작이 가능하고, 둘째로 프로그램 제작자의 입장에서는 제안기법을 이용하여 저작권 보호를 위해 핵심 알고리즘을 은폐하는 어플리케이션 제작이 가능하다. 안드로이드 버전 4.4.2(Kitkat)에서 프로토타입을 구현하고 바이러스 토탈을 이용하여 악성코드 난독화 능력을 점검해서 제안 기법의 실효성을 보였다.

VMProtect의 역공학 방해 기능 분석 및 Pin을 이용한 우회 방안 (Analysis of Anti-Reversing Functionalities of VMProtect and Bypass Method Using Pin)

  • 박성우;박용수
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제10권11호
    • /
    • pp.297-304
    • /
    • 2021
  • 상용 난독화 도구(프로텍터)들은 소프트웨어 역공학 과정에서 프로그램의 분석을 지연시키고 방해하는 난독화 기술 및 역공학 방해(안티리버싱) 기법을 적용시킴으로써 소프트웨어의 동작 과정을 분석하는데 어려움을 발생시키는데 목적이 있다. 특히, 가상화 탐지와 안티디버깅 기능 같은 경우 분석 도구가 발견되면 정상적인 실행 흐름을 벗어나 프로그램을 종료시킨다. 본 논문에서는 상용 난독화 도구(프로텍터) 중 하나인 VMProtect 3.5.0을 통해 Debugger Detection, Virualization Tools Detection 옵션을 적용시킨 실행 파일의 안티리버싱 기법을 분석하고 Pin을 이용한 우회 방안을 제안한다. 또한, 적용된 안티리버싱 기법을 분석하는 과정에서 Amti-VM 기술과 Anti-DBI 기술에 의해 프로그램이 종료되는 문제가 발생하기 때문에 API 분석을 통해 특정 프로그램 종료 루틴을 알아내어 적용된 안티리버싱 기법의 위치를 예상하고 위치를 바탕으로 안티리버싱 기법 우회 방안 알고리즘 순서도를 작성하였다. 실험에 사용된 소프트웨어들의 버전의 차이로부터 발생하는 호환성 문제, 기법의 변화 등을 고려하여 최신 버전의 소프트웨어(VMProtect, Windows, Pin)에서 Pin 자동화 우회 코드를 작성하고 실험을 진행하여 성공적으로 우회됨을 확인하였다. 제안된 분석 방안을 개선하여 기법이 제시되지 않은 난독화 도구의 안티리버싱 기법을 분석하고 우회 방안을 찾아낼 수 있다.