전에 썼었는데 지워져 버려서 다시 씀.

우선 frida와 frida-gadget은 구동하는 환경에 따라 실행 방식을 변경하는 형식임.

 

frida : frida-server를 device안에서 실행시켜 앱과 연동하는 방식 (루팅 된 환경)

frida-gadget : 별도의 frida-server를 device에서 먼저 실행시키지 않고 lib를 추가하여 앱 실행 시 frida-server가 구동하는 방식 (비 루팅 환경에서도 쓸 수 있음.)

 

1. lib파일 추가

frida-gadget 파일을 다운받아 앱 내부에 삽입.

이름을 'libfrida.so' 와 비슷한 형식으로 바꿔 줌.

 

2. manifest 파일에 permission 추가

<uses-permission android:name="android.permission.INTERNET" />

위에 작성한 코드를 manifest 파일에 추가.

 

3. 앱에서 가장 먼저 실행되는 부분에 코드 추가

우선 먼저 실행되는 smali파일을 찾는 것이 중요함.

adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'"

위의 명령어를 앱 실행과 동시에 cmd를 통해 입력하면 현재 실행 중인 뷰가 참조하는 smali파일의 위치를 알 수 있음.

 

const-string v1, "frida"
invoke-static {v1}, Ljava/lang/system;->loadLibrary(Ljava/lang/String;)V

찾은 smali파일에 가장 먼저 코드가 실행될 수 있도록 위의 코드를 추가.

 

*파일 이름과 코드 내 명칭은 통일되어야 함*

 

4. 앱 리패키징

apktool b -o [out] [decompiled folder]

위의 apktool을 이용하여 해도 괜찮지만 apk easy tool을 이용하는 방법도 괜찮음. (블로그 내 포스팅된 글 참조)

 

5. frida 실행

이전에 frida관련 글을 보고 실행시켜 줘도 되고 frida를 실행시켜 코드를 수정할 경우 아래의 명령어를 실행시켜주면 됨.

frida -U gadget  

 

끝!

1. 개요

인증서 설치만으로 SSL Pinning우회가 안될 경우 이를 우회하는 방법은 여러 가지가 있지만 간단히 앱을 설치하는 것만으로 우회하는 방법도 있다.

 

2. 준비

Xposedinstaller.apk(버전은 알아서), Just trust me.apk(모듈 버전도 알아서), Nox

 

3. 설치 방법

우선 어플을 먼저 설치해줍니다.

 

설치 후 프레임워크를 설치해야 하는데 이 과정은 디바이스가 루팅이 되어있는 상태에서 설치가 가능합니다. 그러므로 Nox를 루팅 상태로 만든 후에 시도하여 줍니다.

위의 XPOSED 프레임워크 설치 및 업데이트 밑의 VERSION 89를 눌러주면 위와 같은 창이 뜨는데 Install을 눌러 설치를 해줍니다.(이때 디바이스는 루팅 된 상태여야 합니다.)

위와 같이 진행되면 슈퍼 루트의 권한을 주어서 진행합니다.

설치 후 재시작하여 줍니다.

 

이렇게 설치가 정상적으로 되었다면 Just trust me.apk를 설치해줍니다.

 

위와 같이 모듈을 설치한 후 체크해주면 사용할 준비가 된 것인데 이때 Just trust me설치 후에 디바이스를 재부팅해주어야 모듈이 정상적으로 동작합니다.

 

이 과정을 거친 후에는 이전의 인증서 설치를 이용항 SSL Pinning과 같은 방식으로 진행하시면 됩니다.

 

4. 제거 방법

제거할 때는 모듈을 길게 눌러주면 위와 같은 창이 뜹니다. 모듈은 이렇게 제거해주시면 됩니다.

제거에는 순서가 있는데 설치할 때 받은 파일을 먼저 지워주고 아래의 SPOSED 프레임워크 제거를 해주어야 합니다.

먼저 설치에서 Delete downloaded file을 해줍니다.

그런 후 Uninstaller에서 Sposed 프레임워크 제거를 해주면 제거가 됩니다.

프레임워크를 지우는 과정은 설치 때와 같이 재시작이 필요합니다.

돌아와서 Uninstaller의 Delete downloaded file을 진행한 후 어플도 지워주시면 됩니다.

1. 개요

어플의 통신을 프락시로 잡아 변조할 수 있는 것은 어플의 통신상 정보를 변조하거나 조작할 수 있으므로 방어해야 하는 부분 중 하나이다. 하지만 어플의 패킷이 BurpsuitFiddler로 잡히는 것을 대수롭지 않게 처리하는 곳이 많다. 오늘은 SSL Pinning의 방법 중 가장 간단한 인증서 설치를 이용한 SSL Pinning우회를 알아보도록 하겠습니다.

 

