목록Mobile App Penetesting (29)
외로운 Nova의 작업실
- 디바이스 관리자 앱을 활용한 홈버튼 기능 마비 디바이스 관리자 앱에대한 권한을 얻으면 홈버튼과 뒤로가기 버튼을 마비시킬 수 있다고합니다. 한번 만들어보겠습니다. package com.example.lockmalware import android.app.Activity import android.app.admin.DevicePolicyManager import android.content.ComponentName import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle import android.provider.Settings import android.view.V..

- 취약점 소개 키보드 캐시이슈는 사용자가 중요 정보를 클립보드에 저장하면 제삼자가 이러한 정보를 획득할 수 있는 취약점 입니다. 이 취약점을 악용하면 이전에 중요 정보를 복사하여 인증에 성공한 다른 사용자의 인증 정보를 활용해서 별다른 인증 절차없이 제삼자도 인증에 성공할 수 있습니다. 이러한 취약점이 있는 이유는 클립보드 접근 권한이 따로 없어서 아무나 클립보드에 접근할 수 있기때문입니다. - 취약점 진단 clipper 앱을 다운받아줍니다. https://m.apkpure.com/kr/clipper-clipboard-manager/org.rojekti.clipper/download/78-APK 이후 nox 에 설치해줍니다. 그런 다음 인시큐어 뱅크에서 계좌번호를 복사해줍니다. 이제 clipper에 가..
- 취약점 소개 로그는 서비스가 정상작동 하지않을때 고치기위해서 디버깅의 정보로 사용되는 중요한 정보입니다. 하지만, 사용자의 개인정보나 비밀정보를 로깅해버리면, 공격자가 로그를 보고 개인정보를 탈취할 수 있습니다. adb를 통해 로그를 확인할 수 있으며, 안드로이드 커널은 로그와 관련된 4가지 버퍼를 관리하고 있습니다. 그 종류와 특징은 아래와 같습니다. Main : 메인 앱 로그로서 앱이나 플랫폼 내부에서 android.util.Log 클래스로 기록된 로그 Event : 시스템에서 발생하는 이벤트 정보를 위한 로그 Radio : 이동통신망과 관련된 이벤트 정보 system : 안드로이드 플랫폼 내부의 하위 레벨에 있는 시스템이나 디버깅을 위한 로그 - 취약점 진단 먼저, 로그인시 로그인 계정이 남는지..

- 연구 개요 플레이스토어에서 어플을 보다보면 공부잠금 어플이라고해서 일정 시간을 설정하면 그 시간동안 핸드폰으로 아무것도 할 수 없게 만드는 어플이 있습니다. 이러한 기능을 악용해서 패스워드를 입력해야만 앱이 꺼지고 핸드폰을 사용할 수 있게하는 앱을 만들어서 패스워드 값으로 돈을 요구하는 LockMalware에대해서 구현해보는 연구를 해보겠습니다. - 메뉴바를 숨기고 뒤로가기 버튼 기능 마비 첫번째 시도에 넣어볼 것은 뒤로가기랑 홈버튼을 숨기고 뒤로가기 버튼을 눌렀을때 작동이 되지않는 앱을 만들고 홈 버튼 기능을 마비시키는 기능을 넣어보겠습니다. 비밀번호는 간단하게 1234로 했습니다. import android.os.Build import android.os.Bundle import android.v..

- 취약점 소개 앱을 실행하고 다양한 작업을 하게되면 힙 영역에 정보들이 남습니다. 이 힙 메모리 영역을 덤프해서 분석하면 유의미한 정보를 얻을 수 있습니다. 즉, 다른 앱이 금융권앱의 힙 메모리 영역을 덤프해서 공격자 서버로 보낸다면 아이디나 패스워드같은 정보를 얻을 수 있습니다. - 취약점 진단 먼저 앱을 켜서 계좌로 송금하는 작업을 해보겠습니다. 이를 해야 힙에 정보가 남습니다. 이후 메모리 덤프를 위해 PID를 알아야합니다. 아래 명령어로 PID를 알아냅니다. adb -e shell ps | grep inse PID가 6494인 것을 알았습니다. 이제 메모리 덤프를 해보겠습니다. adb shell am dumpheap 6494 /sdcard/Download/insecurebankv2_mem 649..

