Objection Tutorial

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅이 될 때까지 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법:

버그 바운티 팁: 해커들에 의해 만들어진 프리미엄 버그 바운티 플랫폼Intigriti가입하세요! 오늘 https://go.intigriti.com/hacktricks에서 $100,000까지의 바운티를 받으세요!

소개

objection - 런타임 모바일 탐색

Frida로 구동되는 objection은 루트된 또는 탈옥된 모바일 장치가 필요하지 않고 모바일 애플리케이션 및 그들의 보안 포지션을 평가하는 데 도움을 주기 위해 만들어진 런타임 모바일 탐색 툴킷입니다.

참고: 이것은 일종의 탈옥 / 루트 우회가 아닙니다. objection을 사용하면 여전히 해당하는 샌드박스에 의해 부과된 모든 제한을 받게 됩니다.

이력

objection목표는 사용자가 Frida가 제공하는 주요 작업을 호출할 수 있도록 하는 것입니다. 그렇지 않으면, 사용자는 테스트하려는 각 애플리케이션에 대해 단일 스크립트를 작성해야 합니다.

튜토리얼

이 튜토리얼에서는 여기에서 다운로드할 수 있는 APK를 사용할 것입니다:

또는 원본 저장소에서 다운로드하세요 (app-release.apk)

설치

pip3 install objection

연결

일반 ADB 연결을 만들고 장치에서 frida 서버를 시작하십시오 (그리고 클라이언트와 서버 모두에서 frida가 작동하는지 확인하십시오).

루팅된 장치를 사용하는 경우 테스트하려는 애플리케이션을 --gadget 옵션 내에서 선택해야 합니다. 이 경우:

frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore

기본 작업

이 튜토리얼에는 모든 objection 명령이 나열되지는 않습니다. 더 유용하다고 생각되는 몇 가지만 나열됩니다.

환경

환경 내부에는 비밀번호나 경로와 같은 흥미로운 정보가 포함될 수 있습니다.

env

Frida 정보

frida

업로드/다운로드

file download <remote path> [<local path>]
file upload <local path> [<remote path>]

frida 스크립트 가져오기

import <local path frida-script>

SSL 핀닝

android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

루트 탐지

android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

명령 실행

android shell_exec whoami

스크린샷

android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

정적 분석을 동적으로 만들기

실제 애플리케이션에서는 objection을 사용하기 전에 이 부분에서 발견된 모든 정보를 알아야 합니다. 정적 분석 덕분에. 그래도 이 방법을 통해 여기에서는 클래스, 메소드 및 내보낸 객체의 완전한 목록만 얻을 수 있기 때문에 새로운 것을 볼 수도 있습니다.

이것은 또한 앱의 일부 가독성 있는 소스 코드를 얻을 수 없는 경우 유용합니다.

활동, 수신기 및 서비스 목록

android hooking list activities
android hooking list services
android hooking list receivers

Frida는 아무 것도 찾지 못했을 때 오류를 발생시킵니다

현재 활동 가져오기

android hooking get current_activity

클래스 검색

우리 애플리케이션 내부의 클래스를 찾아봅시다.

android hooking search classes asvid.github.io.fridaapp

클래스의 검색 방법

이제 MainActivity 클래스 내부의 메소드를 추출해 봅시다:

android hooking search methods asvid.github.io.fridaapp MainActivity

클래스의 선언된 메소드와 그 파라미터 목록

클래스의 메소드가 어떤 파라미터가 필요한지 알아봅시다:

android hooking list class_methods asvid.github.io.fridaapp.MainActivity

클래스 목록

현재 애플리케이션에 로드된 모든 클래스를 나열할 수도 있습니다:

android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

이 기능은 클래스의 메소드를 후킹하고 클래스의 이름만 알고 있는 경우에 매우 유용합니다. 이 함수를 사용하여 클래스를 소유한 모듈을 검색한 다음 해당 메소드를 후킹할 수 있습니다.

후킹이 쉬운 이유

메소드 후킹 (감시)

애플리케이션의 소스 코드에서 우리는 MainActivitysum() 함수매 초 실행되고 있음을 알 수 있습니다. 함수가 호출될 때마다 가능한 모든 정보(인수, 반환 값 및 백트레이스)를 덤프해 보겠습니다:

android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return

클래스 전체 후킹 (감시)

실제로 MainActivity 클래스의 모든 메소드를 매우 흥미롭게 생각하고, 모두 후킹하겠습니다. 주의하세요, 이는 애플리케이션을 크래시할 수 있습니다.

android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return

만약 클래스가 후킹된 상태에서 애플리케이션을 실행하면 각 함수가 호출될 때, 그 인수반환 값이 표시됩니다.

함수의 부울 반환 값 변경

소스 코드에서 함수 _checkPin_이 _String_을 인수로 받고 _boolean_을 반환하는 것을 볼 수 있습니다. 함수를 항상 true를 반환하도록 만들어 봅시다:

이제 PIN 코드를 위한 텍스트 상자에 아무 것이나 입력하면 아무 값이 유효하다는 것을 볼 수 있습니다:

클래스 인스턴스

특정 Java 클래스의 실시간 인스턴스를 검색하고 출력합니다. 완전히 정규화된 클래스 이름으로 지정됩니다. 발견된 이의 문자열 값 가져오기를 시도한 결과인 Out은 일반적으로 객체의 속성 값이 포함됩니다.

android heap print_instances <class>

키스토어/인텐트

다음을 사용하여 키스토어와 인텐트를 조작할 수 있습니다:

android keystore list
android intents launch_activity
android intent launch_service

메모리

덤프

memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

목록

memory list modules

리스트의 맨 아래에 frida가 표시됩니다:

frida가 무엇을 내보내는지 확인해 봅시다:

검색/쓰기

objection을 사용하여 메모리 내에서도 검색하고 쓸 수 있습니다:

memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)

SQLite

sqlite 명령을 사용하여 sqlite 데이터베이스와 상호 작용할 수 있습니다.

Exit

exit

Objection에서 느끼는 부족함

  • 후킹 방법은 때때로 응용 프로그램을 충돌시킵니다 (이는 Frida 때문일 수도 있음).

  • 클래스의 인스턴스를 사용하여 인스턴스의 함수를 호출할 수 없습니다. 또한 새로운 클래스 인스턴스를 만들어 사용하여 함수를 호출할 수 없습니다.

  • 응용 프로그램에서 사용되는 모든 일반 암호화 방법을 후킹하여 암호화된 텍스트, 일반 텍스트, 키, IV 및 사용된 알고리즘을 확인할 수 있는 단축키 (sslpinnin과 유사한)가 없습니다.

버그 바운티 팁: Intigriti에 가입하여 해커들이 만든 프리미엄 버그 바운티 플랫폼에 참여하세요! https://go.intigriti.com/hacktricks에서 오늘부터 최대 $100,000의 바운티를 받아보세요!

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 AWS 해킹을 전문가로 학습하세요**!

HackTricks를 지원하는 다른 방법:

Last updated