반응형

안드로이드 애플리케이션에 대해 취약점 분석 및 모의해킹을 진행 시 Frida는 필수이다.

 

먼저 AndroidFrida를 설치하고 실행 하기 위해서는 PC에서 후킹 스크립트를 작성해야한다.

 

따라서 PC와 모바일 둘 다 Frida를 실행 할 수 있는 환경을 만들어주어야 한다.

 

PC 환경은 이전 포스팅을 보고 환경을 만들어 주자. (클릭)

 

먼저 진단용 단말기는 루팅이 진행되어야한다.

 

루팅과 관련된 내용은 따로 정리할지는 모르겠지만 검색만 하면 다른 포스팅이 많이 있다.

 

참고하자.

 

루팅된 폰에 다음과 같은 명령어를 입력하고 단말기가 32bit인지 64bit인지 확인한다.

 

getprop ro.product.cpu.abi

 

 

arm64-v8a는 64bit이기 때문에 frida 홈페이지에 가서 다운로드 받고 단말기에 넣어주기만 하면 끝이다.

 

Frida 공식 홈페이지는 다음과 같다. (클릭)

 

 

PC에 설치한 frida 버전과 똑같은 버전을 다운로드 받아 준다.

 

다운로드 받은 후 단말기에 해당 frida-server 파일을 넣어주고 실행 할 수 있는 퍼미션을 준다.

 

 

반응형

'모바일 해킹 > AoS' 카테고리의 다른 글

[UnCrackable AoS] Level 1  (0) 2022.03.23
[Android] NDK란??  (0) 2022.03.09
Byte Code & Binary Code  (2) 2021.11.09
Android Penetration Testing - Rooting (Galaxy S6)  (5) 2021.08.27
Android Penetration Testing - Setup  (2) 2021.01.11
반응형

 

갑자기 논문을 읽다가 평소와는 다르게 bytecode라는 단어를 보고

 

평소 같았으면 그냥 아 bytecode 하고 넘어갔지만

 

오늘 갑자기 bytecode??, binary code랑 뭐가 다른거지? 하고 어느 순간에 두개의 개념이 헷갈렸다.

 

따라서 이번에는 바이트 코드(Byte Code)바이너리 코드(Binary Code)를 짧게 정리해보고자 한다.

 

모든 언어를 예를 들거나 할때 등장하는 언어가 있다.

 

바로 C언어이다.

 

C언어는 컴파일러에 의해 소스파일(e.g., main.c, test.c)

 

오브젝트 파일(main.obj, test.obj)로 만들어진다. 

 

오브젝트 파일로 변환될때 0과 1로 이루어진 이진 코드

 

바이너리 파일로 변환된다.

 

0과 1로 이루어진 파일이기 때문에 컴퓨터는 해당 파일을 이해는 할 수 있다.

 

다만 실행은 못한다.

 

컴퓨터가 실행을 하기 위해서는 기계어(명령어 집합)가 되어야한다.

 

또한 C언어는 환경에 종속적이다.

 

이러한 문제점을 해결하고자 나온 언어가 자바(Java)이다.

 

자바는 컴파일러에 의해 소스파일(e.g., main.java)오브젝트 파일(e.g., main.class)로 변환되며

 

바이너리 코드가 아닌 바로 바이트 코드로 변환된다.

 

또한 환경에 독립적이며 바로 실행 할수 있다.

 

둘다 똑같이 컴파일러에 의해 소스파일컴파일 되었고

 

컴파일 된 파일 오브젝트 파일되었는데

 

C언어에서는 바이너리 코드, Java에서는 왜 바이트 코드일까?

 

완벽한 정답은 아니지만 두개의 차이점은 바로 실행 할 수 있냐 없냐의 차이이다.

 

차이점을 알아보자.

바이너리 코드

  • 컴퓨터가 인식하고 이해할 수 있는 이진 숫자 체계의 0과 1로 구성된 코드를 의미한다.

기계어

  • 기계어는 CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어를 통틀어 일컫는다.
  • 기계어는 프로그램을 나타내는 가장 낮은 단계의 개념이다.
  • 기계어는 어셈블리어와 1 : 1로 쓰일 수 있다.