2. 준비

Fiddler 혹은 Burpsuit, Nox player

 

3. 방법

FiddlerBurpsuit 인터넷을 통해서 쉽게 다운로드할 수 있습니다. 그럼 순차적으로 Burpsuit, Fiddler의 프락시 설정을 순차적으로 설명하겠습니다.

 

1) Burpsuit

Burpsuit실행 후 프락시를 설정할 IP주소를 설정하여 줍니다. Proxy>Options에서 설정 값 클릭 후 왼쪽의 edit를 클릭하여 변경할 수 있습니다.

Specific address를 선택하여 프락시로 사용할 IP를 선택하여 줍니다. 여기에서 사용되는 특정 주소는 본인의 IP를 사용하는 경우가 대부분입니다.

 

여기까지가 PC에서 설정해 주어야 할 부분입니다.

 

SSL Pinning을 위해서는 WIFI환경을 필요로 하는데 이유는 디바이스의 프락시를 디바이스 내의 WIFI에서 직접 설정할 수 있으며 PC에 연결된 공유기를 통해 프락시 설정이 가능하기 때문입니다. 이는 iPhone에서도 과정이 흡사하니 참고 바랍니다..

 

단말기 내의 설정>WIFI>네트워크 수정에 보면 고급 옵션이 존재합니다.

프락시를 수동으로 선택하면 위와 비슷한 화면이 나타나게 됩니다.

이곳에 호스트와 포트를 Burpsuit에 설정해 주신 값과 동일하게 설정하여 주시면 됩니다.

 

여기까지 하면 프락시가 잡히는 것을 확인할 수 있지만 SSL/TLS연결의 경우는 잡더라도 해석이 불가능한 경우가 있습니다. 이를 위해 인증서를 설치하여 주는 과정을 거칩니다.

 

인터넷을 이용해 https://burp로 이동하면 위와 같은 화면이 나타나는데 오른쪽 위의 CA Certificate를 누르면 인증서를 다운로드하게 됩니다.

 

다운이 안 될 경우는 컴퓨터를 프락시에 연결하여 동일한 주소로 이동하면 같은 창을 확인할 수 있습니다.

처음 다운로드할 경우 위와 같이 확장자 명이 .der로 되어 있습니다. 이것을 .cer로 고쳐주어 디바이스에 넣거나 디바이스에서 다운로드하였을 경우는 파일 관리자에서 확장자를 바꾸어 주면 됩니다.

설정>보안>자격증명 저장소>SD카드에서 설치를 선택합니다.

인증서를 넣어둔 폴더에 가서 인증서를 선택하여 줍니다.(이미 확장자는 .cer로 바꾼 후입니다.)

인증서 이름을 입력한 후 확인을 누르면 인증서 설치가 끝납니다. 주의할 점은 만약 디바이스 잠금(비밀번호 잠금, 패턴 잠금 등)이 설정되어 있지 않으면 인증서 설치가 불가합니다.

 

2) Fiddler

FiddlerBurpsuit와 방법이 대부분 동일하지만 프락시 설정과 인증서 다운로드하는 방법이 다르므로 두 가지만 알려주도록 하겠습니다.

 

Tools>Options>HTTPS를 선택하면 Capture HTTPS CONNECTsDecrypt HTTPS traffic을 체크해 줍니다.

Connections탭에서 Fiddler listens on port를 설정해 줍니다. 대부분 8888을 많이 해줍니다.

이렇게 하면 모든 준비가 끝나지만 여기에서 단말기에 설정해주는 IP값이 다릅니다.

Fiddler 앱 내의 우측 상단에 보면 사진과 같은 게 보일 텐데 위에 마우스 포인터를 올려주면 설정할 IP값이 보입니다. 또한 PC 내부에서 CMDipconfig명령어를 통해 IP값을 알아내는 방법도 있습니다.

 

이후 WIFI를 설정해주는 방법은 동일합니다. 후에 인증서를 다운로드하는 것이 다릅니다.

http://ipv4.fiddler:8888 페이지

http://www.telerik.com/fiddler/add-ons

이 페이지에서 Certificate Maker plugin(CertMaker for iOS and Android)를 다운로드하여서 설치해 줍니다. Fiddler를 재시작해주고 디바이스의 프락시 설정을 모두 마친 뒤에 http://ipv4.fiddler:8888에 접속하여 FiddlerRoot certificate를 다운로드하여 줍니다.

이후의 인증서 설치 과정은Burpsuit와 같습니다.

1. 개요

