KR102514888B1 - 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법 - Google Patents

난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법 Download PDF

Info

Publication number
KR102514888B1
KR102514888B1 KR1020220034088A KR20220034088A KR102514888B1 KR 102514888 B1 KR102514888 B1 KR 102514888B1 KR 1020220034088 A KR1020220034088 A KR 1020220034088A KR 20220034088 A KR20220034088 A KR 20220034088A KR 102514888 B1 KR102514888 B1 KR 102514888B1
Authority
KR
South Korea
Prior art keywords
code
obfuscated
file
call flow
deobfuscated
Prior art date
Application number
KR1020220034088A
Other languages
English (en)
Inventor
이정현
조해현
이동호
Original Assignee
숭실대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 숭실대학교 산학협력단 filed Critical 숭실대학교 산학협력단
Priority to KR1020220034088A priority Critical patent/KR102514888B1/ko
Priority to PCT/KR2022/008971 priority patent/WO2023177020A1/ko
Application granted granted Critical
Publication of KR102514888B1 publication Critical patent/KR102514888B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법에 대한 것이다.
본 발명에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치는 난독화된 APK 파일을 실행시켜 실행된 명령어들을 추출하는 명령어 추출부; 추출된 명령어들을 이용하여 난독화된 APK 파일의 역난독화를 진행하는 역난독화부; 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하고, 비교 결과에 따라 역난독화된 APK 파일의 코드를 더미 코드 형태로 삽입하는 코드 삽입부; 더미 코드 형태의 역난독화된 APK 파일의 코드와 기존 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성하는 호출 흐름 생성부; 및 생성된 새로운 호출 흐름을 이용하여 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름이 추가된 DEX 파일을 생성하는 DEX 파일 생성부를 포함한다.

Description

