tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
React Native 애플리케이션 분석
애플리케이션이 React Native 프레임워크로 구축되었는지 확인하려면 다음 단계를 따르세요:
-
APK 파일의 이름을 zip 확장자로 변경하고
cp com.example.apk example-apk.zip
및unzip -qq example-apk.zip -d ReactNative
명령을 사용하여 새 폴더에 추출합니다. -
새로 생성된 ReactNative 폴더로 이동하여 assets 폴더를 찾습니다. 이 폴더 안에는 React JavaScript가 축소된 형식으로 포함된
index.android.bundle
파일이 있어야 합니다. -
find . -print | grep -i ".bundle$"
명령을 사용하여 JavaScript 파일을 검색합니다.
Javascript 코드
index.android.bundle
의 내용을 확인할 때 애플리케이션의 JavaScript 코드(축소된 경우에도)를 찾으면 민감한 정보와 취약점을 찾기 위해 분석할 수 있습니다.
번들은 실제로 애플리케이션의 모든 JS 코드를 포함하고 있으므로 다양한 파일로 나눌 수 있습니다 (역공학을 더 쉽게 만들 수 있습니다) react-native-decompiler 도구를 사용하여.
Webpack
JavaScript 코드를 더 분석하려면 파일을 https://spaceraccoon.github.io/webpack-exploder/에 업로드하거나 다음 단계를 따르세요:
- 동일한 디렉토리에
index.html
이라는 이름의 파일을 생성하고 다음 코드를 입력합니다:
<script src="./index.android.bundle"></script>
-
index.html
파일을 Google Chrome에서 엽니다. -
OS X의 경우 Command+Option+J 또는 Windows의 경우 Control+Shift+J를 눌러 개발자 도구를 엽니다.
-
개발자 도구에서 "Sources"를 클릭합니다. 폴더와 파일로 나뉘어진 JavaScript 파일이 보일 것입니다. 이는 주요 번들을 구성합니다.
index.android.bundle.map
이라는 파일을 찾으면, 비축소 형식으로 소스 코드를 분석할 수 있습니다. 맵 파일은 소스 매핑을 포함하고 있어, 축소된 식별자를 매핑할 수 있게 해줍니다.
민감한 자격 증명 및 엔드포인트를 검색하려면 다음 단계를 따르세요:
-
JavaScript 코드를 분석하기 위해 민감한 키워드를 식별합니다. React Native 애플리케이션은 종종 Firebase, AWS S3 서비스 엔드포인트, 개인 키 등과 같은 서드파티 서비스를 사용합니다.
-
이 특정 경우에 애플리케이션이 Dialogflow 서비스를 사용하고 있는 것으로 관찰되었습니다. 그 구성과 관련된 패턴을 검색합니다.
-
재조사 과정에서 JavaScript 코드에서 민감한 하드코딩된 자격 증명이 발견된 것은 다행이었습니다.
JS 코드 변경 및 재빌드
이 경우 코드를 변경하는 것은 쉽습니다. 앱의 이름을 .zip
확장자로 변경하고 압축을 풀기만 하면 됩니다. 그런 다음 이 번들 안의 JS 코드를 수정하고 앱을 재빌드할 수 있습니다. 이는 테스트 목적으로 앱에 코드를 주입할 수 있게 해줄 것입니다.
Hermes 바이트코드
번들에 Hermes 바이트코드가 포함되어 있다면, 앱의 JavaScript 코드에 접근할 수 없습니다 (축소된 버전조차도).
번들에 Hermes 바이트코드가 포함되어 있는지 확인하려면 다음 명령을 실행하세요:
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96
그러나 hbctool, hermes-dec 또는 hermes_rs 도구를 사용하여 바이트코드를 분해하고 일부 의사 JS 코드로 디컴파일할 수 있습니다. 이를 위해 예를 들어 다음 명령어를 사용합니다:
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
코드 변경 및 재빌드
이상적으로는 디스어셈블된 코드를 수정할 수 있어야 합니다(비교를 변경하거나 값 또는 수정해야 할 기타 사항). 그런 다음 바이트코드를 재빌드하고 앱을 재빌드해야 합니다.
도구 **hbctool**은 번들을 디스어셈블하고 변경 후 다시 빌드하는 것을 지원하지만, 구버전의 Hermes 바이트코드만 지원합니다.
도구 **hermes-dec**는 바이트코드를 재빌드하는 것을 지원하지 않습니다.
도구 **hermes_rs**는 바이트코드를 재빌드하는 것을 지원하지만, 실제로는 라이브러리이며 CLI 도구가 아닙니다.
동적 분석
앱을 동적으로 분석하려면 Frida를 사용하여 React 앱의 개발자 모드를 활성화하고 **react-native-debugger
**를 사용하여 연결할 수 있습니다. 그러나 이를 위해서는 앱의 소스 코드가 필요합니다. 이에 대한 자세한 정보는 https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/에서 확인할 수 있습니다.
참고 문헌
- https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7
- https://www.assetnote.io/resources/research/expanding-the-attack-surface-react-native-android-applications
- https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.