분류 전체보기
-
Activity Life Cycle Activity는 화면 하나를 뜻하며, 사용자가 어플리케이션을 사용하는 도중 잠깐 다른 어플리케이션으로 이동해서 다시 돌아오는 상황 등과 같은 상태 변화를 추척하기 위해 여러 콜백을 제공한다. 이는 아래와 같은 상황을 예방 할 수 있다. 사용자가 어플리케이션을 사용하는 도중에 전화가 걸려오거나 다른 어플리케이션으로 전환할 때 비정상 종료되는 문제 사용자가 어플리케이션을 사용하지 않는 경우에도 계속 시스템의 자원이 사용되는 문제 사용자가 어플리케이션을 나갔다가 복귀하였을 때, 사용자의 진행 상태가 저장되지 않는 문제 화면이 가로 방향과 세로 방향으로 회전된 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제 onCreate() Activity가 처음 생성될..
[ Android ] Activity Life CycleActivity Life Cycle Activity는 화면 하나를 뜻하며, 사용자가 어플리케이션을 사용하는 도중 잠깐 다른 어플리케이션으로 이동해서 다시 돌아오는 상황 등과 같은 상태 변화를 추척하기 위해 여러 콜백을 제공한다. 이는 아래와 같은 상황을 예방 할 수 있다. 사용자가 어플리케이션을 사용하는 도중에 전화가 걸려오거나 다른 어플리케이션으로 전환할 때 비정상 종료되는 문제 사용자가 어플리케이션을 사용하지 않는 경우에도 계속 시스템의 자원이 사용되는 문제 사용자가 어플리케이션을 나갔다가 복귀하였을 때, 사용자의 진행 상태가 저장되지 않는 문제 화면이 가로 방향과 세로 방향으로 회전된 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제 onCreate() Activity가 처음 생성될..
2022.12.08 -
APK 구조 AndroidManifest.xml 어플리케이션의 주요 정보가 저장된 파일이다. - Activity : Activity에 대한 속성 - Service : 백그라운드에서 실행되는 서비스 - Brodcast Receiver : 안드로이드 내부 이벤트 핸들링을 위한 컴포넌트 - Content Provide : 어플리케이션 간의 데이터 공유를 위한 컴포넌트 assets/ 어플리케이션 사용되는 용량이 큰 자원들(비디오, 오디오, 문서 등)이 저장된 디렉터리 res/ 어플리케이션 실행을 위한 용량이 작고, 미리 컴파일되어야 하는 자원이 저장된 디렉터리 주로 이미지, 디자인 관련 설정 파일, 문자열 관련 설정 파일 등과 같이 용량이 작고, 어플리케이션이 동작 시 필요로 하는 파일들이 저장되어 있다. Dr..
[ Android ] 기초 정리 - APK 구조APK 구조 AndroidManifest.xml 어플리케이션의 주요 정보가 저장된 파일이다. - Activity : Activity에 대한 속성 - Service : 백그라운드에서 실행되는 서비스 - Brodcast Receiver : 안드로이드 내부 이벤트 핸들링을 위한 컴포넌트 - Content Provide : 어플리케이션 간의 데이터 공유를 위한 컴포넌트 assets/ 어플리케이션 사용되는 용량이 큰 자원들(비디오, 오디오, 문서 등)이 저장된 디렉터리 res/ 어플리케이션 실행을 위한 용량이 작고, 미리 컴파일되어야 하는 자원이 저장된 디렉터리 주로 이미지, 디자인 관련 설정 파일, 문자열 관련 설정 파일 등과 같이 용량이 작고, 어플리케이션이 동작 시 필요로 하는 파일들이 저장되어 있다. Dr..
2022.12.08 -
Build DEX (Dalvik Executable) Android 어플리케이션은 Dalvik VM에서 더 효과적으로 실행되기 위해 개발자가 JDK로 코드를 컴파일하여 만든 바이트 코드입니다. Dalvik VM에서 DEX 파일로 변환되어 실행됩니다. Smali Dalvik의 바이트 코드를 위한 어셈블리 언어입니다. 기계어 형태로 되어 있으며, 원하는 부분의 코드 패치가 가능합니다. SandBox Android의 모든 앱은 자체 프로세스와 파일 시스템 공간에 SandBox로 되어 있으며, Linux 커널의 프로세스 공간 보호 메커니즘을 이용하여 설치된 각 앱에 고유한 UID를 할당합니다. 기존 데스크톱 운영 체제(Linux, Windows, Mac 등)와 달리 Android는 UID 개념을 사용자 구분을 ..
[ Android ] 기초 정리 - Build & SandBox & 서명Build DEX (Dalvik Executable) Android 어플리케이션은 Dalvik VM에서 더 효과적으로 실행되기 위해 개발자가 JDK로 코드를 컴파일하여 만든 바이트 코드입니다. Dalvik VM에서 DEX 파일로 변환되어 실행됩니다. Smali Dalvik의 바이트 코드를 위한 어셈블리 언어입니다. 기계어 형태로 되어 있으며, 원하는 부분의 코드 패치가 가능합니다. SandBox Android의 모든 앱은 자체 프로세스와 파일 시스템 공간에 SandBox로 되어 있으며, Linux 커널의 프로세스 공간 보호 메커니즘을 이용하여 설치된 각 앱에 고유한 UID를 할당합니다. 기존 데스크톱 운영 체제(Linux, Windows, Mac 등)와 달리 Android는 UID 개념을 사용자 구분을 ..
2022.12.08 -
Booting Process Android 장치 전원 리부팅 작업을 Android booting sequence이라고 합니다. Boot Loader Android 장치의 전원이 들어올 경우 미리 정의된 Boot code를 ROM에서 찾아서 실행합니다. Boot code를 의해 Boot Loader이 RAM에 로드가 됩니다. 이는 운영체제가 실행되기 전에 실행되는 것으로, Boot Loader은 부팅 및 시스템 커널 검색을 단말기에 지시하는 하위코드입니다. Boot Loader은 보통 비휘발성 메모리에 존재하며, 단말기 고유의 경우가 많습니다. 일반적인 위치는 /bootable/bootloader/legacy/usbloader 에 위치합니다. Boot Loader는 Primary Boot Loader와 S..
[ Android ] 기초 정리 - Booting Process & RootingBooting Process Android 장치 전원 리부팅 작업을 Android booting sequence이라고 합니다. Boot Loader Android 장치의 전원이 들어올 경우 미리 정의된 Boot code를 ROM에서 찾아서 실행합니다. Boot code를 의해 Boot Loader이 RAM에 로드가 됩니다. 이는 운영체제가 실행되기 전에 실행되는 것으로, Boot Loader은 부팅 및 시스템 커널 검색을 단말기에 지시하는 하위코드입니다. Boot Loader은 보통 비휘발성 메모리에 존재하며, 단말기 고유의 경우가 많습니다. 일반적인 위치는 /bootable/bootloader/legacy/usbloader 에 위치합니다. Boot Loader는 Primary Boot Loader와 S..
2022.12.06 -
Android 공격 종류 포렌식 공격 공격자가 단말기를 탈취 한 후 메모리와 디스크 정보를 덤프하여 개인 중요 정보 탈취 코드 실행 공격 단말기에서 실행되는 앱의 임의 코드 실행 취약점을 이용하여 단말기를 장악하는 공격 웹 기반 공격 웹 뷰를 통해 만들어진 앱에서 웹 취약점을 통해 사용자 및 서버 공격 악성 앱 공격 정상 앱의 서명 개인키를 탈취하여 악성 코드를 삽입한 업데이트 버전을 배포하는 방식으로 공격 Android Architecture Android는 다양한 기기와 폼 팩터에 사용할 수 있도록 제작된 Linux 기반의 오픈소스 소프트웨어 스택이다. Linux Kernel Kernel은 운영체제를 운영하는데에 필요한 기능들을 연결해주는 역활을 수행한다. Android 플랫폼의 기반은 Linux 커..
[ Android ] 기초 정리 - Android 공격 종류 및 구조Android 공격 종류 포렌식 공격 공격자가 단말기를 탈취 한 후 메모리와 디스크 정보를 덤프하여 개인 중요 정보 탈취 코드 실행 공격 단말기에서 실행되는 앱의 임의 코드 실행 취약점을 이용하여 단말기를 장악하는 공격 웹 기반 공격 웹 뷰를 통해 만들어진 앱에서 웹 취약점을 통해 사용자 및 서버 공격 악성 앱 공격 정상 앱의 서명 개인키를 탈취하여 악성 코드를 삽입한 업데이트 버전을 배포하는 방식으로 공격 Android Architecture Android는 다양한 기기와 폼 팩터에 사용할 수 있도록 제작된 Linux 기반의 오픈소스 소프트웨어 스택이다. Linux Kernel Kernel은 운영체제를 운영하는데에 필요한 기능들을 연결해주는 역활을 수행한다. Android 플랫폼의 기반은 Linux 커..
2022.12.06 -
개요 컨테이너 기술은 운영체제 수준의 가상화 기술로 Host 운영체제와 격리되어 실행된다는 것이 보안 관점에서 큰 메리트가 있다. 하지만 기존의 취약점들과 동일하게 관리자의 미흡한 설정, 격리 기술 우회 등 다양한 위협 포인트가 계속해서 발생하고 있다. 이 장에서는 관리자의 미흡한 설정으로 사용자가 컨테이너를 탈출하여 Host 시스템을 탈취하는 시나리오를 알아보자. Mount란? 리눅스에서 디스크와 같은 물리적 장치를 특정위치(디렉터리)에 연결시켜 주는 것 Bind Mount란? Host의 파일 시스템을 컨테이너의 특정위치(디렉터리)에 연결시켜 주는 것 부적절한 Bind Mount 설정 취약점 1. Docker가 설치된 리눅스 준비 2. Host의 /etc 디렉터리를 컨테이너의 /tmp 디렉터리로 Bin..
[컨테이너 보안] 2-1장. 컨테이너 탈출 - 부적절한 Mount 설정개요 컨테이너 기술은 운영체제 수준의 가상화 기술로 Host 운영체제와 격리되어 실행된다는 것이 보안 관점에서 큰 메리트가 있다. 하지만 기존의 취약점들과 동일하게 관리자의 미흡한 설정, 격리 기술 우회 등 다양한 위협 포인트가 계속해서 발생하고 있다. 이 장에서는 관리자의 미흡한 설정으로 사용자가 컨테이너를 탈출하여 Host 시스템을 탈취하는 시나리오를 알아보자. Mount란? 리눅스에서 디스크와 같은 물리적 장치를 특정위치(디렉터리)에 연결시켜 주는 것 Bind Mount란? Host의 파일 시스템을 컨테이너의 특정위치(디렉터리)에 연결시켜 주는 것 부적절한 Bind Mount 설정 취약점 1. Docker가 설치된 리눅스 준비 2. Host의 /etc 디렉터리를 컨테이너의 /tmp 디렉터리로 Bin..
2022.12.01