티스토리 뷰
메모리 : 주기억 장치, 물리적 메모리 램(RAM)을 가리킴
- 앱이 실행되면 일정량 메모리 차지하고 실행 중 필요한 정보들 저장
- 앱에 입력하는 모든 값과 실행되는 모든 정보들이 메모리에 적재되어 실행한 후, 실행 완료되면 다른 데이터들로 채워짐
- 메모리는 휘발성 ==> 프로그램 or 모바일 종료 시 데이터들도 삭제
< 취약점 진단 과정 >
안드로이드 메모리 구조는 Honey comb 버전 이전과 이후로 나뉨
- 안드로이드 메모리 할당 방법 : 기본적으로 자바 가상 머신 이용 안하고 달빅 가상 머신 이용해 앱 구현
만약 허용된 메모리 한계 이상 사용시 OOM(Out of Memory) 에러 발생
- Dalvik heap allocated 영역 : 앱이 실행되는 동안 참조하고 정보 저장하는 메모리 영역
인시큐어뱅크는 4.2.2 버전으로 실습하므로 위는 Honey comb 이후 버전 구조다.
(이전은 나중에 채워넣을 예정)
메모리 안에 있는 정보 얻기 위해선 메모리 포렌식이라는 기법 사용
< 메모리 포렌식 >
: 물리적인 메모리인 램에 기록되어 있는 시스템 이용 정보 or 악성코드 감염과 관련된 흔적 분석하는 기법
- 기본적으로 시스템 연산은 중앙 처리 장치(CPU)에 의해 이루어지고,
이를 실행하기 위해 메모리에 데이터와 코드가 적재되어야 함.
이런 과정 통해 물리적인 메모리에는 하드 디스크와 다른 소프트웨어 or 파일 실행 과정이나 실행된 특유 정보가 존재함
- 저장되지 않고 메모리에 로드되어 실행되는 악성 프로그램에 대한 분석도 가능
분류 | 설명 |
프로세스, 스레드 정보 | 프로그램이나 파일 실행 중이거나 이미 종료되었지만 메모리에 남아 있는 정보 추출 |
모듈, 라이브러리 정보 | 프로그램이나 파일이 실행 중이거나 이미 종료된 프로세스 관련 모듈 라이브러리 정보 추출 |
실행된 파일과 소켓 정보 | 실행 중이거나 이미 종료된 파일에 대한 정보와 네트워크 연결 위해 사용되었거나 사용 중인 소켓 정보 추출 |
다양한 데이터 구조 정보 | 메모리에만 존재하는 운영체제, 소프트웨어 및 파일과 관련된 다양한 데이터의 구조 정보 추출 |
메모리 포렌식 통해 획득 가능한 정보
위 표를 바탕으로 복호화된 파일 콘텐츠나 사용자 패스워드, 임시 저장 데이터 등
메모리에 저장되는 정보들을 찾아낼 수 있다
1) ADB 이용
1. 앱을 실행 하고 로그인 등을 해서 메모리에 정보를 남긴다.
2. adb shell 실행 해 현재 실행되고 있는 인시큐어뱅크 앱의 PID(프로세스 아이디) 확인
adb -e shell
ps | grep inse
5477로 출력되었지만, 매번 랜덤하게 부여하므로 실습하는 환경에 따라 다르다
3. am 명령어로 앱의 힙 메모리 추출
adb shell am dumpheap [ PID ] [ 저장할 위치 ]
저장 경로는 /sdcard (사용자가 추가로 SD 카드 구매해 확장할 수 있는 공간)
안드로이드 운영체제는 기본적으로 / 하위 폴더에 읽기 권한만 부여하므로 권한 없으면 파일, 폴더 생성 불가능
4. 로컬 드라이브로 다운로드
adb pull [ 다운로드할 파일 경로 ] [로컬 드라이브 경로 ]
5. 포맷 변경
디바이스로부터 다운로드한 hpof 파일은 안드로이드에서 사용되는 달빅 머신 특유의 포맷으로 생성됨
따라서, 이클립스에서 지원하는 MAT(Memory Analyzer Tool)과 같은 프로그램으로 분석하기 위해서 변환 필요
hprof-conv.exe [ 달빅 머신 hpof ] [ 새로 생성될 hprof 이름 ]
(안드로이드 sdk 설치 위치로 간 후에 명령어를 실행해야 한다)
6. 파일을 HxD로 열어서 확인
각 프로세스의 메모리 정보는 proc/프로세스 ID/maps에 저장되어 있음
이 중에서 "heap" 영역에 저장되는데 이를 덤프하면 중요한 정보 저장 여부를 확인 가능
< 대응 방안 >
- 금융권에서 "스마트폰 보안 안전 대책 이해 실태 점검 체크리스트" 항목 중에서
"스마트폰 앱과 금융회사 전자 금융 서버 간의 종단 간 암호화(End-to-End)"를 권고하고 있음
이는 키보드로 입력하는 순간부터 암호화되어 최종적으로 체크하는 서버까지 암호가 되는 형태
- 공격자들이 중간에 메모리값을 가로채더라도 암호화된 상태를 유지하는 것을 권고
'Security Study > Android' 카테고리의 다른 글
[InsecureBankv2] 안드로이드 키보드 캐시 이슈 (0) | 2023.01.27 |
---|---|
[InsecureBankv2] 안전하지 않은 로깅 메커니즘 (1) | 2023.01.27 |
Apk 코드 패치(리앱) 후 서명(Signing) 하는 법 (0) | 2023.01.27 |
[InsecureBankv2] 애플리케이션 패칭 (0) | 2023.01.27 |
[InsecureBankv2] 취약한 암호화 실행 (0) | 2023.01.27 |
- Total
- Today
- Yesterday
- rev
- 인시큐어뱅크
- forensic
- 모바일
- networking
- Steganography
- Fiesta
- 해킹
- CTF
- 취약점
- 안드로이드
- Android
- forensics
- 포렌식
- FTKImager
- 스테가노그래피
- SQLi
- 리버싱
- AssaultCube
- Cookie
- MISC
- reversing
- mongodb
- dreamhack
- sqlinjection
- web
- md5
- 드림핵
- cheatengine
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |