DOI QR코드

DOI QR Code

A memory protection method for application programs on the Android operating system

안드로이드에서 어플리케이션의 메모리 보호를 위한 연구

  • Kim, Dong-ryul (GRADUATE SCHOOL OF INFORMATION SECURITY, KOREA UNIVERSITY) ;
  • Moon, Jong-sub (ELECTRONICS & INFORMATION ENGINEERING, KOREA UNIVERSITY)
  • Received : 2016.10.10
  • Accepted : 2016.10.26
  • Published : 2016.12.31

Abstract

As the Android smart phones become more popular, applications that handle users' personal data such as IDs or passwords and those that handle data directly related to companies' income such as in-game items are also increasing. Despite the need for such information to be protected, it can be modified by malicious users or leaked by attackers on the Android. The reason that this happens is because debugging functions of the Linux, base of the Android, are abused. If an application uses debugging functions, it can access the virtual memory of other applications. To prevent such abuse, access controls should be reinforced. However, these functions have been incorporated into Android O.S from its Linux base in unmodified form. In this paper, based on an analysis of both existing memory access functions and the Android environment, we proposes a function that verifies thread group ID and then protects against illegal use to reinforce access control. We conducted experiments to verify that the proposed method effectively reinforces access control. To do that, we made a simple application and modified data of the experimental application by using well-established memory editing applications. Under the existing Android environment, the memory editor applications could modify our application's data, but, after incorporating our changes on the same Android Operating System, it could not.

안드로이드 폰이 점점 대중화됨에 따라 많은 어플리케이션이 제작자의 이윤과 직결되는 데이터나 스마트 폰 사용자의 민감한 데이터를 다룬다. 이러한 중요 데이터는 당연히 보호받아야 하지만 안드로이드에서는 악의적인 사용자에 의해 조작되거나 공격자에 의해 유출될 수 있다. 이런 일이 발생하는 이유는 안드로이드의 근간인 리눅스의 디버깅 기능이 악용되기 때문이다. 리눅스의 디버깅 기능을 이용하면 다른 어플리케이션의 가상 메모리에 접근하는 것이 가능하다. 이 기능이 악용되는 것을 방지하기 위해선 해당 기능을 제공하는 주체인 리눅스의 커널에서 기존의 접근 제어를 더욱 강화해야 한다. 하지만 현재 이 기능은 안드로이드 환경의 특성을 반영하지 않은 채 기존의 리눅스와 동일한 접근 제어를 사용하고 있다. 이에 본 논문에서는 리눅스가 제공하는 다른 어플리케이션의 가상 메모리에 접근할 수 있는 기능을 분석하고, 분석 결과와 안드로이드 환경을 고려하여 스레드 그룹 ID를 검증하는 새로운 계층을 추가하는 방안을 제시한다. 이 방안을 적용함으로써 접근 제어를 더욱 강화할 수 있다. 실제로 본 논문이 제안한 방법이 접근 제어를 강화할 수 있는 지 확인하기 위해, 다른 어플리케이션의 메모리를 수정할 수 있는 메모리 조작 어플리케이션으로 자체 제작한 어플리케이션의 데이터 수정을 시도한다. 접근 제어를 강화하기 전에는 메모리 조작 어플리케이션이 자체 제작한 어플리케이션의 메모리에 있는 데이터를 수정할 수 있었지만, 접근 제어를 강화한 후에는 데이터 수정에 실패하는 것을 확인할 수 있다.

Keywords

References

  1. P. Stirparo, I. N. Fovino, and I. Kounelis, "Data-in-use leakages from Android memory-Test and analysis," 2013 IEEE 9th International Conference on Wireless and Mobile Computing, Networking and Communications (WiMob), Oct. 2013, pp. 701-708. http://dx.doi.org/10.1109/WiMOB.2013.6673433
  2. P. Stirparo, I. N. Fovino, M. Taddeo, and I. Kounelis, "In-memory credentials robbery on android phones," 2013 World Congress on Internet Security (WorldCIS), Mar. 2014, pp. 88-93. http://dx.doi.org/10.1109/WorldCIS.2013.6751023
  3. F. Zhou, Y. Yang, Z. Ding, and G. Sun, "Dump and analysis of Android volatile memory on Wechat," 2015 IEEE International Conference In Communications (ICC), Sep. 2015, pp. 7151-7156. http://dx.doi.org/10.1109/ICC.2015.7249467
  4. 504ensicsLabs/LIME, https://github.com/504ensicslabs/lime
  5. J. Sylve, A. Case, L. Marzlale, and G. G. Richard, "Acquisition and analysis of volatile memory from android devices," Digital Investigation 2011, Vol. 8, no. 3, Feb. 2012, pp. 175-184. http://dx.doi.org/10.1016/j.diin.2011.10.003
  6. volatility, https://code.google.com/p/volatility/wiki/LinuxMemoryForensics
  7. I. Kollar, "Forensic RAM dump image analyser," Master's Thesis, Charles University in Prague, 2010.
  8. lcamtuf-memfetch, https://github.com/citypw/lcamtuf-memfetch
  9. Cheat Engine, http://www.cheatengine.org/
  10. GAMEGUARDIAN, https://gameguardian.net/
  11. SB Game Hacker, http://m.balifornia.store.aptoide.com/app/market/org.sbtools.gamehack/40/3882874/SB+Game+Hacker
  12. PTRACE(2), http://man7.org/linux/man-pages/man2/ptrace.2.html
  13. Linux local privilege escalation via suid/proc/pid/mem write, https://git.zx2c4.com/CVE-2012-0056/about/
  14. Android (operating system) https://en.wikipedia.org/wiki/Android_(operating_system)#Platform_usage
  15. cgroups, https://en.wikipedia.org/wiki/Cgroups#NAMESPACE-ISOLATION
  16. ptrace. https://en.wikipedia.org/wiki/Ptrace#Limitations
  17. LSM, https://www.kernel.org/doc/Documentation/security/LSM.txt
  18. Yama, https://www.kernel.org/doc/Documentation/security/Yama.txt
  19. Java Debug Wire Protocol, http://docs.oracle.com/javase/6/docs/technotes/guides/jpda/jdwp-spec.html
  20. Debugging Native Android Platform Code, http://source.android.com/devices/tech/debug/#debuggerd
  21. Rooting (Android OS), https://en.wikipedia.org/wiki/Rooting_(Android_OS)#Advantages
  22. H. W. Lee, "Android based Mobile Device Rooting Attack Detection and Response Mechanism using Events Extracted from Daemon Processes," Journal of The Korea Institute of Information Security & Cryptology(JKIISC) 2013, Vol. 23, No. 3, Jun. 2013, pp. 479-490. http://dx.doi.org/10.13089/JKIISC.2013.23.3.479
  23. Linux Kernel Cross Reference, http://lxr.oss.org.cn/plain/ident?v=3.4.9&a=arm&i=mm_access