외로운 Nova의 작업실

insecurebankv2 - 메모리내 민감한 정보 저장 본문

Mobile App Penetesting/Android App Vulnerability

insecurebankv2 - 메모리내 민감한 정보 저장

Nova_ 2023. 5. 19. 20:51

- 취약점 소개

앱을 실행하고 다양한 작업을 하게되면 힙 영역에 정보들이 남습니다. 이 힙 메모리 영역을 덤프해서 분석하면 유의미한 정보를 얻을 수 있습니다. 즉, 다른 앱이 금융권앱의 힙 메모리 영역을 덤프해서 공격자 서버로 보낸다면 아이디나 패스워드같은 정보를 얻을 수 있습니다.

 

- 취약점 진단

먼저 앱을 켜서 계좌로 송금하는 작업을 해보겠습니다. 이를 해야 힙에 정보가 남습니다.

이후 메모리 덤프를 위해 PID를 알아야합니다. 아래 명령어로 PID를 알아냅니다.

adb -e shell
ps | grep inse

PID가 6494인 것을 알았습니다. 이제 메모리 덤프를 해보겠습니다.

adb shell am dumpheap 6494 /sdcard/Download/insecurebankv2_mem

6494의 힙 메모리가 /sdcard/Download/insecurebankv2_mem으로 저장됩니다. 이를 pull해줍니다.

adb pull /sdcard/Download/insecurebankv2_mem C:\Android

제 컴퓨터 C:\Android에 저장됩니다. 하지만 이 메모리 파일은 달빅 머신 특유의 포맷으로 생성되기 때문에 안드로이드 sdk에 있는 hprof-conv.exe 프로그램으로 포맷을 변경해줘야 볼 수 있습니다. 저는 아래 경로에 있었습니다.

C:\Users\사용자이름\AppData\Local\Android\Sdk\platform-tools

위 경로에서 아래 명령어를 입력해줍니다.

hprof-conv.exe C:\Android\insecurebankv2_mem  C:\Android\NEW_insecurebankv2_mem

그리고 HxD 프로그램으로 분석해보면 아래와 같이 정보들을 얻을 수 있습니다.

useranme은 jack이며 password는 Jack%40123%24임을 알 수 있습니다. %40은 아스키코드 x40인 @이고 %24는 $임을 알 수 있습니다. 또한 계좌번호도 적혀있고 돈의 양도 적혀져 있는 것을 확인할 수 있습니다.

 

- 취약점 대응 방안

금융권에서는 "스마트폰 보안 안전 대책 이행 실태 점검 체크리스트" 항목중에서 "스마트폰 앱과 금융회사 전자 금융 서버 간의 종단간 암호화 적용 여부"에서 좀 더 확장하여 확장 E2E를 권고하고 있습니다. 이는 키보드로 입력하는 순간부터 암호화되어 최종적으로 체크하는 서버까지 암호화 되어 있는 형태입니다. 공격자들이 중간에 메모리값을 가로채더라도 암호화된 상태를 유지하도록 확장 E2E 방법을 사용해야합니다.

Comments