Android 핸드폰을 점검하며 View 조작과 앱을 사용한 루팅 우회, 간단한 파일 바꾸기,, 간단한 Smali파일 변조 등 여러 가지 방법으로 점검을 해보았을 것입니다.

하지만 알기만 한다면 Android iOS에서 가장 많은 활용도를 보여주는 도구는 단연 Frida일 것입니다.

물론 제가 다 아는 것은 아니지만 아는 부분에 관해 풀어놓아 작은 도움이나마 되기 위해 시작해 보겠습니다.

 

2. 준비

Frida, Frida-server, 약간의 java혹은 C언어 다루는 능력? 다른 언어라도 쓸 수 있다면 형태를 맞추어 사용하셔도 무방합니다. Pyrhon 2.7 버전과 ADB툴도 필요합니다.

 

3. 방법

우선 FridaFrida-server를 다운로드하여주셔야 합니다.

여기에서 주의할 점은 Frida버전과 Frida-server버전 그리고 32bit 혹은 64bit를 맞추어 다운로드해야 합니다.

 

후선 FridaCMD창에서 pip install frida 명령으로 최신 버전을 다운로드할 수 있습니다.

 

 

저는 먼저 다운로드하여 놓았기 때문에 저렇게 뜨지만 처음 받는 화면은 조금 다를 겁니다.

여기에서 주의해야 할 부분은 아래 부분의 버전입니다. 보시는 바와 같이 버전은 12.7.16입니다. 이를 생각하고 이제 frida-server를 받아야 합니다..

 

https://github.com/frida/frida/releases

위의 링크로 들어가면 fridafrida에 관련된 여러 툴을 보실 수 있습니다. 여기에서 주의해야 할 부분은 본인이 사용하고 있는 디바이스가 32bit 혹은 64bit인지와 설치할 운영체제가 어떤 것 인지입니다. 또한 arm을 사용하는지 여부를 통해 본인의 OS에 깔린 Frida와 버전을 맞추어 깔아 주시면 됩니다.

 

정리 : frida 버전, OS 종류, 단말기 비트, arm 여부

 

 

Ctrl+F를 누르고 frida-server를 찾아주시면 목록으로 쉽게 오실 수 있습니다. 위의 frida버전과 사용하는 단말기인 NOX와 대조하여 저에게 필요한 것은 frida-server-12.7.16-android-arm.xz로 확인하였습니다.

 

이제 파일을 다운로드하여 주시고 압축을 풀어 줍니다.

 

 

위와 같이 다운로드하여 압축을 풀었지만 사용하세 편하도록 frida-server만 남기고 이름을 변경해 주었습니다.

 

Android는 리눅스 환경이고 이를 실행시켜주기 위해 frida의 확장자가 없어도 상관이 없으므로 이름을 변경하여 사용하게 편하게 만들어 주었습니다.

 

이제 ADB를 통해 /data/local/tmp로 옮겨 주어야 합니다.

 

(ADB 연결 방법은 일전에 알려주었으니 생략하도록 하겠습니다.)

 

새로운 CMD를 열고 frida-server의 위치로 가서 ADB를 통해 넣어주시거나 아니면 frida-server가 위치한 폴더에서 (shift + 우클릭)을 하면 목록에 powershell창 열기 혹은 명령어 창 열기가 생기는데 이것을 눌러 바로 CMD혹은 powershell을 열 수도 있습니다.

 

adb push <frida-server의 위치+/frida-server> /data/local/tmp

(: adb push C:\frida-server /data/local/tmp)

 

위의 명령어로 frida-server를 단말기 내부로 옮겨줍니다. (NOXADB가 붙지 않는다면 개발자 모드를 열고 USB 디버깅을 허가하여 주시면 됩니다. 또한 기존 실제 단말기가 위와 같이 했는데도 안 된다 하면 핸드폰 연결 종류를 충전이 아닌 사진 전송이나 파일 전송으로 바꾸어 주면 연결이 가능합니다.)

 

 

frida-server를 옮긴 폴더로 가서 chmod로 권한을 변경하여주고 ./frida-server &으로 frida-server를 실행해줍니다.

이제 frida를 사용할 준비가 끝났습니다.

 

frida가 잘 붙었는지와 frida-server가 정상적으로 작동하는지 확인하는 방법은 OS에서 frida-ps -U로 현재 단말기에서 구동 중인 process를 확인해보면 확인 가능합니다.

 

 

위와 같이 process가 확인이 된다면 frida를 사용할 준비가 된 것입니다.

 

frida의 활용은 앞으로 글을 통해 알려드리도록 하겠습니다.

 

 

+ Recent posts