반응형
1. 개요

 

 안드로이드 어플리케이션 설치 시 APK 파일 용량을 줄이기 위해 앱 번들을 많이 사용하고 있습니다. 기업에서 앱 번들을 구글 PlayStore에 업로드하면, PlayStore가 설치를 요청하는 사용자의 디바이스에 필요한 파일만 앱 번들에서 꺼내 디바이스로 전달 후 설치하는 방법인데 이를 Dynamic delivery라고 칭합니다.

즉, 최근에는 Dynamic delivery라는 기술로 분리할 수 있는 리소스들을 여러 apk로 분리하고 디바이스에 전달하며, Split apk라는 기술을 사용하여 필요한 apk들만 디바이스에 설치하고 있습니다.

 

왼편의 사진과 같이 PlayStore에서 어플리케이션을 다운받을 경우, 

 

- 코드(dex)가 포함된 base.apk 파일

- 그 외, 설정 리소스가 포함된 apk 파일들이 분할되어 설치되는 것이죠.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Split APK 파일 설치 방법

 

그렇다면, 이 분할된 APK파일을 PlayStore와 같은 정상적인 루트 말고 다른 방법으로 설치하는 방법을 알아보도록 하겠습니다.

 

Sol 1. SAI(Split APKs Installer) 어플 이용

1) SAI(Split APKs Installer) APK 다운로드 후 설치

>> https://apkplz.net/app/com.aefyr.sai

 

 

2) SAI 앱 실행 후 [Install APKs] 버튼 클릭하여 분할되어 있는 APK 파일들 모두 선택 → 설치 진행

 

Sol 2. ADB 명령어 이용

1) adb connect 명령어/USB 커넥터로 디바이스 연결

 

2) adb install-multiple 명령어로 Split APKs 설치

>> adb install-multiple [APKs 파일명]

 

ex) adb install-multiple base.apk split_config.x86.apk split_config.xhdpi.apk split_countrycodekr.apk split_countrycodekr.config.xhdpi.apk

 


※ 참고자료

- https://codechacha.com/ko/android-app-bundle/

- https://medium.com/daangn/%EB%8D%94-%EC%9E%91%EC%9D%80-apk%EB%A5%BC-%EC%9C%84%ED%95%9C-android-app-bundle%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-345a656eee85

반응형
반응형
1. 개요

 

 저 같은 경우 웹/모바일 진단 시, 전송되는 패킷을 가로채 전송/변조하는 Proxy 툴로 Burp Suite를 많이 사용하고 있습니다. 하지만, 특정 모바일 어플리케이션을 진단할 때, Burp 툴로 패킷이 잘 잡히지 않고 매우 느려 진단이 불가능할 정도의 상황이 발견되었습니다. 처음에는 SSL 인증서 문제여서 Pinning을 고려해보았으나, SSL 패킷이 잡히긴 한다는 점에서 다른 방법을 물색해보았습니다. 이러한 경우 Fiddler라는 또 다른 Proxy 툴을 이용하여 패킷을 가로챈 후 Burp로 보내는 방법으로 이를 해결할 수 있습니다. (원리는 잘 모르겠네요ㅠ)

 

2. 방법

 

Step 1. Fiddler Tool Download

>> https://www.telerik.com/download/fiddler

위 링크에서 피들러 툴 다운로드 받기(개인 이메일 주소 필요)

 

Step 2. Fiddler Option Setting

1) PC에 Fiddler 인증서 설치

Fiddler 실행 후 [Tools - Options - HTTPS 탭 - Actions 버튼 - Trust Root Certificate - Yes] 클릭하여 인증서 설치

 

2) HTTPS 패킷 캡쳐 옵션 활성화

[Tools - Options - HTTPS 탭] 에서 "Capture HTTPS CONNECTs", "Decrypt HTTPS traffic" 옵션 선택하여 HTTPS 통신의 패킷을 캡쳐한다. 

 

Step 3. Mobile Device Setting

1) 피들러의 [Tools - Options - Connections 탭] 에서 Fiddler 리슨 포트 확인한다. (디폴트가 8888로 설정)

 

2) PC의 IP 확인 후 모바일에서 프록시 설정 진행

 

3) 모바일 디바이스에서 Fiddler 인증서 설치

모바일 브라우저에서 [컴퓨터 IP:Fiddler listen port](192.168.0.115:8888)로 접근 후 [Fiddler Root certificate] 버튼 클릭하여 인증서 설치

※ 왼쪽의 Fiddler Echo Service 화면이 나오지 않는 경우, PC에서 피들러 툴을 끈다음 다시 실행 후 재접근!

 

Step 4. Fiddler & Burp Connect

