gnosis@kim:~#

gnosis@kim:~ # cat blog/android-hacking-intro-2a.md

# 안드로이드 해킹 입문 - 2(상)

[Tech note]series/안드로이드 해킹 입문6 min read[ko]

#Android#App_Security

3일차 (화) – 안드로이드 보안 기초 및 OWASP Mobile Top 10

목표: 안드로이드 운영체제 구조와 보안 기본 개념 학습 활동: 유튜브에서 “OWASP Mobile Top 10” 및 안드로이드 보안 개념 관련 무료 영상 시청 보안 취약점(예: 인텐트 검증, 파일 권한 문제) 목록 정리 실습: 각 취약점에 대한 간단한 사례를 메모장에 정리

자 드갑시다

안드로이드 운영체제

OS는 아래와 같이 여러 계층으로 구성되어 있으며, 각 계층마다 고유의 역할과 보안 관점에서의 취약점이 존재한다.


리눅스 커널 (Linux Kernel)

  • 안드로이드 OS (이하 OS)는 리눅스 커널 위에서 동작한다.

  • 이 부분은 하드웨어와 OS 사이의 연결을 맡고 있다.

  • 보안 설정, 하드웨어 추상화, 멀티태스킹, 메모리 등 여러 기본적인 역할을 담당한다.

  • 개발자 입장에선 딱히 다룰 일이 없다고 한다(?)

    보안의 관점에선

    Linux 보안 Android 플랫폼의 기초는 Linux 커널입니다. Linux 커널은 수년간 널리 사용되어 왔으며 보안에 민감한 수백만 개의 환경에서 사용되고 있다.

    Linux 커널은 모바일 컴퓨팅 환경의 기반으로서 Android에 다음과 같은 몇 가지 핵심 보안 기능을 제공한다.

    사용자 기반 권한 모델 프로세스 분리 보안 IPC를 위한 확장 가능 메커니즘 커널에서 불필요하고 안전하지 않을 가능성이 있는 부분을 삭제하는 기능

    다중 사용자 운영체제인 Linux 커널의 기본적인 보안 목표는 사용자 리소스를 서로 분리하는 것이다. Linux 보안 철학은 사용자 리소스를 서로에게서 보호하는 것이다. 따라서 Linux는

    사용자 A가 사용자 B의 파일을 읽지 못하게 한다. 사용자 A가 사용자 B의 메모리를 소진하지 못하게 한다. 사용자 A가 사용자 B의 CPU 리소스를 소진하지 못하게 한다. 사용자 A가 사용자 B의 기기(예: 전화, GPS, 블루투스)를 소진하지 못하게 한다.

  • 부팅 과정 초기에 Secure Boot 및 Verified Boot를 통해 부트로더와 커널 변조를 방지하는 메커니즘이 적용된다.

  • 리눅스 커널은 잘 모르지만, 커널 취약점이 있을 수도 있겠단 생각이 드네요.


하드웨어 추상화 계층 (HAL, Hardware Abstraction Layer)

  • 하드웨어 추상화 계층(HAL)은 하드웨어 공급업체에서 구현해야 하는 표준 인터페이스를 정의하며 안드로이드에서 하위 드라이버 구현을 고려하지 않아도 되게 해주는 시스템이다.

  • 이걸 쓰면 상위 수준 시스템을 수정하거나 시스템에 영향을 주지 않고도 기능을 구현할 수 있다. HAL 구현은 모듈로 패키징되며 적절한 시점에 안드로이드 시스템에 의해 로드된다.

  • 한 마디로, 하드웨어와 상위 계층의 중간자 역할을 하는 계층인 것 같습니다.

  • 제조사별 커스텀 드라이버의 결함이나 취약점이 있을 경우, 악의적인 하드웨어 제어나 정보 탈취 공격으로 이어질 수 있다.


네이티브 라이브러리 계층 (C/C++ Libraries)

  • OpenGL ES, WebKit, OpenMAX, SQLite 등과 같이 앱이나 시스템 서비스에서 필요한 다양한 기능(그래픽, 미디어 처리, 데이터베이스, 네트워킹 등)을 제공한다.

  • 이 계층의 라이브러리는 안드로이드 런타임과 애플리케이션 프레임워크 모두에서 사용된다.

  • 라이브러리 자체에서 bof 같은 취약점이 있으면, 문제될 수 있겠네요!


