• 제목/요약/키워드: 바이너리 분석

검색결과 128건 처리시간 0.035초

안드로이드 콘텐츠 저작권 침해 방지를 위한 서버 기반 리소스 난독화 기법의 설계 및 구현 (Design and Implementation of Server-based Resource Obfuscation Techniques for Preventing Copyrights Infringement to Android Contents)

  • 박희완
    • 한국콘텐츠학회논문지
    • /
    • 제16권5호
    • /
    • pp.13-20
    • /
    • 2016
  • 소프트웨어는 대부분 바이너리 파일 포맷으로 배포되기 때문에 역공학 분석이 쉽지 않다. 그러나 안드로이드는 자바를 기반으로 하며 가상머신 위에서 동작한다. 따라서 안드로이드 역시 자바와 유사하게 역공학 도구에 의해서 쉽게 분석될 수 있다. 이 문제를 극복하기 위해서 다양한 난독화 기법이 제안되었다. 안드로이드 환경에서는 안드로이드 SDK에 포함되어 배포되는 난독화 도구인 프로가드(Proguard)가 가장 널리 사용된다. 프로가드는 자바 소스 코드를 역공학 분석으로부터 보호할 수 있다. 그러나 이미지, 사운드, 데이터베이스와 같은 리소스를 보호하는 기능은 가지고 있지 않다. 본 논문에서는 안드로이드 앱의 리소스를 보호할 수 있는 리소스 난독화 기법을 제안하고 구현하였다. 본 논문에서 제안하는 리소스 난독화 기법을 적용하면 효과적으로 리소스 도용을 예방할 수 있을 것으로 기대한다.

머신 러닝 기반 코드 작성자 식별 기술에 대한 조망 (A Survey on Machine Learning-Based Code Authorship Identification)

  • 김현준;안선우;안성관;남기빈;백윤흥
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2021년도 춘계학술발표대회
    • /
    • pp.128-131
    • /
    • 2021
  • 본 논문에서는 특정 코드를 분석하여 해당 코드를 작성한 저자가 누구인지 식별할 수 있는 머신 러닝 기반 코드 저자 식별 기술에 대해 소개한다. 먼저 소스 코드를 분석하여 저자를 확인하는 기법들에 알아볼 것이다. 또한 저자를 식별할 수 있는 정보가 다소 소실된 바이너리 코드를 분석하여 저자를 확인하는 기법을 살펴본 다음, 저자 식별 기법의 향후 연구 방향에 대해 탐색하고자 한다.

역난독화를 위한 바이너리 프로그램 슬라이싱 (Program Slicing for Binary code Deobfuscation)

  • 목성균;전현구;조은선
    • 정보보호학회논문지
    • /
    • 제27권1호
    • /
    • pp.59-66
    • /
    • 2017
  • 해커들이 자신들이 만든 악성코드의 분석을 어렵게 하기 위하여 코드 난독화 기법을 적용하고 있다. 최근의 난독화 기법은 가상화 난독화 기법을 통해 원래의 코드를 바이트코드로 만들고 가상머신이 이를 실행시키는 방식으로, 실행시키기 전에는 원래의 코드를 알 수가 없다. 프로그램 슬라이싱은 프로그램 분석기술 중 하나로 슬라이싱 기준을 정하고 그와 관련된 문장을 추출해내는 기술이다. 본 논문에서는 슬라이싱 기법을 사용하여 난독화를 해제하는 방법을 제시한다.

함수 단위 동적 커널 업데이트를 위한 보안 정책 및 기법의 설계 (Policy and Mechanism for Safe Function-level Dynamic Kernel Update)

  • 박현찬;유혁
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제14권8호
    • /
    • pp.808-812
    • /
    • 2008
  • 최근 시스템의 복잡도가 증가함에 따라 보안 취약점 문제가 더욱 많이 발생하고 있다. 이를 해결하기 위해 보안 패치가 배포되고 있지만, 시스템 서비스의 중단이 필요하고 패치 자체의 안정성이 검증되지 못해 패치의 적용이 늦어지는 문제가 발생한다. 우리는 이러한 문제를 해결하기 위해 업데이트성이 없는 커널을 위한 함수 단위 동적 업데이트 시스템인 DUNK를 설계하였다. DUNK는 서비스 중단 없는 업데이트를 가능케 하고, 보안 기법인 MAFIA를 통해 안전한 업데이트를 수행한다 MAFIA는 바이너리 패치 코드의 접근 행위를 분석함으로써 패치된 함수가 기존 함수의 접근 권한을 상속받도록 하고, 이를 검증하는 기술을 제공한다. 본 논문에서는 DUNK의 설계와 MAFIA의 알고리즘 및 수행에 대해 기술한다.