- 취약점 소개 요즘 배포되는 안드로이드 모바일 악성코드는 정상적으로 서비스되고 있는 앱을 조작하여 사용자 개인 정보를 포함해 원하는 데이터를 얻기위한 코드들만 삽입해서 사용하고 있습니다. 따라서 기업들은 조작하지못하도록 자사의 앱 변조방지 솔루션들을 도입하고 있습니다. 만약, 변조방지 솔루션을 사용안한다면 어떻게 조작하는지 알아보겠습니다. - 취약점 진단 과정 먼저 apk 파일을 디컴파일 해줍니다. apktool d app-release.apk app-release 폴더에 들어가게되면 디컴파일된 파일들이 있습니다. 이중에서 not rooted device!! 라는 문구를 위조하기 위해 postLogin.smali 파일을 찾아줍니다. C:\Android-InsecureBankv2-master\Insecu..
- 취약점 소개 해당 취약점은 암호 알고리즘에대한 취약점입니다. 알고리즘을 사용할때는 아래와 같은 것을 고려해야합니다. 어떤 암호알고리즘을 사용할 것 인가 키값은 어떻게 할 것인가 솔트값은 어떻게 할 것 인가 초기화 벡터는 어떻게 할 것인가. 알고리즘에도 취약한 알고리즘이 있을 수 있어서 안전한 알고리즘을 사용해야합니다. 또한, 키값은 하드코딩이 아닌 소프트코딩으로 진행하는 것이 좋으면 항상 변경되야합니다. 솔트값은 항상 사용하는 것이 좋습니다. 초기화 벡터는 알고리즘을 수행한이후 계산해서 사용하고, 끝나면 0으로 채워놓는 것이 좋습니다. insecurebankv2에서는 암호알고리즘을 잘 사용하고 있는지 봐보겠습니다. - 취약점 진단 LoginActivity.class 파일의 일부분을 보겠습니다. pro..

- 취약점 소개 프로바이더는 uri를 가지고 데이터베이스나 파일에 접근할 수 있는인터페이스를 제공합니다. 이때 외부에서 콘텐츠 프로바이더를 통해 중요한 데이터베이스나 파일에 접근할 수 있으므로 항상 검증하고 접근 관리를 해야합니다. 검증하지 않거나 접근 관리를 하지 않을때는 외부에서 중요한 데이터베이스나 파일에 접근할 수 있게 됩니다. - 취약점 진단 과정 먼저 프로바이더를 사용중인지 매니페스트파일을 봐보겠습니다. 위는 매니페스트 파일중 일부분 입니다. 프로바이더 이름과함께 exported속성이 true로 외부 앱에서 콘텐츠 프로바이더를 통해 데이터베이스에 접근할 수 있게 되어있는 것을 확인할 수 있습니다. 드로저를 통해 공격 표면에 포함되는지 확인해보겠습니다. 콘텐츠 프로바이더부분에 공격 표면이 1개 ..

- 취약점 소개 안드로이드 애플리케이션은 보안상의 이유로 루트 권한을 막아놓았습니다. 그래서 애플리케이션들은 각 프로그램마다 권한을 부여받아 독립적으로 동작합니다. 이러한 제한을 풀거나 우회하기 위해서는 시스템 권한을 루팅으로 획득해야합니다. 기기를 루팅하면 슈퍼유저의 권한으로 하드웨어 성능 조작, 기본 애플리케이션 삭제 등등을 할 수 있고, 디바이스 내부의 민감한 정보에 접그할 수도 있습니다. 따라서 금융권 애플리케이션들은 기본적으로 루팅된 기기에서의 앱 실행을 차단합니다. 또한, 최근 카드정보를 디바이스에 저장해 간단하게 결제하는 핀테크기술이 이슈가되면서 루팅된 기기는 보안 위협으로 감지하는 사례가 늘고 있습니다. - 취약점 진단 과정 먼저 앱을 키고 로그인을 하게되면 사전 환경 구축에서 루팅을 해놓..

- 취약점 소개 액티비티는 안드로이드 앱에서 화면을 의미합니다. 사용자가 정상적인 방법으로 로그인 화면 -> 비밀번호 변경 화면 순으로 접속해야하지만, 액티비티 취약점이 있는경우 로그인 화면없이 비밀번호 변경 화면으로 건너뛸 수 있습니다. - 취약점 진단 매니페스트 파일에 activity 선언태그 안에 exported 속성이 true로 되어있다면 다른 외부에서 액티비티 화면을 불러올 수 있음을 의미합니다. 따라서 드로저를 활용해 매니페스트 파일을 봐보겠습니다. dz> run app.package.manifest com.android.insecurebankv2 ChangePassword 액티비티의 경우 exported 속성이 true로 되어있는 것을 확인할 수 있습니다. 드로저로 노출된 액티비티들을 정리해..