Translated ['src/mobile-pentesting/ios-pentesting/ios-pentesting-without

This commit is contained in:
Translator 2025-07-12 18:08:14 +00:00
parent a7855c6897
commit 9d288f91b8
2 changed files with 109 additions and 16 deletions

View File

@ -18,14 +18,14 @@ Met 'n ou jailbreak toestel is dit moontlik om die IPA te installeer, **dit te d
2. Installeer en begin [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) binne jou macos
3. Open `Terminal` op jou Mac, en cd na `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. Die IPA sal later in hierdie gids verskyn.
4. Jy behoort jou iOS-toestel te sien. Dubbelklik daarop, en klik dan op Voeg by + → Apps vanaf die boonste menu.
5. Na jy op Voeg geklik het, sal Configurator die IPA van Apple aflaai, en probeer om dit na jou toestel te druk. As jy my aanbeveling vroeër gevolg het en die IPA reeds geïnstalleer het, sal 'n prompt verskyn wat jou vra om die app weer te installeer.
5. Nadat jy op Voeg geklik het, sal Configurator die IPA van Apple aflaai, en probeer om dit na jou toestel te druk. As jy my aanbeveling vroeër gevolg het en die IPA reeds geïnstalleer het, sal 'n prompt wat jou vra om die app weer te installeer verskyn.
6. Die IPA behoort afgelaai te wees binne `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` waar jy dit kan gryp.
Kyk [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) vir meer gedetailleerde inligting oor hierdie proses.
Kyk na [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) vir meer gedetailleerde inligting oor hierdie proses.
### Dekripteer die app
Om die IPA te dekripteer, gaan ons dit installeer. As jy egter 'n ou jailbreak iPhone het, is dit moontlik dat die weergawe nie deur die toepassing ondersteun sal word nie, aangesien toepassings gewoonlik net die nuutste weergawes ondersteun.
Om die IPA te dekripteer gaan ons dit installeer. As jy egter 'n ou jailbreak iPhone het, is dit moontlik dat die weergawe nie deur die toepassing ondersteun sal word nie, aangesien toepassings gewoonlik net die nuutste weergawes ondersteun.
So, om dit te installeer, ontsyfer net die IPA:
```bash
@ -42,16 +42,16 @@ Dan installeer die IPA byvoorbeeld met:
```bash
ideviceinstaller -i no-min-version.ipa -w
```
Let daarop dat jy dalk **AppSync Unified tweak** van Cydia nodig het om enige `invalid signature` foute te voorkom.
Let wel dat jy dalk die **AppSync Unified tweak** van Cydia nodig het om enige `invalid signature` foute te voorkom.
Sodra dit geïnstalleer is, kan jy **Iridium tweak** van Cydia gebruik om die gedekripteerde IPA te verkry.
Sodra dit geïnstalleer is, kan jy die **Iridium tweak** van Cydia gebruik om die gedekripteerde IPA te verkry.
### Patch entitlements & re-sign
Om die toepassing met die `get-task-allow` entitlement te herteken, is daar verskeie gereedskap beskikbaar soos `app-signer`, `codesign`, en `iResign`. `app-signer` het 'n baie gebruikersvriendelike koppelvlak wat dit baie maklik maak om 'n IPA-lêer te herteken deur die IPA aan te dui wat herteken moet word, om **dit `get-task-allow`** te gee en die sertifikaat en voorsieningsprofiel wat gebruik moet word.
Om die toepassing met die `get-task-allow` entitlement te herteken, is daar verskeie gereedskap beskikbaar soos `app-signer`, `codesign`, en `iResign`. `app-signer` het 'n baie gebruikersvriendelike koppelvlak wat dit baie maklik maak om 'n IPA-lêer te herteken deur die IPA aan te dui wat herteken moet word, om **dit `get-task-allow`** te plaas en die sertifikaat en voorsieningsprofiel te gebruik.
Wat die sertifikaat en ondertekeningsprofiele betref, bied Apple **gratis ontwikkelaar ondertekeningsprofiele** vir alle rekeninge deur Xcode aan. Skep eenvoudig 'n app en konfigureer een. Konfigureer dan die **iPhone om die ontwikkelaar apps te vertrou** deur na `Settings``Privacy & Security` te navigeer, en klik op `Developer Mode`.
Wat die sertifikaat en ondertekeningsprofiele betref, bied Apple **gratis ontwikkelaar ondertekeningsprofiele** vir alle rekeninge deur Xcode. Skep eenvoudig 'n app en konfigureer een. Konfigureer dan die **iPhone om die ontwikkelaar apps te vertrou** deur na `Settings``Privacy & Security` te navigeer, en klik op `Developer Mode`.
Met die herteken IPA is dit tyd om dit op die toestel te installeer om dit te pentest:
```bash
@ -61,9 +61,9 @@ ideviceinstaller -i resigned.ipa -w
### Aktiveer Ontwikkelaarsmodus (iOS 16+)
Sedert iOS 16 het Apple **Ontwikkelaarsmodus** bekendgestel: enige binêre wat `get_task_allow` dra *of* met 'n ontwikkelingssertifikaat onderteken is, sal weier om te begin totdat Ontwikkelaarsmodus op die toestel geaktiveer is. Jy sal ook nie in staat wees om Frida/LLDB aan te sluit tensy hierdie vlag aan is nie.
Sedert iOS 16 het Apple **Ontwikkelaarsmodus** bekendgestel: enige binêre wat `get_task_allow` dra *of* met 'n ontwikkelingssertifikaat onderteken is, sal weier om te begin totdat Ontwikkelaarsmodus op die toestel geaktiveer is. Jy sal ook nie Frida/LLDB kan aanheg tensy hierdie vlag aan is nie.
1. Installeer of druk **enige** ontwikkelaar-ondertekende IPA na die foon.
1. Installeer of druk **enige** ontwikkelaars-ondertekende IPA na die foon.
2. Navigeer na **Instellings → Privaatheid & Sekuriteit → Ontwikkelaarsmodus** en skakel dit aan.
3. Die toestel sal herbegin; na die invoer van die wagwoord sal jy gevra word om **Aan te Skakel** Ontwikkelaarsmodus.
@ -90,11 +90,11 @@ objection -g "com.example.target" explore
# Or plain Frida
frida -U -f com.example.target -l my_script.js --no-pause
```
Onlangse Frida vrylatinge (>=16) hanteer outomaties pointer-authentisering en ander iOS 17 versagtings, so die meeste bestaande skripte werk reg uit die boks.
Onlangse Frida vrylatinge (>=16) hanteer outomaties pointer-authentisering en ander iOS 17 versagtings, so die meeste bestaande skrifte werk reg uit die boks.
### Geoutomatiseerde dinamiese analise met MobSF (geen jailbreak)
### Geoutomatiseerde dinamiese analise met MobSF (geen jailbreak nie)
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) kan 'n dev-onderteken IPA op 'n werklike toestel instrumenteer met behulp van dieselfde tegniek (`get_task_allow`) en bied 'n web UI met lêerstelselblaaier, verkeersvang en Frida-konsol【】. Die vinnigste manier is om MobSF in Docker te loop en dan jou iPhone via USB aan te sluit:
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) kan 'n dev-onderteken IPA op 'n werklike toestel instrumenteer met behulp van dieselfde tegniek (`get_task_allow`) en bied 'n web UI met 'n lêerstelselblaaier, verkeersvang en Frida-konsol【†L2-L3】. Die vinnigste manier is om MobSF in Docker te laat loop en dan jou iPhone via USB aan te sluit:
```bash
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -p 8000:8000 --privileged \
@ -102,17 +102,17 @@ docker run -p 8000:8000 --privileged \
opensecurity/mobile-security-framework-mobsf:latest
# Browse to http://127.0.0.1:8000 and upload your resigned IPA
```
MobSF sal outomaties die binêre ontplooi, 'n Frida-bediener binne die app-sandkas aktiveer en 'n interaktiewe verslag genereer.
MobSF sal outomaties die binêre ontplooi, 'n Frida-bediener binne die app sandkas aktiveer en 'n interaktiewe verslag genereer.
### iOS 17 & Lockdown Mode voorbehoude
* **Lockdown Mode** (Instellings → Privaatheid & Sekuriteit) blokkeer die dinamiese skakelaar om ongetekende of eksterne getekende dinamiese biblioteke te laai. Wanneer jy toestelle toets wat hierdie modus mag hê, maak seker dit is **deaktiveer** of jou Frida/objection sessies sal onmiddellik beëindig word.
* Pointer Authentication (PAC) word stelselsgewys afgedwing op A12+ toestelle. Frida ≥16 hanteer PAC stripping deursigtig — hou net beide *frida-server* en die Python/CLI gereedskapketting op datum wanneer 'n nuwe groot iOS weergawe vrygestel word.
* Pointer Authentication (PAC) word stelselwyd afgedwing op A12+ toestelle. Frida ≥16 hanteer PAC stripping deursigtig — hou net beide *frida-server* en die Python/CLI gereedskapketting op datum wanneer 'n nuwe groot iOS weergawe vrygestel word.
## Verwysings
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
- Apple ontwikkelaar dokumentasie Ontsluiting van Ontwikkelaar Modus op 'n toestel: <https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device>
- Apple ontwikkelaar dokumentasie Ontsluiting van Ontwikkelaarsmodus op 'n toestel: <https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device>
- Mobile Security Framework (MobSF): <https://mobsf.github.io/Mobile-Security-Framework-MobSF/>
{{#include ../../banners/hacktricks-training.md}}

View File

@ -2,6 +2,99 @@
{{#include ../../banners/hacktricks-training.md}}
**Kontroleer die pos [https://portswigger.net/research/http-2-downgrades](https://portswigger.net/research/http-2-downgrades)**
HTTP/2 word oor die algemeen beskou as immuun teen klassieke request-smuggling omdat die lengte van elke DATA-raam eksplisiet is. **Daardie beskerming verdwyn sodra 'n front-end proxy die versoek na HTTP/1.x “downgrade” voordat dit na 'n back-end gestuur word**. Die oomblik wanneer twee verskillende parsers (die HTTP/2 front-end en die HTTP/1 back-end) probeer ooreen te kom oor waar een versoek eindig en die volgende begin, kom al die ou desync truuks terug plus 'n paar nuwe.
---
## Waarom downgrades gebeur
1. Blaaiers praat reeds HTTP/2, maar baie ouer oorsprong infrastruktuur verstaan steeds net HTTP/1.1.
2. Terug-proxies (CDNs, WAFs, laai-balansers) beëindig dus TLS + HTTP/2 aan die rand en **herformuleer elke versoek as HTTP/1.1** vir die oorsprong.
3. Die vertaalstap moet *albei* `Content-Length` **en/of** `Transfer-Encoding: chunked` koppe skep sodat die oorsprong die liggaamslengte kan bepaal.
Wanneer die front-end die HTTP/2 raam lengte **maar** die back-end CL of TE vertrou, kan 'n aanvaller hulle dwing om nie saam te stem nie.
---
## Twee dominante primitiewe klasse
| Variant | Front-end lengte | Back-end lengte | Tipiese payload |
|---------|-----------------|-----------------|-----------------|
| **H2.TE** | HTTP/2 raam | `Transfer-Encoding: chunked` | Sluit 'n ekstra chunked boodskap liggaam in waarvan die finale `0\r\n\r\n` *nie* gestuur word nie, sodat die back-end wag vir die aanvaller-geleverde “volgende” versoek. |
| **H2.CL** | HTTP/2 raam | `Content-Length` | Stuur 'n *kleiner* CL as die werklike liggaam, sodat die back-end oor die grens lees in die volgende versoek. |
> Hierdie is identies in gees aan klassieke TE.CL / CL.TE, net met HTTP/2 wat een van die parsers vervang.
---
## Identifisering van 'n downgrade ketting
1. Gebruik **ALPN** in 'n TLS handdruk (`openssl s_client -alpn h2 -connect host:443`) of **curl**:
```bash
curl -v --http2 https://target
```
As `* Using HTTP2` verskyn, praat die rand H2.
2. Stuur 'n doelbewus verkeerd gevormde CL/TE versoek *oor* HTTP/2 (Burp Repeater het nou 'n keuselys om HTTP/2 te dwing). As die antwoord 'n HTTP/1.1 fout soos `400 Bad chunk` is, het jy bewys dat die rand die verkeer vir 'n HTTP/1 parser stroomaf omgeskakel het.
---
## Exploitasiestroom (H2.TE voorbeeld)
```http
:method: POST
:path: /login
:scheme: https
:authority: example.com
content-length: 13 # ignored by the edge
transfer-encoding: chunked
5;ext=1\r\nHELLO\r\n
0\r\n\r\nGET /admin HTTP/1.1\r\nHost: internal\r\nX: X
```
1. Die **front-end** lees presies 13 bytes (`HELLO\r\n0\r\n\r\nGE`), dink die versoek is klaar en stuur dit soveel na die oorsprong.
2. Die **back-end** vertrou die TE-header, hou aan lees totdat dit die *tweede* `0\r\n\r\n` sien, en verbruik so die voorvoegsel van die aanvaller se tweede versoek (`GET /admin …`).
3. Die oorblyfsels (`GET /admin …`) word as 'n *nuwe* versoek behandel wat agter die slagoffer se versoek in die tou staan.
Vervang die gesmokkelde versoek met:
* `POST /api/logout` om sessiefiksasie af te dwing
* `GET /users/1234` om 'n slagoffer-spesifieke hulpbron te steel
---
## h2c smuggling (helder teks opgraderings)
'n Studie in 2023 het getoon dat as 'n front-end die HTTP/1.1 `Upgrade: h2c` header aan 'n back-end wat helder teks HTTP/2 ondersteun, oorgedra, 'n aanvaller *raw* HTTP/2 rame deur 'n rand kan tunnel wat slegs gevalideerde HTTP/1.1 ondersteun. Dit omseil header normalisering, WAF-reëls en selfs TLS-terminasie.
Belangrike vereistes:
* Rand stuur **albei** `Connection: Upgrade` en `Upgrade: h2c` onveranderd voort.
* Oorsprong verhoog na HTTP/2 en hou die verbinding-hergebruik semantiek wat versoek-tou moontlik maak.
Mitigering is eenvoudig verwyder of hard-kodeer die `Upgrade` header by die rand, behalwe vir WebSockets.
---
## Noemenswaardige werklike CVE's (2022-2025)
* **CVE-2023-25690** Apache HTTP Server mod_proxy herskryf reëls kan geketting word vir versoek splitsing en smuggling. (reggestel in 2.4.56)
* **CVE-2023-25950** HAProxy 2.7/2.6 versoek/antwoord smuggling wanneer HTX parser pyplyn versoeke verkeerd hanteer.
* **CVE-2022-41721** Go `MaxBytesHandler` het veroorsaak dat oorblywende liggaamsbytes as **HTTP/2** rame geparseer word, wat kruis-protokol smuggling moontlik maak.
---
## Gereedskap
* **Burp Request Smuggler** sedert v1.26 toets dit outomaties H2.TE/H2.CL en versteekte ALPN-ondersteuning. Aktiveer “HTTP/2 probing” in die uitbreiding opsies.
* **h2cSmuggler** Python PoC deur Bishop Fox om die helder teks opgradering aanval te outomatiseer:
```bash
python3 h2csmuggler.py -u https://target -x 'GET /admin HTTP/1.1\r\nHost: target\r\n\r\n'
```
* **curl**/`hyper` handmatige payloads saamstel: `curl --http2-prior-knowledge -X POST --data-binary @payload.raw https://target`.
---
## Verdedigingsmaatreëls
1. **Eind-tot-eind HTTP/2** elimineer die afgraderingsvertaling heeltemal.
2. **Enkele bron van lengte waarheid** wanneer afgraderend, *altyd* 'n geldige `Content-Length` **en** **verwyder** enige gebruiker-gelewer `Content-Length`/`Transfer-Encoding` headers genereer.
3. **Normaliseer voor roete** pas header-sanitizering *voor* roetering/herskryf logika toe.
4. **Verbinding isolasie** moenie back-end TCP verbindings oor gebruikers hergebruik nie; “een versoek per verbinding” verslaan tou-gebaseerde eksplosies.
5. **Verwyder `Upgrade` tensy WebSocket** voorkom h2c tunneling.
---
## Verwysings
* PortSwigger Navorsing “HTTP/2: Die vervolg is altyd erger” <https://portswigger.net/research/http2>
* Bishop Fox “h2c Smuggling: versoek smuggling via HTTP/2 helder teks” <https://bishopfox.com/blog/h2c-smuggling-request>
{{#include ../../banners/hacktricks-training.md}}