안전하고 효율적인 Code Reuse Attack 탐지를 위한 ARM 프로세서의 두 가지 명령어 세트를 고려한 Meta-data 생성 기술 (A Meta-data Generation Technique for Efficient and Secure Code Reuse Attack Detection with a Consideration on Two Types of Instruction Set)

  • 허인구;한상준;이진용;백윤흥
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2014년도 추계학술발표대회
    • /
    • pp.443-446
    • /
    • 2014
  • Code reuse attack (CRA)는 기존의 코드 내에서 필요한 코드 조각들 (gadgets)을 모아 indirect branch 명령어들로 잇는 방식으로 공격자가 원하는 악성 프로그램을 구성할 수 있는 강력한 공격 방법이다. 공격자는 자신의 코드를 대상 시스템에 심는 대신 기존의 코드를 이용하기 때문에, 대부분의 범용 운영체제 (OS)가 강제하는 W^X protection 을 무력화할 수 있다. 이러한 CRA 에 대응하기 위하여 다수의 연구들에서 branch 의 trace 를 분석하여 CRA 고유의 특성을 찾아내는 Signature 기반 탐지 기술을 제안하였다. 본 논문에서는 ARM 프로세서 상에서의 CRA 를 대응하기 위한 Signature 기반 탐지 기술을 효율적으로 도울 수 있는 binary 분석 및 meta-data 생성 기술을 제안한다. 특히, 본 논문은 우리의 이전 논문에서 고려 되지 못했던 ARM 의 두 가지 명령어 세트의 특성을 고려하여, 공격자가 어느 명령어 세트를 이용하여 CRA 를 시도하더라도 막아낼 수 있도록 meta-data 를 두 가지 mode 에 대해서 생성하였다. 실험 결과, meta-data 는 본래 바이너리 코드 대비 20.8% 정도의 크기 증가를 일으키는 것으로 나타났다.

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

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

N-gram Opcode를 활용한 머신러닝 기반의 분석 방지 보호 기법 탐지 방안 연구 (A Study on Machine Learning Based Anti-Analysis Technique Detection Using N-gram Opcode)

  • 김희연;이동훈
    • 정보보호학회논문지
    • /
    • 제32권2호
    • /
    • pp.181-192
    • /
    • 2022
  • 신종 악성코드의 등장은 기존 시그니처 기반의 악성코드 탐지 기법들을 무력화시키며 여러 분석 방지 보호 기법들을 활용하여 분석가들의 분석을 어렵게 하고 있다. 시그니처 기반의 기존 연구는 악성코드 제작자가 쉽게 우회할 수 있는 한계점을 지닌다. 따라서 본 연구에서는 악성코드 자체의 특성이 아닌, 악성코드에 적용될 수 있는 패커의 특성을 활용하여, 단시간 내에 악성코드에 적용된 패커의 분석 방지 보호 기법을 탐지하고 분류해낼 수 있는 머신러닝 모델을 구축하고자 한다. 본 연구에서는 패커의 분석 방지 보호 기법을 적용한 악성코드 바이너리를 대상으로 n-gram opcode를 추출하여 TF-IDF를 활용함으로써 피처(feature)를 추출하고 이를 통해 각 분석 방지 보호 기법을 탐지하고 분류해내는 머신러닝 모델 구축 방법을 제안한다. 본 연구에서는 실제 악성코드를 대상으로 악성코드 패킹에 많이 사용되는 상용 패커인 Themida와 VMProtect로 각각 분석 방지 보호 기법을 적용시켜 데이터셋을 구축한 뒤, 6개의 머신러닝 모델로 실험을 진행하였고, Themida에 대해서는 81.25%의 정확도를, VMProtect에 대해서는 95.65%의 정확도를 보여주는 최적의 모델을 구축하였다.

가상 머신 기반으로 난독화된 실행파일의 구조 및 원본의미 추출 동적 방법 (A Dynamic Approach to Extract the Original Semantics and Structure of VM-based Obfuscated Binary Executables)

  • 이성호;한태숙
    • 정보과학회 논문지
    • /
    • 제41권10호
    • /
    • pp.859-869
    • /
    • 2014
  • 최근 몇 년 동안, 난독화 기술은 악성 코드를 보호하기 위해 악용되어 큰 위협이 되고 있다. 특히, 가상 머신 기반으로 난독화된 악성 코드의 경우, 원본 프로그램이 직접적으로 드러나지 않고 가상머신의 의미와 원본 프로그램의 의미가 함께 수행되므로 분석하기 어렵다. 이러한 위협에 대응하기 위하여, 가상 머신 기반으로 난독화된 프로그램을 분석하는 동적 분석 기반의 프레임워크를 제안한다. 첫째, 난독화된 실행파일의 동적 실행 트레이스를 추출한다. 둘째, 동적 실행 트레이스를 중간언어로 변환하고 동적 제어 흐름 그래프를 이용하여 가상 머신의 구조를 추출한다. 결과적으로, 추출된 가상 머신 구조를 이용하여 원본 프로그램의 의미를 추출한다. 본 논문은 최신 상용 난독화 도구로 난독화된 실행파일에서 원본 프로그램을 추측할 수 있는 방안을 제시한다. 개발된 도구는 가상 머신 기반으로 난독화된 프로그램을 이해하고 프로그램 분석 기법을 적용하는 데 활용될 수 있으며 추출된 원본 프로그램의 요약 의미를 이용하여 추가적인 분석을 적용할 수 있을 것으로 기대한다.