1) 피들러의 [Tools - Options - Connections 탭]에서 "Allow remote computers to connect" 체크하여 활성화

 

2) Burp Suite를 실행한 후 [Proxy - Options - Proxy Listeners] 메뉴에 "All interfaces"로 피들러와 연결할 포트 설정

 

3) 다시 피들러의 [Tools - Options - Gateway 탭 - Manual Proxy Configuration] 설정

 

4) 피들러 툴 재시작

 

Fiddler에서만 패킷이 잡히고 Burp에서는 잡히지 않는 경우

Fiddler의 [Tools - Options - Gateway 탭]에서 "No Proxy" 체크 후 저장 → Fiddler 재시작 후 Step 4의 3) 재설정(피들러의 [Tools - Options - Gateway 탭 - Manual Proxy Configuration] 설정)

 

 

3. 결론

 

즉, 그림으로 쉽게 표현하면 아래와 같습니다(위의 세팅으로 설정한 경우)

 

모바일 디바이스의 패킷을 Burp Suite 툴로 바로 캡쳐하는 경우 속도가 매우 느리지만(경우에 따라 다름),

중간에 Fiddler 툴을 두어 속도를 향상시킬 수 있습니다.

반응형
반응형

APK_Manager Tool을 사용하다가 디컴파일은 잘 되는데, 컴파일 오류가 발생한 경우라 정리해본다.

 

우선, 디컴파일은 오류없이 진행되었지만 아무 작업(위변조)을 하지 않았는데도 Sign 작업이 이루어지지 않았다.

https://ddungkill.tistory.com/67

 

[Android] Apk_Manager Tool Decompile 오류 해결

APK Maganer Tool 디컴파일 오류 해결 방법 안드로이드 진단을 하면서 주로 APK_Manager 툴을 사용하고 있는데, 9번(Decompile) 오류가 자주 발생되어 아는 해결방법을 정리한다. Solution 1) 최상위 폴더로 이동/..

ddungkill.tistory.com

이전 글을 참고해서 3가지 작업을 진행했는데도 컴파일 오류가 발생해서 툴 디렉터리 내 LOG 파일을 오픈했다.

 

 해당 로그파일을 보면 에러의 원인이 나오는데, 리소스 속성이 없다고 한다...

 

SOLUTION 1)

이유는 모르겠지만 구글링을 해보았더니,

프로젝트 파일 내에 존재하는 '/res/layout-v26/abc_screen_toolbar.xml' << 해당 파일을

 <android.support.v7.widget.ActionBarOverlayLayout android:id="@id/decor_content_parent" android:fitsSystemWindows="true" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">  <android.support.v7.widget.ActionBarContextView android:theme="?actionBarTheme" android:id="@id/action_context_bar" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" style="?attr/actionModeStyle" /> </android.support.v7.widget.ActionBarOverlayLayout>

 

위 내용을 덮어 써주니 정상적으로 컴파일이 가능했다.

 

APK_Manager 관련 에러는 로그 파일을 통해 대부분 해결 가능할 것으로 보인다.

 

출처 : https://github.com/iBotPeaches/Apktool/issues/1725

 

 

SOLUTION 2)

/Users/XXXX/(Library)/apktool/framework/1.apk << 1.apk 파일을 삭제한다.

반응형
반응형

Step 1. 탈옥된 디바이스 준비

- 현재, Apple 사에서 Cydia Impactor 사용을 서버단에서 막아서 (Impactor를 이용한) 탈옥툴 설치가 불가능함.

- Apple Developer Account로만 Impactor 사용 가능(연회비 \130000 정도)

- 3uTools 라는 툴을 이용해 탈옥 가능!! (ios 12 버전 까지만)

- 3uTools는 중국에서 개발한 ifunbox 대체 툴이며, 탈옥 기능이 내장되어 있음.

 

탈옥 후, iFunbox로 연결하면 [Jailed/Jailbroken] 항목에 "Jailbroken"이 쓰여 있어야한다.

탈옥은 되었지만, "탈옥 안 됨"이라고 쓰여 있는 경우, Cydia 앱에서 "Apple file conduit2"를 설치/재설치한다.

 

Step 2.  Clutch로 진단할 Application 복호화

- ssh로 디바이스 접속 ( Default 계정 : root / alpine )

- clutch 설치

- 설치된 경로로 이동( 보통 /usr/bin/ )

- 명령어를 통해 앱 복호화

./clutch -i // 복호화할 앱 리스트 출력

./clutch -b [num] // 복호화할 앱 선택

 

Step 3. 앱 분석 & 코드 변경 (탈옥 우회 / 무결성 검증)

- clutch로 복호화한 앱은 /var/tmp/clutch/--- 밑에 있음.

