Android/InsecureBankv2 31

인시큐어뱅크 앱 취약점 - 중요 정보 메모리 노출 취약점

인시큐어뱅크 앱 취약점 - 중요 정보 메모리 노출 취약점 취약점 소개 앱에서 사용하는 중요한 정보들은 암호화 되어 있으나 메모리로 올라오게 되면 평문으로 노출되는 취약점이다. 중요한 정보가 암호화되어 있더라도 메모리에 올라가면서 복호화 되는 것을 이용한다. 메모리 영역은 변수나 객체가 저장되는 영역으로 스택과 힙 메모리 영역으로 구분된다. 참조 타입은 값이 저장된 위치를 가리키는 변수를 말하며 해당 객체나 배열이 저장된 메모리 영역이 노출될 가능성이 있다. 또한 객체의 생성과 삭제를 관리하기 위해 가바지 컬렉터(GC)가 필요한데 이러한 상황에서 메모리 노출 취약점이 발생할 수 있다. 취약점 진단 다음 코드는 중요 정보인 비밀번호를 String 객체에 저장한다. String은 불변하는 객체이기 때문에 내부..

인시큐어뱅크 앱 취약점 - 앱 패칭 취약점

인시큐어뱅크 앱 취약점 - 앱 패칭 취약점 취약점 소개 앱 패칭 취약점이란 안드로이드의 클라이언트 코드를 변경해 비정상적인 작동을 유도하도록 APK 파일을 변조해 실행되는 취약점을 말한다. 대표적인 예로 배포된 악성코드들이 정상적인 서비스 앱을 조작해 사용자들을 유인함으로 인해서 사용자의 개인 정보, 공인 인증서, 휴대폰 정보 등을 탈취한다. 서버 인증이 아닌 클라이언트 단의 인증을 우회해서 여러가지 인증 절차를 무력화시킬 수 있다. 취약점 진단 릴리즈된 apk 파일을 확인 한 후 명령 프롬포트 창을 연 후 apktool -d app-release.apk 를 입력해 디컴파일한다. 디컴파일을 하면 app-release\smali\com\android\insecurebankv2 경로에 smail 코드가 생성..

인시큐어뱅크 앱 취약점 - 취약한 암호화 구현

인시큐어뱅크 앱 취약점 - 취약한 암호화 구현 취약점 소개 안드로이드 모바일 앱에서 사용되는 금융 정보, 개인 정보, 인증 정보 등의 중요한 정보는 기밀성을 보장할 수 없는 표준 암호화 알고리즘을 사용해 암화를 해야 한다. 하지만, 중요한 정보를 취약한 암호화 알고리즘, 고정적인 대칭키, 짧은 키, 유추하기 쉬운 키를 이용해 암호화를 하면 제 3자가 쉽게 해독이 가능하여 평문의 정보를 획득할 수 있다. 인시큐어뱅크 앱은 대칭키가 항상 고정적이고, 평문의 대칭키를 사용하고 있고, 모든 단말기에 동일한 대칭키를 이용해 암호화를 하므로 취약점이 발생한다. 취약점 진단 인시큐어뱅크 앱 내부 저장소에 저장된 mySharedPreferences.xml 파일을 열어보면 아이디는 Base64 인코딩 되어 있고, 비밀번..

인시큐어뱅크 앱 취약점 - 취약한 웹 뷰 구현

인시큐어뱅크 앱 취약점 - 취약한 웹 뷰 구현 취약점 소개 웹 뷰(안드로이드 앱의 UI 또는 패킷)에서 자바스크립트 코드가 강제로 실행되게 함으로써 다른 사용자의 중요 정보를 탈취하는 취약점(XSS)이다. 인시큐어 뱅크에서는 자바스크립트 코드가 로컬에서만 실행되게 할 수 있는데 만약 다른 사용자에게 자바스크립트 코드를 보낼 수 있다면 타 사용자가 의도하지 않은 코드의 실행 및 특정 중요정보 탈취 등의 행위가 가능한 취약점이다. 취약점 진단 웹 뷰를 어디서 어떻게 사용하는지 확인하기 위해서 안드로이드 스튜디오 → ctrl + shift + f → WebView 검색 위의 화면에서 ctrl + enter를 누르면 메인화면 하단에 검색 결과가 출력된다. Found Occurrences 하단의 Unclassfi..

인시큐어뱅크 앱 취약점 - 취약한 콘텐츠 프로바이더

인시큐어뱅크 앱 취약점 - 취약한 콘텐츠 프로바이더 취약점 소개 콘텐츠 프로바이더(Content Provider)란, 다른 앱이 데이터베이스에 접근할 수 있도록 도와주는 역할을 한다. 컨텐츠 프로바이더는 앞서 살펴본 액티비와 비슷하게 AndroidManifest.xml에 로 선언할 수 있다. 콘텐츠 프로바이더 취약점이 존재하게 되면, 데이터베이스에 접근할 권한이 없는데도 데이터베이스에 접근이 가능할 수 있게 된다. 취약점 진단 액티비티 취약점 진단과 비슷하게 android:exported=”true”로 설정되어 있는지 확인하면 된다. 인시큐어뱅크 앱의 AndroidManifest.xml의 를 살펴보면 아래와 같이 export 여부가 true로 설정되어있다. drozer를 사용해서 run scanner.p..

