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

로컬 암호화 이슈

원준킹 2020. 12. 22. 18:59

로컬 암호화 이슈

  • 중요 정보가 단말기에 저장될 때 암호화되어 있지 않는 취약점
  • 암호화하지 않고 평문으로 저장 시 여러가지 문제가 생길 우려가 있음

진단방법

  • 앱의 전반적인 기능들을 실행해보고 탐색
     모든 기능들을 테스트해보다 보면 저장되는 정보들이 많이 쌓여짐
  • DB 추출 후 중요정보 암호화 확인
  • DB 외의 파일들에서 중요정보 암호화 확인
  • 클라이언트단 소스코드 점검 및 암호화 로직 점검
  • adb pull /data/data/com.android.insecurebankv2 .
     adb shell -> cd /data/data

android 앱에서 필요한 data를 저장하는 위치

 

==로 끝나는 점으로 보아 base64 의심

 

암호화 = 키 필요
인코딩 = 키 필요 x
username은 암호화 안됨 확인
password는 암호화 됨

 

 

로그인 정보 자동입력 버튼을 눌렀을 때 실행되는 부분

 

 

mysharedpreference 에서 데이터를 불러오는 과정

username은 bases64 인코딩
password는 CryptoClass로 aes암호화 추정

 

DoLogin 클래스의 savecred로 로그인 성공 시 로그인 정보 저장

 

대응방안

  • 중요 정보를 다루는 코드 검토
  • 중요 정보 암호화 될 수 있도록 코드 추가 및 수정
  • 아이디도 암호화

로그인 정보 자동 입력버튼 클릭 시 password 처럼 username도 데이터를 받아와서 복호화 후 입력값과 비교

 

로그인 시 username 정보 저장 시에 base64 인코딩 방식에서 aes암호화 방식으로 변경 후 저장

username 또한 암호화 되어 저장됨 확인 가능

 

자동입력 버튼 누를 시 정상적으로 로그인 정보 입력 완료