본문 바로가기

Security/Mobile12

단말기 내 중요정보 저장 여부 취약점 개요 애플리케이션 사용 폴더 및 외부 저장소에 존재하는 파일 내 중요정보 저장 여부를 점검한다. 외부저장소에는 어떤 정보이든 서비스에 중요한 역할을 하는 정보를 저장해서는 안되며, 내부 저장소에 저장이 되더라도 암호화되어 안전하게 저장되어야 한다. 내부저장소와 외부저장소 안드로이드는 데이터를 저장할 때 내부 저장소와 내부 저장소로 나눌 수 있다. 내부 저장소 - 안드로이드 플랫폼, 시스템 등에서 사용되는 공간 - 안드로이드 API에 의해 권한이 통제 외부 저장소 - 애플리케이션 간 데이터 공유 가능 - WRITE_EXTERNAL_STROAGE 권한을 갖고 있는 애플리케이션은 설정에 따라 데이터를 읽고 쓰는 것이 가능 데이터를 저장하는 방법 1) Shared Preferences - 원시 데이터를 .. 2020. 10. 23.
메모리 내 중요정보 저장 여부 취약점 개요 앱에 입력하는 모든 입력값과 앱이 실행되는 모든 정보들이 메모리에 적재되어 실행된 후, 실행이 완료되면 다른 데이터들로 채워진다. 해당 이용자 단말기 메모리 영역에서 이용자 중요정보의 평문 노출 여부 점검한다. Honeycomb이후 버전의 메모리 구조 안드로이드에서는 자바 가상머신 대신 달빅 가상머신을 사용하여 앱을 구현한다. 프로세스가 실행될 때마다 달빅 가상 머신을 사용하여 동작에 필요한만큼 메모리를 할당하고, 더 사용해야 한다면 프로세스당 허용된 메모리 내에서 할당한다. (허용된 메모리 한계 이상을 사용하면 OOM(Out Of Menory)에러가 발생한다. 애플리케이션이 실행되는 동안 참조하고 정보를 저장하는 메모리 영역은 "Dalvik heap allocated" 영역이므로 해당 영역.. 2020. 10. 22.
DDMS(Dalvik Debug Monitoring Service) 설치 방법 1. JAVA SDK 설치 2. DDMS 다운로드 http://www.mediafire.com/file/2u0a1a6v3wuub8v/asdk_x86_r24.1.2.zip 2019. 6. 7.
안드로이드 루팅 탐지 안드로이드 루팅 탐지 SU 명령어로 확인 su 명령어가 실행여부로 확인 try { Runtime.getRuntime().exec("su"); } catch ( Exception e) { //Exception이 발생한다면 Rooting이 되지 않은 것으로 확인 } 프로세스 리스트로 확인 루팅 관련 프로세스 존재 여부로 확인 Runtime.getRuntime().exec("ps") 루팅 관련 어플 확인 루팅 관련 어플 설치여부로 확인 KingRoot spapaRoot owelRoot SU파일 존재 유무 확인 su 파일 존재 유무로 확인 /system/bin/su /system/xbin/su /sbin/su /system/su /system/bin/.ext/.su /system/usr/su-backup sys.. 2019. 6. 4.
Android Manifest.xml 파일 구조 https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ko 2019. 6. 4.
smali(dalvik opcode) 참고 https://i2sec.github.io/files/2017-10-20/study_dalvik_smali.pdf https://www.slideshare.net/paller/understanding-the-dalvik-bytecode-with-the-dedexer-tool https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html https://hyeonbell.tistory.com/1 https://strongslaves.tistory.com/29 2019. 6. 4.
드로저 사용법 드로저(drozer) - 모바일 애플리케이션 취약점 진단 프레임워크인 머큐리의 새로운 업데이트 버전 - 윈도우와리눅스 지원 - JRE, JDK, 안드로이드 SDK가 설치되어 있어야 사용 가능 - 가상 디바이스뿐만 아니라 실제 안드로이드 디바이스에서 테스트 가능 - 자동 테스팅 가능 - 안드로이드 익스플로잇과 같은 다양한 시나리오를 통해 취약점 점검 가능 - 모듈 명령어이기 대문에 다양한 기능 추가 및 삭제 가능 - 공격 코드 제공 - 모듈들은 파이썬으로 작성 드로저 동작 방식 - 안드로이드 가상 디바이스 또는 단말기에 에이전트 설치 후 PC에서 ADB로 명령 내리는 서버와 클라이언트 방식으로 동작 드로저 설치 https://www.mwrinfosecurity.com/products/drozer/ 1) W.. 2019. 6. 1.
ADB(Android Debug Bridge) 사용법 ADB(Android Debug Bridge) - 안드로이드 애뮬레이터나 PC에 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구 - CLI를 통해 명령어를 입력하여 안드로이드 기기와 통신 ADB 설치 위치 - 안드로이드 SDK에 기본적으로 포함 - SDK 폴더의 하위 폴더인 platform-tools에 포함 - Nox의 ADB 경로 : C:\Program Files (x86)\Nox\bin ADB 동작 과정 1. ADB 클라이언트가 시작되면 가장 먼저 ADB 서버 프로세스가 실행중인지를 점검 2. 만약 서버 프로세스가 실행 상태가 아니라면 서버 프로세스를 구동 3. 서버가 구동되면서 TCP 5037 포트에 바인드시키고, 모든 클라이언트는 5037 포트를 통해 ADB 서버와 통신 1) 서버가 동작.. 2019. 6. 1.
안드로이드 애플리케이션 디컴파일 도구 안드로이드 빌드 과정 .java -> .class-> .dex-> .apk -> sign 안드로이드 디컴파일 방법 및 도구 1. .apk -> .dex -> .smali : 1) 2. .apk -> .dex -> .jar -> .class -> .java : 2) (3. .apk -----------------------------> .java : 3), 4), 5)) 1) APK Tool 사용 APK Tool https://ibotpeaches.github.io/Apktool/install/ APK Easy Tool 구글링 - APK Tool 설치를 위해서는 먼저 JAVA JDK를 설치해야 함 JAVA JDK 설치 https://www.oracle.com/technetwork/java/javase/do.. 2019. 6. 1.
모바일 프록시 설정 Fiddler https://www.telerik.com/fiddler Configure Fiddler for iOS https://docs.telerik.com/fiddler/configure-fiddler/tasks/configureforios Configure Fiddler for Android https://docs.telerik.com/fiddler/configure-fiddler/tasks/configureforandroid 2019. 6. 1.
에뮬레이터 1. 녹스 https://kr.bignox.com/ 녹스 ADB(안드로이드 디버그 브릿지) - 안드로이드를 위한 디버깅 툴로 안드로이드 에뮬레이터와 통신할 수 있도록 해줌 - 경로 : C:\Program Files (x86)\Nox\bin\nox_adb 실행 $ nox_adb $ nox_adb shell 2. LDPlayer http://kr.ldplayer.net/ 3. 블루스택 4. 안드로이드 스튜디오 AVD https://developer.android.com/studio 5. 제니모션 https://www.genymotion.com/#!/store 2019. 6. 1.
안드로이드 4대 컴포넌트 안드로이드 4대 컴포넌트(구성요소) - 각 컴포넌트는 하나의 독립된 형태로 존재 - 각각의 컴포넌트는 인텐트를 통해 상호 통신함 (즉, 액티비티에서 다른 컴포넌트 호출시 인텐트를 거쳐야 함) Activity - 사용자가 어플리케이션과 상호작용하는 단일 화면 - UI(User Interface) 화면을 가지며 특정한 작업을 담당하는 컴포넌트 - UI 화면을 담당하는 컴포넌트 - 자바소스에서 Activity클래스를 상속해야 하며 액티비티가 기본적으로 가지고 있는 생명주기 메소드를 재정의하여 원하는 기능을 구현하는 방식으로 제작함 (일반적으로 하위호환을 위해 AppCompatActivity 서브클래스를 사용) - 가장 많이 쓰이는 컴포넌트 - 안드로이드 어플리케이션은 반드시 하나이상의 엑티비티를 가지고 있어야.. 2019. 5. 15.