반응형

출처: http://blog.naver.com/taeyoun795/220658614529


1.4.3 Drozer를 이용한 안드로이드 앱 동적 분석

(1) Drozer란?

 

Drozer 는 안드로이드 앱을 위한 통합 자동 보안 진단 도구이다.

 

문서 및 다운로드 등은 drozer 메인 사이트를 참고한다. 현재 최신 버전은 2.3.4 이다.

 

Drozer 메인 사이트: https://labs.mwrinfosecurity.com/tools/drozer/

 

그림 287 drozer 메인 사이트

사전 준비 사항

 

-호스트 PC(Window/Linux/Mac OS X)

-안드로이드 디바이스 혹은 애뮬레이터(Android 2.1 이상)

 

시스템 필요 요건

 

-JDK 1.6 이상

-Python 2.7

-Android SDK

(Java와 adb는 시스템 환경 변수로 등록되어 있어야 함)

 

(2) drozer 실행 및 명령어

 

Step 1) 디바이스에 drozer 클라이언트 프로그램 설치

 

drozer 클라이언트 프로그램(agent.apk)은 drozer 메인 사이트에서 다운로드 받은 설치 프로그램을 압축해제 하면 볼 수 있다.

 

그림 288 agent.apk

adb 명령으로 디바이스 혹은 애뮬레이터에 설치한다.

 

그림 289 drozer 클라이언트 프로그램 설치

설치된 drozer Agent 프로그램을 실행 후 오른쪽 하단의 OFF를 클릭하여 ON한다.

 

그림 290 drozer agent 실행

 

Step 2) 포트 포워딩

 

다시 윈도우 커맨드로 돌아와서 drozer Agent에 의해 오픈된 TCP 소켓과 진단 PC를 연결하기 위해 포트 포워딩을 해 준다. 디폴트 포트는 31415이다.

 

 

그림 291 포트포워딩

Step 3) drozer 콘솔 접속

 

drozer 콘솔에 접속한다.

 

그림 292 drozer 콘솔 접속

 

정상적으로 실행되면 연결된 디바이스의 안드로이드 ID를 볼 수 있다.

 

Step 4) drozer 명령어 확인

 

drozer 콘솔은 CLI 기반이며 drozer 명령 프롬프트에서 help를 입력하면 drozer에서 사용되는 명령어를 보여준다.

 

그림 293 drozer 명령어

명령어

설명

run [모듈]

drozer 모듈을 실행한다.

list

현재 세션에서 실행할 수 있는 모든 drozer 모듈을 보여 준다. 적절한 실행 권한이 없으면 몇몇 모듈은 감춰진다

shell

Agent 프로세스가 설치되어 있는 디바이스의 Linux Shell을 실행한다.

cd

모듈의 full name을 반복적으로 입력하는 것을 피하기 위해 root 세션의 namespace를 마운트한다.

clean

drozer에 의해 안드로이드 디바이스에 생성된 임시 파일들을 삭제한다.

contributors

drozer 프레임워크와 모듈 제작자를 보여 준다.

echo

text를 console에 출력한다.

exit

drozer 세션 종료시킨다.

help

특정 모듈 혹은 명령에 대한 도움말 출력한다.

load

drozer 명령이 포함된 파일을 로딩한 후 실행한다.

module

인터넷으로부터 추가 drozer 모듈을 찾고 설치한다.

permission

drozer agent에 주어진 권한을 보여 준다.

set

환경 변수 등록

unset

환경 변수 해제

표 7 drozer 명령어

또한 help [명령어] 혹은 help [모듈이름] 을 입력하면 좀 더 자세한 설명을 보여 준다.

 

그림 294 drozer 명령어 확인

그림 295 drozer 모듈 확인

 

referer

drozer 메뉴얼 2015


반응형
반응형
출처: http://teamcrak.tistory.com/category/%EC%8A%A4%EB%A7%88%ED%8A%B8%ED%8F%B0

웹 모의해킹 시 개발자도구를 이용한 웹 애플리케이션 분석으로 로직에 허점을 발견하거나 DOM영역에 대한 변조를 통해 취약점을 찾는 등 분석을 하기 위해서는 다양한 방법이 존재합니다. 모바일 웹도 이처럼 브라우저를 이용하여 디버깅을 하거나 로직을 분석할 수 있는 방법이 있어 소개하고자 합니다.


주제: 크롬 브라우저를 이용한 모바일 웹 디버깅 및 분석 방법 소개

 1. 환경구성

 2. inspect를 이용한 mobile web remote debugging

 3. 크롬브라우저를 이용한 mobile web debugging


1. 환경구성

 - Chrome 버전 32 이상 설치 된 PC

 - 안드로이드 4.4 이상에서 크롬 설치

 - USB 디버깅 허용


