Objection Tutorial
버그 바운티 팁: 해커들에 의해 만들어진 프리미엄 버그 바운티 플랫폼인 Intigriti에 가입하세요! 오늘 https://go.intigriti.com/hacktricks에서 $100,000까지의 바운티를 받으세요!
소개
objection - 런타임 모바일 탐색
Frida로 구동되는 objection은 루트된 또는 탈옥된 모바일 장치가 필요하지 않고 모바일 애플리케이션 및 그들의 보안 포지션을 평가하는 데 도움을 주기 위해 만들어진 런타임 모바일 탐색 툴킷입니다.
참고: 이것은 일종의 탈옥 / 루트 우회가 아닙니다. objection
을 사용하면 여전히 해당하는 샌드박스에 의해 부과된 모든 제한을 받게 됩니다.
이력
objection의 목표는 사용자가 Frida가 제공하는 주요 작업을 호출할 수 있도록 하는 것입니다. 그렇지 않으면, 사용자는 테스트하려는 각 애플리케이션에 대해 단일 스크립트를 작성해야 합니다.
튜토리얼
이 튜토리얼에서는 여기에서 다운로드할 수 있는 APK를 사용할 것입니다:
또는 원본 저장소에서 다운로드하세요 (app-release.apk)
설치
연결
일반 ADB 연결을 만들고 장치에서 frida 서버를 시작하십시오 (그리고 클라이언트와 서버 모두에서 frida가 작동하는지 확인하십시오).
루팅된 장치를 사용하는 경우 테스트하려는 애플리케이션을 --gadget 옵션 내에서 선택해야 합니다. 이 경우:
기본 작업
이 튜토리얼에는 모든 objection 명령이 나열되지는 않습니다. 더 유용하다고 생각되는 몇 가지만 나열됩니다.
환경
환경 내부에는 비밀번호나 경로와 같은 흥미로운 정보가 포함될 수 있습니다.
Frida 정보
업로드/다운로드
frida 스크립트 가져오기
SSL 핀닝
루트 탐지
명령 실행
스크린샷
정적 분석을 동적으로 만들기
실제 애플리케이션에서는 objection을 사용하기 전에 이 부분에서 발견된 모든 정보를 알아야 합니다. 정적 분석 덕분에. 그래도 이 방법을 통해 여기에서는 클래스, 메소드 및 내보낸 객체의 완전한 목록만 얻을 수 있기 때문에 새로운 것을 볼 수도 있습니다.
이것은 또한 앱의 일부 가독성 있는 소스 코드를 얻을 수 없는 경우 유용합니다.
활동, 수신기 및 서비스 목록
Frida는 아무 것도 찾지 못했을 때 오류를 발생시킵니다
현재 활동 가져오기
클래스 검색
우리 애플리케이션 내부의 클래스를 찾아봅시다.
클래스의 검색 방법
이제 MainActivity 클래스 내부의 메소드를 추출해 봅시다:
클래스의 선언된 메소드와 그 파라미터 목록
클래스의 메소드가 어떤 파라미터가 필요한지 알아봅시다:
클래스 목록
현재 애플리케이션에 로드된 모든 클래스를 나열할 수도 있습니다:
이 기능은 클래스의 메소드를 후킹하고 클래스의 이름만 알고 있는 경우에 매우 유용합니다. 이 함수를 사용하여 클래스를 소유한 모듈을 검색한 다음 해당 메소드를 후킹할 수 있습니다.
후킹이 쉬운 이유
메소드 후킹 (감시)
애플리케이션의 소스 코드에서 우리는 MainActivity의 sum() 함수가 매 초 실행되고 있음을 알 수 있습니다. 함수가 호출될 때마다 가능한 모든 정보(인수, 반환 값 및 백트레이스)를 덤프해 보겠습니다:
클래스 전체 후킹 (감시)
실제로 MainActivity 클래스의 모든 메소드를 매우 흥미롭게 생각하고, 모두 후킹하겠습니다. 주의하세요, 이는 애플리케이션을 크래시할 수 있습니다.
만약 클래스가 후킹된 상태에서 애플리케이션을 실행하면 각 함수가 호출될 때, 그 인수와 반환 값이 표시됩니다.
함수의 부울 반환 값 변경
소스 코드에서 함수 _checkPin_이 _String_을 인수로 받고 _boolean_을 반환하는 것을 볼 수 있습니다. 함수를 항상 true를 반환하도록 만들어 봅시다:
이제 PIN 코드를 위한 텍스트 상자에 아무 것이나 입력하면 아무 값이 유효하다는 것을 볼 수 있습니다:
클래스 인스턴스
특정 Java 클래스의 실시간 인스턴스를 검색하고 출력합니다. 완전히 정규화된 클래스 이름으로 지정됩니다. 발견된 이의 문자열 값 가져오기를 시도한 결과인 Out은 일반적으로 객체의 속성 값이 포함됩니다.
키스토어/인텐트
다음을 사용하여 키스토어와 인텐트를 조작할 수 있습니다:
메모리
덤프
목록
리스트의 맨 아래에 frida가 표시됩니다:
frida가 무엇을 내보내는지 확인해 봅시다:
검색/쓰기
objection을 사용하여 메모리 내에서도 검색하고 쓸 수 있습니다:
SQLite
sqlite
명령을 사용하여 sqlite 데이터베이스와 상호 작용할 수 있습니다.
Exit
Objection에서 느끼는 부족함
후킹 방법은 때때로 응용 프로그램을 충돌시킵니다 (이는 Frida 때문일 수도 있음).
클래스의 인스턴스를 사용하여 인스턴스의 함수를 호출할 수 없습니다. 또한 새로운 클래스 인스턴스를 만들어 사용하여 함수를 호출할 수 없습니다.
응용 프로그램에서 사용되는 모든 일반 암호화 방법을 후킹하여 암호화된 텍스트, 일반 텍스트, 키, IV 및 사용된 알고리즘을 확인할 수 있는 단축키 (sslpinnin과 유사한)가 없습니다.
버그 바운티 팁: Intigriti에 가입하여 해커들이 만든 프리미엄 버그 바운티 플랫폼에 참여하세요! https://go.intigriti.com/hacktricks에서 오늘부터 최대 $100,000의 바운티를 받아보세요!
Last updated