인시큐어뱅크 앱 취약점 - 취약한 액티비티 컴포넌트

인시큐어뱅크 앱 취약점 - 취약한 액티비티 컴포넌트 취약점 소개 안드로이드 액티비티는 애플리케이션을 구성하는 가장 기본적인 구성 단위 중 하나로 안드로이드 애플리케이션과 사용자 간에 상호 작용에 필요한 기능을 제공한다. 액티비티는 AndroidManifest.xml의 요소에 선언하며 하나의 애플리케이션은 하나 이상의 액티비티로 구성된다. 특정 액티비티는 MainActivity, 매니페스트에 메인 액티비티로 선언한다. MainActivity는 애플리케이션 시작 시 나타나는 화면이며, 애플리케이션 실행 후 조건에 따라 설정된 액티비티가 호출된다. 만약 새로운 액티비티 시작 시 기존에 실행된 액티비티는 시스템에서 스택에 저장되고 새로운 액티비티가 실행된다. 다시 기존에 액티비티를 실행하기 위해 뒤로가기 버튼을..

인시큐어뱅크 앱 취약점 - 루트 노출 및 우회 취약점

인시큐어뱅크 앱 취약점 - 루트 노출 및 우회 취약점 취약점 소개 루팅이란 안드로이드 디바이스 시스템 권한을 얻는 것이다. 리눅스 기반의 운영체제의 경우 시스템 루트 권한 취득이 가능하지만 안드로이드의 경우 보안상의 이유로 루트 권한을 막아 놓았으며 이로인해 행위의 제한이 생긴다. 이러한 제한을 풀거나 우회하기 위해서는 시스템 권한을 루팅으로 획득해야 한다. 기기를 루팅하면 슈퍼 유저의 권한으로 하드웨어 성능 조작, 제조사 및 통신사 기본 앱 삭제, 시스템 권한을 이용한 다양한 디바이스 조작이 가능하다. 루팅된 기기는 디바이스 내부의 민감한 정보에도 접근 가능하다. 취약점 진단 루팅 체크가 필수적인 금융 앱이나 게임 앱에서 주로 체크하는 경로 /system/bin/su /system/xbin/su /sy..

인시큐어뱅크 앱 취약점 - 중요 정보 하드 코딩 취약점

인시큐어뱅크 앱 취약점 - 중요 정보 하드 코딩 취약점 취약점 소개 하드 코딩은 데이터를 코드 내부에 직접 입력하는 것이다. 즉, 프로그램의 소스 코드에 데이터를 직접 입력해서 저장한 경우를 뜻하여 상수 사용도 하드 코딩에 속한다. 아이디, 비밀번호, 키 등 중요한 정보를 주석 처리하는 것도 모바일 앱에서는 하드코딩 취약점으로 판단되는데, 이는 안드로이드 모바일 앱의 디컴파일이 가능한 이유에서 정보가 노출되므로 그렇다. 아래와 같이 파일 입출력 시 파일의 경로를 직접적으로 입력한 경우도 해당한다. File file = new File("C:/yeonjun/123/"); 취약점 진단 인시큐어뱅크 앱의 하드코드된 데이터들을 찾아본다. 개발 단계에서 사용하는 로그인 계정의 아이디와 비밀번호를 알고 있다. 인시..

인시큐어뱅크 앱 취약점 - 백업 취약점

인시큐어뱅크 앱 취약점 - 백업 취약점 취약점 소개 안드로이드 시스템은 애플리케이션의 데이터를 백업할 수 있는 기능을 제공하는데 처음에는 구글 클라우드를 통한 백업만 가능했으나 4.0버전으로 업데이트 이후 사용자 로컬 PC에 데이터를 저장할 수 있게 되었다. 이를 로컬 백업 또는 전체 백업이라고 하는데, 사용자는 전체 백업을 통해 apk 파일, 데이터, 파일 등을 USB를 통해 사용자 PC에 저장할 수 있다. 클라우드 백업과 전체 백업의 차이는 다음과 같다. 클라우드 백업을 했을 때는 데이터가 클라우드에서 관리되므로 외부 유출이 적고 직접 관리하지 않아도 되어 다소 안전하지만 전체 백업은 사용자가 직접 백업을 진행하므로 데이터 유출에 대한 위험이 있다. 만약 이러한 과정에서 원치 않은 데이터나 파일이 백..

인시큐어뱅크 앱 취약점 - 로컬 암호화 취약점

인시큐어뱅크 앱 취약점 - 로컬 암호화 취약점 취약점 소개 안드로이드 애플리케이션에서 단말기에 주요 정보를 저장하기 위해서는 공격자에게 정보가 노출되지 않도록 평문이 아닌 암호화된 데이터로 저장해야 한다. 이러한 과정에서 발생하는 취약점을 로컬 암호화 취약점 이라고 한다. 암호화 과정에서 대칭키 암호화 방식은 키 배송 문제가 있어 공개키 암호화를 이용하여 수신자의 공개키로 암호화하고, 수신자의 개인키로 복호화하여 정보의 기밀성을 보장할 수 있다. (키 배송 문제: 대칭 키를 보내야만 복호화가 가능한데, 이 키를 어떻게 사전에 안전하게 배송할 것인가의 문제이다.) 취약점 진단 Autofill Credential 기능 확인 다음 화면은 인시큐어뱅크 앱에서의 초기 로그인 화면이다. Autofill Creden..