- 실행 파일을 PC로 가져와서 분석 및 코드 변경

- 탈옥 우회 시 보통 IDA로 분석 후 HxD로 조작

- 무결성 검증 시엔 실행파일 Hash 값 비교(HashCalc 등 사용)

 

Step 4. 실행파일 업로드

- 변조/조작한 실행 파일을 설치 경로에 붙여넣기

- 보통 /var/containers/Bundle/Applications/--- 하위임.

- 기존 실행파일 삭제 후 업로드

- chmod 명령어를 이용해 권한 부여 ( chmod 777 [파일 이름] )

 

Step 5. 변조된 앱 실행

- 변조된 앱을 재실행하여 탈옥 / 무결성 우회 가능 판단

반응형
반응형

APK Maganer Tool 디컴파일 오류 해결 방법

안드로이드 진단을 하면서 주로 APK_Manager 툴을 사용하고 있는데, 9번(Decompile) 오류가 자주 발생되어 아는 해결방법을 정리한다.


Solution 1) 최상위 폴더로 이동/한글 포함 폴더명 사용X

>>apk manager 폴더를 최상위로 옮기거나 한글이 포함안된 폴더명으로 바꾸기(한글인식 불가한듯..ㅜ)


Solution 2) apktool, smali, baksmali 버전 업데이트

>> [apk_manager - other] 폴더에 있는 apktool.jar, smali.jar, baksmali.jar를 최신 버전으로 업데이트 한다.




>> apktool 최신 버전 다운로드 링크 → https://ibotpeaches.github.io/Apktool/install/ 페이지 내 Current Version 클릭

>> smali, baksmali 최신 버전 다운로드 링크 → https://bitbucket.org/JesusFreke/smali/downloads/ 


Solution 3) apktool 폴더에 있는 리소스 복사

>> 로컬 내 [apktool - framework] 폴더 내 있는 apk 파일을 [apk_manager - framework]로 복사하기




※추후 해결 방법을 더 알게 되면 추가 예정

반응형
반응형

Problem

IOS 10 이상에서 프록시를 통해 https에 접근하는 경우, Burp 인증서를 설치해도 unknown_ca 경고가 뜨는 경우가 있다.


Solutions


Step 1) Burp Suite Tool 최신 버전 다운로드

>>1.7.30 버전을 사용 중이었는데도 패킷이 잡히지 않으며, unknown_ca 경고가 뜸.

>>모바일 패킷을 잡을 땐 항상 최신 버전을 사용하자.(현재 최신 v.1.7.36)


Step 2) Burp 인증서를 신뢰받는 인증서로 설정

>>[설정 → 일반 → 정보 → 인증서 신뢰 설정] 에서 burp 인증서를 신뢰 받는 인증서로 활성화


(스크린샷을 못찍음..ㅜㅜ)

반응형
반응형

현재 Activity 확인하기


Step 1) 디바이스 연결


>> adb devices


Step 2) 디바이스에서 어플리케이션 실행


Step 3) 현재 실행되고 있는 Activity 명 확인


>> adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'"



Activity 강제 호출하기


Step 1) 디바이스 연결


Step 2) adb 명령어로 Activity 강제 호출


>> adb shell "am start -a android.intent.action.MAIN -n [패키지명]/[호출할 Activity명]"

ex) adb shell "am start -a android.intent.action.MAIN -n com.android.chrome/com.google.android.apps.chrome.Main"





반응형

반응형

Step 1) JAVA 설치 / 환경변수 설정


Step 2) ADB 설치 / ADB로 단말기 연결


>> adb devices 명령어로 연결된 디바이스 보기


Step 3) APK  파일 추출하기


1. adb로 추출하기

-adb shell로 단말기 연결

-pm list packages -f로 패키지 목록 출력

-adb pull [패키지명] [저장할 파일명] (ex. adb pull /data/data/com.example.apk test.apk)


2. Astro 어플 이용하여 추출


>> 어플 실행 → 앱 매니저 → 추출할 앱 선택 → 더보기 → 백업 클릭


Step 4) APK Manager Tool로 디컴파일


- place-apk-here-for-modding 폴더에 디컴파일 할 apk 파일 붙여넣기

- Script.cmd 실행

- 22번으로 디컴파일할 apk 파일 선택

- 9번 눌러서 디컴파일 시작


Step 5) 루팅 함수 검색


- Astro grep으로 string 검사

- jadx tool로 apk 디컴파일 해서 rooting/rooted 검사

- smali code에서 해당 함수 부분 검색

- 수정 후 컴파일 + Sign + Install(14번)







반응형

+ Recent posts

반응형
반응형