난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법{DEOBFUSCATION APPARATUS AND METHOD FOR DATA FLOW ANALYSIS OF OBFUSCATED APPLICATIONS}
본 발명은 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 난독화된 APK(Android application package)가 실행되는 호출 명령어를 이용하여 더 많은 민감한 데이터 흐름 분석을 가능하도록 하는 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법에 관한 것이다.
사용자의 민감한 정보를 유출하는 악성코드로부터 사용자를 보호하기 위해서는 악성코드에서 악성 행위를 최대한 빨리 찾아내어 탐지하는 것이 중요하다. 하지만 공격자들은 악성코드에 대한 탐지를 회피하기 위해 다양한 난독화 기법을 사용하여 악성코드의 수명이 길어질 수 있으므로 적시에 악성코드를 분석하는 것이 점점 더 어려워지고 있다.
일반적으로 역난독화 기법은 소프트웨어의 지식재산권을 보호하기 위한 난독화 기법을 무효화하고, 시스템을 공격하거나 시스템을 이용하는 사용자들로부터 중요한 정보를 탈취하는 악의적인 행위로부터 더 빠르게 탐지하기 위해 사용한다.
그러나 종래의 역난독화 솔루션은 난독화된 안드로이드 애플리케이션을 역난독화 하더라도 난독화된 정보를 식별할 수는 있지만 정적분석도구를 통해 분석했을 때 민감한 데이터 정보를 정확하게 찾아내지 못하는 솔루션들이 대부분이다. 난독화가 적용된 애플리케이션은 데이터의 호출 흐름이 정적분석도구에 식별되지 않는 형태로 변형되어 여전히 필요한 부분만 찾아가며 검색해야 하는 형태로 존재한다. 이는 정적분석은 가능하지만 정적분석의 흐름을 정확하게 연결하지 못해 정적분석도구에서는 식별하지 못하는 문제점이 다수 존재한다.
따라서 종래의 기법들과는 다른 역난독화하고 정적오염분석을 더 광범위하게 할 수 있는 역난독화된 정보 호출 흐름을 기존 호출 흐름에 연결해주는 기법이 필요하다.
본 발명의 배경이 되는 기술은 대한민국 등록특허공보 제10-1861341호(2018. 05. 28. 공고)에 개시되어 있다.
본 발명이 이루고자 하는 기술적 과제는 난독화된 안드로이드 애플리케이션 패키지(APK)가 실행되는 호출 명령어를 이용하여 난독화 정보 및 숨겨진 코드를 역난독화하여 더 많은 민감한 데이터 흐름 분석을 가능하도록 하는 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법을 제공하기 위한 것이다.
이러한 기술적 과제를 이루기 위한 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치는, 난독화된 APK(Android application package) 파일을 실행시켜 실행된 명령어들을 추출하는 명령어 추출부; 상기 추출된 명령어들을 이용하여 상기 난독화된 APK 파일의 역난독화를 진행하는 역난독화부; 상기 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하고, 비교 결과에 따라 상기 역난독화된 APK 파일의 코드를 더미 코드 형태로 삽입하는 코드 삽입부; 더미 코드 형태의 역난독화된 APK 파일의 코드와 기존 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성하는 호출 흐름 생성부; 및 상기 생성된 새로운 호출 흐름을 이용하여 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름이 추가된 DEX(Dalvik Executable) 파일을 생성하는 DEX 파일 생성부를 포함한다.
또한, 상기 생성된 DEX 파일을 이용하여 정적오염분석을 수행하는 정적오염분석 수행부를 더 포함할 수 있다.
또한, 상기 코드 삽입부는 상기 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하여 역난독화된 정보가 존재하는지 판단하고, 판단 결과 역난독화된 정보가 존재하는 경우 상기 역난독화된 APK 파일의 코드를 기존 코드 뒤에 더미 코드 형태로 삽입할 수 있다.
또한, 상기 호출 흐름 생성부는 더미 코드 형태의 역난독화된 APK 파일의 코드와 상기 난독화된 APK 파일의 코드를 비교하여 기존의 호출 흐름과 일치하도록 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성할 수 있다.
또한, 상기 DEX 파일 생성부는 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름을 원본 APK 파일의 코드에 추가하여 Classes.dex 파일을 생성할 수 있다.
또한, 본 발명의 다른 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치를 이용한 역난독화 방법은, 난독화된 APK(Android application package) 파일을 실행시켜 실행된 명령어들을 추출하는 단계; 상기 추출된 명령어들을 이용하여 상기 난독화된 APK 파일의 역난독화를 진행하는 단계; 상기 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하고, 비교 결과에 따라 상기 역난독화된 APK 파일의 코드를 더미 코드 형태로 삽입하는 단계; 더미 코드 형태의 역난독화된 APK 파일의 코드와 기존 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성하는 단계; 및 상기 생성된 새로운 호출 흐름을 이용하여 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름이 추가된 DEX(Dalvik Executable) 파일을 생성하는 단계를 포함한다.
또한, 상기 생성된 DEX 파일을 이용하여 정적오염분석을 수행하는 단계를 더 포함할 수 있다.
또한, 상기 더미 코드 형태로 삽입하는 단계는 상기 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하여 역난독화된 정보가 존재하는지 판단하고, 판단 결과 역난독화된 정보가 존재하는 경우 상기 역난독화된 APK 파일의 코드를 기존 코드 뒤에 더미 코드 형태로 삽입할 수 있다.
또한, 상기 새로운 호출 흐름을 생성하는 단계는 더미 코드 형태의 역난독화된 APK 파일의 코드와 상기 난독화된 APK 파일의 코드를 비교하여 기존의 호출 흐름과 일치하도록 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성할 수 있다.
또한, 상기 DEX 파일을 생성하는 단계는 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름을 원본 APK 파일의 코드에 추가하여 Classes.dex 파일을 생성할 수 있다.
이와 같이 본 발명에 따르면, 난독화된 APK가 실행되는 호출 명령어를 이용하여 난독화 정보 및 숨겨진 코드를 역난독화하여 더 많은 민감한 데이터 흐름 분석을 가능하도록 함으로써, 단순하게 역난독화만 진행하는 것이 아닌 원본 호출 흐름을 가질 수 있는 역난독화된 호출 흐름까지 갖도록 하는 효과가 있다.
또한 본 발명에 따르면, 난독화된 APK가 종래의 역난독화 기술로는 대처하지 못하는 호출 흐름을 재작성해줌으로써 원본 흐름을 가질 수 있는 호출 흐름을 찾아줄 수 있어 정적오염분석에서도 활용할 수 있는 뛰어난 분석 기법을 제공할 수 있다.
또한 본 발명에 따르면, 어떠한 난독화 도구로 난독화가 되어 있더라도 역난독화 과정을 거쳐 난독화되었을때보다 더 많은 정보 유출 탐색을 하는데 기여할 수 있을 것으로 기대되며, 악성코드 분석가들로 하여금 악성 모바일 애플리케이션 로직 분석을 위한 시간과 노력을 단축시킬 수 있어 효과적인 대응 및 분석에 기여할 수 있다.
도 1은 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치를 나타낸 블록구성도이다.
도 2는 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치의 역난독화 과정을 나타낸 전체구성도이다.
도 3은 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 방법의 동작 흐름을 도시한 순서도이다.
도 4는 본 발명의 실시 예에 따른 역난독화 방법에서 클래스 역난독화 재작성 과정을 예시적으로 도시한 도면이다.
도 5는 본 발명의 실시 예에 따른 역난독화 방법에서 API 은닉 역난독화 재작성 과정을 예시적으로 도시한 도면이다.
이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다. 이 과정에서 도면에 도시된 선들의 두께나 구성요소의 크기 등은 설명의 명료성과 편의상 과장되게 도시되어 있을 수 있다.
또한 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서, 이는 사용자, 운용자의 의도 또는 관례에 따라 달라질 수 있다. 그러므로 이러한 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
먼저, 도 1 및 도 2를 통해 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치에 대하여 설명한다.
도 1은 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치를 나타낸 블록구성도이고, 도 2는 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치의 역난독화 과정을 나타낸 전체구성도이다.
도 1 및 도 2에서와 같이 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치(100)는, 명령어 추출부(110), 역난독화부(120), 코드 삽입부(130), 호출 흐름 생성부(140), DEX 파일 생성부(150) 및 정적오염분석 수행부(160)를 포함한다.
먼저, 명령어 추출부(110)는 난독화된 APK(Android application package) 파일을 실행시켜 실행된 명령어들을 추출한다.
자세히는, 도 2에 도시된 역난독화 프로세스(Deobfuscation process)의 안드로이드 프로세스(Android Process)를 통해 난독화된 APK 파일을 동적으로 실행시켜 명령어들을 추출한다.
그리고 역난독화부(120)는 명령어 추출부(110)를 통해 추출된 명령어들을 이용하여 난독화된 APK 파일의 역난독화를 진행한다.
즉, 명령어 추출부(110)를 통해 추출된 명령어들을 모니터링하여 역난독화된 정보로 이용한다.
그리고 코드 삽입부(130)는 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하고, 비교 결과에 따라 역난독화된 APK 파일의 코드를 더미 코드 형태로 삽입한다.
자세히는, 코드 삽입부(130)는 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하여 역난독화된 정보가 존재하는지 판단하고, 역난독화된 정보가 존재하는 경우 역난독화된 APK 파일의 코드를 기존 코드 뒤에 더미 코드 형태로 삽입한다.
즉, 명령어 추출부(110)를 통해 추출된 명령어들은 애플리케이션의 동작을 통해 동적으로 로딩되어 추출되는데 명령어들 중 기존 코드와 비교하여 역난독화된 코드는 기존 코드 뒤에 더미 코드 형식으로 추가된다. 이를 통해 난독화된 정보를 식별하고 역난독화된 정보를 식별할 수 있다.
그리고 호출 흐름 생성부(140)는 더미 코드 형태의 역난독화된 APK 파일의 코드와 기존 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성한다.
이때, 호출 흐름 생성부(140)는 더미 코드 형태의 역난독화된 APK 파일의 코드와 난독화된 APK 파일의 코드를 비교하여 기존의 호출 흐름과 일치하도록 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성한다.
즉, 더미 코드로 존재하는 역난독화 코드를 난독화된 코드와 비교하여 기존의 호출 흐름과 일치 할수 있도록 호출을 추가한다.
그리고 DEX 파일 생성부(150)는 호출 흐름 생성부(140)를 통해 생성된 새로운 호출 흐름을 이용하여 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름이 추가된 DEX(Dalvik Executable) 파일을 생성한다.
이때, DEX 파일 생성부(150)는 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름을 원본 APK 파일의 코드에 추가하여 Classes.dex 파일을 생성한다.
자세히는, 원본 APK 파일은 호출 흐름이 난독화 되어 호출 흐름을 정확하게 식별하지 못하여 분석할 수 없다. 따라서 본 발명의 실시 예에서는 역난독화 데이터 흐름(Deobfuscated Data Flow)이라는 모듈을 통해 추출된 역난독화 정보를 더미 코드 형태가 아닌 난독화 되어 끊어진 호출 흐름을 새로 이어주는 호출을 원본 APK 파일의 코드에 추가하여 흐름을 연결 시켜준다.
이때, 새로 만들어진 역난독화된 APK 파일은 기존 APK 파일의 Classes.dex 파일, 역난독화된 APK 파일의 Classes.dex 파일을 갖게된다.
새로 추가된 Classes.dex 파일에서는 기존의 dex 파일 보다 난독화되어져 알 수 없는 정보들이 역난독화되어 더미 코드 형태로 복원되어 있으며, 난독화로 인해 끊어진 호출 흐름이 다시 연결된다.
즉, 본 발명의 실시 예에서 만들어진 APK 파일은 난독화된 정보 및 역난독화된 정보를 Classes.dex 파일에 추가 작성되어 저장하고 있게 된다. 이로 인해, 난독화되어 호출 흐름이 숨겨져 정적오염분석이 불가능했던 문제를 해결할 수 있다.
정적오염분석 수행부(160)는 DEX 파일 생성부(150)에서 생성된 DEX 파일을 이용하여 정적오염분석을 수행한다.
본 발명의 실시 예에서는 보호 대상 코드 혹은 데이터를 역난독화를 진행하여 Classes.dex 파일에 원본 코드를 삽입시킨다. 도 2에 도시된 Static Taint Analysis 부분이 정적오염분석 수행부(160)이며 도 2에 도시된 바와 같이 정적분석을 진행할 때 Classes.dex 파일 내부 호출 흐름을 이용하기 때문에 정적분석도구에서는 기존의 난독화된 호출 흐름이 아닌 새로 지정된 역난독화된 호출 흐름을 갖게 된다.
즉, 본 발명의 실시 예에 따르면 난독화된 안드로이드 애플리케이션을 역난독화한 후 정적오염분석이 불가능한 솔루션을 역난독화된 정보를 찾아 기존 호출 흐름을 새로 지정해줌으로써 정적오염분석이 가능할 수 있게 한다. 안드로이드 애플리케이션에 포함된 난독화 정보들을 역난독화 하여 난독화된 호출 흐름을 파악하고 역난독화된 호출 흐름으로 새로 지정함으로써 역난독화된 정보 또한 원본 흐름과 같은 흐름을 가질 수 있다.
이하에서는 도 3 내지 도 5를 통해 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 방법에 대하여 설명한다.
도 3은 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 방법의 동작 흐름을 도시한 순서도로서, 이를 참조하여 본 발명의 구체적인 동작을 설명한다.
본 발명의 실시 예에 따르면, 먼저 명령어 추출부(110)는 난독화된 APK 파일을 실행시켜 실행된 명령어들을 추출한다(S10).
이때, S10 단계에서는 난독화된 APK 파일을 동적으로 실행시켜 명령어들을 추출한다.
그리고 역난독화부(120)는 S10 단계에서 추출된 명령어들을 이용하여 난독화된 APK 파일의 역난독화를 진행한다(S20).
즉, S10 단계에서 추출된 코드를 모니터링하여 역난독화된 정보로 이용한다.
그리고 코드 삽입부(130)는 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교한다(S30).
이때, 코드 삽입부(130)는 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하여 역난독화된 정보가 존재하는지 판단한다(S40).
S40 단계의 판단 결과 역난독화된 정보가 존재하는 경우 역난독화된 APK 파일의 코드를 기존 코드 뒤에 더미 코드 형태로 삽입한다(S50).
그리고 호출 흐름 생성부(140)는 더미 코드 형태의 역난독화된 APK 파일의 코드와 기존 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성한다(S60).
이때, S60 단계에서는 더미 코드 형태의 역난독화된 APK 파일의 코드와 난독화된 APK 파일의 코드를 비교하여 기존의 호출 흐름과 일치하도록 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성한다.
그리고 DEX 파일 생성부(150)는 S60 단계에서 생성된 새로운 호출 흐름을 이용하여 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름이 추가된 DEX(Dalvik Executable) 파일을 생성한다(S70).
자세히는, 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름을 원본 APK 파일의 코드에 추가하여 Classes.dex 파일을 생성한다.
즉, 옵션별로 역난독화된 결과를 이용하여 역난독화된 정보를 .dex파일의 스말리 코드(smali code)에 재작성함으로써 원본 데이터 흐름을 갖는 .dex File을 생성한다.
이때, 정적오염분석 수행부(160)가 S70 단계에서 생성된 DEX 파일을 이용하여 정적오염분석을 수행할 수도 있다.
자세히는, 정적분석과정은 역난독화 과정의 결과를 통해 원본과 유사한 데이터 흐름을 갖는 .dex File을 이용하여 정적오염분석을 진행한다. 소스에서 싱크(Sink)로 이어지는 흐름 및 Entry-point를 감지하고 Android Manifest.xml 파일과 Classes.dex 파일, layout.xml 파일로부터 정보를 추출하여 분석을 진행한다. 난독화 되어있는 데이터 흐름은 정적오염분석에서 찾을 수 없는 반면, 역난독화를 진행한 .dex file은 원본 Data Flow과 유사한 결과를 도출해낼 수 있다.
본 발명의 실시 예에 따르면 난독화로 인해 탐지하지 못하였던 소스, 싱크 데이터 유출까지 찾아낼 수 있다.
도 4는 본 발명의 실시 예에 따른 역난독화 방법에서 클래스 역난독화 재작성 과정을 예시적으로 도시한 도면이고, 도 5는 본 발명의 실시 예에 따른 역난독화 방법에서 API 은닉 역난독화 재작성 과정을 예시적으로 도시한 도면이다.
본 발명을 평가하기 위해 애플리케이션을 구현하고 DexGuard, DexProtector로 3가지 난독화 기술을 적용하는 실험을 수행했다.
도 4 및 도 5에서 원본 애플리케이션 Smali code 부분은 각각 a로 표시하고, 난독화된 애플리케이션의 Smali code 부분은 각각 b로 표시하며, 역난독화한 Smali code 결과는 각각 c로 표시했다. 도 4는 클래스 난독화가 적용되어 정보유출을 찾는 것이 불가능했던 애플리케이션을 역난독화 과정을 거쳐 숨겨진 클래스를 찾아내어 .dex 파일에 재작성 함으로써 정보유출을 탐지하였다.
그리고, 도 5는 Hide Access 옵션이 적용되어 API가 숨겨져 정보유출을 찾는 것이 불가능했던 애플리케이션을 역난독화과정을 거쳐 숨겨진 정보가 v0 테이블에 관리가 되어진다는 흐름을 파악하여 smali code에 재작성해줌으로써 역난독화된 .dex 파일을 생성하여 정보유출을 탐지하였다.
상술한 바와 같이, 본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 방법은 난독화된 APK가 실행되는 호출 명령어를 이용하여 난독화 정보 및 숨겨진 코드를 역난독화하여 더 많은 민감한 데이터 흐름 분석을 가능하도록 함으로써, 단순하게 역난독화만 진행하는 것이 아닌 원본 호출 흐름을 가질 수 있는 역난독화된 호출 흐름까지 갖도록 할 수 있다.
또한 본 발명의 실시 예에 따르면, 난독화된 APK가 종래의 역난독화 기술로는 대처하지 못하는 호출 흐름을 재작성해줌으로써 원본 흐름을 가질 수 있는 호출 흐름을 찾아줄 수 있어 정적오염분석에서도 활용할 수 있는 뛰어난 분석 기법을 제공할 수 있다.
또한 본 발명의 실시 예에 따르면, 어떠한 난독화 도구로 난독화가 되어 있더라도 역난독화 과정을 거쳐 난독화되었을때보다 더 많은 정보 유출 탐색을 하는데 기여할 수 있을 것으로 기대되며, 악성코드 분석가들로 하여금 악성 모바일 애플리케이션 로직 분석을 위한 시간과 노력을 단축시킬 수 있어 효과적인 대응 및 분석에 기여할 수 있다.
본 발명의 실시 예에 따른 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 하여 설명되었으나 이는 예시적인 것에 불과하며, 당해 기술이 속하는 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호범위는 아래의 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
100 : 역난독화 장치 110 : 명령어 추출부
120 : 역난독화부 130 : 코드 삽입부
140 : 호출 흐름 생성부 150 : DEX 파일 생성부
160 : 정적오염분석 수행부

