직접 조사하고 작성한 자료입니다. 공식 출처가 없는 모든 자료의 무단 복사 또는 사용을 금지합니다.
공격 기술은 허가된 환경에서 학습하고 연습하기 위한 것입니다. 실제로 운영되는 네트워크에 대한 공격은 처벌됩니다. (정보통신망법 제48조 제1항)
개요
Android에서 적용되는 단위인 액티비티에 대해 알아보고 액티비티의 수명 주기에 대해 알아보세요.
1차 활동
main() 함수를 실행하여 프로그램을 실행하는 기존 바이너리와 달리 Android는 특정 활동 콜백 함수를 실행하여 활동 인스턴스 코드를 실행합니다.
앱의 시작점이 다를 수 있기 때문인데요, 설치된 앱을 사용자가 터치하여 실행하는 경우도 있지만 전화가 걸려오거나 다른 앱에서 전화가 오면 폰앱이 실행되지만 기능은 , 다이얼러를 열지 않고 발신자의 정보를 표시합니다. 또는 앱이 앱 위에서 실행되거나 백그라운드에서 실행될 수 있으므로 이러한 작업을 AndroidManifest.xml에 활동 단위로 등록한 다음 느슨하게 연결된 상태에서 수명 주기를 관리하고 실행합니다.
2. 액티비티 라이프 사이클

- 사용자가 앱을 사용하고 종료하는 전체 프로세스의 수명 주기를 관리합니다.
- 예: 앱 사용 중 전화 수신 시 충돌 방지
- 라이프 사이클 별로 콜백 함수 지정 가능 (*콜백 함수: 작성된 코드의 순서대로 실행되지 않고 이벤트나 요청이 발생했을 때 실행되는 함수)
- 첫 번째 활동 = 주요 활동
- 처음 실행된 메서드 = onCreate()
- 일반 앱 실행 시 가장 먼저 실행되는 기능은 무엇인가요?
- 메인 액티비티의 onCreate()
3. 기타 정적 분석 시 진단 가능한 취약점
유닉스 커널을 기반으로 동작하는 안드로이드 운영체제도 유닉스에서 발생할 수 있는 몇 가지 취약점이 있다. 취약한 함수가 확인 없이 실행되거나, 경로 확인 없이 클래스를 불러온 경우 발생한다.
1. 시스템 명령을 실행할 수 있는 경우
– 시스템 명령을 실행하기 위해 exec() 함수를 사용하여 변수가 사용자 입력 값을 직접 참조하는 경우
2. Dex 클래스 로더
– 상대 경로를 사용하거나 외부에서 경로를 조작할 수 있는 경우 DexClassLoader 기능을 통해 로드하는 경우
– Dex: 애플리케이션 런타임에 필요한 Dex 파일을 동적으로 로딩하여 애플리케이션 구성
– 최신 안드로이드 버전에서는 인텐션으로 교체를 권장합니다.
3. NDK에서 취약한 기능 사용
- BufferOverflow: strcpy, strcat, strncpy, memcpy, memset, scanf, strcat, spintf, strncat, 가져오기, fgets
- 형식 문자열: printf, sprintf, fprintf, snprintf, vfprintf, vsprintf, vsnprintf, syslog
- RaceCondition: tmpfile
4. 운영상 민감한 정보가 하드코딩된 경우
서버나 DB에 대한 원격접속을 위한 접근정보를 앱 소스코드에 평문으로 노출하여 해당 정보를 이용하여 원격자원을 노출 및 조작할 수 있는 경우
원천
(안드로이드 활동) https://developer.android.com/guide/components/activities/intro-activities?hl=ko
(안드로이드 액티비티 라이프사이클) https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko
