안드로이드·갤럭시·AOS 애플리케이션 취약점진단/모의해킹 무료 강의 학식(hagsig)
가. 취약점 정의
- 민감정보 메모리 저장(Sensitive Information in Memory) 취약점이라고 부른다.
- 앱에 입력하는 모든 입력 값과 실행되는 모든 정보들이 메모리에 적재된다.
- *중요정보가 저장된 속성 또는 변수를 초기화하지 않거나, 내용을 암호화 하지 않을경우 메모리에 중요정보가 평문으로 노출된다.
*중요정보 : 아이디/패스워드, 개인정보(이름, 주민등록번호, 전화번호 등), 쿼리문, 서버정보 등
- 메모리 내에 중요정보가 평문으로 노출될 경우 해커에 의해 정보가 유출되어 2차 피해로 이어질 수 있다.
나. 대응방안
- 중요한 정보를 포함할 수 있는 속성 또는 변수를 사용한 뒤, 저장된 값을 바로 제거하거나 덮어씌워야 한다.
- 하이브리드 방식일 경우 웹 패킷의 내용이 메모리에 노출된다. 이때 파라미터 값이 암호화 되어있지 않을경우 메모리에 중요정보들이 노출되므로, 암호화 통신을 적용하고 있더라도 파라미터 값을 암호화 하여야 한다.
- AndroidManifest.xml 파일에 있는 android:debugable 속성을 "false"로 지정한다.
- 중요 정보를 입력하는 곳에는 가상 키보드 사용한다.(종단 간 암호화로 인해 메모리에 계정정보가 평문으로 남지 않음)
다. 취약점 진단 실습
1. 분석 대상 앱 설치
- 실습을 위해 인시큐어뱅크 애플리케이션을 설치한다.
※ 인시큐어뱅크 앱이 설치되어있지 않은 사람은 아래의 글을 참고하여 앱을 설치하길 바란다.
2023.04.10 - [Mobile App 취약점 진단/AOS App 진단] - 인시큐어뱅크 앱 설치 및 실행 방법 정리(InsecureBankv2)
2. adb 디바이스 연결
- adb
를 이용하여 디바이스에 접근한다.
※ NOX 에뮬레이터의 경우 adb connect 127.0.0.1:62001 명령어를 입력하여 연결할 수 있다.
adb connect 127.0.0.1:62001 #NOX일경우 해당 명령어를 통해 연결 가능
adb devices #디바이스 리스트 및 연결가능 여부가 출력됨
adb shell #디바이스에 연결
※ adb에 대한 자세한 사용방법은 아래의 게시글을 참고하자.
[AOS App 취약점 진단 · 모의해킹] - adb 다운로드, 디바이스 연결 및 파일 송수신 명령어 정리
3. 애플리케이션 PID 확인
- 로그를 수집할 애플리케이션의 프로세스 번호(PID)
를 확인한다.
#디바이스에서 실행중인 프로세스 목록 출력
adb shell ps
※ 애플리케이션의 프로세스 이름을 모를 경우 아래의 방법을 통해 찾을 수 있음.
#방법1 프로세스 목록에서 애플리케이션 이름과 유사한 프로세스 이름을 찾음.
adb shell ps
#방법2 애플리케이션 설치경로에서 애플리케이션 이름과 유사한 프로세스 이름을 찾음.
adb shell ls /data/data
4. 메모리 덤프 및 파일 추출
- 인시큐어뱅크의 패스워드 변경기능을 통해 패스워드를 변경한다.
- *am
도구를 이용하여 애플리케이션의 메모리를 수집한다.
*am : ActivityManager과 관련된 동작을 커맨드라인에서 수행하도록 돕는 도구.
#명령어 형식 : am dumpheap [PID] [savepath]
adb shell am dumpheap 3444 /data/local/tmp/dump-heap-hagsig.prof
- pull
명령어를 이용하여 저장된 메모리 덤프 파일을 PC로 옮긴다.
#명령어 형식 : adb pull [filepath]
adb pull /data/local/tmp/dump-heap-hagsig.prof
- 저장한 메모리 덤프 파일(.hprof)
을 메모장으로 연다.
- 내용을 살펴보면 패스워드 변경 시 사용된 username과 password가 메모리에 평문으로 노출되었다는 것을 확인할 수 있다.
'Mobile App 취약점 진단 · 모의해킹 > AOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
[AOS 취약점 진단] 10강 - 취약한 액티비티 컴포넌트 점검 (0) | 2024.01.08 |
---|---|
DDMS.bat 실행 오류 해결방법(No suitable Java found) (0) | 2024.01.04 |
[AOS 취약점 진단] 09강 - 메모리 내 중요정보 노출 확인(DDMS) (0) | 2023.12.09 |
[AOS 취약점 진단] 08강 - 디바이스 로그 내 저장된 중요정보 확인(실습 2) (0) | 2023.12.03 |
[AOS 취약점 진단] 08강 - 디바이스 로그 내 저장된 중요정보 확인(실습 1) (0) | 2023.12.03 |