안드로이드 애플리케이션은 악성코드를 삽입한 후 재서명하여 배포하는 리패키징 공격에 취약하다. 이러한 공격을 통해 사용자의 사생활 정보나 개인정보 유출 등의 피해가 자주 발생하고 있는 실정이다. 모든 안드로이드 애플리케이션은 사용자가 직접 작성한 메소드와 API로 구성된다. 이중 플랫폼의 리소스에 접근하며 실제 애플리케이션의 기능적인 특징을 나타내는 것은 API이고, 사용자가 작성한 메소드 역시 API를 이용하며 기능적 특징을 나타낸다. 본 논문에서는 악성 애플리케이션이 주로 활용하는 민감한 API들을 분석 대상으로 하여 악성애플리케이션이 어떤 행위를 하고, 어떤 API 를 사용하는지 사전에 식별할 수 있는 분석 기법을 제안한다. 사용하는 API를 토대로 API의 특성정보를 기반으로 나이브 베이즈 분류 기법을 적용하여 비슷한 기능을 하는 API에 대해 기계 학습하도록 한다. 이렇게 학습된 결과를 토대로 악성 애플리케이션이 주로 사용하는 API를 분류하고, 애플리케이션의 악성 위험 정도에 대한 정량적 판단 기준을 제시한다. 따라서, 제안 기법은 모바일 애플리케이션의 취약점 정도를 정량적으로 제시해 줌으로써 모바일 애플리케이션 개발자들이 앱 보안성을 사전에 파악하는데 많은 기여를 할 수 있을 것으로 기대된다.
안드로이드 애플리케이션은 악성코드를 삽입한 후 재서명하여 배포하는 리패키징 공격에 취약하다. 이러한 공격을 통해 사용자의 사생활 정보나 개인정보 유출 등의 피해가 자주 발생하고 있는 실정이다. 모든 안드로이드 애플리케이션은 사용자가 직접 작성한 메소드와 API로 구성된다. 이중 플랫폼의 리소스에 접근하며 실제 애플리케이션의 기능적인 특징을 나타내는 것은 API이고, 사용자가 작성한 메소드 역시 API를 이용하며 기능적 특징을 나타낸다. 본 논문에서는 악성 애플리케이션이 주로 활용하는 민감한 API들을 분석 대상으로 하여 악성애플리케이션이 어떤 행위를 하고, 어떤 API 를 사용하는지 사전에 식별할 수 있는 분석 기법을 제안한다. 사용하는 API를 토대로 API의 특성정보를 기반으로 나이브 베이즈 분류 기법을 적용하여 비슷한 기능을 하는 API에 대해 기계 학습하도록 한다. 이렇게 학습된 결과를 토대로 악성 애플리케이션이 주로 사용하는 API를 분류하고, 애플리케이션의 악성 위험 정도에 대한 정량적 판단 기준을 제시한다. 따라서, 제안 기법은 모바일 애플리케이션의 취약점 정도를 정량적으로 제시해 줌으로써 모바일 애플리케이션 개발자들이 앱 보안성을 사전에 파악하는데 많은 기여를 할 수 있을 것으로 기대된다.
Android applications are inherently vulnerable to a repackaging attack such that malicious codes are easily inserted into an application and then resigned by the attacker. These days, it occurs often that such private or individual information is leaked. In principle, all Android applications are co...
Android applications are inherently vulnerable to a repackaging attack such that malicious codes are easily inserted into an application and then resigned by the attacker. These days, it occurs often that such private or individual information is leaked. In principle, all Android applications are composed of user defined methods and APIs. As well as accessing to resources on platform, APIs play a role as a practical functional feature, and user defined methods play a role as a feature by using APIs. In this paper we propose a scheme to analyze sensitive APIs mostly used in malicious applications in terms of how malicious applications operate and which API they use. Based on the characteristics of target APIs, we accumulate the knowledge on such APIs using a machine learning scheme based on Naive Bayes algorithm. Resulting from the learned results, we are able to provide fine-grained numeric score on the degree of vulnerabilities of mobile applications. In doing so, we expect the proposed scheme will help mobile application developers identify the security level of applications in advance.
Android applications are inherently vulnerable to a repackaging attack such that malicious codes are easily inserted into an application and then resigned by the attacker. These days, it occurs often that such private or individual information is leaked. In principle, all Android applications are composed of user defined methods and APIs. As well as accessing to resources on platform, APIs play a role as a practical functional feature, and user defined methods play a role as a feature by using APIs. In this paper we propose a scheme to analyze sensitive APIs mostly used in malicious applications in terms of how malicious applications operate and which API they use. Based on the characteristics of target APIs, we accumulate the knowledge on such APIs using a machine learning scheme based on Naive Bayes algorithm. Resulting from the learned results, we are able to provide fine-grained numeric score on the degree of vulnerabilities of mobile applications. In doing so, we expect the proposed scheme will help mobile application developers identify the security level of applications in advance.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 API를 악성 애플리케이션 관점에서 분석한다. 악성 애플리케이션이 어떤 행위를 하고, 어떤 API 를 사용하는지 분석하고 사용하는 API를 토대로 API의 특성정보를 이용하여, 머신러닝 알고리즘을 통해 비슷한 기능을 하는 API를 학습하고 분류하고자 한다.
본 논문에서는 모바일 악성 애플리케이션 API 분류를 위해 악성 애플리케이션의 행위 및 주로 사용되어 지고 있는 API를 분석하였다. 분석한 애플리케이션은 총 194개로 해당 정보는 Contagio[13]와 VirusShare[14]의 데이터를 기반으로 구성된다.
본 논문에서는 악성 애플리케이션이 어떤 행위를 하고, 어떤 API 를 사용하는지 분석하고 어떤 API를 사용하는지 분석을 시도하였다. 이를 토대로 API의 특성정보를 이용하여 전처리 과정, 벡터구성, 검증의 단계를 통한 나이브 베이즈 분류법을 통해 비슷한 기능을 하는 API를 학습하고 분류하였다.
가설 설정
나이브 베이즈 분류[9][10]는 나이브 베이즈 정리를 근거로 각 특성들의 확률을 파라미터로 하여 부류를 결정 하는 기법이다. 나이브 베이즈 분류에서는 모든 특성 값은 서로 독립임을 가정하며, 파라미터의 추정은 최대 우도 방법(maximum likelihood estimation)을 사용한다.
제안 방법
APK 상에서 정적으로 추출된 API 정보를 활용하기 위해 API 분류기 중 정적 코드 추출기법을 구현한다. 해당 기법을 구현하기 위해, 안드로이드 애플리케이션 패키지 파일을 unzip 하고, AsmDex[11] 라이브러리를 사용하여 DEX 파일을 파싱한다.
telephony.TelephonyManager 클래스의 getDeviceId()를 사용하여 사용자의 데이터를 수집하여 유출한다.
위에서 구성된 벡터를 기반으로 나이브 베이즈 분류를 수행한다. 나이브 베이즈 분류를 수행하기 위해 학습 대상의 벡터를 선정하며, 학습대상 벡터를 구성하는 각각의 특성에 대한 조건부 확률을 구한다. Table 3.
분석한 애플리케이션은 총 194개로 해당 정보는 Contagio[13]와 VirusShare[14]의 데이터를 기반으로 구성된다. 데이터 수집 후 악성 애플리케이션을 분석하여, APKtool[15]과 같은 도구를 통해 정적 관점에서 어떤 API를 사용하는지 파악하였다. 또한 동적 관점에서 악성코드의 실제 동작을 분석하고, Anubis[16]와 같은 샌드박스 기반 방법을 이용하여 애플리케이션의 행위 분석을 시도하였다.
데이터 수집 후 악성 애플리케이션을 분석하여, APKtool[15]과 같은 도구를 통해 정적 관점에서 어떤 API를 사용하는지 파악하였다. 또한 동적 관점에서 악성코드의 실제 동작을 분석하고, Anubis[16]와 같은 샌드박스 기반 방법을 이용하여 애플리케이션의 행위 분석을 시도하였다.
본 논문에서 제안하는 악성 애플리케이션 기반 API 분류방법을 검증하기 위하여 제안 기법을 구현한다. 개발환경으로 Windows 7 운영체제를 사용하였으며, 개발언어로는 java, python을 사용하였다.
본 논문에서는 API를 악성 애플리케이션 관점에서 분석한다. 악성 애플리케이션이 어떤 행위를 하고, 어떤 API 를 사용하는지 분석하고 사용하는 API를 토대로 API의 특성정보를 이용하여, 머신러닝 알고리즘을 통해 비슷한 기능을 하는 API를 학습하고 분류하고자 한다.
앞서 설명한 정적 코드 추출법과, 악성 API 분류법을 적용하여 악성 애플리케이션 기반 API 분류기를 설계한다.
본 논문에서는 악성 애플리케이션이 어떤 행위를 하고, 어떤 API 를 사용하는지 분석하고 어떤 API를 사용하는지 분석을 시도하였다. 이를 토대로 API의 특성정보를 이용하여 전처리 과정, 벡터구성, 검증의 단계를 통한 나이브 베이즈 분류법을 통해 비슷한 기능을 하는 API를 학습하고 분류하였다.
APK 상에서 정적으로 추출된 API 정보를 활용하기 위해 API 분류기 중 정적 코드 추출기법을 구현한다. 해당 기법을 구현하기 위해, 안드로이드 애플리케이션 패키지 파일을 unzip 하고, AsmDex[11] 라이브러리를 사용하여 DEX 파일을 파싱한다. 파싱 후 파싱된 코드 중 invoke 되는 코드, 즉 메소드 호출 관련 명령어만을 추출한다.
대상 데이터
본 논문에서는 모바일 악성 애플리케이션 API 분류를 위해 악성 애플리케이션의 행위 및 주로 사용되어 지고 있는 API를 분석하였다. 분석한 애플리케이션은 총 194개로 해당 정보는 Contagio[13]와 VirusShare[14]의 데이터를 기반으로 구성된다. 데이터 수집 후 악성 애플리케이션을 분석하여, APKtool[15]과 같은 도구를 통해 정적 관점에서 어떤 API를 사용하는지 파악하였다.
수집된 악성 애플리케이션은 랜섬웨어, 애드웨어, 트로이목마, 스파이웨어로 구성 된다. Table 1.
이론/모형
해당 기법을 구현하기 위해, python 의 nltk 라이브러리 내부에 구현되어있는 naivebayes 모듈을 사용한다. naivebayes 모듈을 이용하여 4.2의 악성 애플리케이션 API 분류법을 구현한다. Fig.
나이브 베이즈 분류법을 이용한 악성 API의 분류를 위해 애플리케이션의 DEX (Dalvik Executable)[7]로부터 코드를 추출한다. 애플리케이션의 실제적인 코드를 가지고 있는 것은 DEX 파일이며 DEX 파일은 Table 2.
악성 애플리케이션의 API 분류를 위해 나이브 베이즈 분류법을 이용한 API 분류기법을 구현한다. 해당 기법을 구현하기 위해, python 의 nltk 라이브러리 내부에 구현되어있는 naivebayes 모듈을 사용한다.
악성 애플리케이션의 API 분류를 위해 나이브 베이즈 분류법을 이용한다. Table 3.
성능/효과
또한 분류된 API를 기반으로 통계를 낸 결과, 전체 API 부류 중에 약 14.1%를 차지하는 것을 알 수 있었다.
애드웨어는 사용자에게 광고와 같은 특정 홈페이지를 노출함으로써 동작을 방해하고, 개인정보를 수집하고 유출하는 등의 역할을 한다. 본 논문에서 수집한 데이터를 기반으로 분석한 결과 openConnection(), getDeviceID(), getLastKnownLocation() 과 같은 API를 사용하고 있다. openConnection()은 getjava.
랜섬웨어는 스마트폰 사용자의 동작을 방해하고 중요 파일을 암호화하는 등의 행위를 하여 데이터 복호화 조건으로 금전등을 요구하는 악성 애플리케이션을 의미한다. 본 논문에서 수집한 애플리케이션 데이터를 기반으로 분석 한 결과 acquire(), release(), newWakeLock()와 같은 API 가 주로 사용되었다. 각각의 API 는 모두 android.
해당 과정을 통해 악성 애플리케이션이 주로 사용하는 API와 같은 부류의 API를 유추하여 분류 할 수 있었고, 실제로 해당 부류의 API는 전체에서 약 14.1%의 비중을 차지하고 있었다.
후속연구
향후에는 본 논문에서 제안한 분류기법의 정확성을 더욱더 높이며, 분류한 API를 토대로 새로운 프레임워크 혹은 안전한 배포과정의 설계 등을 제공할 수 있을 것으로 기대된다.
질의응답
핵심어
질문
논문에서 추출한 답변
안드로이드 애플리케이션은 무엇에 취약한가?
안드로이드 애플리케이션은 악성코드를 삽입한 후 재서명하여 배포하는 리패키징 공격에 취약하다. 이러한 공격을 통해 사용자의 사생활 정보나 개인정보 유출 등의 피해가 자주 발생하고 있는 실정이다.
안드로이드 애플리케이션의 구성은 무엇인가?
이러한 공격을 통해 사용자의 사생활 정보나 개인정보 유출 등의 피해가 자주 발생하고 있는 실정이다. 모든 안드로이드 애플리케이션은 사용자가 직접 작성한 메소드와 API로 구성된다. 이중 플랫폼의 리소스에 접근하며 실제 애플리케이션의 기능적인 특징을 나타내는 것은 API이고, 사용자가 작성한 메소드 역시 API를 이용하며 기능적 특징을 나타낸다.
안드로이드 애플리케이션의 리패키징 공격은 어떤 피해를 주는가?
안드로이드 애플리케이션은 악성코드를 삽입한 후 재서명하여 배포하는 리패키징 공격에 취약하다. 이러한 공격을 통해 사용자의 사생활 정보나 개인정보 유출 등의 피해가 자주 발생하고 있는 실정이다. 모든 안드로이드 애플리케이션은 사용자가 직접 작성한 메소드와 API로 구성된다.
참고문헌 (17)
W. Enck, D. Octeau, P. McDaniel, and S. Chaudhuri, "A Study of Android Application Security," Proceedings of the 20th USENIX conference on Security, p.21-21, Aug. 2011.
J. H. Jung, J. Y. Kim, H. C. Lee, and J. H. Yi, "Repackaging Attack on Android Banking Applications and Its Countermeasures," Journal of Wireless Personal Communications, vol.73, pp. 1421-1437, June 2013.
T. J. Cho, G. B. Na, D. G. Lee, and J. H. Yi "Account Forgery and Privilege Escalation Attacks on Android Home Cloud Devices," Advanced Science Letters, vol. 21, pp. 381-386, Mar. 2015.
C. Collberg and J. Nagra. "Surreptitious Software: Obfuscation, Watermarking, and Tamper Proofing for Software Protection," Addison Wesley Professional, 2009.
C .Collberg, C.Thomborson, and D.Low, "A Taxonomy of Obfuscating Transformations," Technical report 148, Department of computer science, the University of Auckland, Auckland, New Zealand, 1997.
F. Zhang, H. Huang, S, Zhu, D. Wu, and P. Liu, "ViewDroid: towards obfuscation- resilient mobile application repackaging detection," Proceedings of the 2014 ACM conference on Security and privacy in wireless & mobile networks, pp.25-36, July 2014.
DEX File Format, http://source.android.com/devices/tech/dalvik/dex-format. html
Android API Reference, http://developer.android.com/reference/
A. McCallum and K. Nigam, "A comparison of event models for naive bayes text classification," AAAI-98 Workshop on Learning for Text Categorization, Vol. 752, pp. 41-48, 1998.
D. Pavlov, R. Balasubramanyan, S. Kapur, and J. Parikh, "Document preprocessing for naive Bayes classification and clustering with mixture of multinomials," Proceedings of the tenth ACM SIGKDD international conference on Knowledge discovery and data mining, pp.829-834, Aug. 2004.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.