바이트 코드

  • 가상 머신에서 이해하고 실행 할 수 있는 0과 1로 구성된 코드이다.
  • 어떠한 환경에 종속적이지 않고 실행 될  수 있는 가상 머신용 기계어 코드이다.

 

나름 바이너리 코드바이트 코드의 차이를 간단하게 정리를 해보았다.

 

위의 논문에서도 바이너리 코드라고 하지 않고

 

바이트 코드라고 쓰여져있었던것이다. (안드로이드 관련 논문)

 

왜냐? 안드로이드에서 사용하는 애플리케이션(App)은 Java로 만들어졌기 때문이다.

 

 

 

 

반응형

'모바일 해킹 > AoS' 카테고리의 다른 글

[Android] NDK란??  (0) 2022.03.09
[Android] Frida 설치  (0) 2022.01.23
Android Penetration Testing - Rooting (Galaxy S6)  (5) 2021.08.27
Android Penetration Testing - Setup  (2) 2021.01.11
Android Penetration Testing - Introduction  (0) 2021.01.11
반응형

오늘은 Galaxy S6를 루팅 해볼 것이다.

 

루팅 하는 이유는 모의해킹 진단 시 필수로 갖추어야 할 환경이다.

 

무조건 테스트 단말기를 구입해서 진행하는 것이 좋다.

 

루팅에 대한 문제점은 다른 블로그가 많으니 이에 따른 불이익은 책임지지 않는다.

 

먼저 루팅을 위해서는 총 4가지 파일이 준비되어있어야 한다.

 

1. 해당 단말기의 통신사와 일치하는 펌웨어

2. TWRP

3. Magisk

4. Odin

 

이렇게 총 4가지가 필요하다.

 

위의 4가지 파일을 정리하자면 다음과 같다.

 

1. G920SKSS3ETJ1 (SKT)

2. twrp-3.3.1-0-zeroflteskt.img

3. Magisk-v23.0

4. Odin3-v3.13.1

 

이렇게 준비해주면 된다.

 

(만약 위의 환경과 맞을 시 댓글을 남겨주시면 공유해드리겠습니다.)

 

위의 파일 중 먼저 테스트 단말기에서 설정을 해주어야 한다.

 

밑에서 이제 설명할 것인데 그림들을 일부러 크게 캡처하였다.

 

하나하나 잘 읽어보도록 하자.

 

 

1. 단말기 설정

 

먼저 설정에 들어가서 제일 밑에 있는 디바이스 정보를 눌러준다.

 

 

그 후 소프트웨어 정보를 클릭해준다.

 

 

그리고 빌드번호를 7번 눌러주면 개발자 모드가 활성화된다.

 

 

뒤로 가기로 다시 설정으로 돌아오면 밑에 개발자 옵션이 새로 생긴 것을 볼 수 있다.

 

개발자 옵션을 클릭해서 들어가 보자.

 

 

개발자 옵션에 들어가면 밑으로 내려가다 보면 USB 디버깅 옵션이 나오는데 이것을 활성화시켜주자.

 

 

 

여기까지 하면 단말기 설정은 끝이다.

 

원래 OEM 해제를 해주어야 하지만 Galaxy S6에는 없다.

 

따라서 USB 디버깅만 활성화해주면 된다.

 

그런 다음 Galaxy S6의 경우는 전원을 꺼준

 

홈버튼이 있는데 홈버튼 + 음향(-) +전원 키를

 

몇 초 누르다 보면바로 다운로드 모드로 들어가 주어야 한다.

 

adb 명령어로는 다음과 같이 입력해도 된다.

 

 

위의 2개의 방법 중 편한 하나를 선택해서 다운로드 모드로 진입해주자.

 

다운로드 모드로 진입하면 다음과 같은 화면을 볼 수 있다.

 

 

 

2. 펌웨어 설치

 

이제 다운로드가 되었으면 펌웨어 설치를 해주어야 한다.

 

이 상태에서 PC와 단말기를 USB로 연결하여 odin을 실행시켜준다.

 

그 후 펌웨어를 하나씩 올려주어야 하는데 펌웨어는 총 4개의 파일로 구성되어있다.

 

 

