본문 바로가기

Security Study/Android

(10)
[InsecureBankv2] 취약한 암호화 실행 취약점 개요취약점 설명암호화 알고리즘에 대한 취약점으로, 중요 데이터 전송시 취약한 암호화 알고리즘을 이용하는 것을 의미한다. 취약한 알고리즘으로는 RC2, RC4, RC5, MD4, MD5, SHA1, DES, 3DES 등이 있다.보안 위협키값을 소지하지 않으므로 공격자가 똑같은 데이터를 만들고 변조가 가능하다.발생 위치LoginActivity.java 취약점 진단 과정Step 1) LoginActivity.java 확인username, password에 각각 아이디와 패스워드를 받아 저장한다. 아래의 if문을 보면, username은 Base64로 인코딩하여 저장하고, password는 aes 암호화를 진행하는 것을 확인할 수 있다. Base64는 암호화가 아니라 인코딩이므로, 쉽게 원래의 값을 알 ..
[InsecureBankv2] 안전하지 않은 웹 뷰 취약점 개요취약점 설명웹 뷰는 네이티브 앱에 내재되어 있는 웹 브라우저로, 일반 웹 브라우저와 달리 주소창, 새로고침, 즐겨찾기와 같은 기능은 없고 단순히 웹페이지만 보여줄 수 있다. 웹 뷰에서 자바스크립트 코드가 강제로 실행되게 함으로써 다른 사용자의 중요 정보를 탈취하는 취약점이다.보안 위협사용자가 의도하지 않은 스크립트를 실행하도록 하여 정보 탈취 등의 행위가 가능하다.발생 위치ViewStatement.java 취약점 진단 과정수동Step 1) ViewStatement.java 확인ViewStatement 액티비티에서 웹 뷰가 사용되는 것을 확인할 수 있다. 웹 뷰의 객체를 선언한 후, 접근할 파일 경로를 설정한다.if (fileToCheck.exists()) { //Toast.makeText(th..
[InsecureBankv2] 안전하지 않은 콘텐츠 프로바이더 접근 취약점 개요취약점 설명콘텐츠 프로바이더는 다른 애플리케이션의 데이터베이스, 파일 등에 접근할 수 있도록 도와주며, 접근하기 위해서는 uri가 필요하다. 안전하지 않은 콘텐츠 프로바이더는 uri에 접근할 수 있는 취약점을 말한다.보안 위협취약한 콘텐츠 프로바이더를 통해서 데이터가 노출될 수 있다.발생 위치AndroidManifest.xml 취약점 진단 과정adbStep 1) AndroidManifest.xml 확인프로바이더의 exported 속성이 “true”로 설정되어 있는 것을 확인할 수 있다. 또한, 취약한 프로바이더가 TrackUserContentProvider임을 알 수 있다.Step 2) 데이터 확인로그인 했던 결과가 출력되는 것으로 추측할 수 있고, 이를 통해 데이터를 조회할 수 있는 취약점이..
[InsecureBankv2] 루팅 탐지 및 우회 취약점 개요 취약점 설명 안드로이드 애플리케이션은 보안상의 이유로 루트 권한을 막아 놓았다. 루팅 탐지 및 우회는 루트 탐지를 우회하는 취약점을 의미한다. 보안 위협 관리자 권한을 획득할 수 있으며, 민감한 정보에 접근할 수 있다. 발생 위치 /system/bin/su, /system/xbin/su, /system/app/superuser.apk, /data/data/com.noshufou/android.su 취약점 진단 과정 Step 1) 루팅 확인 루팅 확인이 필수적인 금융 및 게임 애플리케이션에서는 다음의 4가지 항목을 필수적으로 점검한다. /system/bin/su /system/xbin/su /system/app/superuser.apk /data/data/com.noshufou/android...
[InsecureBankv2] 액티비티 컴포넌트 취약점 취약점 개요 취약점 설명 보안적으로 취약한 액티비티가 원래의 로직을 무시하고 강제로 다른 로직을 호출하는 취약점을 의미한다. 보안 위협 권한이 없는 사용자가 특정 액티비티에 접근하여 권한 없이 특정 기능을 활성화할 수 있다. 발생 위치 AndroidManifest.xml 취약점 진단 과정 adb Step 1) 액티비티 android:exported 속성이 true인 항목 확인 Step 2) 액티비티 실행 # am start -n [애플리케이션 설치 주소]/[패키지 주소] am start -n com.android.insecurebankv2/com.android.insecurebankv2.ChangePassword Step 3) 특정 사용자의 비밀번호 변경 로그에서 성공적으로 패스워드가 변경된 것을 확인할..
[InsecureBankv2] 로컬 암호화 이슈 취약점 개요 취약점 설명 중요 정보가 단말기에 저장될 때 암호화되어 있지 않거나 취약한 암호화 체계 사용, 또는 복호화 힌트가 소스코드 내 노출되어 있는 취약점을 말한다. 발생 위치 /data/data/com.android.insecurebankv2/shared_prefs/ 보안 위협 암호화하지 않으면 공격자에게 노출될 가능성이 높아진다. 취약점 진단 과정 Step 1) 인시큐어뱅크 애플리케이션의 데이터가 저장되는 곳으로 이동 com.android.insecurebankv2_preferences.xml, mySharedPreferences.xml 파일이 존재하는 것을 확인할 수 있다. cd /data/data/com.android.insecurebankv2/shared_prefs Step 2) 파일 내용..
[InsecureBankv2] 취약한 인증 메커니즘 취약점 개요 취약점 설명 인증 없이 또는 인증을 우회하여 시스템에 접근할 수 있는 취약점을 의미한다. 보안 위협 인증 없이 우회가 가능하여 다른 액티비티에 접근이 가능하다. 발생 위치 AndroidManifext.xml 취약점 진단 과정 adb Step 1) AndroidManifest.xml의 액티비티 확인 액티비티의 android:exported 속성이 “true”로 설정되어 있는 것을 확인할 수 있다. 이는 다른 액티비티에서 인증 없이 접근 가능함을 의미한다. Step 2) 액티비티 실행 로그인 없이 다른 액티비티로 이동한 것을 확인할 수 있다. # am start [애플리케이션 설치 주소]/[패키지 주소] am start com.android.insecurebankv2/com.android.ins..
[InsecureBankv2] 브로드캐스트 리시버 결함 취약점 개요 취약점 설명 브로드캐스트 리시버는 안드로이드 4대 컴포넌트 중 하나로, 시스템 및 앱 간에 이벤트를 전달하고 처리하는 데 사용되는 중요한 구성 요소이다. 설정에 문제가 있거나 악의적으로 사용될 경우 보안 위협을 초래할 수 있다. 보안 위협 브로드캐스트 리시버를 악용하여 악성 앱이 정상적인 앱의 브로드캐스트를 가로채거나 변조하는 등의 행위를 할 수 있다. 발생 위치 AndroidManifest.xml 취약점 진단 과정 adb Step 1) AndroidManifext.xml 확인 브로드캐스트 리시버의 android:exported 속성이 “true”로 설정되어 있는 것을 확인할 수 있다. Step 2) 브로드캐스트 리시버 실행 adb에서 브로드캐스트 리시버를 실행 후 logcat을 확인해보면 ..
[InsecureBankv2] 환경 구축 환경 Kali Linux(2023, bridge mode): InsecureBankv2, Android Studio, adb, drozer, Apktool, JD-GUI Windows 10: Nox Nox 설정 root 설정: 녹스 시스템 설정 > 일반 > ROOT 켜기 체크 개발자 모드: 설정 > 시스템 > 태블릿 정보 > 빌드 번호 연속 클릭 디버깅 모드: 설정 > 시스템 > 개발자 옵션 > USB 디버깅 모드 네트워크 설정: 녹스 시스템 설정 > 핸드폰 > 브릿지 모드 체크 InsecureBankv2 설치 서버 설정 https://github.com/dineshshetty/Android-InsecureBankv2에서 zip 파일 다운로드 후 압축 해제한다 파이썬 모듈 설치 wget https://b..
[Android] 안드로이드 4대 컴포넌트 애플리케이션 컴포넌트 (구성 요소) 안드로이드 앱의 필수적인 구성 요소, 각 독립된 형태로 존재하며 정해진 역할 수행 각 구성요소는 시스템이나 사용자가 앱에 들어올 수 있는 진입점 인텐트 (Intent): 다른 컴포넌트로부터 작업을 요청하는 데 사용할 수 있는 메시징 객체 액티비티 (Activity) 사용자와 상호작용하는 화면을 나타냄 하나의 애플리케이션에는 여러 액티비티가 존재할 수 있고, 각 액티비티는 특정 기능을 수행하는 화면을 담당 ex) 메인 화면, 로그인 화면, 설정 화면 등 서비스 (Service) 백그라운드에서 실행되는 컴포넌트 사용자 인터페이스(UI)는 제공하지 않음 백그라운드 작업을 처리하거나 다른 애플리케이션과 통신하는 역할 수행 ex) 음악 재생 서비스, 알림 서비스, 데이터 동기화..