자마린은 대표적인 크로스 플랫폼 개발 프레임워크로, 안드로이드, iOS, 또는 Windows Phone등의 여러 플랫폼을 위한 모바일 앱을 C#으로 작성하게 해준다. 모바일 앱 개발자들은 기존의 C# 코드를 재사용하고 여러 플랫폼간에 상당한 코드를 공유할 수 있어 개발 시간과 유지보수 비용을 줄일 수 있다. 한편, 멀웨어 작성자들 또한 자마린을 이용하여 악성 앱 제작 시간과 비용을 최소화하면서 더 많은 플랫폼에 악성 앱을 전파할 수 있다. 이에 대응하기 위해서 자마린으로 작성된 멀웨어를 분석하고 탐지하는 방안이 필요하다. 그러나 현재 자마린으로 작성된 앱에 대한 분석 방법에 대한 연구가 많이 이루어지고 있지 않다. 이에 본 논문에서는 자마린으로 개발된 안드로이드 앱의 구조를 파악하고 앱 코드를 정적으로 분석하는 기법을 제안한다. 또한, 코드 난독화가 적용된 앱에 대해서도 정적으로 역공학하는 방법을 보인다. 자마린으로 개발된 앱은 자바 바이트코드, C# 기반의 DLL 라이브러리, C/C++ 기반의 네이티브 라이브러리로 구성되어 있으며, 이들 서로 다른 유형의 코드들에 대한 정적 역공학 기법에 대해서 연구하였다.
자마린은 대표적인 크로스 플랫폼 개발 프레임워크로, 안드로이드, iOS, 또는 Windows Phone등의 여러 플랫폼을 위한 모바일 앱을 C#으로 작성하게 해준다. 모바일 앱 개발자들은 기존의 C# 코드를 재사용하고 여러 플랫폼간에 상당한 코드를 공유할 수 있어 개발 시간과 유지보수 비용을 줄일 수 있다. 한편, 멀웨어 작성자들 또한 자마린을 이용하여 악성 앱 제작 시간과 비용을 최소화하면서 더 많은 플랫폼에 악성 앱을 전파할 수 있다. 이에 대응하기 위해서 자마린으로 작성된 멀웨어를 분석하고 탐지하는 방안이 필요하다. 그러나 현재 자마린으로 작성된 앱에 대한 분석 방법에 대한 연구가 많이 이루어지고 있지 않다. 이에 본 논문에서는 자마린으로 개발된 안드로이드 앱의 구조를 파악하고 앱 코드를 정적으로 분석하는 기법을 제안한다. 또한, 코드 난독화가 적용된 앱에 대해서도 정적으로 역공학하는 방법을 보인다. 자마린으로 개발된 앱은 자바 바이트코드, C# 기반의 DLL 라이브러리, C/C++ 기반의 네이티브 라이브러리로 구성되어 있으며, 이들 서로 다른 유형의 코드들에 대한 정적 역공학 기법에 대해서 연구하였다.
Xamarin is a representative cross-platform development framework that allows developers to write mobile apps in C# for multiple mobile platforms, such as Android, iOS, or Windows Phone. Using Xamarin, mobile app developers can reuse existing C# code and share significant code across multiple platfor...
Xamarin is a representative cross-platform development framework that allows developers to write mobile apps in C# for multiple mobile platforms, such as Android, iOS, or Windows Phone. Using Xamarin, mobile app developers can reuse existing C# code and share significant code across multiple platforms, reducing development time and maintenance costs. Meanwhile, malware authors can also use Xamarin to spread malicious apps on more platforms, minimizing the time and cost of malicious app creation. In order to cope with this problem, it is necessary to analyze and detect malware written with Xamarin. However, little studies have been conducted on static analysis methods of the apps written in Xamarin. In this paper, we examine the structure of Android apps written with Xamarin and propose a static analysis technique for the apps. We also demonstrate how to statically reverse-engineer apps that have been transformed using code obfuscation. Because the Android apps written with Xamarin consists of Java bytecode, C# based DLL libraries, and C/C++ based native libraries, we have studied static reverse engineering techniques for these different types of code.
Xamarin is a representative cross-platform development framework that allows developers to write mobile apps in C# for multiple mobile platforms, such as Android, iOS, or Windows Phone. Using Xamarin, mobile app developers can reuse existing C# code and share significant code across multiple platforms, reducing development time and maintenance costs. Meanwhile, malware authors can also use Xamarin to spread malicious apps on more platforms, minimizing the time and cost of malicious app creation. In order to cope with this problem, it is necessary to analyze and detect malware written with Xamarin. However, little studies have been conducted on static analysis methods of the apps written in Xamarin. In this paper, we examine the structure of Android apps written with Xamarin and propose a static analysis technique for the apps. We also demonstrate how to statically reverse-engineer apps that have been transformed using code obfuscation. Because the Android apps written with Xamarin consists of Java bytecode, C# based DLL libraries, and C/C++ based native libraries, we have studied static reverse engineering techniques for these different types of code.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
SuppressIldasmAttribute 속성이 존재하는 DLL 파일을 역어셈블하기 위하여, 본 논문에서 SuppressIldasmAttribute를 무시하고, ildasm이 수행되도록 하는 두 가지 방법을 찾았다.
본 논문에서는 “자마린 프레임워크에서 C#으로 개발된 안드로이드 앱”(자마린 앱)의 구조를 분석하고 C# 코드를 실행하기 위한 모노 런타임 환경 동작 원리를 분석하였다. 또한 자마린으로 개발된 안드로이드 앱을 체계적으로 정적 분석하는 기법에 대해 제안하였다. 제안 기법은 소스코드가 제공되지 않는 경우에도 적용할 수 있는 기법으로 악성 자마린 앱을 분석하는데 활용될 수 있다.
또한, 실행 오버헤드도 발생하지 않는다. 본 논문에서는 난독화가 적용된 앱에 대해서도 코드를 정적으로 분석하는 실험을 수행하였다. 단점으로는 패킹되었거나 암호화된 코드를 분석하기 어렵다는 점이다.
이처럼 C# 코드 기반의 악성 앱들이 도입되고 있지만, C# 코드로 제작된 악성 앱에 대한 효과적 분석 기법은 연구된 바가 없다. 이에 본 논문에서는 자마린으로 개발된 안드로이드 앱을 정적으로 역공학하는 방법을 제안한다. 또한 실험에서는, 난독화 기법을 포함시켜 C# 앱을 재패키징한 후, 이를 역공학해 보임으로써 제안 방법의 실효성을 보인다.
제안 방법
본 논문에서는 Crypto Obfuscator For .Net 도구와 ConfuserEx 도구의 난독화 기법을 자마린 앱의 DLL 파일에 적용가능한 지 확인하였다. Table 3은 자마린 앱에 적용 가능한 Crypto Obfuscator For .
Net과 ConfuserEx의 정적 분석 방해 기법을 나타낸다. 두 도구들이 제공하는 정적 분석 방해기법을, Snap Attack 앱의 핵심 DLL 파일인 SnapAttackAndroid.dll에 각 기법별로 적용하고, APKtool을 이용해 재패키징(repackaging)하였다. 재패키징한 앱을 실행한 결과, ildasm1) 사용 방지(Anti ildasmProtection), 심볼 이름 변경 (Symbol renaming), 제어 흐름 난독화(Control flow obfuscation), 문자열 암호화(String encryption) 기법 등 네 가지 기법은 적용 가능했으나, 이외에 기법들은 적용되지 않았다.
본 논문에서는 “자마린 프레임워크에서 C#으로 개발된 안드로이드 앱”(자마린 앱)의 구조를 분석하고 C# 코드를 실행하기 위한 모노 런타임 환경 동작 원리를 분석하였다.
이에 반해, 제어 흐름 난독화 기법 등 자마린 앱에 적용 가능한 기법들은 internal class [Module] 영역에 관련 코드를 추가하지 않아 안드로이드 환경에서도 정상적으로 실행됨을 확인했다. 이에 자마린 앱에 적용 가능한 4가지 난독화 기법들을 적용하고 이를 분석하여 정적 분석하는 방법을 실험하였다.
Martinez[3] 등은 크로스 플랫폼 모바일 앱 개발 프레임워크를 사용하여 개발된 모바일 앱들의 품질을 분석하였다. 즉, 자마린과 같은 크로스 컴파일 프레임워크를 사용해 작성된 앱들의 개발 및 유지보수 과정을, 버그 탐지 및 정정에 초점을 두고 평가하였다.
대상 데이터
여러 논문들이 악성 앱 개발 용이성과 버그 탐지ᐧ정정에 대해 연구하였지만, 자마린에서 C#으로 개발된 앱에 대한 체계적인 역공학 분석 연구는 현재까지 수행된 바가 없다. 본 연구는 자마린에서 C#으로 개발된 안드로이드 앱을 대상으로 정적 역공학 분석 연구를 진행한다.
이론/모형
invoke( )함수는 인자 값으로 어셈블리 이름, 실행할 클래스 및 메소드 이름, 파라미터를 요구하며 인자 값에 맞는 어셈블리의 코드를 실행한다. libmonodroid.so 파일은 IDA Pro를 통해서 역공학을 진행하였다. Fig.
13(b)의 표시된 해시값과 동일한 클래스를 생성하여복호화 루틴을 저장하고 있는 것을 확인하였다. 문자열 암호화라는 난독화 방법을 극복하기 위해서 인터넷에 공개된 도구를 이용하여 역난독화(de-obfuscation)하였다. de4dot[14]는 오픈소스 .
앱의 바이트코드를 자바 소스코드로 역컴파일하기 위해 무료 도구인 Jadx[10]나 상용 도구인 JEB[11]를 사용할 수 있다. 또한 IL코드로 구성된 DLL 파일을 .
성능/효과
이2처럼 제어 흐름이 변경되면 코드의 양이 많아지며 의미 없는 제어흐름이 추가되어 분석가나 공격자로 하여금 역공학을 어렵게 할 수 있다. Snap Attack 앱의 어셈블리를 대상으로 제어흐름 난독화를 적용한 결과, 분석 코드의 양이 원본에 비해 많아지며 제어 흐름 또한 변경되어 분석이 상대적으로 어려워지는 것을 확인하였다. 그러나 난독화가 적용되어 있음에도 불구하고, 결국 높은 난이도는 아니기에 조금의 수고가 더해진다면 여전히 분석가능한 것을 확인하였다.
Snap Attack 앱의 어셈블리를 대상으로 제어흐름 난독화를 적용한 결과, 분석 코드의 양이 원본에 비해 많아지며 제어 흐름 또한 변경되어 분석이 상대적으로 어려워지는 것을 확인하였다. 그러나 난독화가 적용되어 있음에도 불구하고, 결국 높은 난이도는 아니기에 조금의 수고가 더해진다면 여전히 분석가능한 것을 확인하였다.
이에 본 논문에서는 자마린으로 개발된 안드로이드 앱을 정적으로 역공학하는 방법을 제안한다. 또한 실험에서는, 난독화 기법을 포함시켜 C# 앱을 재패키징한 후, 이를 역공학해 보임으로써 제안 방법의 실효성을 보인다.
Boushehrinejadmoradi[2] 등은 X-Checker라는 테스팅 도구를 개발하여, 홈 플랫폼 API를 가지고 동일 기능을 제공하는 타깃 플랫폼 API로 변환할 때 발생할 수 있는 비일치 오류를 조사하였다. 실험결과, 자마린에서 Windows Phone API와 안드로이드 API의 구문 변환 시에 47개의 버그를 탐지하였다. Martinez[3] 등은 크로스 플랫폼 모바일 앱 개발 프레임워크를 사용하여 개발된 모바일 앱들의 품질을 분석하였다.
Mylonas[6, 7] 등은 대표적인 스마트폰 플랫폼들의 보안 수준을 비교 평가하기 위해, 대상 플랫폼들에서 일반 프로그래머들이 멀웨어를 제작할 수 있는지, 제작할 수 있다면 얼마나 작성이 용이한 지를 실험하였다. 실험에서 프로그래머들은 스마트폰 플랫폼에서 제공된 개발 도구와 프로그래밍 라이브러리를 사용하여, 안드로이드에서는 Java 언어를 사용하여 12시간 만에 멀웨어를 제작할 수 있었다. iOS에서는 Objective-C를 사용하여 7일 만에 멀웨어를 제작하였고, Windows Mobile 6에서는 C#을 이용해 이틀 만에 멀웨어를 제작하였다, Windows Phone 7에서는 C# 프로그래밍 경험을 가진 학부생이 하루 만에 멀웨어를 제작하였다.
ConfuserEx에 의해 internal class [Module]에추가되는 코드들은 윈도우 환경에서만 동작하도록 고안되어 있어, 안드로이드 환경에서는 해당 IL 코드를 JIT 컴파일을 제대로 수행하지 못해, 실행이 불가능한 것으로 보인다. 이에 반해, 제어 흐름 난독화 기법 등 자마린 앱에 적용 가능한 기법들은 internal class [Module] 영역에 관련 코드를 추가하지 않아 안드로이드 환경에서도 정상적으로 실행됨을 확인했다. 이에 자마린 앱에 적용 가능한 4가지 난독화 기법들을 적용하고 이를 분석하여 정적 분석하는 방법을 실험하였다.
dll에 각 기법별로 적용하고, APKtool을 이용해 재패키징(repackaging)하였다. 재패키징한 앱을 실행한 결과, ildasm1) 사용 방지(Anti ildasmProtection), 심볼 이름 변경 (Symbol renaming), 제어 흐름 난독화(Control flow obfuscation), 문자열 암호화(String encryption) 기법 등 네 가지 기법은 적용 가능했으나, 이외에 기법들은 적용되지 않았다.2)
후속연구
현재 자마린 앱을 대상으로 분석 기법에 대해서는 거의 연구된 것이 없다. 본 논문에서 제시한 기법은 자마린으로 제작된 악성 앱을 분석하기 위한 체계적인 방법으로 활용될 수 있다. 향후에는 패킹된 자마린 앱을 분석할 수 있는 동적 분석 기법, 그리고 자마린에서 안드로이드 바인딩(Android binding)을 거치지 않고 악성행위를 할 수 있는 요소를 도출하고 이에 대한 분석 방법에 대해서 연구할 계획이다.
또한 자마린으로 개발된 안드로이드 앱을 체계적으로 정적 분석하는 기법에 대해 제안하였다. 제안 기법은 소스코드가 제공되지 않는 경우에도 적용할 수 있는 기법으로 악성 자마린 앱을 분석하는데 활용될 수 있다. 정적 분석은 주어진 코드를 실행하지 않고 제어 데이터 흐름이나 특정한 코드 패턴을 조사하는 것으로, 전체 코드를 커버하면서 분석할 수 있다.
본 논문에서 제시한 기법은 자마린으로 제작된 악성 앱을 분석하기 위한 체계적인 방법으로 활용될 수 있다. 향후에는 패킹된 자마린 앱을 분석할 수 있는 동적 분석 기법, 그리고 자마린에서 안드로이드 바인딩(Android binding)을 거치지 않고 악성행위를 할 수 있는 요소를 도출하고 이에 대한 분석 방법에 대해서 연구할 계획이다.
질의응답
핵심어
질문
논문에서 추출한 답변
자마린이란?
자마린은 대표적인 크로스 플랫폼 개발 프레임워크로, 안드로이드, iOS, 또는 Windows Phone등의 여러 플랫폼을 위한 모바일 앱을 C#으로 작성하게 해준다. 모바일 앱 개발자들은 기존의 C# 코드를 재사용하고 여러 플랫폼간에 상당한 코드를 공유할 수 있어 개발 시간과 유지보수 비용을 줄일 수 있다.
C# 프로그래머들은 자마린을 이용할 경우 어떠한 장점이 있는가?
자마린(Xamarin)은 대표적인 모바일 크로스 플랫폼 프레임워크로, 안드로이드, iOS, 또는 윈도우폰 등의 여러 플랫폼을 위한 모바일 앱을 C#으로 작성하게 해준다[1-4]. 자마린을 이용할 경우, C# 프로그래머들은 특정 플랫폼용 프로그래밍 언어를 익힐 필요 없이 모바일 앱을 즉시 개발할 수 있으며, 기존의 C# 코드를 재사용하고 다른 플랫폼 간에 상당한 코드를 공유할 수 있다. 2015년 기준 자마린 웹 사이트에 의하면, 90만 명의 개발자들이 크로스 플랫폼 앱들을 개발하기 위해 자마린 도구를 사용하고 있다[1].
공격자들이 자마린을 이용해 공격을 하는 이유는 무엇인가?
한편, 공격자들도 멀웨어 제작시간을 최소화하면서 최대의 공격 효과를 내려고 자마린을 악용한다고 알려져 있다[5]. C#으로 악성 앱들을 더 빨리 제작하거나 기존의 악성 코드를 재활용하여 더 많은 플랫폼에 효과적으로 전파할 수 있기 때문이다. 백신 우회용 악성 실행파일을 제작하는 공격도구들의 집합인 Veil-Framework에서는, 악성 페이로드를 C#으로 개발하였다.
참고문헌 (14)
M. Willocx, J. Vossaert, and V. Naessens, "A quantitative assessment of performance in mobile app development tools," Mobile Services (MS), 2015 IEEE International Conference on. IEEE, 2015.
N. Boushehrinejadmoradi, V. Ganapathy, S. Nagarakatte, and L. Iftode, "Testing cross-platform mobile app development frameworks (t)," In Automated Software Engineering (ASE), 2015 30th IEEE/ACM International Conference on IEEE, pp. 441-451, 2015.
M. Martinez, and S. Lecomte, "Towards the quality improvement of crossplatform mobile applications," In Mobile Software Engineering and Systems (MOBILESoft), 2017 IEEE/ACM 4th International Conference on IEEE, pp. 184-188, 2017.
P. Marius, "Considerations Regarding the Cross-Platform Mobile Application Development Process," Academy of Economic Studies. Economy Informatics Vol. 13, no. 1, 2013.
S. M. Pontiroli and F. R. Martinez, "The Tao of .NET and PowerShell Malware Analysis," Virus Bulletin Conference, 2015.
A. Mylonas, S. Dritsas, B. Tsoumas and D. Gritzalis, "On the feasibility of malware attacks in smartphone platforms," International Conference on E-Business and Telecommunications, 2011.
A. Mylonas, S. Dritsas, B. Tsoumas and D. Gritzalis, "Smartphone security evaluation The malware attack case," Security and Cryptography (SECRYPT), 2011 Proceedings of the International Conference on. IEEE, 2011.
R. Mark. Xamarin mobile application development for Android. Packt Publishing Ltd, 2014.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.