AP, BL, CP, CSC로 구성되어 있는데 밑의 그림처럼 odin의 BL, AP, CP, CSC 항목

 

차례대로 하나씩 넣어주자.

 

펌웨어 파일을 넣어주기 전 Options에 들어가 "Auto Reboot"를 꼭 해제해주자.

 

 

 

위의 그림처럼 펌웨어 파일을 넣어준 후 Start 버튼을 눌러주자.

 

 

Start를 누르게 되면 이제 펌웨어가 단말기에 새롭게 설치가 된다.

 

이렇게 조금만 기다려주면 다음과 같은 화면을 볼 수 있다.

 

 

이렇게 되었으면 폰에서는 아직까지 다운로드 중...이라는 문구를 볼 수 있는데

 

진행이 안 된 것이 아니라폰을 강제적으로 꺼주어야 한다.

 

폰을 강제적으로 끄는 방법은 음향(-) + 전원 버튼이다.

 

약 7초간 누르면 폰이 강제적으로 꺼진 후 system 설치가 진행될 것이다.

 

그 후 No command라는 문구가 나올 수 있는데 그 이후에 

 

Android Recovey라는 화면이 나온다. (나올 수도 있고 안 나올 수도 있다.)

 

그러면 5번, 6번에 "Wipe data/factory reset", "Wipe cache partition"이라는 것을 전원 버튼으로 클릭하여

 

차례로 5번 Yes, 6번 Yes를 진행해준다.

 

그 후 1번째 "Reboot system now"를 클릭한 후 단말기가 다시 켜지기를 기다리자.

 

 

기다리면 위의 화면처럼 진행해주면 된다.

 

3. TWRP 설치

 

다음은 이제 TWRP를 설치를 해주어야 한다.

 

이는 Magisk라는 루팅 애플리케이션을 설치하기 위해서이다.

 

다시 1. 단말기 설정에 들어가서 꼭 USB 디버깅을 설정을 해주어야 한다.

 

그 후 다시 다운로드 모드로 들어간다.

 

다운로드 모드로 들어간 후 twrp를 받았던 파일을 odinAP부분에 넣어주자.

 

 

 

이렇게 넣어주고 Start를 눌러준 후 다시 폰을 강제 재부팅을 해주는데 여기서부터가 중요하다.

 

Galaxy S6에서 강제 재부팅을 한 후 화면이 꺼진 후

 

바로 홈 버튼 + 음향(+) + 전원 버튼을 누르고 있어야 한다. (중요!!!!!)

 

그러면 다음과 같은 twrp 리커버리지 화면을 볼 수 있다.

 

 

 

4. Magsik 설치

 

이제 리커버리지 화면에서 "Swipe to Allow Modifications"를 옆으로 스와이프 해주자.

 

 

그 후 "Wipe"를 클릭해주자.

 

 

위의 그림에서는 잘 보이지 않지만 "Format Data"를 클릭해주자.

 

 

그 후 "YES"를 입력해준다.

 

 

Yes를 누른 후 화면에서... done이라는 문구가 나오면 된다.

 

그 후 단만기를 USB로 PC에 연결하여 파일을 옮겨준다.

 

 

단말기를 PC에 연결하면 Internal Storage가 보이는데 거기에 위의 두 파일을 넣어준다.

 

(해당 파일도 필요시 댓글로 요청하면 공유해드리겠습니다.)

 

그 후 위의 Up A Level을 클릭 후 sdcard로 들어가 준다.

 

 

sdcard에 들어가면 아까 PC에서 단말기로 옮긴 2개의 파일이 보인다.

 

차례로 설치해주자.

 

 

 

똑같이 Magisk도 설치해준다.

 

 

 

 

이렇게 설치를 다 끝나면 위의 Reboot System을 눌러 다시 폰이 켜질 때까지 기다리자.

 

 

 

5. Magisk 실행

 

폰이 부팅되면 위의 Magisk라는 애플리케이션이 설치되어있다.

 

클릭하면 다음과 같은 문구를 볼 수 있고 확인을 눌러주자.

 

 

 

 

이렇게 설정한 후 설치를 클릭하여 Magisk를 설치해주자.

 

 

 

 

 

이제 Magisk 애플리케이션에 다시 들어가면 다음과 같은 문구를 볼 수 있는데 확인을 눌러주고

 

