본문 바로가기

기초 프로젝트/안드로이드 앱 취약점 분석

[캡스톤 디자인] 안드로이드 앱 취약점 분석_기능 보안취약점 中

지난 글에서는 KISA의 모바일 대민서비스 보안취약점 점검 가이드에 대해 알아보았습니다.

2022.09.27 - [기초 프로젝트/안드로이드 앱 취약점 분석] - [캡스톤 디자인] 안드로이드 앱 취약점 분석_기능 보안취약점 上

 

[캡스톤 디자인] 안드로이드 앱 취약점 분석_기능 보안취약점 上

2022년 1학기에 캡스톤 디자인이라는 강의를 들었습니다. 3월 ~ 6월, 혼자 한 학기 동안 원하는 주제를 잡은 후 프로젝트를 진행하는 수업입니다. 그래서 저는 안드로이드 앱 취약점 분석을 주제로

gang-can-do-anything.tistory.com

 

이번 글에서는 기능 보안취약점 점검 항목에 대해 세세하게 살펴보겠습니다.

 

1. 반복 설치 시 오류 발생

: 주요 설정 파일이 변경되거나 앱 설치 파일 일부가 삭제되지 않고 남는 등의 문제가 발생할 경우 앱을 삭제하고 재설치하는 과정에서 문제가 발생할 수 있다.

 

     ◎ 진단 방법

         안드로이드의 경우 adb, IOS의 경우 Xcode를 이용하여 모바일 기기에 앱을 설치한 후 삭제 작업 과정을 2~3회

         반복하여 수행한다.

 

     ◎ 진단 기준

         반복 수행 중 에러가 나면 취약한 것으로 판별한다.

 

* adb(Android Debug Bridge) : 기기와 통신할 수 있도록 지원하는 다목적 명령줄 도구

      →  PC와 휴대폰 기기를 연결하여 다양한 명령어를 실행할 수 있다.

* Xcode : IOS 운영체제 기반의 앱을 개발하고 분석할 수 있는 개발도구

 

2. 앱 설치 전후 비정상적인 파일 및 디렉토리 설치

: 앱 설치 전후로 비정상적인 파일 및 디렉토리가 생성되지 않아야 한다.

 

     ◎ 진단 방법

        find 명령어로 앱 설치 전, 후의 시스템 파일 목록을 생성하고 diff 명령어를 통해 파일 목록을 비교해야 한다.

 

     ◎ 진단 기준

        앱 설치 전후로, 설치 전 파일과 설치 후 파일 목록을 비교하여 비정상적인 파일 및 디렉토리 존재 시 

        취약한 것으로 판단한다.

 

* Android일 경우, /data/data 디렉토리 이외의 장소에 파일 생성 시 취약한 것으로 판단한다.

** /data/data 디렉토리를 찾는 데 시간이 굉장히 오래 걸렸다. 이 부분에서 막혀서 며칠을 고생했다.

그래서 /data/data 디렉토리를 찾기 위해서는 /storage/emulated/0에 가서 찾으면 나왔다.

 

3. 불필요하거나 과도한 권한 설정

:  앱 개발 시 필요한 권한 및 기능 이외에 개발상의 편의를 위해 불필요하거나 과도한 권한을 
부여하는 경우가 있습니다. 과도한 권한을 소유한 앱은 공격자가 이를 악용하여 이용할 가능성이 
있으므로 앱 서비스 목적과 다른 불필요한 권한이 존재하지 않도록 최소 권한만을 요청하여 
사용해야 한다. 

 

     ◎ 진단 방법

        apktool 도구를 이용하여 apk 파일의 압출을 풀고, AndroidManifest.xml 파일을 추출한다. 추출한 파일 내의 권한과

        실제 앱에서 사용하는 권한을 비교한다.

 

     ◎ 진단 기준

        실제 사용하는 기능 및 권한과 AndroidManifest.xml 파일 내의 권한과 일치하면 안전, 파일 내에 불필요하거나 과도한

        권한이 부여되었으면 취약한 것으로 판단한다.

        → 아래의 표와 같이 분석한다.

   

* IOS는 권한(Permission)이라는 개념이 없어서 진단하지 않는다.

 

4. 앱 삭제 후 안전성

: 앱 삭제 시 관련 디렉토리 및 파일이 완전히 삭제되어야 한다.

 

     ◎ 진단 방법

        앱 설치 후 설치 디렉토리 내 파일 생성 여부를 확인하고 삭제 후에 제대로 삭제되었는지 확인한다.

        → ls -al(R) 명령어를 이용하여 해당 패키지 이하 모든 파일 검사(하위 경로 포함)

         → 디렉토리 및 파일이 완전하게 삭제되었을 시 “No such file or directory” 문구를 확인

     

      ◎ 진단 기준

         삭제 후에도 설치 디렉토리 내 파일이 남아있으면 취약한 것으로 판단한다.

         앱 설치 전 및 삭제 후에 전체 시스템 내부 파일 목록을 작성 및 비교하여 변경 사항이 있으면 취약한 것으로 

         판단한다.

 

