본문 바로가기

해킹-보안/모바일

(40)
adb 명령어 및 앱 서명 방법 ி adb 명령어 및 앱 서명 방법 쉘 접속 > adb shell usb 없이 접속 - https://sailerya.tistory.com/13 패키지 조회 > adb shell pm list packages -f | findstr 파일 송수신 ㆍ 스마트폰 파일을 PC로 복사 > adb pull [Phone] [PC] ㆍ pc 파일을 스마트폰으로 복사 > adb push [PC] [Phone] 앱 설치 > adb install -r [APK 파일 경로] 로그 조회 ㆍ 소스 진입, 변수 값 등 기타 상태 정보등을 실시간 출력 > logcat -v time 시스템 리소스 조회 ㆍ 프로세스 메모리 맵 조회 > cat /proc/[PID]/maps 앱 설치 및 삭제 > adb install -r..
Magisk 루팅 앱 설치 및 JEB로 앱 디컴파일하기 Magisk: 루팅/권한 관리/모듈 설치/루팅 상태 숨김 등 각종 부가 기능을 지원하는 앱 JEB Android Decompiler: Dalvik 바이트 코드를 Java 소스 코드로 디컴파일하는 도구 ADB Tools: Android 기반 장치를 디버깅하는 도구 1. 루팅할 모바일 기기에 magisk 앱 설치 후 특정 앱 접근 시 루팅 탐지 확인, adb를 통해 root 접근 가능 확인 ※ magisk 설치: https://magiskmanager.com/downloading-magisk-manager 2. 루팅된 모바일 기기를 PC와 연결 후 adb 툴을 이용하여 A앱 추출 > adb shell pm list packages -f | findstr [ 앱 패키지 이름 ] > adb pull [앱 패키지..
IOS 앱 개념 정리 (기본 인터페이스 및 Lifecycle) ி UIKit 기본 인터페이스 UIKit UI를 구현하고 이벤트를 관리하는 IOS의 핵심 프레임워크 사용자 이벤트 처리를 위한 클래스 포함(텍스트/이미지 처리, 애니메이션 처리, 제스처 처리 등) 앱 화면을 구성하는 요소 포함(버튼, 테이블뷰, 슬라이더, 텍스트 필드, 경고창 등) UIResponder에서 파생된 클래스나 UI 관련 클래스는 메인 스레드(혹은 메인 디스패치 큐)에서만 사용할 것 UIApplication 모든 iOS 앱은 UIApplicationMain 함수를 실행 UIKit는 UIApplicationMain 함수를 실행하여 생성된 UIApplication 객체를 통해 앱 실행에 접근 가능 모든 iOS 앱은 단 하나의 UIApplication 인스턴스를 보유 UIApplication 객체는..
안드로이드 앱 개념 정리(4대 컴포넌트, Lifecycle) ி 앱 기본 항목 Android OS는 멀티유저 Linux 시스템 시스템이 각 앱에 고유한 Linux ID를 부여함 두 개앱이 Linux ID가 공유되도록 설정되면 서로 파일 액세스 가능(리소스 절약됨), 대신 같은 인증서로 서명해야함. Android 시스템은 최소 권한의 원리를 구현(필요한 액세스 권한만 요구) Android 패키지는 접미사가 .apk인 아카이브 파일 ி 앱 구성 요소 4대 컴포넌트 액티비티: 화면에 보여지는 구성 요소(UI)로서 하나의 화면이자 실행 단위 서비스: 백그라운드에서 앱을 계속 실행하기 위한 구성 요소 ex) 음악 재생 Broadcast Receiver: 디바이스에서 발생하는 이벤트 신호를 받아 처리하는 역할 ex) 알람, 배터리 부족 콘텐츠 제공자: 다른 앱이 현재 앱 정..
DIVA - 안전하지 않은 데이터 저장 DIVA 앱에서 Insecure Data Storage - Part2 를 선택하면 계정 정보 입력 창이 나온다. 아이디와 패스워드를 넣고 저장 버튼을 누르면 계정 정보들이 앱 내부 저장소에 저장된다. 소스코드를 보면 "ids2"라는 데이터베이스를 생성 후 "myuser"라는 테이블을 추가한다. 그리고 사용자의 입력값을 해당 테이블에 삽입한다. 계정 정보가 저장되는 코드에는 암호화 없이 평문으로 저장하고 있다. adb shell에서 해당 앱의 databases 폴더를 조회했을 때 입력한 값이 저장되는 db 파일들이 존재하며 방금 확인한 ids2 파일에 계정 정보가 저장된다. sqlite3에서 ids2 파일의 테이블을 조회하면 사용자가 입력한 로그인 정보를 확인할 수 있다.
루팅 탐지 우회 설명 안드로이드 기반인 리눅스는 각 사용자별로 각각에 맞는 권한을 주고, 그 권한 내에서만 시스템을 컨트롤할 수 있도록 구성되어 있다. 하지만 모든 권한을 보유한 root 계정은 안드로이드를 사용자 마음대로 변경을 할 수 있고 이를 획득하여 정상적으로 제어할 수 없던 시스템 파일이나 OS의 접근할 수 없던 부분까지 사용자 임의로 변경 및 삭제를 할 수있다. 때문에 앱에서는 이러한 보안상의 이유로 루트 권한을 제한하고 있고 이를 우회하여 강제적으로 루팅을 할 수있는지 점검해야 한다. 취약점 진단 루팅 체크에 주로 사용되는 경로는 아래와 같다. ① /system/bin/su ② /system/xbin/which ③ /system/app/superuser.apk ④ /data/data/com.noshufou...
브로드캐스트 리시버 취약점 설명 브로드캐스트 리시버는 디바이스에서 발생하는 이벤트 신호를 받아 처리하는 역할을 한다. 대표적으로 배터리 부족, 부팅 완료, 인증코드 입력 메시지 등이 있다. 배터리 부족 메시지는 배터리가 부족하면 모든 앱에 존재하는 브로드캐스트 리시버에게 배터리가 부족하다는 메시지를 전송한다. 그리고 각 앱의 브로드캐스트 리시버는 수신한 메시지를 그대로 사용자에게 전송하여 사용자는 최종적으로 배터리가 부족하다는 알림을 받게 된다. 이때 공격자는 임의의 브로드캐스트 신호를 생성하여 사용자가 받는 알림(메시지, 전화 등)을 가로 채거나, 특정 상황에서 발생하는 작업을 우회하여 수행할 수 있다. 취약점 진단 브로드캐스트 리시버는 Androidmanifest.xml 파일에 요소로 정의된다. MyBroadCastReceiv..
취약한 콘텐츠 프로바이더 접근 설명 콘텐츠 프로바이더는 다른 앱이 현재 앱 정보에 접근할 수 있도록 도와주는 컴포넌트이다. 예를들어 뮤직 플레이어 앱을 설치하면 내 핸드폰에 저장된 음악들을 조회하는 콘텐츠 프로바이더를 사용해서 음악 파일을 가져온다. 만약, 콘텐츠 프로바이더의 접근 권한이 설정되어 있지 않다면 외부에서 접근 권한이 없는 사용자가 데이터를 조회하거나 변경할 수 있다. 앱에서 콘텐츠 프로바이더에 접근하려면 콘텐츠 리졸버와 URI가 필요하다.