재부팅을 하면 Rooting이 성공한 것이다.

 

 

 

반응형

'모바일 해킹 > AoS' 카테고리의 다른 글

[Android] NDK란??  (0) 2022.03.09
[Android] Frida 설치  (0) 2022.01.23
Byte Code & Binary Code  (2) 2021.11.09
Android Penetration Testing - Setup  (2) 2021.01.11
Android Penetration Testing - Introduction  (0) 2021.01.11
반응형

먼저 안드로이드의 Pentesting를 배우기 위해서는 환경을 Setup 해줘야한다.

 

먼저 준비물이다.

 

3가지만 있으면 된다.

 

루팅된 테스트 폰과 PC와 테스트 폰과 PC가 연결 할 수 있는 선만 있으면된다.

 

다른것도 있지만 그건 설치만 하면된다.

 

우선 PC와 테스트용 모바일 폰이 연결이 되어야하며 PC에서 폰으로 명령어를 내리기 위해

 

ADB를 설치해주어야한다.

 

ADB란?

 

Android Debug Bridge의 약자로, Android를 위한 Debugging Tool이다.

 

주로 Debugging 용도로 사용되며 쉽게 설명하자면 PC에서 Android 기반의 Device와 연결하여

 

PC에서 보다 쉽게 Debugging 하기 위해 사용된다.

 

설치는 다음 주소에서 한다. (클릭)

 

 

Windows용을 다운받아 알집을 풀어주자.

 

압축을 풀면 platform-tools 폴더와 함께 다음과 같은 파일이 보일 것이다.

 

 

이제 cmd창에서 adb를 사용하기 위해 환경 변수를 설정해 줄것이다.

 

 

윈도우키를 누르고 "환경" 이라고 검색하면 시스템 환경 변수 편집이 있다.

 

 

여기서 환경 변수를 클릭한다.

 

 

클릭한 후 Path라는 것을 더블클릭하여 아까 설치한 platform-tools 폴더 경로를 입력해주자.

 

 

그 후 cmd 창을 열어 adb라고 입력 해보자.

 

이렇게 adb가 실행되면 PC와 테스트용 단말기가 연결이 가능하다.

 

pc와 테스트용 단말기를 연결하여 adb shell을 입력해보자.

 

이렇게 여러가지 명령어를 cmd 창을 통해 명령 할 수 있다.

 

일단 diva-beta.apk를 설치 해준다. (댓글로 요청시 보내드리겠습니다.)

 

설치 하면 zip 파일 형태인 diva-beta.apk가 보인다.

 

 

해당 경로에서 cmd 창을 열어 adb install diva-beta.apk를 입력해준다.

 

 

위의 명령어는 adb로 apk를 install 설치 한다는 의미이다.

 

이렇게하면 테스트용 단말기에 diva.apk가 설치된다.

 

그리고 pc에서 알집으로 diva-beta.apk를 풀어보자.

 

알집으로 푼 AndroidManifest.xml 파일을 에디터로 열어보자.

 

 

이렇게 알 수 없는 값으로 보인다.

 

그 이유는 APK가 컴파일 된 후 바로 알집을 풀었기 때문에 컴파일된 코드이다.

 

따라서 우리가 눈으로 읽을 수 없다.

 

AndroidManifest.xml 코드를 읽고 싶다면 Decomplie 과정을 진행해야한다.

 

Decomplie 과정을 진행하기 위해서는 apktool이나 JEBDecomplier tool을 사용한다.

 

apktool이란 대표적인 안드로이드 애플리케이션(Android Application) 대상의 리버스 엔지니어링 도구이다.

 

APK 파일을 분석하여 리소스를 뽑아낼 수 있고(디코딩), 코드를 수정하여 다시 재빌드(Rebuild)할 수도 있으며

 

실제로 XML, 이미지 파일, .dex 파일을 포함하여 안드로이드 앱의 주요 소스를 뽑기 위해 가장 많이 사용되고 있는 Tool 중 하나이다.

 

JEB 또한 apktool과 같은 리버스 엔지니어링 도구라고 생각하면 된다.

 

apktool은 여기서 다운로드 받을 수 있다. (클릭)

 