5. 기능의 정상동작

: 앱의 모든 기능들을 수동으로 실행하였을 때, 앱의 각 메뉴는 설계서에 제시한대로 정확하게 동작해야 한다.

   기능이 비정상적으로 동작하거나 사용자 입력값으로 정상 동작이 되지 않는 경우 정확한 보안취약점 점검이 어려우며,       오류정보 노출 등으로 공격자에게 중요정보가 노출될 수 있다.

 

     ◎ 진단 방법

        앱 설치 후 실행하여, 각 페이지 및 모든 기능들을 확인한다.

 

     ◎ 진단 기준

        기능 오동작, 미 동작, 오탈자, 잘못된 링크 등이 발견되면 취약한 것으로 판단한다.

 

6. 임의기능 등 악성행위 기능 존재

: 모바일 앱에는 명시적으로 제공하는 기능 외에 백그라운드(background)에서 구동되는 악성 기능이 존재할 수 있다.

 

     ◎ 진단 방법

        -  기능 요구 권한을 점검하고, BurpSuite를 이용하여 불필요한 패킷 전송 여부를 확인한다.

        -  netstat 명령어(netstat -na)를 이용하여 백도어 포트가 생성되는지 확인한다.

        -  ls 명령어(ls -alR)를 이용하여 불필요한 파일이 생성되는지 확인한다.

        -  ps 명령어를 이용하여 불필요한 프로세스가 생성되는지 확인한다.

 

     ◎ 진단 기준

        분석 대상 앱이 불필요한 패킷을 외부로 전송하거나 악의적인 파일, 프로세스 등을 생성할 경우 모바일 기기에

        잠재적인 위협을 가져올 수 있는 행위로 의심하여 취약한 것으로 판단한다.

 

7. 정보 외부 유출

: 허가된 주소(IP, URL 등) 이외의 주소로 정보 전송이 가능하면 안 된다. 

 

     ◎ 진단 방법

        프록시 툴(BurpSuite 등) 및 패킷분석 도구(WireShark 등)를 통해 전송되는 정보를 캡처한 후 허가된 주소로 

        패킷이 전송되는지 확인한다.

 

     ◎ 진단 기준

        전송되는 정보가 허가된 주소 이외의 다른 주소로 전송되면 취약한 것으로 판단한다.

 

* 저는 WireShark로 진행하였습니다.

 

8. 자원고갈

: 개발자의 코딩 오류로 인한 비정상적인 자원 사용, 앱 사용 시 발생하는 반복 작업 및 동기화 등으로 과도한 트래픽이 

  발생하거나 배터리가 빠르게 소모될 수 있다.

 

     ◎ 진단 방법

        배터리 사용량 앱 및 트래픽 사용량 앱을 통해 각각 배터리 사용량 및 트래픽 사용량을 확인한다.

 

     ◎ 진단 기준

        배터리 사용량 앱, 트래픽 사용량 앱을 통해 과도하게 사용됨을 확인하는 경우 취약한 것으로 판단한다.

 

* 2021년 버전에서는 모바일 기기에서 기본으로 제공되는 앱을 이용하여 배터리 사용량, 트래픽 사용량을 확인한다.

 

 

9. 루팅 및 탈옥 기기에서의 정상 동작

: 루팅(Android 기반 플랫폼), 탈옥(iOS 기반 플랫폼) 된 기기에서 앱 설치, 실행 및 정상 동작이 이루어져서는 안 된다.

  → 변조된 단말기에서는 악의적인 공격자가 애플리케이션 분석, 메모리 분석, 악성코드 감염, 중요 파일 및 중요 정보

       접근 등 다양한 공격을 수행할 수 있다.

 

     ◎ 진단 방법

         루팅 및 탈옥된 모바일 기기에서 앱을 설치하고 실행한 후, 앱의 동작 여부를 확인한다.

 

     ◎ 진단 기준

        앱이 루팅, 탈옥된 기기에서 작동하면 취약한 것으로 판단한다.

 

10. ID 값의 변경

: UID와 GID가 변경되어 중요한 데이터 또는 권한에 접근할 수 있게 되었을 경우 시스템 내 중요정보가 탈취될 수 있다.

   UID - User ID, GID - Group ID

 

     ◎ 진단 방법

        ls, ps 명령어를 이용하여 /data/data 디렉토리 내 앱 설치 파일의 UID, GID를 확인한다.

 

     ◎ 진단 기준

        설치된 앱의 설치 권한과 실행 권한이 다를 경우(설치 UID와 실행 UID가 다를 경우) 취약한 것으로 판단한다.

 

* 안드로이드는 서로 다른 앱의 데이터에 접근하지 못하게 하기 위해 앱마다 다른 UID를 할당한다.