일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드 구성요소
- DVM
- CrossSiteRequestForgery
- Frida
- OSI 7Layer
- 웹쉘
- 네트워크모델
- .class
- .dex
- CSRF
- 안드로이드 구조
- 네트워크
- 불충분한인증
- OWASP TOP 10
- apk
- ServerSideRequestForgery
- TCP/IP 4Layer
- SSRF
- IPv6전환
- 네트워크기초
- 불충분한인가
- 취약점
- 프리다
- 4대 구성요소
- 프로세스검증누락
- 안드로이드란
- IP클래스
- .apk
- CrossSiteScripting
- TCP/IP 4계층
- Today
- Total
secure_world
Frida / 사용 방법 본문
1. Frida란?
2. Frida 주요 기능
2. Frida 사용 방법
※ 개인적인 공부를 위해 작성하였습니다. 이 글을 참고하여 허가되지 않은 곳에 사용하지 마시고 법 적인 문제가 생길 시 책임지지 않습니다.
※ 잘못된 정보가 있을 경우에는 댓글 혹은 방명록을 통해서 알려주시면 바로 수정하도록 하겠습니다!
1. Frida란?
- Frida는 Ole가 개발한 동적 바이너리 인스트루먼테이션 프레임 워크
- 스크립트와 함께 사용하며, 실행 중인 프로그램의 동작을 모니터링, 수정, 기록 할 수 있도록 만든 프로그램을 말함
- 어플리케이션에 Hook(=연결), 메모리와 기능에 대해 연결하고 있는 동안 임의로 자바 스크립트를 삽입하여 소스코드를 변조 및 원하는 함수를 실행
- 대표적으로는 모바일 어플리케이션을 사용하는 안드로이드와 iOS 운영체제 환경에서 분석 도구로 사용되나 확장성이 좋기 때문에 윈도우와 같은 타 운영체제에서도 사용이 가능함
2. Frida의 주요 기능
- 특정 함수에 연결하여 반환 값을 변경할 수 있음
- 실행 중인 어플리케이션에 디버깅 수행 및 내부 함수를 변조할 수 있음
- 객체 내 인스턴스 검색이 가능하고, 인스턴스를 사용할 수 있음
- 트래픽을 스니핑할 수 있고 이를 통해 암호 해독이 가능함
- 루팅 및 탈옥되지 않은 단말기에서도 사용이 가능함
3. Frida 사용 방법
3.1. Hooking
후킹(영어: hooking)은 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. <출처 : 위키백과>
- Frida를 사용하기 위해서는 Hooking에 대해 알고 있어야 이해하는데 좋음
- Hooking은 소프트웨어 등 프로그램에서 발생하는 함수를 호출하거나 이벤트를 바꾸는 등의 행위를 할 수 있는 기술을 말함
- Hook은 간섭된 함수 호출, 이벤트, 메세지 등을 처리하는 코드를 말함
- Hook은 갈고리라는 영어 뜻이 있는데, 이를 생각해봤을 때 원하는 특정 함수를 지정하여 갈고리처럼 낚아채 조작한다는 의미를 사용하는 것 같음 (-> 개인적인 의견입니다)
- Hooking은 응용 프로그램이 실행되기 전에도 사용할 수 있으며, 주로 Frida를 이용하여 사용할 수 있음
3.2. Frida 사용 방법
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을 하고 어플리케이션 실행이 가능