Security/안드로이드 모의해킹

안드로이드 취약점 진단/모의해킹 전 알아야 할 이론

2er0127 2023. 8. 26. 17:12

안드로이드는 리눅스 기반 OS로 동작하며, 빠른 업데이트를 지원하는 ios에 비해 구조적인 문제로 인해 업데이트가 오래 걸린다는 단점이 있다.

 

 

 

루팅(Rooting):

루팅이란 안드로이드 해킹을 통해 관리자(Root) 권한을 얻는 행위를 말한다.

ios는 탈옥이라고 한다.

 

 

 

안드로이드 4대 구성 요소

- Activity

사용자가 앱을 실행할 때 사용되는 컴포넌트. 즉 화면을 의미한다.

 

- Service

Activity와 달리 사용자와 상호작용이 없으며, 백그라운드에서 어떠한 작업을 수행하기 위해 사용된다.

 

- Broadcast Receiver

안드로이드에서 발생하는 이벤트를 말한다. ex) 배터리 알림 etc..

 

- Content Provider

다른 어플의 데이터에 접근이 필요할 때 사용하는 컴포넌트이다.

 

이 4대 구성 요소에서 취약점을 진단한다.

 

 

 

 

APK 구조

APK란 안드로이드 앱을 말하며(.apk 확장자) 인증을 위한 서명이 포함되어 있다.

 

assets: 앱 실행에 필요한 자원들이 저장되는 디렉토리(용량이 큰 파일 위주)

META-INF: 인증 서명과 관련한 정보가 담겨 있는 디렉토리

res: 앱 실행에 필요한 자원(리소스)들이 저장되는 디렉토리

lib: 라이브러리 파일(*.so)이 저장되는 디렉토리

AndroidManifest.xml: 설치된 앱의 정보가 저장된 파일, 패키지명, 버전과 같은 정보가 기록되어 있다.

Class.dex: *.dex 파일은 안드로이드 가상 머신인 달빅(Dalvik)이 인식할 수 있도록 *.class 파일을 바이트 코드로 변환시킨 소스 파일이다.

Resources.arsc: res의 정보가 기록되어 있다.

 

 

 

 

아래는 안드로이드 취약점 진단 도구이다.

apktool 안드로이드 apk 파일 리버스 엔지니어링 도구. 압축 파일을 디컴파일한다. 원본 코드를 볼 수 있다.
signapk 재압축 후 apk 파일에 서명, 안드로이드 테스트 인증서로 apk에 자동으로 서명하기 위한 도구. 만약 악성 파일을 심어 다시 압축하여 배포하는 상황이라면 서명을 확인하여 방지할 수 있다.
dex2jar .dex 파일을 jar 파일로 변환할 때 사용하는 도구. class 파일을 바이너리 형태로 저장하고 있어서 jar 파일로 변환해서 봐야 한다.
jd-gui 변환된 .jar 파일의 코드를 볼 수 있게 해주는 도구
JEB 안드로이드 디컴파일러 도구. 난독화 된 apk를 디컴파일 및 자바 코드를 검사, 비공개 소스 앱을 디버깅할 수 있는 리버스 엔지니어링 도구(유료)
jadx dex to java 디컴파일러(jd-gui보다 지원하는 기능이 많음)
AXMLPrinter2.jar 컴파일되어 읽기 어려운 xml 파일을 디컴파일하여 text 형식으로 읽을 수 있게 해주는 도구
Burpsuite/fiddler 웹 프록시 도구. 버프스위트로만 프록시를 잡으면 통신이 많이 느려지는 경우가 발생함. ⇒ 단말기 - 피들러 - 버프 - 웹
adb 안드로이드 장치와 통신하여 디버깅 등의 작업을 진행할 수 있는 command line tool
Nox Player 안드로이드 앱을 pc에서 안전하게 사용할 수 있는 무료 애뮬레이터
SQLite 오픈소스 관계형 데이터베이스 관리 시스템. 작고 경량화된 라이브러리 형태의 데이터베이스 엔진
APK easy tool 디컴파일, 샤이닝, 리패킹징 도구
Frida 바이너리를 동적으로 실행하면서 분석하기 위한 도구(dbi). 파이썬 기반

 

 

 

728x90