Claims (10)

  1. 난독화된 APK(Android application package) 파일을 실행시켜 실행된 명령어들을 추출하는 명령어 추출부;
    상기 추출된 명령어들을 이용하여 상기 난독화된 APK 파일의 역난독화를 진행하는 역난독화부;
    상기 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하고, 비교 결과에 따라 상기 역난독화된 APK 파일의 코드를 더미 코드 형태로 삽입하는 코드 삽입부;
    더미 코드 형태의 역난독화된 APK 파일의 코드와 기존 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성하는 호출 흐름 생성부; 및
    상기 생성된 새로운 호출 흐름을 이용하여 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름이 추가된 DEX(Dalvik Executable) 파일을 생성하는 DEX 파일 생성부를 포함하고,
    상기 호출 흐름 생성부는,
    더미 코드 형태의 역난독화된 APK 파일의 코드와 상기 난독화된 APK 파일의 코드를 비교하여 기존의 호출 흐름과 일치하도록 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성하고,
    상기 DEX 파일 생성부는,
    난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름을 원본 APK 파일의 코드에 추가하여 Classes.dex 파일을 생성하고,
    상기 DEX 파일 생성부는, 역난독화된 정보를 .dex 파일의 스말리 코드(smali code) 에 재작성함으로써 원본 데이터 흐름을 갖는 .dex 파일을 생성하는 것인, 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치.
  2. 제1항에 있어서,
    상기 생성된 DEX 파일을 이용하여 정적오염분석을 수행하는 정적오염분석 수행부를 더 포함하는 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치.
  3. 제1항에 있어서,
    상기 코드 삽입부는,
    상기 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하여 역난독화된 정보가 존재하는지 판단하고,
    판단 결과 역난독화된 정보가 존재하는 경우 상기 역난독화된 APK 파일의 코드를 기존 코드 뒤에 더미 코드 형태로 삽입하는 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치.
  4. 삭제
  5. 삭제
  6. 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치를 이용한 역난독화 방법에 있어서,
    난독화된 APK(Android application package) 파일을 실행시켜 실행된 명령어들을 추출하는 단계;
    상기 추출된 명령어들을 이용하여 상기 난독화된 APK 파일의 역난독화를 진행하는 단계;
    상기 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하고, 비교 결과에 따라 상기 역난독화된 APK 파일의 코드를 더미 코드 형태로 삽입하는 단계;
    더미 코드 형태의 역난독화된 APK 파일의 코드와 기존 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성하는 단계; 및
    상기 생성된 새로운 호출 흐름을 이용하여 난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름이 추가된 DEX(Dalvik Executable) 파일을 생성하는 단계를 포함하고,
    상기 새로운 호출 흐름을 생성하는 단계는,
    더미 코드 형태의 역난독화된 APK 파일의 코드와 상기 난독화된 APK 파일의 코드를 비교하여 기존의 호출 흐름과 일치하도록 난독화 호출 흐름을 재조합하여 새로운 호출 흐름을 생성하고,
    상기 DEX 파일을 생성하는 단계는,
    난독화로 끊어진 호출 흐름을 새로 이어주는 호출 흐름을 원본 APK 파일의 코드에 추가하여 Classes.dex 파일을 생성하고,
    상기 DEX 파일을 생성하는 단계는,
    역난독화된 정보를 .dex 파일의 스말리 코드(smali code) 에 재작성함으로써 원본 데이터 흐름을 갖는 .dex 파일을 생성하는 것인, 역난독화 방법.
  7. 제6항에 있어서,
    상기 생성된 DEX 파일을 이용하여 정적오염분석을 수행하는 단계를 더 포함하는 역난독화 방법.
  8. 제6항에 있어서,
    상기 더미 코드 형태로 삽입하는 단계는,
    상기 난독화된 APK 파일과 역난독화된 APK 파일의 코드를 비교하여 역난독화된 정보가 존재하는지 판단하고,
    판단 결과 역난독화된 정보가 존재하는 경우 상기 역난독화된 APK 파일의 코드를 기존 코드 뒤에 더미 코드 형태로 삽입하는 역난독화 방법.
  9. 삭제
  10. 삭제