apktool로 Decomplie을 진행 할 때 다음과 같은 명령어를 입력한다.

 

java -jar apktool_버전 d diva-beta.apk

 

 

또한 JEB로 apk를 Decomplie할 때는 JEB에 Decomplie을 원하는 apk를 드래그하면 된다.

 

 

이제 AndroidManifest.xml가 Decomplie 되어 우리가 소스를 다시 분석할 수 있다.

 

 

위의 과정은 우리가 Source Code Level에서 분석할 때 주로 쓰이는 방법이다.

 

이제 App과 서버단에서 통신을 할 때 어떤 데이터를 주고 받는지 분석하기 위해

 

Android Traffic를 잡는 방법을 알아보자.

 

Android Traffic를 잡기 위해서는 Web-proxy를 사용한다.

 

Web-proxy로 대표적으로 burpfiddler가 있다.

 

burp에 대해서는 많은 포스팅이 되어 있으므로 이번에는 fiddler로 기준으로 설명하겠다.

 

fiddler를 설치하고 Tool-Options-HTTPS 탭에가서 밑에처럼 박스를 체크한다.

 

체크할 때 시스템에 인증서를 설치하는데 다 Yes를 눌러주자.

 

 

그 후 Connections 탭에가서 Allow remote computers to connect 박스를 체크를 해주자.

 

그 후 테스트용 폰으로 들어가서 PC의 ip 주소:8888를 입력한다.

 

 

그 후 fiddler 인증서를 테스트 단말기에 설치 해준다.

 

설치 한 후 테스트용 단말기에서 WiFi 항목에서 PC와 같은 네트워크 대역에 있는 WiFi을 클릭 한 후

 

고급탭에서 프록시를 자동에서 수동으로 변경한다.

 

변경 후 프록시 호스트 이름에 PC의 IP를 입력해주고 프록시 포트에는 8888로 입력 후 저장을 누른다.

 

 

 

 

그 후 fiddler에서 보면 테스트 단말기에서 전송되는 패킷을 볼 수 가 있다.

 

여기까지가 DIVA를 풀기 위한 전체적인 Setup 과정으로 보면 되겠다.

반응형

'모바일 해킹 > AoS' 카테고리의 다른 글

[Android] NDK란??  (0) 2022.03.09
[Android] Frida 설치  (0) 2022.01.23
Byte Code & Binary Code  (2) 2021.11.09
Android Penetration Testing - Rooting (Galaxy S6)  (5) 2021.08.27
Android Penetration Testing - Introduction  (0) 2021.01.11
반응형

이번 포스팅 부터는 안드로이드의 Pentesting의 기초에 대해서 배워보자.

 

앞으로 Android 애플리케이션 분석을 시작하는 방법과

 

취약한 애플리케이션 DIVA의 다양한 취약점을 다루는 방법에 대해서 배워 볼 것이다.

 

DIVA는 취약하게 만들어진 Android 애플리케이션을 의미하며

 

기초와 개념을 익히도록 만들어진 애플리케이션을 의미한다.

 

앞으로의 포스팅에서 다룰 몇가지 중요한 것을 살펴보자.

 

1. 애플리케이션 분석 하기 위해 소스 코드를 얻는 방법을 배울 것이다.

 

2. 1번에서 얻은 소스코드에서 취약점을 찾는 방법을 배울것이다.

 

3. apk을 decompiling 하는 방법과 apk을 unzipping의 차이점을 배울것이다.

 

4. kali vm에서 모바일에서 발생되는 트래픽을 분석하는 방법을 배울 것이다.

 

5. 앞으로 다룰 취약점은 다음과 같다.

     i. Insecure Logging

     ii. Hardcoding Issues

     iii. Insecure Data Storage

     iv. Input Validation Issue

     v. Access Control Issue

반응형

'모바일 해킹 > AoS' 카테고리의 다른 글

[Android] NDK란??  (0) 2022.03.09
[Android] Frida 설치  (0) 2022.01.23
Byte Code & Binary Code  (2) 2021.11.09
Android Penetration Testing - Rooting (Galaxy S6)  (5) 2021.08.27
Android Penetration Testing - Setup  (2) 2021.01.11

+ Recent posts