안드로이드 앱 개발에서 취약점을 진단하고 공부합니다.
물리적(실제) 디바이스를 통한 안드로이드 앱 취약점 진단 연습을 진행하였다.
이 글은 제가 이 책을 보면서 실제 경험하고 책에 나온 사례들을 진행하면서 겪은 것과
어려움과 느낀점을 적고, 훗날 앱 보안진단을 할 때 참고하고자 기록합니다.
apk 파일을 추출하는 방법
- apk extractor 앱을 통해서 앱을 받아낸다.
- 이후, apk 파일을 pc에 연결해서 복사해서 가져온다.
- apk파일을 java -jar apktool 을 통해서 파일형식으로 풀어준다.
- 이렇게 하면 내부 파일을 볼수는 있지만, 딱히 형태를 구분하고 분석하기는 힘들다.(아직은)
준비
1. 디바이스를 컴퓨터와 연동한다. (개발자 모드 상태)
일단, 에뮬레이터든 실제 디바이스든 준비를 해야겠죠.
저는 디바이스를 직접사용했습니다. 여러모로 편합니다.
들고다녀야하는 번거로움이 있지만, 전 간편해서 그냥 디바이스를 쓰게 되더군요.
(에뮬레이터 너무 무거워서도 있구요.)
2. adb 확인 Android Debug Bridge
애뮬레이터 인스턴트나 안드로이드 기반 물리적 디바이스와 통신을 위해 사용한다.
안드로이드 스튜디오를 설치하면 기본적으로 포함되어있다.
(기본위치/<sdk>/platform-tools/ 에 위치한다.)
1) 환경변수 or 시스템변수에 선언해준다.
'각자컴의 해당위치\Android\sdk\platform-tools'
를 선언해준다.
2) 기본 adb 명령어 사용
일단 변수 설정이 끝났다면,
폰 연결하고
cmd 열어서
adb devices 부터 쳐본다.
디바이스가 뜨면 끝.
나머지 명령어는 해보면 되는데, 크게 쓸일이 없었다. 아직은.
1 | adb devices | 디바이스 검색 |
2 | adb install (어떤.apk)
(옵션1) -r :재설치 (옵션2) -s :메모리카드 설치 |
애플리케이션 설치 adb install test.apk adb install -r test.apk adb install -s test.apk |
3 | adb uninstall | 애플리케이션 삭제 adb uninstall com.android.test |
4 | adb reboot | 폰 재부팅 |
5 | adb kill-server | adb 종료 |
6 | adb pull 폰경로 PC경로 | 디바이스 파일을 PC로 복사 |
7 | adb push PC경로 폰경로 | PC파일을 다바이스로 복사 |
8 | adb root | 디바이스에 root 권한을 접속 |
9 | adb shell | 연결된 특정 디바이스에 접속 adb-s emulator-디바이스번호 shell 퍼미션 부여 adb shellchmod 777 경로 파일 삭제 adb shell rm 경로 폴더 삭제 adb shell -r 경로 |
3. 기본적으로 분석하기 위한 분석 도구들 설치
1) apktool.jar 설치 - 검색해서 다운로드
실행파일 apk 파일을 리버싱하고 디코딩하는 도구이다.
2) jd-gui-1.X.X.jar 설치 - 검색해서 다운로드
3) dex-tools 설치( d2j-dex2jar.bat 사용) - 검색해서 다운로드
4) drozer 설치
- 이거는 app용과 pc용 있는데,
pc용은 윈도우의 경우 잠시 실시간 보안을 해제한 후 다운받아야함.
- 설정 - 업데이트 및 보안 - windows 보안 - 바이러스 위협 방지 -
바이러스 및 위협 방지 설정 - 설정관리 - 실시간 보호를 해제하면 됩니다.
- drozer가 다 설치되고 잘 가동되면 다시 키면 됩니다.
4. 책에서 제공하는 교육자료 다운
- 책에 나오는 카페에 들어가서 교육자료를 다운 받으면된다.
- apk파일 - Android Package 의 약자
안드로이드 응용프로그램이 동잘할 수 있는 실행파일과 리소스 파일이 1개의 파일로 압축
안드로이드 실행파일의 기본단위이다.
1) apktool 을 이용한 디코딩
java -jar apktool_2.x.x.jar d 테스트.apk
이 명령어를 cmd에 쳐서, apk로 압축된 파일을 풀어낸다. (압축해제라고보면된다.)
그리고 app안의 파일들을 변조, 변경하고 다시 원래 apk로 파일을 만들기 위해서는
java -jar apktool_2.x.x.jar b 테스트
이렇게 명령을 실행하면, 테스트 폴더 안에 dist 디렉터리가 생성된다.
해당 dist폴더에 재패키징한 테스트.apk 가 생성되어 있다.
2) package sign 패키지 사인
재패키징한 apk파일을 디바이스나 에뮬레이터에 설치해서 실행해보려면,
사인을 해야한다.
signapk.jar 도구를 사용한다.
3) apk 파일 역분석
코드내용을 분석하기 위해 apk파일을 원래의 java코드로 변환하는 역분석과정이 필요하다.
역분석을 위한 도구는
dex2jar (설치깃허브)
Jd-gui (설치깃허브)
이다.
dex2jar 는 dex파일을 jar파일로 변환한다.
Jd-gui 는 JAVA클래스파일을 JAVA 원본소스로 변환한다.
dex2jar zip 폴더가 있는데, 다운받아서 압축해제를 하면, SNAPSHOT 폴더안에 엄청많은 파일들이 있다.
그 중에, d2j-dex2jar.bat을 사용하면된다.
Jd-gui
5. Drozer 설치 상세
Drozer 가이드 ( 사이트 )
파이썬 다시설치해야 하는 경우 ( 윈도우 파이썬 설치 버전 쫘악 )
pip 설치 ( 가이드 갓 블로그 )
'Tech > Hacking' 카테고리의 다른 글
[보안] e프라이버시 클린서비스 :: 가입한 적이 없는데? (0) | 2020.06.23 |
---|---|
#Security :: 북한 해킹 공격 활성화(20.08.04 작성) (0) | 2020.06.23 |
[보안] 공인 인증서 폐지 :: 사설 인증 시장의 시작 (0) | 2020.05.25 |