mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-wifi/ena
This commit is contained in:
parent
ce0b778167
commit
7eee0e0186
@ -3,7 +3,7 @@
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## 概要
|
||||
ほとんどの最新のAndroidフォンは、802.11モニターモードやフレームインジェクション機能なしで出荷されるBroadcom/Cypress Wi-Fiチップセットを内蔵しています。オープンソースのNexMonフレームワークは、これらの機能を追加するために独自のファームウェアをパッチし、それらを共有ライブラリ(`libnexmon.so`)とCLIヘルパー(`nexutil`)を通じて公開します。このライブラリをストックWi-Fiドライバーに事前ロードすることで、ルート化されたデバイスは生の802.11トラフィックをキャプチャし、任意のフレームをインジェクトできます。これにより、外部USBアダプターの必要がなくなります。
|
||||
ほとんどの最新のAndroidフォンは、802.11モニターモードやフレームインジェクション機能なしで出荷されるBroadcom/Cypress Wi-Fiチップセットを内蔵しています。オープンソースのNexMonフレームワークは、これらの機能を追加するために独自のファームウェアをパッチし、それらを共有ライブラリ(`libnexmon.so`)とCLIヘルパー(`nexutil`)を通じて公開します。このライブラリをストックWi-Fiドライバーにプリロードすることで、ルート化されたデバイスは生の802.11トラフィックをキャプチャし、任意のフレームをインジェクトできます。これにより、外部USBアダプターの必要がなくなります。
|
||||
|
||||
このページでは、完全にパッチされたSamsung Galaxy S10(BCM4375B1)を例にした迅速なワークフローを文書化しています。使用するものは以下の通りです:
|
||||
|
||||
@ -53,15 +53,15 @@ nexutil -m0; svc wifi enable
|
||||
```
|
||||
“Start monitor mode on airodump start”を有効にして、すべてのHijackerスキャンがネイティブモニターモード(`wlan0`の代わりに`wlan0mon`)で行われるようにします。
|
||||
|
||||
Hijackerが起動時にエラーを表示した場合は、共有ストレージに必要なディレクトリを作成し、アプリを再度開いてください。
|
||||
Hijackerが起動時にエラーを表示した場合は、共有ストレージに必要なディレクトリを作成し、アプリを再起動してください。
|
||||
```bash
|
||||
mkdir -p /storage/emulated/0/Hijacker
|
||||
```
|
||||
### それらの `nexutil` フラグは何を意味しますか?
|
||||
* **`-s0x613`** ファームウェア変数 0x613 (FCAP_FRAME_INJECTION) を書き込み → `1` (任意のフレームのTXを有効にする)。
|
||||
* **`-i`** インターフェースをモニターモードに設定 (radiotap ヘッダーが前に追加されます)。
|
||||
* **`-v2`** 詳細レベルを設定; `2` は確認とファームウェアバージョンを表示します。
|
||||
* **`-m0`** 管理モードを復元 ( *disable* コマンドで使用)。
|
||||
* **`-s0x613`** ファームウェア変数 0x613 (FCAP_FRAME_INJECTION) を書き込み → `1` (任意のフレームのTXを有効にします)。
|
||||
* **`-i`** インターフェースをモニターモードに設定します (radiotap ヘッダーが前に追加されます)。
|
||||
* **`-v2`** 詳細レベルを設定します; `2` は確認とファームウェアバージョンを表示します。
|
||||
* **`-m0`** 管理モードを復元します ( *disable* コマンドで使用されます)。
|
||||
|
||||
*Enable monitor mode* を実行した後、インターフェースがモニターステートになり、生のフレームをキャプチャできるようになります:
|
||||
```bash
|
||||
@ -82,14 +82,14 @@ nexutil -m0 && svc wifi enable
|
||||
---
|
||||
|
||||
## Kali NetHunter / chroot内での`libnexmon`の使用
|
||||
Kaliの標準ユーザースペースツールはNexMonを認識しませんが、`LD_PRELOAD`を使用して強制的に利用することができます:
|
||||
KaliのストックユーザースペースツールはNexMonを認識しませんが、`LD_PRELOAD`を使用して強制的に使用させることができます:
|
||||
|
||||
1. プリビルドされた共有オブジェクトをchrootにコピーします:
|
||||
```bash
|
||||
cp /sdcard/Download/kalilibnexmon.so <chroot>/lib/
|
||||
```
|
||||
2. **Androidホスト**からモニターモードを有効にします(上記のコマンドまたはHijackerを通じて)。
|
||||
3. Kali内でプリロードを使用して任意のワイヤレスツールを起動します:
|
||||
3. プリロードを使用してKali内の任意のワイヤレスツールを起動します:
|
||||
```bash
|
||||
sudo su
|
||||
export LD_PRELOAD=/lib/kalilibnexmon.so
|
||||
@ -106,7 +106,7 @@ wifite -i wlan0 # または aircrack-ng, mdk4 …
|
||||
* `wifite`、`hcxdumptool`、`airodump-ng`を使用してWPA(2/3-SAE)ハンドシェイクまたはPMKIDをキャプチャします。
|
||||
* クライアントが再接続するように強制するために、非認証/非関連フレームを注入します。
|
||||
* `mdk4`、`aireplay-ng`、Scapyなどを使用して任意の管理/データフレームを作成します。
|
||||
* 不正APを構築したり、電話から直接KARMA/MANA攻撃を実行します。
|
||||
* 電話から直接ロゲAPを構築したり、KARMA/MANA攻撃を実行したりします。
|
||||
|
||||
Galaxy S10のパフォーマンスは外部USB NICと同等です(約20 dBm TX、2-3 M pps RX)。
|
||||
|
||||
|
||||
BIN
src/images/discount.jpeg
Normal file
BIN
src/images/discount.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 186 KiB |
@ -12,7 +12,7 @@ android-applications-basics.md
|
||||
|
||||
## ADB (Android Debug Bridge)
|
||||
|
||||
これは、Androidデバイス(エミュレートまたは物理)に接続するために必要な主なツールです。\
|
||||
これは、Androidデバイス(エミュレートされたものまたは物理的なもの)に接続するために必要な主なツールです。\
|
||||
**ADB**は、コンピュータから**USB**または**ネットワーク**経由でデバイスを制御することを可能にします。このユーティリティは、**ファイルのコピー**、**アプリのインストール**と**アンインストール**、**シェルコマンドの実行**、**データのバックアップ**、**ログの読み取り**など、さまざまな機能を提供します。
|
||||
|
||||
adbの使い方を学ぶために、以下の[**ADB Commands**](adb-commands.md)のリストを確認してください。
|
||||
@ -25,7 +25,7 @@ adbの使い方を学ぶために、以下の[**ADB Commands**](adb-commands.md)
|
||||
## Other interesting tricks
|
||||
|
||||
- [Play Storeでの位置情報の偽装](spoofing-your-location-in-play-store.md)
|
||||
- [Shizuku Privileged API (ADBベースの非ルート特権アクセス)](shizuku-privileged-api.md)
|
||||
- [Shizuku Privileged API(ADBベースの非ルート特権アクセス)](shizuku-privileged-api.md)
|
||||
- **APKのダウンロード**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
|
||||
- デバイスからAPKを抽出:
|
||||
```bash
|
||||
@ -70,15 +70,15 @@ APKの**文字列**を確認するだけで、**パスワード**、**URL** ([ht
|
||||
- **ネットワークセキュリティ**: _res/xml/_内のカスタムネットワークセキュリティ設定(`android:networkSecurityConfig="@xml/network_security_config"`)は、証明書ピンやHTTPトラフィック設定などのセキュリティ詳細を指定できます。特定のドメインに対してHTTPトラフィックを許可する例があります。
|
||||
- **エクスポートされたアクティビティとサービス**: マニフェスト内のエクスポートされたアクティビティとサービスを特定することで、悪用される可能性のあるコンポーネントを明らかにできます。動的テスト中のさらなる分析により、これらのコンポーネントを悪用する方法が明らかになります。
|
||||
- **コンテンツプロバイダーとファイルプロバイダー**: 公開されたコンテンツプロバイダーは、不正アクセスやデータの変更を許可する可能性があります。ファイルプロバイダーの設定も注意深く確認する必要があります。
|
||||
- **ブロードキャストレシーバーとURLスキーム**: これらのコンポーネントは悪用される可能性があり、特に入力脆弱性に対するURLスキームの管理方法に注意が必要です。
|
||||
- **ブロードキャストレシーバーとURLスキーム**: これらのコンポーネントは悪用される可能性があり、特にURLスキームが入力脆弱性に対してどのように管理されているかに注意を払う必要があります。
|
||||
- **SDKバージョン**: `minSdkVersion`、`targetSDKVersion`、`maxSdkVersion`属性は、サポートされているAndroidバージョンを示し、セキュリティ上の理由から古い脆弱なAndroidバージョンをサポートしないことの重要性を強調します。
|
||||
|
||||
**strings.xml**ファイルからは、APIキー、カスタムスキーマ、その他の開発者ノートなどの機密情報が発見される可能性があり、これらのリソースを注意深く確認する必要があります。
|
||||
|
||||
### タップジャッキング
|
||||
|
||||
**タップジャッキング**は、**悪意のある** **アプリケーション**が起動され、**被害者アプリケーションの上に位置する**攻撃です。被害者アプリを視覚的に隠すと、そのユーザーインターフェースはユーザーを騙してそれに対話させるように設計されており、実際には被害者アプリに対してその対話を渡しています。\
|
||||
実際には、**ユーザーが被害者アプリでアクションを実行していることを知らないようにしています**。
|
||||
**タップジャッキング**は、**悪意のある** **アプリケーション**が起動され、**被害者アプリケーションの上に位置する**攻撃です。被害者アプリを視覚的に隠すと、そのユーザーインターフェースはユーザーを騙してそれと対話させるように設計されており、その間にその対話を被害者アプリに渡します。\
|
||||
実際には、**ユーザーが被害者アプリで実際にアクションを実行していることを知らないようにしています**。
|
||||
|
||||
詳細情報は以下を参照してください:
|
||||
|
||||
@ -88,7 +88,7 @@ tapjacking.md
|
||||
|
||||
### タスクハイジャック
|
||||
|
||||
**`launchMode`**が**`singleTask`**に設定され、`taskAffinity`が定義されていない**アクティビティ**は、タスクハイジャックに対して脆弱です。これは、**アプリケーション**がインストールされ、実際のアプリケーションの前に起動されると、**実際のアプリケーションのタスクをハイジャックする**可能性があることを意味します(つまり、ユーザーは**悪意のあるアプリケーションを使用していると思い込んでいる**)。
|
||||
**`launchMode`**が**`singleTask`**に設定され、`taskAffinity`が定義されていない**アクティビティ**は、タスクハイジャックに対して脆弱です。これは、**アプリケーション**がインストールされ、実際のアプリケーションの前に起動されると、**実際のアプリケーションのタスクをハイジャックする**可能性があることを意味します(つまり、ユーザーは**悪意のあるアプリケーションと対話していると思っている**)。
|
||||
|
||||
詳細情報は以下を参照してください:
|
||||
|
||||
@ -105,14 +105,14 @@ Androidでは、**内部**ストレージに**保存された**ファイルは
|
||||
1. **静的分析:**
|
||||
- `MODE_WORLD_READABLE`および`MODE_WORLD_WRITABLE`の使用が**注意深く検討されるべきです**。これらのモードは、**意図しないまたは不正なアクセス**にファイルを**さらす可能性があります**。
|
||||
2. **動的分析:**
|
||||
- アプリによって作成されたファイルに設定された**権限**を**確認**します。特に、ファイルが**全世界に対して読み取りまたは書き込み可能に設定されているか**を**チェック**します。これは重大なセキュリティリスクを引き起こす可能性があり、デバイスにインストールされた**任意のアプリケーション**が、出所や意図に関係なく、これらのファイルを**読み取ったり変更したり**できるようになります。
|
||||
- アプリによって作成されたファイルに設定された**権限**を**確認**します。特に、ファイルが**全世界に読み取りまたは書き込み可能に設定されているか**を**チェック**します。これは重大なセキュリティリスクを引き起こす可能性があり、デバイスにインストールされた**任意のアプリケーション**が、出所や意図に関係なく、これらのファイルを**読み取ったり変更したり**できるようになります。
|
||||
|
||||
**外部ストレージ**
|
||||
|
||||
**外部ストレージ**上のファイルを扱う際には、いくつかの注意が必要です:
|
||||
|
||||
1. **アクセス可能性**:
|
||||
- 外部ストレージ上のファイルは**全世界に対して読み取りおよび書き込み可能**です。つまり、任意のアプリケーションやユーザーがこれらのファイルにアクセスできます。
|
||||
- 外部ストレージ上のファイルは**全世界に読み取りおよび書き込み可能**です。つまり、任意のアプリケーションやユーザーがこれらのファイルにアクセスできます。
|
||||
2. **セキュリティの懸念**:
|
||||
- アクセスの容易さを考慮すると、**機密情報を外部ストレージに保存しないことが推奨されます**。
|
||||
- 外部ストレージは取り外し可能であり、任意のアプリケーションによってアクセスされる可能性があるため、セキュリティが低下します。
|
||||
@ -131,7 +131,7 @@ Androidでは、**内部**ストレージに**保存された**ファイルは
|
||||
- **共有設定**: Androidは各アプリケーションが`/data/data/<packagename>/shared_prefs/`パスにXMLファイルを簡単に保存できるようにしており、そのフォルダ内に平文で機密情報が見つかることがあります。
|
||||
- **データベース**: Androidは各アプリケーションが`/data/data/<packagename>/databases/`パスにSQLiteデータベースを簡単に保存できるようにしており、そのフォルダ内に平文で機密情報が見つかることがあります。
|
||||
|
||||
### TLSの破損
|
||||
### 壊れたTLS
|
||||
|
||||
**すべての証明書を受け入れる**
|
||||
|
||||
@ -267,10 +267,10 @@ You need to activate the **debugging** options and it will be cool if you can **
|
||||
|
||||
**Logging**
|
||||
|
||||
開発者は、**デバッグ情報**を公開することに注意すべきです。これは機密データの漏洩につながる可能性があります。アプリケーションのログを監視して機密情報を特定し保護するために、[**pidcat**](https://github.com/JakeWharton/pidcat)と`adb logcat`を推奨します。**Pidcat**は使いやすさと可読性のために好まれます。
|
||||
開発者は、**デバッグ情報**を公開することに注意すべきです。これは機密データの漏洩につながる可能性があります。アプリケーションログを監視して機密情報を特定し保護するために、[**pidcat**](https://github.com/JakeWharton/pidcat)と`adb logcat`を推奨します。**Pidcat**は使いやすさと可読性のために好まれます。
|
||||
|
||||
> [!WARNING]
|
||||
> **Android 4.0以降**、**アプリケーションは自分自身のログにのみアクセスできる**ことに注意してください。したがって、アプリケーションは他のアプリのログにアクセスできません。\
|
||||
> **Android 4.0以降**、**アプリケーションは自分のログにのみアクセスできる**ことに注意してください。したがって、アプリケーションは他のアプリのログにアクセスできません。\
|
||||
> それでも、**機密情報をログに記録しない**ことを推奨します。
|
||||
|
||||
**Copy/Paste Buffer Caching**
|
||||
@ -326,30 +326,30 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
|
||||
**機密情報の漏洩**
|
||||
|
||||
**アクティビティは結果を返すこともできます**。もし、**`setResult`**メソッドを呼び出し、**機密情報を返す**エクスポートされた保護されていないアクティビティを見つけることができれば、機密情報の漏洩があります。
|
||||
**アクティビティは結果を返すこともできます**。もし、エクスポートされていて保護されていないアクティビティが**`setResult`**メソッドを呼び出し、**機密情報を返している**場合、機密情報の漏洩があります。
|
||||
|
||||
#### タップジャッキング
|
||||
|
||||
タップジャッキングが防止されていない場合、エクスポートされたアクティビティを悪用して**ユーザーに予期しないアクションを実行させる**ことができます。タップジャッキングについての詳細は[**こちらのリンクを参照してください**](#tapjacking)。
|
||||
タップジャッキングが防止されていない場合、エクスポートされたアクティビティを悪用して**ユーザーに予期しないアクションを実行させる**ことができます。タップジャッキングについての詳細は、[**こちらのリンクを参照してください**](#tapjacking)。
|
||||
|
||||
### コンテンツプロバイダーの悪用 - 機密情報へのアクセスと操作
|
||||
|
||||
[**コンテンツプロバイダーとは何かを再確認したい場合は、こちらをお読みください。**](android-applications-basics.md#content-provider)\
|
||||
[**コンテンツプロバイダーについて復習したい場合は、こちらをお読みください。**](android-applications-basics.md#content-provider)\
|
||||
コンテンツプロバイダーは基本的に**データを共有する**ために使用されます。アプリに利用可能なコンテンツプロバイダーがある場合、そこから**機密データを抽出**できるかもしれません。また、**SQLインジェクション**や**パストラバーサル**の可能性をテストすることも興味深いです。これらは脆弱である可能性があります。
|
||||
|
||||
[**Drozerを使用してコンテンツプロバイダーを悪用する方法を学びましょう。**](drozer-tutorial/index.html#content-providers)
|
||||
|
||||
### **サービスの悪用**
|
||||
|
||||
[**サービスとは何かを再確認したい場合は、こちらをお読みください。**](android-applications-basics.md#services)\
|
||||
[**サービスについて復習したい場合は、こちらをお読みください。**](android-applications-basics.md#services)\
|
||||
サービスのアクションは`onStartCommand`メソッドで開始されることを覚えておいてください。
|
||||
|
||||
サービスは基本的に**データを受信**し、**処理**し、**応答**(またはしない)を返すものです。したがって、アプリケーションがいくつかのサービスをエクスポートしている場合は、**コードを確認**して何をしているのかを理解し、**動的にテスト**して機密情報を抽出したり、認証手段をバイパスしたりする必要があります。\
|
||||
サービスは基本的に**データを受信**し、**処理**し、**応答**(またはしない)を返すことができるものです。したがって、アプリケーションがいくつかのサービスをエクスポートしている場合は、**コードを確認**して何をしているのかを理解し、**動的にテスト**して機密情報を抽出したり、認証手段をバイパスしたりする必要があります。\
|
||||
[**Drozerを使用してサービスを悪用する方法を学びましょう。**](drozer-tutorial/index.html#services)
|
||||
|
||||
### **ブロードキャストレシーバーの悪用**
|
||||
|
||||
[**ブロードキャストレシーバーとは何かを再確認したい場合は、こちらをお読みください。**](android-applications-basics.md#broadcast-receivers)\
|
||||
[**ブロードキャストレシーバーについて復習したい場合は、こちらをお読みください。**](android-applications-basics.md#broadcast-receivers)\
|
||||
ブロードキャストレシーバーのアクションは`onReceive`メソッドで開始されることを覚えておいてください。
|
||||
|
||||
ブロードキャストレシーバーは、特定のメッセージを待機しています。レシーバーがメッセージをどのように処理するかによって、脆弱である可能性があります。\
|
||||
@ -371,18 +371,18 @@ _パッケージ名を**省略する**ことができ、モバイルは自動的
|
||||
```
|
||||
**実行されるコード**
|
||||
|
||||
**アプリで実行されるコード**を見つけるために、ディープリンクによって呼び出されるアクティビティに移動し、関数**`onNewIntent`**を検索します。
|
||||
**アプリ内で実行されるコード**を見つけるために、ディープリンクによって呼び出されるアクティビティに移動し、関数**`onNewIntent`**を検索します。
|
||||
|
||||
 (1) (1) (1).png>)
|
||||
|
||||
**機密情報**
|
||||
|
||||
ディープリンクを見つけるたびに、**URLパラメータを介して機密データ(パスワードなど)を受信していないか確認してください**。他のアプリケーションが**ディープリンクを偽装してそのデータを盗む可能性があります!**
|
||||
ディープリンクを見つけるたびに、**URLパラメータを介して機密データ(パスワードなど)を受信していないか確認する必要があります**。他のアプリケーションが**ディープリンクを偽装してそのデータを盗む可能性があるからです!**
|
||||
|
||||
**パス内のパラメータ**
|
||||
|
||||
**URLのパス内にパラメータを使用しているディープリンクがあるかどうかも確認する必要があります**。例えば、`https://api.example.com/v1/users/{username}` のように。この場合、`example://app/users?username=../../unwanted-endpoint%3fparam=value` のようにパスのトラバーサルを強制することができます。\
|
||||
アプリケーション内で正しいエンドポイントを見つけた場合、**オープンリダイレクト**(パスの一部がドメイン名として使用される場合)、**アカウント乗っ取り**(CSRFトークンなしでユーザーの詳細を変更でき、脆弱なエンドポイントが正しいメソッドを使用している場合)やその他の脆弱性を引き起こす可能性があります。詳細は[こちら](http://dphoeniixx.com/2020/12/13-2/)を参照してください。
|
||||
**URLのパス内でパラメータを使用しているディープリンクがあるかどうかも確認する必要があります**。例えば、`https://api.example.com/v1/users/{username}` のように。この場合、`example://app/users?username=../../unwanted-endpoint%3fparam=value` のようにパスのトラバーサルを強制することができます。\
|
||||
アプリケーション内で正しいエンドポイントを見つけた場合、**オープンリダイレクト**(パスの一部がドメイン名として使用される場合)、**アカウント乗っ取り**(CSRFトークンなしでユーザーの詳細を変更でき、脆弱なエンドポイントが正しいメソッドを使用している場合)、およびその他の脆弱性を引き起こす可能性があります。詳細は[こちら](http://dphoeniixx.com/2020/12/13-2/)を参照してください。
|
||||
|
||||
**さらなる例**
|
||||
|
||||
@ -414,15 +414,15 @@ HTTPトラフィックを検査するには、**プロキシツールの証明
|
||||
|
||||
SSLピンニングが実装されている場合、HTTPSトラフィックを検査するためにそれをバイパスする必要があります。この目的のためにさまざまな方法があります:
|
||||
|
||||
- 自動的に**apkを修正**してSSLピンニングを**バイパス**するには、[**apk-mitm**](https://github.com/shroudedcode/apk-mitm)を使用します。このオプションの最大の利点は、SSLピンニングをバイパスするためにルートが必要ないことですが、アプリケーションを削除して新しいものを再インストールする必要があり、これが常に機能するわけではありません。
|
||||
- **Frida**を使用してこの保護をバイパスすることもできます(以下で説明)。Burp+Frida+Genymotionを使用するためのガイドはこちらです:[https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||
- **objection**を使用してSSLピンニングを**自動的にバイパス**することもできます(以下で説明):`objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
- **MobSF動的分析**を使用してSSLピンニングを**自動的にバイパス**することも試みることができます(以下で説明)。
|
||||
- 自動的に**apkを修正**してSSLピンニングを**バイパス**するには、[**apk-mitm**](https://github.com/shroudedcode/apk-mitm)を使用します。このオプションの最大の利点は、SSLピンニングをバイパスするためにrootが必要ないことですが、アプリケーションを削除して新しいものを再インストールする必要があり、これが常に機能するわけではありません。
|
||||
- **Frida**を使用してこの保護をバイパスすることもできます。Burp+Frida+Genymotionを使用するためのガイドはこちらです:[https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||
- **objection**を使用してSSLピンニングを**自動的にバイパス**することもできます:`objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
- **MobSF動的分析**を使用してSSLピンニングを**自動的にバイパス**することも試みることができます(下記で説明)。
|
||||
- まだキャプチャしていないトラフィックがあると思われる場合は、**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脆弱性を検索することも重要です。これらの脆弱性を特定し、軽減するための詳細情報はこの要約の範囲を超えていますが、他の場所で広範にカバーされています。
|
||||
|
||||
### Frida
|
||||
|
||||
@ -431,7 +431,7 @@ SSLピンニングが実装されている場合、HTTPSトラフィックを検
|
||||
Androidアプリケーションをペンテストするには、Fridaの使い方を知っておく必要があります。
|
||||
|
||||
- Fridaの使い方を学ぶ:[**Fridaチュートリアル**](frida-tutorial/index.html)
|
||||
- Fridaでのアクション用の「GUI」: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
|
||||
- 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)
|
||||
- [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace)に示されているようにFridaを読み込んで、アンチデバッグ/アンチFridaメカニズムをバイパスしてみてください(ツール[linjector](https://github.com/erfur/linjector-rs))。
|
||||
@ -455,9 +455,9 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
|
||||
```
|
||||
### **Keystore内の機密データ**
|
||||
|
||||
Androidでは、Keystoreは機密データを保存するのに最適な場所ですが、十分な権限があれば**アクセスすることが可能です**。アプリケーションはここに**平文で機密データを保存する傾向があるため**、ペンテストはそれを確認する必要があります。ルートユーザーやデバイスに物理的にアクセスできる誰かがこのデータを盗む可能性があります。
|
||||
Androidでは、Keystoreは機密データを保存するのに最適な場所ですが、十分な権限があれば**アクセスすることが可能です**。アプリケーションはここに**平文で機密データを保存する傾向があるため**、ペンテストはルートユーザーとしてこれを確認する必要があります。さもなければ、物理的にデバイスにアクセスできる誰かがこのデータを盗むことができるかもしれません。
|
||||
|
||||
アプリがKeystoreにデータを保存していても、データは暗号化されているべきです。
|
||||
アプリが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)
|
||||
```bash
|
||||
@ -465,7 +465,7 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
|
||||
```
|
||||
### **指紋/生体認証バイパス**
|
||||
|
||||
次のFridaスクリプトを使用することで、Androidアプリケーションが特定の機密領域を保護するために行っている**指紋認証をバイパス**することが可能になるかもしれません:
|
||||
次のFridaスクリプトを使用することで、Androidアプリケーションが特定の機密領域を保護するために実行している**指紋認証をバイパス**することが可能になるかもしれません:
|
||||
```bash
|
||||
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
|
||||
```
|
||||
@ -487,14 +487,14 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
|
||||
### Intent Injection
|
||||
|
||||
開発者は、これらのインテントを処理し、`startActivity(...)`や`sendBroadcast(...)`などのメソッドに渡すプロキシコンポーネント(アクティビティ、サービス、ブロードキャストレシーバーなど)を作成することがよくありますが、これはリスクを伴います。
|
||||
開発者は、これらのインテントを処理し、`startActivity(...)`や`sendBroadcast(...)`などのメソッドに渡すプロキシコンポーネント(アクティビティ、サービス、ブロードキャストレシーバー)を作成することがよくありますが、これはリスクを伴います。
|
||||
|
||||
危険は、攻撃者がこれらのインテントを誤って誘導することによって、非エクスポートアプリコンポーネントをトリガーしたり、機密コンテンツプロバイダーにアクセスしたりできることにあります。注目すべき例は、`WebView`コンポーネントがURLを`Intent`オブジェクトに変換し、`Intent.parseUri(...)`を介して実行することで、悪意のあるインテント注入につながる可能性があることです。
|
||||
|
||||
### Essential Takeaways
|
||||
|
||||
- **Intent Injection**は、ウェブのオープンリダイレクト問題に似ています。
|
||||
- 脆弱性は、`Intent`オブジェクトをエクストラとして渡すことに関与し、これがリダイレクトされて安全でない操作を実行する可能性があります。
|
||||
- 脆弱性は、`Intent`オブジェクトをエクストラとして渡すことに関与し、これが不正な操作を実行するためにリダイレクトされる可能性があります。
|
||||
- 攻撃者に非エクスポートコンポーネントやコンテンツプロバイダーを露出させる可能性があります。
|
||||
- `WebView`のURLから`Intent`への変換は、意図しないアクションを促進する可能性があります。
|
||||
|
||||
@ -505,7 +505,7 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
- **SQL Injection:** 動的クエリやコンテンツプロバイダーを扱う際は、パラメータ化されたクエリを使用していることを確認してください。
|
||||
- **JavaScript Injection (XSS):** すべてのWebViewに対してJavaScriptとプラグインのサポートが無効になっていることを確認してください(デフォルトで無効)。 [More info here](webview-attacks.md#javascript-enabled).
|
||||
- **Local File Inclusion:** WebViewはファイルシステムへのアクセスを無効にする必要があります(デフォルトで有効) - `(webview.getSettings().setAllowFileAccess(false);)`。 [More info here](webview-attacks.md#javascript-enabled).
|
||||
- **Eternal cookies**: Androidアプリケーションがセッションを終了するとき、クッキーが取り消されない場合や、ディスクに保存されることがあります。
|
||||
- **Eternal cookies**: Androidアプリケーションがセッションを終了するとき、クッキーが取り消されない場合や、ディスクに保存される可能性があります。
|
||||
- [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
|
||||
---
|
||||
@ -526,14 +526,14 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
||||
MobSFは**Android**(apk)**、IOS**(ipa) **およびWindows**(apx)アプリケーションを分析できます(_Windowsアプリケーションは、WindowsホストにインストールされたMobSFから分析する必要があります_)。\
|
||||
また、**Android**または**IOS**アプリのソースコードを含む**ZIP**ファイルを作成すると(アプリケーションのルートフォルダーに移動し、すべてを選択してZIPファイルを作成)、それも分析できます。
|
||||
|
||||
MobSFは**diff/Compare**分析を行い、**VirusTotal**を統合することも可能です(_MobSF/settings.py_にAPIキーを設定し、`VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`を有効にする必要があります)。`VT_UPLOAD`を`False`に設定すると、**ハッシュ**がファイルの代わりに**アップロード**されます。
|
||||
MobSFはまた、**diff/Compare**分析を行い、**VirusTotal**を統合することも可能です(_MobSF/settings.py_にAPIキーを設定し、次のように有効にする必要があります: `VT_ENABLED = TRUE` `VT_API_KEY = <Your API key>` `VT_UPLOAD = TRUE`)。`VT_UPLOAD`を`False`に設定すると、**ハッシュ**がファイルの代わりに**アップロード**されます。
|
||||
|
||||
### MobSFによる支援された動的分析
|
||||
|
||||
**MobSF**は**Android**における**動的分析**にも非常に役立ちますが、その場合はホストにMobSFと**genymotion**をインストールする必要があります(VMやDockerでは動作しません)。_注:最初に**genymotionでVMを起動**し、**その後MobSFを起動**する必要があります。_\
|
||||
**MobSF動的アナライザー**は以下を行うことができます:
|
||||
**MobSF**は**Android**における**動的分析**にも非常に役立ちますが、その場合はホストにMobSFと**genymotion**をインストールする必要があります(VMやDockerでは動作しません)。_注: まず**genymotionでVMを起動**し、**その後MobSFを起動**する必要があります。_\
|
||||
**MobSF動的アナライザー**は以下のことができます:
|
||||
|
||||
- **アプリケーションデータをダンプ**(URL、ログ、クリップボード、あなたが撮ったスクリーンショット、"Exported Activity Tester"によって作成されたスクリーンショット、メール、SQLiteデータベース、XMLファイル、その他の作成されたファイル)。これらはすべて自動的に行われますが、スクリーンショットは、撮りたいときにボタンを押す必要があります。または、すべてのエクスポートされたアクティビティのスクリーンショットを取得するために"Exported Activity Tester"を押す必要があります。
|
||||
- **アプリケーションデータをダンプ**(URL、ログ、クリップボード、あなたが撮ったスクリーンショット、"**Exported Activity Tester**"によって作成されたスクリーンショット、メール、SQLiteデータベース、XMLファイル、その他の作成されたファイル)。これらはすべて自動的に行われますが、スクリーンショットは、撮りたいときにボタンを押す必要があります。または、すべてのエクスポートされたアクティビティのスクリーンショットを取得するために"**Exported Activity Tester**"を押す必要があります。
|
||||
- **HTTPSトラフィックをキャプチャ**
|
||||
- **Frida**を使用して**ランタイム**の**情報**を取得
|
||||
|
||||
@ -541,24 +541,24 @@ Androidの**バージョン > 5**では、**Frida**が**自動的に起動**し
|
||||
|
||||
**Frida**
|
||||
|
||||
デフォルトでは、SSLピンニング、**ルート検出**、**デバッガ検出**を**バイパス**し、**興味深いAPI**を**監視**するためにいくつかのFridaスクリプトを使用します。\
|
||||
MobSFはまた、**エクスポートされたアクティビティを呼び出し**、それらの**スクリーンショットを取得**し、レポート用に**保存**することもできます。
|
||||
デフォルトでは、SSLピンニング、**ルート検出**、**デバッガ検出**を**バイパス**し、**興味深いAPI**を**監視**するためにいくつかのFridaスクリプトも使用します。\
|
||||
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**内で見ることができます。
|
||||
**動的テストを開始**するには、緑のボタン"**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**"内で見ることができます)。
|
||||
|
||||
.png>)
|
||||
|
||||
さらに、いくつかの補助的なFrida機能があります:
|
||||
|
||||
- **読み込まれたクラスを列挙**:すべての読み込まれたクラスを表示します
|
||||
- **文字列をキャプチャ**:アプリケーションを使用中にキャプチャされたすべての文字列を表示します(非常にノイジーです)
|
||||
- **文字列比較をキャプチャ**:非常に役立つ可能性があります。**比較されている2つの文字列**と、結果がTrueかFalseかを表示します。
|
||||
- **クラスメソッドを列挙**:クラス名(例:"java.io.File")を入力すると、そのクラスのすべてのメソッドが表示されます。
|
||||
- **クラスパターンを検索**:パターンでクラスを検索
|
||||
- **クラスメソッドをトレース**:**クラス全体をトレース**(そのクラスのすべてのメソッドの入力と出力を確認)。デフォルトでは、MobSFは興味深いAndroid APIメソッドをいくつかトレースします。
|
||||
- **読み込まれたクラスを列挙**: すべての読み込まれたクラスを表示します
|
||||
- **文字列をキャプチャ**: アプリケーションを使用中にキャプチャされたすべての文字列を表示します(非常にノイジーです)
|
||||
- **文字列比較をキャプチャ**: 非常に便利です。**比較されている2つの文字列**と、結果がTrueかFalseかを表示します。
|
||||
- **クラスメソッドを列挙**: クラス名(例:"java.io.File")を入力すると、そのクラスのすべてのメソッドが表示されます。
|
||||
- **クラスパターンを検索**: パターンでクラスを検索
|
||||
- **クラスメソッドをトレース**: **クラス全体をトレース**(そのクラスのすべてのメソッドの入力と出力を確認)。デフォルトでは、MobSFは興味深いAndroid APIメソッドをいくつかトレースします。
|
||||
|
||||
使用したい補助モジュールを選択したら、"Start Instrumentation"を押すと、すべての出力が"Frida Live Logs"に表示されます。
|
||||
使用したい補助モジュールを選択したら、"**Start Intrumentation**"を押すと、すべての出力が"**Frida Live Logs**"に表示されます。
|
||||
|
||||
**Shell**
|
||||
|
||||
@ -607,7 +607,7 @@ qark --java path/to/specific/java/file.java
|
||||
```
|
||||
### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git)
|
||||
|
||||
- すべての抽出されたファイルを簡単に参照できるように表示
|
||||
- 参照用にすべての抽出ファイルを表示
|
||||
- APKファイルを自動的にJavaおよびSmali形式にデコンパイル
|
||||
- 一般的な脆弱性と動作のためにAndroidManifest.xmlを分析
|
||||
- 一般的な脆弱性と動作のための静的ソースコード分析
|
||||
@ -618,7 +618,7 @@ 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`ファイルに集中しており、各企業やテスターは自分たちのニーズに応じて分析するための独自のルールを作成できます。
|
||||
|
||||
@ -650,7 +650,7 @@ androbugs.exe -f [APK file]
|
||||
|
||||
**Androwarn**は、Androidアプリケーションによって開発された潜在的な悪意のある動作を検出し、ユーザーに警告することを主な目的としたツールです。
|
||||
|
||||
検出は、アプリケーションのDalvikバイトコードを**静的分析**することで行われ、**Smali**として表現されます。[`androguard`](https://github.com/androguard/androguard)ライブラリを使用しています。
|
||||
検出は、アプリケーションのDalvikバイトコードの**静的分析**を使用して行われ、**Smali**として表現されます。[`androguard`](https://github.com/androguard/androguard)ライブラリを使用しています。
|
||||
|
||||
このツールは、次のような「悪い」アプリケーションの**一般的な動作**を探します: テレフォニー識別子の流出、音声/ビデオフローの傍受、PIMデータの変更、任意のコード実行...
|
||||
```
|
||||
@ -668,7 +668,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
- [smalisca](https://github.com/dorneanu/smalisca)、[ClassyShark](https://github.com/google/android-classyshark)、[androbugs](https://github.com/AndroBugs/AndroBugs_Framework)、[androwarn](https://github.com/maaaaz/androwarn)、[APKiD](https://github.com/rednaga/APKiD)を使用してAPKを分析する
|
||||
- 正規表現を使用してAPKからプライベート情報を抽出する
|
||||
- マニフェストを分析する
|
||||
- [pyssltest](https://github.com/moheshmohan/pyssltest)、[testssl](https://github.com/drwetter/testssl.sh)、および[whatweb](https://github.com/urbanadventurer/WhatWeb)を使用して見つかったドメインを分析する
|
||||
- [pyssltest](https://github.com/moheshmohan/pyssltest)、[testssl](https://github.com/drwetter/testssl.sh)、[whatweb](https://github.com/urbanadventurer/WhatWeb)を使用して見つかったドメインを分析する
|
||||
- [apk-deguard.com](http://www.apk-deguard.com)を介してAPKをデオブフスケートする
|
||||
|
||||
### Koodous
|
||||
@ -691,15 +691,15 @@ APKをデオブフスケートするためのステップバイステップガ
|
||||
|
||||
(そのガイドから)最後に確認したとき、Dexguardの動作モードは次のとおりでした:
|
||||
|
||||
- リソースをInputStreamとして読み込む;
|
||||
- 結果をFilterInputStreamから継承したクラスに渡して復号化する;
|
||||
- リバースエンジニアに数分の時間を無駄にさせるために無駄な難読化を行う;
|
||||
- 復号化された結果をZipInputStreamに渡してDEXファイルを取得する;
|
||||
- リソースをInputStreamとして読み込む;
|
||||
- 結果をFilterInputStreamから継承したクラスに渡して復号化する;
|
||||
- リバースエンジニアに数分の時間を無駄にさせるために無駄な難読化を行う;
|
||||
- 復号化された結果をZipInputStreamに渡してDEXファイルを取得する;
|
||||
- 最後に、`loadDex`メソッドを使用して結果のDEXをリソースとして読み込む。
|
||||
|
||||
### [DeGuard](http://apk-deguard.com)
|
||||
|
||||
**DeGuardは、Androidの難読化ツールによって行われた難読化プロセスを逆転させます。これにより、コード検査やライブラリの予測など、数多くのセキュリティ分析が可能になります。**
|
||||
**DeGuardは、Androidの難読化ツールによって行われた難読化プロセスを逆転させます。これにより、コード検査やライブラリの予測を含む多数のセキュリティ分析が可能になります。**
|
||||
|
||||
難読化されたAPKを彼らのプラットフォームにアップロードできます。
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ Shizukuは、**`app_process`を使用して特権のあるJavaプロセスを生
|
||||
### 1.1 ワイヤレスADB(Android 11+)
|
||||
1. **開発者オプション ➜ ワイヤレスデバッグ**を有効にし、デバイスをペアリングします。
|
||||
2. Shizukuアプリ内で**「ワイヤレスデバッグ経由で開始」**を選択し、ペアリングコードをコピーします。
|
||||
3. サービスは次回の再起動まで生存します(ワイヤレスデバッグセッションは起動時にクリアされます)。
|
||||
3. サービスは次回の再起動まで生存します(ワイヤレスデバッグセッションはブート時にクリアされます)。
|
||||
|
||||
### 1.2 USB / ローカルADBワンライナー
|
||||
```bash
|
||||
@ -52,12 +52,12 @@ adb shell dumpsys activity service moe.shizuku.privileged.api | head
|
||||
IBinder binder = ShizukuProvider.getBinder();
|
||||
IPackageManager pm = IPackageManager.Stub.asInterface(binder);
|
||||
```
|
||||
この時点から、アプリは**`shell`ユーザー**が呼び出すことができる任意のメソッドを呼び出すことができます - 例えば:
|
||||
この時点から、アプリは**`shell`ユーザー**が呼び出す可能性のある任意のメソッドを呼び出すことができます – 例えば:
|
||||
```java
|
||||
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
|
||||
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
|
||||
```
|
||||
**170以上のShizuku対応アプリ**のキュレーションリストは[awesome-shizuku](https://github.com/timschneeb/awesome-shizuku)で管理されています。
|
||||
170以上の**Shizuku対応アプリ**のキュレーションリストは[awesome-shizuku](https://github.com/timschneeb/awesome-shizuku)で管理されています。
|
||||
|
||||
---
|
||||
## 3. Rish – Termux内の昇格シェル
|
||||
@ -102,9 +102,9 @@ pm uninstall --user 0 com.miui.weather2
|
||||
組織はこれをMDMを通じてブロックするか、`settings put global development_settings_enabled 0`を使用できます。
|
||||
2. サービスは`moe.shizuku.privileged.api`という名前で自らを登録します。
|
||||
シンプルな`adb shell service list | grep shizuku`(またはエンドポイントセキュリティルール)がその存在を検出します。
|
||||
3. 機能は`shell`ユーザーがすでにできることに制限されており、**root**ではありません。
|
||||
3. 機能は`shell`ユーザーがすでにできることに制限されており、**rootではありません**。
|
||||
`system`または`root`ユーザーを必要とする敏感なAPIには依然としてアクセスできません。
|
||||
4. セッションは**再起動後に生き残らない**、デバイスがルート化されておりShizukuがスタートアップデーモンとして構成されていない限り。
|
||||
4. セッションは**再起動後に生き残りません**、デバイスがルート化されており、Shizukuがスタートアップデーモンとして構成されている場合を除きます。
|
||||
|
||||
---
|
||||
## 5. 緩和策
|
||||
|
||||
@ -25,13 +25,13 @@
|
||||
|
||||
### Decrypting the app
|
||||
|
||||
IPAを復号化するために、インストールします。ただし、古い脱獄iPhoneを持っている場合、アプリケーションによってサポートされていない可能性があるため、通常、アプリは最新のバージョンのみをサポートします。
|
||||
IPAを復号化するために、インストールします。ただし、古い脱獄iPhoneを持っている場合、アプリケーションによってはそのバージョンがサポートされない可能性があります。通常、アプリは最新のバージョンのみをサポートします。
|
||||
|
||||
したがって、インストールするには、IPAを解凍するだけです:
|
||||
```bash
|
||||
unzip redacted.ipa -d unzipped
|
||||
```
|
||||
`Info.plist`を確認して、サポートされている最小バージョンを確認し、デバイスがそれより古い場合は、その値を変更してサポートされるようにします。
|
||||
`Info.plist`を確認して、サポートされている最小バージョンを確認し、デバイスがそれより古い場合は、値を変更してサポートされるようにします。
|
||||
|
||||
IPAを再圧縮します:
|
||||
```bash
|
||||
@ -46,13 +46,14 @@ ideviceinstaller -i no-min-version.ipa -w
|
||||
|
||||
インストールが完了したら、Cydia から **Iridium tweak** を使用して復号化された IPA を取得できます。
|
||||
|
||||
|
||||
### 権限のパッチと再署名
|
||||
|
||||
`get-task-allow` 権限でアプリケーションを再署名するために、`app-signer`、`codesign`、および `iResign` のようなツールがいくつか利用可能です。`app-signer` は非常にユーザーフレンドリーなインターフェースを持ち、再署名する IPA ファイルを指定し、**`get-task-allow` を設定し**、使用する証明書とプロビジョニングプロファイルを指定することができます。
|
||||
`get-task-allow` 権限でアプリケーションを再署名するために、`app-signer`、`codesign`、および `iResign` のようなツールがいくつか利用可能です。`app-signer` は非常にユーザーフレンドリーなインターフェースを持ち、再署名する IPA ファイルを指定し、**`get-task-allow` を設定**し、使用する証明書とプロビジョニングプロファイルを指定することが非常に簡単です。
|
||||
|
||||
証明書と署名プロファイルに関しては、Apple は Xcode を通じてすべてのアカウントに **無料の開発者署名プロファイル** を提供しています。アプリを作成し、1つを設定してください。その後、`Settings` → `Privacy & Security` に移動し、`Developer Mode` をクリックして **iPhone に開発者アプリを信頼させる** ように設定します。
|
||||
|
||||
再署名された IPA を使用して、デバイスにインストールし、ペンテストを行う準備が整いました:
|
||||
再署名された IPA を使用して、デバイスにインストールしてペンテストを行う準備が整いました:
|
||||
```bash
|
||||
ideviceinstaller -i resigned.ipa -w
|
||||
```
|
||||
@ -66,18 +67,18 @@ iOS 16以降、Appleは**Developer Mode**を導入しました。`get_task_allow
|
||||
2. **設定 → プライバシーとセキュリティ → Developer Mode**に移動し、オンに切り替えます。
|
||||
3. デバイスが再起動します。パスコードを入力した後、**Developer Modeをオンにする**ように求められます。
|
||||
|
||||
Developer Modeは、無効にするか電話を初期化するまでアクティブなままですので、このステップはデバイスごとに一度だけ実行する必要があります。[Appleのドキュメント](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device)がセキュリティの影響を説明しています。
|
||||
Developer Modeは、無効にするか電話を初期化するまでアクティブなままであるため、このステップはデバイスごとに一度だけ実行する必要があります。[Appleのドキュメント](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device)がセキュリティの影響を説明しています。
|
||||
|
||||
### 現代のサイドロードオプション
|
||||
|
||||
現在、脱獄なしでIPAをサイドロードし、再署名を最新の状態に保つための成熟した方法がいくつかあります:
|
||||
現在、脱獄なしでサイドロードし、再署名されたIPAを最新の状態に保つための成熟した方法がいくつかあります:
|
||||
|
||||
| ツール | 要件 | 強み | 制限 |
|
||||
|------|--------------|-----------|-------------|
|
||||
| **AltStore 2 / SideStore** | IPAを7日ごとに無料の開発プロファイルで再署名するmacOS/Windows/Linuxのコンパニオン | Wi-Fi経由の自動リロード、iOS 17まで動作 | 同じネットワーク上にコンピュータが必要、Appleによる3アプリ制限 |
|
||||
| **AltStore 2 / SideStore** | macOS/Windows/Linuxのコンパニオンが7日ごとに無料の開発プロファイルでIPAを再署名 | Wi-Fi経由の自動リロード、iOS 17まで動作 | 同じネットワーク上にコンピュータが必要、Appleによる3アプリ制限 |
|
||||
| **TrollStore 1/2** | CoreTrustバグに脆弱なiOS 14 – 15.4.1のデバイス | *永久的*な署名(7日制限なし);インストール後はコンピュータ不要 | iOS 15.5+ではサポートされていない(バグが修正された) |
|
||||
|
||||
現在のiOSバージョンでのルーチンのペンテストには、Alt/Side-Storeが通常最も実用的な選択です。
|
||||
現在のiOSバージョンでのルーチンのペンテストには、Alt/Side-Storeが通常最も実用的な選択肢です。
|
||||
|
||||
### フック / 動的インスツルメンテーション
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ Telnetは、ユーザーがネットワークを介してコンピュータに
|
||||
```
|
||||
## **列挙**
|
||||
|
||||
### **バナーグラビング**
|
||||
### **バナーグラブ**
|
||||
```bash
|
||||
nc -vn <IP> 23
|
||||
```
|
||||
@ -23,7 +23,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||||
```
|
||||
スクリプト `telnet-ntlm-info.nse` は NTLM 情報 (Windows バージョン) を取得します。
|
||||
|
||||
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためにより複雑な(または単に異なる)一連の規約を使用することに合意できるようにするために、"**DO, DON'T, WILL, WON'T**" 構造と共に使用されるさまざまな "**options**" があります。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。
|
||||
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためにより複雑な(または単に異なる)一連の規約を使用することに合意できるようにするために、"**DO, DON'T, WILL, WON'T**" 構造で使用されるさまざまな "**options**" が含まれています。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。
|
||||
|
||||
**このオプションを列挙することが可能であることは知っていますが、方法がわからないので、知っている場合は教えてください。**
|
||||
|
||||
@ -70,8 +70,8 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
|
||||
### 最近の脆弱性 (2022-2025)
|
||||
|
||||
* **CVE-2024-45698 – D-Link Wi-Fi 6 ルーター (DIR-X4860)**: 内蔵の Telnet サービスはハードコーディングされた認証情報を受け入れ、入力のサニタイズに失敗し、ポート 23 で作成されたコマンドを介してルートとして認証されていないリモート RCE を可能にしました。ファームウェア ≥ 1.04B05 で修正済み。
|
||||
* **CVE-2023-40478 – NETGEAR RAX30**: Telnet CLI `passwd` コマンドにおけるスタックベースのバッファオーバーフローにより、隣接する攻撃者が認証をバイパスし、ルートとして任意のコードを実行できる。
|
||||
* **CVE-2022-39028 – GNU inetutils telnetd**: 2 バイトのシーケンス (`0xff 0xf7` / `0xff 0xf8`) が NULL ポインタのデリファレンスを引き起こし、`telnetd` をクラッシュさせ、いくつかのクラッシュの後に持続的な DoS を引き起こす。
|
||||
* **CVE-2023-40478 – NETGEAR RAX30**: Telnet CLI の `passwd` コマンドにおけるスタックベースのバッファオーバーフローにより、隣接する攻撃者が認証をバイパスし、ルートとして任意のコードを実行できるようになります。
|
||||
* **CVE-2022-39028 – GNU inetutils telnetd**: 2 バイトのシーケンス (`0xff 0xf7` / `0xff 0xf8`) が NULL ポインタのデリファレンスを引き起こし、`telnetd` をクラッシュさせ、いくつかのクラッシュの後に持続的な DoS を引き起こします。
|
||||
|
||||
脆弱性のトリアージ中にこれらの CVE を念頭に置いてください。ターゲットがパッチ未適用のファームウェアまたはレガシー inetutils Telnet デーモンを実行している場合、コード実行や破壊的な DoS への直接的な道があるかもしれません。
|
||||
|
||||
@ -98,7 +98,7 @@ ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 <IP>
|
||||
# Medusa (parallel hosts)
|
||||
medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f
|
||||
```
|
||||
ほとんどのIoTボットネット(Miraiのバリアント)は、デフォルトの資格情報辞書を使用してポート23をスキャンします。このロジックを反映させることで、脆弱なデバイスを迅速に特定できます。
|
||||
ほとんどのIoTボットネット(Miraiバリアント)は、デフォルトの資格情報辞書を使用してポート23をスキャンします。このロジックを反映させることで、脆弱なデバイスを迅速に特定できます。
|
||||
|
||||
### 攻撃とポストエクスプロイト
|
||||
|
||||
@ -114,13 +114,13 @@ Metasploitにはいくつかの便利なモジュールがあります:
|
||||
### ハードニングと検出(ブルーチームコーナー)
|
||||
|
||||
1. SSHを優先し、Telnetサービスを完全に無効にします。
|
||||
2. Telnetが必要な場合は、管理VLANにのみバインドし、ACLを強制し、デーモンをTCPラッパー(`/etc/hosts.allow`)でラップします。
|
||||
3. 従来の`telnetd`実装を`ssl-telnet`または`telnetd-ssl`に置き換えてトランスポート暗号化を追加しますが、**これはデータの移動中のみを保護します—パスワード推測は依然として簡単です**。
|
||||
4. ポート23への外向きトラフィックを監視します;侵害はしばしばTelnetを介してリバースシェルを生成し、厳格なHTTP出口フィルターを回避します。
|
||||
2. Telnetが必要な場合は、管理VLANにのみバインドし、ACLを強制し、デーモンをTCPラッパーでラップします(`/etc/hosts.allow`)。
|
||||
3. レガシー`telnetd`の実装を`ssl-telnet`または`telnetd-ssl`に置き換えてトランスポート暗号化を追加しますが、**これはデータの移動中のみを保護します—パスワード推測は依然として簡単です**。
|
||||
4. ポート23へのアウトバウンドトラフィックを監視します;侵害はしばしばTelnetを介してリバースシェルを生成し、厳格なHTTP出口フィルターを回避します。
|
||||
|
||||
## 参考文献
|
||||
|
||||
* D-Link Advisory – CVE-2024-45698 クリティカルなTelnet RCE。
|
||||
* D-Link Advisory – CVE-2024-45698 クリティカルTelnet RCE。
|
||||
* NVD – CVE-2022-39028 inetutils `telnetd` DoS。
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
@ -4,21 +4,21 @@
|
||||
|
||||
## 概要
|
||||
|
||||
LESSは、変数、ミキシン、関数、強力な`@import`ディレクティブを追加する人気のCSSプリプロセッサです。コンパイル中、LESSエンジンは`@import`ステートメントで参照されたリソースを**取得し**、`(inline)`オプションが使用されると、その内容を生成されたCSSに埋め込みます。
|
||||
LESSは、変数、ミキシン、関数、強力な`@import`ディレクティブを追加する人気のCSSプリプロセッサです。コンパイル中、LESSエンジンは`@import`ステートメントで参照されたリソースを**取得し**、`(inline)`オプションが使用されると、その内容を結果のCSSに埋め込みます。
|
||||
|
||||
アプリケーションが**ユーザー制御の入力**をLESSコンパイラによって後で解析される文字列に連結する場合、攻撃者は**任意のLESSコードを注入**できます。`@import (inline)`を悪用することで、攻撃者はサーバーに次のものを取得させることができます:
|
||||
|
||||
* `file://`プロトコルを介したローカルファイル(情報漏洩 / ローカルファイルインクルージョン)。
|
||||
* 内部ネットワークやクラウドメタデータサービス上のリモートリソース(SSRF)。
|
||||
* 内部ネットワークまたはクラウドメタデータサービス上のリモートリソース(SSRF)。
|
||||
|
||||
この技術は、**SugarCRM ≤ 14.0.0**(`/rest/v10/css/preview`エンドポイント)などの実際の製品で見られました。
|
||||
|
||||
## 悪用
|
||||
|
||||
1. LESSエンジンによって処理されるスタイルシート文字列に直接埋め込まれているパラメータを特定します(例:SugarCRMの`?lm=`)。
|
||||
2. 現在のステートメントを閉じ、新しいディレクティブを注入します。最も一般的なプリミティブは次のとおりです:
|
||||
2. 現在のステートメントを閉じ、新しいディレクティブを注入します。最も一般的なプリミティブは:
|
||||
* `;` – 前の宣言を終了します。
|
||||
* `}` – 前のブロックを閉じます(必要な場合)。
|
||||
* `}` – 前のブロックを閉じます(必要に応じて)。
|
||||
3. `@import (inline) '<URL>';`を使用して任意のリソースを読み取ります。
|
||||
4. オプションで、インポートの後に**マーカー**(`data:` URI)を注入して、コンパイルされたCSSから取得したコンテンツの抽出を容易にします。
|
||||
|
||||
@ -57,7 +57,7 @@ sed -n 's/.*@@END@@\(.*\)/\1/p'
|
||||
|
||||
* 信頼できないデータをLESSコンパイラに渡さないでください。
|
||||
* 動的な値が必要な場合は、適切に **エスケープ**/サニタイズしてください(例:数値トークンに制限、ホワイトリスト)。
|
||||
* 可能な場合は、`(inline)` インポートの使用を無効にするか、許可されるプロトコルを `https` に制限します。
|
||||
* 可能な場合は、`(inline)` インポートの使用を無効にするか、許可されるプロトコルを `https` に制限してください。
|
||||
* 依存関係を最新の状態に保ちます – SugarCRMはバージョン13.0.4および14.0.1でこの問題を修正しました。
|
||||
|
||||
## Real-World Cases
|
||||
|
||||
@ -2,12 +2,12 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
インターネット上には、**デフォルト/弱い**ログオン資格情報でLDAPが構成されたプリンタを放置する危険性を**強調する**ブログがいくつかあります。 \
|
||||
これは、攻撃者が**プリンタを騙して悪意のあるLDAPサーバーに対して認証させる**ことができるためです(通常、`nc -vv -l -p 389`または`slapd -d 2`で十分です)し、プリンタの**資格情報を平文でキャプチャ**することができます。
|
||||
インターネット上には、**デフォルト/弱い**ログイン資格情報でLDAPが設定されたプリンタの危険性を**強調する**ブログがいくつかあります。 \
|
||||
これは、攻撃者が**プリンタを騙して不正なLDAPサーバーに対して認証させる**ことができるためです(通常、`nc -vv -l -p 389`または`slapd -d 2`で十分です)し、プリンタの**資格情報を平文でキャプチャ**することができます。
|
||||
|
||||
また、いくつかのプリンタには**ユーザー名を含むログ**があり、ドメインコントローラから**すべてのユーザー名をダウンロード**できる場合もあります。
|
||||
|
||||
これらの**機密情報**と一般的な**セキュリティの欠如**は、攻撃者にとってプリンタを非常に興味深いものにします。
|
||||
これらの**機密情報**と一般的な**セキュリティの欠如**により、プリンタは攻撃者にとって非常に興味深いターゲットとなります。
|
||||
|
||||
このトピックに関するいくつかの入門ブログ:
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
- [https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
|
||||
---
|
||||
## プリンタの構成
|
||||
## プリンタの設定
|
||||
|
||||
- **場所**: LDAPサーバーのリストは通常、ウェブインターフェースにあります(例:*ネットワーク ➜ LDAP設定 ➜ LDAPの設定*)。
|
||||
- **動作**: 多くの組み込みウェブサーバーは、**資格情報を再入力せずにLDAPサーバーの変更**を許可します(使いやすさの機能 → セキュリティリスク)。
|
||||
@ -41,21 +41,21 @@ sudo dpkg-reconfigure slapd # set any base-DN – it will not be validated
|
||||
# run slapd in foreground / debug 2
|
||||
slapd -d 2 -h "ldap:///" # only LDAP, no LDAPS
|
||||
```
|
||||
プリンターがルックアップを実行すると、デバッグ出力に平文の資格情報が表示されます。
|
||||
プリンターがルックアップを実行すると、デバッグ出力に平文の認証情報が表示されます。
|
||||
|
||||
> 💡 `impacket/examples/ldapd.py`(PythonのロゲLDAP)や`Responder -w -r -f`を使用して、LDAP/SMB経由でNTLMv2ハッシュを収集することもできます。
|
||||
|
||||
---
|
||||
## 最近のパスバック脆弱性 (2024-2025)
|
||||
|
||||
パスバックは*理論的な問題ではありません* - ベンダーは2024/2025年にこの攻撃クラスを正確に説明するアドバイザリーを発表し続けています。
|
||||
パスバックは*理論的な問題ではありません* – ベンダーは2024/2025年にこの攻撃クラスを正確に説明するアドバイザリーを発表し続けています。
|
||||
|
||||
### Xerox VersaLink – CVE-2024-12510 & CVE-2024-12511
|
||||
|
||||
Xerox VersaLink C70xx MFPのファームウェア≤ 57.69.91は、認証された管理者(またはデフォルトの資格情報が残っている場合は誰でも)が以下を行うことを許可しました:
|
||||
Xerox VersaLink C70xx MFPのファームウェア≤ 57.69.91は、認証された管理者(またはデフォルトの認証情報が残っている場合は誰でも)が以下を行うことを許可しました:
|
||||
|
||||
* **CVE-2024-12510 – LDAPパスバック**: LDAPサーバーアドレスを変更し、ルックアップをトリガーすることで、デバイスが構成されたWindows資格情報を攻撃者が制御するホストに漏洩させる。
|
||||
* **CVE-2024-12511 – SMB/FTPパスバック**: *スキャン先フォルダー*の宛先を介して同様の問題が発生し、NetNTLMv2またはFTPの平文資格情報が漏洩する。
|
||||
* **CVE-2024-12510 – LDAPパスバック**: LDAPサーバーアドレスを変更し、ルックアップをトリガーすることで、デバイスが構成されたWindows認証情報を攻撃者が制御するホストに漏洩させる。
|
||||
* **CVE-2024-12511 – SMB/FTPパスバック**: *スキャン先フォルダー*の宛先を介して同様の問題が発生し、NetNTLMv2またはFTPの平文認証情報が漏洩する。
|
||||
|
||||
次のようなシンプルなリスナー:
|
||||
```bash
|
||||
@ -67,14 +67,14 @@ or a rogue SMB server (`impacket-smbserver`) は、資格情報を収集する
|
||||
|
||||
Canonは、数十のレーザーおよびMFP製品ラインにおける**SMTP/LDAPパスバック**の脆弱性を確認しました。管理者アクセスを持つ攻撃者は、サーバー設定を変更し、LDAP **または** SMTPの保存された資格情報を取得できます(多くの組織はスキャンからメールへの送信を許可するために特権アカウントを使用します)。
|
||||
|
||||
ベンダーのガイダンスは明示的に推奨しています:
|
||||
ベンダーのガイダンスは明示的に次のことを推奨しています:
|
||||
|
||||
1. 利用可能になり次第、パッチが適用されたファームウェアに更新すること。
|
||||
2. 強力でユニークな管理者パスワードを使用すること。
|
||||
3. プリンタ統合のために特権ADアカウントを避けること。
|
||||
|
||||
---
|
||||
## 自動列挙 / 悪用ツール
|
||||
## 自動列挙 / 攻撃ツール
|
||||
|
||||
| ツール | 目的 | 例 |
|
||||
|------|---------|---------|
|
||||
@ -86,12 +86,12 @@ Canonは、数十のレーザーおよびMFP製品ラインにおける**SMTP/LD
|
||||
---
|
||||
## ハードニング & 検出
|
||||
|
||||
1. **パッチ / ファームウェア更新** MFPを迅速に行う(ベンダーのPSIRT速報を確認)。
|
||||
1. **パッチ / ファームウェア更新** MFPを迅速に行う(ベンダーのPSIRT公告を確認)。
|
||||
2. **最小特権サービスアカウント** – LDAP/SMB/SMTPにドメイン管理者を使用しない; *読み取り専用* OUスコープに制限する。
|
||||
3. **管理アクセスの制限** – プリンタのWeb/IPP/SNMPインターフェースを管理VLANに配置するか、ACL/VPNの背後に置く。
|
||||
4. **未使用プロトコルの無効化** – FTP、Telnet、raw-9100、古いSSL暗号。
|
||||
5. **監査ログの有効化** – 一部のデバイスはLDAP/SMTPの失敗をsyslogできる; 予期しないバインドを相関させる。
|
||||
6. **異常なソースでのプレーンテキストLDAPバインドを監視**(プリンタは通常DCとだけ通信するべきです)。
|
||||
6. **異常なソースからのプレーンテキストLDAPバインドを監視**(プリンタは通常DCとだけ通信するべきです)。
|
||||
7. **SNMPv3またはSNMPを無効化** – コミュニティ`public`はしばしばデバイスおよびLDAP設定を漏洩します。
|
||||
|
||||
---
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user