1 메모리내 민감한 정보 저장 취약점 분석
(1) 다음과 같은 명령어를 PowerShell에서 차례대로 실행한다.
adb root
adb shell
(2) 위의 명령어들은 adb 상에서 루트 권한으로 쉘 명령어를 실행할 수 있게 한다.
(3) InsecureBankv2 앱의 PID를 알아내기 위해 adb 프롬프트 (generic_x86_64:/ #) 상에서 다음의 명령어를 실행한다.
ps -ef | grep inse
(4) InsecureBankv2 앱의 Get Account나 Transfer 기능을 이용해서 이체를 수행한다.
(5) adb 프롬프트 (generic_x86_64:/ #) 상에서 아래의 명령어를 실행하여 InsecureBankv2 앱의 힙 메모리 영역 내용을 /data/local/tmp/insecurebankv2_mem 파일에 작성한다.
am dumpheap 14548 /data/local/tmp/insecurebankv2_mem
(6) AVD로부터 /data/local/tmp/insecurebankv2_mem 파일을 다운로드 받아서 C:\Users\사용자이름\Desktop 폴더에 저장하기 위해서, 아래의 명령어를 PowerShell상에서 수행한다.
adb pull /data/local/tmp/insecurebankv2_mem C:\\Users\\01-05\\Desktop
(7) PowerShell상에서 다음의 hprof-conv.exe 프로그램을 통해서 insecurebankv2_mem의 포맷을 변환한다.
hprof-conv.exe C:\\Users\\01-05\\Desktop\\insecurebankv2_mem C:\\Users\\01-05\\Desktop\\new_insecurebankv2_mem
(8) https://mh-nexus.de/en/downloads.php?product=HxD20 사이트에서 HxD 프로그램을 다운로드 받아서 바탕화면에 설치한다. HxD 프로그램을 통해서 new_insecurebankv2_mem의 내용을 확인한다. HxD 프로그램의 찾기에서 Amount, Dinesh, Username, Password 의 키워드들로 탐색하면 계정 정보나, 이체금액, 계좌번호등을 확인할 수 있다.
2 메모리내 저장된 민감한 정보들이 유출되지 않도록 하기 위한 방안
- 암호화 및 난독화를 통해 확인하기 어려운 상태로 만드는 것
- 복호화하는 과정도 동적인 힙에 저장될 수 있음 → 힙을 덤프하면 유출 가능
- 민감한 정보들 자체가 힙에 저장되지 않도록 하는 것!
- AOS 외부의 하드웨어 등을 사용하여 처리하도록!