KR1020220034088A 2022-03-18 2022-03-18 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법 KR102514888B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220034088A KR102514888B1 (ko) 2022-03-18 2022-03-18 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법
PCT/KR2022/008971 WO2023177020A1 (ko) 2022-03-18 2022-06-23 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220034088A KR102514888B1 (ko) 2022-03-18 2022-03-18 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR102514888B1 true KR102514888B1 (ko) 2023-03-27

Family

ID=85799811

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220034088A KR102514888B1 (ko) 2022-03-18 2022-03-18 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법

Country Status (2)

Country Link
KR (1) KR102514888B1 (ko)
WO (1) WO2023177020A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101861341B1 (ko) * 2017-05-30 2018-05-28 올댓소프트 코. 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101833220B1 (ko) * 2017-07-25 2018-02-28 올댓소프트 코. 애플리케이션 코드의 역난독화 검증 장치 및 이를 이용한 애플리케이션 코드의 역난독화 검증 방법
KR102203200B1 (ko) * 2019-05-13 2021-01-14 고려대학교 산학협력단 역난독화 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101861341B1 (ko) * 2017-05-30 2018-05-28 올댓소프트 코. 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Steven Arzt et al., "FlowDroid: Precise Context, Flow, Field, Object-sensitive and Lifecycle-aware Taint Analysis for Android Apps"(2014.06.)* *
Yoni Moses and Yaniv Mordekhay, "Android app deobfuscation using static-dynamic cooperation"(2018.10.)* *

