DIVA 앱을 설치한 후 취약점 목록 중, 1 - Insecure logging을 선택한다.
목표를 보면 어디서 어떻게 로그되는지와 취약한 관련 코드를 찾는 것이다. 입력 창에 123456을 입력한 후 클릭버튼을 누르면 "An error occured. Please try again later"라는 알림 창이 뜬다.
안전하지 않은 로깅은 민감한 정보가 평문으로 로그파일에 남는다는 것으로 연결된 adb를 이용해 로그정보를 실시간으로 살펴보면 된다. adb logcat으로 찾을 시 많은 정보가 분별하기 어렵게 뜨기때문에 필터링 값을 같이 입렷하여 Diva-log만을 출력하게 하였다. adb는 이전 글에서 설정방법을 참고하길 바란다.
adb logcat -s diva-log
해당 카드 번호 123456이 평문으로 입력되어있는 것을 확인할 수 있다. 자 이제 어떤 부분이 취약점으로 연관되는지를 찾아야한다. 일단 apk 소스를 jar로 번역해 볼 수 있게 해주는 jadx파일을 다운로드 한다.
jadx파일: https://github.com/skylot/jadx/releases/tag/v1.3.3
스크롤내려서 해당 파일을 다운받고 압축을 푼다.
bin 위치에 있는 jadx-gui 파일을 실행시키고 apk 파일을 선택해 열어준다.
이제 소스코드를 볼 수 있다. LogActivity에 Log.e부분이 평문으로 해당부분을 출력하게 하는 함수이다.
문제가 되는 해당 코드)
Log.e("diva-log", "Error while processing transaction with credit card: " + cctxt.getText().toString());
이제 이 코드를 삭제하면 취약점을 없앨 수 있는데, 이 툴은 소스코드를 보여주기만 하고 수정은 할 수 없다. 수정은 이 전에 다운받아 실행해보았던 apktool.jar(링크 클릭)이라는 tool로 apk파일을 smali코드로 변환해 수정해야한다.
=jar파일로 디컴파일 시 100% 복원되지 않기 때문에 어셈블어인 smali 코드로 변환해 수정한다.
Apktool이란 대표적인 안드로이드 애플리케이션 대상의 리버스 엔지니어링 도구이다.
리소스를 뽑아낼 수 있고, 코드 수정 재빌드가 가능하다.
명령어: java -jar apktool_2.6.1.jar d [디컴파일 할 Apk 파일명]
(버전은 각자의 다운로드 버전으로 입력한다.)
위와 같이 smali 파일이 생긴걸 볼 수 있다. 이제 같은 파일을 찾기 위해 해당 위치에 LogActivity.smali파일을 찾는다.
C:\Users\82103\OneDrive\바탕 화면\모바일\DivaApplication\smali\jakhar\aseem\diva\LogActivity.smali
문제점이 되는 부분을 smali 파일로 볼 시 해당 부분이다.
smali 코드는 jar보다 가독성이 떨어지고, 해석하는데 어느정도 공부가 필요하다고 한다.
java코드와 smali코드를 비교하여 원하는 부분의 코드를 수정해 취약점 수정이 가능하다.
수정을 어떻게 하는지만 알아두고, 코드 수정은 공부가 필요할 것 같아 다음으로 미뤄둔다.
이 뒤 과정까지 진행해보고싶다면 자세한 설명이 있는 블로그를 참조해 수행하면 될 것이다.
https://parkjhp.tistory.com/21
APK 파일 디컴파일에서 컴파일까지
오늘은 apk파일을 수정하는 방법에 대해서 알아보겠습니다. 기본적인 이론은 다루지 않겠습니다. 기본적인 이론에 대해 궁금하신분이 있으면 개인적으로. . . 진행순서 1. apk파일 -> jar파일 변경 2
parkjhp.tistory.com
'App hacking' 카테고리의 다른 글
[모바일 앱 취약점] Diva tutorial 3 - Insecure data storage (Part 1) (0) | 2022.03.19 |
---|---|
[모바일 앱 취약점] Diva tutorial 2 - Hardcoding Issues (0) | 2022.03.18 |
[모바일 앱 취약점] Diva 환경 세팅 - LG G4 루팅 (0) | 2022.03.17 |
[모바일 앱 취약점] Diva 설치 과정 - 안드로이드 패킷 잡기 (0) | 2022.03.08 |
[안드로이드] 앱 개발 환경설정 (0) | 2022.02.28 |