Android/InsecureBankv2 31

인시큐어뱅크 앱 취약점 - 취약한 비밀번호 변경 로직

인시큐어뱅크 앱 취약점 - 취약한 비밀번호 변경 로직 취약점 소개 비밀번호 변경 구현 취약점은 모바일 앱의 비밀번호 변경 기능을 사용할 때 취약하게 구현되어 있어 제 3자가 비밀번호를 변경할 수 있는 취약점이다. 인시큐어뱅크 앱은 비밀번호 변경 버튼을 클릭하면 로그인 중인 사용자의 현재 비밀번호를 입력받지 않고 새로운 비밀번호를 변경할 수 있다. 실질적으로 사용자에게 배포한 앱에 이런 취약점이 있다면 여러 사용자의 비밀번호를 일괄적으로 변경할 수 있고, 중요한 정보와 민감한 정보를 획득할 수 있는 중대한 취약점이 존재한다. 취약점 진단 보안이 잘 적용되어 있는 다른 포탈 사이트는 로그인 후 비밀번호 변경 페이지에 접속하면 현재 비밀번호, 새로운 비밀번호, 새로운 비밀번호 확인 총 3단계를 거친다. 하지만..

인시큐어뱅크 앱 취약점 - 개발자 백도어 취약점

인시큐어뱅크 앱 취약점 - 개발자 백도어 취약점 취약점 소개 개발자 백도어 취약점은 개발자가 편하게 사용자처럼 인증이 가능하고 여러 가지 업무를 수행하기 위해 자신만이 들어갈 수 있는 계정, 인증 우회 방법을 말한다. 개발자 본인에게는 편할 수 있지만 추후에 배포용 어플리케이션, 서버 코드에 개발 백도어 코드가 삽입되면 어플리케이션 보안에 매우 취약할 수 있다. 취약점 진단 DoLogin.java 파일을 열고 소스코드를 보면 httppost2를 선언해 username이 devadmin이면 별다은 암호 인증 처리 없이 로그인이 가능하다는 걸 추측할 수 있다. 인시큐어 뱅크 앱을 실행시킨 후 devadmin, 123123으로 입력하고 로그인을 시도한다. 다음과 같이 devadmin 계정은 아무 비밀번호나 입..

인시큐어뱅크 앱 취약점 - 사용자 계정 목록화 취약점

인시큐어뱅크 앱 취약점 - 사용자 계정 목록화 취약점 취약점 소개 사용자 계정 목록화 취약점은 모바일 앱에 가입되어 있는 사용자의 계정 정보가 암호화하지 않고 평문으로 노출되어 있는 취약점이다. 인시큐어 뱅크 앱은 사용자의 아이디를 데이터베이스 파일에 평문으로 저장한다. 평문으로 저장된 아이디를 무작위 대입 공격, 비밀번호 추측 공격을 시도하여 비밀번호를 획득하여 모바일 앱에 로그인한 후 중요 정보를 획득할 수 있다. 인시큐어뱅크 앱은 아이디만 노출되어 있는데, 로그인 중인 사용자의 쿠기 값을 데이터베이스 파일에 저장한다. 쿠키 값은 AES로 암호화되어 있지만 하드 코딩되어 있는 대칭키로 충분히 복호화가 가능하다. 취약점 진단 사용자의 계정 정보는 내부 저장소 내의 database 디렉토리에 저장되므로 ..

인시큐어뱅크 앱 취약점 - 취약한 HTTP 통신 및 파라미터 조작 취약점

인시큐어뱅크 앱 취약점 - 취약한 HTTP 통신 및 파라미터 조작 취약점 취약점 소개 HTTP는 평문 데이터로 통신하므로 중간자 공격을 통해 중요 데이터가 노출될 수 있다. 파라미터에 입력 값 검증이 이루어지지 않으면 공격자는 파라미터 정보를 수정해 악용할 경우, 가격 변조, 개인 신상 유출, 신용카드 도용 등과 같은 피해가 발생할 수 있다. 취약점 진단 Burp Suite 도구를 사용하기 위해 먼저 Nox 에뮬레이터에 프록시 설정을 해야한다. 설정 → WiFi 에서 WiredSSID를 길게 클릭하면 아래와 같이 WiredSSID 네트워크 수정 창이 뜨게 된다. 고급 옵션의 수동 탭에 들어가서 자신의 IP를 프록시 호스트 이름에 설정하고 버프스위트 기본 프록시 포트 번호는 8080이므로 8080으로 설정..

인시큐어뱅크 앱 취약점 - 취약한 SD카드 스토리지

인시큐어뱅크 앱 취약점 - 취약한 SD카드 스토리지 취약점 소개 안드로이드는 내부 저장소와 외부 저장소로 나뉘는데 SD카드는 외부 저장소로 모든 어플리케이션이 접근할 수 있는 영역이다. 이러한 SD카드에 중요 정보가 다른 어플리케이션에 의해 노출될 수 있다. 취약점 진단 AndroidManifest.xml 파일을 확인하면 WRITE_EXTERNAL_STORAGE와 READ_EXTERNAL_STORAGE 권한이 설정되어 있다. apk 디컴파일을 수행한 후 DoTransfer 클래스를 살펴보면, “Message: ~” 문자열을 구성한 뒤 getExternalStorageDirectory()로 SD카드 저장소 경로를 구하고 + /Statements_[유저네임].html에 저장하고 있다. Transfer에 실패..