2. Inspect를 이용한 Mobile web remote debugging

PC와 스마트폰을 연결 후 환경구성이 되면 크롬 브라우저 주소창에 chrome://inspect 를 입력합니다.

그 후 안드로이드 기기에서 크롬 브라우저를 실행 후 분석하고자 하는 대상 사이트로 접속합니다.

<그림1> 모바일에서 크롬브라우저 실행


inspect 버튼을 누르면 모바일에서 실행되는 사이트에 대한 remote debugging을 할 수 있게 됩니다.

<그림2> 크롬 브라우저 inspect 실행


다음과 같이 모바일 웹에 대한 디버깅 혹은 로직 분석이 가능하게 됩니다.

간단하게 breakpoint를 설정하고 모바일 웹에 대한 로직 분석을 하였습니다.

<그림3> 모바일 웹 디버깅 및 로직 분석


모바일 웹 사이트에 대한 함수 분석이나 스탭별 실행을 하여 로직 분석에 용이합니다.

<그림4> 모바일 웹 사이트 함수 및 실행 로직 분석


쿠키값 혹은 리소스 정보들을 확인할 수 있습니다.

<그림5> 모바일 사이트 내 리소스 정보 확인

 

Webview를 사용하는 앱에 대해서 분석할수 있습니다.

앱에 Webview debugging이 활성화 되어있어야 합니다. 코드패치나 소스수정을 통해 webview debugable을 true로 설정합니다.

<그림6> WebView를 사용한 앱에 대한 분석


inspect 버튼을 누르면 다음과 같이 디버깅 할 수 있는 화면에 접근하게 됩니다.

<그림7> Webview를 사용하는 모바일 앱에 대한 분석


3. 크롬브라우저를 이용한 mobile web debugging

모바일 웹에 대해서 스마트폰을 이용해서 분석을 할 수도 있지만 크롬 브라우저 내에 설정을 변경하여 모바일 웹에 대한 디버깅 및 분석을 할 수있는 방법도 존재합니다.


먼저 크롬 브라우저에서 F12 버튼을 누른 후 아래 그림과 같이 스마트폰 모양의 아이콘을 클릭합니다.

그 후에 Device 선택을 할 수 있는데, 환경에 맞는 Device를 설정하면 됩니다.

<그림8> 모바일 사이트 분석을 위한 크롬브라우저 설정 변경


breakpoint를 적용하여 로직 분석하거나 DOM영역에 대한 분석이 가능합니다.

<그림9> 모바일 사이트 로직 분석


콘솔로 정의된 함수를 확인하거나 파라미터 값들을 확인합니다.

<그림10> 모바일 웹 함수 분석



Async를 활성화해서 콜스택을 살펴봅니다.

<그림11> 호출 스택 확인 및 디버깅



이렇게 크롬 브라우저를 이용하여 모바일 웹에 대한 분석을 하고 다양한 방법으로 취약점에 대한 접근을 할 수 있게 됩니다.

모바일 웹에 대한 분석 환경은 크롬 브라우저를 통한 방법 이외에도 다양하게 있고, 저희 팀크랙에서는 상황에 맞춰 보다 효율적인 방법으로 취약점을 찾고 있습니다.

감사합니다.


참고자료

https://developer.chrome.com/devtools/docs/remote-debugging



반응형
반응형

출처: http://teamcrak.tistory.com/373


모바일 모의해킹 프로젝트 수행 중 안드로이드 메모리에 민감한 정보 평문 저장여부를 확인하기 위해 필요한 어플리케이션을 제작하였습니다. 점검 시 유용하게 사용하시길 바라며 아래와 같이 공유합니다.


버전: beta

빌드날짜: 2013. 9. 11

파일크기: 258KB

MD5: d0736e78ec7affb0ab5d89aca233fcd8


 Memory_Dump.apk



사용법

 

해당 어플리케이션을 사용하기 위해서는 우선적으로 루팅되어 있는 스마트폰에서 실행해야 합니다. 


제작 당시 jni로 구성하지 않고 binary execute로 제작하여 어플리케이션 실행시 지속적으로 권한을 요청하는 단점이 있습니다.

superuser 어플리케이션에서 설정 > 보안 > 자동응답 > 허가 로 변경하여 사용하면 자동으로 권한을 부여 받아 사용할 수 있습니다.


    

<그림1> 루트권한 요청 변경




   

<그림2> 자동응답 설정 변경



위와 같이 루트권한을 설정 후 첨부된 어플리케이션을 설치 후 실행합니다.


   

<그림3> 어플리케이션 실행





Attach 버튼을 눌러 실행중인 프로세스에 Attach 합니다.


   

<그림4> 프로세스 Attach




Maps 버튼을 누른 후 덤프할 메모리 영역을 선택합니다.


    

<그림5> 덤프할 메모리 영역 선택