Also Published As

Publication number Publication date
WO2023177020A1 (ko) 2023-09-21

Similar Documents

Publication Publication Date Title
CN109002721B (zh) 一种信息安全漏洞的挖掘分析方法
US9195476B2 (en) System and method for aggressive self-modification in dynamic function call systems
CN109583200B (zh) 一种基于动态污点传播的程序异常分析方法
US7409718B1 (en) Method of decrypting and analyzing encrypted malicious scripts
Choi et al. A static API birthmark for Windows binary executables
WO2018070404A1 (ja) マルウェア解析装置、マルウェア解析方法、及び、マルウェア解析プログラムが格納された記録媒体
Park et al. Detecting common modules in Java packages based on static object trace birthmark
CN114021142A (zh) 一种安卓应用程序漏洞检测方法
Chen et al. Automatic Mining of Security-Sensitive Functions from Source Code.
TWI695287B (zh) 用於保護碼的方法、電腦程式產品和系統
KR102514888B1 (ko) 난독화된 애플리케이션의 데이터 흐름 분석을 위한 역난독화 장치 및 그 방법
JP6395986B2 (ja) 鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラム
Fukuda et al. A dynamic birthmark from analyzing operand stack runtime behavior to detect copied software
US11836258B2 (en) Detecting exploitable paths in application software that uses third-party libraries
US11256786B2 (en) Method to secure a software code
Jurn et al. A survey of automated root cause analysis of software vulnerability
JP2024502973A (ja) 悪性コード静的分析のための実行ファイルのアンパッキングシステム及び方法
VieiraB et al. SEMEO: A Semantic Equivalence Analysis Framework for Obfuscated Android Applications
Hu et al. SEMEO: A Semantic Equivalence Analysis Framework for Obfuscated Android Applications
KR102557007B1 (ko) 바이너리 파일 재구성 방법 및 그 장치
Liu et al. A software birthmark based on system call and program data dependence
Mantu et al. Control Flow Integrity Based on Controlled Channel
Ismael et al. Investigation Malware Analysis Depend on Reverse Engineering
CN112486880A (zh) 基于数据库存取接口的usb存储装置
Aldous et al. A posteriori taint-tracking for demonstrating non-interference in expressive low-level languages

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant