FridaLab Write Up - Challenge 01. challenge_01 클래스의 chall01 변수의 값을 1로 변경해라
2022. 12. 15. 18:10
워게임/FridaLab
코드 설명 chall01이라는 이름의 클래스 변수가 int 타입으로 선언만 되어있다. MainActivity에서 호출되는 getChall01Int 메소드에선 chall01 클래스 변수에 값을 지정하지 않았기 때문에 chall01 클래스 변수에 지정된 값은 0으로 지정되어 리턴하게 된다. MainActivity에서 getChall01Int 메소드의 반환 값과 1을 비교하였는데, 이는 틀리기 때문에 동작하지 않는다. Write Up Java.perform(function () { console.log("\n* Hooking Start *") var challenge01 = () => { var chall_01 = Java.use("uk.rossmarks.fridalab.challenge_01") chall_..
FridaLab Write Up - Download & Install
2022. 12. 15. 18:08
워게임/FridaLab
Download & Install 사진에 FridaLab 공식 홈페이지 링크를 삽입하였으니, 사진 클릭을 하면 공식 사이트로 이동할 수 있다. 해당 공식 사이트에서 Download를 클릭 시 FridaLab.apk 파일을 다운로드 할 수 있다. adb install 명령어를 통하여 FridaLab.apk를 설치하였다. FridaLab을 실행한다면, 별 반응이 없을 것이다. FridaLab의 기능은 화면 속 텍스트로 작성한 1~8번의 기능들이 우회가 되었는지 확인하는 것 뿐이다. CHECK 박스를 클릭한다면, 우회가 되지 않은 기능들이 빨간색 글자로 변경이 된다. Frida를 이용하여 각 기능들을 후킹을 통해 우회한다면, 초록색 글자로 변경이 된다. AndroidManifest & MainActivity ..
[ Android ] 기초 정리 - Application 주요 구성 요소
2022. 12. 8. 14:33
기술보안/App
Application 주요 구성 요소 Service . . . 백그라운드에서 앱을 계속 실행하기 위한 다목적 진입점으로 백그라운드에서 실행되며 오랫동안 실행되는 작업을 수행하거나 원격 프로세스를 위한 작업 수행합니다. Broadcast Receiver 시스템이 정기적으로 사용자 플로우 밖에서 이벤트를 앱에 전달하도록 지원하며, 앱이 시스템 전체의 브로드캐스트 알림에 응답할 수 있도록 도와줍니다. Content Providers . . . 파일 시스템, SQLite DB, 엑세스 할 수 있는 모든 영구 저장 위치에 저장 가능한 어플리케이션 데이터의 공유에 대한 읽기, 쓰기 권한 관리 역할 수행한다. Content Providers를 구성하여 다른 어플리케이션들과 안전하게 데이터 공유가 가능하다.
[ Android ] Activity Life Cycle
2022. 12. 8. 14:30
기술보안/App
Activity Life Cycle Activity는 화면 하나를 뜻하며, 사용자가 어플리케이션을 사용하는 도중 잠깐 다른 어플리케이션으로 이동해서 다시 돌아오는 상황 등과 같은 상태 변화를 추척하기 위해 여러 콜백을 제공한다. 이는 아래와 같은 상황을 예방 할 수 있다. 사용자가 어플리케이션을 사용하는 도중에 전화가 걸려오거나 다른 어플리케이션으로 전환할 때 비정상 종료되는 문제 사용자가 어플리케이션을 사용하지 않는 경우에도 계속 시스템의 자원이 사용되는 문제 사용자가 어플리케이션을 나갔다가 복귀하였을 때, 사용자의 진행 상태가 저장되지 않는 문제 화면이 가로 방향과 세로 방향으로 회전된 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제 onCreate() Activity가 처음 생성될..
[ Android ] 기초 정리 - APK 구조
2022. 12. 8. 14:27
기술보안/App
APK 구조 AndroidManifest.xml 어플리케이션의 주요 정보가 저장된 파일이다. - Activity : Activity에 대한 속성 - Service : 백그라운드에서 실행되는 서비스 - Brodcast Receiver : 안드로이드 내부 이벤트 핸들링을 위한 컴포넌트 - Content Provide : 어플리케이션 간의 데이터 공유를 위한 컴포넌트 assets/ 어플리케이션 사용되는 용량이 큰 자원들(비디오, 오디오, 문서 등)이 저장된 디렉터리 res/ 어플리케이션 실행을 위한 용량이 작고, 미리 컴파일되어야 하는 자원이 저장된 디렉터리 주로 이미지, 디자인 관련 설정 파일, 문자열 관련 설정 파일 등과 같이 용량이 작고, 어플리케이션이 동작 시 필요로 하는 파일들이 저장되어 있다. Dr..
[ Android ] 기초 정리 - Build & SandBox & 서명
2022. 12. 8. 14:23
기술보안/App
Build DEX (Dalvik Executable) Android 어플리케이션은 Dalvik VM에서 더 효과적으로 실행되기 위해 개발자가 JDK로 코드를 컴파일하여 만든 바이트 코드입니다. Dalvik VM에서 DEX 파일로 변환되어 실행됩니다. Smali Dalvik의 바이트 코드를 위한 어셈블리 언어입니다. 기계어 형태로 되어 있으며, 원하는 부분의 코드 패치가 가능합니다. SandBox Android의 모든 앱은 자체 프로세스와 파일 시스템 공간에 SandBox로 되어 있으며, Linux 커널의 프로세스 공간 보호 메커니즘을 이용하여 설치된 각 앱에 고유한 UID를 할당합니다. 기존 데스크톱 운영 체제(Linux, Windows, Mac 등)와 달리 Android는 UID 개념을 사용자 구분을 ..
[ Android ] 기초 정리 - Booting Process & Rooting
2022. 12. 6. 23:36
기술보안/App
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 ] 기초 정리 - Android 공격 종류 및 구조
2022. 12. 6. 23:26
기술보안/App
Android 공격 종류 포렌식 공격 공격자가 단말기를 탈취 한 후 메모리와 디스크 정보를 덤프하여 개인 중요 정보 탈취 코드 실행 공격 단말기에서 실행되는 앱의 임의 코드 실행 취약점을 이용하여 단말기를 장악하는 공격 웹 기반 공격 웹 뷰를 통해 만들어진 앱에서 웹 취약점을 통해 사용자 및 서버 공격 악성 앱 공격 정상 앱의 서명 개인키를 탈취하여 악성 코드를 삽입한 업데이트 버전을 배포하는 방식으로 공격 Android Architecture Android는 다양한 기기와 폼 팩터에 사용할 수 있도록 제작된 Linux 기반의 오픈소스 소프트웨어 스택이다. Linux Kernel Kernel은 운영체제를 운영하는데에 필요한 기능들을 연결해주는 역활을 수행한다. Android 플랫폼의 기반은 Linux 커..
[컨테이너 보안] 2-1장. 컨테이너 탈출 - 부적절한 Mount 설정
2022. 12. 1. 01:12
기술보안/컨테이너
개요 컨테이너 기술은 운영체제 수준의 가상화 기술로 Host 운영체제와 격리되어 실행된다는 것이 보안 관점에서 큰 메리트가 있다. 하지만 기존의 취약점들과 동일하게 관리자의 미흡한 설정, 격리 기술 우회 등 다양한 위협 포인트가 계속해서 발생하고 있다. 이 장에서는 관리자의 미흡한 설정으로 사용자가 컨테이너를 탈출하여 Host 시스템을 탈취하는 시나리오를 알아보자. Mount란? 리눅스에서 디스크와 같은 물리적 장치를 특정위치(디렉터리)에 연결시켜 주는 것 Bind Mount란? Host의 파일 시스템을 컨테이너의 특정위치(디렉터리)에 연결시켜 주는 것 부적절한 Bind Mount 설정 취약점 1. Docker가 설치된 리눅스 준비 2. Host의 /etc 디렉터리를 컨테이너의 /tmp 디렉터리로 Bin..