4.최종 보고

                    종합설계 프로젝트 최종보고서 요약

팀명

 오미자

제출일

2014 11월 27일

프로젝트 제목


 AVA(Application Vulnerability Analysis)

어플리케이션 취약점 점검 시스템

설계 프로젝트 개요

    • 프로젝트 요약문
       
        ■ 프로젝트의 목표

         가. 사용자가 확인하고 싶은 어플리케이션을 Apk 파일 형태로 추출한다.

         나. 추출된 Apk 파일을 서버로 전송하여 Apk 파일에 대한 취약점 분석을 실시한다.

         다. 취약점 분석을 통해 도출된 결과를 리포팅 형태로 제공한다.

         결과적으로 사용자 입장에서 취약점 분석이 완료된 리포팅 결과를 토대로 차후 어플리에키션의 사용유무를 결정할 기회를 제공하고, 개발자 입장에서 리포팅 결과를 바탕으로 개발한 어플리케이션의 취    약점을 제공하는 것이 프로젝트의 목표이다.

        ■ 계획서 상의 연구내용

           1. 안드로이드 어플리케이션과 가상 서버 사이의 통신을 학습한다.

                 Apk 파일 추출 및 GCM과 전송모듈을 사용하여 통신
        
           2. 가상 서버에 Apk 분석을 위한 전처리 과정에 대해 학습한다.
                 정적 분석을 위한 Decompile, 동적 분석을 위한 패키지 분석
        
           3. 5가지 취약점 분석을 위한 ADB 및 Android 제어를 학습한다.
                가. Insecure Data Storage(안전하지 않은 데이터 저장)
                     -> 내부 DB에 대해 암호화를 적용하는지 확인한다.
                나. Weak Server Side Controls(취약 서버측 제어)
                     -> 어플리케이션이 접근하는 Web Server / Web Stie 에 대해 취약점 분석
                다. Insufficient Transport Layer Protection(불충분한 전송 계층 보호)
                     -> 어플리케이션에 들어오고 나가는 네트워크 패킷의 안전성을 위하여 SSL 통신을 사용하는지 확인한다.
                라. Improper Session Handling(부적절한 세션 처리)
                     -> Activity Stack / Intent Stack 을 확인하여 부적절한 세션을 확인
                마. Side Channel Data Leakage(주변 채널에 의한 데이터 누수)
                      -> 캐시 파일을 확인하여 디바이스 내에 남은 캐시에 중요 정보가 있는지 확인가능 하도록 한다
        
           4. 서버로부터 알림을 받고 전송모듈을 통해 받은 내용을 정제하여 display 할 수 있는 
               android SDK를 학습한다.
       
       
        ■ 마일스톤 수행 내용
        
      1.  안드로이드 어플리케이션과 가상 서버 사이의 통신을 학습한다.
        
             
       
      클라이언트에서 APK파일을 추출하여 서버에 전송을 하면, 서버에서는 해당 APK파일의 분석이 시작된다. 분석할 요소가 5가지이고, 그에 대한 리소스 처리가 많기 때문에 분석이 완료되어 리포팅이 클라이언트로 전송되면 GCM을 통해 알림을 띄어준다
        
      2. 가상 서버에 Apk 분석을 위한 전처리 과정에 대해 학습한다.

      먼저 apk 파일에서 java 소스를 추출하기 위해서는<그림4>와 같은 decompile 과정이 필요하다. apk 파일을 zip 확장자로 변경 후 압축을 풀면 classes.dex 파일과 xml, resource 파일들이 나온다. 여기서 classes.dex 파일을 dex2jar 프로그램을 사용하면 dex파일을 java의 압축파일 형식인 jar파일로 나오고 jar파일을 풀어보면 java파일들이 컴파일 된 class파일들이있다. 이 class파일들을 jad 프로그램을 사용하여 Java Decompile하면 java 소스파일들을 얻을 수 있다.

               < Apk Decompile Process >                       < Decompile Process 자동화 쉘 스크립트 >
        
         
      3. Insufficient Transport Layer Protection(불충분한 전송 계층 보호)
        
      Client의 디바이스 안에 내용을 따로 갖고 있지 않고, 통신을 통한 정보의 공유를 사용하는 경우도 많다. 예를 들어 은행 어플리케이션 같은 경우, 핸드폰과 서버끼리 통신을 하여 내용이 오고 간다.
      간단한 네트워크상에서 데이터 혹은 신원에 대한 정보를 보호하기 위해서는 하나의 키값을 이용한 간단한 암호화 방식을 사용하는 경우가 있다. 하지만, 단순 암호화만을 통해 잘못 설계된 프로토콜의 경우는 스니핑된 패킷을 동일하게 재생하면 동일한 결과를 얻을 수 있다는 것을 이용한 Replay attack기법을 통해 공격 당할 수 있다. 따라서 단순한 암호화 외에 암호화 통신을 할 때 여러 가지 정보를 포함하여 암호화하는 것이 안전한 패킷 통신 방법이며, 이러한 요구를 충족시키는 방법 중 하나로 현재 웹에서 많이 사용되고 있는 SSL(Secured Socket Layer)방식을 이용해 암호화된 패킷을 전송 하는 방법을 사용해야 한다. 
        
                   
                                         
                                                    <replay attack 모식도>
        
       
                          
        
                                                            <SSL 동작 원리>
        
       
        
      4.  Improper Session Handling(부적절한 세션 처리)
        
      스마트폰은 한정된 자원 속에서 많은 작업들을 해야 하기 때문에,사용하지 않거나,생명주기가 끝난 activity, service, intent들에 대하여 바로 파괴 하는 것이 좋다.때문에 destroy되지 않아 오랫동안 돌아가거나,혹은 강제로 destroy하였지만 곧 살아나는 좀비 항목들이 있다면 stack을 낭비하여 overflow가 발생 할 수 있으므로 취약하다고 볼 수 있다.
        
                                 
      위 그림은 부적절한 세션 처리에 대한 탐지를 알아내기 위한 알고리즘 도식도 이다. 전처리 과정을 통해서 도출해 낸 Package, Service, Activity를 통해 Activity와 Service를 무작위로 실행시킨다. 에뮬레이터 내부에서 무작위로 실행된 Activity와 Service를 바탕으로 해당 에뮬레이터의 Stack을 관찰한다.
      Stack내부를 분석하여 Activity가 전환이 될 경우, 이전의 Activity 상태가 POP상태가 되어 Stack을 나왔다면, 취약하지 않다고 판단하였고, POP이 되지 않은 채, PUSH상태가 주기적으로 나타난다면 취약하다고 판단하였다.
        
      5.  Side Channel Data Leakage(주변 채널에 의한 데이터 누수)
        
       
      주변 채널에 의한 민감한 데이터 누수가 있는지 여부를 판별하기 위해서 앱들이 남기는 cache파일을 집중적으로 분석을 해보았다. 분석 도중 매우 흥미로운 결과를 발견 할 수 있었는데 루팅이 되지 않은 일반사용자들도 접근할 수 있는 곳에 상대방에게 보내고 받았던 대부분의 사진의 자료들이 캐시 파일로 남고 있다는 것을 발견할 수 있었다. 그 사진 중에는 옛 연인들과 찍은 사진, 친구와 찍은 사진, 야한 사진 등을 있었다.
                     
                                                   < 이미지가 남아있던 캐시 파일 경로 >
        
       
                                          
       
                                                  < 캐시에 남아있던 보안 카드 이미지>
          
      최종 보고 요약
      1    시스템 기능 및 구조
          
                    
        
      분석을 원하는 어플리케이션에 대해 AVA 에서 정의한 5가지 분석 항목으로 체크 후 리포팅 된 결과를 사용자가 확인하여 선택한 어플리케이션이 취약한지 알 수 있다.
       
        
      2    기대효과 및 활용방안
        
      (1)   기대효과
      우리 앱을 사용하여 얻을 수 있는 기대효과는 크게 2가지로 분류될 수 있다. 첫째는 사용자의 입장으로, 취약점 분석이 완료된 리포팅 결과를 토대로 차후 어플리케이션의 사용유무를 결정할 수 있는 기회를 얻는 것이다. 둘째는 개발자의 입장으로, 리포팅 결과를 바탕으로 개발한 어플리케이션의 취약점을 확인 할 수 있으며, 출시 전 수정할 수 있는 기회를 얻는 것이다.
        
      (2)   활용 방안
      우리 앱을 활용할 수 있는 방안 또한 두 가지 입장으로 구분하여 정의할 수 있다. 첫째는 사용자의 측면으로, 출처가 불분명한 어플리케이션의 취약점 분석을 통해 보안이 취약한 어플리케이션을 사용자의 핸드폰에서 확인 및 삭제하는 용도 및 기존에 사용자가 사용하는 어플리케이션이 보안상 안전한 지에 대한 궁금증을 해결하는 용도로 사용될 수 있다.
      둘째는 개발자의 측면으로, 개발한 어플리케이션에 대해 출시 전 보안상 취약한 부분이 있는지 리포팅 결과로 제공되는 가이드라인을 통하여 확인 후 출시하는 용도로 사용될 수 있으며,  OWASP10 에 근거하여 제작한 우리의 앱을 사용함으로써 보안문제가 대두되고 시큐어 코딩이 강조되는 현시점에서 보안상 안전한 결과물을 만들어내는 용도로 사용될 수 있다.


YouTube 동영상



Ċ
3조 캡스톤,
2014. 11. 25. 오후 11:06
ć
3조 캡스톤,
2014. 11. 25. 오후 10:59
ĉ
3조 캡스톤,
2014. 11. 25. 오후 10:48
Ċ
3조 캡스톤,
2014. 11. 25. 오후 10:48
Comments