인시큐어뱅크 활용 안드로이드 모의해킹 공부 18

하드코드 된 중요 정보

하드코드 된 중요 정보 어떤 데이터가 코드내에 그대로 입력된 것을 하드 코딩되었다고 한다. 중요 정보가 소스코드에 그대로 노출되어 있다면 소스코드 노출 시 중요 정보가 그대로 제 3자에게 노출될 가능성이 있다. 개발 시 개발자가 편의를 위하여 입력 받아야 할 정보를 소스코드 내에 바로 입력함으로써 실행 시 UI상에서 입력하지 않고 바로 실행하도록 하는 것도 하드 코딩된 취약점 중하나이다. 인시큐어뱅크 앱에서는 총 3곳에서 하드코딩 된 취약점을 발견할 수 있다. 진단방법 코드 분석 시 암호화 클래스 부분을 상세 분석하도록 한다. 중요 정보 문자열 검색을 통해 검토 및 조치한다. 하드 코딩된 키 하드 코딩된 특정 사용자의 비밀번호 대응방법 중요정보가 하드코딩 되지 않도록 코드를 지우거나 중요정보가 동적으로 ..

취약한 액티비티 컴포넌트

액티비티 : 눈에 보이며 사용자와 상호작용하는 곳 취약한 액티비티 컴포넌트 정상적 과정 : 로그인 화면 -> 메인 메뉴 -> 음악 듣기 비정상적 접근 : 로그인 없이 바로 음악듣기 진단방법 AndroidManifest.xml에 있는 컴포넌트 점검 Activity 컴포넌트가 구현된 해당 클래스의 onCreate() 메소드부터 전체 코드 점검 adb shell -> am start -n com.android.insecurebankv2/.ChangePassword adb로는 권한이 없어도 무조건 실행되기 때문에 권한 검사를 할 수 없다. Droze로 진단. run app.package.attacksurface com.android.insecurebankv2 run app.activity.info -a com...

사용자 계정 목록화

사용자 계정 목록화 인시큐어뱅크에서는 접속한 사용자의 아이디값이 노출되는 문제점이 존재한다. 이러한 아이디 노출 시 패스워드 무작위 대입 공격이나 사회적인 공격이 가능하므로 제3자에게 사용자들의 아이디값을 노출시키는 것은 상당히 위험하다. 대응방안 중요정보로 사용되는 정보들은 반드시 암호화해서 저장하고 외부에 노출되지 않도록 내부 저장소에 저장하도록 조치한다. 기기 내의 패키지 폴더 안에 저장된 db파일로부터 로그인 기록 확인 가능 username 암호화 작업 필요 암호화되어 저장됨 확인

취약한 인증 메커니즘

취약한 인증 메커니즘 어플리케이션 사용시 약한 인증 관리로 침해돼선 안될 부분이 침해되어 사용자에게 피해를 입히는 취약점 Insecurebankv2 앱의 Transfer 기능은 약한 사용자 인증으로 인해 From 값을 변조하여 다른 사람의 계좌에서 돈을 보낼 수 있는 취약점이 존재 진단방법 SQLiteBrowser를 활용하여 서버의 DB 점검 Transfer 기능을 담당하는 컴포넌트의 소스코드 점검 Insecurebankv2의 서버인 app.py의 소스코드 점검 SQLiteBrowser를 활용하여 서버의 DB 점검 서버의 db파일 돈을 송금하는 계좌를 별도의 인증없이 다른 유저의 계좌로 바꿀 수 있음 Transfer 기능을 담당하는 컴포넌트의 소스코드 점검 전송 버튼 안드로이드 클라이언트 측에서는 그냥 ..

취약한 SD카드 스토리지

취약한 SD카드 스토리지 안드로이드는 내부 저장소와 외부 저장소로 나뉘는데 SD카드는 외부저장소로 모든 어플리케이션이 접근할 수 있는 영역이다. 이러한 SD카드에 중요 정보가 다른 어플리케이션에 의해 노출될 수 있다. 진단방법 AndroidManifest.xml 파일의 권한 중 WRITE_EXTERNAL_STORAGE 권한이 있는지 확인한다. 코드 분석을 통해 getExternalStroageDirectory() 메소드가 사용되는지 확인하고 사용된다면 어떤 정보들이 저장되는지 확인한다. 단말기를 통해 실제 어떤 정보들이 저장되어 있는지 SD카드에서 확인한다. MODE_WORLD_READABLE 또는 MODE_WORLD_WRITEABLE 모드가 사용 중인지 확인한다. 대응방안 중요 정보 저장 시 외부 저장..

로컬 암호화 이슈

로컬 암호화 이슈 중요 정보가 단말기에 저장될 때 암호화되어 있지 않는 취약점 암호화하지 않고 평문으로 저장 시 여러가지 문제가 생길 우려가 있음 진단방법 앱의 전반적인 기능들을 실행해보고 탐색  모든 기능들을 테스트해보다 보면 저장되는 정보들이 많이 쌓여짐 DB 추출 후 중요정보 암호화 확인 DB 외의 파일들에서 중요정보 암호화 확인 클라이언트단 소스코드 점검 및 암호화 로직 점검 adb pull /data/data/com.android.insecurebankv2 .  adb shell -> cd /data/data  암호화 = 키 필요 인코딩 = 키 필요 x username은 암호화 안됨 확인 password는 암호화 됨 username은 bases64 인코딩 password는 CryptoCla..

안드로이드 백업 취약점

안드로이드 백업 취약점 AndroidManifest.xml 파일의 android:allowBackup 속성이 “true” 설정 시 단말기 백업 시 중요 정보 및 인증 정보를 노출하게 된다. 사용자가 단말기를 잃어버린경우 제3자에 의해 이러한 백업 취약점을 이용해 단말기를 사용하던 사용자의 중요 및 민감정보가 제3자에게 노출될 수 있는 취약점이다. 진단 방법 앱 내의 정보 adb backup -f  adb backup -f insecurebank.ad com.android.insecurebankv2 안드로이드 단말기에서 비밀번호 입력없이 백업 java -jar abe-all.jar unpack  ad 파일을 읽을 수 있는 tar 파일로 변환  java -jar abe-all.jar unpack ins..

취약한 브로드캐스트 리시버

안드로이드 시스템이 인텐트라는 메시지로 정보 전달 취약한 브로드캐스트 리시버 : 다른 앱이 인텐트를 사용하여 비밀번호 변경기능 접근 (접근제어X) Adb로 진단방법 - AndroidManifest.xml에 있는 컴포넌트 점검 - Receiver 컴포넌트가 구현된 해당 클래스의 onReceiver() 메소드 기능 점검 - adb shell –> am broadcast -a theBroadcast -n com.android.insecurebankv2/.MyBroadCastReceiver n 인자없이 메시지 전달 n theBroadcast : 메시지 n com.android.insecurebankv2/.MyBroadCastReceiver : 어떤 패키지의 어떤 컴포넌트 지정 - am broadcast -a t..