secure_world

Frida / 사용 방법 본문

모바일/Frida

Frida / 사용 방법

시월드 2022. 1. 5. 14:53

1. Frida란?

2. Frida 주요 기능

2. Frida 사용 방법


※ 개인적인 공부를 위해 작성하였습니다. 이 글을 참고하여 허가되지 않은 곳에 사용하지 마시고 법 적인 문제가 생길 시 책임지지 않습니다.

※ 잘못된 정보가 있을 경우에는 댓글 혹은 방명록을 통해서 알려주시면 바로 수정하도록 하겠습니다!

 

1. Frida란?

[그림] Frida로고 (출처 : frida.re)

 - Frida는 Ole가 개발한 동적 바이너리 인스트루먼테이션 프레임 워크

 - 스크립트와 함께 사용하며, 실행 중인 프로그램의 동작을 모니터링, 수정, 기록 할 수 있도록 만든 프로그램을 말함

 - 어플리케이션에 Hook(=연결), 메모리와 기능에 대해 연결하고 있는 동안 임의로 자바 스크립트를 삽입하여 소스코드를 변조 및 원하는 함수를 실행

 - 대표적으로는 모바일 어플리케이션을 사용하는 안드로이드와 iOS 운영체제 환경에서 분석 도구로 사용되나 확장성이 좋기 때문에 윈도우와 같은 타 운영체제에서도 사용이 가능함

 


 

2. Frida의 주요 기능

  1. 특정 함수에 연결하여 반환 값을 변경할 수 있음
  2. 실행 중인 어플리케이션에 디버깅 수행 및 내부 함수를 변조할 수 있음
  3. 객체 내 인스턴스 검색이 가능하고, 인스턴스를 사용할 수 있음
  4. 트래픽을 스니핑할 수 있고 이를 통해 암호 해독이 가능함
  5. 루팅 및 탈옥되지 않은 단말기에서도 사용이 가능함

 


 

3. Frida 사용 방법

3.1. Hooking

후킹(영어: hooking)은 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. <출처 : 위키백과>

 - Frida를 사용하기 위해서는 Hooking에 대해 알고 있어야 이해하는데 좋음

 - Hooking은 소프트웨어 등 프로그램에서 발생하는 함수를 호출하거나 이벤트를 바꾸는 등의 행위를 할 수 있는 기술을 말함

 - Hook은 간섭된 함수 호출, 이벤트, 메세지 등을 처리하는 코드를 말함

 - Hook은 갈고리라는 영어 뜻이 있는데, 이를 생각해봤을 때 원하는 특정 함수를 지정하여 갈고리처럼 낚아채 조작한다는 의미를 사용하는 것 같음 (-> 개인적인 의견입니다)

 - Hooking은 응용 프로그램이 실행되기 전에도 사용할 수 있으며, 주로 Frida를 이용하여 사용할 수 있음

 


 

3.2. Frida 사용 방법

[그림] Frida공식 홈페이지의 Android Hooking예제(출처 : frida.re)

1. Python코드를 작성하여 Frida를 호출하는 방법

 - Application 실행 후, 파이썬 코드에 jscode와 attach할 디바이스를 작성하여 실행

 - 원하는 디바이스에 attach후, jscode에 적힌 자바 스크립트를 삽입하게 되어 Hooking 진행

 

2. Java Script를 작성하여 CLI를 통해 Hooking하는 방법

frida -U -l example.js -f Android패키지명

 - Java Script를 작성하여 저장한 후, CLI를 통해 위와 같은 명령어 등을 작성하여 실행

 - jscode를 지정하여 실행하면 어플리케이션을 실행하기 전에도 Hooking을 하고 어플리케이션 실행이 가능

Comments