DEX와 ELF 바이너리 역공학 기반 안드로이드 어플리케이션 호출 관계 분석에 대한 연구 (Android Application Call Relationship Analysis Based on DEX and ELF Binary Reverse Engineering)

  • 안진웅;박정수;응웬부렁;정수환
    • 정보보호학회논문지
    • /
    • 제29권1호
    • /
    • pp.45-55
    • /
    • 2019
  • DEX 파일과, SO 파일로 알려진 공유 라이브러리 파일은 안드로이드 어플리케이션의 행위를 결정짓는 중요한 구성요소이다. DEX 파일은 Java 코드로 구현된 실행파일이며, SO 파일은 ELF 파일 형식을 따르며 C/C++와 같은 네이티브 코드로 구현된다. Java 영역과 네이티브 코드 영역은 런타임에 상호작용할 수 있다. 오늘날 안드로이드 악성코드는 지속적으로 증가하고 있으며, 악성코드로 탐지되는 것을 회피하기 위한 다양한 우회 기법을 적용한다. 악성코드 분석을 회피하기 위하여 분석이 어려운 네이티브 코드에서 악성 행위를 수행하는 어플리케이션 또한 존재한다. 기존 연구는 Java 코드와 네이티브 코드를 모두 포함하는 함수 호출 관계를 표시하지 못하거나, 여러 개의 DEX을 포함하는 어플리케이션을 분석하지 못하는 문제점을 지닌다. 본 논문에서는 안드로이드 어플리케이션의 DEX 파일과 SO 파일을 분석하여 Java 코드 및 네이티브 코드에서 호출 관계를 추출하는 시스템을 설계 및 구현한다.

무선 인터넷 서비스를 위한 WAP 게이트웨이용 WML 컴파일러의 설계 및 구현 (A Design and Implementation of WML Compiler for WAP Gateway for Wireless Internet Services)

  • 최은정;한동원;임경식
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제7권2호
    • /
    • pp.165-182
    • /
    • 2001
  • 무선 마크업 언어(Wireless Markup Language) 컴파일러는 텍스트로 구성된 문서를 바이너리 문서로 변환, 압축함으로써, 낮은 대역폭을 갖는 무선 선로에서 트래픽을 감소시키며, 낮은 성능을 갖고 있는 이동 단말기에서 브라우징 처리를 간단하게 하는 역할을 한다. 또한 이러한 변환 과정에서 확장 마크업 언어(eXtensible Markup Language)의 well-formedness와 validation 과정을 동시에 처리함으로써, 이동 단말기에서 문서처리 부담을 대폭 경감하는 효과를 가져온다. 본 논문에서 구현한 무선 마크업 언어 컴파일러는 어휘분석기 모듈과 파서 모듈로 구성되어 있는데, 파서 모듈은 파서 생성기를 사용하여 구현하였다. 이는 향후 응용 수준에서 보안 기능을 제공하기 위하여 태그를 확장하거나 무선 마크업 언어의 버전이 업그레이드 될 때에서 변경된 부분에 해당하는 문법만 다시 설계함을써 유연하게 대처할 수 있는 장점을 가지고 있다. 사용된 문법은 LALR(1) context-free 문법으로서, 확장 마크업 언어 1.0과 무선 마크업 언어 1.2의 문서 형태 정의(Document Type Definition)를 기반으로 무선 응용 프로토콜 바이너리 확장 마크업 언어(Wireless Application Protocol Binary XML) 문법을 고려하여 설계되었다. 구현된 컴파일러의 기능을 실험하여 데모하기 위하여 세 가지 방법(수작업, WML 디컴파일러, 노키아 WAP 툴킷)을 사용하였으며, 다양한 태그 조합을 갖는 임의의 130여 개 문서에 대해 실험한 결과, 최대 85%의 압축효과를 얻을 수 있었다. 그러나, 태그나 속성에 비해 일반 문자열 데이타가 많아지면 상대적으로 압축효과가 감소되므로, Hyper Text Markup Language 문서로부터 무선 마크업 언어 문서로 자동 변환된 텍스트를 인코딩하는 경우와 같이 특정한 응용 분야에서는 일반 문자열에 대한 확장 인코딩 기법을 적용할 필요가 있을 수 있다.

  • PDF