인시큐어뱅크 앱 취약점 - 안드로이드 키보드 캐쉬 취약점

인시큐어뱅크 앱 취약점 - 안드로이드 키보드 캐쉬 취약점 취약점 소개 사용자가 중요 정보를 클립보드에 저장하면 제 3자가 이러한 정보를 획득할 수 있는 취약점이다. 키보드 캐시는 안드로이드의 TextView와 같은 컴포넌트에서 사용자가 중요 정보를 클립보드에 복사할 수 있을 때 임시로 복사한 데이터를 저장하는 곳이다. 취약점 진단 실습을 위해 clipper-2.4.6.apk를 다운받고 가상 디바이스에 설치한다. clipper.apk는 아래 사이트에서 설치 가능하다. http://www.apk20.com/apk/95059/v/63301/ adb 명령어를 이용해 apk를 다운로드한 폴더로 이동한 뒤 install 명령어로 설치한다. 인시큐어뱅크 앱에 로그인을 한 후 계좌 전송에 계정 숫자를 복사한다. 클립보..

인시큐어뱅크 앱 취약점 - 런타임 조작

인시큐어뱅크 앱 취약점 - 런타임 조작 취약점 소개 런타임 조작 취약점이란 앱이 실행되는 도중 메모리상에 악의적인 행동을 하는 취약점이다. 취약점 진단 모든 기능이 메모리상에 올라가야 런타임 조작이 가능하기 떄문에 jdb에 사용할 인시큐어뱅크 앱 디버깅 포트 번호를 확인한다. 인시큐어뱅크 앱을 실행 후 앱 디버깅 포트 번호를 확인하면 다음과 같이 4053 이라는 디버깅 포트가 나왔다. adb를 통해 디버깅 포트를 로컬 포트로 포트포워딩 해준 후 jdb 명령어를 통해 로컬 디버깅 포트로 연결한다. 로그인을 하지 않고 패스워드를 변경하기 위해서는 ChangePassword 액티비티를 컴포넌트 취약점을 사용하여 강제로 실행시켜야 한다. nox_adb shell am start -n com.android.ins..

인시큐어뱅크 앱 취약점 - 앱 디버깅 취약점

인시큐어뱅크 앱 취약점 - 앱 디버깅 취약점 취약점 소개 안드로이드 앱을 구동한 후 런타임 디버깅을 통해 안드로이드 앱을 실행도중 조작할 수 있는 취약점이다. 난독화가 안되어있다면 앱의 흐름을 더욱 쉽게 간파당한다. AndroidManifest.xml 파일에서 android:debuggable 속성이 true로 설정되어 있는 경우 설치된 앱의 보호된 영역까지 접근이 가능하게 된다. 대부분 이러한 취약한 설정은 개발자들의 편의를 위한 설정으로 발생한다. 하지만 이러한 취약한 설정은 배포된 앱의 중대한 보안결함이 발생하므로 반드시 조치해야 한다. 취약점 진단 Drozer 도구로 먼저 insecurebankv2 앱을 진단해보면 is debuggable 이라고 앱 디버깅이 가능하다는 취약점이 나왔다. Andro..

인시큐어뱅크 앱 취약점 - 페이스트보드 취약점

인시큐어뱅크 앱 취약점 - 페이스트보드 취약점 취약점 소개 사용자의 중요한 데이터가 메모리(클립보드)에 노출되어 있는 취약점이다. 클립보드에 저장된 데이터를 별도의 권한 없이 허가되지 않은 사용자에게 노출되어 있는 취약점이다. 취약점 진단 Insecurebankv2 앱의 Transfer 에서 from Account를 클립보드로 복사한다. nox_adb shell 명령어를 사용하여 Insecurebankv2 앱을 실행하는 유저 명을 확인한다. adb shell su 유저명 service call clipboard 2 s16 com.android.insecurebankv2 명령을사용해 클립보드를 검사해보면 복사했던 From Account가 출력되는 것을 확인할 수 있다. 대응 방안 중요한 데이터는 가급적 복..

인시큐어뱅크 앱 취약점 - 취약한 로깅 메커니즘

인시큐어뱅크 앱 취약점 - 취약한 로깅 메커니즘 취약점 소개 로그(Log)는 프로그램 구동 시 프로그램의 현재 상태, 처리하는 데이터 정보를 말한다. 로그를 통해 관리자나 개발자는 중요한 정보를 제공받을 수 있으며, 특히 프로그램에 버그가 있을 때 이를 유지보수 하는데 사용할 수 있다. 취약한 로깅 메커니즘은 이러한 로그에 노출되어서는 안되는 중요한 데이터 또는 민감한 데이터가 로그로 남겨지는 경우를 말한다. 취약점 진단 adb로 로그인 과정을 logcat을 이용해 확인해보면 다음과 같이 로그인 한 계정의 정보가 평문으로 노출되는 것을 확인 가능하다. 대응 방안 다음 DoLogin 소스코드를 살펴보면 로그인이 성공했다면 로그에 Successful Login 다음으로 계정의 아이디와 비밀번호를 출력하는 것..