Android 런타임 (ART / Dalvik)

  • 실행되는 코드를 컴파일하는 계층

  • 안드로이드 누가(2016) 부터는 JIT, AOT 방식을 혼용(=ART)한다고 한다.

    JIT란?

  • Just In Time의 약자로, 실행 중에 컴파일하는 방식.

  • 메모리를 많이 차지함.

    AOT란?

  • Ahead-Of-Time의 약자

  • 앱이 설치될 때 미리 전체 또는 대부분의 코드를 기계어로 컴파일해 두는 방식

  • 앱 실행 속도가 빨라지지만, 컴파일된 코드 때문에 설치 파일의 용량이 증가하는 단점이 있다.


API Framework 계층

  • 안드로이드 운영체제에서 제공하는 애플리케이션 개발을 위한 API(Application Programming Interface)를 제공하는 계층.

  • 개발자가 코드를 작성하는 어플리케이션 계층과 API 프레임워크 계층 밑의 계층들과 소통할 수 있도록 하는 다리 역할을 한다.

  • 액티비티 생명주기와 언어 설정 등 프레임워크 수준의 기능을 담당한다.

  • 즉, 안드로이드 개발자가 자주 이용하는 부분이 여기다.

  • 인텐트를 통한 위조, 부적절한 권한 관리, 데이터 검증 미흡 등이 주요 취약점으로 발생할 수 있다.


Applications 계층

  • 사용자 앱, 시스템 앱, 서드파티 앱 등이 실행되는 영역

  • 일반 사용자들이 접하는 계층

  • 악성 앱 삽입, 권한 오남용, 데이터 탈취 등 사용자 데이터를 노리는 공격의 주요 표면이다.


추가 보안 관점 보완 내용

부팅 과정 및 초기 보안 메커니즘

Secure Boot/Verified Boot:

  • 기기 부팅 시 부트로더가 커널과 펌웨어의 무결성을 검증하여, 변조되거나 악의적인 코드가 로드되지 않도록 방지한다.

  • 부팅 단계에서의 검증이 실패하면 기기는 정상 부팅되지 않아, 공격자가 부팅 단계에서 악성 코드를 삽입하는 것을 어렵게 만든다.

    Trusted Execution Environment (TEE)와 Trusty OS

  • 민감한 연산(예: 결제, 인증, 암호화 키 관리)을 일반 앱과 분리된 안전한 환경에서 처리한다.

  • Trusty OS?

  • TEE의 일종으로, 보안이 중요한 기능을 별도의 OS 환경에서 실행하여, 메인 OS가 공격당하더라도 민감 정보를 보호한다.

  • TEE 내에서 이루어지는 연산은 메인 OS와 별도로 보안 검증을 거치며, 악의적인 코드가 침투하더라도 중요한 작업은 보호된다.

    최신 보안 업데이트 및 아키텍처 변화

  • Project Treble?

  • 하드웨어와 소프트웨어 계층을 분리하여 제조사의 추가 작업 없이 OS 업데이트가 가능하도록 하여, 보안 패치를 보다 신속하게 적용할 수 있다.

  • Project Mainline?

  • 구글 플레이 스토어를 통해 핵심 시스템 구성 요소를 업데이트할 수 있도록 하여, 전체 OS 업데이트 없이도 보안 취약점을 신속히 보완할 수 있다.

  • 개발자가 직접 작성하는 로직과 UI 구성하는 상위 계층들에서 취약점이 발생하는 경우가 많은 것 같다.

궁금하신 점이나, 잘못된 정보가 있다면 댓글로 알려주세요. 감사합니다!


출처: https://source.android.com/docs/core/architecture?hl=ko

https://velog.io/@pnlkc/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B4%80%EB%A0%A8-%EC%A0%95%EB%A6%AC

https://onlyfor-me-blog.tistory.com/386

https://velog.io/@yunsuk0328/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-OS%EC%9D%98-%EA%B5%AC%EC%A1%B0