-->

[인시큐어뱅크] 안드로이드 메모리 덤프 취약점

안드로이드 메모리 덤프 취약점 진단

인시큐어뱅크(InsecureBankv2) 앱을 실행시킨 후 ps 명령어로 pid를 찾아준다. pid처럼 보이는 숫자 4개가 연속되어있는데 첫번째 값이 인시큐어뱅크 앱의 pid 값이다. 그리고 덤프 저장을 위해 /data/data에 tmp 폴더를 생성해주었다.

 


# ps | grep insecure

# mkdir /data/data/tmp

 

 

 

< am dumpheap [PID] [파일이름.hprof] > 을 사용해 hprof 확장자로 덤프를 생성해준다.

 


# am dumpheap 18138 /data/data/tmp/insecure.hprof

# exit

 

> adb pull /data/data/tmp/insecure.hprof

 

 

 

그리고 strings64.exe를 사용해 내부의 문자열들을 추출해 insecure.txt로 저장했다. strings.exe는 여기서 다운받을 수 있다.

 


> strings64.exe ..\insecure.hprof > insecure.txt

 

 

 

내부 문자열을 확인해보면, 서버 ip/port 정보와 id/password 계정정보를 평문값으로 확인할 수 있다. 

 

 

 

계좌이체 정보는 strings64.exe를 사용해 굳이 문자열만 뽑은 txt 파일에서는 확인이 안됐고 hprof 파일에서 확인할 수 있었다. 

 

 

안드로이드 메모리 덤프 취약점 진단결과 및 대응방안

  • 메모리 덤프 생성 후 내부 문자열을 확인하니 중요정보의 평문값을 찾을 수 있었다. 기본적으로 중요정보는 암호화를 하여 저장해야 한다.
  • 사용자에게 입력값을 입력받아 저장하는 건 암복화의 문제가 아니라 어쩔 수 없이 메모리에 남게 된다. 암호화하기 전의 중요정보가 평문으로 메모리에 남는 것을 방지하려면 String 객체가 아닌 char형을 사용하고 메모리 초기화를 해주어야 한다 (참고: 안드로이드 String 메모리 보안이슈 해결하기)

 

댓글

Designed by JB FACTORY