diff --git a/mobile-pentesting/android-app-pentesting/README.md b/mobile-pentesting/android-app-pentesting/README.md index 47b190133..5d8833f0b 100644 --- a/mobile-pentesting/android-app-pentesting/README.md +++ b/mobile-pentesting/android-app-pentesting/README.md @@ -6,10 +6,10 @@ HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **Discordグループ**に参加する💬 [**Discord group**](https://discord.gg/hRep4RUj7f)または[**telegram group**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする。 +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **Discordグループ**に参加する💬 [**Discord group**](https://discord.gg/hRep4RUj7f)または[**telegram group**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** - **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 @@ -27,11 +27,11 @@ HackTricksをサポートする他の方法: **最新の発表**\ 最新のバグバウンティの開始や重要なプラットフォームの更新について知る -**[Discord](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力しましょう!** +[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力しましょう! ## Androidアプリケーションの基礎 -Androidセキュリティに関連する**最も重要な部分**やAndroidアプリケーションの中で**最も危険なコンポーネント**について知るために、このページを読むことを強くお勧めします: +Androidセキュリティに関連する**最も重要な部分やAndroidアプリケーションの中で最も危険なコンポーネントについて知る**には、このページを読むことを強くお勧めします: {% content-ref url="android-applications-basics.md" %} [android-applications-basics.md](android-applications-basics.md) @@ -40,14 +40,14 @@ Androidセキュリティに関連する**最も重要な部分**やAndroidア ## ADB(Android Debug Bridge) これはAndroidデバイス(エミュレートされたものまたは物理的なもの)に接続するために必要な主要ツールです。\ -これにより、コンピューターからデバイスを**USB**または**ネットワーク**経由で制御し、ファイルを**コピー**したり、アプリを**インストール**およびアンインストールしたり、**シェル**コマンドを実行したり、**バックアップ**を取ったり、**ログ**を読んだりすることができます。 +**ADB**は、コンピューターからデバイスを**USB**または**ネットワーク**経由で制御できます。このユーティリティは、ファイルの**コピー**、アプリの**インストール**と**アンインストール**、シェルコマンドの**実行**、データの**バックアップ**、ログの**読み取り**などを可能にします。 ADBの使用方法を学ぶために、次の[**ADBコマンド**](adb-commands.md)のリストを参照してください。 ## Smali -時には、**アプリケーションコードを変更**して**隠された情報**にアクセスすることが興味深いことがあります(おそらくよく難読化されたパスワードやフラグ)。その後、APKを逆コンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。\ -[**このチュートリアル**では、APKを逆コンパイルし、Smaliコードを変更してAPKを再コンパイルする方法](smali-changes.md)を学ぶことができます。これは、**動的解析中にいくつかのテストの代替手段として非常に役立つ**かもしれません。そのため、**常にこの可能性を念頭に置いておいてください**。 +時には、**アプリケーションコードを変更**して**隠された情報**にアクセスすることが興味深いことがあります(おそらくよく隠されたパスワードやフラグ)。その後、APKを逆コンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。\ +[**このチュートリアル**では、APKを逆コンパイルし、Smaliコードを変更してAPKを再コンパイルする方法](smali-changes.md)を学ぶことができます。これは、**ダイナミック解析中にいくつかのテストの代替手段として非常に役立つ**かもしれません。そのため、**常にこの可能性を念頭に置いておいてください**。 ## その他の興味深いトリック @@ -66,45 +66,43 @@ adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk ## 静的解析 まず、APKを解析するためには、デコンパイラを使用してJavaコードを確認する必要があります。\ -[**こちらを読んで、利用可能な異なるデコンパイラに関する情報を見つけてください**](apk-decompilers.md)。 +[異なる利用可能なデコンパイラに関する情報はこちらを参照してください。](apk-decompilers.md) ### 興味深い情報を探す -APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キー、**暗号化**、**Bluetooth UUID**、**トークン**など、興味深い情報を検索できます。コード実行の**バックドア**や認証バックドア(アプリにハードコードされた管理者資格情報)なども探してください。 +APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キー、**暗号化**、**Bluetooth UUID**、**トークン**などの興味深い情報を検索できます。コード実行の**バックドア**や認証バックドア(アプリにハードコードされた管理者資格情報)なども探してください。 **Firebase** -**Firebase URL**に特に注意し、それが適切に構成されているかどうかを確認してください。[こちらでFirebaseについての詳細情報とその悪用方法を確認してください。](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +**Firebase URL**に特に注意し、構成が適切かどうかを確認してください。[Firebaseについての詳細情報とその悪用方法についてはこちらを参照してください。](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### アプリケーションの基本的な理解 - Manifest.xml、strings.xml -[**こちらで**](apk-decompilers.md)言及されているデコンパイラのいずれかを使用すると、_Manifest.xml_を読むことができます。また、**apk**ファイルの拡張子を**.zip**に変更して**解凍**することもできます。\ -**マニフェスト**を読むと、次の**脆弱性**を見つけることができます: +アプリケーションの _Manifest.xml_ と _strings.xml_ ファイルを調査することで、潜在的なセキュリティ脆弱性が明らかになる可能性があります。これらのファイルは、デコンパイラを使用するか、APKファイルの拡張子を.zipに変更して解凍することでアクセスできます。 -* まず、アプリケーションが**デバッグ可能かどうか**を確認してください。本番用のAPKはデバッグ可能ではないはずです(そうでないと他の人が接続できます)。マニフェストで`debuggable="true"`属性を探してアプリケーションがデバッグ可能かどうかを確認できます。例:` formation-software.co.uk ` -* **公開されたアクティビティ**: マニフェスト内の公開されたアクティビティを確認してください。これは危険な場合があります。動的解析では、[この動作を悪用する方法](./#exploiting-exported-activities-authorisation-bypass)について説明します。 -* **コンテンツプロバイダ**: 公開されたプロバイダが公開されている場合、興味深い情報にアクセス/変更できる可能性があります。動的解析では、[それらを悪用する方法](./#exploiting-content-providers-accessing-and-manipulating-sensitive-information)を学びます。 -* 属性`android:name="android.support.FILE_PROVIDER_PATHS"`内の**FileProviders**構成を確認してください。[こちらでFileProvidersについて詳しく学んでください](./#fileprovider)。 -* **公開されたサービス**: サービスが内部で何を行っているかに応じて、脆弱性が悪用される可能性があります。動的解析では、[それらを悪用する方法](./#exploiting-services)を学びます。 -* **ブロードキャストレシーバ**: [それらを悪用する方法](./#exploiting-broadcast-receivers)を学ぶことができます。 -* **URLスキーム**: スキーマを管理するアクティビティのコードを読み、ユーザーの入力を処理する際の脆弱性を探してください。[URLスキームについての詳細情報はこちら](./#url-schemes)。 -* **minSdkVersion**、**targetSDKVersion**、**maxSdkVersion**: アプリが実行されるAndroidのバージョンを示します。セキュリティの観点から、古いバージョンをサポートすることは既知の脆弱なAndroidバージョンが実行される可能性があるため重要です。 +**Manifest.xml** から特定される**脆弱性**には次のものがあります: -**resources.arsc/strings.xml**を読むと、いくつかの**興味深い情報**を見つけることができます: +* **デバッグ可能なアプリケーション**: _Manifest.xml_ ファイルでデバッグ可能に設定されたアプリケーション(`debuggable="true"`)は、悪用につながる接続を許可するため、リスクをもたらします。デバッグ可能なアプリケーションの検出と悪用方法についての詳細は、デバイス上でデバッグ可能なアプリケーションを見つけて悪用するチュートリアルを参照してください。 + +* **バックアップ設定**:機密情報を扱うアプリケーションでは、`android:allowBackup="false"`属性を明示的に設定して、USBデバッグが有効になっている場合にadbを介した未承認のデータバックアップを防止する必要があります。 + +* **ネットワークセキュリティ**:_res/xml/_ でのカスタムネットワークセキュリティ構成(`android:networkSecurityConfig="@xml/network_security_config"`)は、証明書ピンやHTTPトラフィック設定などのセキュリティ詳細を指定できます。特定のドメインのHTTPトラフィックを許可する例があります。 + +* **エクスポートされたアクティビティとサービス**:マニフェストでエクスポートされたアクティビティとサービスを特定すると、誤用される可能性のあるコンポーネントが明らかになります。動的テスト中のさらなる分析により、これらのコンポーネントをどのように悪用するかが明らかになります。 + +* **コンテンツプロバイダとFileProviders**:公開されたコンテンツプロバイダは、データへの未承認のアクセスや変更を許可する可能性があります。FileProvidersの構成も検討されるべきです。 + +* **ブロードキャストレシーバとURLスキーム**:これらのコンポーネントは悪用される可能性があり、URLスキームの管理方法に特に注意する必要があります。 + +* **SDKバージョン**:`minSdkVersion`、`targetSDKVersion`、`maxSdkVersion`属性は、サポートされているAndroidバージョンを示し、セキュリティ上の理由から古い脆弱なAndroidバージョンをサポートしないことの重要性を強調します。 + +**strings.xml** ファイルからは、APIキー、カスタムスキーマ、その他の開発者ノートなどの機密情報が見つかる場合があり、これらのリソースを注意深く確認する必要があります。 -* APIキー -* カスタムスキーマ -* 開発者がこのファイルに保存するその他の興味深い情報 ### タップジャッキング -**タップジャッキング**は、**悪意のあるアプリケーション**が**被害者アプリケーションの上に配置**され、被害者アプリケーションを視覚的に遮蔽します。被害者アプリケーションが見えなくなると、ユーザーインターフェースが設計され、ユーザーがそれとやり取りするように誘導されるようになっていますが、実際にはその操作を被害者アプリケーションに渡しています。\ -実際には、ユーザーが自分が実際に被害者アプリケーションでアクションを実行していることを知らないようにしています。 +**タップジャッキング**は、**悪意のあるアプリケーション**が**被害者アプリケーションの上に配置**され、被害者アプリケーションを視覚的に隠すと、ユーザーが実際には被害者アプリケーションでアクションを実行していると思わせるように設計されたユーザーインターフェースでユーザーをだまし取る攻撃です。\ +実際には、ユーザーが自分が実際には被害者アプリでアクションを実行していることを知らないようにしています。 詳細は以下で確認できます: @@ -114,7 +112,7 @@ APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キ ### タスクハイジャッキング -**`launchMode`**が**`singleTask`**に設定され、**`taskAffinity`**が定義されていない**アクティビティ**は、タスクハイジャッキングの脆弱性があります。これは、**アプリケーション**がインストールされ、実際のアプリケーションよりも先に起動された場合、実際のアプリケーションのタスクを**ハイジャック**できることを意味します(つまり、ユーザーは**実際のアプリケーションを使用していると思い込んで悪意のあるアプリケーションとやり取りしている**と思うことになります)。 +`launchMode`が**`singleTask`に設定され、`taskAffinity`が定義されていない** **アクティビティ**は、タスクハイジャッキングの脆弱性があります。つまり、インストールされた**アプリケーション**が実際のアプリケーションよりも先に起動された場合、実際のアプリケーションのタスクを**ハイジャック**できます(ユーザーは実際のアプリケーションを使用していると思い込んで**悪意のあるアプリケーション**とやり取りしてしまいます)。 詳細は以下で確認できます: @@ -122,52 +120,50 @@ APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キ [android-task-hijacking.md](android-task-hijacking.md) {% endcontent-ref %} -### 安全でないデータの保存 +### 安全でないデータ保存 **内部ストレージ** -Androidでは、内部ストレージに保存されたファイルは、それを作成した**アプリケーション**によって**独占的にアクセス**できるように**設計**されています。このセキュリティ対策はAndroidオペレーティングシステムによって**強制**され、ほとんどのアプリケーションのセキュリティニーズには一般的に十分です。ただし、開発者は、`MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`などのモードを利用して、ファイルを異なるアプリケーション間で**共有**できるようにすることがあります。しかし、これらのモードは、他のアプリケーション(悪意のあるものを含む)によるこれらのファイルへのアクセスを**制限**しません。 +Androidでは、内部ストレージに保存されたファイルは、作成した**アプリケーション**のみが**アクセスできるように設計**されています。このセキュリティ対策はAndroidオペレーティングシステムによって強制され、ほとんどのアプリケーションのセキュリティニーズには一般的に適しています。ただし、開発者は時々、`MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`などのモードを利用して、異なるアプリケーション間でファイルを共有することがあります。しかし、これらのモードは他のアプリケーション(悪意のあるものを含む)によるこれらのファイルへのアクセスを制限しません。 -1. **静的解析:** -- `MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`の使用が**慎重に検討**されていることを**確認**してください。これらのモードは、ファイルを**意図しないアクセス**にさらす可能性があります。 +1. **静的解析:** +- `MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`の使用が**注意深く検討**されていることを**確認**してください。これらのモードは、ファイルを**意図しないアクセス**や**不正なアクセス**にさらす可能性があります。 -2. **動的解析:** -- アプリケーションによって作成されたファイルに設定された**アクセス許可**を確認してください。特に、ファイルが**世界中で読み取りまたは書き込み可能**に設定されているかどうかを**確認**してください。これは、デバイスにインストールされている**どのアプリケーション**でも、その起源や意図に関係なく、これらのファイルを**読み取ったり変更**したりできる可能性があるため、重大なセキュリティリスクを引き起こす可能性があります。 +2. **動的解析:** +- アプリケーションによって作成されたファイルの**設定された権限**を確認してください。特に、ファイルが**世界中で読み取りまたは書き込み可能に設定**されているかどうかを**確認**してください。これは、デバイスにインストールされている**どのアプリケーション**でも、その起源や意図に関係なく、これらのファイルを**読み取ったり変更**したりできる可能性があるため、重大なセキュリティリスクを引き起こす可能性があります。 **外部ストレージ** -### 外部ストレージ上のファイルの管理ガイドライン +外部ストレージ(SDカードなど)のファイルを扱う場合は、次の注意が必要です: -外部ストレージ(SDカードなど)のファイルを扱う際には、次の注意が必要です: +1. **アクセシビリティ**: +- 外部ストレージのファイルは**グローバルに読み取りおよび書き込み可能**です。つまり、どのアプリケーションやユーザーでもこれらのファイルにアクセスできます。 -1. **アクセシビリティ**: -- 外部ストレージ上のファイルは**グローバルに読み取りおよび書き込み可能**です。つまり、どのアプリケーションやユーザーでもこれらのファイルにアクセスできます。 - -2. **セキュリティ上の懸念**: +2. **セキュリティ上の懸念**: - アクセスが容易であるため、外部ストレージに**機密情報を保存しない**ことが推奨されます。 -- 外部ストレージは取り外し可能であり、またどのアプリケーションからもアクセスできるため、セキュリティが低くなります。 +- 外部ストレージは取り外し可能であり、どのアプリケーションでもアクセスできるため、セキュリティが低くなります。 -3. **外部ストレージからのデータの取り扱い**: +3. **外部ストレージからのデータの取り扱い**: - 外部ストレージから取得したデータには**入力検証**を常に行ってください。これは、データが信頼できないソースから取得されているため、重要です。 -- 外部ストレージから実行可能ファイルやクラスファイルを動的に読み込むことは強く推奨されません。 -- アプリケーションが外部ストレージから実行可能ファイルを取得する必要がある場合は、これらのファイルが**署名され、暗号的に検証**されることを確認してから動的に読み込まれるようにしてください。この手順は、アプリケーションのセキュリティの整合性を維持するために非常に重要です。 +- 外部ストレージに実行可能ファイルやクラスファイルを保存して動的に読み込むことは強く推奨されません。 +- アプリケーションが外部ストレージから実行可能ファイルを取得する必要がある場合は、これらのファイルが**署名され、暗号的に検証**されることを確認してから動的に読み込んでください。この手順は、アプリケーションのセキュリティの整合性を維持するために重要です。 -外部ストレージは`/storage/emulated/0`、`/sdcard`、`/mnt/sdcard`でアクセスできます。 +外部ストレージは`/storage/emulated/0`、`/sdcard`、`/mnt/sdcard`で**アクセス**できます。 {% hint style="info" %} -Android 4.4(**API 17**)以降、SDカードには、アプリケーションからそのアプリケーション専用のディレクトリにアクセスを**制限**するディレクトリ構造があります。これにより、悪意のあるアプリケーションが他のアプリケーションのファイルに読み取りまたは書き込みアクセスを取得するのを防ぎます。 +Android 4.4(**API 17**)以降、SDカードにはアプリケーションがそのアプリケーション専用のディレクトリにアクセスできるように制限されたディレクトリ構造があります。これにより、悪意のあるアプリケーションが他のアプリケーションのファイルを読み取ったり書き込んだりすることが防止されます。 {% endhint %} **クリアテキストで保存された機密データ** -* **共有プリファレンス**: Androidは、各アプリケーションが`/data/data//shared_prefs/`パスに簡単にxmlファイルを保存できるようにし、このフォルダーにクリアテキストで機密情報を見つけることができる場合があります。 -* **データベース**: Androidは、各アプリケーションが`/data/data//databases/`パスにsqliteデータベースを簡単に保存できるようにし、このフォルダーにクリアテキストで機密情報を見つけることができる場合があります。 +* **共有プリファレンス**:Androidは、各アプリケーションが簡単にxmlファイルを`/data/data//shared_prefs/`に保存できるようにし、そのフォルダーにクリアテキストで機密情報を見つけることができる場合があります。 +* **データベース**:Androidは、各アプリケーションが簡単にsqliteデータベースを`/data/data//databases/`に保存できるようにし、そのフォルダーにクリアテキストで機密情報を見つけることができる場合があります。 ### 破損したTLS **すべての証明書を受け入れる** -何らかの理由で、開発者は、たとえばホスト名が一致しない場合でも、すべての証明書を受け入れることがあります。以下のようなコード行がある場合でもです。 +何らかの理由で、開発者は、たとえばホスト名が一致しない場合でも、以下のようなコード行ですべての証明書を受け入れることがあります: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); @@ -176,11 +172,11 @@ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); **鍵管理プロセスの不備** -一部の開発者は、機密データをローカルストレージに保存し、コード内でハードコード化/予測可能なキーで暗号化しています。これは行うべきではありません。逆向きに進むことで攻撃者が機密情報を抽出できる可能性があるためです。 +一部の開発者は、機密データをローカルストレージに保存し、コード内でハードコード/予測可能なキーで暗号化しています。これは行うべきではありません。逆向きにすることで攻撃者が機密情報を抽出できる可能性があるためです。 **安全でないおよび/または非推奨のアルゴリズムの使用** -開発者は、**非推奨のアルゴリズム**を使用して**認証チェック**、**データの保存**または**送信**を行うべきではありません。これらのアルゴリズムの一部には、RC4、MD4、MD5、SHA1などがあります。たとえばパスワードを保存するために**ハッシュ**が使用される場合、**ソルト**とともにハッシュブルートフォース**耐性**を持つものを使用する必要があります。 +開発者は、**非推奨のアルゴリズム**を使用して**認証チェック**、**データの保存**または**送信**を行うべきではありません。これらのアルゴリズムの一部には、RC4、MD4、MD5、SHA1などがあります。たとえばパスワードを保存するために**ハッシュ**が使用されている場合、**ソルト**とともにハッシュブルートフォース**耐性**を持つものを使用する必要があります。 ### その他のチェック @@ -212,7 +208,7 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方 ### 自動静的コード解析 -ツール[**mariana-trench**](https://github.com/facebook/mariana-trench)は、アプリケーションのコードをスキャンして**脆弱性**を見つけることができます。このツールには、**既知のソース**(ユーザーによって**制御される入力**の**場所**をツールに示す)や**シンク**(悪意のあるユーザー入力が損害を引き起こす**危険な場所**をツールに示す)および**ルール**が含まれています。これらのルールは、**ソース-シンク**の**組み合わせ**を示し、脆弱性を示します。 +ツール[**mariana-trench**](https://github.com/facebook/mariana-trench)は、アプリケーションのコードをスキャンして**脆弱性**を見つけることができます。このツールには、**既知のソース**(ユーザーによって**制御される入力**の**場所**をツールに示す)や**シンク**(悪意のあるユーザー入力が損害を引き起こす可能性のある**危険な場所**をツールに示す)などの一連の**ソース**、**シンク**(脆弱性を示す**ソース-シンク**の組み合わせを示す**ルール**が含まれています。 この知識を活用して、**mariana-trenchはコードをレビューし、可能な脆弱性を見つけます**。 @@ -231,7 +227,7 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方 * **コード実行**: `Runtime.exec(), ProcessBuilder(), native code:system()` * **SMSの送信**: `sendTextMessage, sendMultipartTestMessage` * `native`と宣言された**ネイティブ機能**: `public native, System.loadLibrary, System.load` -* [**ネイティブ機能の逆向き**の方法を学ぶには、これを読んでください](reversing-native-libraries.md) +* **ネイティブ機能を逆向きにする方法**を学ぶには、[こちらを読んでください](reversing-native-libraries.md) ### **その他のテクニック** @@ -249,10 +245,10 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方 ハッキングのスリルと課題に深く入り込むコンテンツに参加しましょう **リアルタイムのハックニュース**\ -リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちます +リアルタイムのニュースと洞察を通じて、迅速なハッキングの世界を追いかけましょう **最新の発表**\ -最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう +最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手しましょう **[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう! @@ -260,7 +256,7 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方 ## 動的解析 -> まず、アプリケーションとすべての環境(主にBurp CA証明書、Drozer、Frida)をインストールできる環境が必要です。したがって、ルート化されたデバイス(エミュレートされているかどうかにかかわらず)が非常にお勧めです。 +> まず、アプリケーションとすべての環境(主にBurp CA証明書、Drozer、Frida)をインストールできる環境が必要です。したがって、ルート化されたデバイス(エミュレートされているかどうかにかかわらず)を強くお勧めします。 ### オンライン動的解析 @@ -276,29 +272,29 @@ ADB接続を介して、エミュレータ内で**Drozer**と**Frida**を使用 #### エミュレータを使用する -* [**Android Studio**](https://developer.android.com/studio)(**x86**および**arm**デバイスを作成でき、[**最新のx86** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)バージョンは**遅いarmエミュレータを必要とせずにARMライブラリをサポート**しています)。 +* [**Android Studio**](https://developer.android.com/studio)(**x86**および**arm**デバイスを作成でき、[**最新のx86**バージョンはARMライブラリを使用**するため、遅いarmエミュレータが必要ない**)。 * このページで設定方法を学びます: {% content-ref url="avd-android-virtual-device.md" %} [avd-android-virtual-device.md](avd-android-virtual-device.md) {% endcontent-ref %} -* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(無料版:** Personal Edition、アカウントを作成する必要があります。_潜在的なエラーを回避するために_ _**VirtualBoxを使用したバージョンをダウンロード**することをお勧めします。) +* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(無料版:** Personal Edition、アカウントを作成する必要があります。_潜在的なエラーを回避するために、_**VirtualBox**を使用したバージョンを**ダウンロード**することをお勧めします。) * [**Nox**](https://es.bignox.com)(無料ですが、FridaやDrozerをサポートしていません)。 {% hint style="info" %} どのプラットフォームでも新しいエミュレータを作成する際には、画面が大きいほどエミュレータが遅くなることに注意してください。可能であれば小さな画面を選択してください。 {% endhint %} -Genymotionに**Googleサービス**(AppStoreなど)をインストールするには、次の画像の赤でマークされたボタンをクリックする必要があります: +Genymotionに**Googleサービス**(AppStoreなど)をインストールするには、次の画像の赤で囲まれたボタンをクリックする必要があります: ![](<../../.gitbook/assets/image (200) (1).png>) -また、GenymotionのAndroid VMの**構成**で**Bridge Network mode**を選択できます(これは、他のVMからAndroid VMに接続する場合に便利です)。 +また、Genymotionの**Android VMの構成**で**Bridge Network mode**を選択できます(これは、他のVMからAndroid VMに接続する場合に便利です)。 #### 物理デバイスを使用する -デバッグオプションを有効にし、ルート化できると便利です: +デバッグオプションを有効にし、ルート化できると便利です。 1. **設定**。 2. (Android 8.0以降)**システム**を選択します。 @@ -306,41 +302,44 @@ Genymotionに**Googleサービス**(AppStoreなど)をインストールす 4. **ビルド番号**を7回押します。 5. 戻り、**開発者オプション**を見つけます。 -> アプリケーションをインストールした後、最初に行うべきことは、それを試して調査し、その動作や機能を理解し、それに慣れることです。\ -> **MobSF動的解析+pidcat**を使用してこの初期の動的解析を実行することをお勧めします。これにより、MobSFが後でレビューできる**興味深いデータ**を多く**キャプチャ**することができます。 +> アプリケーションをインストールした後、最初に行うべきことは、それを試して調査し、どのように動作し、それに慣れることです。\ +> **MobSF動的解析+pidcat**を使用してこの初期の動的解析を実行することをお勧めします。これにより、**アプリケーションの動作**を学びながら、MobSFが後でレビューできる**興味深いデータ**を**キャプチャ**します。 ### 意図しないデータ漏洩 **ログ** -開発者はしばしばデバッグ情報を公開しています。そのため、`READ_LOGS`権限を持つアプリケーションはこれらのログにアクセスでき、そこから機密情報を取得できます。\ -アプリケーションを操作する際には、[**pidcat**](https://github.com/JakeWharton/pidcat)(お勧め、使用しやすく読みやすい)または[adb logcat](adb-commands.md#logcat)を使用して作成されたログを読み取り、**機密情報**を探します。 +デベロッパーは、公に**デバッグ情報**を公開することに注意する必要があります。これは機密データの漏洩につながる可能性があります。アプリケーションログを監視して、機密情報を特定し保護するために、**pidcat**や`adb logcat`などのツールが推奨されています。**Pidcat**は使いやすさと読みやすさで評価されています。 {% hint style="warning" %} -Android 4.0以降のバージョンでは、**アプリケーションは自分自身のログにのみアクセス**できるようになりました。そのため、アプリケーションは他のアプリのログにアクセスできません。\ -それでも、**機密情報を記録しない**ことをお勧めします。 +Android 4.0以降では、**アプリケーションは自分自身のログにのみアクセス**できます。したがって、アプリケーションは他のアプリのログにアクセスできません。\ +それでも**機密情報を記録しない**ことをお勧めします。 {% endhint %} -**コピー/ペーストバッファのキャッシング** +**コピー/ペーストバッファのキャッシュ** -Androidは、Androidアプリケーションでコピー/ペースト機能を提供するためのクリップボードベースのフレームワークを提供しています。しかし、他のアプリケーションが**クリップボード**にアクセスできると、機密データを含む可能性のある**クリップボード**にアクセスできる重大な問題が発生します。**機密部分**のコピー/ペースト機能は**無効**にすべきです。たとえば、クレジットカードの詳細のコピーを無効にします。 +Androidの**クリップボードベース**のフレームワークは、アプリでコピー/ペースト機能を有効にしますが、他のアプリがクリップボードにアクセスできるため、機密データが漏洩する可能性があります。クレジットカードの詳細など、アプリケーションの機密部分でコピー/ペースト機能を**無効**にすることは重要です。 **クラッシュログ** -アプリケーションが実行中にクラッシュし、ログをどこかに保存する場合、これらのログは、Androidアプリケーションを逆向きにエンジニアリングできない場合に特に攻撃者の役に立つことがあります。そのため、アプリケーションがクラッシュしたときにログを作成しないようにし、ログがネットワーク経由で送信される場合はSSLチャネルを介して送信されることを確認してください。\ +アプリケーションが**クラッシュ**して**ログを保存**すると、特にアプリケーションが逆向きにできない場合、これらのログは攻撃者に役立ちます。このリスクを軽減するために、クラッシュ時のログ記録を避け、ログをネットワーク経由で送信する場合は、セキュリティのためにSSLチャネルを介して送信する必要があります。 + ペンテスターとして、これらのログを確認してみてください。 **第三者に送信されるアナリティクスデータ** -ほとんどのアプリケーションは、Google AdSenseなどの他のサービスをアプリケーションで使用しますが、時には**機密データ**やそのサービスに送信する必要のないデータが**漏洩**することがあります。これは、開発者が機能を適切に実装していないために発生する可能性があります。アプリケーションのトラフィックをインターセプトして、第三者に機密データが送信されていないかどうかを確認できます。 +アプリケーションはしばしばGoogle Adsenseなどのサービスを統合しますが、開発者の実装が不適切な場合、機密データが漏洩する可能性があります。潜在的なデータ漏洩を特定するために、アプリケーションのトラフィックをインターセプトして、第三者サービスに送信される機密情報をチェックすることが望ましいです。 ### SQLiteデータベース -ほとんどのアプリケーションは、情報を保存するために**内部SQLiteデータベース**を使用します。ペンテスト中に作成された**データベース**、**テーブル**および**列**の名前、および保存されている**すべてのデータ +ほとんどのアプリケーションは、情報を保存するために**内部SQLiteデータベース**を使用します。ペンテスト中に作成された**データベース**、**テーブル**および**列**の**名前**、および保存されている**すべてのデータ**を確認してください。ここで**機密情報**(脆弱性となる可能性がある)を見つけることができます。\ +データベースは、`/data/data/the.package.name/databases`にあるはずです。例えば`/data/data/com.mwr.example.sieve/databases` + +データベースが機密情報を保存しており、**暗号化**されているが、アプリケーション内に**パスワード**が見つ ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -**注意**: MobSFは、アクティビティの`android:launchMode`で**singleTask/singleInstance**を使用することを悪意のあるものとして検出しますが、[こちら](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750)によると、これは古いバージョン(APIバージョン< 21)でのみ危険だとされています。 +**注意**: MobSFは、アクティビティの`android:launchMode`で**singleTask/singleInstance**の使用を悪意のあるものとして検出しますが、[こちら](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750)によると、これは古いバージョン(APIバージョン< 21)でのみ危険だとされています。 {% hint style="info" %} 認可バイパスが常に脆弱性であるわけではないことに注意してください。バイパスの動作方法や露出される情報によって異なります。 @@ -352,36 +351,35 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity #### タップジャッキング -タップジャッキングが防止されていない場合、エクスポートされたアクティビティを悪用して**ユーザーに予期しないアクションを実行**させることができます。[**タップジャッキングとは何かについて詳しくはリンクを参照してください**](./#tapjacking)。 +タップジャッキングが防止されていない場合、エクスポートされたアクティビティを悪用して**ユーザーに予期しないアクションを実行**させることができます。[**タップジャッキングとは何かについて詳しくはこちらを参照してください**](./#tapjacking)。 ### コンテンツプロバイダの悪用 - 機密情報へのアクセスと操作 -[**コンテンツプロバイダとは何かを思い出したい場合はこちらを読んでください。**](android-applications-basics.md#content-provider)\ -コンテンツプロバイダは基本的にデータを**共有**するために使用されます。アプリに利用可能なコンテンツプロバイダがある場合、そこから**機密**データを**抽出**することができるかもしれません。また、潜在的に**SQLインジェクション**や**パストラバーサル**が脆弱であるかどうかをテストすることも興味深いでしょう。\ -[**Drozerを使用してコンテンツプロバイダを悪用する方法を学ぶ**](drozer-tutorial/#content-providers)。 +[**コンテンツプロバイダとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#content-provider)\ +コンテンツプロバイダは基本的にデータを**共有**するために使用されます。アプリに利用可能なコンテンツプロバイダがある場合、そこから**機密データ**を抽出することができるかもしれません。また、潜在的に**SQLインジェクション**や**パストラバーサル**が脆弱であるかどうかをテストすることも興味深いでしょう。 + +[**Drozerを使用してコンテンツプロバイダを悪用する方法を学ぶ**](drozer-tutorial/#content-providers) ### **サービスの悪用** -[**サービスとは何かを思い出したい場合はこちらを読んでください。**](android-applications-basics.md#services)\ +[**サービスとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#services)\ サービスのアクションは基本的に`onStartCommand`メソッドで開始されます。 -サービスは基本的に**データを受信**し、それを**処理**して**応答**(またはしない)するものです。したがって、アプリケーションがいくつかのサービスをエクスポートしている場合は、それが何をしているかを理解するために**コード**をチェックし、機密情報の抽出、認証措置のバイパスなどを**動的に**テストする必要があります。\ -[**Drozerを使用してサービスを悪用する方法を学ぶ**](drozer-tutorial/#services)。 +サービスは基本的にデータを**受信**し、それを**処理**して**応答**(またはしない)するものです。したがって、アプリケーションがいくつかのサービスをエクスポートしている場合、それが何をしているかを理解するために**コード**をチェックし、機密情報の抽出、認証措置のバイパスなどを**動的に**テストする必要があります。\ +[**Drozerを使用してサービスを悪用する方法を学ぶ**](drozer-tutorial/#services) ### **ブロードキャストレシーバの悪用** -[**ブロードキャストレシーバとは何かを思い出したい場合はこちらを読んでください。**](android-applications-basics.md#broadcast-receivers)\ +[**ブロードキャストレシーバとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#broadcast-receivers)\ ブロードキャストレシーバのアクションは基本的に`onReceive`メソッドで開始されます。 ブロードキャストレシーバは特定の種類のメッセージを待機しています。レシーバがメッセージを処理する方法によって、脆弱性があるかもしれません。\ -[**Drozerを使用してブロードキャストレシーバを悪用する方法を学ぶ**](./#exploiting-broadcast-receivers)。 +[**Drozerを使用してブロードキャストレシーバを悪用する方法を学ぶ**](./#exploiting-broadcast-receivers) ### **スキーム / ディープリンクの悪用** MobSFなどのツールを使用したり、[こちらのスクリプト](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py)のようなスクリプトを使用して、ディープリンクを手動で検索できます。\ **adb**や**ブラウザ**を使用して宣言された**スキーム**を**開く**ことができます: - -{% code overflow="wrap" %} ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` @@ -400,76 +398,73 @@ _パッケージ名を**省略することができる**ことに注意してく **実行されるコード** -**アプリで実行されるコード**を見つけるには、ディープリンクで呼び出されるアクティビティに移動し、**`onNewIntent`** 関数を検索します。 +アプリで実行される**コードを見つける**には、ディープリンクで呼び出されるアクティビティに移動し、**`onNewIntent`** 関数を検索します。 ![](<../../.gitbook/assets/image (436) (1) (1) (1).png>) **機密情報** -ディープリンクを見つけるたびに、URLパラメータを介して機密データ(パスワードなど)を受信していないかどうかを確認してください。なぜなら、他のアプリケーションがディープリンクをなりすましてそのデータを盗む可能性があるからです! +ディープリンクを見つけるたびに、URLパラメータを介して機密データ(パスワードなど)を受信していないかを確認してください。なぜなら、他のアプリケーションがディープリンクをなりすましてそのデータを盗む可能性があるからです! **パス内のパラメータ** -URLのパス内でパラメータを使用しているディープリンクがあるかどうかも確認する必要があります。例えば、`https://api.example.com/v1/users/{username}` のような場合、`example://app/users?username=../../unwanted-endpoint%3fparam=value` のようにパストラバーサルを強制することができます。\ +URLのパス内にパラメータを使用しているディープリンクがあるかどうかも**確認する必要があります**。例えば、`https://api.example.com/v1/users/{username}` のような場合、`example://app/users?username=../../unwanted-endpoint%3fparam=value` のようにパストラバーサルを強制することができます。\ アプリ内で正しいエンドポイントを見つけると、**オープンリダイレクト**(パスの一部がドメイン名として使用されている場合)、**アカウント乗っ取り**(CSRFトークンなしでユーザーの詳細を変更でき、脆弱性のあるエンドポイントが正しいメソッドを使用している場合)などを引き起こす可能性があります。詳細は[こちら](http://dphoeniixx.com/2020/12/13-2/)。 -**その他の例** +**さらなる例** -リンクに関する興味深いバグ報奨レポートは[こちら](https://hackerone.com/reports/855618)。 +リンクに関する興味深いバグ報奨金レポートは[こちら](https://hackerone.com/reports/855618)。 -### トランスポート層保護の不十分さ +### トランスポート層の検査と検証の失敗 -* **証明書検査の不足:** Androidアプリケーションは、提示された証明書の正体を検証できません。ほとんどのアプリケーションは警告を無視し、提示された自己署名証明書を受け入れます。一部のアプリケーションは代わりにトラフィックをHTTP接続経由で送信します。 -* **弱いハンドシェイク交渉:** アプリケーションとサーバーはSSL/TLSハンドシェイクを実行しますが、MITM攻撃に対して脆弱な暗号スイートを使用します。そのため、攻撃者はその接続を簡単に復号化できます。 -* **プライバシー情報の漏洩:** 多くの場合、アプリケーションはセキュアチャネルを介して認証を行いますが、その他の接続はすべて非セキュアチャネルを介して行います。これは、セッションクッキーやユーザーデータなどの残りの機密データが悪意のあるユーザーによって傍受される可能性があるため、アプリケーションのセキュリティに貢献しません。 +- Androidアプリケーションは、**証明書を適切に検査しない**ことがあります。これらのアプリケーションが警告を見落としたり、自己署名証明書を受け入れたり、一部の場合にはHTTP接続に戻ったりするのは一般的です。 +- SSL/TLSハンドシェイク中の**交渉が弱い場合**があり、安全でない暗号スイートが使用されています。この脆弱性により、接続は中間者攻撃に対して脆弱になり、攻撃者がデータを復号化できるようになります。 +- アプリケーションがセキュアチャネルを使用して認証し、その後他のトランザクションで非セキュアチャネルを通信すると、**プライベート情報の漏洩**のリスクがあります。このアプローチは、セッションクッキーやユーザーの詳細などの機密データを悪意のあるエンティティによる傍受から保護できなくなります。 -提示された3つのシナリオから、**証明書の正体を検証する方法**について説明します。残りの2つのシナリオは、サーバーの**TLS構成**と**アプリケーションが暗号化されていないデータを送信するかどうか**に依存します。ペンテスターは、サーバーのTLS構成を自分でチェックし、**機密情報が暗号化されていない/脆弱な**チャネルを介して送信されていないかを検出する必要があります([こちら](../../network-services-pentesting/pentesting-web/#ssl-tls-vulnerabilites))。 -この種の脆弱性を発見して修正する方法についての詳細は[**こちら**](https://manifestsecurity.com/android-application-security-part-10/)。 +#### 証明書の検証 -**SSL Pinning** +**証明書の検証**に焦点を当てます。サーバーの証明書の整合性を検証してセキュリティを強化する必要があります。これは、安全でないTLS構成や暗号化されていないチャネルを介して機密データを送信することが重大なリスクをもたらすためです。サーバー証明書の検証手順や脆弱性の対処についての詳細なガイダンスについては、**[このリソース](https://manifestsecurity.com/android-application-security-part-10/)**を参照してください。 -SSL接続を行う際、クライアント(Androidアプリ)は、サーバーの証明書が信頼される(ルート)証明書に検証可能な信頼チェーンを持ち、要求されたホスト名と一致することを確認します。これにより、**中間者攻撃(MITM)**の問題が発生します。\ -証明書ピンニングでは、Androidアプリケーション自体がサーバーの証明書を含み、同じ証明書が提示された場合にのみデータを送信します。\ -**機密情報が送信されるサイトにはSSL Pinningを適用することが推奨**されています。 +#### SSL Pinning -### HTTPトラフィックの検査 +SSL Pinningは、アプリケーションがアプリケーション内に保存された既知のコピーに対してサーバーの証明書を検証するセキュリティ対策です。この方法は、MITM攻撃を防ぐために重要です。SSL Pinningの実装は、機密情報を扱うアプリケーションに強く推奨されます。 -まず第一に、使用する**プロキシ**ツールの**証明書**を**インストール**する必要があります。おそらくBurpを使用するでしょう。プロキシツールのCA証明書をインストールしないと、プロキシで暗号化されたトラフィックを表示できない可能性があります。\ -**必ず**、[**カスタムCA証明書をインストールする方法を学ぶためにこのガイドを読んでください**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)**。** +#### トラフィック検査 -**APIレベル24以上を対象とするアプリケーションの場合、デバイスにBurp CA証明書をインストールするだけでは不十分**です。この新しい保護をバイパスするには、ネットワークセキュリティ構成ファイルを変更する必要があります。したがって、このファイルを変更してCA証明書を承認するか、[**デバイスにインストールされたすべての証明書を再度受け入れるようにアプリケーションを強制する方法に関するチュートリアルを読んでください**](make-apk-accept-ca-certificate.md)。 +HTTPトラフィックを検査するには、プロキシツールの証明書(例:Burp)を**インストールする必要があります**。この証明書をインストールしないと、暗号化されたトラフィックはプロキシを介して表示されない場合があります。カスタムCA証明書をインストールする手順については、**[こちらをクリックしてください](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)**。 -**SSL Pinning** +**APIレベル24以上を対象とする**アプリケーションでは、ネットワークセキュリティ構成を変更してプロキシのCA証明書を受け入れる必要があります。これは、暗号化されたトラフィックを検査するために重要なステップです。ネットワークセキュリティ構成を変更する手順については、**[このチュートリアル](make-apk-accept-ca-certificate.md)**を参照してください。 -SSL Pinningについては、ちょうど2つ前で説明しました。アプリケーションに実装されている場合、HTTPSトラフィックを検査するためにそれをバイパスする必要があります。そうしないと、トラフィックを見ることができません。\ -ここでは、この保護をバイパスするために使用したいくつかのオプションを紹介します: +#### SSL Pinningのバイパス -* [**apk-mitm**](https://github.com/shroudedcode/apk-mitm)を使用して、**apkを自動的に変更**して**SSL Pinningをバイパス**します。このオプションの最大の利点は、SSL Pinningをバイパスするためにルート権限が必要ないことですが、アプリケーションを削除して新しいものを再インストールする必要があり、これが常に機能するわけではありません。 +SSL Pinningが実装されている場合、HTTPSトラフィックを検査するためには、それをバイパスする必要があります。この目的のためにさまざまな方法があります: + +* [**apk-mitm**](https://github.com/shroudedcode/apk-mitm)を使用して、**apkを変更してSSL Pinningをバイパス**する。このオプションの最大の利点は、SSL Pinningをバイパスするためにルートが必要ないことですが、アプリケーションを削除して新しいものを再インストールする必要があり、これが常に機能するわけではありません。 * この保護をバイパスするために**Frida**(以下で説明)を使用することができます。Burp+Frida+Genymotionの使用方法については、[こちらのガイド](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)を参照してください。 -* [**objection**](frida-tutorial/objection-tutorial.md)を使用して、**SSL Pinningを自動的にバイパス**することもできます:`objection --gadget com.package.app explore --startup-command "android sslpinning disable"` -* **MobSFダイナミック解析**を使用して、**SSL Pinningを自動的にバイパス**することもできます(以下で説明)。 -* キャプチャしていないトラフィックがあると考える場合は、**iptablesを使用してトラフィックをBurpに転送**することができます。このブログを参照してください:[https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) +* [**objection**](frida-tutorial/objection-tutorial.md)を使用して、SSL Pinningを自動的にバイパスすることもできます:`objection --gadget com.package.app explore --startup-command "android sslpinning disable"` +* **MobSFダイナミック解析**を使用して、SSL Pinningを自動的にバイパスすることもできます(以下で説明)。 +* キャプチャしていないトラフィックがあると考える場合は、**iptablesを使用してトラフィックをburpに転送**することができます。このブログを参照してください:[https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) -**一般的なWeb脆弱性** +#### 一般的なWeb脆弱性の検索 -このステップでは、一般的なWeb脆弱性を探す必要があります。Web脆弱性に関する多くの情報がこの本に記載されているため、ここではそれらを言及しません。 +アプリケーション内で一般的なWeb脆弱性を検索することも重要です。これらの脆弱性の特定と緩和に関する詳細な情報は、この要約の範囲を超えて詳細に説明されています。 ### Frida -開発者、リバースエンジニア、セキュリティ研究者向けのダイナミックインストルメンテーションツールキット。詳細は[www.frida.re](https://www.frida.re)で確認できます。\ -**素晴らしいツールであり、実行中のアプリケーションにアクセスして、実行時にメソッドをフックして動作を変更したり、値を変更したり、値を抽出したり、異なるコードを実行したりできます。**\ -**Androidアプリケーションのペンテストを行う場合は、Fridaの使用方法を知っている必要があります。** +[Frida](https://www.frida.re)は、開発者、リバースエンジニア、セキュリティ研究者向けの動的インストルメンテーションツールキットです。\ +**実行中のアプリケーションにアクセスして、実行時にメソッドをフックして動作を変更したり、値を変更したり、値を抽出したり、異なるコードを実行したりできます。**\ +Androidアプリケーションのペンテストを行う場合は、Fridaの使用方法を知っておく必要があります。 -**Fridaの使用方法を学ぶ:** [**Fridaチュートリアル**](frida-tutorial/)\ -**Fridaを使用したアクションのための"GUI":** [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)\ -**Fridaに基づく他の抽象化:** [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)\ -**ここでいくつかの素晴らしいFridaスクリプトを見つけることができます:** [**https://codeshare.frida.re/**](https://codeshare.frida.re) +* Fridaの使用方法を学ぶ:[**Frida tutorial**](frida-tutorial/) +* Fridaを使用したアクションのための「GUI」:[**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) +* OjectionはFridaの使用を自動化するのに最適です:[**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) +* ここでいくつかの素晴らしいFridaスクリプトを見つけることができます:[**https://codeshare.frida.re/**](https://codeshare.frida.re) ### **メモリのダンプ - Fridump** -アプリケーションがパスワードやニーモニックなど、保存すべきでない機密情報をメモリ内に保存していないかを確認してください。 +アプリケーションがメモリ内に保存すべきでない機密情報(パスワードやニーモニックなど)を保存していないかを確認してください。 -[**Fridump3**](https://github.com/rootbsd/fridump3)を使用して、アプリのメモリをダンプできます。 +[**Fridump3**](https://github.com/rootbsd/fridump3)を使用して、アプリのメモリをダンプできます: ```bash # With PID python3 fridump3.py -u @@ -488,17 +483,19 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a ### **Keystore内の機密データ** -Androidでは、Keystoreは機密データを保存するのに最適な場所ですが、**十分な権限があれば**それにアクセスすることができます。アプリケーションはここに**平文の機密データを保存**する傾向があるため、ペンテストではrootユーザーとしてそれをチェックする必要があります。また、デバイスに物理的なアクセス権限を持つ者がこのデータを盗むことができる可能性があります。 +Androidでは、Keystoreは機密データを保存するのに最適な場所ですが、**十分な権限があればアクセス可能**です。アプリケーションはここに**平文の機密データを保存**する傾向があるため、ペンテストでは、rootユーザーまたはデバイスに物理的アクセス権限を持つ者がこれらのデータを盗む可能性があるかどうかを確認する必要があります。 アプリがKeystoreにデータを保存していたとしても、そのデータは暗号化されている必要があります。 -Keystore内のデータにアクセスするには、このFridaスクリプトを使用できます: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) +Keystore内のデータにアクセスするには、このFridaスクリプトを使用できます:[https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) ```bash frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` ### **指紋/生体認証バイパス** -以下のFridaスクリプトを使用すると、Androidアプリケーションが実行している可能性がある**特定の機密領域を保護するために行われる指紋認証をバイパス**することができます: +以下のFridaスクリプトを使用すると、Androidアプリケーションが実行している可能性がある**特定の機密領域を保護するために行われる指紋認証をバイパス**することができます:** + +{% code overflow="wrap" %} ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` @@ -508,32 +505,38 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ) -**アプリケーションの脆弱性評価**を行うための素敵なWebベースのフロントエンド。動的解析も実行できます(ただし、環境を準備する必要があります)。 +アプリケーションの脆弱性評価を行うための素敵なWebベースのフロントエンド。動的解析も実行できます(ただし、環境を準備する必要があります)。 ```bash docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest @@ -574,21 +577,21 @@ MobSFは**diff/比較**分析と**VirusTotal**の統合も可能です(_MobSF/ ### MobSFによるアシストされたダイナミック分析 **MobSF**は**Android**での**ダイナミック分析**にも非常に役立ちますが、その場合はホストにMobSFと**genymotion**をインストールする必要があります(VMやDockerでは機能しません)。_注意: **genymotion**で最初にVMを**起動**してから**MobSF**を起動する必要があります。_\ -**MobSFダイナミックアナライザー**は以下が可能です: +**MobSFダイナミックアナライザー**は以下を行うことができます: * **アプリケーションデータのダンプ**(URL、ログ、クリップボード、自分が作成したスクリーンショット、"**Exported Activity Tester**"によって作成されたスクリーンショット、電子メール、SQLiteデータベース、XMLファイル、およびその他の作成されたファイル)。スクリーンショット以外はすべて自動的に行われますが、スクリーンショットを取得する場合は、スクリーンショットを取得したいタイミングで押すか、"**Exported Activity Tester**"を押してすべてのエクスポートされたアクティビティのスクリーンショットを取得する必要があります。 * **HTTPSトラフィックのキャプチャ** * **Frida**を使用して**ランタイム情報**を取得する -**Android**のバージョンが5よりも新しい場合、**Fridaが自動的に開始**され、グローバル**プロキシ**設定が**トラフィックをキャプチャ**するように設定されます。テストされたアプリケーションからのトラフィックのみをキャプチャします。 +**Android**のバージョンが5より新しい場合、**Frida**が自動的に起動され、グローバル**プロキシ**設定が**トラフィックをキャプチャ**するように設定されます。テストされたアプリケーションからのトラフィックのみをキャプチャします。 **Frida** デフォルトでは、いくつかのFridaスクリプトを使用して**SSLピニングのバイパス**、**ルート検出**、**デバッガー検出**、および**興味深いAPIの監視**も行います。\ -MobSFは**エクスポートされたアクティビティを呼び出し**、それらの**スクリーンショットを取得**してレポートに保存することもできます。 +MobSFは**エクスポートされたアクティビティ**を呼び出し、それらの**スクリーンショット**を取得してレポートに保存することもできます。 ダイナミックテストを**開始**するには、緑色のボタン "**Start Instrumentation**" を押します。**Frida Live Logs**を押すと、Fridaスクリプトによって生成されたログが表示され、**Live API Monitor**を押すとフックされたメソッドへのすべての呼び出し、渡された引数、返された値が表示されます(これは "Start Instrumentation" を押した後に表示されます)。\ -MobSFはまた、独自の**Fridaスクリプト**を読み込むことができます(Fridaスクリプトの結果をMobSFに送信するには `send()` 関数を使用します)。読み込むことができる**いくつかの事前書かれたスクリプト**もあります(`MobSF/DynamicAnalyzer/tools/frida_scripts/others/`に追加できます)、それらを選択して "**Load**" を押し、"**Start Instrumentation**" を押します(そのスクリプトのログを "**Frida Live Logs**" で確認できます)。 +MobSFはまた、独自の**Fridaスクリプト**をロードすることも可能です(Fridaスクリプトの結果をMobSFに送信するには `send()` 関数を使用します)。また、**いくつかの事前に書かれたスクリプト**をロードすることもできます(`MobSF/DynamicAnalyzer/tools/frida_scripts/others/`に追加できます)、それらを選択して "**Load**" を押し、 "**Start Instrumentation**" を押します(そのスクリプトのログを "**Frida Live Logs**" で確認できます)。 ![](<../../.gitbook/assets/image (215).png>) @@ -599,13 +602,13 @@ MobSFはまた、独自の**Fridaスクリプト**を読み込むことができ * **文字列比較のキャプチャ**: 非常に役立ちます。比較された2つの文字列と結果(TrueまたはFalse)を表示します。 * **クラスメソッドの列挙**: クラス名(例: "java.io.File")を入力すると、そのクラスのすべてのメソッドを表示します。 * **クラスパターンの検索**: パターンに一致するクラスを検索します -* **クラスメソッドのトレース**: クラス全体をトレースします(クラスのすべてのメソッドの入力と出力を表示します)。デフォルトでは、MobSFはいくつかの興味深いAndroid APIメソッドをトレースします。 +* **クラスメソッドのトレース**: クラス全体をトレースします(クラスのすべてのメソッドの入力と出力を参照)。デフォルトでは、MobSFはいくつかの興味深いAndroid APIメソッドをトレースします。 -使用したい補助モジュールを選択したら、"**Start Intrumentation**" を押して、すべての出力を "**Frida Live Logs**" で確認できます。 +使用したい補助モジュールを選択したら、**Start Intrumentation** を押して、すべての出力を **Frida Live Logs** で確認できます。 **Shell** -Mobsfには、ダイナミック分析ページの一番下にいくつかの**adb**コマンド、**MobSFコマンド**、および一般的な**シェルコマンド**を備えたシェルが付属しています。いくつかの興味深いコマンド: +Mobsfには、ダイナミック分析ページの一番下にいくつかの**adb**コマンド、**MobSFコマンド**、および一般的な**シェルコマンド**を備えたシェルが用意されています。いくつかの興味深いコマンド: ```bash help shell ls @@ -616,13 +619,13 @@ receivers ``` **HTTPツール** -HTTPトラフィックがキャプチャされると、"**HTTP(S) Traffic**"の下にキャプチャされたトラフィックの見栄えが悪いビューが表示されるか、"**Start HTTPTools**"の緑のボタンで見栄えの良いビューが表示されます。2番目のオプションから、**キャプチャされたリクエスト**をBurpやOwasp ZAPなどの**プロキシ**に**送信**することができます。\ -そのためには、_Burpを起動 -->_ _インターセプトをオフにする --> MobSB HTTPToolsでリクエストを選択_ --> "**Send to Fuzzer**"を押す --> _プロキシアドレスを選択_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))。 +HTTPトラフィックがキャプチャされると、"**HTTP(S) Traffic**"の下にキャプチャされたトラフィックの見栄えが悪いビューで表示されるか、"**Start HTTPTools**"の緑のボタンで見栄えの良いビューが表示されます。2番目のオプションから、**キャプチャされたリクエスト**をBurpやOwasp ZAPのような**プロキシ**に**送信**することができます。\ +そのためには、_Burpを起動 -->_ _Interceptをオフにする --> MobSB HTTPToolsでリクエストを選択_ --> "**Send to Fuzzer**"を押す --> _プロキシアドレスを選択_ ([http://127.0.0.1:8080\\](http://127.0.1:8080))。 -MobSFで動的解析を終えたら、"**Start Web API Fuzzer**"を押して、**HTTPリクエストをファズ**し、脆弱性を探すことができます。 +MobSFで動的解析を終えたら、"**Start Web API Fuzzer**"を押して、HTTPリクエストを**fuzz**し、脆弱性を探すことができます。 {% hint style="info" %} -MobSFで動的解析を実行した後、プロキシ設定が誤って構成され、GUIから修正できない場合があります。プロキシ設定を修正するには、次の手順を実行します: +MobSFで動的解析を行った後、プロキシ設定が誤って構成され、GUIから修正できない場合があります。プロキシ設定を修正するには、次の手順を実行します: ``` adb shell settings put global http_proxy :0 ``` @@ -631,15 +634,12 @@ adb shell settings put global http_proxy :0 ### Inspeckageを使用したアシストされたダイナミック解析 [**Inspeckage**](https://github.com/ac-pm/Inspeckage)からツールを入手できます。\ -このツールはいくつかの**フック**を使用して、**ダイナミック解析**を実行する際に**アプリケーション内で何が起こっているか**を知らせます。 +このツールは、いくつかの**フック**を使用して、**ダイナミック解析**を実行する際に**アプリケーション内で何が起こっているか**を知らせてくれます。 -{% content-ref url="inspeckage-tutorial.md" %} -[inspeckage-tutorial.md](inspeckage-tutorial.md) -{% endcontent-ref %} ### [Yaazhini](https://www.vegabird.com/yaazhini/) -これは**GUIを使用して静的解析を実行するための優れたツール**です +これは、GUIを使用して**静的解析**を実行するための**素晴らしいツール**です ![](<../../.gitbook/assets/image (527).png>) @@ -656,29 +656,16 @@ qark --java path/to/specific/java/file.java * 簡単な参照のためにすべての抽出されたファイルを表示します * APKファイルを自動的にJavaおよびSmali形式に逆コンパイルします -* 一般的な脆弱性と動作のためのAndroidManifest.xmlの分析 +* 一般的な脆弱性と動作のためのAndroidManifest.xmlを分析します * 一般的な脆弱性と動作のための静的ソースコード分析 * デバイス情報 -* インテント -* コマンドの実行 -* SQLite参照 -* ロギング参照 -* コンテンツプロバイダ -* ブロードキャストレシーバ -* サービス参照 -* ファイル参照 -* 暗号参照 -* ハードコードされた秘密情報 -* URL -* ネットワーク接続 -* SSL参照 -* WebView参照 -``` +* その他 +```bash reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -SUPERは、Windows、MacOS X、Linuxで使用できるコマンドラインアプリケーションで、.apkファイルを解析して脆弱性を検索するために使用されます。これは、APKを展開し、脆弱性を検出するための一連のルールを適用することによって行われます。 +SUPERは、Windows、MacOS X、Linuxで使用できるコマンドラインアプリケーションで、.apkファイルを解析して脆弱性を検索するために使用できます。これは、APKを展開し、脆弱性を検出するための一連のルールを適用することによって行われます。 すべてのルールは`rules.json`ファイルに集約されており、各企業やテスターは必要なものを分析するために独自のルールを作成できます。 @@ -690,17 +677,17 @@ super-analyzer {apk_file} ![](<../../.gitbook/assets/image (62).png>) -StaCoAnは、モバイルアプリケーションに対する**静的コード解析**を実行する開発者、バグバウンティハンター、倫理的ハッカーを支援する**クロスプラットフォーム**ツールです\*。 +StaCoAnは、モバイルアプリケーションの[静的コード解析](https://en.wikipedia.org/wiki/Static\_program\_analysis)を実行する開発者、バグバウンティハンター、倫理的ハッカーを支援する**クロスプラットフォーム**ツールです。 -コンセプトは、モバイルアプリケーションファイル(.apkまたは.ipaファイル)をStaCoAnアプリケーションにドラッグアンドドロップすると、視覚的でポータブルなレポートが生成されます。設定やワードリストを調整して、カスタマイズされた体験を得ることができます。 +このコンセプトは、モバイルアプリケーションファイル(.apkまたは.ipaファイル)をStaCoAnアプリケーションにドラッグアンドドロップすると、視覚的でポータブルなレポートが生成されます。設定やワードリストを調整して、カスタマイズされた体験を得ることができます。 -[最新リリースをダウンロード](https://github.com/vincentcox/StaCoAn/releases): +[最新リリース](https://github.com/vincentcox/StaCoAn/releases)をダウンロードしてください。 ``` ./stacoan ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework) -AndroBugs Frameworkは、Androidアプリケーション内の潜在的なセキュリティ脆弱性を見つけるのを手助けするAndroid脆弱性分析システムです。\ +AndroBugs Frameworkは、開発者やハッカーがAndroidアプリケーション内の潜在的なセキュリティ脆弱性を見つけるのを支援するAndroid脆弱性分析システムです。\ [Windows releases](https://github.com/AndroBugs/AndroBugs\_Framework/releases) ``` python androbugs.py -f [APK file] @@ -708,7 +695,7 @@ androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/androwarn) -**Androwarn**は、Androidアプリケーションによって開発された潜在的な悪意のある振る舞いを検出し、ユーザーに警告することを主な目的とするツールです。 +**Androwarn**は、Androidアプリケーションによって開発された潜在的な悪意のある振る舞いを検出してユーザーに警告することを主な目的とするツールです。 検出は、アプリケーションのDalvikバイトコードを**Smali**として表現し、[`androguard`](https://github.com/androguard/androguard)ライブラリを使用して**静的解析**を行います。 @@ -737,89 +724,78 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ## コードの難読化/難読化解除 -コードを難読化するために使用するサービスと構成によっては、秘密情報が難読化されるかどうかが異なることに注意してください。 +コードを難読化するために使用するサービスと構成によっては、シークレットが難読化されるかどうかが異なることに注意してください。 ### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) -**ProGuard**は、Javaコードを縮小し、最適化し、難読化するためのオープンソースのコマンドラインツールです。バイトコードを最適化し、未使用の命令を検出して削除することができます。ProGuardは無料のソフトウェアであり、GNU General Public Licenseバージョン2の下で配布されています。 +[Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\))によると、**ProGuard**はJavaコードを縮小、最適化、難読化するオープンソースのコマンドラインツールです。バイトコードを最適化し、未使用の命令を検出して削除することができます。ProGuardはフリーソフトウェアであり、GNU General Public Licenseバージョン2の下で配布されています。 ProGuardはAndroid SDKの一部として配布され、リリースモードでアプリケーションをビルドする際に実行されます。 -出典:[https://en.wikipedia.org/wiki/ProGuard\_(software)](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) - ### [DexGuard](https://www.guardsquare.com/dexguard) APKの難読化を解除するためのステップバイステップガイドは[こちら](https://blog.lexfo.fr/dexguard.html) -(そのガイドから)最後に確認したとき、Dexguardの動作モードは次のとおりでした: +(そのガイドから) 最後に確認したとき、Dexguardの動作モードは次のとおりでした: - InputStreamとしてリソースをロードする - それを復号化するためにFilterInputStreamを継承したクラスに結果をフィードする - いくつかの無駄な難読化を行い、リバーサーの時間を数分無駄にする - 復号化された結果をZipInputStreamにフィードしてDEXファイルを取得する -- 最終的に、`loadDex`メソッドを使用して結果のDEXをリソースとしてロードする +- 最終的に`loadDex`メソッドを使用して結果のDEXをリソースとしてロードする ### [DeGuard](http://apk-deguard.com) -**DeGuardは、Androidの難読化ツールによって実行された難読化プロセスを逆転させます。これにより、コード検査やライブラリの予測を含む多数のセキュリティ分析が可能になります。** +**DeGuardはAndroidの難読化ツールによって実行された難読化プロセスを逆転させます。これにより、コード検査やライブラリの予測を含む多数のセキュリティ分析が可能になります。** 難読化されたAPKを彼らのプラットフォームにアップロードできます。 ### [Simplify](https://github.com/CalebFenton/simplify) -これは**一般的なAndroid難読化解除ツール**です。Simplifyはアプリを**仮想的に実行**してその動作を理解し、コードを最適化し、同じように動作するが人間が理解しやすいコードにします。各最適化タイプは単純で一般的なため、使用される難読化の具体的なタイプは問題ありません。 +これは**一般的なAndroid難読化ツール**です。Simplifyはアプリを**仮想的に実行**してその動作を理解し、コードを最適化し、動作は同じままで人間が理解しやすくなるようにします。各最適化タイプは単純で一般的なため、使用される難読化の具体的なタイプは問題ありません。 ### [APKiD](https://github.com/rednaga/APKiD) -APKiDは、APKの作成方法に関する情報を提供します。多くの**コンパイラ**、**パッカー**、**難読化ツール**、およびその他の奇妙なものを識別します。これはAndroidの[_PEiD_](https://www.aldeid.com/wiki/PEiD)です。 +APKiDは**APKの作成方法**に関する情報を提供します。多くの**コンパイラ**、**パッカー**、**難読化ツール**、およびその他の奇妙なものを識別します。これはAndroidの[_PEiD_](https://www.aldeid.com/wiki/PEiD)です。 ### マニュアル -[このチュートリアルを読んで、**カスタム難読化を逆転する方法**について学びます](manual-deobfuscation.md) +**カスタム難読化を逆転する方法についてのトリックを学ぶ**ために、[このチュートリアル](manual-deobfuscation.md)を読んでください。 ## ラボ ### [Androl4b](https://github.com/sh4hin/Androl4b) -AndroL4bは、リバースエンジニアリングとマルウェア分析のための異なるセキュリティ愛好家や研究者からの最新のフレームワーク、チュートリアル、およびラボを含むubuntu-mateベースのAndroidセキュリティ仮想マシンです。 - -### OWASP - -{% embed url="https://github.com/OWASP/owasp-mstg%0Ahttps://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06g-testing-network-communication" %} - -### Gitリポジトリ - -[https://github.com/riddhi-shree/nullCommunity/tree/master/Android](https://github.com/riddhi-shree/nullCommunity/tree/master/Android)\ -[https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec) +AndroL4bは、リバースエンジニアリングとマルウェア分析のための異なるセキュリティ愛好家や研究者からの最新のフレームワーク、チュートリアル、およびラボを含む、ubuntu-mateに基づいたAndroidセキュリティ仮想マシンです。 ## 参考文献 -詳細については、以下を参照してください: +* [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) +* [https://appsecwiki.com/#/](https://appsecwiki.com/#/) これは素晴らしいリソースのリストです +* [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Androidクイックコース +* [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) +* [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) +* [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec) -- [https://appsecwiki.com/#/](https://appsecwiki.com/#/) リソースの素晴らしいリスト -- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Androidクイックコース -- [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) -- [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) +## まだ試していないもの -## テストする - -- [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/) -- [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit) +* [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/) +* [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
-[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! +[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! **ハッキングの洞察**\ ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう **リアルタイムハックニュース**\ -リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちます +リアルタイムのニュースと洞察を通じて、迅速なハッキングの世界を追いかけましょう -**最新のアナウンスメント**\ +**最新の発表**\ 最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう -[**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう! +**[Discord](https://discord.com/invite/N3FrSbmwdy)に参加**して、今日からトップハッカーと協力を始めましょう!
@@ -827,10 +803,10 @@ AndroL4bは、リバースエンジニアリングとマルウェア分析のた HackTricksをサポートする他の方法: -- **HackTricksを広告する**か**HackTricksをPDFでダウンロード**するには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- **HackTricksで企業を宣伝**したり、**HackTricksをPDFでダウンロード**したりするには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -- 独占的な[NFTs](https://opensea.io/collection/the-peass-family)である[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう +- 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう - 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローしましょう -- ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +- ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
diff --git a/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md b/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md index 2b36de323..ebd262fd2 100644 --- a/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md +++ b/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md @@ -1,82 +1,84 @@ -# Drozerチュートリアル +# Drozer チュートリアル
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ -* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** +HackTricks をサポートする他の方法: + +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦で私をフォローする [**@carlospolopm**](https://twitter.com/carlospolopm)**。** +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリに提出してください。
-**バグバウンティのヒント**:**Intigritiに登録**してください。ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報酬を獲得しましょう! +**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムバグバウンティプラットフォーム**である **Intigriti にサインアップ**してください!今すぐ [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) に参加して、最大 **$100,000** のバウンティを獲得し始めましょう! {% embed url="https://go.intigriti.com/hacktricks" %} ## テストするAPK -* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk) (mrwlabsから) +* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk)(mrwlabsから) * [DIVA](https://payatu.com/wp-content/uploads/2016/01/diva-beta.tar.gz) +**このチュートリアルの一部は、[Drozerドキュメントpdf](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf)から抽出されました。** + ## インストール -ホスト内にDrozerクライアントをインストールします。[最新のリリース](https://github.com/mwrlabs/drozer/releases)からダウンロードしてください。 +ホスト内に Drozer クライアントをインストールします。[最新リリース](https://github.com/mwrlabs/drozer/releases)からダウンロードしてください。 ```bash pip install drozer-2.4.4-py2-none-any.whl pip install twisted pip install service_identity ``` -最新のリリースからdrozer APKをダウンロードしてインストールします。現時点では、[こちら](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk)です。 -``` +ダウンロードしてdrozer APKを[最新リリース](https://github.com/mwrlabs/drozer/releases)からインストールしてください。現時点では[こちら](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk)です。 +```bash adb install drozer.apk ``` ### サーバーの起動 -エージェントはポート31415で実行されています。Drozerクライアントとエージェントの間の通信を確立するために、[ポートフォワーディング](https://en.wikipedia.org/wiki/Port\_forwarding)が必要です。以下はそのためのコマンドです: -``` +エージェントはポート31415で実行されています。Drozerクライアントとエージェントの間の通信を確立するために、[ポート転送](https://en.wikipedia.org/wiki/Port\_forwarding)が必要です。以下はそのためのコマンドです: +```bash adb forward tcp:31415 tcp:31415 ``` -最後に、**アプリケーション**を**起動**し、ボタンの「**ON**」を押します。 +最後に、**アプリケーション**を**起動**し、下部の "**ON**" ボタンを押します。 ![](<../../../.gitbook/assets/image (63).png>) そして、それに接続します: -``` +```bash drozer console connect ``` -## おもしろいコマンド +## 興味深いコマンド | **コマンド** | **説明** | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **Help MODULE** | 選択したモジュールのヘルプを表示します。 | -| **list** | 現在のセッションで実行できるすべてのdrozerモジュールのリストを表示します。適切な権限を持っていないモジュールは非表示にされます。 | -| **shell** | エージェントのコンテキストでデバイス上で対話型のLinuxシェルを開始します。 | -| **clean** | drozerがAndroidデバイス上に保存した一時ファイルを削除します。 | -| **load** | drozerコマンドを含むファイルをロードし、順番に実行します。 | -| **module** | インターネットから追加のdrozerモジュールを検索してインストールします。 | -| **unset** | drozerが生成するすべてのLinuxシェルに渡される名前付き変数を削除します。 | -| **set** | drozerによって生成されるすべてのLinuxシェルに環境変数として渡される変数に値を格納します。 | -| **shell** | エージェントのコンテキストでデバイス上で対話型のLinuxシェルを開始します。 | -| **run MODULE** | drozerモジュールを実行します。 | -| **exploit** | drozerはデバイスで実行するためのエクスプロイトを作成できます。 `drozer exploit list` | +| **Help MODULE** | 選択したモジュールのヘルプを表示します | +| **list** | 現在のセッションで実行可能なすべてのdrozerモジュールのリストを表示します。適切な権限を持っていないモジュールは非表示になります。 | +| **shell** | デバイス上でインタラクティブなLinuxシェルをAgentのコンテキストで開始します。 | +| **clean** | Androidデバイス上にdrozerによって保存された一時ファイルを削除します。 | +| **load** | drozerコマンドを含むファイルを読み込み、順番に実行します。 | +| **module** | インターネットから追加のdrozerモジュールを見つけてインストールします。 | +| **unset** | drozerが生成するLinuxシェルに渡す名前付き変数を削除します。 | +| **set** | drozerによって生成されたLinuxシェルに渡される環境変数として値を格納します。 | +| **shell** | デバイス上でAgentのコンテキストでインタラクティブなLinuxシェルを開始します。 | +| **run MODULE** | drozerモジュールを実行します | +| **exploit** | Drozerはデバイスで実行するためのエクスプロイトを作成できます。 `drozer exploit list` | | **payload** | エクスプロイトにはペイロードが必要です。 `drozer payload list` | ### パッケージ -パッケージの**名前**を部分一致でフィルタリングして検索します: -``` +パッケージの**名前**を部分一致でフィルタリングして検索します: +```bash dz> run app.package.list -f sieve com.mwr.example.sieve ``` **パッケージの基本情報**: - -The package name is `com.example.app` and the version is `1.0`. The package is signed with the certificate fingerprint `A1:B2:C3:D4:E5:F6:G7:H8:I9:J0:K1:L2:M3:N4:O5:P6:Q7:R8:S9:T0`. The package is targeted for Android API level 28 (Android 9.0 Pie) and the minimum supported API level is 21 (Android 5.0 Lollipop). -``` +```bash dz> run app.package.info -a com.mwr.example.sieve Package: com.mwr.example.sieve Process Name: com.mwr.example.sieve @@ -95,12 +97,12 @@ Defines Permissions: - com.mwr.example.sieve.READ_KEYS - com.mwr.example.sieve.WRITE_KEYS ``` -**マニフェスト**を読む: -``` +**マニフェスト**を読む: +```bash run app.package.manifest jakhar.aseem.diva ``` -**パッケージの攻撃面**: -``` +**パッケージの攻撃面:** +```bash dz> run app.package.attacksurface com.mwr.example.sieve Attack Surface: 3 activities exported @@ -109,25 +111,19 @@ Attack Surface: 2 services exported is debuggable ``` -* **アクティビティ**: おそらく、アクティビティを開始し、起動を防ぐべき認証を回避することができます。 -* **コンテンツプロバイダ**: 私的なデータにアクセスしたり、いくつかの脆弱性(SQLインジェクションやパストラバーサル)を悪用したりすることができるかもしれません。 -* **サービス**: -* **is debuggable**: [詳細を学ぶ](./#is-debuggeable) +* **Activities**: おそらく、アクティビティを開始し、起動を防ぐべき認証をバイパスすることができるかもしれません。 +* **Content providers**: プライベートデータにアクセスしたり、いくつかの脆弱性(SQLインジェクションまたはパストラバーサル)を悪用したりすることができるかもしれません。 +* **Services**: +* **is debuggable**: [詳細を見る](./#is-debuggeable) -### アクティビティ +### Activities -AndroidManifest.xmlファイルで、エクスポートされたアクティビティコンポーネントの「android:exported」の値が**「true」**に設定されています。 +AndroidManifest.xmlファイルでエクスポートされたアクティビティコンポーネントの「android:exported」の値が**「true」**に設定されています: ```markup ``` -**エクスポートされたアクティビティのリスト**: - -```shell -$ drozer console connect -$ run app.package.list -f -$ run app.activity.info -a -``` +**エクスポートされたアクティビティのリスト**: ```bash dz> run app.activity.info -a com.mwr.example.sieve Package: com.mwr.example.sieve @@ -137,28 +133,26 @@ com.mwr.example.sieve.PWList ``` **アクティビティの開始**: -おそらく、アクティビティを開始し、それを起動することを防ぐべき認証をバイパスすることができます。 - -{% code overflow="wrap" %} +おそらくアクティビティを開始し、起動を防ぐべき認証をバイパスすることができます。 ```bash dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList ``` {% endcode %} -**adb**からもエクスポートされたアクティビティを起動することもできます: +**adb**からエクスポートされたアクティビティを開始することもできます: -- パッケージ名はcom.example.demoです -- エクスポートされたアクティビティ名はcom.example.test.MainActivityです +- PackageNameはcom.example.demoです +- エクスポートされたActivityNameはcom.example.test.MainActivity ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -### コンテンツプロバイダ +### コンテンツ プロバイダ -この投稿は非常に大きいため、[ここで独自のページでアクセスできます](exploiting-content-providers.md)。 +この投稿はここにあるほど大きかったので、**独自のページでアクセス**できます[**こちら**](exploiting-content-providers.md)。 ### サービス -エクスポートされたサービスはManifest.xml内で宣言されます: +エクスポートされたサービスはManifest.xml内で宣言されます: {% code overflow="wrap" %} ```markup @@ -166,7 +160,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity ``` {% endcode %} -コードの中で、\*\*`handleMessage`\*\*関数を**チェック**して、**メッセージ**を**受け取る**ことができます。 +コード内で **check** して、**message** を **receive** する \*\*`handleMessage`\*\* 関数を探します: ![](<../../../.gitbook/assets/image (194).png>) @@ -179,48 +173,20 @@ Permission: null com.mwr.example.sieve.CryptoService Permission: null ``` -#### サービスとの**インタラクション** - -To interact with a service, you can use the `run` command in drozer. This command allows you to execute various actions on the target service. - -サービスとのインタラクションを行うために、drozerでは`run`コマンドを使用することができます。このコマンドを使用すると、対象のサービス上でさまざまなアクションを実行することができます。 - -The basic syntax for the `run` command is as follows: - -`run [options]` - -`run`コマンドの基本的な構文は以下の通りです: - -`run <モジュール> <アクション> [オプション]` - -Here, `` refers to the module you want to interact with, `` refers to the action you want to perform on the module, and `[options]` refers to any additional options or parameters required for the action. - -ここで、`<モジュール>`はインタラクションを行いたいモジュールを指し、`<アクション>`はモジュール上で実行したいアクションを指し、`[オプション]`はアクションに必要な追加のオプションやパラメータを指します。 - -For example, to interact with the `activity` module and launch an activity, you can use the following command: - -たとえば、`activity`モジュールとインタラクションを行い、アクティビティを起動するには、次のコマンドを使用します: - -``` -run app.activity.start --component -``` - -Here, `` refers to the name of the activity component you want to launch. - -ここで、``は起動したいアクティビティコンポーネントの名前を指します。 -``` +#### **サービスとのやり取り** +```bash app.service.send Send a Message to a service, and display the reply app.service.start Start Service app.service.stop Stop Service ``` #### 例 -`app.service.send`の**drozer**のヘルプを見てみましょう: +`app.service.send`の**drozer**ヘルプを参照してください: ![](<../../../.gitbook/assets/image (196) (1).png>) -"_msg.what_"の中に最初にデータを送信し、その後に"_msg.arg1_"と"_msg.arg2_"を送信します。コードの中で**どの情報が使用されているか**とその場所を確認する必要があります。\ -`--extra`オプションを使用すると、"_msg.replyTo"によって解釈される何かを送信できます。また、`--bundle-as-obj`を使用すると、提供された詳細を持つオブジェクトを作成できます。 +"_msg.what_"、"_msg.arg1_"、"_msg.arg2_"の中に最初にデータを送信することになります。コードの中で**どの情報が使用されているか**とその場所を確認する必要があります。\ +`--extra`オプションを使用すると、"_msg.replyTo"によって解釈されるものを送信でき、`--bundle-as-obj`を使用すると、提供された詳細でオブジェクトを作成できます。 次の例では: @@ -228,70 +194,22 @@ app.service.stop Stop Service * `arg1 == 9234` * `arg2 == 1` * `replyTo == object(string com.mwr.example.sieve.PIN 1337)` -``` +```bash run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj ``` ![](<../../../.gitbook/assets/image (195).png>) ### ブロードキャストレシーバー -Androidアプリは、Androidシステムや他のAndroidアプリからブロードキャストメッセージを送受信することができます。これは、[パブリッシュ-サブスクライブ](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)デザインパターンに似ています。これらのブロードキャストは、興味のあるイベントが発生したときに送信されます。たとえば、Androidシステムは、システムの起動時やデバイスの充電開始時など、さまざまなシステムイベントが発生したときにブロードキャストを送信します。アプリはカスタムブロードキャストも送信できます。たとえば、他のアプリに興味がある情報を通知するためにカスタムブロードキャストを送信することができます(たとえば、新しいデータがダウンロードされたことを通知するなど)。 +**Androidの基本情報セクションでは、ブロードキャストレシーバーとは何かを確認できます**。 -アプリは特定のブロードキャストを受信するために登録することができます。ブロードキャストが送信されると、システムはその特定のタイプのブロードキャストを受信するために登録したアプリに自動的にブロードキャストをルーティングします。 +これらのブロードキャストレシーバーを発見した後は、**それらのコードを確認**する必要があります。 受信したメッセージを処理する**`onReceive`**関数に特に注意してください。 -これはManifest.xmlファイルの中に表示される可能性があります。 -```markup - - - - - - -``` -From: [https://developer.android.com/guide/components/broadcasts](https://developer.android.com/guide/components/broadcasts) - -これらのブロードキャストレシーバーを発見した後は、それらのコードを**チェック**する必要があります。受信されたメッセージを処理するために、**`onReceive`**関数に特に注意を払ってください。 - -#### **すべての**ブロードキャストレシーバーを検出する +#### **すべての**ブロードキャストレシーバーを検出 ```bash run app.broadcast.info #Detects all ``` -#### アプリのブロードキャストレシーバーをチェックする - -To check the broadcast receivers of an app, you can use the `drozer` tool. This tool allows you to interact with the Android operating system at the application layer, providing a way to analyze and manipulate Android apps. - -To begin, make sure you have `drozer` installed on your machine. You can find installation instructions in the [drozer GitHub repository](https://github.com/FSecureLABS/drozer). - -Once `drozer` is installed, follow these steps to check the broadcast receivers of an app: - -1. Connect your Android device to your machine using a USB cable. -2. Enable USB debugging on your Android device. You can find this option in the Developer Options menu. -3. Open a terminal or command prompt and navigate to the directory where `drozer` is installed. -4. Run the following command to start the `drozer` console: - - ``` - drozer console connect - ``` - -5. Once connected, run the following command to list the installed apps on your device: - - ``` - run app.package.list -f - ``` - - This will display a list of installed apps along with their package names. - -6. Identify the package name of the app you want to check the broadcast receivers for. - -7. Run the following command, replacing `com.example.app` with the package name of the app: - - ``` - run app.broadcast.info -a com.example.app - ``` - - This command will display information about the broadcast receivers registered by the app. - -By checking the broadcast receivers of an app, you can gain insights into its communication capabilities and potential security vulnerabilities. +#### アプリのブロードキャストレシーバーをチェックします ```bash #Check one negative run app.broadcast.info -a jakhar.aseem.diva @@ -313,33 +231,33 @@ com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver Permission: null ``` #### ブロードキャスト **インタラクション** -``` +```bash app.broadcast.info Get information about broadcast receivers app.broadcast.send Send broadcast using an intent app.broadcast.sniff Register a broadcast receiver that can sniff particular intents ``` #### メッセージを送信する -この例では、[FourGoats apk](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk)のContent Providerを悪用して、ユーザーの許可を求めずに**任意のSMSを**非プレミアムの宛先に**送信する**ことができます。 +この例では、[FourGoats apk](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk)のContent Providerを悪用して、ユーザーに許可を求めることなく、**任意のSMS**をプレミアムでない宛先に**送信**することができます。 ![](<../../../.gitbook/assets/image (199).png>) ![](<../../../.gitbook/assets/image (197) (1).png>) -コードを読むと、パラメータ "_phoneNumber_" と "_message_" をContent Providerに送信する必要があります。 -``` +コードを読むと、パラメータ "_phoneNumber_" と "_message_" が Content Provider に送信される必要があることがわかります。 +```bash run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!" ``` ### デバッグ可能かどうか -プロダクションAPKは決してデバッグ可能になってはいけません。\ -これは、実行中のアプリケーションに**Javaデバッガをアタッチ**し、実行時にそれを検査し、ブレークポイントを設定し、ステップごとに進んで変数の値を収集し、さらには変更することができることを意味します。[InfoSec Instituteには、デバッグ可能なアプリケーションを掘り下げるための素晴らしい記事](../exploiting-a-debuggeable-applciation.md)があります。 +本番用のAPKは決してデバッグ可能にすべきではありません。\ +これは、実行中のアプリケーションに**Javaデバッガーをアタッチ**し、実行時にそれを検査し、ブレークポイントを設定し、ステップごとに進んで変数の値を収集し、それらを変更することができることを意味します。[InfoSec instituteには優れた記事](../exploiting-a-debuggeable-application.md)があり、アプリケーションがデバッグ可能であり、ランタイムコードをインジェクトする際にさらに深く掘り下げる方法について説明しています。 -アプリケーションがデバッグ可能である場合、マニフェストに表示されます: -```html +アプリケーションがデバッグ可能である場合、マニフェストに表示されます。 +```xml -**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! +**バグバウンティのヒント**: **Intigriti** に **サインアップ** して、ハッカーによって作成されたプレミアム **バグバウンティプラットフォーム** に参加しましょう![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ登録して、最大 **$100,000** のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %}
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE (HackTricks AWS Red Team Expert)! -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** +HackTricks をサポートする他の方法: + +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) をフォローする +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
diff --git a/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md b/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md index 48cdc31a9..ea706038e 100644 --- a/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md +++ b/mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md @@ -4,32 +4,33 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** +HackTricks をサポートする他の方法: + +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で私をフォローする [**@carlospolopm**](https://twitter.com/carlospolopm)**。** +* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
-## イントロ +## はじめに -コンテンツプロバイダコンポーネントは、リクエストに応じてデータを他のアプリケーションに提供します。このようなリクエストは、ContentResolverクラスのメソッドによって処理されます。コンテンツプロバイダは、データを**データベース**、**ファイル**、または**ネットワーク**上に**保存**するためにさまざまな方法を使用することができます。 +データは、**コンテンツプロバイダ**として知られるコンポーネントによって、他のアプリケーションにリクエストに応じて**供給**されます。これらのリクエストは、**ContentResolverクラス**のメソッドを介して管理されます。コンテンツプロバイダは、**データベース**、**ファイル**、または**ネットワーク**上など、さまざまな場所にデータを保存できます。 -コンテンツプロバイダは_Manifest.xml_ファイル内で宣言する必要があります。例: -```markup +_Manifest.xml_ファイルでは、コンテンツプロバイダの宣言が必要です。たとえば: +```xml ``` -この場合、`content://com.mwr.example.sieve.DBContentProvider/Keys` にアクセスするためには `READ_KEYS` の許可が必要です。\ -(また、次のセクションでは保護されていない `/Keys/` にアクセスする予定ですが、開発者が混乱して `/Keys` を保護してしまったためです。) +アクセスするには、`READ_KEYS`パーミッションが必要です:`content://com.mwr.example.sieve.DBContentProvider/Keys`。興味深いことに、セクション内のパス`/Keys/`は開かれており、開発者が`/Keys`を保護したが`/Keys/`を宣言したため、保護されていません。 -**おそらく、プライベートデータにアクセスしたり、いくつかの脆弱性(SQLインジェクションやパストラバーサル)を悪用することができるかもしれません。** +**おそらく、プライベートデータにアクセスしたり、脆弱性(SQLインジェクションまたはパストラバーサル)を悪用したりできるかもしれません。** -## **公開されたコンテンツプロバイダ**から情報を取得する +## **公開されたコンテンツプロバイダーから情報を取得する** ``` dz> run app.provider.info -a com.mwr.example.sieve Package: com.mwr.example.sieve @@ -51,9 +52,9 @@ Content Provider: com.mwr.example.sieve.FileBackupProvider Multiprocess Allowed: True Grant Uri Permissions: False ``` -私たちは、DBContentProviderにアクセスするために、コンテンツURIの一部を**再構築**することができます。なぜなら、それらは必ず「_content://_」で始まり、Drozerが_Path: /Keys_内で取得した情報を知っているからです。 +**DBContentProvider** に到達する方法を組み立てることが可能です。これは、Drozer を使用して得られた洞察に基づいており、重要な情報が _/Keys_ ディレクトリにあることがわかります。 -Drozerは、複数のURIを**推測して試す**ことができます。 +Drozer は、**複数の URI を推測して試す**ことができます。 ``` dz> run scanner.provider.finduris -a com.mwr.example.sieve Scanning com.mwr.example.sieve... @@ -65,11 +66,11 @@ content://com.mwr.example.sieve.DBContentProvider/Keys/ content://com.mwr.example.sieve.DBContentProvider/Passwords content://com.mwr.example.sieve.DBContentProvider/Passwords/ ``` -**ContentProviderのコード**をチェックして、クエリを検索する必要があります: +また、**ContentProviderコード**をチェックしてクエリを検索する必要があります: ![](<../../../.gitbook/assets/image (121) (1) (1) (1).png>) -また、完全なクエリが見つからない場合は、ContentProviderで`onCreate`メソッドで宣言されている名前をチェックできます: +また、完全なクエリが見つからない場合は、`onCreate`メソッドで**ContentProviderによって宣言された名前を確認**できます: ![](<../../../.gitbook/assets/image (186).png>) @@ -77,8 +78,8 @@ content://com.mwr.example.sieve.DBContentProvider/Passwords/ ## **データベースをバックエンドとするContent Provider** -おそらく、ほとんどのContent Providerは**データベース**の**インターフェース**として使用されます。したがって、アクセスできる場合は情報を**抽出、更新、挿入、削除**することができるかもしれません。\ -**機密情報にアクセス**できるかどうかを確認するか、**認証**メカニズムを**バイパス**するために変更してみてください。 +おそらく、ほとんどのContent Providerは**データベース**の**インターフェース**として使用されています。したがって、アクセスできれば**情報を抽出、更新、挿入、削除**することができるかもしれません。\ +**アクセスできるかどうかを確認**し、**機密情報にアクセス**できるかどうかを確認するか、**認証をバイパス**するために変更してみてください。 Content Providerのコードをチェックする際には、_query、insert、update、delete_などの名前の**関数**もチェックしてください: @@ -86,9 +87,7 @@ Content Providerのコードをチェックする際には、_query、insert、u ![](<../../../.gitbook/assets/image (254) (1) (1) (1) (1) (1) (1) (1).png>) -これらの関数を呼び出すことができるからです。 - -### コンテンツのクエリ +これらを呼び出すことができるため、 ``` dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical _id: 1 @@ -100,17 +99,17 @@ email: incognitoguy50@gmail.com ``` ### コンテンツの挿入 -データベースのクエリを実行することで、**列の名前**を知ることができます。その後、DBにデータを挿入することができます。 +データベースをクエリすると、**列の名前**を知ることができ、その後、DBにデータを挿入できる可能性があります: ![](<../../../.gitbook/assets/image (188) (1).png>) ![](<../../../.gitbook/assets/image (189) (1).png>) -_挿入と更新では、--stringを使用して文字列を指定し、--doubleを使用して倍精度浮動小数点数を指定し、--float、--integer、--long、--short、--booleanを使用することができます。_ +_挿入と更新では、--stringを文字列を示すために使用し、--doubleをダブルを示すために使用し、--float、--integer、--long、--short、--booleanを使用できます_ ### コンテンツの更新 -列の名前を知っている場合、エントリを**変更**することもできます。 +列の名前を知っていると、**エントリを変更**することもできます: ![](<../../../.gitbook/assets/image (190).png>) @@ -120,12 +119,12 @@ _挿入と更新では、--stringを使用して文字列を指定し、--double ### **SQLインジェクション** -コンテンツプロバイダに渡される**プロジェクション**と**選択フィールド**を操作することで、SQLインジェクション**(SQLite)**を簡単にテストすることができます。\ -コンテンツプロバイダをクエリする際には、情報を検索するための2つの興味深い引数があります: _--selection_ と _--projection_: +コンテンツプロバイダに渡される**プロジェクション**と**選択フィールド**を操作することで、SQLインジェクション**(SQLite)**を簡単にテストできます。\ +コンテンツプロバイダをクエリする際に、情報を検索するための興味深い引数が2つあります:_--selection_ と _--projection_: ![](<../../../.gitbook/assets/image (192) (1).png>) -これらの**パラメータ**を悪用して、SQLインジェクションをテストすることができます。 +これらの**パラメータ**を**濫用**して**SQLインジェクション**をテストできます: ``` dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'" unrecognized token: "')" (code 1): , while compiling: SELECT * FROM Passwords WHERE (') @@ -138,27 +137,7 @@ FROM SQLITE_MASTER WHERE type='table';--" | table | android_metadata | android_metadata | 3 | CREATE TABLE ... | | table | Passwords | Passwords | 4 | CREATE TABLE ... | ``` -**Drozerによる自動SQLインジェクションの発見** - -Drozer is an Android security assessment framework that allows you to find vulnerabilities in Android applications. One of the techniques it supports is automatic SQL injection discovery. - -Drozerは、Androidアプリケーションの脆弱性を見つけるためのAndroidセキュリティ評価フレームワークです。その中でサポートされているテクニックの一つが、自動SQLインジェクションの発見です。 - -SQL injection is a common vulnerability in web applications, but it can also affect Android applications that use SQLite databases. By injecting malicious SQL queries, an attacker can manipulate the database and potentially gain unauthorized access to sensitive information. - -SQLインジェクションは、ウェブアプリケーションにおける一般的な脆弱性ですが、SQLiteデータベースを使用するAndroidアプリケーションにも影響を与えることがあります。攻撃者は、悪意のあるSQLクエリを注入することで、データベースを操作し、機密情報への不正アクセスを行う可能性があります。 - -Drozer's SQL injection module automates the process of finding SQL injection vulnerabilities in Android applications. It does this by analyzing the application's content providers, which are components that allow data to be shared between different applications. By sending specially crafted queries to these content providers, Drozer can detect if the application is vulnerable to SQL injection attacks. - -DrozerのSQLインジェクションモジュールは、AndroidアプリケーションにおけるSQLインジェクションの脆弱性を自動的に見つけるプロセスを実現します。これは、データを異なるアプリケーション間で共有するためのコンポーネントであるコンテンツプロバイダを分析することによって行われます。特別に作成されたクエリをこれらのコンテンツプロバイダに送信することで、DrozerはアプリケーションがSQLインジェクション攻撃に対して脆弱であるかどうかを検出することができます。 - -To use Drozer's SQL injection module, you need to have a rooted Android device and the Drozer agent installed on it. Once you have set up the environment, you can use the `sqlinjection` command in Drozer to automatically scan an application for SQL injection vulnerabilities. - -DrozerのSQLインジェクションモジュールを使用するには、ルート化されたAndroidデバイスとDrozerエージェントのインストールが必要です。環境をセットアップしたら、Drozerの`sqlinjection`コマンドを使用して、SQLインジェクションの脆弱性を自動的にスキャンすることができます。 - -It is important to note that the SQL injection module in Drozer is a powerful tool, but it should only be used on applications that you have permission to test. Using it on unauthorized applications can be illegal and unethical. - -DrozerのSQLインジェクションモジュールは強力なツールですが、テストの許可を得たアプリケーションにのみ使用する必要があります。許可されていないアプリケーションで使用することは違法であり、倫理的にも問題があります。 +**Drozerによる自動SQLInjectionの発見** ``` dz> run scanner.provider.injection -a com.mwr.example.sieve Scanning com.mwr.example.sieve... @@ -178,51 +157,27 @@ android_metadata notes sqlite_sequence ``` -## **ファイルシステムをバックエンドとしたコンテンツプロバイダー** +## **ファイルシステムベースのコンテンツプロバイダ** -コンテンツプロバイダーは、ファイルにアクセスするためにも使用できます。 +コンテンツプロバイダはファイルにアクセスするためにも使用できます: ![](<../../../.gitbook/assets/image (193).png>) ### ファイルの読み取り -コンテンツプロバイダーからファイルを読み取ることができます。 +コンテンツプロバイダからファイルを読み取ることができます ``` dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts 127.0.0.1 localhost ``` ### **パストラバーサル** -ファイルにアクセスできる場合、パストラバーサルを悪用することができます(この場合、必要ではありませんが、"_../_"や類似のトリックを試すことができます)。 +ファイルにアクセスできる場合、パストラバーサルを悪用することができます(この場合、必須ではありませんが、"_../_"などのトリックを試すことができます)。 ``` dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts 127.0.0.1 localhost ``` **Drozerによる自動パストラバーサルの発見** - -Drozer is an Android security assessment framework that allows us to perform various security tests on Android applications. One of the features of Drozer is the ability to automatically discover Path Traversal vulnerabilities in Android applications. - -Drozerは、Androidアプリケーションに対してさまざまなセキュリティテストを実行することができるAndroidセキュリティ評価フレームワークです。Drozerの特徴の一つは、Androidアプリケーション内のパストラバーサル脆弱性を自動的に発見する機能です。 - -Path Traversal vulnerabilities occur when an application allows user-controlled input to be used in file or directory paths without proper validation. This can lead to unauthorized access to sensitive files or directories on the device. - -パストラバーサル脆弱性は、アプリケーションが適切な検証を行わずに、ユーザーが制御可能な入力をファイルやディレクトリのパスに使用する場合に発生します。これにより、デバイス上の機密ファイルやディレクトリへの不正なアクセスが可能になります。 - -To automatically discover Path Traversal vulnerabilities using Drozer, we can use the `path_traversal` module. This module sends various requests with different path traversal payloads to the target application and checks for any unexpected responses. - -Drozerを使用してパストラバーサル脆弱性を自動的に発見するには、`path_traversal`モジュールを使用します。このモジュールは、さまざまなパストラバーサルペイロードを含むリクエストを対象のアプリケーションに送信し、予期しない応答があるかどうかを確認します。 - -To use the `path_traversal` module, we need to first start a Drozer session with the target application. Once the session is established, we can run the `path_traversal` module using the `run` command. - -`path_traversal`モジュールを使用するには、まず対象のアプリケーションでDrozerセッションを開始する必要があります。セッションが確立されたら、`run`コマンドを使用して`path_traversal`モジュールを実行できます。 - -The `path_traversal` module will automatically send requests to the target application with different path traversal payloads. If a Path Traversal vulnerability is found, Drozer will display the details of the vulnerability, including the affected endpoint and the payload that triggered the vulnerability. - -`path_traversal`モジュールは、異なるパストラバーサルペイロードを含むリクエストを対象のアプリケーションに自動的に送信します。パストラバーサル脆弱性が見つかった場合、Drozerは脆弱性の詳細を表示します。これには、影響を受けるエンドポイントと脆弱性を引き起こしたペイロードが含まれます。 - -It is important to note that the `path_traversal` module may generate a large number of requests, so it is recommended to use it with caution and only on applications that you have permission to test. - -`path_traversal`モジュールは、大量のリクエストを生成する場合があるため、注意して使用し、テストの許可を得ているアプリケーションにのみ使用することをおすすめします。 ``` dz> run scanner.provider.traversal -a com.mwr.example.sieve Scanning com.mwr.example.sieve... @@ -234,15 +189,18 @@ content://com.mwr.example.sieve.FileBackupProvider * [https://www.tutorialspoint.com/android/android\_content\_providers.htm](https://www.tutorialspoint.com/android/android\_content\_providers.htm) * [https://manifestsecurity.com/android-application-security-part-15/](https://manifestsecurity.com/android-application-security-part-15/) +* [https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf)
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ -* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** +HackTricks をサポートする他の方法: + +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに **PRを提出** して、あなたのハッキングトリックを共有する
diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md index 6f2e202eb..f3b24ba29 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md @@ -1,76 +1,73 @@ -# Fridaチュートリアル +# Frida チュートリアル
-AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 -* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で私をフォローする [**@carlospolopm**](https://twitter.com/carlospolopm)**。** +* **ハッキングテクニックを共有する** には、[**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出してください。
-**バグバウンティのヒント**: **Intigriti**に**登録する**、ハッカーによって作られたプレミアムな**バグバウンティプラットフォーム**!今日[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得し始めましょう! +**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムなバグバウンティプラットフォーム**である **Intigriti にサインアップ** してください! [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ参加し、最大 **$100,000** のバウンティを獲得し始めましょう! {% embed url="https://go.intigriti.com/hacktricks" %} ## インストール -**fridaツール**をインストールする: +**frida ツールをインストール**: ```bash pip install frida-tools pip install frida ``` -**Androidにダウンロードしてインストール**する**frida server**([最新リリースをダウンロード](https://github.com/frida/frida/releases))。\ -adbをrootモードで再起動し、それに接続してfrida-serverをアップロードし、実行権限を与えてバックグラウンドで実行するワンライナー: +**frida server**([最新リリースをダウンロード](https://github.com/frida/frida/releases))をAndroidに**ダウンロードしてインストール**します。\ +ルートモードでadbを再起動し、接続し、frida-serverをアップロードし、実行権限を付与してバックグラウンドで実行するためのワンライナー: {% code overflow="wrap" %} ```bash adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local/tmp/; adb shell "chmod 755 /data/local/tmp/frida-server"; adb shell "/data/local/tmp/frida-server &" ``` -``` {% endcode %} -**動作確認**: -``` +**動作しているか**を**確認**します: ```bash frida-ps -U #List packages and processes frida-ps -U | grep -i #Get all the package name ``` ## チュートリアル -### [チュートリアル 1](frida-tutorial-1.md) +### [チュートリアル1](frida-tutorial-1.md) -**出典**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ +**元**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ **APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\ **ソースコード**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo) -[リンクを読む](frida-tutorial-1.md)。 +**[リンクをクリックして読む](frida-tutorial-1.md)。** -### [チュートリアル 2](frida-tutorial-2.md) +### [チュートリアル2](frida-tutorial-2.md) -**出典**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (パート 2, 3 & 4)\ +**元**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\ **APKとソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) -[リンクを読む](frida-tutorial-2.md)。 +**[リンクをクリックして読む。](frida-tutorial-2.md)** -### [チュートリアル 3](owaspuncrackable-1.md) +### [チュートリアル3](owaspuncrackable-1.md) -**出典**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ +**元**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ **APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk) -[リンクを読む](owaspuncrackable-1.md)。\ -**いくつかの素晴らしいFridaスクリプトはこちらで見つけることができます:** [**https://codeshare.frida.re/**](https://codeshare.frida.re) +**[リンクをクリックして読む](owaspuncrackable-1.md)。** -## 簡単な例 +**さらに素晴らしいFridaスクリプトはこちらで見つけることができます:** [**https://codeshare.frida.re/**](https://codeshare.frida.re) -ここでは、Fridaの基本的で興味深い機能を使って、素早くスクリプトを作成する方法を見つけることができます: +## クイック例 ### コマンドラインからFridaを呼び出す ```bash @@ -96,7 +93,7 @@ print('[ * ] Running Frida Demo application') script.load() sys.stdin.read() ``` -### パラメーターなしの関数のフッキング +### パラメーターなしで関数をフックする クラス `sg.vantagepoint.a.c` の関数 `a()` をフックします。 ```javascript @@ -108,8 +105,10 @@ return false; }; }); ``` -```markdown -Javaの`exit()`をフックする +Javaの`exit()`をフックします。 + +```java +Javaの`exit()`をフックします。 ``` ```javascript var sysexit = Java.use("java.lang.System"); @@ -117,7 +116,35 @@ sysexit.exit.overload("int").implementation = function(var_0) { send("java.lang.System.exit(I)V // We avoid exiting the application :)"); }; ``` -MainActivity `.onStart()` と `.onCreate()` をフック +## MainActivity `.onStart()` & `.onCreate()` フック + +Fridaを使用して、AndroidアプリのMainActivityクラス内の`.onStart()`および`.onCreate()`メソッドをフックする方法を以下に示します。 + +1. Fridaスクリプトを作成します。 + +```javascript +Java.perform(function() { + var MainActivity = Java.use('com.example.app.MainActivity'); + + MainActivity.onStart.implementation = function() { + console.log('onStart() called'); + this.onStart(); + }; + + MainActivity.onCreate.implementation = function() { + console.log('onCreate() called'); + this.onCreate(); + }; +}); +``` + +2. Fridaを使用してアプリにスクリプトをインジェクトします。 + +```bash +frida -U -l your_script.js -f com.example.app +``` + +これにより、MainActivity内の`.onStart()`および`.onCreate()`メソッドがフックされ、それぞれ呼び出された際にログが出力されます。 ```javascript var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity"); mainactivity.onStart.overload().implementation = function() { @@ -129,7 +156,17 @@ send("MainActivity.onCreate() HIT!!!"); var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0); }; ``` -# Android `.onCreate()` フック +Androidの`.onCreate()`をフックします。 + +```java +Java.perform(function() { + var Activity = Java.use('android.app.Activity'); + Activity.onCreate.implementation = function() { + this.onCreate(); + console.log('onCreate() hooked'); + }; +}); +``` ```javascript var activity = Java.use("android.app.Activity"); activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) { @@ -137,9 +174,9 @@ send("Activity HIT!!!"); var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0); }; ``` -### パラメータを持つ関数のフッキングと値の取得 +### パラメータと値の取得を伴う関数のフック -復号化関数をフッキングします。入力を印刷し、元の関数を呼び出して入力を復号化し、最後に平文データを印刷します: +復号化関数のフック。入力をプリントし、元の関数を呼び出して入力を復号化し、最後に平文データをプリントします: ```javascript function getString(data){ var ret = ""; @@ -164,9 +201,9 @@ send("Decrypted flag: " + flag); return ret; //[B }; ``` -### 関数をフックして、自分の入力で呼び出す +### 関数をフックして、私たちの入力でそれらを呼び出す -文字列を受け取る関数をフックし、別の文字列で呼び出します([こちら](https://11x256.github.io/Frida-hooking-android-part-2/)から)。 +関数をフックして、他の文字列でそれを呼び出します([こちら](https://11x256.github.io/Frida-hooking-android-part-2/)から) ```javascript var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class @@ -178,11 +215,11 @@ console.log("Return value: "+ret); return ret; }; ``` -### 既に作成されたクラスのオブジェクトを取得する +### クラスの既存オブジェクトを取得する -作成されたオブジェクトの属性を抽出したい場合は、これを使用できます。 +作成済みオブジェクトの属性を抽出したい場合は、これを使用できます。 -この例では、クラス my\_activity のオブジェクトを取得し、オブジェクトのプライベート属性を表示する関数 .secret() を呼び出す方法を見ていきます。 +この例では、クラスmy_activityのオブジェクトを取得し、オブジェクトのプライベート属性を出力する.secret()関数を呼び出す方法を示します。 ```javascript Java.choose("com.example.a11x256.frida_test.my_activity" , { onMatch : function(instance){ //This function will be called for every instance found by frida @@ -192,29 +229,29 @@ console.log("Result of secret func: " + instance.secret()); onComplete:function(){} }); ``` -## その他のFridaチュートリアル +## 他のFridaチュートリアル * [https://github.com/DERE-ad2001/Frida-Labs](https://github.com/DERE-ad2001/Frida-Labs) -* [高度なFrida使用法ブログシリーズのパート1: IOS暗号化ライブラリ](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/) +* [高度なFridaの使用法ブログシリーズのパート1:IOS暗号化ライブラリ](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
-**バグバウンティのヒント**: **Intigriti**に**登録**しましょう。ハッカーによって作られたプレミアムな**バグバウンティプラットフォーム**です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で今日から参加し、最大**$100,000**の報酬を獲得しましょう! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %}
-htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローになる方法を学びましょう ! +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)! HackTricksをサポートする他の方法: -* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをチェックしましょう -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。 -* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有**してください。 +* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけてください +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md index 866a298e3..650a073b9 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md @@ -2,31 +2,33 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学びましょう -* **サイバーセキュリティ会社**で働いていますか?**HackTricksで会社の広告を掲載**したいですか?または、**最新版のPEASSを入手**したり、**HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。 -* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加するか**、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** -* **ハッキングのコツを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** +HackTricks をサポートする他の方法: + +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) をフォローする +* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出する
-
+
-**ハッキングのキャリア**に興味があり、ハッキング不可能なものをハックしたい方 - **採用中です!** (_流暢なポーランド語の読み書きと会話が必要です_). +**ハッキングキャリア**に興味がある方や **解読不能なものをハック** したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} -**出典**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ +**この投稿の要約**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ **APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\ **ソースコード**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo) ## Python -Fridaを使用すると、実行中のアプリケーションの関数内に**JavaScriptコードを挿入**できます。しかし、**python**を使用して**フックを呼び出す**ことも、**フックと対話する**こともできます。 +Frida は、実行中のアプリケーションの関数に **JavaScript コードを挿入** することができます。しかし、**python** を使用して **hooks を呼び出したり**、**hooks とやり取りしたり**することもできます。 -これは、このチュートリアルで提案されているすべての例で使用できる簡単なpythonスクリプトです: +この簡単な python スクリプトは、このチュートリアルで提案されているすべての例に使用できます: ```python #hooking.py import frida, sys @@ -39,17 +41,17 @@ print('[ * ] Running Frida Demo application') script.load() sys.stdin.read() ``` -スクリプトを呼び出す: +スクリプトを呼び出す: ```bash python hooking.py ``` -Pythonを使ってFridaを操作する方法を知っておくと便利ですが、この例ではコマンドラインのFridaツールを直接呼び出すこともできます: +PythonをFridaと一緒に使う方法を知っていると便利ですが、この例ではコマンドラインのfridaツールを直接呼び出すこともできます。 ```bash frida -U --no-pause -l hookN.js -f infosecadventures.fridademo ``` -## フック1 - ブール値バイパス +## フック1 - ブールバイパス -ここでは、クラス _infosecadventures.fridademo.utils.PinUtil_ から **ブール** メソッド (_checkPin_) を**フック**する方法を見ることができます。 +ここでは、クラス: _infosecadventures.fridademo.utils.PinUtil_ から **boolean** メソッド (_checkPin_) を **hook** する方法が示されています。 ```javascript //hook1.js Java.perform(function() { @@ -65,14 +67,12 @@ return true; ``` python hooking.py hook1.js ``` -注目:関数はStringをパラメータとして受け取ります。オーバーロードは必要ありませんか? - -## フック 2 - 関数ブルートフォース +## フック2 - 関数ブルートフォース ### 非静的関数 -クラスの非静的関数を呼び出したい場合、**まずそのクラスのインスタンスが必要**です。そのインスタンスを使用して関数を呼び出すことができます。\ -それを行うには、**既存のインスタンスを見つけて**使用することができます: +クラスの非静的関数を呼び出したい場合、**まずそのクラスのインスタンス**が必要です。その後、そのインスタンスを使用して関数を呼び出すことができます。\ +そのためには、**既存のインスタンスを見つけて**使用することができます。 ```javascript Java.perform(function() { console.log("[ * ] Starting PIN Brute-force, please wait..."); @@ -90,11 +90,9 @@ onComplete: function() { } }); }); ``` -この場合、インスタンスが存在せず、関数がStaticであるため、機能しません。 +### 静的関数 -### Static関数 - -関数がstaticである場合、単に呼び出すことができます: +関数が静的である場合、それを単純に呼び出すことができます: ```javascript //hook2.js Java.perform(function () { @@ -111,7 +109,7 @@ console.log("[ + ] Found correct PIN: " + i); ``` ## フック3 - 引数と戻り値の取得 -関数をフックして、**渡された引数**と**戻り値**の値を**表示**させることができます: +関数をフックして、**渡された引数**と**戻り値**の値を**出力**することができます。 ```javascript //hook3.js Java.perform(function() { @@ -129,26 +127,26 @@ return encrypted_ret; ``` ## 重要 -このチュートリアルでは、メソッドの名前と _.implementation_ を使用してメソッドをフックしました。しかし、同じ名前の**複数のメソッドがある場合**は、**引数のタイプを指定して**フックしたいメソッドを**指定する必要があります**。 +このチュートリアルでは、メソッドの名前と`_.implementation_`を使用してフックした。しかし、同じ名前の**複数のメソッド**がある場合は、フックしたいメソッドを**引数のタイプを示して指定する必要がある**。 -それは[次のチュートリアル](frida-tutorial-2.md)で確認できます。 +次のチュートリアルでそれを見ることができる。 +
- -
- -**ハッキングのキャリア**に興味があり、ハッカブルではないものをハックしたい方 - **採用情報!** (_流暢なポーランド語の読み書きが必要です_). +**ハッキングのキャリア**に興味がある方や、解読不能なものをハックしたい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %}
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! -* **サイバーセキュリティ会社**で働いていますか? **HackTricksに会社の広告を掲載**したいですか?または、**最新版のPEASSを入手**したり、**HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。 -* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加するか**、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** -* **ハッキングのコツを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) と [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) にPRを提出してください。** +HackTricksをサポートする他の方法: + +* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。
diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md index 32165c273..175b82a7e 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md @@ -7,8 +7,8 @@ * **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**してみたいですか?または、**PEASS の最新バージョンを入手したり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください * [**公式 PEASS & HackTricks スウェグ**](https://peass.creator-spring.com) を手に入れましょう -* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。** -* **ハッキングトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください。 +* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください** +* **ハッキングテクニックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください @@ -18,15 +18,17 @@ {% embed url="https://www.stmcyber.com/careers" %} -**From**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/)(パート 2、3、4)\ -**APK およびソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) +**この記事の要約**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/)(Part 2、3、4)\ +**APK とソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) -パート 1 は非常に簡単です。 +Part 1 は非常に簡単です。 -## パート 2 +**オリジナルコードの一部が機能しないため、ここで修正されています。** -ここでは、**同じ名前の関数をフックする例**と、異なるパラメータを持つ関数をフックする方法を示します。\ -また、**独自のパラメータで関数を呼び出す方法**を学びます。\ +## Part 2 + +ここでは、**同じ名前の関数をフックする例**と、異なるパラメータを持つ関数をフックする方法を見ることができます。\ +また、**独自のパラメータで関数を呼び出す方法**を学ぶことができます。\ 最後に、**クラスのインスタンスを見つけ、その関数を呼び出す方法**の例があります。 ```javascript //s2.js @@ -122,7 +124,7 @@ script.exports.hooksecretfunction() ``` コマンド "**1**" は**終了**します、コマンド "**2**" は**クラスのインスタンスを見つけてプライベート関数** _**secret()**_ **を呼び出し**、コマンド "**3**" は関数 _**secret()**_ を**フック**して**異なる文字列**を**返す**ようにします。 -したがって、"**2**" を呼び出すと**実際の秘密**が表示されますが、"**3**" を呼び出してから "**2**" を呼び出すと**偽の秘密**が表示されます。 +その後、"**2**" を呼び出すと**実際の秘密**が表示されますが、"**3**" を呼び出してから "**2**" を呼び出すと**偽の秘密**が表示されます。 ### JS ```javascript @@ -218,7 +220,7 @@ return this.setText(string_to_recv); } }); ``` -部分5は新しい情報がないため、説明はしませんが、読みたい場合はこちらから: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/) +Part 5の説明は新しい情報がないため説明しませんが、読みたい場合はこちらから: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/) @@ -235,7 +237,7 @@ return this.setText(string_to_recv); * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。 +* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。 diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md index 3f7daa32f..36ac80a42 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md @@ -1,44 +1,44 @@ -# Objectionチュートリアル +# Objection チュートリアル
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ -* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** +HackTricks をサポートする他の方法: + +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) をフォローする +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出してください。
-**バグバウンティのヒント**:**Intigritiに登録**してください。ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! +**バグバウンティのヒント**: **Intigriti にサインアップ**してください。これは、ハッカーによって作成されたプレミアム **バグバウンティプラットフォーム**です!今すぐ [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) に参加して、最大 **$100,000** のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} ## **はじめに** -[![objection](https://github.com/sensepost/objection/raw/master/images/objection.png)](https://github.com/sensepost/objection) - **objection - ランタイムモバイルエクスプロレーション** -`objection`は、[Frida](https://www.frida.re)を搭載したランタイムモバイルエクスプロレーションツールキットです。このツールは、脱獄またはルート化されたモバイルデバイスの必要性なしに、モバイルアプリケーションとそのセキュリティポストを評価するのに役立つことを目的として構築されました。 +**[Objection](https://github.com/sensepost/objection)** は、[Frida](https://www.frida.re) によって動作するランタイムモバイルエクスプロレーションツールキットです。このツールは、脱獄またはルート化されたモバイルデバイスの必要性なしに、モバイルアプリケーションとそのセキュリティポジションを評価するのを支援することを目的として構築されました。 -**注意:**これはある種のジェイルブレイク/ルートバイパスではありません。`objection`を使用することで、対象となるサンドボックスによって課される制限に制約されます。 +**注意:** これはある種のジェイルブレイク/ルートバイパスではありません。`objection` を使用することで、対面している適用されるサンドボックスによって課せられるすべての制限に制約されます。 ### 再開 -**objection**の目標は、ユーザーが**Fridaが提供する主要なアクションを呼び出すこと**です。**そうでない場合**、テストしたい**各アプリケーションごとに単一のスクリプトを作成する必要があります**。 +**objection** の目標は、ユーザーが **Frida が提供する主要なアクションを呼び出すこと** です。**そうでない場合**、ユーザーは **テストしたい各アプリケーションごとに単一のスクリプトを作成する必要があります**。 ## チュートリアル -このチュートリアルでは、ここからダウンロードできるAPKを使用します: +このチュートリアルでは、こちらからダウンロードできる APK を使用します: {% file src="../../../.gitbook/assets/app-release.zip" %} -または、[元のリポジトリ](https://github.com/asvid/FridaApp)からダウンロードしてください(app-release.apkをダウンロード) +または、[元のリポジトリ](https://github.com/asvid/FridaApp) からダウンロードできます(app-release.apk をダウンロード)。 ### インストール ```bash @@ -46,39 +46,26 @@ pip3 install objection ``` ### 接続 -通常のADB接続を作成し、デバイスで**frida**サーバーを**起動**します(クライアントとサーバーの両方でfridaが動作していることを確認します)。 +**通常のADB接続**を作成し、デバイスで**frida**サーバーを**起動**します(クライアントとサーバーの両方でfridaが動作していることを確認します)。 -**ルート化されたデバイス**を使用している場合、テストしたいアプリケーションを_**--gadget**_オプションで選択する必要があります。この場合は、以下のようになります: +**root化されたデバイス**を使用している場合、テストしたいアプリケーションを_**--gadget**_オプション内で選択する必要があります。この場合は次のようにします: ```bash frida-ps -Uai objection --gadget asvid.github.io.fridaapp explore ``` ### 基本的なアクション -このチュートリアルでは、objectionの可能なすべてのコマンドをリストアップするわけではありません。代わりに、私がより有用と考えるものだけを紹介します。 +このチュートリアルでは、objectionのすべての可能なコマンドがリストされるわけではありません。代わりに、より便利だと思われるもののみがリストされます。 #### 環境 -環境内には、パスワードやパスなどの興味深い情報が含まれている場合があります。 +環境内には、パスワードやパスなどの興味深い情報が含まれている可能性があります。 ```bash env ``` -![](<../../../.gitbook/assets/image (64).png>) - #### Fridaの情報 -Frida is a dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers. It allows you to inject JavaScript code into native apps on Windows, macOS, Linux, iOS, and Android. With Frida, you can dynamically analyze and modify the behavior of an app at runtime. - -Frida provides a high-level API that simplifies the process of injecting code into an app. It also includes a command-line tool called `frida-cli` that allows you to interact with Frida from the command line. - -Frida can be used for various purposes, including: - -- Dynamic analysis: Frida allows you to inspect and modify the runtime behavior of an app, making it useful for tasks such as debugging, tracing function calls, and monitoring network traffic. -- Code injection: Frida enables you to inject custom JavaScript code into an app, allowing you to hook functions, intercept method calls, and modify data on the fly. -- Exploit development: Frida can be used to aid in the development of exploits by providing a powerful platform for analyzing and manipulating the runtime environment of an app. -- Reverse engineering: Frida helps in reverse engineering by allowing you to trace and analyze the execution flow of an app, inspecting memory, and identifying vulnerabilities. - -Frida supports both iOS and Android platforms, making it a versatile tool for mobile app pentesting. In this tutorial, we will focus on using Frida for Android app pentesting. +Fridaは、動的なインストルメントツールキットであり、アプリケーションのランタイム動作を監視、操作するために使用されます。 Fridaは、JavaScriptを使用してアプリケーションのランタイムにアクセスし、様々なセキュリティテストやペネトレーションテストに役立ちます。Fridaは、iOS、Android、Windows、macOSなど、さまざまなプラットフォームで使用できます。 ```bash frida ``` @@ -90,116 +77,19 @@ file download [] file upload [] ``` #### Fridaスクリプトのインポート - -```javascript -const { spawn } = require('child_process'); -const fridaScriptPath = '/path/to/frida_script.js'; - -// Spawn the frida command with the script -const fridaProcess = spawn('frida', ['-U', '-f', 'com.example.app', '-l', fridaScriptPath]); - -// Handle frida process events -fridaProcess.stdout.on('data', (data) => { - console.log(`[Frida Process] ${data}`); -}); - -fridaProcess.stderr.on('data', (data) => { - console.error(`[Frida Process Error] ${data}`); -}); - -fridaProcess.on('close', (code) => { - console.log(`[Frida Process Closed] Exit code: ${code}`); -}); -``` - -Fridaスクリプトをインポートするために、上記のコードを使用します。`fridaScriptPath`には、Fridaスクリプトのパスを指定します。`com.example.app`は、対象のAndroidアプリのパッケージ名です。 - -このコードでは、`spawn`関数を使用してfridaコマンドを実行し、Fridaスクリプトを指定しています。`fridaProcess`は、Fridaプロセスを表すオブジェクトです。 - -Fridaプロセスのイベントを処理するために、`stdout`、`stderr`、`close`イベントのリスナーを設定しています。`stdout`イベントでは、標準出力に出力されたデータを表示します。`stderr`イベントでは、エラーメッセージを表示します。`close`イベントでは、Fridaプロセスの終了コードを表示します。 ```bash import ``` #### SSLピニング - -SSLPinningは、Androidアプリのセキュリティ機能の1つであり、通信のセキュリティを強化するために使用されます。通常、アプリはSSL証明書の検証を行い、信頼できる証明書局(CA)によって署名された証明書を使用して通信を暗号化します。しかし、攻撃者が中間者攻撃を行い、通信を傍受しようとする場合、SSLピニングは攻撃を防ぐために役立ちます。 - -SSLピニングをバイパスするためには、FridaとObjectionを使用することができます。Objectionは、Fridaフレームワークを使用してアプリのランタイムを操作するためのツールです。以下の手順に従って、Objectionを使用してSSLピニングをバイパスする方法を学びましょう。 - -1. Objectionをインストールします。 - - ``` - $ pip install objection - ``` - -2. Objectionを起動します。 - - ``` - $ objection - ``` - -3. デバイスに接続します。 - - ``` - android connect - ``` - -4. アプリのパッケージ名を指定してアプリを起動します。 - - ``` - android hooking start --package - ``` - -5. SSLピニングをバイパスするためのフックを追加します。 - - ``` - android sslpinning bypass - ``` - -これで、Objectionを使用してSSLピニングをバイパスする準備が整いました。これにより、アプリが信頼できる証明書のみを使用する必要がなくなり、中間者攻撃を防ぐことができます。ただし、これはセキュリティ上のリスクを伴うため、慎重に使用する必要があります。 ```bash android sslpinning disable #Attempts to disable SSL Pinning on Android devices. ``` #### ルート検出 - -Root検出は、Androidアプリがルート化されたデバイス上で実行されているかどうかを検出するための技術です。ルート化されたデバイスでは、アプリが通常よりも高い特権を持つことができ、セキュリティ上のリスクが増加します。アプリ開発者は、ルート化されたデバイス上でアプリが実行されることを防ぐために、ルート検出を実装することがあります。 - -ルート検出はさまざまな方法で実装することができます。一般的な方法には、ファイルの存在、システムプロパティの値、特定のコマンドの実行結果などをチェックする方法があります。アプリがこれらのチェックに合格しない場合、ルート化されたデバイス上で実行されている可能性が高いと判断されます。 - -ルート検出を回避するためには、フリーダやObjectionなどのツールを使用して、ルート検出に関連するコードやチェックをバイパスすることができます。これにより、ルート化されたデバイス上でアプリを実行することができますが、セキュリティ上のリスクが増加するため、慎重に使用する必要があります。 - -以下のコマンドを使用して、Objectionを使用したルート検出のバイパスを実行することができます。 - -```shell -$ objection android patchapk --source /path/to/app.apk --template /path/to/template.apk -``` - -このコマンドは、指定したAPKファイルのルート検出をバイパスするために、Objectionを使用してパッチを適用します。パッチされたAPKファイルは、ルート検出を回避して実行することができます。 - -ルート検出は、アプリのセキュリティを向上させるために重要な手法ですが、ハッカーはこれを回避するための手法を持っているため、単一のセキュリティ対策としては十分ではありません。アプリのセキュリティを確保するためには、ルート検出以外のセキュリティ対策も併用する必要があります。 ```bash android root disable #Attempts to disable root detection on Android devices. android root simulate #Attempts to simulate a rooted Android environment. ``` -#### Execコマンド - -The `exec` command in objection allows you to execute arbitrary shell commands on the target Android device. This can be useful for various purposes, such as exploring the device's file system, running custom scripts, or interacting with other installed applications. - -To use the `exec` command, you need to specify the command you want to execute as an argument. For example, to list the files in the current directory, you can use the following command: - -``` -objection> exec ls -``` - -You can also pass additional arguments to the command by enclosing them in quotes. For example, to list all files in a specific directory, you can use the following command: - -``` -objection> exec ls "/sdcard" -``` - -Keep in mind that the `exec` command runs the specified shell command as the user running the target application. Therefore, the command's permissions and access to files will be limited to what the application can do. - -It's important to use the `exec` command responsibly and avoid executing malicious commands that could harm the target device or violate any laws or regulations. Always ensure that you have proper authorization and legal permission before performing any actions on a target device. +#### 実行コマンド ```bash android shell_exec whoami ``` @@ -210,99 +100,101 @@ android ui FLAG_SECURE false #This may enable you to take screenshots using the ``` ### 静的解析を動的に行う -実際のアプリケーションでは、**静的解析**によってこの部分で発見された情報をすべて把握してから、objectionを使用する必要があります。とはいえ、ここではクラス、メソッド、およびエクスポートされたオブジェクトの完全なリストしか得られませんので、**新しい情報**が見つかるかもしれません。 +実際のアプリケーションでは、**静的解析**に感謝してobjectionを使用する前に、この部分で発見されたすべての情報を知っておく必要があります。とにかく、ここではクラス、メソッド、エクスポートされたオブジェクトの完全なリストしかありませんが、**新しい情報**が見つかるかもしれません。 -また、アプリの**読みやすいソースコードを入手できない**場合にも役立ちます。 +これはまた、アプリの**いくつかの読みやすいソースコードを取得できない**場合に役立ちます。 -#### アクティビティ、レシーバ、およびサービスのリストを表示する -``` +#### アクティビティ、レシーバ、およびサービスのリスト +```bash android hooking list activities ``` ![](<../../../.gitbook/assets/image (78).png>) -``` +```bash android hooking list services android hooking list receivers ``` -Fridaは、見つからない場合にエラーを発生させます。 +#### 現在のアクティビティの取得 -#### 現在のアクティビティを取得する -``` +Fridaは、何も見つからない場合にエラーを発生させます +```bash android hooking get current_activity ``` +![](<../../../.gitbook/assets/image (73) (1).png>) + #### クラスの検索 -アプリケーション内のクラスを検索しましょう。 -``` +アプリケーション内のクラスを検索しましょう +```bash android hooking search classes asvid.github.io.fridaapp ``` ![](<../../../.gitbook/assets/image (69).png>) #### クラスの検索方法 -では、クラス_MainActivity_内のメソッドを抽出してみましょう。 -``` +次に、_MainActivity:_ クラス内のメソッドを抽出します。 +```bash android hooking search methods asvid.github.io.fridaapp MainActivity ``` ![](<../../../.gitbook/assets/image (70) (1).png>) -#### クラスの宣言されたメソッドとそのパラメータの一覧 +#### クラスの宣言されたメソッドとそのパラメーターのリスト -クラスのメソッドがどのようなパラメータを必要とするかを調べましょう: -``` +クラスのメソッドがどのようなパラメーターが必要かを把握しましょう: +```bash android hooking list class_methods asvid.github.io.fridaapp.MainActivity ``` ![](<../../../.gitbook/assets/image (79).png>) -#### クラスの一覧表示 +#### クラスのリスト -現在のアプリケーション内でロードされたすべてのクラスを一覧表示することもできます。 -``` +現在のアプリケーション内でロードされたすべてのクラスをリストアップすることもできます。 +```bash android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes. ``` -これは、クラスのメソッドをフックしたいが、クラスの名前しか知らない場合に非常に便利です。この関数を使用して、クラスを所有するモジュールを検索し、そのメソッドをフックすることができます。 +これは、クラスのメソッドをフックしたいがクラスの名前しかわからない場合に非常に便利です。この関数を使用して、クラスを所有するモジュールを検索し、そのメソッドをフックできます。 ### フックは簡単です #### メソッドのフック(監視) -アプリケーションの[ソースコード](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt)から、**MainActivity**の**_sum()_**関数が**1秒ごとに実行**されていることがわかります。関数が呼び出されるたびに(引数、戻り値、バックトレースを含む)**可能な情報をすべてダンプ**してみましょう。 -``` +アプリケーションの[ソースコード](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt)から、**_MainActivity_** の **_sum()_** 関数が **1秒ごとに実行** されていることがわかります。関数が呼び出されるたびに(引数、戻り値、およびバックトレースを含む)**すべての可能な情報をダンプ**してみましょう: +```bash android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return ``` ![](<../../../.gitbook/assets/image (71).png>) #### クラス全体のフック(監視) -実際には、MainActivityクラスのすべてのメソッドが非常に興味深いと思いますので、**すべてのメソッドをフック**してみましょう。ただし、これはアプリケーションを**クラッシュ**させる可能性があるため、注意が必要です。 -``` +実際には、MainActivityクラスのすべてのメソッドが本当に興味深いと思います。**すべてをフック**してみましょう。アプリケーションを**クラッシュ**させる可能性があるので注意してください。 +```bash android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return ``` -クラスがフックされている間にアプリケーションを操作すると、**各関数が呼び出されるタイミング**、その**引数**、および**戻り値**が表示されます。 +アプリケーションを操作すると、クラスがフックされているときに**各関数が呼び出される**タイミング、**引数**、および**戻り値**が表示されます。 ![](<../../../.gitbook/assets/image (72).png>) -#### 関数の真偽値の返り値を変更する +#### 関数の真偽値を変更する -ソースコードからわかるように、関数_checkPin_は引数として_String_を受け取り、_boolean_を返します。関数を**常にtrueを返すように**してみましょう: +ソースコードから、_checkPin_ 関数が _String_ を引数として受け取り、_boolean_ を返すことがわかります。この関数を**常に true を返すように**変更しましょう: ![](<../../../.gitbook/assets/image (74).png>) -これで、PINコードのテキストボックスに何かを入力すると、何でも有効であることがわかります: +これで、PIN コードのテキストボックスに何かを入力すると、何でも有効であることがわかります: ![](<../../../.gitbook/assets/image (77).png>) ### クラスのインスタンス -特定のJavaクラスの**ライブインスタンス**を検索し、指定された完全修飾クラス名で指定します。Outは、通常、オブジェクトのプロパティ値を**含む発見された異議に対して文字列値を取得しようとした結果**です。 +特定のJavaクラスの**ライブインスタンス**を検索して表示し、完全修飾クラス名で指定します。Out は、通常オブジェクトの**プロパティ値を含む発見されたObjectionの文字列値を取得しようとする試み**の結果です。 ``` android heap print_instances ``` ![](<../../../.gitbook/assets/image (80).png>) -### キーストア/インテント +### Keystore/Intents -キーストアとインテントを使用して遊ぶことができます。以下のコマンドを使用します。 -``` +キーストアとインテントを使用して遊ぶことができます: +```bash android keystore list android intents launch_activity android intent launch_service @@ -315,54 +207,36 @@ memory dump all #Dump all memory memory dump from_base #Dump a part ``` #### リスト -``` +```bash memory list modules ``` ![](<../../../.gitbook/assets/image (66).png>) -リストの一番下にはfridaが表示されています: +リストの一番下にはfridaが表示されます: ![](<../../../.gitbook/assets/image (67).png>) -fridaがエクスポートしているものを確認しましょう: +fridaがエクスポートしているものをチェックしましょう: ![](<../../../.gitbook/assets/image (68).png>) #### 検索/書き込み -objectionを使用してメモリ内で検索や書き込みもできます: -``` +Objectionを使用してメモリ内で検索や書き込みもできます: +```bash memory search "" (--string) (--offsets-only) memory write "
" "" (--string) ``` ### SQLite -SQLiteデータベースとのやり取りには、`sqlite`コマンドを使用できます。 +`sqlite`コマンドを使用してSQLiteデータベースとやり取りできます。 -### 終了 -``` +### Exit +```bash exit ``` -## Objectionで欠けているもの +## Objection で欠けているもの -* フックメソッドはアプリケーションをクラッシュさせることがあります(これはFridaのせいでもあります)。 +* フックメソッドは時々アプリケーションをクラッシュさせることがあります(これは Frida のせいでもあります)。 * クラスのインスタンスを使用してインスタンスの関数を呼び出すことはできません。また、新しいクラスのインスタンスを作成してそれらを使用して関数を呼び出すこともできません。 -* アプリケーションで使用されている一般的な暗号化メソッドをフックして、暗号化されたテキスト、平文、キー、IV、および使用されているアルゴリズムを表示するためのショートカット(sslpinninのようなもの)はありません。 - - - -**バグバウンティのヒント**:**Intigriti**に**サインアップ**してください。これはハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! - -{% embed url="https://go.intigriti.com/hacktricks" %} - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。 - -
+* アプリケーションで使用されている共通の暗号化メソッドすべてをフックして、暗号化されたテキスト、平文、キー、IV、および使用されているアルゴリズムを見るためのショートカット(sslpinnin のようなもの)がありません。 diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md index 723c91536..9d6f69670 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md @@ -2,34 +2,34 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ -* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** +HackTricksをサポートする他の方法: + +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する。 +- **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。
-**ハッキングのキャリア**に興味がある方、そして**解読不可能なものを解読する** - **採用中です!**(流暢なポーランド語の読み書きが必要です)。 +**ハッキングキャリア**に興味がある方、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} -\\ - *** -**From**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ -**APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk) +この投稿の要約:[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ +APK:[https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk) ## 解決策1 [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)に基づいています。 -**\_exit()**関数と**decrypt関数**をフックして、検証を押すとフラグがfridaコンソールに表示されるようにします。 +**\_exit()**関数と**復号化関数**をフックして、検証を押すとFridaコンソールにフラグが表示されるようにします: ```javascript Java.perform(function () { send("Starting hooks OWASP uncrackable1..."); @@ -68,9 +68,9 @@ send("Hooks installed."); ``` ## 解決策2 -[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)を参考にしています。 +[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)に基づいています。 -**rootチェック**と**decrypt**関数をフックし、`verify`ボタンを押すとフラグがFridaコンソールに表示されるようにします。 +**rootchecksをフック**し、機能を復号化して、検証を押すとFridaコンソールにフラグが表示されるようにします: ```javascript Java.perform(function () { send("Starting hooks OWASP uncrackable1..."); @@ -128,18 +128,20 @@ send("Hooks installed."); ```
-もしあなたが**ハッキングのキャリア**に興味があり、ハックできないものをハックしたいのであれば - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 +​​**ハッキングキャリア**に興味がある方、そしてハッキングできないものをハックしたい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %}
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ こちら -* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** +HackTricksをサポートする他の方法: + +* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をご確認ください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**する +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
diff --git a/mobile-pentesting/android-app-pentesting/install-burp-certificate.md b/mobile-pentesting/android-app-pentesting/install-burp-certificate.md index 8a2b1c004..ca1dd2327 100644 --- a/mobile-pentesting/android-app-pentesting/install-burp-certificate.md +++ b/mobile-pentesting/android-app-pentesting/install-burp-certificate.md @@ -2,23 +2,25 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ -* **サイバーセキュリティ会社**で働いていますか?**HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したり、**HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを手に入れましょう。 -* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手しましょう。 -* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングのコツを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** +HackTricksをサポートする他の方法: + +- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter**🐦で**フォロー**する:[**@carlospolopm**](https://twitter.com/carlospolopm)。 +- **ハッキングテクニックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
## 仮想マシン上で -まず最初に、BurpからDer証明書をダウンロードする必要があります。これは _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ で行うことができます。 +まず、BurpからDer証明書をダウンロードする必要があります。これは _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ で行うことができます。 ![](<../../.gitbook/assets/image (367).png>) -**Der形式で証明書をエクスポートし**、**Android**が**理解できる形式に変換**しましょう。**AVDのAndroidマシンにburp証明書を設定するためには**、**`-writable-system`** オプションを付けてこのマシンを**実行**する必要があることに注意してください。\ +**Der形式で証明書をエクスポート**し、**Androidが理解できる形式に変換**します。AndroidマシンのAVDにBurp証明書を構成するには、このマシンを**`-writable-system`**オプションで**実行する必要があります。** 例えば、次のように実行できます: {% code overflow="wrap" %} @@ -27,7 +29,7 @@ C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht ``` {% endcode %} -次に、**burps証明書を設定するには**: +次に、**Burpの証明書を設定する**には、次の手順を実行します: {% code overflow="wrap" %} ```bash @@ -42,49 +44,39 @@ adb reboot #Now, reboot the machine ``` {% endcode %} -**マシンが再起動を完了すると**、Burp証明書が使用されます! +**マシンが再起動を完了すると**、burp証明書がそれによって使用されます! ## Magiscを使用する -もし**Magiscでデバイスをルート化**していて(エミュレーターの場合もあります)、ファイルシステムが**読み取り専用**で書き込み可能にリマウントできないために、Burp証明書のインストールに先述の**手順**を**たどれない**場合、別の方法があります。 +Magiscでデバイスをroot化した場合(おそらくエミュレーター)、ファイルシステムが読み取り専用でリマウントできないため、以前の手順に従うことができない場合は、別の方法があります。 -[**このビデオ**](https://www.youtube.com/watch?v=qQicUW0svB8)で説明されているように、以下の手順を実行します: +[**このビデオ**](https://www.youtube.com/watch?v=qQicUW0svB8)で説明されているように、次の手順を実行する必要があります: -1. **CA証明書をインストールする**:DER形式のBurp証明書を`.crt`に**拡張子を変更して**モバイルに**ドラッグ&ドロップ**し、ダウンロードフォルダに保存します。そして`Install a certificate` -> `CA certificate`に進みます。 +1. **CA証明書をインストールする**:DER Burp証明書を`.crt`に変更してモバイルにドラッグ&ドロップし、ダウンロードフォルダに保存し、`証明書のインストール` -> `CA証明書`に移動します -
+
-* `Trusted credentials` -> `USER`に進んで、証明書が正しく保存されたことを確認します。 +* 証明書が正しく保存されたことを確認するには、`信頼された資格情報` -> `ユーザー`に移動します -
+
-2. **システムで信頼されるようにする**:Magiscモジュール[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(.zipファイル)をダウンロードし、電話に**ドラッグ&ドロップ**して、電話の**Magicsアプリ**で**`Modules`**セクションに進み、**`Install from storage`**をクリックし、`.zip`モジュールを選択してインストールした後、電話を**再起動**します: +2. **システムで信頼されるようにする**:Magiscモジュール[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(.zipファイル)をダウンロードし、それを電話にドラッグ&ドロップし、電話のMagicsアプリに移動して`モジュール`セクションに移動し、`ストレージからインストール`をクリックし、`.zip`モジュールを選択してインストールしたら、電話を**再起動**します: -
+
-* 再起動後、`Trusted credentials` -> `SYSTEM`に進み、Postswigger証明書がそこにあることを確認します。 +* 再起動後、`信頼された資格情報` -> `システム`に移動し、Postswigger証明書がそこにあることを確認します -
+
## Android 14以降 -変更点: +最新のAndroid 14リリースでは、システムで信頼される証明機関(CA)証明書の取り扱いにおいて重要な変更が観察されています。以前は、これらの証明書は**`/system/etc/security/cacerts/`**に収容され、root権限を持つユーザーがアクセスして変更できる状態でしたが、Android 14では、保存場所が**`/apex/com.android.conscrypt/cacerts`**に移動されました。これは**`/apex`**パス内のディレクトリであり、その性質上変更できません。 -* これまで、システムで信頼されるCA証明書は**`/system/etc/security/cacerts/`**にありました。標準のAOSPエミュレーターでは、最小限のセットアップで**ルートアクセスを使って直接変更**でき、**すぐに全体に影響**を与えました。 -* Android 14では、システムで信頼されるCA証明書は一般的に**`/apex/com.android.conscrypt/cacerts`**にあり、**`/apex`全体が不変**です。 -* **APEX cacertsパスは書き込み可能としてリマウントできません** - リマウントは単に失敗します。実際、ルートシェルから完全にパスをアンマウントしても、アプリは引き続き証明書を問題なく読み取ることができます。 -* tmpfsディレクトリを上にマウントする代替技術も**機能しません** - これは`ls /apex/com.android.conscrypt/cacerts`が何も返さない(または好きなものを返す)かもしれませんが、アプリは依然として元のデータを見ることができます。 -* `/apex`マウントは、プロセス間で`/apex`パス内のマウントの変更が共有されないように、[明示的に](https://cs.android.com/android/platform/superproject/main/+/main:system/core/init/mount\_namespace.cpp;l=97;drc=566c65239f1cf3fcb0d8745715e5ef1083d4bd3a) **PRIVATE伝播でマウントされています**。 +**APEX cacertsパス**を書き込み可能にリマウントしようとする試みは失敗します。システムはそのような操作を許可しません。さらに、ディレクトリを一時ファイルシステム(tmpfs)でアンマウントしたりオーバーレイしたりしても、不変性を回避することはできません。ファイルシステムレベルでの変更に関わらず、アプリケーションは元の証明書データにアクセスし続けます。これは、**`/apex`**マウントがPRIVATE伝播で構成されているためであり、**`/apex`**ディレクトリ内の変更が他のプロセスに影響を与えないようにしています。 -これはOSを起動する`init`プロセスによって行われ、その後、[Zygoteプロセス](https://en.wikipedia.org/wiki/Booting\_process\_of\_Android\_devices#Zygote)(親からコピーされた新しいマウント名前空間を含むため、**自身のプライベートな`/apex`マウント**を含む)を起動し、その後、デバイス上でアプリが起動されるたびに**各アプリプロセスを開始します**(それぞれが同じプライベートな`/apex`マウントを**コピーします**)。 +Androidの初期化には`init`プロセスが関与し、オペレーティングシステムの起動時にZygoteプロセスも開始されます。このプロセスは、新しいマウント名前空間を持つアプリケーションプロセスを起動する責任があり、この名前空間にはプライベート**`/apex`**マウントが含まれており、このディレクトリへの変更を他のプロセスから隔離します。 -### マウントポイントを再帰的にリマウントする - -* `/apex`を手動でリマウントし、PRIVATE伝播を削除して書き込み可能にすることができます(皮肉なことに、プライベート伝播を完全に削除すると、どこにでも_伝播する_ようです) -* `/apex/com.android.conscrypt`の全内容を別の場所にコピーします -* その後、`/apex/com.android.conscrypt`を完全にアンマウントします - このモジュールを不変で提供する読み取り専用マウントを削除します -* その後、内容を戻して、`/apex`マウントに直接生きるようにします。そこでは変更が可能です([どうやら](https://infosec.exchange/@g1a55er/111069489513139531)クラッシュが発生する可能性があるため、迅速に行う必要があります) -* これはすぐに効果があるはずですが、`system_server`を終了する(すべてのアプリを再起動する)ことで、すべてを一貫した状態に戻すことを推奨します +ただし、**`/apex`**ディレクトリ内のシステムで信頼されるCA証明書を変更する必要がある場合の回避策が存在します。これには、**`/apex`**を手動でリマウントしてPRIVATE伝播を削除し、書き込み可能にする必要があります。このプロセスには、**`/apex/com.android.conscrypt`**の内容を別の場所にコピーし、**`/apex/com.android.conscrypt`**ディレクトリをアンマウントして読み取り専用制約を解除し、その後、内容を**`/apex`**内の元の場所に復元する必要があります。このアプローチはシステムクラッシュを回避するために迅速な対応が必要です。これらの変更がシステム全体に適用されるようにするためには、`system_server`を再起動することをお勧めします。これにより、すべてのアプリケーションが再起動され、システムが一貫した状態になります。 ```bash # Create a separate temp directory, to hold the current certificates # Otherwise, when we add the mount we can't read the current certs anymore. @@ -142,39 +134,25 @@ wait # Launched in parallel - wait for completion here echo "System certificate injected" ``` -### NSEnterを使用したバインドマウント - -* 最初に、どこかに書き込み可能なディレクトリを設定する必要があります。既存のアプローチとの互換性を容易にするために、私は非APEXシステム証明書ディレクトリ(まだ存在している)上に`tmpfs`マウントを使用してこれを行っています: +### NSEnterを介したバインドマウント +1. **書き込み可能ディレクトリの設定**: 最初に、既存の非-APEXシステム証明書ディレクトリに`tmpfs`をマウントして、書き込み可能ディレクトリを確立します。次のコマンドを使用してこれを実現します: ```bash mount -t tmpfs tmpfs /system/etc/security/cacerts ``` -* 次に、興味のあるCA証明書をこのディレクトリに配置します(例えば、既存の`/apex/com.android.conscrypt/cacerts/` CA証明書ディレクトリからすべてのデフォルトをコピーするかもしれません)そして、適切な権限とSELinuxラベルを設定します。 -* その後、`nsenter`を使用してZygoteのマウント名前空間に入り、このディレクトリをAPEXディレクトリにバインドマウントします: +2. **CA証明書の準備**: 書き込み可能ディレクトリのセットアップに続いて、使用するCA証明書をこのディレクトリにコピーする必要があります。これには、デフォルトの証明書を`/apex/com.android.conscrypt/cacerts/`からコピーすることが含まれる場合があります。これらの証明書の権限とSELinuxラベルを適切に調整することが重要です。 +3. **Zygote用のバインドマウント**: `nsenter`を利用して、Zygoteのマウント名前空間に入ります。 Androidアプリケーションを起動する責任があるプロセスであるZygoteは、今後起動されるすべてのアプリケーションが新しく構成されたCA証明書を利用するようにするために、この手順が必要です。使用されるコマンドは次のとおりです: ```bash -nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- \ -/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts +nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts ``` +これにより、新しいアプリが開始されるたびに、更新されたCA証明書の設定に従うようになります。 -Zygoteプロセスは各アプリを生成し、その際にマウント名前空間をコピーするため、これにより新しく起動されるすべてのアプリ(これから開始されるすべてのもの)がこれを使用することになります。 -* その後、`nsenter`を使用して既に実行中の各アプリの名前空間に入り、同じことを行います: - +4. **実行中のアプリに変更を適用する**: 既に実行中のアプリに変更を適用するには、`nsenter`を再度使用して各アプリの名前空間に個別に入り、同様のバインドマウントを行います。必要なコマンドは次のとおりです: ```bash -nsenter --mount=/proc/$APP_PID/ns/mnt -- \ -/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts +nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts ``` +5. **代替手法 - ソフト再起動**: 代替手法は、`init` プロセス(PID 1)での bind マウントを実行し、`stop && start` コマンドでオペレーティングシステムをソフト再起動する方法です。この手法により、変更がすべてのネームスペースに伝播され、実行中の各アプリを個別に対処する必要がなくなります。ただし、再起動の手間がかかるため、一般的にこの方法は好まれません。 -代わりに、UXが少し不便でも構わない場合は、`init`自体(PID 1)でバインドマウントを行い、その後`stop && start`を実行してOSをソフトリブートし、すべての名前空間を再作成して変更を至る所に伝播させることができるはずです(ただし、私は不便なリブートを気にするので、その方法は完全に無視しています)。 - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -* **サイバーセキュリティ会社**で働いていますか? **HackTricksにあなたの会社を広告したいですか?** または、**最新版のPEASSを入手**したり、**HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください。 -* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**に**フォローしてください。** -* **ハッキングのトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** - -
+## 参考文献 +* [https://httptoolkit.com/blog/android-14-install-system-ca-certificate/](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/) diff --git a/mobile-pentesting/android-app-pentesting/intent-injection.md b/mobile-pentesting/android-app-pentesting/intent-injection.md index 076efa561..8d80ee873 100644 --- a/mobile-pentesting/android-app-pentesting/intent-injection.md +++ b/mobile-pentesting/android-app-pentesting/intent-injection.md @@ -2,30 +2,30 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) をフォローする** -* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する** +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする +* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する** -**[https://blog.oversecured.com/Android-Access-to-app-protected-components/**](https://blog.oversecured.com/Android-Access-to-app-protected-components/)** +**以下をご覧ください:[https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) をフォローする** -* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する** +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする +* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
diff --git a/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md b/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md index 6abd56126..0a644b5cb 100644 --- a/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md +++ b/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md @@ -1,84 +1,50 @@ -```markdown
-htARTE (HackTricks AWS Red Team Expert) を使ってゼロからヒーローまで AWS ハッキングを学ぶ +htARTE(HackTricks AWS Red Team Expert)を使って、ゼロからヒーローまでAWSハッキングを学びましょう! -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks にあなたの会社を広告掲載したい場合や HackTricks を PDF でダウンロードしたい場合は**、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式の PEASS & HackTricks グッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションをチェックする -* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f)や [**telegram グループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) を**フォローする**。 -* **HackTricks** の [**GitHub リポジトリ**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) に PR を提出して、あなたのハッキングテクニックを共有する。 +- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**@carlospolopm**を**フォロー**する + +- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**する
-## デオブスキュフェーションの方法 +## **手動** De-obfuscation Techniques -デオブスキュフェーション戦略は、オブスキュフェーションの方法に依存します。このセクションでは、静的分析やリバースに適した静的デオブスキュフェーションテクニックを紹介します: +**ソフトウェアセキュリティ**の領域では、**de-obfuscation**として知られる、不明瞭なコードを理解可能なものにするプロセスが重要です。このガイドでは、静的解析技術と難読化パターンの認識に焦点を当て、de-obfuscationのさまざまな戦略について探究します。さらに、実践的な応用のための演習を紹介し、より高度なトピックに興味を持つ人々に向けた追加リソースを提案します。 -* DEX バイトコード (Java) の場合、一般的なアプローチは、アプリケーションのデオブスキュフェーションメソッドを特定し、Java ファイルに複製して、オブスキュフェートされた要素に対して実行することです。 -* Java とネイティブコードの両方において、別のテクニックは、デオブスキュフェーションアルゴリズムを Python のような馴染みのあるスクリプト言語に翻訳することであり、アルゴリズムを理解することが重要ではなく、実行できることが重要であることを強調します。 +### **静的De-obfuscationの戦略** -## オブスキュフェーションの指標 +**難読化されたコード**に対処する際には、難読化の性質に応じていくつかの戦略が採用されます: -オブスキュフェーションを認識するには、以下の例を含む特定の指標を識別することが関わります: +- **DEXバイトコード(Java)**:効果的なアプローチの1つは、アプリケーションのde-obfuscationメソッドを特定し、これらのメソッドをJavaファイルに複製することです。このファイルを実行して、対象要素の難読化を逆転させます。 +- **Javaとネイティブコード**:別の方法は、de-obfuscationアルゴリズムをPythonなどのスクリプト言語に変換することです。この戦略は、アルゴリズムを完全に理解することが目的ではなく、効果的に実行することが主な目標であることを強調しています。 -* Java と Android で文字列が欠如しているか、スクランブルされた文字列が存在することは、文字列のオブスキュフェーションを示唆しています。 -* assets ディレクトリ内のバイナリファイルの存在や DexClassLoader の呼び出しは、コードのアンパッキングとローディングが可能であることを示しています。 -* 識別可能な JNI 関数がないネイティブライブラリの使用は、ネイティブメソッドのオブスキュフェーションを示唆しています。 +### **難読化の識別** -### 文字列デオブスキュフェーション演習 +難読化されたコードを認識することは、de-obfuscationプロセスの最初のステップです。主な指標には次のものがあります: -静的分析の文脈で文字列デオブスキュフェーションを練習するための演習が提供されています。このタスクは、特定の SHA256 ダイジェストを持つサンプルファイルを含み、アナリストはアプリケーションを動的に実行することなく、オブスキュフェートされた Javascript 文字列を明らかにする必要があります。 +- JavaとAndroidでの**文字列の欠如またはスクランブル**、これは文字列の難読化を示唆する可能性があります。 +- アセットディレクトリ内の**バイナリファイルの存在**や`DexClassLoader`への呼び出しは、コードの展開と動的ロードを示唆しています。 +- **識別不能なJNI関数とネイティブライブラリの使用**は、ネイティブメソッドの難読化を示唆しています。 -解決策は、エンコードされた文字列を解読する Python スクリプトを含み、coinhive.com からの埋め込みスクリプトを明らかにし、マイナーを開始します。 +## **De-obfuscationにおける動的解析** -### 追加リソース +制御された環境でコードを実行することにより、動的解析は**難読化されたコードの振る舞いをリアルタイムで観察**することを可能にします。この方法は、コードの真の意図を隠すために設計された複雑な難読化パターンの内部動作を明らかにするのに特に効果的です。 -特に高度なオブスキュフェーションテクニックに焦点を当てた Android アプリのデオブスキュフェーションに関するさらなる洞察は、BlackHat USA 2018 と REcon 2019 のトークで探求することができます。それぞれが Android アプリケーションのオブスキュフェーションのユニークな側面をカバーしています。 +### **動的解析の応用** -演習元 https://maddiestone.github.io/AndroidAppRE/obfuscation.html: -``` -```python -enc_str = "773032205849207A3831326F1351202E3B306B7D1E5A3B33252B382454173735266C3D3B53163735222D393B475C7A37222D7F38421B6A66643032205849206477303220584920643D2223725C503A3F39636C725F5C237A082C383C7950223F65023F3D5F4039353E3079755F5F666E1134141F5C4C64377A1B671F565A1B2C7F7B101F42700D1F39331717161574213F2B2337505D27606B712C7B0A543D342E317F214558262E636A6A6E1E4A37282233256C" +- **ランタイム復号化**:多くの難読化技術は、文字列やコードセグメントを暗号化し、ランタイムでのみ復号化されることがあります。動的解析により、これらの暗号化された要素を復号化時にキャプチャし、その真の形を明らかにすることができます。 +- **難読化技術の識別**:アプリケーションの振る舞いを監視することで、動的解析はコード仮想化、パッカー、または動的コード生成など、使用されている特定の難読化技術を特定するのに役立ちます。 +- **隠された機能の発見**:難読化されたコードには、静的解析だけでは明らかにならない隠された機能が含まれている場合があります。動的解析により、条件付きで実行されるコードパスを含むすべてのコードパスを観察することで、そのような隠された機能を発見できます。 -length = len(enc_str) -count = 0 -dec_str = [0] * (length/2) -while (count < length): -dec_str[count/2] = (int(enc_str[count], 16) << 4) + int(enc_str[count + 1], 16) & 0xFF -count += 2 -print dec_str - - -key = [75, 67, 81, 82, 49, 57, 84, 90] -enc_str = dec_str -count = 0 -length = len(enc_str) -while (count < length): -dec_str[count] = chr(enc_str[count] ^ key[count % len(key)]) -count += 1 -print ''.join(dec_str) -``` -# 参考文献とさらなる読み物 +## 参考文献とさらなる読書 * [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html) -* BlackHat USA 2018: 「Unpacking the Packed Unpacker: Androidのアンチアナリシスライブラリを逆アセンブルする」 \[[ビデオ](https://www.youtube.com/watch?v=s0Tqi7fuOSU)] -* このトークでは、Androidアプリケーションで使用されている最も複雑なアンチアナリシスネイティブライブラリの一つを逆アセンブルする過程を説明しています。主にネイティブコードの難読化技術について取り上げています。 -* REcon 2019: 「ペイロードへの道: Androidエディション」 \[[ビデオ](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)] -* このトークでは、Androidボットネットがその振る舞いを隠すために使用していた、Javaコードのみの難読化技術のシリーズについて議論しています。 - - -
- -AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をチェック! - -HackTricksをサポートする他の方法: - -* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 -* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 - -
+* BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)] +* このトークでは、Androidアプリケーションで使用されている最も複雑なアンチ解析ネイティブライブラリのリバースエンジニアリングについて説明しています。主にネイティブコードでの難読化技術に焦点を当てています。 +* REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)] +* このトークでは、Androidボットネットが行っていたJavaコードのみでの一連の難読化技術について説明しています。 diff --git a/mobile-pentesting/android-app-pentesting/react-native-application.md b/mobile-pentesting/android-app-pentesting/react-native-application.md index b90c69477..a65aedf12 100644 --- a/mobile-pentesting/android-app-pentesting/react-native-application.md +++ b/mobile-pentesting/android-app-pentesting/react-native-application.md @@ -1,64 +1,62 @@ -```html - - - - - - React Native Code Analysis - - - - - -``` +
-このコードは、ブラウザでJavaScriptコードを実行し、デバッグツールを使用して解析するためのものです。 +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -React Nativeフレームワークを使用して構築されたアプリケーションの分析には、以下の手順に従ってください: +HackTricks をサポートする他の方法: -1. APKファイルの拡張子をzipに変更し、`cp com.example.apk example-apk.zip` と `unzip -qq example-apk.zip -d ReactNative` コマンドを使用して新しいフォルダに展開します。 +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または [**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**する。 +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに提出してください。 -2. 新しく作成されたReactNativeフォルダに移動し、assetsフォルダを探します。このフォルダ内には、React JavaScriptが圧縮された形式で含まれている `index.android.bundle` ファイルが見つかるはずです。 +
-3. `find . -print | grep -i ".bundle$"` コマンドを使用して、JavaScriptファイルを検索します。 +# React Nativeアプリケーションの分析 -JavaScriptコードをさらに分析するには、同じディレクトリに `index.html` という名前のファイルを作成し、上記のコードを使用します。 +アプリケーションがReact Nativeフレームワークで構築されているかどうかを確認するには、次の手順に従います: + +1. APKファイルの名前をzip拡張子で変更し、`cp com.example.apk example-apk.zip` というコマンドを使用して新しいフォルダに展開します。`unzip -qq example-apk.zip -d ReactNative`。 + +2. 新しく作成されたReactNativeフォルダに移動し、assetsフォルダを見つけます。このフォルダの中には、React JavaScriptをミニファイされた形式で含む `index.android.bundle` ファイルがあるはずです。 + +3. JavaScriptファイルを検索するには、`find . -print | grep -i ".bundle$"` というコマンドを使用します。 + +JavaScriptコードをさらに分析するために、同じディレクトリに `index.html` という名前のファイルを作成し、次のコードを追加します: ```html ``` -以下の手順に従ってください: +1. [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/)にファイルをアップロードするか、次の手順に従います: -1. Google Chromeで`index.html`ファイルを開きます。 +2. Google Chromeで`index.html`ファイルを開きます。 -2. **OS Xの場合はCommand+Option+J**、**Windowsの場合はControl+Shift+J**を押して開発者ツールバーを開きます。 +3. **OS Xの場合はCommand+Option+J**、**Windowsの場合はControl+Shift+J**を押して開発者ツールバーを開きます。 -3. 開発者ツールバーで"Sources"をクリックします。メインバンドルを構成するフォルダやファイルに分割されたJavaScriptファイルが表示されるはずです。 +4. 開発者ツールバーで「Sources」をクリックします。メインバンドルを構成するフォルダやファイルに分割されたJavaScriptファイルが表示されるはずです。 -`index.android.bundle.map`というファイルを見つけた場合、ソースコードを非圧縮形式で分析することができます。マップファイルにはソースマッピングが含まれており、圧縮された識別子をマップすることができます。 +`index.android.bundle.map`というファイルが見つかった場合、ソースコードを非最小化形式で分析できます。Mapファイルには、最小化された識別子をマッピングするためのソースマッピングが含まれています。 -機密情報やエンドポイントを探すには、以下の手順に従ってください: +機密情報やエンドポイントを検索するには、以下の手順に従います: -1. JavaScriptコードを分析するために、機密キーワードを特定します。React NativeアプリケーションはしばしばFirebase、AWS S3サービスエンドポイント、プライベートキーなどのサードパーティサービスを使用します。 +1. JavaScriptコードを分析するための機密キーワードを特定します。React Nativeアプリケーションでは、Firebase、AWS S3サービスエンドポイント、プライベートキーなどのサードパーティーサービスがよく使用されます。 -2. この特定のケースでは、アプリケーションがDialogflowサービスを使用していることが観察されました。その設定に関連するパターンを検索します。 +2. この特定のケースでは、アプリケーションがDialogflowサービスを使用していることが観察されました。その構成に関連するパターンを検索します。 -3. リコンプロセス中にJavaScriptコード内で機密のハードコードされた資格情報が見つかったことは幸運でした。 +3. レコンプロセス中にJavaScriptコード内で機密のハードコードされた資格情報が見つかったことが幸運でした。 -全体として、これらの手順に従うことで、React Nativeアプリケーションを分析し、そのフレームワークを確認し、コード内の潜在的な機密情報を探すことができます。 - -# 参考文献 +## 参考文献 * [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
-htARTE (HackTricks AWS Red Team Expert)で AWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ こちら HackTricksをサポートする他の方法: -* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックしてください。 -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。 -* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有**してください。 +* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
diff --git a/mobile-pentesting/android-app-pentesting/smali-changes.md b/mobile-pentesting/android-app-pentesting/smali-changes.md index c4f8d389b..9724993ce 100644 --- a/mobile-pentesting/android-app-pentesting/smali-changes.md +++ b/mobile-pentesting/android-app-pentesting/smali-changes.md @@ -1,96 +1,98 @@ -# Smali - デコンパイル/修正/コンパイル +# Smali - Decompiling/\[Modifying]/Compiling
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ -* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** +HackTricksをサポートする他の方法: + +- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で私をフォローする:[**@carlospolopm**](https://twitter.com/carlospolopm)。 +- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
-アプリケーションコードを変更して、隠された情報にアクセスすることは、時に興味深いです(おそらくよく難読化されたパスワードやフラグなど)。そのため、apkをデコンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。 +アプリケーションコードを変更して隠された情報にアクセスすることが興味深い場合があります(おそらくよく隠されたパスワードやフラグ)。その後、APKを逆コンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。 **オペコードリファレンス:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html) ## 早い方法 -**Visual Studio Code**と[APKLab](https://github.com/APKLab/APKLab)拡張機能を使用すると、コマンドを実行せずにアプリケーションを**自動的にデコンパイル**、修正、**再コンパイル**、署名してインストールすることができます。 +**Visual Studio Code**と[APKLab](https://github.com/APKLab/APKLab)拡張機能を使用すると、**自動的に逆コンパイル**、変更、**再コンパイル**、署名してアプリケーションを実行せずにインストールできます。 -このタスクを大幅に簡略化する**スクリプト**もあります。[**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)**** +このタスクを大幅に簡略化する**スクリプト**は、[**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)です。 -## APKをデコンパイルする +## APKを逆コンパイルする APKToolを使用すると、**smaliコードとリソース**にアクセスできます: -``` +```bash apktool d APP.apk ``` -もし**apktool**にエラーが出る場合は、[**最新バージョン**](https://ibotpeaches.github.io/Apktool/install/)をインストールしてみてください。 +If **apktool** gives you any error, try [installing the **latest version**](https://ibotpeaches.github.io/Apktool/install/) -注目すべき**興味深いファイル**は以下の通りです: +Some **interesting files you should look are**: -* _res/values/strings.xml_ (およびres/values/\*内のすべてのxml) +* _res/values/strings.xml_ (and all xmls inside res/values/\*) * _AndroidManifest.xml_ -* 拡張子が_.sqlite_または_.db_の任意のファイル +* Any file with extension _.sqlite_ or _.db_ -もし`apktool`が**アプリケーションのデコードに問題**を抱えている場合は、[https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files)を参照するか、引数**`-r`**を使用してみてください(リソースをデコードしない)。その後、問題がソースコードではなくリソースにある場合、問題は発生しなくなります(リソースも逆コンパイルされません)。 +If `apktool` has **problems decoding the application** take a look to [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) or try using the argument **`-r`** (Do not decode resources). Then, if the problem was in a resource and not in the source code, you won't have the problem (you won't also decompile the resources). -## Smaliコードの変更 +## Change smali code -**命令を変更**したり、一部の変数の**値を変更**したり、新しい命令を**追加**することができます。私は[**VS Code**](https://code.visualstudio.com)を使用してSmaliコードを変更します。その後、**smalise拡張機能**をインストールし、エディタが**不正な命令**を教えてくれます。\ -以下にいくつかの**例**があります: +You can **change** **instructions**, change the **value** of some variables or **add** new instructions. I change the Smali code using [**VS Code**](https://code.visualstudio.com), you then install the **smalise extension** and the editor will tell you if any **instruction is incorrect**.\ +Some **examples** can be found here: -* [Smaliの変更の例](smali-changes.md) +* [Smali changes examples](smali-changes.md) * [Google CTF 2018 - Shall We Play a Game?](google-ctf-2018-shall-we-play-a-game.md) -または、[**以下でSmaliの変更の詳細**を確認できます](smali-changes.md#modifying-smali)。 +Or you can [**check below some Smali changes explained**](smali-changes.md#modifying-smali). -## APKの再コンパイル +## Recompile the APK -コードを変更した後、以下のコマンドを使用してコードを**再コンパイル**できます: +After modifying the code you can **recompile** the code using: ```bash apktool b . #In the folder generated when you decompiled the application ``` -新しいAPKを**dist**フォルダーの**内部**に**コンパイル**します。 +それは**dist**フォルダーの中に新しいAPKを**コンパイル**します。 -もし**apktool**が**エラー**を出した場合は、[**最新バージョン**](https://ibotpeaches.github.io/Apktool/install/)をインストールしてみてください。 +もし**apktool**が**エラー**を出したら、[**最新バージョン**をインストール](https://ibotpeaches.github.io/Apktool/install/)してみてください。 ### **新しいAPKに署名する** -次に、**キーを生成**する必要があります(パスワードといくつかの情報が求められますが、ランダムに入力しても構いません)。 +その後、**キーを生成**する必要があります(パスワードとランダムに入力できる情報が求められます): ```bash keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ``` -最後に、新しいAPKに**署名**してください: +最後に、新しいAPKに**署名**を付けます: ```bash jarsigner -keystore key.jks path/to/dist/* ``` ### 新しいアプリケーションの最適化 -**zipalign**は、Androidアプリケーション(APK)ファイルに重要な最適化を提供するアーカイブの整列ツールです。[詳細はこちら](https://developer.android.com/studio/command-line/zipalign)。 +**zipalign**は、Androidアプリケーション(APK)ファイルに重要な最適化を提供するアーカイブ整列ツールです。[こちらで詳細を確認](https://developer.android.com/studio/command-line/zipalign)。 ```bash zipalign [-f] [-v] infile.apk outfile.apk zipalign -v 4 infile.apk ``` -### **新しいAPKに署名する(再度?)** +### **新しいAPKに署名する(再び?)** -もしjarsignerの代わりに\[**apksigner**]\([**https://developer.android.com/studio/command-line/apksigner**](https://developer.android.com/studio/command-line/apksigner))を使用したい場合、zipalignを適用した後にapkに署名する必要があります。ただし、注意してください。apkはjarsigner(zipalignの前)またはaspsigner(zipalignの後)で**一度だけ**署名する必要があります。 +もしjarsignerの代わりに[**apksigner**](https://developer.android.com/studio/command-line/)を使用したい場合は、zipalignを適用した後にapkに署名する必要があります。ただし、jarsigner(zipalignの前)またはaspsigner(zipalignの後)でアプリケーションに署名する必要があるのは**1回だけ**であることに注意してください。 ```bash apksigner sign --ks key.jks ./dist/mycompiled.apk ``` ## Smaliの変更 -以下のHello World Javaコードに対して: -``` +次のHello World Javaコードに対して: +```java public static void printHelloWorld() { System.out.println("Hello World") } ``` Smaliコードは次のようになります: -``` +```java .method public static printHelloWorld()V .registers 2 sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; @@ -99,14 +101,12 @@ invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V return-void .end method ``` -Smali命令セットは[こちら](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions)で利用可能です。 - ### 軽微な変更 ### 関数内の変数の初期値を変更する -一部の変数は、関数の最初に_opcode_ _const_を使用して定義されます。これらの値を変更することができます。または、新しい変数を定義することもできます。 -``` +一部の変数は、関数の最初に _const_ オペコードを使用して定義されます。その値を変更したり、新しい変数を定義したりできます。 +```bash #Number const v9, 0xf4240 const/4 v8, 0x1 @@ -114,63 +114,7 @@ const/4 v8, 0x1 const-string v5, "wins" ``` ### 基本的な操作 - -In this section, we will cover some basic operations that can be performed on Smali code. - -このセクションでは、Smaliコードで実行できるいくつかの基本的な操作について説明します。 - -#### 1. Modifying Constants - -#### 1. 定数の変更 - -To modify a constant value in Smali code, you need to locate the instruction that loads the constant value onto the stack and replace it with a new value. - -Smaliコードで定数値を変更するには、スタックに定数値をロードする命令を見つけて、新しい値に置き換える必要があります。 - -For example, if you want to change the value of a constant from 123 to 456, you would look for the instruction `const/16 v0, 123` and replace it with `const/16 v0, 456`. - -例えば、定数の値を123から456に変更したい場合、命令`const/16 v0, 123`を探して、`const/16 v0, 456`に置き換えます。 - -#### 2. Modifying Method Calls - -#### 2. メソッド呼び出しの変更 - -To modify a method call in Smali code, you need to locate the instruction that invokes the method and replace it with a new method call. - -Smaliコードでメソッド呼び出しを変更するには、メソッドを呼び出す命令を見つけて、新しいメソッド呼び出しに置き換える必要があります。 - -For example, if you want to change a method call from `invoke-virtual {v0, v1}, Lcom/example/Class;->method()V` to `invoke-static {v0, v1}, Lcom/example/Class;->newMethod()V`, you would replace the `invoke-virtual` instruction with `invoke-static`. - -例えば、メソッド呼び出しを`invoke-virtual {v0, v1}, Lcom/example/Class;->method()V`から`invoke-static {v0, v1}, Lcom/example/Class;->newMethod()V`に変更したい場合、`invoke-virtual`命令を`invoke-static`に置き換えます。 - -#### 3. Modifying Field Access - -#### 3. フィールドアクセスの変更 - -To modify a field access in Smali code, you need to locate the instruction that accesses the field and replace it with a new field access. - -Smaliコードでフィールドアクセスを変更するには、フィールドにアクセスする命令を見つけて、新しいフィールドアクセスに置き換える必要があります。 - -For example, if you want to change a field access from `iget-object v0, v1, Lcom/example/Class;->field:Lcom/example/Field;` to `sget-object v0, Lcom/example/Class;->newField:Lcom/example/Field;`, you would replace the `iget-object` instruction with `sget-object`. - -例えば、フィールドアクセスを`iget-object v0, v1, Lcom/example/Class;->field:Lcom/example/Field;`から`sget-object v0, Lcom/example/Class;->newField:Lcom/example/Field;`に変更したい場合、`iget-object`命令を`sget-object`に置き換えます。 - -#### 4. Modifying Control Flow - -#### 4. 制御フローの変更 - -To modify the control flow in Smali code, you need to locate the instructions that control the flow and modify them accordingly. - -Smaliコードで制御フローを変更するには、フローを制御する命令を見つけて、適宜変更する必要があります。 - -For example, if you want to change a conditional branch from `if-eqz v0, :label` to `if-nez v0, :label`, you would replace the `if-eqz` instruction with `if-nez`. - -例えば、条件付き分岐を`if-eqz v0, :label`から`if-nez v0, :label`に変更したい場合、`if-eqz`命令を`if-nez`に置き換えます。 - -These are just a few examples of the basic operations that can be performed on Smali code. With these operations, you can modify the behavior of an Android app and potentially exploit vulnerabilities. - -これらは、Smaliコードで実行できる基本的な操作の一部です。これらの操作を使用することで、Androidアプリの動作を変更し、潜在的な脆弱性を悪用することができます。 -``` +```bash #Math add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0 mul-int v0,v2,0x2 #v2*0x2 and save in v0 @@ -195,7 +139,7 @@ goto :goto_6 #Always go to: :goto_6 ### 大きな変更 ### ロギング -``` +```bash #Log win: iget v5, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Get this.o inside v5 invoke-static {v5}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; #Transform number to String @@ -203,20 +147,20 @@ move-result-object v1 #Move to v1 const-string v5, "wins" #Save "win" inside v5 invoke-static {v5, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I #Logging "Wins: " ``` -推奨事項: +Recommendations: -* 関数内で宣言された変数(v0、v1、v2など)を使用する場合は、これらの行を _.local \_ と変数の宣言(_const v0, 0x1_)の間に配置してください。 -* 関数のコードの途中にログ出力コードを配置したい場合: -* 宣言された変数の数に2を追加してください。例:_.locals 10_ から _.locals 12_ に変更します。 -* 新しい変数は、既に宣言された変数の次の番号である必要があります(この例では _v10_ と _v11_ になります。v0から始まることを忘れないでください)。 -* ログ出力関数のコードを変更し、_v5_ と _v1_ の代わりに _v10_ と _v11_ を使用してください。 +* If you are going to use declared variables inside the function (declared v0,v1,v2...) put these lines between the _.local \_ and the declarations of the variables (_const v0, 0x1_) +* If you want to put the logging code in the middle of the code of a function: +* Add 2 to the number of declared variables: Ex: from _.locals 10_ to _.locals 12_ +* The new variables should be the next numbers of the already declared variables (in this example should be _v10_ and _v11_, remember that it starts in v0). +* Change the code of the logging function and use _v10_ and _v11_ instead of _v5_ and _v1_. -### トースティング +### Toasting -関数の先頭で _.locals_ の数に3を追加することを忘れないでください。 +Remember to add 3 to the number of _.locals_ at the beginning of the function. -このコードは、**関数の途中に挿入するために準備されています**(必要に応じて**変数の数**を**変更**してください)。これは、**this.o** の値を**String**に変換し、その値で**トースト**を作成します。 -``` +This code is prepared to be inserted in the **middle of a function** (**change** the number of the **variables** as necessary). It will take the **value of this.o**, **transform** it to **String** and them **make** a **toast** with its value. +```bash const/4 v10, 0x1 const/4 v11, 0x1 const/4 v12, 0x1 @@ -229,12 +173,14 @@ invoke-virtual {v12}, Landroid/widget/Toast;->show()V ```
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ -* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** +HackTricks をサポートする他の方法: + +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。 +* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
diff --git a/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md b/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md index ee709f5a4..71ef391f7 100644 --- a/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md +++ b/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md @@ -1,42 +1,45 @@
-AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert) +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -* あなたの**会社をHackTricksに広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 -* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 -* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する。 +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする。 +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
+特定の国に制限されているアプリケーションがあり、地域制限のためAndroidデバイスにインストールできない場合、アプリが利用可能な国に位置情報を偽装することでアクセスできるようになります。以下の手順に従って操作します: -**情報はこちらからコピーしました** [**https://manifestsecurity.com/android-application-security-part-23/**](https://manifestsecurity.com/android-application-security-part-23/) +1. **Hotspot Shield Free VPN Proxyをインストールする:** +- Google PlayストアからHotspot Shield Free VPN Proxyをダウンロードしてインストールします。 -多くの場合、評価したいアプリケーションが特定の国でのみ許可されているため、そのアプリケーションをAndroidデバイスにインストールすることができません。しかし、その国にあなたの位置を偽装することができれば、そのアプリケーションにアクセスすることができます。以下はその手順です。 +2. **VPNサーバに接続する:** +- Hotspot Shieldアプリケーションを開きます。 +- アクセスしたいアプリが利用可能な国を選択してVPNサーバに接続します。 -* まず、Google Play Storeから**Hotspot Shield Free VPN Proxy**をインストールします。\ -![](https://i.imgur.com/0XrmuKY.png) -* それを使用して接続し、必要な国を選択します。\ -![](https://i.imgur.com/Z0WHrZX.png) -* 次に、**設定** >> **アプリ** >> **Google Play Store**に移動し、**強制停止**をタップした後、**データを消去**をタップします。\ -![](https://i.imgur.com/sjFrr67.png) -* **Google Play Store**を開き、その国でのみ利用可能なアプリケーションを検索してインストールすることができるようになります。\ -![](https://i.imgur.com/zfdhCBI.png) +3. **Google Playストアのデータを消去する:** +- デバイスの**設定**に移動します。 +- **アプリ**または**アプリケーションマネージャ**に進みます(デバイスによって異なる場合があります)。 +- アプリのリストから**Google Playストア**を見つけて選択します。 +- アプリの実行中プロセスを終了するために**強制停止**をタップします。 +- 次に、Google Playストアアプリをデフォルト状態にリセットするために**データを消去**または**ストレージをクリア**(正確な用語は異なる場合があります)をタップします。 + +4. **制限されたアプリケーションにアクセスする:** +- **Google Playストア**を開きます。 +- ストアは今やVPN経由で接続した国のコンテンツを反映するはずです。 +- 以前に実際の場所で利用できなかったアプリケーションを検索してインストールできるはずです。 + +### 重要な注意事項: +- この方法の効果は、VPNサービスの信頼性やアプリによって課せられる特定の地域制限など、いくつかの要因に基づいて異なる場合があります。 +- 定期的にVPNを使用すると、一部のアプリやサービスのパフォーマンスに影響を与える可能性があります。 +- 地域制限をバイパスするためにVPNを使用することは、使用しているアプリやサービスの利用規約に注意してください。 + +## 参考文献 +* [https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-23/)
- -AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert) - -HackTricksをサポートする他の方法: - -* あなたの**会社をHackTricksに広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 -* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 -* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する。 - -
diff --git a/mobile-pentesting/android-app-pentesting/tapjacking.md b/mobile-pentesting/android-app-pentesting/tapjacking.md index 6e2c03ed6..546cf8da8 100644 --- a/mobile-pentesting/android-app-pentesting/tapjacking.md +++ b/mobile-pentesting/android-app-pentesting/tapjacking.md @@ -2,40 +2,42 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ -* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 -* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。 +HackTricks をサポートする他の方法: + +- **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で私をフォローする:[**@carlospolopm**](https://twitter.com/carlospolopm)**。** +- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
## **基本情報** -**タップジャッキング**は、**悪意のあるアプリケーション**が起動し、**被害者のアプリケーションの上に配置**される攻撃です。被害者のアプリを視覚的に隠すと、ユーザーインターフェースはユーザーをだますように設計されており、ユーザーが相互作用するように見せかけながら、実際には被害者のアプリに対して相互作用を行っています。\ -結果として、ユーザーは自分が実際に被害者のアプリ上で操作を行っていることを知ることができません。 +**タップジャッキング**は、**悪意のあるアプリケーション**が起動し、**被害者アプリケーションの上に配置される**攻撃です。一旦被害者アプリケーションが見えなくなると、そのユーザーインターフェースはユーザーをだまして相互作用させ、その操作を被害者アプリケーションに渡します。\ +実際には、ユーザーが被害者アプリケーションで操作を行っていることを知らないように**ユーザーを盲目化**しています。 ### 検出 -この攻撃に対して脆弱なアプリを検出するためには、Androidマニフェスト内の**エクスポートされたアクティビティ**を検索する必要があります(インテントフィルタを持つアクティビティはデフォルトで自動的にエクスポートされます)。エクスポートされたアクティビティを見つけたら、**それらがどのようなパーミッションを必要とするかを確認**してください。なぜなら、**悪意のあるアプリケーションもそのパーミッションが必要になるからです**。 +この攻撃に対して脆弱なアプリを検出するためには、Androidマニフェスト内の**エクスポートされたアクティビティ**を検索する必要があります(インテントフィルターを持つアクティビティはデフォルトで自動的にエクスポートされます)。エクスポートされたアクティビティを見つけたら、**それらがどの権限を必要とするかを確認**してください。これは**悪意のあるアプリケーションもその権限が必要になる**ためです。 ### 保護 -#### Android 12(API 31,32)以降 +#### Android 12(API 31,32)およびそれ以降 -[**このソースによると**](https://www.geeksforgeeks.org/tapjacking-in-android/)、Android 12(API 31および30)以降では、タップジャッキング攻撃は自動的にAndroidによって防止されます。したがって、アプリケーションが脆弱であっても、**それを悪用することはできません**。 +[**このソースによると**](https://www.geeksforgeeks.org/tapjacking-in-android/)**、Android 12(API 31および30)以降ではAndroidによってタップジャッキング攻撃が自動的に防止されます。したがって、アプリが脆弱であっても**それを悪用することはできません**。 #### `filterTouchesWhenObscured` -**`android:filterTouchesWhenObscured`**が**`true`**に設定されている場合、`View`は別の表示ウィンドウによって覆われている場合にはタッチを受け取りません。 +**`android:filterTouchesWhenObscured`**が**`true`**に設定されている場合、`View`は別の可視ウィンドウによってウィンドウが隠されているときにはタッチを受け取りません。 #### **`setFilterTouchesWhenObscured`** -Androidのバージョンが低い場合、属性**`setFilterTouchesWhenObscured`**を**`true`**に設定することで、この脆弱性の悪用を防ぐこともできます。\ -たとえば、ボタンが覆われている場合には自動的に**無効化される**ことがあります。 -```markup +属性**`setFilterTouchesWhenObscured`**がtrueに設定されている場合、Androidバージョンが低い場合でもこの脆弱性の悪用を防ぐことができます。\ +たとえば、**`true`**に設定されている場合、ボタンは**隠されている場合に自動的に無効になる**ことがあります。 +```xml