[InsecureBankv2] Hardcoded secrets

133210·2021년 8월 30일
0

InsecureBankv2

목록 보기
5/7
post-thumbnail

| Hardcoded secrets

  • 하드코딩: 프로그램 개발자가 기억하기 쉽도록 특정한 정보를 소스코드에 그대로 입력한 것
  • 모바일 앱 실행 시 사용자에게 입력받아야 할 정보를 소스코드에 입력하거나 변수, 아이디, 비밀번호, 대칭키 등 중요 정보를 주석처리 하는 것
  • 안드로이드 어플리케이션은 디컴파일이 가능하기 때문에 중요 정보를 하드코딩 하는 행위는 위험함

| 디컴파일

  • adb 사용하여 apk 파일의 위치 확인
adb shell
root@shamu:/ # pm list package -f insecurebankv2

  • adb pull <apk 위치> <저장할 위치>로 apk 추출
adb pull /data/app/com.android.insecurebankv2-1/base.apk C:\Users\JEY\Documents\2021\SISS\Incognito\Insucurebank\

  • apktool 사용하여 디컴파일
apktool d base.apk

  • 디컴파일 파일 확인

  • build > apk > classes.dex 파일을 dex2jar로 옮겨서 jar 파일로 변환
d2j-dex2jar *.dex

  • 생성된 jar 파일 jd-gui로 확인

| 코드 확인

  • CryptoClass.class에 key = "This is the super secret key 123"; 이라고 저장된 것을 확인 가능
  • key 변수는 암호화 및 복호화 할 때 사용되는 대칭키
  • 대칭키가 복호화되지 않고 평문으로 저장되어 있으면 제 3자가 대칭키 탈취 가능
  • 탈취한 키로 암호화 된 데이터를 쉽게 복호화 가능

| 대응방안

  • 소스코드에 아이디, 비밀번호, AES 대칭키 등을 평문으로 저장하거나 주석으로 처리하지 않기 (중요 정보 하드코딩 하지 않기)

0개의 댓글