덤프 전 선택된 메모리 영역을 메모리 뷰 버튼을 통해 볼 수 있습니다.


<그림6> 선택된 영역 메모리 뷰



메모리 덤프된 파일이 저장될 위치를 선택합니다. 현재 에러로 새폴더가 생성되지 않습니다. 추후에 수정예정입니다.


   

<그림7> 덤프 후 저장될 디렉터리 경로 설정



디렉터리 선택 후 Memory Dump 버튼을 눌러 덤프를 실행 합니다.


   

<그림8> 선택된 디렉터리에 덤프파일 저장




저장된 파일은 선택된 폴더에 PID_시작주소-끝주소 형식으로 저장됩니다.

해당 파일을 PC에서 다운로드로 핵사에디터로 확인합니다.


<그림9> 덤프파일 확인




메모리 영역에 문자열 검색을 위해 테스트 어플리케이션을 생성하여 살펴보겠습니다.


   

<그림10> 테스트 어플리케이션 실행




Attach 버튼을 눌러 PID를 선택 후 Maps 버튼을 눌러 덤프 주소값을 설정합니다.

이때, RW Select  버튼을 눌러 쓰기권한이 존재하는 부분만 선택하여 해당 주소의 메모리 값을 덤프합니다.


    

<그림11> PID, 주소값 선택




저장될 폴더를 선택후 Memory Dump 버튼을 눌러 메모리 덤프를 합니다.

해당 테스트 어플은 75메가 정도의 크기 덤프파일이 생성되었으며 2~3분 정도 시간이 경과된 후 완료 되었습니다.




    

<그림12> 메모리 덤프파일 생성



저장된 파일을 PC에 옮겨 살펴봅니다.


<그림13> 덤프파일 생성 확인





grep 명령어를 이용하여 파일들의 문자열을 검색합니다.


<그림14> 문자열 검색


7744_0000b000-00252000 파일에 검색된 문자열이 존재하는 것을 확인 할 수 있습니다.

핵사 에디터로 메모리 영역에 저장되어 있는 문자열을 확인 할 수 있습니다.

<그림15> 문자열 확인



메모리 덤프 시 새로운 어플리케이션 메모리 덤프할 경우 어플리케이션을 종료후 다시 실행해야 에러나지 않습니다.

주소 받아오는 부분에서 새로운 PID 선택시 배열을 초기화하지 않해서 그런듯 싶습니다. 추가적으로 시간이 주어진다면 개선하여 블로그에 올리도록 하겠습니다.


어플이 허접하다며 아이콘 만들어준 하모군에게 감사하며(흰화면에 기본아이콘이였음) 포스팅을 마치겠습니다.

감사합니다.



반응형
반응형
출처: http://blog.do9.kr/entry/Android-%EB%94%94%EB%B0%94%EC%9D%B4%EC%8A%A4%EC%97%90%EC%84%9C-Burp-Suite%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-HTTP-%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%A4%EC%A0%95-HTTPS-%ED%8F%AC%ED%95%A8



1. Burp Suite에서 Proxy > Options > Proxy Listeners > Add 를 선택하고 포트 번호를 입력해주고 All interfaces 선택하고 확인


2. 생성한 Listener의 Running 선택


3. Android 디바이스에서 환경설정 > Wi-Fi > 해당 네트워크 선택하여 네트워크 설정 변경 (디바이스마다 차이가 있으나 일반적으로 누르고  있으면 설정창이 뜸) 


4. 고급 옵션 표시 선택하고 프록시 설정 > 수동으로 변경한 다음 Burp Suite가 켜져있는 컴퓨터의 IP 주소와 앞에서 설정한 포트 번호를 입력


5. Android 디바이스에서 HTTP 통신을 해보면 프록시가 잡히는 것을 확인


6. HTTPS 프록시도 잡기 위해서는 인증서가 필요

  인증서를 받기 위해서 Android 디바이스에서 인터넷을 이용하여 http://burp 로 이동한 뒤 CA Certificate 선택 (자동으로 다운로드 됨)


7. 다운 받은 파일의 확장자를 보면 .der로 되어있어서 설치할 수가 없기 때문에 메일을 이용해서 보낸 다음 .cer로 변경해서 보내거나 파일 브라우저 어플리케이션 중에서 파일 확장자를 변경할 수 있는 어플리케이션을 이용해서 변경한 다음 설치


8-1. 내부에서 확장자를 변경하였을 경우 환경설정 > 보안 > 내장 메모리에서 설치를 선택하여 설치


8-2. 메일을 통해서 확장자를 변경한 파일은 다운받으면서 아래와 같이 바로 설치가 가능


9. Android 디바이스에서 HTTPS 통신을 해보면 프록시가 잡히는 것을 확인



반응형

+ Recent posts