본문으로 바로가기

안드로이드·갤럭시·AOS 애플리케이션 취약점진단/모의해킹 무료 강의 학식(hagsig)

 

가. 취약점 정의

- 민감정보 메모리 저장(Sensitive Information in Memory) 취약점이라고 부른다.

- 앱에 입력하는 모든 입력 값과 실행되는 모든 정보들이 메모리에 적재된다.

- *중요정보가 저장된 속성 또는 변수를 초기화하지 않거나, 내용을 암호화 하지 않을경우 메모리에 중요정보가 평문으로 노출된다.

*중요정보 : 아이디/패스워드, 개인정보(이름, 주민등록번호, 전화번호 등), 쿼리문, 서버정보 등

- 메모리 내에 중요정보가 평문으로 노출될 경우 해커에 의해 정보가 유출되어 2차 피해로 이어질 수 있다.

 

나. 대응방안

- 중요한 정보를 포함할 수 있는 속성 또는 변수를 사용한 뒤, 저장된 값을 바로 제거하거나 덮어씌워야 한다.

- 하이브리드 방식일 경우 웹 패킷의 내용이 메모리에 노출된다. 이때 파라미터 값이 암호화 되어있지 않을경우 메모리에 중요정보들이 노출되므로, 암호화 통신을 적용하고 있더라도 파라미터 값을 암호화 하여야 한다.

- AndroidManifest.xml 파일에 있는 android:debugable 속성을 "false"로 지정한다.

- 중요 정보를 입력하는 곳에는 가상 키보드 사용한다.(종단 간 암호화로 인해 메모리에 계정정보가 평문으로 남지 않음)

 

다. 취약점 진단 실습

1. 분석 대상 앱 설치

- 실습을 위해 인시큐어뱅크 애플리케이션을 설치한다.

※ 인시큐어뱅크 앱이 설치되어있지 않은 사람은 아래의 글을 참고하여 앱을 설치하길 바란다.

2023.04.10 - [Mobile App 취약점 진단/AOS App 진단] - 인시큐어뱅크 앱 설치 및 실행 방법 정리(InsecureBankv2)

 

인시큐어뱅크 앱 설치 및 실행 방법 정리(InsecureBankv2)

1. 인시큐어뱅크 앱 이란? - 모바일 뱅킹 취약점 진단을 위한 테스트 용도로 제작된 애플리케이션이다. - 안드로이드 앱 취약점 진단을 실습할 수 있는 환경을 제공한다. - 2019년 이후로 업데이트

hagsig.tistory.com

 

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 다운로드, 디바이스 연결 및 파일 송수신 명령어 정리

 

adb 다운로드, 디바이스 연결 및 파일 송수신 명령어 정리

가. Android Debug Bridge(adb) 정의 - adb(안드로이드 디버그 브릿지)는 기기와 통신할 수 있도록 지원하는 다목적 명령줄 도구이다. - 디바이스에서 다양한 명령어를 실행하는 데 사용할 수 있는 Unix Shel

hagsig.tistory.com

 

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가 메모리에 평문으로 노출되었다는 것을 확인할 수 있다.