[안드로이드 모의해킹] 정적분석과 동적분석

직접 연구하여 작성한 자료입니다. 공식 출처가 명시되지 않은 자료의 무단 복제, 사용을 금지합니다.
공격 기법은 학습용, 허가된 환경에서 실습 바랍니다. 실 운영망 대상 공격은 처벌받습니다. (정보통신망법 제48조 1항)

개요

안드로이드 취약점 진단을 수행함에 있어 정적분석과 동적분석은 떼어놓을 수 없는 필수적인 과정이다. 앱을 분석하기 위해서는 앱의 실제 실행 여부에 따라 코드를 분석하는 정적분석, 앱을 실행하면서 전달되는 데이터나 행위를 분석하는 동적 분석 두 단계로 나눌 수 있다. 각각의 단계에서 얻을 수 있는 정보가 다르고 서로 상호보완적으로 정보를 제공하기 때문에 하나씩 살펴보아야 한다. 이 포스트에서는 두 가지 분석 방법에 대해 알아본다.

 

정적 분석

정적 분석은 앱을 설치하지 않고 확인할 수 있는  기본 정보들을 먼저 분석한다. 파일 해쉬를 기반으로 이미 다른 백신 앱에서 악성 앱으로 탐지하고 있지는 않은지, 요청하고 있는 권한은 어떤 것들이 있는지, 앱의 화면 구성은 어떻게 되어 있는지 등 많은 정보를 정적 분석을 통해 얻을 수 있다.

  • 정적분석 단계에서는 로그인 기능에서 사용되는 코드를 분석한다.
  • 코드에서 사용자 입력 값이 적절히 검증되었는지, 데이터베이스 쿼리문에서 SQL 삽입 공격(SQL Injection) 등에 대비한 적절한 조치가 되어 있는지 확인한다.
  • 또한, 코드 내에 민감한 데이터가 하드코딩되어 있는지 확인한다.

 

동적 분석

다음으로 동적 분석에서는 준비된 안드로이드 가상 에뮬레이터에 피해 환경과 동일하게 환경을 구성하고, 직접 앱을 설치하고 실행하여 어떤 정보가 앱 내에서 수집되는지, 그리고 공격자의 서버로 전송되는 지 확인한다. 분석가가 제어할 수 있는 환경이 더 많은 상태에서 분석을 수행하기 때문에 실제로 네트워크로 전송되는 데이터도 확인할 수 있고 앱에서 공격자의 서버로 전송하는 행위도 중간에서 가로채어 변조할 수도 있다.

  • 동적분석 단계에서는 앱을 실제로 실행시켜 동작을 관찰한다.
  • 로그인 화면에서 사용자의 아이디와 비밀번호를 입력하고 로그인 버튼을 클릭한다.
  • 동적분석 도구를 이용하여 네트워크 패킷을 관찰한다. 데이터가 암호화되어 전송되는지, 서버의 종류와 버전이 파악가능한지 여부 등을 확인한다.
  • 동시에 로그인 요청에 대한 응답이 적절한지 확인한다. 잘못된 계정정보 등을 입력했을 때, 허용하지 않는 문자열을 포함하여 전송했을 때 적절한 오류처리 여부를 확인한다.

예시의 경우에서 정적분석은 코드 자체의 안전성과 데이터 처리 방식을 확인하는 역할을 하며, 동적 분석은 앱이 실제로 동작할 때 발생하는 데이터와 네트워크 통신을 분석하여 런타임에서의 취약점을 확인한다. 취약점 분석에서 정적분석과 동적분석은 유기적으로 결합되어야 하며, 그 과정은 다음과 같이 이루어질 수 있다.

 

종합

이 두가지 분석 방법을 이용한 앱 분석 전체 과정을 정리하면 다음과 같이 정리할 수 있다.

 

1)     정적분석을 통한 사전 분석

  • 앱의 소스 코드 및 리소스 디컴파일 및 분석
  •  Manifest 파일을 분석하여 권한 요청 및 구성 요소
  • 코드 내에서 취약한 함수 호출, 하드코딩된 중요 정보 노출 등 식별

 

2)     동적 분석 환경 구성

  • 에뮬레이터 또는 실제 단말기에 앱 설치 및 실행 환경 구성
  • 동적분석도구 등을 준비하여 네트워크통신, 단말기 로그 분석 준비

 

3)     앱 실행 및 동작 관찰

  • 동적분석도구 이용한 앱 실행, 사용자 입력 및 앱 반응 관찰
  • 서버와 상호작용하는 경우, 네트워크 통신구간 모니터링 및 데이터 관찰
  • 통신구간 데이터의 암호화 여부, 인증 및 인가 로직 식별

 

4)     데이터 변조, 재전송 등 모의공격 수행

  • 통신구간 데이터 변조, 재전송 및 응답 관찰
  • 앱 소스코드 패치 및 리패키징 통한 변조 후 실행 후 관찰
  • 단말기 내 저장소 데이터 변조, 디바이스 정보 조작, 센서 조작 및 응답 관찰

 

5)     앱의 상태 변화 및 메모리 분석

  • 동적분석 중 앱의 상태변화 모니터링
  • 메모리 덤프, 변조를 통해 메모리 누수, 민감 데이터의 평문저장 여부 확인

 

6)     분석 결과 종합 및 취약점 식별

  • 분석 결과에 따른 취약점 식별, 보완 및 수정사항 파악
  • 보완할 내용을 관계자에 보고하여 취약점 해결하도록 안내

 

마치며

동적분석 과정의 유의사항으로 앱의 모든 기능을 충분히 파악하는 것이 중요하다. 앱 내부에서 발생할 수 있는 다양한 취약점을 식별하기 위해 앱의 기능과 해당하는 코드를 충분히 파악하도록 한다. 앱의 기능을 정확히 파악하면 특정 기능이나 데이터 처리 과정에서 발생할 수 있는 취약점을 예측할 수 있고 공격 시나리오를 작성하는 데도 도움이 된다.

위의 과정을 고려하여 앱 분석을 수행하면, 다양한 취약점을 체계적으로 탐지할 수 있다.

 

 

반응형