무결성이란?

: 정보보호 3요소 중 하나로 영어로 Integrity이며, 정보가 오직 허가된 사람에게만 개방되고 수정될 수 있음을 보장하는 것

  • 모바일 애플리케이션에서 의미하는 무결성은 애플리케이션의 개발자가 아닌 타인(악의적인 사용자)이 애플리케이션을 위/변조할 수 있느냐를 판단하는 기준
  • 일반적으로 금융앱을 제외하고는 무결성 체크로직을 구현하지 않지만 구현하는 경우에도 우회가 가능한 경우 존재
  • 무결성 로직이 미존재하면 정상 애플리케이션을 악의적인 목적으로 위/변조하여 유포 및 재설치를 통해 단말기 정보 및 단말기 내 중요정보 유출 가능


무결성 확인 
  1. 무결성 체크 로직 미존재

            * 무결성 체크 로직이 존재하지 않는 경우, 애플리케이션 명을 변경 후 재설치 시 정상적으로 실행되는 지 확인한다.

            1) 변경 전 애플리케이션 명 확인 - SIK-C1

            2) 애플리케이션 추출 후 디컴파일

                 자세한 내용은 이전 게시물 참조: http://securitynote.tistory.com/7?category=788948

            3) AndroidManifest.xml 파일 열기
                                

            4) intet-filter 태그 내에 android:label="@String/app-name" 옵션 변경

        
                    @String/app-name 부분을 변경하고자 하는 이름으로 바꾼다.



            5) 변조한 앱 재컴파일, 서명 후 설치 시 정상 실행 확인
            
                


            ★ 이렇게 간단한 조작을 통해 무결성 테스트를 진행한다. 이 때, 정상적으로 앱이 실행이 되지 않으면 무결성 체크 로직 우회를 시도한다.

→ 자세한 내용은 다음 포스팅에서...!!



APK-Manager Fix 7.4 (APK 디컴파일 / 컴파일 도구)

: apk 파일을 디컴파일 및 재 컴파일 등을 할 수 있는 툴

  • 최신버전을 다운받을 수 있다면 최신 버전 추천
  • 압축파일을 다운로드 받으면 다음 그림과 같이 여러 폴더와 cmd 파일이 존재한다.
  • cmd 파일을 실행시키면 apktool을 간편하게 사용할 수 있다.


  • 자주 사용하는 기능 및 사용 방법
    • 9 : Decompile APK
    • 14 : Compile APK / Sign APK / Install APK (All in one step)

** 앱은 TeamSIK의 CTF 연습 문제인 app-easy-release.apk를 사용 

1) 앱을 컴퓨터로 추출한다. (adb pull 또는 ASTRO 앱 사용)
                    - adb pull <apk 파일 위치 경로>
                    - 단말기에 설치된 앱 추출 시 ASTRO 앱 사용하면 편리함
                        → 앱 실행 > 앱 > 앱 오른쪽 상단의 메뉴 > 백업 
                        →  컴퓨터에 단말기 연결 후 backups > apps > 해당앱

            2) 추출한 앱(apk파일)을 "place-apk-here-for-modding" 폴더로 이동시킨다. 

            3) script.cmd를 실행시킨 후 22. Set current Project 입력


 4) 디컴파일하려는 앱(apk파일) 번호 입력


          5) 9. Decompile APK 입력하여 디컴파일

          6) Projects 폴더에서 디컴파일된 apk파일 확인

      


        7) 코드 수정 후  14. Compile apk / Sign apk / Install apk 를 입력하면 한번에 컴파일, 서명, 설치까지 가능하다. 
            ** 11. Compile APK로 컴파일 후, 12. Sign APK로 서명, 13. install APK로 단말기에 설치 각각 진행 가능\
            ** 서명까지 완료된 apk 파일은 "plcae-apk-here-for-modding" 폴더에 "signed[본래 파일명]"으로 저장된다.




apktool.jar

위의 방법이 훨씬 더 간단하므로 cmd툴을 이용하는 것을 추천하지만 apktool.jar 명령어에 대해서도 설명한다. 

https://ibotpeaches.github.io/Apktool/에서 최신 버전의 apktool을 다운로드 받은 후 진행하자.


1) 다운로드 받은 apktool.jar 파일이 위치한 경로에서 cmd를 실행시킨다.

       java -jar apktool.jar 
        


2) 디컴파일
    
      java -jar apktool d [apk파일 경로] 



3) 파일 수정 후 재 컴파일

     java -jar apktool b [디컴파일한 소스 폴더] -o [저장할 apk 명] 





4) 단말기에 설치하기 전에 서명을 해줘야 제대로 동작한다. 이때 APK Easy Tool을 사용하면 편리하다.

    [select] 클릭 후, 재 컴파일한 apk파일 선택 > sign selected APK 







+ Recent posts