Translated ['src/generic-methodologies-and-resources/pentesting-wifi/ena

This commit is contained in:
Translator 2025-07-15 17:26:58 +00:00
parent 2ba32ff796
commit 33ab72206b
8 changed files with 130 additions and 130 deletions

View File

@ -1,9 +1,9 @@
# NexMon İzleme Modunu ve Paket Enjeksiyonunu Android'de Etkinleştirin (Broadcom yongaları)
# NexMon İzleme Modunu ve Paket Enjeksiyonunu Android'de Etkinleştir (Broadcom yongaları)
{{#include ../../banners/hacktricks-training.md}}
## Genel Bakış
Çoğu modern Android telefonu, 802.11 izleme modu veya çerçeve enjeksiyon yetenekleri olmadan gönderilen bir Broadcom/Cypress Wi-Fi yongası içerir. Açık kaynak NexMon çerçevesi, bu özellikleri eklemek için özel yazılımı yamanlar ve bunları paylaşılan bir kütüphane (`libnexmon.so`) ve bir CLI yardımcı programı (`nexutil`) aracılığıyla açığa çıkarır. Bu kütüphaneyi stok Wi-Fi sürücüsüne önceden yükleyerek, köklü bir cihaz ham 802.11 trafiğini yakalayabilir ve rastgele çerçeveler enjekte edebilir bu da harici bir USB adaptörüne olan ihtiyacı ortadan kaldırır.
Çoğu modern Android telefonu, 802.11 izleme modu veya çerçeve enjeksiyon yetenekleri olmadan gönderilen bir Broadcom/Cypress Wi-Fi yongası içerir. Açık kaynak NexMon çerçevesi, bu özellikleri eklemek için özel yazılımı yamanlar ve bunları bir paylaşılan kütüphane (`libnexmon.so`) ve bir CLI yardımcı programı (`nexutil`) aracılığıyla açığa çıkarır. Bu kütüphaneyi stok Wi-Fi sürücüsüne önceden yükleyerek, köklü bir cihaz ham 802.11 trafiğini yakalayabilir ve rastgele çerçeveler enjekte edebilir bu da harici bir USB adaptörüne olan ihtiyacı ortadan kaldırır.
Bu sayfa, tamamen yamalanmış bir Samsung Galaxy S10 (BCM4375B1) örneğini kullanarak hızlı bir iş akışını belgelemektedir:
@ -11,13 +11,13 @@ Bu sayfa, tamamen yamalanmış bir Samsung Galaxy S10 (BCM4375B1) örneğini kul
* İzleme modu geçişini otomatikleştirmek için Hijacker Android uygulaması
* Dahili arayüze doğrudan klasik kablosuz araçları (aircrack-ng, wifite, mdk4 …) çalıştırmak için isteğe bağlı Kali NetHunter chroot
Aynı teknik, kamuya açık bir NexMon yaması bulunan herhangi bir telefon için geçerlidir (Pixel 1, Nexus 6P, Galaxy S7/S8, vb.).
Aynı teknik, kamuya açık bir NexMon yaması bulunan herhangi bir cep telefonuna uygulanabilir (Pixel 1, Nexus 6P, Galaxy S7/S8, vb.).
---
## Gereksinimler
* Desteklenen bir Broadcom/Cypress yongası olan Android telefonu (örn. BCM4358/59/43596/4375B1)
* Magisk ≥ 24 ile kök
## Ön Koşullar
* Desteklenen bir Broadcom/Cypress yongası olan Android cep telefonu (örn. BCM4358/59/43596/4375B1)
* Magisk ≥ 24 ile kök erişimi
* BusyBox (çoğu ROM/NetHunter zaten içerir)
* Aşağıdakileri sağlayan NexMon Magisk ZIP veya kendinden derlenmiş yaman:
* `/system/lib*/libnexmon.so`
@ -30,7 +30,7 @@ Aynı teknik, kamuya açık bir NexMon yaması bulunan herhangi bir telefon içi
## NexMon yamasını flaşlama (Magisk)
1. Tam cihaz/yazılımınız için ZIP'i indirin (örnek: `nexmon-s10.zip`).
2. Magisk'i açın -> Modüller -> Depodan yükle -> ZIP'i seçin ve yeniden başlatın.
Modül, `libnexmon.so` dosyasını `/data/adb/modules/<module>/lib*/` dizinine kopyalar ve SELinux etiketlerinin doğru olmasını sağlar.
Modül, `libnexmon.so` dosyasını `/data/adb/modules/<module>/lib*/` dizinine kopyalar ve SELinux etiketlerinin doğru olduğundan emin olur.
3. Kurulumu doğrulayın:
```bash
ls -lZ $(find / -name libnexmon.so 2>/dev/null)
@ -82,29 +82,29 @@ Eğer sadece pasif sniffing'e ihtiyacınız varsa, `-s0x613` bayrağını atlay
---
## Kali NetHunter / chroot içinde `libnexmon` kullanma
Kali'deki stok kullanıcı alanı araçları NexMon'u tanımıyor, ancak `LD_PRELOAD` aracılığıyla kullanmaya zorlayabilirsiniz:
Kali'deki stok kullanıcı alanı araçları NexMon'u tanımıyor, ancak `LD_PRELOAD` ile kullanmaya zorlayabilirsiniz:
1. Önceden derlenmiş paylaşılan nesneyi chroot içine kopyalayın:
```bash
cp /sdcard/Download/kalilibnexmon.so <chroot>/lib/
```
2. **Android ana bilgisayarı** üzerinden izleme modunu etkinleştirin (yukarıdaki komut veya Hijacker aracılığıyla).
3. Kali içinde ön yükleme ile herhangi bir kablosuz aracı başlatın:
3. Kali içinde herhangi bir kablosuz aracı preload ile başlatın:
```bash
sudo su
export LD_PRELOAD=/lib/kalilibnexmon.so
wifite -i wlan0 # veya aircrack-ng, mdk4 …
```
4. İşiniz bittiğinde, Android'de izleme modunu her zamanki gibi devre dışı bırakın.
4. İşiniz bittiğinde, Android'de her zamanki gibi izleme modunu devre dışı bırakın.
Firmware zaten radiotap enjeksiyonunu işlediğinden, kullanıcı alanı araçları dış Atheros adaptörü gibi davranır.
Firmware zaten radiotap enjeksiyonunu işlediğinden, kullanıcı alanı araçları harici bir Atheros adaptörü gibi davranır.
---
## Olası Tipik Saldırılar
Monitor + TX aktif olduğunda şunları yapabilirsiniz:
* `wifite`, `hcxdumptool`, `airodump-ng` ile WPA(2/3-SAE) el sıkışmalarını veya PMKID'leri yakalayın.
* Müşterileri yeniden bağlanmaya zorlamak için deauthentikasyon / ilişki kesme çerçeveleri enjekte edin.
* Müşterileri yeniden bağlanmaya zorlamak için deauthentication / disassociation çerçeveleri enjekte edin.
* `mdk4`, `aireplay-ng`, Scapy vb. ile keyfi yönetim/veri çerçeveleri oluşturun.
* Telefon üzerinden sahte AP'ler oluşturun veya KARMA/MANA saldırıları gerçekleştirin.
@ -114,7 +114,7 @@ Galaxy S10'daki performans, harici USB NIC'lerle karşılaştırılabilir (~20 d
## Sorun Giderme
* `Device or resource busy` izleme modunu etkinleştirmeden önce **Android Wi-Fi hizmetinin devre dışı olduğundan emin olun** (`svc wifi disable`).
* `nexutil: ioctl(PRIV_MAGIC) failed` kütüphane ön yüklenmemiş; `LD_PRELOAD` yolunu kontrol edin.
* `nexutil: ioctl(PRIV_MAGIC) failed` kütüphane önceden yüklenmemiş; `LD_PRELOAD` yolunu kontrol edin.
* Çerçeve enjeksiyonu çalışıyor ama paket yakalanmıyor bazı ROM'lar kanalları sert bir şekilde engeller; `nexutil -c <channel>` veya `iwconfig wlan0 channel <n>` deneyin.
* SELinux kütüphaneyi engelliyor cihazı *Permissive* olarak ayarlayın veya modül bağlamını düzeltin: `chcon u:object_r:system_lib_file:s0 libnexmon.so`.

BIN
src/images/discount.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

View File

@ -13,16 +13,16 @@ android-applications-basics.md
## ADB (Android Debug Bridge)
Bu, bir android cihazına (emüle edilmiş veya fiziksel) bağlanmak için ihtiyaç duyduğunuz ana araçtır.\
**ADB**, bir bilgisayardan **USB** veya **Ağ** üzerinden cihazları kontrol etmenizi sağlar. Bu yardımcı program, dosyaların her iki yönde **kopyalanmasını**, uygulamaların **yüklenmesini** ve **kaldırılmasını**, shell komutlarının **çalıştırılmasını**, verilerin **yedeklenmesini**, günlüklerin **okunmasını** ve diğer birçok işlevi sağlar.
**ADB**, bir bilgisayardan **USB** veya **Ağ** üzerinden cihazları kontrol etmenizi sağlar. Bu yardımcı program, dosyaların her iki yönde **kopyalanmasını**, uygulamaların **yüklenmesini** ve **kaldırılmasını**, kabuk komutlarının **çalıştırılmasını**, verilerin **yedeklenmesini**, günlüklerin **okunmasını** ve diğer birçok işlevi sağlar.
ADB'yi nasıl kullanacağınızı öğrenmek için aşağıdaki [**ADB Komutları**](adb-commands.md) listesine göz atın.
## Smali
Bazen **gizli bilgilere** erişmek için **uygulama kodunu değiştirmek** ilginç olabilir (belki iyi obfuscate edilmiş şifreler veya bayraklar). Bu durumda, apk'yı decompile etmek, kodu değiştirmek ve yeniden derlemek ilginç olabilir.\
[**Bu eğitimde** **APK'yı decompile etmeyi, Smali kodunu değiştirmeyi ve APK'yı yeni işlevsellik ile yeniden derlemeyi** öğrenebilirsiniz](smali-changes.md). Bu, sunulacak dinamik analiz sırasında birkaç test için **alternatif olarak** çok faydalı olabilir. Bu nedenle, **her zaman bu olasılığı aklınızda bulundurun**.
[**Bu eğitimde** bir APK'yı nasıl decompile edeceğinizi, Smali kodunu nasıl değiştireceğinizi ve APK'yı yeni işlevsellik ile nasıl yeniden derleyeceğinizi **öğrenebilirsiniz**](smali-changes.md). Bu, sunulacak dinamik analiz sırasında birkaç test için **alternatif olarak** çok faydalı olabilir. Bu nedenle, **her zaman bu olasılığı aklınızda bulundurun**.
## Diğer ilginç ipuçları
## Diğer ilginç hileler
- [Play Store'da konumunuzu sahteleyin](spoofing-your-location-in-play-store.md)
- [Shizuku Ayrıcalıklı API (ADB tabanlı köksüz ayrıcalıklı erişim)](shizuku-privileged-api.md)
@ -61,14 +61,14 @@ APK'nın **string'lerine** bakarak **şifreler**, **URL'ler** ([https://github.c
### Uygulamanın Temel Anlayışı - Manifest.xml, strings.xml
Bir uygulamanın _Manifest.xml_ ve **_strings.xml_** dosyalarının **incelenmesi potansiyel güvenlik açıklarını ortaya çıkarabilir**. Bu dosyalar dekompilerler kullanılarak veya APK dosya uzantısı .zip olarak yeniden adlandırılıp açılarak erişilebilir.
Bir uygulamanın _Manifest.xml_ ve **_strings.xml_** dosyalarının **incelenmesi potansiyel güvenlik açıklarını ortaya çıkarabilir**. Bu dosyalar dekompilerler kullanılarak veya APK dosya uzantısı .zip olarak yeniden adlandırılıp ardından açılarak erişilebilir.
**Manifest.xml** dosyasından tespit edilen **açıklar** şunlardır:
- **Debuggable Uygulamalar**: _Manifest.xml_ dosyasında debuggable olarak ayarlanmış (`debuggable="true"`) uygulamalar, bağlantılara izin vererek istismar riskini artırır. Debuggable uygulamaları bulma ve istismar etme hakkında daha fazla bilgi için bir eğitime başvurun.
- **Yedekleme Ayarları**: Hassas bilgilerle ilgilenen uygulamalar için `android:allowBackup="false"` niteliği açıkça ayarlanmalıdır, böylece adb üzerinden yetkisiz veri yedeklemeleri önlenir, özellikle usb hata ayıklama etkinleştirildiğinde.
- **Ağ Güvenliği**: _res/xml/_ içindeki özel ağ güvenliği yapılandırmaları (`android:networkSecurityConfig="@xml/network_security_config"`) sertifika pinleri ve HTTP trafiği ayarları gibi güvenlik detaylarını belirtebilir. Örneğin, belirli alanlar için HTTP trafiğine izin vermek.
- **Dışa Aktarılan Aktiviteler ve Servisler**: Manifestte dışa aktarılan aktiviteleri ve servisleri tanımlamak, kötüye kullanılabilecek bileşenleri vurgulayabilir. Dinamik test sırasında daha fazla analiz, bu bileşenlerin nasıl istismar edileceğini ortaya çıkarabilir.
- **Dışa Aktarılan Aktiviteler ve Servisler**: Manifestte dışa aktarılan aktiviteleri ve servisleri tanımlamak, kötüye kullanılabilecek bileşenleri vurgulayabilir. Dinamik testler sırasında daha fazla analiz, bu bileşenlerin nasıl istismar edileceğini ortaya çıkarabilir.
- **İçerik Sağlayıcıları ve FileProviders**: Açık içerik sağlayıcıları, yetkisiz erişim veya veri değişikliği izni verebilir. FileProviders'ın yapılandırması da incelenmelidir.
- **Broadcast Alıcıları ve URL Şemaları**: Bu bileşenler istismar için kullanılabilir, URL şemalarının giriş açıkları için nasıl yönetildiğine özel dikkat gösterilmelidir.
- **SDK Versiyonları**: `minSdkVersion`, `targetSDKVersion` ve `maxSdkVersion` nitelikleri desteklenen Android sürümlerini belirtir, güvenlik nedenleriyle eski, savunmasız Android sürümlerinin desteklenmemesinin önemini vurgular.
@ -78,7 +78,7 @@ Bir uygulamanın _Manifest.xml_ ve **_strings.xml_** dosyalarının **incelenmes
### Tapjacking
**Tapjacking**, **kötü niyetli** bir **uygulamanın** başlatıldığı ve **bir kurban uygulamasının üzerine yerleştiği** bir saldırıdır. Kurban uygulamayı görünür şekilde gizlediğinde, kullanıcı arayüzü kullanıcıyı yanıltacak şekilde tasarlanmıştır, böylece kullanıcı etkileşimini bu uygulama ile gerçekleştirirken, etkileşim kurban uygulamasına iletilir.\
Sonuç olarak, bu durum **kullanıcının aslında kurban uygulamasında eylem gerçekleştirdiğini bilmesini engellemektedir**.
Sonuç olarak, bu durum **kullanıcının aslında kurban uygulamasında işlem yaptığını bilmesini engellemektedir**.
Daha fazla bilgi için:
@ -100,12 +100,12 @@ android-task-hijacking.md
**Dahili Depolama**
Android'de, **dahili** depolamada **saklanan** dosyalar yalnızca **oluşturan** **uygulama** tarafından **erişilebilir** olacak şekilde **tasarlanmıştır**. Bu güvenlik önlemi, Android işletim sistemi tarafından **uygulanır** ve çoğu uygulamanın güvenlik ihtiyaçları için genellikle yeterlidir. Ancak, geliştiriciler bazen `MODE_WORLD_READABLE` ve `MODE_WORLD_WRITABLE` gibi modları kullanarak dosyaların farklı uygulamalar arasında **paylaşılmasına** izin verir. Ancak, bu modlar **diğer uygulamalar tarafından bu dosyalara erişimi kısıtlamaz**, potansiyel olarak kötü niyetli olanlar da dahil.
Android'de, **dahili** depolamada **saklanan** dosyalar yalnızca **oluşturan** **uygulama** tarafından **erişilebilir** olacak şekilde **tasarlanmıştır**. Bu güvenlik önlemi Android işletim sistemi tarafından **uygulanır** ve çoğu uygulamanın güvenlik ihtiyaçları için genellikle yeterlidir. Ancak, geliştiriciler bazen `MODE_WORLD_READABLE` ve `MODE_WORLD_WRITABLE` gibi modları kullanarak dosyaların farklı uygulamalar arasında **paylaşılmasına** izin verir. Ancak, bu modlar diğer uygulamalar, potansiyel olarak kötü niyetli olanlar da dahil olmak üzere, bu dosyalara erişimi **kısıtlamaz**.
1. **Statik Analiz:**
- `MODE_WORLD_READABLE` ve `MODE_WORLD_WRITABLE` kullanımının **dikkatlice incelenmesi** gerektiğini **sağlayın**. Bu modlar, dosyaları **istenmeyen veya yetkisiz erişime** açabilir.
- `MODE_WORLD_READABLE` ve `MODE_WORLD_WRITABLE` kullanımının **dikkatlice incelenmesini sağlayın**. Bu modlar, dosyaları **istenmeyen veya yetkisiz erişime** açabilir.
2. **Dinamik Analiz:**
- Uygulama tarafından oluşturulan dosyaların üzerindeki **izinleri** **doğrulayın**. Özellikle, herhangi bir dosyanın **dünya çapında okunabilir veya yazılabilir** olup olmadığını **kontrol edin**. Bu, **cihazda yüklü olan herhangi bir uygulamanın**, kökeni veya niyeti ne olursa olsun, bu dosyaları **okumasına veya değiştirmesine** izin vereceğinden önemli bir güvenlik riski oluşturabilir.
- Uygulama tarafından oluşturulan dosyalar üzerindeki **izinleri** **doğrulayın**. Özellikle, herhangi bir dosyanın **dünya çapında okunabilir veya yazılabilir olarak ayarlanıp ayarlanmadığını kontrol edin**. Bu, cihazda yüklü olan **herhangi bir uygulamanın**, kökeni veya niyeti ne olursa olsun, bu dosyaları **okumasına veya değiştirmesine** izin vereceğinden önemli bir güvenlik riski oluşturabilir.
**Harici Depolama**
@ -114,7 +114,7 @@ Android'de, **dahili** depolamada **saklanan** dosyalar yalnızca **oluşturan**
1. **Erişilebilirlik**:
- Harici depolamadaki dosyalar **genel olarak okunabilir ve yazılabilir**. Bu, herhangi bir uygulamanın veya kullanıcının bu dosyalara erişebileceği anlamına gelir.
2. **Güvenlik Endişeleri**:
- Erişimin kolaylığı göz önüne alındığında, **hassas bilgilerin harici depolamada saklanmaması** önerilir.
- Erişim kolaylığı göz önüne alındığında, **hassas bilgilerin harici depolamada saklanmaması** önerilir.
- Harici depolama, herhangi bir uygulama tarafından çıkarılabilir veya erişilebilir, bu da güvenliğini azaltır.
3. **Harici Depolamadan Veri İşleme**:
- Harici depolamadan alınan veriler üzerinde her zaman **girdi doğrulaması** yapın. Bu, verilerin güvenilir bir kaynaktan gelmediği için kritik öneme sahiptir.
@ -135,34 +135,34 @@ Harici depolama, `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` konumlarında *
**Tüm Sertifikaları Kabul Etme**
Bazı nedenlerden dolayı, bazen geliştiriciler tüm sertifikaları kabul eder, örneğin, ana bilgisayar adı aşağıdaki gibi kod satırlarıyla eşleşmediğinde:
Bazı nedenlerden dolayı, bazen geliştiriciler tüm sertifikaları kabul eder, örneğin, ana bilgisayar adı aşağıdaki gibi kod satırlarıyla eşleşmese bile:
```java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
```
İyi bir test yöntemi, Burp gibi bir proxy kullanarak trafiği yakalamaya çalışmaktır, ancak cihaz içinde Burp CA'yı yetkilendirmeden. Ayrıca, Burp ile farklı bir hostname için bir sertifika oluşturabilir ve bunu kullanabilirsiniz.
İyi bir test yöntemi, Burp gibi bir proxy kullanarak trafiği yakalamaya çalışmaktır, ancak Burp CA'yı cihaz içinde yetkilendirmemelisiniz. Ayrıca, Burp ile farklı bir hostname için bir sertifika oluşturabilir ve bunu kullanabilirsiniz.
### Kırık Kriptografi
**Zayıf Anahtar Yönetim Süreçleri**
Bazı geliştiriciler hassas verileri yerel depolamada saklar ve bunu kodda hardcoded/tahmin edilebilir bir anahtar ile şifreler. Bu yapılmamalıdır çünkü bazı tersine mühendislik işlemleri, saldırganların gizli bilgileri çıkarmasına olanak tanıyabilir.
Bazı geliştiriciler hassas verileri yerel depolamada saklar ve bunu kodda hardcoded/tahmin edilebilir bir anahtar ile şifreler. Bu yapılmamalıdır çünkü bazı tersine mühendislik işlemleri, saldırganların gizli bilgileri çıkarmasına izin verebilir.
**Güvensiz ve/veya Kullanımdan Kaldırılmış Algoritmaların Kullanımı**
Geliştiriciler, yetkilendirme **kontrolleri** yapmak, **veri saklamak** veya **göndermek** için **kullanımdan kaldırılmış algoritmalar** kullanmamalıdır. Bu algoritmalardan bazıları: RC4, MD4, MD5, SHA1... Örneğin, şifreleri saklamak için **hash'ler** kullanılıyorsa, tuz ile birlikte brute-force **dirençli** hash'ler kullanılmalıdır.
Geliştiriciler, yetkilendirme **kontrolleri** yapmak, **veri saklamak** veya **göndermek** için **kullanımdan kaldırılmış algoritmalar** kullanmamalıdır. Bu algoritmalardan bazıları: RC4, MD4, MD5, SHA1... Örneğin, şifreleri saklamak için **hash'ler** kullanılıyorsa, tuz ile birlikte **brute-force dayanıklı** hash'ler kullanılmalıdır.
### Diğer Kontroller
- **APK'yı obfuscate etmek** önerilir, böylece tersine mühendislik işlemleri saldırganlar için zorlaşır.
- Uygulama hassas ise (örneğin banka uygulamaları), **mobilin köklenip köklenmediğini kontrol etmek için kendi kontrollerini** gerçekleştirmelidir ve buna göre hareket etmelidir.
- Uygulama hassas ise (örneğin banka uygulamaları), bir **emülatör** kullanılıp kullanılmadığını kontrol etmelidir.
- Uygulama hassas ise (örneğin banka uygulamaları), **çalıştırmadan önce kendi bütünlüğünü kontrol etmelidir** ve değiştirilip değiştirilmediğini kontrol etmelidir.
- [**APKiD**](https://github.com/rednaga/APKiD) kullanarak APK'nın hangi derleyici/paketleyici/obfuscator ile oluşturulduğunu kontrol edin.
- Uygulama hassas ise (örneğin banka uygulamaları), **çalıştırmadan önce kendi bütünlüğünü kontrol etmelidir**.
- APK'yı oluşturmak için hangi derleyici/paketleyici/obfuscator kullanıldığını kontrol etmek için [**APKiD**](https://github.com/rednaga/APKiD) kullanın.
### React Native Uygulaması
React uygulamalarının javascript koduna kolayca erişmeyi öğrenmek için aşağıdaki sayfayı okuyun:
React uygulamalarının javascript koduna kolayca erişmek için aşağıdaki sayfayı okuyun:
{{#ref}}
react-native-application.md
@ -170,7 +170,7 @@ react-native-application.md
### Xamarin Uygulamaları
Xamarin uygulamalarının C# koduna kolayca erişmeyi öğrenmek için aşağıdaki sayfayı okuyun:
Xamarin uygulamalarının C# koduna kolayca erişmek için aşağıdaki sayfayı okuyun:
{{#ref}}
../xamarin-apps.md
@ -182,15 +182,15 @@ Bu [**blog yazısına**](https://clearbluejar.github.io/posts/desuperpacking-met
### Otomatik Statik Kod Analizi
[**mariana-trench**](https://github.com/facebook/mariana-trench) aracı, uygulamanın **kodunu tarayarak** **zayıflıkları** bulma yeteneğine sahiptir. Bu araç, **kullanıcı tarafından kontrol edilen** **giriş** yerlerini gösteren bir dizi **bilinen kaynak** (kaynaklar), kötü niyetli kullanıcı girişinin zarar verebileceği **tehlikeli** **yerleri** gösteren **sinkler** ve **kurallar** içerir. Bu kurallar, bir zayıflığı gösteren **kaynak-sink kombinasyonlarını** belirtir.
[**mariana-trench**](https://github.com/facebook/mariana-trench) aracı, uygulamanın **kodunu tarayarak** **zayıflıkları** bulma yeteneğine sahiptir. Bu araç, **kullanıcı tarafından kontrol edilen** **giriş** yerlerini gösteren bir dizi **bilinen kaynak** içerir, **sink** (kötü niyetli kullanıcı girişinin zarar verebileceği **tehlikeli** **yerleri** gösterir) ve **kurallar** içerir. Bu kurallar, bir zayıflığı gösteren **kaynak-sink** kombinasyonlarını belirtir.
Bu bilgiyle, **mariana-trench kodu gözden geçirecek ve olası zayıflıkları bulacaktır**.
### Sızdırılan Sırlar
### Sızdırılan Gizli Bilgiler
Bir uygulama, içinde keşfedebileceğiniz sırlar (API anahtarları, şifreler, gizli URL'ler, alt alan adları...) içerebilir. [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) gibi bir araç kullanabilirsiniz.
Bir uygulama, içinde keşfedebileceğiniz gizli bilgiler (API anahtarları, şifreler, gizli URL'ler, alt alan adları...) içerebilir. [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) gibi bir araç kullanabilirsiniz.
### Biyometrik Kimlik Doğrulamasını Atlatma
### Biyometrik Kimlik Doğrulamama
{{#ref}}
bypass-biometric-authentication-android.md
@ -201,7 +201,7 @@ bypass-biometric-authentication-android.md
- **Kod yürütme**: `Runtime.exec(), ProcessBuilder(), native code:system()`
- **SMS gönderme**: `sendTextMessage, sendMultipartTestMessage`
- **Native fonksiyonlar** `native` olarak tanımlanmıştır: `public native, System.loadLibrary, System.load`
- [Native fonksiyonları **tersine mühendislik yapmayı öğrenmek için bunu okuyun**](reversing-native-libraries.md)
- [Native fonksiyonları **tersine çevirmeyi öğrenmek için bunu okuyun**](reversing-native-libraries.md)
### **Diğer Hileler**
@ -215,11 +215,11 @@ content-protocol.md
## Dinamik Analiz
> Öncelikle, uygulamayı ve tüm ortamı (özellikle Burp CA sertifikası, Drozer ve Frida) kurabileceğiniz bir ortama ihtiyacınız var. Bu nedenle, köklü bir cihaz (emüle edilmiş veya değil) son derece önerilir.
> Öncelikle, uygulamayı ve tüm ortamı (Burp CA sertifikası, Drozer ve Frida başta olmak üzere) kurabileceğiniz bir ortama ihtiyacınız var. Bu nedenle, köklü bir cihaz (emüle edilmiş veya değil) son derece önerilir.
### Çevrimiçi Dinamik Analiz
[https://appetize.io/](https://appetize.io) adresinde **ücretsiz bir hesap** oluşturabilirsiniz. Bu platform, APK'ları **yüklemenize** ve **çalıştırmanıza** olanak tanır, bu nedenle bir APK'nın nasıl davrandığını görmek için faydalıdır.
[https://appetize.io/](https://appetize.io) adresinde **ücretsiz bir hesap** oluşturabilirsiniz. Bu platform, APK'ları **yüklemenize** ve **çalıştırmanıza** olanak tanır, bu nedenle bir apk'nın nasıl davrandığını görmek için faydalıdır.
Ayrıca, uygulamanızın **loglarını** webde görebilir ve **adb** üzerinden bağlanabilirsiniz.
@ -232,14 +232,14 @@ ADB bağlantısı sayesinde, emülatörler içinde **Drozer** ve **Frida** kulla
#### Bir emülatör kullanarak
- [**Android Studio**](https://developer.android.com/studio) ( **x86** ve **arm** cihazlar oluşturabilirsiniz ve [**bu**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**en son x86** sürümleri **ARM kütüphanelerini** yavaş bir arm emülatörüne ihtiyaç duymadan destekler).
- Kurulumunu öğrenmek için bu sayfayı okuyun:
- Bunu ayarlamayı öğrenmek için bu sayfayı okuyun:
{{#ref}}
avd-android-virtual-device.md
{{#endref}}
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Ücretsiz sürüm:** Kişisel Sürüm, bir hesap oluşturmanız gerekir. _Potansiyel hataları önlemek için **VirtualBox** ile **sürümü indirmek** önerilir._)
- [**Nox**](https://es.bignox.com) (Ücretsiz, ancak Frida veya Drozer'ı desteklemez).
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Ücretsiz sürüm:** Kişisel Sürüm, bir hesap oluşturmanız gerekir. _Potansiyel hataları önlemek için **VirtualBox** ile birlikte sürümü **indirmeyi** öneririz._)
- [**Nox**](https://es.bignox.com) (Ücretsiz, ancak Frida veya Drozer'i desteklemiyor).
> [!TIP]
> Herhangi bir platformda yeni bir emülatör oluştururken, ekranın ne kadar büyük olursa, emülatörün o kadar yavaş çalışacağını unutmayın. Bu nedenle, mümkünse küçük ekranlar seçin.
@ -252,7 +252,7 @@ Ayrıca, Genymotion'daki **Android VM yapılandırmasında** **Bridge Network mo
#### Fiziksel bir cihaz kullanma
**hata ayıklama** seçeneklerini etkinleştirmeniz gerekir ve cihazı **root** yapabilirseniz harika olur:
**Hata ayıklama** seçeneklerini etkinleştirmeniz gerekir ve eğer **kökleyebilirseniz** harika olur:
1. **Ayarlar**.
2. (Android 8.0'dan itibaren) **Sistem**'i seçin.
@ -260,7 +260,7 @@ Ayrıca, Genymotion'daki **Android VM yapılandırmasında** **Bridge Network mo
4. **Build numarasına** 7 kez basın.
5. Geri dönün ve **Geliştirici seçeneklerini** bulacaksınız.
> Uygulamayı yükledikten sonra, yapmanız gereken ilk şey, onu denemek ve ne yaptığını, nasıl çalıştığını araştırmak ve onunla rahat olmaktır.\
> Uygulamayı yükledikten sonra yapmanız gereken ilk şey, onu denemek ve ne yaptığını, nasıl çalıştığını araştırmak ve onunla rahat olmaktır.\
> **MobSF dinamik analizi + pidcat** kullanarak bu ilk dinamik analizi gerçekleştirmeyi öneririm, böylece **uygulamanın nasıl çalıştığını öğrenebiliriz** ve MobSF **ilginç** **verileri** toplarken daha sonra gözden geçirebiliriz.
### İstenmeyen Veri Sızıntısı
@ -270,22 +270,22 @@ Ayrıca, Genymotion'daki **Android VM yapılandırmasında** **Bridge Network mo
Geliştiriciler, **hata ayıklama bilgilerini** kamuya açık bir şekilde ifşa etme konusunda dikkatli olmalıdır, çünkü bu hassas veri sızıntılarına yol açabilir. Uygulama günlüklerini izlemek ve hassas bilgileri korumak için [**pidcat**](https://github.com/JakeWharton/pidcat) ve `adb logcat` araçları önerilir. **Pidcat**, kullanım kolaylığı ve okunabilirliği nedeniyle tercih edilmektedir.
> [!WARNING]
> **Android 4.0'dan daha yeni** sürümlerden itibaren, **uygulamalar yalnızca kendi günlüklerine erişebilir**. Yani uygulamalar diğer uygulamaların günlüklerine erişemez.\
> **Android 4.0'dan** sonraki **sürümlerden itibaren**, **uygulamalar yalnızca kendi günlüklerine erişebilir**. Yani uygulamalar diğer uygulamaların günlüklerine erişemez.\
> Yine de, **hassas bilgileri günlüğe kaydetmemek** önerilir.
**Kopyala/Yapıştır Tamponu Önbellekleme**
Android'in **panoya dayalı** çerçevesi, uygulamalarda kopyala-yapıştır işlevselliği sağlar, ancak **diğer uygulamalar** panoya **erişebileceğinden**, hassas verilerin açığa çıkma riski taşır. Hassas bölümler için, kredi kartı bilgileri gibi, **kopyala/yapıştır** işlevlerini devre dışı bırakmak önemlidir.
Android'in **panoya dayalı** çerçevesi, uygulamalarda kopyala-yapıştır işlevselliği sağlar, ancak **diğer uygulamalar** panoya **erişebilir**, bu da hassas verilerin açığa çıkma riskini taşır. Hassas bölümler için, kredi kartı bilgileri gibi, **kopyala/yapıştır** işlevlerini devre dışı bırakmak kritik öneme sahiptir.
**Çökme Günlükleri**
Bir uygulama **çökerse** ve **günlükleri kaydederse**, bu günlükler saldırganlara yardımcı olabilir, özellikle uygulama tersine mühendislik yapılamıyorsa. Bu riski azaltmak için, çökme durumunda günlüğe kaydetmekten kaçının ve eğer günlükler ağ üzerinden iletilmesi gerekiyorsa, güvenlik için SSL kanalı üzerinden gönderildiğinden emin olun.
Bir uygulama **çökerse** ve **günlükleri kaydederse**, bu günlükler saldırganlara yardımcı olabilir, özellikle uygulama tersine mühendislik ile çözülemezse. Bu riski azaltmak için, çökme durumunda günlüğe kaydetmekten kaçının ve eğer günlükler ağ üzerinden iletilmesi gerekiyorsa, güvenlik için SSL kanalı üzerinden gönderildiğinden emin olun.
Pentester olarak, **bu günlükleri gözden geçirmeye çalışın**.
**Üçüncü Taraflara Gönderilen Analitik Veriler**
Uygulamalar genellikle Google Adsense gibi hizmetleri entegre eder, bu da geliştiricilerin yanlış uygulaması nedeniyle hassas verilerin **sızmasına** neden olabilir. Potansiyel veri sızıntılarını belirlemek için, uygulamanın trafiğini **yakalamak** ve üçüncü taraf hizmetlere gönderilen hassas bilgileri kontrol etmek önerilir.
Uygulamalar genellikle Google Adsense gibi hizmetleri entegre eder, bu da geliştiricilerin yanlış uygulaması nedeniyle hassas verilerin **sızmasına** neden olabilir. Potansiyel veri sızıntılarını belirlemek için, uygulamanın trafiğini **yakalamak** ve üçüncü taraf hizmetlere gönderilen herhangi bir hassas bilgiyi kontrol etmek önerilir.
### SQLite DB'leri
@ -298,21 +298,21 @@ Tabloları `.tables` ile listeleyin ve tabloların sütunlarını `.schema <tabl
### Drozer (Saldırı Aktiviteleri, İçerik Sağlayıcıları ve Servisler)
[Drozer Belgeleri](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf)'nden: **Drozer**, bir Android uygulamasının rolünü üstlenmenizi ve diğer uygulamalarla etkileşimde bulunmanızı sağlar. Yüklenmiş bir uygulamanın yapabileceği her şeyi yapabilir, örneğin Androidin Araçlar Arası İletişim (IPC) mekanizmasını kullanabilir ve altındaki işletim sistemi ile etkileşimde bulunabilir.\
Drozer, **ihracat yapılmış aktiviteleri, ihracat yapılmış servisleri ve İçerik Sağlayıcıları** istismar etmek için yararlı bir araçtır, bunu aşağıdaki bölümlerde öğreneceksiniz.
[Drozer Belgeleri](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf)'nden: **Drozer**, bir Android uygulamasının rolünü üstlenmenizi ve diğer uygulamalarla etkileşimde bulunmanızı sağlar. Yüklenmiş bir uygulamanın yapabileceği her şeyi yapabilir, örneğin Androidin Araçlar Arası İletişim (IPC) mekanizmasını kullanabilir ve temel işletim sistemi ile etkileşimde bulunabilir.\
Drozer, **ihracat yapılmış aktiviteleri, ihracat yapılmış servisleri ve İçerik Sağlayıcıları** istismar etmek için faydalı bir araçtır, bunu aşağıdaki bölümlerde öğreneceksiniz.
### İhracat Yapılmış Aktiviteleri İstismar Etme
[**Bir Android Aktivitesinin ne olduğunu tazelemek istiyorsanız bunu okuyun.**](android-applications-basics.md#launcher-activity-and-other-activities)\
Ayrıca, bir aktivitenin kodunun **`onCreate`** metodunda başladığını unutmayın.
**Yetkilendirme atlatma**
**Yetkilendirme aşma**
Bir Aktivite ihracat yapıldığında, dış bir uygulamadan ekranını çağırabilirsiniz. Bu nedenle, **hassas bilgileri** içeren bir aktivite **ihracat** edilmişse, **ona erişmek için** **kimlik doğrulama** mekanizmalarını **atlatabilirsiniz.**
Bir Aktivite ihracat yapıldığında, dış bir uygulamadan ekranını çağırabilirsiniz. Bu nedenle, **hassas bilgileri** içeren bir aktivite **ihracat** edilmişse, **ona erişmek için** **kimlik doğrulama** mekanizmalarını **aşabilirsiniz.**
[**Drozer ile ihracat yapılmış aktiviteleri nasıl istismar edeceğinizi öğrenin.**](drozer-tutorial/index.html#activities)
Ayrıca, adb'den ihracat yapılmış bir aktivite başlatabilirsiniz:
Ayrıca, adb'den bir ihracat yapılmış aktivite başlatabilirsiniz:
- Paket Adı com.example.demo
- İhracat Yapılmış Aktivite Adı com.example.test.MainActivity
@ -322,7 +322,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
**NOT**: MobSF, bir aktivitede `android:launchMode` olarak _**singleTask/singleInstance**_ kullanımını kötü niyetli olarak tespit edecektir, ancak [bu](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) nedeniyle, görünüşe göre bu yalnızca eski sürümlerde (API sürümleri < 21) tehlikelidir.
> [!İPUCU]
> Bir yetkilendirme atlamanın her zaman bir zafiyet olmadığını unutmayın, bu atlamanın nasıl çalıştığına ve hangi bilgilerin açığa çıktığına bağlıdır.
> Bir yetkilendirme atlamasının her zaman bir zafiyet olmadığını unutmayın, bu atlamanın nasıl çalıştığına ve hangi bilgilerin açığa çıktığına bağlıdır.
**Hassas bilgi sızıntısı**
@ -335,16 +335,16 @@ Eğer tapjacking engellenmezse, dışa aktarılmış aktiviteyi **kullanıcını
### İçerik Sağlayıcılarını Sömürme - Hassas bilgilere erişim ve manipülasyon
[**Bir İçerik Sağlayıcının ne olduğunu tazelemek istiyorsanız bunu okuyun.**](android-applications-basics.md#content-provider)\
İçerik sağlayıcılar temelde **veri paylaşmak** için kullanılır. Eğer bir uygulamanın mevcut içerik sağlayıcıları varsa, onlardan **hassas** verileri **çıkartma** imkanınız olabilir. Ayrıca, olası **SQL enjeksiyonlarını** ve **Path Traversals** test etmek de ilginçtir çünkü bunlar zayıf olabilir.
İçerik sağlayıcıları temelde **veri paylaşmak** için kullanılır. Eğer bir uygulamanın mevcut içerik sağlayıcıları varsa, onlardan **hassas** verileri **çıkartma** imkanınız olabilir. Ayrıca, olası **SQL enjeksiyonlarını** ve **Path Traversals** test etmek de ilginçtir çünkü bunlar zayıf olabilir.
[**Drozer ile İçerik Sağlayıcıları nasıl sömüreceğinizi öğrenin.**](drozer-tutorial/index.html#content-providers)
[**Drozer ile İçerik Sağlayıcılarını nasıl sömüreceğinizi öğrenin.**](drozer-tutorial/index.html#content-providers)
### **Servisleri Sömürme**
[**Bir Servisin ne olduğunu tazelemek istiyorsanız bunu okuyun.**](android-applications-basics.md#services)\
Bir Servisin eylemlerinin `onStartCommand` metodunda başladığını unutmayın.
Servis, temelde **veri alabilen**, **işleyebilen** ve **bir yanıt döndüren** (ya da döndürmeyen) bir şeydir. Dolayısıyla, bir uygulama bazı servisleri dışa aktarıyorsa, ne yaptığını anlamak için **kodunu kontrol etmeli** ve gizli bilgileri çıkartmak, kimlik doğrulama önlemlerini atlamak için **dinamik olarak test etmelisiniz**...\
Servis, temelde **veri alabilen**, **işleyebilen** ve **bir yanıt döndüren** (veya döndürmeyen) bir şeydir. Dolayısıyla, bir uygulama bazı servisleri dışa aktarıyorsa, ne yaptığını anlamak için **kodunu kontrol etmeli** ve gizli bilgileri çıkartmak, kimlik doğrulama önlemlerini atlamak için **dinamik olarak test etmelisiniz**...\
[**Drozer ile Servisleri nasıl sömüreceğinizi öğrenin.**](drozer-tutorial/index.html#services)
### **Broadcast Alıcılarını Sömürme**
@ -390,13 +390,13 @@ Bağlantılar hakkında [ilginç bir hata ödül raporu](https://hackerone.com/r
### Taşıma Katmanı İncelemesi ve Doğrulama Hataları
- **Sertifikalar her zaman düzgün bir şekilde incelenmez** Android uygulamaları tarafından. Bu uygulamaların uyarıları göz ardı etmesi ve kendinden imzalı sertifikaları kabul etmesi veya bazı durumlarda HTTP bağlantılarına geri dönmesi yaygındır.
- Android uygulamaları **sertifikaları her zaman düzgün bir şekilde incelemez**. Bu uygulamaların uyarıları göz ardı etmesi ve kendinden imzalı sertifikaları kabul etmesi veya bazı durumlarda HTTP bağlantılarına geri dönmesi yaygındır.
- **SSL/TLS el sıkışması sırasında müzakereler bazen zayıftır**, güvensiz şifreleme takımları kullanır. Bu zayıflık, bağlantıyı adam ortası (MITM) saldırılarına karşı savunmasız hale getirir ve saldırganların verileri şifrelerini çözmesine olanak tanır.
- **Özel bilgilerin sızması** güvenli kanallar aracılığıyla kimlik doğrulaması yapan uygulamalar, ancak diğer işlemler için güvenli olmayan kanallar üzerinden iletişim kurduğunda bir risk oluşturur. Bu yaklaşım, oturum çerezleri veya kullanıcı detayları gibi hassas verilerin kötü niyetli varlıklar tarafından ele geçirilmesini korumaz.
- Uygulamalar güvenli kanallar kullanarak kimlik doğrulaması yaparken, diğer işlemler için güvensiz kanallar üzerinden iletişim kurmaları durumunda **özel bilgilerin sızması** riski vardır. Bu yaklaşım, oturum çerezleri veya kullanıcı detayları gibi hassas verilerin kötü niyetli varlıklar tarafından ele geçirilmesini korumaz.
#### Sertifika Doğrulama
**Sertifika doğrulama** üzerine odaklanacağız. Sunucunun sertifikasının bütünlüğü, güvenliği artırmak için doğrulanmalıdır. Bu, güvensiz TLS yapılandırmaları ve hassas verilerin şifrelenmemiş kanallar üzerinden iletilmesi önemli riskler oluşturabileceğinden kritik öneme sahiptir. Sunucu sertifikalarını doğrulama ve zayıflıkları ele alma konusunda ayrıntılı adımlar için, [**bu kaynak**](https://manifestsecurity.com/android-application-security-part-10/) kapsamlı rehberlik sağlamaktadır.
**Sertifika doğrulama** üzerine odaklanacağız. Sunucunun sertifikasının bütünlüğü, güvenliği artırmak için doğrulanmalıdır. Bu, güvensiz TLS yapılandırmaları ve hassas verilerin şifrelenmemiş kanallar üzerinden iletilmesi durumunda önemli riskler oluşturabileceğinden kritik öneme sahiptir. Sunucu sertifikalarını doğrulama ve zayıflıkları giderme ile ilgili ayrıntılı adımlar için, [**bu kaynak**](https://manifestsecurity.com/android-application-security-part-10/) kapsamlı rehberlik sağlamaktadır.
#### SSL Pinning
@ -404,35 +404,35 @@ SSL Pinning, uygulamanın sunucunun sertifikasını uygulama içinde saklanan bi
#### Trafik İncelemesi
HTTP trafiğini incelemek için, **proxy aracının sertifikasını yüklemek** gereklidir (örneğin, Burp). Bu sertifikayı yüklemeden, şifreli trafik proxy üzerinden görünmeyebilir. Özel CA sertifikası yükleme rehberi için, [**buraya tıklayın**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
HTTP trafiğini incelemek için, **proxy aracının sertifikasını yüklemek** gereklidir (örneğin, Burp). Bu sertifikayı yüklemeden, şifreli trafik proxy üzerinden görünmeyebilir. Özel bir CA sertifikası yükleme rehberi için, [**buraya tıklayın**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
**API Seviye 24 ve üzeri** hedefleyen uygulamalar, proxy'nin CA sertifikasını kabul etmek için Ağ Güvenliği Yapılandırmasında değişiklikler gerektirir. Bu adım, şifreli trafiği incelemek için kritik öneme sahiptir. Ağ Güvenliği Yapılandırmasını değiştirme talimatları için, [**bu eğitime başvurun**](make-apk-accept-ca-certificate.md).
**API Level 24 ve üzeri** hedefleyen uygulamalar, proxy'nin CA sertifikasını kabul etmek için Ağ Güvenlik Yapılandırmasında değişiklikler gerektirir. Bu adım, şifreli trafiği incelemek için kritik öneme sahiptir. Ağ Güvenlik Yapılandırmasını değiştirme talimatları için, [**bu eğitime başvurun**](make-apk-accept-ca-certificate.md).
**Flutter** kullanılıyorsa, [**bu sayfadaki**](flutter.md) talimatları takip etmeniz gerekir. Bunun nedeni, sertifikayı depoya eklemenin işe yaramayacak olmasıdır çünkü Flutter'ın kendi geçerli CA listesi vardır.
**Flutter** kullanılıyorsa, [**bu sayfadaki**](flutter.md) talimatları takip etmeniz gerekir. Bunun nedeni, sertifikayı depoya eklemenin işe yaramayacak olmasıdır, çünkü Flutter'ın kendi geçerli CA listesi vardır.
#### SSL Pinning'i Aşma
SSL Pinning uygulandığında, HTTPS trafiğini incelemek için bunu aşmak gerekli hale gelir. Bu amaçla çeşitli yöntemler mevcuttur:
- **apk'yi otomatik olarak değiştirerek** SSLPinning'i **aşmak için** [**apk-mitm**](https://github.com/shroudedcode/apk-mitm) kullanabilirsiniz. Bu seçeneğin en iyi avantajı, SSL Pinning'i aşmak için root'a ihtiyaç duymamanızdır, ancak uygulamayı silip yeni olanı yeniden yüklemeniz gerekecek ve bu her zaman işe yaramayabilir.
- Bu korumayı aşmak için **Frida** kullanabilirsiniz (aşağıda tartışılmıştır). Burp+Frida+Genymotion kullanma rehberiniz burada: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
- **apk'yi otomatik olarak değiştirerek** SSL Pinning'i **aşmak için** [**apk-mitm**](https://github.com/shroudedcode/apk-mitm) kullanabilirsiniz. Bu seçeneğin en iyi yanı, SSL Pinning'i aşmak için root'a ihtiyacınız olmamasıdır, ancak uygulamayı silip yeni olanı yeniden yüklemeniz gerekecek ve bu her zaman işe yaramayabilir.
- Bu korumayı aşmak için **Frida** kullanabilirsiniz (aşağıda tartışılmaktadır). Burp+Frida+Genymotion kullanma kılavuzunuz burada: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
- **SSL Pinning'i otomatik olarak aşmak için** [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
- **MobSF dinamik analizi** kullanarak da **SSL Pinning'i otomatik olarak aşmayı** deneyebilirsiniz (aşağıda açıklanmıştır).
- Hala yakalamadığınız bazı trafiğin olduğunu düşünüyorsanız, trafiği **iptables kullanarak burp'a yönlendirmeyi** deneyebilirsiniz. Bu blogu okuyun: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Yaygın Web Zayıflıklarını Arama
Uygulama içinde yaygın web zayıflıklarını da aramak önemlidir. Bu zayıflıkları tanımlama ve hafifletme konusunda ayrıntılı bilgi, bu özetin kapsamının ötesindedir ancak başka yerlerde kapsamlı bir şekilde ele alınmaktadır.
Uygulama içinde yaygın web zayıflıklarını da aramak önemlidir. Bu zayıflıkları tanımlama ve hafifletme ile ilgili ayrıntılı bilgiler bu özetin kapsamının ötesindedir, ancak başka yerlerde kapsamlı bir şekilde ele alınmaktadır.
### Frida
[Frida](https://www.frida.re), geliştiriciler, ters mühendisler ve güvenlik araştırmacıları için dinamik bir enstrümantasyon aracıdır.\
**Çalışan uygulamaya erişebilir ve çalışma zamanında yöntemleri bağlayarak davranışı değiştirebilir, değerleri değiştirebilir, değerleri çıkarabilir, farklı kodlar çalıştırabilirsiniz...**\
**Çalışan uygulamaya erişebilir ve çalışma zamanında yöntemleri yakalayarak davranışları değiştirebilir, değerleri değiştirebilir, değerleri çıkarabilir, farklı kodlar çalıştırabilirsiniz...**\
Android uygulamalarını pentest etmek istiyorsanız, Frida'yı nasıl kullanacağınızı bilmelisiniz.
- Frida'yı nasıl kullanacağınızı öğrenin: [**Frida eğitimi**](frida-tutorial/index.html)
- Frida ile eylemler için bazı "GUI": [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
- Ojection, Frida kullanımını otomatikleştirmek için harika: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
- Ojection, Frida kullanımını otomatikleştirmek için harikadır: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
- Burada bazı harika Frida betikleri bulabilirsiniz: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
- Frida'yı [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) adresinde belirtildiği gibi yükleyerek anti-debugging / anti-frida mekanizmalarını aşmayı deneyin (araç [linjector](https://github.com/erfur/linjector-rs))
@ -459,7 +459,7 @@ Android'de Keystore, hassas verileri saklamak için en iyi yerdir, ancak yeterli
Bir uygulama verileri keystore'da saklasa bile, verilerin şifrelenmiş olması gerekir.
Keystore içindeki verilere erişmek için bu Frida script'ini kullanabilirsiniz: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
Keystore içindeki verilere erişmek için bu Frida betiğini kullanabilirsiniz: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
```bash
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
```
@ -471,13 +471,13 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
```
### **Arka Plan Görüntüleri**
Bir uygulamayı arka plana aldığınızda, Android **uygulamanın bir anlık görüntüsünü** saklar, böylece ön plana geri döndüğünde, uygulama yüklenmeden önce görüntüyü yüklemeye başlar, böylece uygulamanın daha hızlı yüklendiği izlenimi verir.
Bir uygulamayı arka plana aldığınızda, Android **uygulamanın bir anlık görüntüsünü** saklar, böylece ön plana geri döndüğünde, uygulama yüklenmeden önce görüntüyü yüklemeye başlar, bu da uygulamanın daha hızlı yüklendiği izlenimini verir.
Ancak, bu anlık görüntü **hassas bilgiler** içeriyorsa, anlık görüntüye erişimi olan biri bu bilgileri **çalıp alabilir** (erişmek için root'a ihtiyacınız olduğunu unutmayın).
Anlık görüntüler genellikle şu konumda saklanır: **`/data/system_ce/0/snapshots`**
Anlık görüntüler genellikle şurada saklanır: **`/data/system_ce/0/snapshots`**
Android, **FLAG_SECURE** düzen parametresini ayarlayarak ekran görüntüsü alımını **önlemenin** bir yolunu sağlar. Bu bayrağı kullanarak, pencere içeriği güvenli olarak kabul edilir, ekran görüntülerinde görünmesini veya güvenli olmayan ekranlarda görüntülenmesini engeller.
Android, **FLAG_SECURE** düzen parametresini ayarlayarak ekran görüntüsü alımını **önlemenin** bir yolunu sağlar. Bu bayrağı kullanarak, pencere içeriği güvenli olarak kabul edilir, bu da ekran görüntülerinde görünmesini veya güvenli olmayan ekranlarda görüntülenmesini engeller.
```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
```
@ -500,7 +500,7 @@ Tehlike, saldırganların bu Intents'i yanlış yönlendirerek dışa aktarılma
### Android İstemci Tarafı Enjeksiyonları ve Diğerleri
Bu tür güvenlik açıkları hakkında Web'den haberdar olmalısınız. Bir Android uygulamasında bu güvenlik açıklarına özellikle dikkat etmelisiniz:
Bu tür zafiyetler hakkında Web'den haberdar olmalısınız. Bir Android uygulamasında bu zafiyetlere karşı özellikle dikkatli olmalısınız:
- **SQL Enjeksiyonu:** Dinamik sorgular veya İçerik Sağlayıcılarla çalışırken, parametreli sorgular kullandığınızdan emin olun.
- **JavaScript Enjeksiyonu (XSS):** Herhangi bir WebView için JavaScript ve Eklenti desteğinin devre dışı olduğundan emin olun (varsayılan olarak devre dışıdır). [Daha fazla bilgi burada](webview-attacks.md#javascript-enabled).
@ -530,7 +530,7 @@ MobSF ayrıca **diff/karşılaştırma** analizi yapmanıza ve **VirusTotal** il
### MobSF ile Yardımlı Dinamik Analiz
**MobSF**, **Android** için **dinamik analiz** konusunda da çok yardımcı olabilir, ancak bu durumda MobSF ve **genymotion**'ı ana bilgisayarınıza kurmanız gerekecek (bir VM veya Docker çalışmayacaktır). _Not: Öncelikle **genymotion'da bir VM başlatmalısınız** ve **sonra MobSF'yi başlatmalısınız.**_\
**MobSF**, **Android** için **dinamik analiz** konusunda da çok yardımcı olabilir, ancak bu durumda MobSF ve **genymotion**'ı ana bilgisayarınıza kurmanız gerekecek (bir VM veya Docker çalışmayacaktır). _Not: Önce **genymotion'da bir VM başlatmalısınız** ve **sonra MobSF'yi başlatmalısınız**._\
**MobSF dinamik analizörü** şunları yapabilir:
- **Uygulama verilerini dökme** (URL'ler, günlükler, panoya kopyalanan veriler, sizin yaptığınız ekran görüntüleri, "**Exported Activity Tester**" tarafından yapılan ekran görüntüleri, e-postalar, SQLite veritabanları, XML dosyaları ve diğer oluşturulan dosyalar). Tüm bunlar otomatik olarak yapılır, ekran görüntüleri için istediğinizde basmanız veya tüm dışa aktarılan etkinliklerin ekran görüntülerini elde etmek için "**Exported Activity Tester**" butonuna basmanız gerekir.
@ -545,24 +545,24 @@ Varsayılan olarak, SSL pinning, **root tespiti** ve **hata ayıklayıcı tespit
MobSF ayrıca **dışa aktarılan etkinlikleri** çağırabilir, bunların **ekran görüntülerini** alabilir ve rapor için **kaydedebilir**.
Dinamik testi **başlatmak** için yeşil butona basın: "**Start Instrumentation**". Frida script'leri tarafından üretilen günlükleri görmek için "**Frida Live Logs**" butonuna basın ve bağlı yöntemlere yapılan tüm çağrıları, geçirilen argümanları ve döndürülen değerleri görmek için "**Live API Monitor**" butonuna basın (bu, "Start Instrumentation" butonuna bastıktan sonra görünecektir).\
MobSF ayrıca kendi **Frida script'lerinizi** yüklemenize olanak tanır (Frida script'lerinizin sonuçlarını MobSF'ye göndermek için `send()` fonksiyonunu kullanın). Ayrıca yükleyebileceğiniz **birçok önceden yazılmış script** vardır (daha fazlasını `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` dizinine ekleyebilirsiniz), sadece **seçin**, "**Load**" butonuna basın ve "**Start Instrumentation**" butonuna basın (bu script'lerin günlüklerini "**Frida Live Logs**" içinde görebileceksiniz).
MobSF ayrıca kendi **Frida script'lerinizi** yüklemenize olanak tanır (Frida script'lerinizin sonuçlarını MobSF'ye göndermek için `send()` fonksiyonunu kullanın). Ayrıca yükleyebileceğiniz **birçok önceden yazılmış script** vardır (daha fazlasını `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` dizinine ekleyebilirsiniz), sadece **seçin**, "**Load**" butonuna basın ve "**Start Instrumentation**" butonuna basın (o script'lerin günlüklerini "**Frida Live Logs**" içinde görebileceksiniz).
![](<../../images/image (419).png>)
Ayrıca, bazı Yardımcı Frida işlevsellikleriniz var:
- **Yüklenen Sınıfları Listele**: Yüklenen tüm sınıfları yazdırır
- **Dizeleri Yakala**: Uygulamayı kullanırken yakalanan tüm dizeleri yazdırır (çok gürültülü)
- **Dize Karşılaştırmalarını Yakala**: Çok faydalı olabilir. **Karşılaştırılan 2 dizeyi** ve sonucun True veya False olup olmadığını **gösterir**.
- **Sınıf Yöntemlerini Listele**: Sınıf adını (örneğin "java.io.File") girin ve sınıfın tüm yöntemlerini yazdırır.
- **Sınıf Deseni Ara**: Desene göre sınıfları arar
- **Sınıf Yöntemlerini İzle**: **Bütün bir sınıfı izler** (sınıfın tüm yöntemlerinin giriş ve çıkışlarını görür). Unutmayın ki varsayılan olarak MobSF, birkaç ilginç Android API yöntemini izler.
- **Yüklenen Sınıfları Sayma**: Yüklenen tüm sınıfları yazdırır
- **Dizeleri Yakalama**: Uygulamayı kullanırken yakalanan tüm dizeleri yazdırır (çok gürültülü)
- **Dize Karşılaştırmalarını Yakalama**: Çok faydalı olabilir. **Karşılaştırılan 2 dizeyi** ve sonucun True veya False olup olmadığını **gösterir**.
- **Sınıf Yöntemlerini Sayma**: Sınıf adını (örneğin "java.io.File") yazın ve sınıfın tüm yöntemlerini yazdırır.
- **Sınıf Deseni Arama**: Desene göre sınıfları arama
- **Sınıf Yöntemlerini İzleme**: **Bütün bir sınıfı izleme** (sınıfın tüm yöntemlerinin giriş ve çıkışlarını görün). Varsayılan olarak MobSF, birkaç ilginç Android API yöntemini izler.
Kullanmak istediğiniz yardımcı modülü seçtikten sonra "**Start Instrumentation**" butonuna basmanız gerekir ve tüm çıktıları "**Frida Live Logs**" içinde göreceksiniz.
**Shell**
MobSF ayrıca dinamik analiz sayfasının altında bazı **adb** komutları, **MobSF komutları** ve yaygın **shell** **komutları** ile bir shell sunar. Bazı ilginç komutlar:
Mobsf ayrıca dinamik analiz sayfasının altında bazı **adb** komutları, **MobSF komutları** ve yaygın **shell** **komutları** ile bir shell sunar. Bazı ilginç komutlar:
```bash
help
shell ls
@ -634,7 +634,7 @@ StaCoAn, mobil uygulamalar üzerinde [statik kod analizi](https://en.wikipedia.o
Kavram, mobil uygulama dosyanızı (bir .apk veya .ipa dosyası) StaCoAn uygulamasına sürükleyip bırakmanız ve bunun için size görsel ve taşınabilir bir rapor oluşturmasıdır. Özelleştirilmiş bir deneyim elde etmek için ayarları ve kelime listelerini değiştirebilirsiniz.
[son sürümü](https://github.com/vincentcox/StaCoAn/releases) indirin:
[En son sürümü](https://github.com/vincentcox/StaCoAn/releases) indirin:
```
./stacoan
```
@ -692,14 +692,14 @@ APK'yı deşifre etmek için adım adım bir kılavuzu [https://blog.lexfo.fr/de
(Bu kılavuzdan) Son kontrol ettiğimizde, Dexguard çalışma modu şuydu:
- Bir kaynağı InputStream olarak yüklemek;
- Sonucu deşifre etmek için FilterInputStream'den türetilen bir sınıfa beslemek;
- Sonucu deşifre etmek için FilterInputStream'den türetilmiş bir sınıfa beslemek;
- Bir tersine mühendislik uzmanının birkaç dakikasını boşa harcamak için gereksiz obfuscation yapmak;
- Deşifre edilmiş sonucu bir ZipInputStream'e besleyerek bir DEX dosyası almak;
- Deşifre edilmiş sonucu bir ZipInputStream'e beslemek ve bir DEX dosyası almak;
- Son olarak, elde edilen DEX'i `loadDex` yöntemi kullanarak bir Kaynak olarak yüklemek.
### [DeGuard](http://apk-deguard.com)
**DeGuard, Android obfuscation araçları tarafından gerçekleştirilen obfuscation sürecini tersine çevirir. Bu, kod incelemesi ve kütüphaneleri tahmin etme gibi birçok güvenlik analizini mümkün kılar.**
**DeGuard, Android obfuscation araçları tarafından gerçekleştirilen obfuscation sürecini tersine çevirir. Bu, kod denetimi ve kütüphaneleri tahmin etme gibi birçok güvenlik analizini mümkün kılar.**
Obfuscate edilmiş bir APK'yı platformlarına yükleyebilirsiniz.
@ -709,7 +709,7 @@ Bu, Android uygulamalarındaki potansiyel güvenlik açıklarını bulmak ve And
### [Simplify](https://github.com/CalebFenton/simplify)
Bu, **genel bir android deobfuscator'dır.** Simplify, bir uygulamayı **sanallaştırarak çalıştırır** ve davranışını anlamaya çalışır, ardından **kodun optimize edilmesini** sağlar, böylece aynı şekilde davranır ancak bir insanın anlaması daha kolaydır. Her optimizasyon türü basit ve genel olduğundan, kullanılan obfuscation türü önemli değildir.
Bu, **genel bir android deobfuscator'dır.** Simplify, bir uygulamayı **sanallaştırarak çalıştırır** ve davranışını anlamaya çalışır, ardından **kodun optimize edilmesini** sağlar, böylece aynı şekilde davranır ancak bir insanın anlaması daha kolaydır. Her optimizasyon türü basit ve genel olduğundan, kullanılan obfuscation türü ne olursa olsun önemli değildir.
### [APKiD](https://github.com/rednaga/APKiD)
@ -717,7 +717,7 @@ APKiD, **bir APK'nın nasıl yapıldığını** size bildirir. Birçok **derleyi
### Manual
[Özel obfuscation'ı nasıl tersine çevireceğinizi öğrenmek için bu eğitimi okuyun](manual-deobfuscation.md)
[Özel obfuscation'ı tersine çevirme ile ilgili bazı ipuçlarını öğrenmek için bu eğitimi okuyun](manual-deobfuscation.md)
## Labs

View File

@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
Shizuku, **`app_process`** kullanarak ayrıcalıklı bir Java süreci **oluşturan** ve seçilen **Android sistem API'lerini Binder üzerinden açığa çıkaran**ık kaynaklı bir hizmettir. Süreç, ADB'nin kullandığıyla aynı **`shell` UID yetenekleri** ile başlatıldığından, dışa aktarılan AIDL arayüzüne bağlanan herhangi bir uygulama (veya terminal), genellikle **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, `/data` içinde dosya I/O** gibi işlemleri gerçekleştirebilir **cihazı rootlamadan**.
Shizuku, **`app_process`** kullanarak ayrıcalıklı bir Java süreci **oluşturan** ve seçilen **Android sistem API'lerini Binder üzerinden açığa çıkaran**ık kaynaklı bir hizmettir. Süreç, ADB'nin kullandığıyla aynı **`shell` UID yetenekleriyle** başlatıldığından, dışa aktarılan AIDL arayüzüne bağlanan herhangi bir uygulama (veya terminal), genellikle **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, `/data` içinde dosya I/O** gibi işlemleri gerçekleştirebilir **cihazı rootlamadan**.
Tipik kullanım senaryoları:
* Rootlanmamış bir cihazdan güvenlik denetimi
@ -57,7 +57,7 @@ Bu andan itibaren uygulama, **`shell` kullanıcısının** çağırabileceği he
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
```
**170'den fazla Shizuku destekli uygulamanın** derlenmiş listesi [awesome-shizuku](https://github.com/timschneeb/awesome-shizuku) adresinde bulunmaktadır.
**170'ten fazla Shizuku destekli uygulamanın** derlenmiş listesi [awesome-shizuku](https://github.com/timschneeb/awesome-shizuku) adresinde bulunmaktadır.
---
## 3. Rish Termux içinde yükseltilmiş shell
@ -71,8 +71,8 @@ wget https://rikka.app/rish/latest -O rish && chmod +x rish
whoami # ➜ shell
id # uid=2000(shell) gid=2000(shell) groups=... context=u:r:shell:s0
```
### 3.1 Kullanışlı rish shell komutları
* Belirli bir paketin çalışan süreçlerini listele:
### 3.1 Kullanışlı komutlar rish shell'den
* Verilen bir paketin çalışan süreçlerini listele:
```bash
ps -A | grep com.facebook.katana
```
@ -98,13 +98,13 @@ pm uninstall --user 0 com.miui.weather2
---
## 4. Güvenlik dikkate alındığında / tespit
1. Shizuku **ADB hata ayıklama** ayrıcalıklarına ihtiyaç duyar, bu nedenle _Geliştirici Seçenekleri → USB/Kablosuz hata ayıklama_ **etkinleştirilmelidir**.
1. Shizuku **ADB hata ayıklama** ayrıcalıklarına ihtiyaç duyar, bu nedenle _Geliştirici Seçenekleri → USB/Kablosuz hata ayıklama_ **etkinleştirilmelidir**.
Kuruluşlar bunu bir MDM aracılığıyla veya `settings put global development_settings_enabled 0` ile engelleyebilir.
2. Servis kendini `moe.shizuku.privileged.api` adı altında kaydeder.
2. Servis kendini `moe.shizuku.privileged.api` adı altında kaydeder.
Basit bir `adb shell service list | grep shizuku` (veya Endpoint Security kuralı) varlığını tespit eder.
3. Yetenekler, `shell` kullanıcısının zaten yapabildiği ile sınırlıdır **root** değildir.
3. Yetenekler, `shell` kullanıcısının zaten yapabileceği şeylerle sınırlıdır **root** değildir.
`system` veya `root` kullanıcısını gerektiren hassas API'ler hala erişilemez.
4. Oturumlar **bir yeniden başlatma sırasında hayatta kalmaz**; cihaz köklü değilse ve Shizuku bir başlangıç daemon'u olarak yapılandırılmamışsa.
4. Oturumlar **bir yeniden başlatmada hayatta kalmaz**; cihaz köklü değilse ve Shizuku bir başlangıç daemon'u olarak yapılandırılmamışsa.
---
## 5. Azaltma
@ -118,6 +118,6 @@ Basit bir `adb shell service list | grep shizuku` (veya Endpoint Security kural
- [Blog Shizuku: Root Olmadan Gelişmiş Android Yeteneklerini Açma](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/)
- [Shizuku Resmi Dokümantasyonu](https://shizuku.rikka.app/)
- [awesome-shizuku desteklenen uygulamaların listesi](https://github.com/timschneeb/awesome-shizuku)
- [rish shell (ayrıca ayrıcalıklı ters adb shell)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md)
- [rish shell (ayrılmış ters-adb shell)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -4,15 +4,15 @@
## 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 alabilir (onu kontrol edebilir ve belleğine erişebilir).
**`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ğildir. 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 istemci olarak talep edilmesi önerilir.
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 istemci olarak hareket etmeniz önerilir.
## Şifrelenmemiş IPA'yı elde etme
### Apple'dan almak
### 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.
@ -25,7 +25,7 @@ Bu süreç hakkında daha ayrıntılı bilgi için [https://dvuln.com/blog/moder
### 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.
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 olabilir, çünkü genellikle uygulamalar yalnızca en son sürümleri destekler.
Bu nedenle, yüklemek için IPA'yı sadece çıkarın:
```bash
@ -47,13 +47,13 @@ Not edin ki, herhangi bir `invalid signature` hatasını önlemek için Cydia'da
Yüklendikten sonra, şifrelenmemiş IPA'yı elde etmek için Cydia'dan **Iridium tweak**'i kullanabilirsiniz.
### Yetkilendirmeleri Yamanla ve Yeniden İmzala
### Yetkilendirmeleri yamanla & yeniden imzala
`get-task-allow` yetkilendirmesi 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-taks-allow`** ekleyerek ve kullanılacak sertifika ve dağıtım profili ile çok kolay bir şekilde yeniden imzalamaya olanak tanıyan çok kullanıcı dostu bir arayüze sahiptir.
`get-task-allow` yetkilendirmesi ile uygulamayı yeniden imzalamak için `app-signer`, `codesign` ve `iResign` gibi çeşitli araçlar mevcuttur. `app-signer`, yeniden imzalanacak IPA dosyasını belirtmek, **`get-taks-allow`** eklemek ve kullanılacak sertifika ile dağıtım profilini seçmek için ç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` bölümüne giderek **iPhone'un geliştirici uygulamalarını güvenilir hale getirmesini** sağlayın ve `Geliştirici Modu`na tıklayın.
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 & Güvenlik` bölümüne giderek **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, onu cihazda kurup pentest yapmak için zamanı geldi:
Yeniden imzalanmış IPA ile, onu cihazda kurma zamanı geldi:
```bash
ideviceinstaller -i resigned.ipa -w
```
@ -61,7 +61,7 @@ ideviceinstaller -i resigned.ipa -w
### Geliştirici Modunu Etkinleştir (iOS 16+)
iOS 16 ile Apple **Geliştirici Modu**nu tanıttı: `get_task_allow` taşıyan *veya* bir geliştirme sertifikası ile imzalanmış herhangi bir ikili, cihazda Geliştirici Modu etkinleştirilene kadar başlatılmayı reddedecektir. Bu bayrak açık olmadıkça Frida/LLDB'yi de ekleyemezsiniz.
iOS 16 ile Apple, **Geliştirici Modu**nu tanıttı: `get_task_allow` taşıyan *veya* bir geliştirme sertifikası ile imzalanmış herhangi bir ikili, cihazda Geliştirici Modu etkinleştirilene kadar başlatılmayı reddedecektir. Bu bayrak açık olmadıkça Frida/LLDB'yi de ekleyemezsiniz.
1. **Herhangi** bir geliştirici imzalı IPA'yı telefona yükleyin veya gönderin.
2. **Ayarlar → Gizlilik ve Güvenlik → Geliştirici Modu**'na gidin ve açın.
@ -74,9 +74,9 @@ Geliştirici Modu, devre dışı bırakılana veya telefon silinene kadar aktif
Artık jailbreak olmadan yan yükleme yapmak ve yeniden imzalanmış IP'leri güncel tutmak için birkaç olgun yol bulunmaktadır:
| Araç | Gereksinimler | Güçlü Yönler | Sınırlamalar |
|------|--------------|-----------|-------------|
|------|---------------|--------------|--------------|
| **AltStore 2 / SideStore** | IPA'yı her 7 günde ücretsiz bir geliştirici profili ile yeniden imzalayan macOS/Windows/Linux eşlikçisi | Wi-Fi üzerinden otomatik yeniden yükleme, iOS 17'ye kadar çalışır | Aynı ağda bilgisayar gerektirir, Apple tarafından 3 uygulama limiti uygulanır |
| **TrollStore 1/2** | CoreTrust hatasına karşı savunmasız iOS 14 15.4.1'deki cihaz | *Kalıcı* imzalama (7 günlük limit yok); kurulduktan sonra bilgisayar gerekmez | iOS 15.5+ üzerinde desteklenmiyor (hata yamanmış) |
| **TrollStore 1/2** | CoreTrust hatasına karşı savunmasız iOS 14 15.4.1 cihazı | *Kalıcı* imzalama (7 günlük limit yok); kurulduktan sonra bilgisayar gerekmez | iOS 15.5+ üzerinde desteklenmiyor (hata yamanmış) |
Mevcut iOS sürümlerinde rutin pentestler için Alt/Side-Store genellikle en pratik seçimdir.

View File

@ -23,7 +23,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
```
`telnet-ntlm-info.nse` betiği NTLM bilgilerini (Windows sürümleri) alacaktır.
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854)'deki TELNET Protokolünde, kullanıcı ve sunucunun TELNET bağlantıları için daha karmaşık (veya belki sadece farklı) bir dizi kural kullanmayı kabul etmesine olanak tanıyan çeşitli "**seçenekler**" bulunmaktadır. Bu seçenekler karakter setini, yankı modunu değiştirmeyi vb. içerebilir.
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854)'deki TELNET Protokolünde, kullanıcı ve sunucunun TELNET bağlantıları için daha karmaşık (veya belki sadece farklı) bir dizi kural kullanmayı kabul etmesine olanak tanıyan çeşitli "**seçenekler**" bulunmaktadır. Bu seçenekler karakter setini değiştirmek, yankı modunu ayarlamak vb. içerebilir.
**Bu seçenekleri sıralamanın mümkün olduğunu biliyorum ama nasıl yapıldığını bilmiyorum, eğer biliyorsanız lütfen bana bildirin.**
@ -69,11 +69,11 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
```
### Son Güvenlik Açıkları (2022-2025)
* **CVE-2024-45698 D-Link Wi-Fi 6 yönlendiricileri (DIR-X4860)**: Yerleşik Telnet servisi, sabit kodlanmış kimlik bilgilerini kabul etti ve girişi temizlemede başarısız oldu, bu da kimlik doğrulaması yapılmamış uzaktan RCE'ye izin verdi ve port 23 üzerinden özel komutlarla root olarak erişim sağladı. Firmware ≥ 1.04B05 ile düzeltildi.
* **CVE-2023-40478 NETGEAR RAX30**: Telnet CLI `passwd` komutundaki yığın tabanlı tampon taşması, komşu bir saldırganın kimlik doğrulamasını atlamasına ve root olarak rastgele kod çalıştırmasına olanak tanır.
* **CVE-2024-45698 D-Link Wi-Fi 6 yönlendiricileri (DIR-X4860)**: Yerleşik Telnet servisi, sabit kodlanmış kimlik bilgilerini kabul etti ve girişi temizlemede başarısız oldu, bu da kimlik doğrulaması yapılmamış uzaktan RCE'ye izin verdi. Firmware ≥ 1.04B05 ile düzeltildi.
* **CVE-2023-40478 NETGEAR RAX30**: Telnet CLI `passwd` komutundaki yığın tabanlı tampon taşması, komşu bir saldırganın kimlik doğrulamasını atlamasına ve kök olarak rastgele kod çalıştırmasına olanak tanır.
* **CVE-2022-39028 GNU inetutils telnetd**: İki baytlık bir dizilim (`0xff 0xf7` / `0xff 0xf8`), `telnetd`'yi çökerten bir NULL işaretçi dereferansı tetikler ve birkaç çökmeden sonra kalıcı bir DoS'a yol açar.
Bu CVE'leri güvenlik açığı triage sırasında aklınızda bulundurun—hedef, yamanmamış bir firmware veya eski inetutils Telnet daemon'u çalıştırıyorsa, kod çalıştırma veya kesintili bir DoS için doğrudan bir yolunuz olabilir.
Bu CVE'leri güvenlik açığı triage'ı sırasında aklınızda bulundurun—hedef, yamanmamış bir firmware veya eski inetutils Telnet daemon'u çalıştırıyorsa, kod çalıştırma veya kesintili bir DoS için doğrudan bir yolunuz olabilir.
### Kimlik Bilgilerini Dinleme & Adam Ortada
@ -98,13 +98,13 @@ ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 <IP>
# Medusa (parallel hosts)
medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f
```
Çoğu IoT botneti (Mirai varyantları) hala port 23'ü küçük varsayılan kimlik bilgisi sözlükleri ile tarıyor—bu mantığı yansıtmak zayıf cihazları hızlıca tanımlayabilir.
Çoğu IoT botnet (Mirai varyantları) hala port 23'ü küçük varsayılan kimlik bilgisi sözlükleri ile tarıyor—bu mantığı yansıtmak zayıf cihazları hızlıca tanımlayabilir.
### Sömürü ve Sonrası
Metasploit'in birkaç yararlı modülü vardır:
* `auxiliary/scanner/telnet/telnet_version` banner ve seçenek sayımı.
* `auxiliary/scanner/telnet/telnet_version` afiş ve seçenek sayımı.
* `auxiliary/scanner/telnet/brute_telnet` çoklu iş parçacıklı brute force.
* `auxiliary/scanner/telnet/telnet_encrypt_overflow` savunmasız Solaris 9/10 Telnet'e karşı RCE (ENCRYPT seçeneği işleme).
* `exploit/linux/mips/netgear_telnetenable` birçok NETGEAR yönlendiricisinde telnet hizmetini özel bir paketle etkinleştirir.

View File

@ -6,7 +6,7 @@
LESS, değişkenler, mixin'ler, fonksiyonlar ve güçlü `@import` direktifi ekleyen popüler bir CSS ön işleyicisidir. Derleme sırasında LESS motoru, **`@import`** ifadelerinde referans verilen kaynakları **alır** ve `(inline)` seçeneği kullanıldığında bunların içeriklerini sonuçta oluşan CSS'ye gömülü ("inline") olarak ekler.
Bir uygulama, **kullanıcı kontrolündeki girişi** daha sonra LESS derleyicisi tarafından işlenen bir dizeye birleştirdiğinde, bir saldırgan **rastgele LESS kodu** enjekte edebilir. Saldırgan, `@import (inline)`'i kötüye kullanarak sunucunun şunları almasını zorlayabilir:
Bir uygulama, **kullanıcı kontrolündeki girişi** daha sonra LESS derleyicisi tarafından işlenen bir dizeye eklediğinde, bir saldırgan **rastgele LESS kodu** enjekte edebilir. Saldırgan, `@import (inline)`'i kötüye kullanarak sunucunun şunları almasını zorlayabilir:
* `file://` protokolü aracılığıyla yerel dosyalar (bilgi sızıntısı / Yerel Dosya Dahil Etme).
* Dahili ağlar veya bulut meta veri hizmetlerindeki uzaktan kaynaklar (SSRF).
@ -15,7 +15,7 @@ Bu teknik, **SugarCRM ≤ 14.0.0** (`/rest/v10/css/preview` uç noktası) gibi g
## Sömürü
1. LESS motoru tarafından işlenen bir stil sayfası dizesine doğrudan gömülü bir parametreyi tanımlayın (örneğin, SugarCRM'deki `?lm=`).
1. LESS motoru tarafından işlenen bir stil sayfası dizesine doğrudan gömülü bir parametre belirleyin (örneğin, SugarCRM'deki `?lm=`).
2. Mevcut ifadeyi kapatın ve yeni direktifler enjekte edin. En yaygın temel ifadeler şunlardır:
* `;` önceki bildirimi sonlandırır.
* `}` önceki bloğu kapatır (gerekirse).
@ -49,7 +49,7 @@ sed -n 's/.*@@END@@\(.*\)/\1/p'
```
## Tespit
* Dinamik olarak oluşturulan `.less` veya `.css` yanıtlarında, temizlenmemiş sorgu parametrelerini arayın.
* Temizlenmemiş sorgu parametreleri içeren dinamik olarak oluşturulmuş `.less` veya `.css` yanıtlarını arayın.
* Kod incelemesi sırasında, LESS render fonksiyonlarına geçirilen `"@media all { .preview { ... ${userInput} ... } }"` gibi yapıları arayın.
* Sömürü girişimleri genellikle `@import`, `(inline)`, `file://`, `http://169.254.169.254` vb. içerir.
@ -57,12 +57,12 @@ sed -n 's/.*@@END@@\(.*\)/\1/p'
* Güvenilmeyen verileri LESS derleyicisine **geçmeyin**.
* Dinamik değerlere ihtiyaç varsa, bunları düzgün bir şekilde **kaçırın**/temizleyin (örneğin, sayısal token'larla sınırlayın, beyaz liste oluşturun).
* Mümkünse, `(inline)` içe aktarımlarını kullanma yeteneğini devre dışı bırakın veya izin verilen protokolleri `https` ile sınırlayın.
* Mümkünse, `(inline)` import kullanımını devre dışı bırakın veya izin verilen protokolleri `https` ile sınırlayın.
* Bağımlılıkları güncel tutun SugarCRM bu sorunu 13.0.4 ve 14.0.1 sürümlerinde yamanmıştır.
## Gerçek Dünya Vakaları
| Ürün | Gü vulnerable Uç Nokta | Etki |
| Ürün | Gü vulnerable Endpoint | Etki |
|---------|--------------------|--------|
| SugarCRM ≤ 14.0.0 | `/rest/v10/css/preview?lm=` | Kimlik doğrulaması yapılmamış SSRF & yerel dosya okuma |

View File

@ -28,7 +28,7 @@ Konu hakkında bazı tanıtıcı bloglar:
```bash
sudo nc -k -v -l -p 389 # LDAPS → 636 (or 3269)
```
Küçük/eski MFP'ler, netcat'in yakalayabileceği basit bir *simple-bind* gönderebilir. Modern cihazlar genellikle önce anonim bir sorgu yapar ve ardından bind denemesi yapar, bu nedenle sonuçlar değişkenlik gösterir.
Küçük/eski MFP'ler, netcat'in yakalayabileceği basit bir *simple-bind* ık metin olarak gönderebilir. Modern cihazlar genellikle önce anonim bir sorgu yapar ve ardından bind denemesi yapar, bu nedenle sonuçlar değişkenlik gösterir.
### Yöntem 2 Tam Rogue LDAP sunucusu (önerilir)
@ -61,16 +61,16 @@ Basit bir dinleyici şöyle olabilir:
```bash
sudo nc -k -v -l -p 389 # capture LDAP bind
```
or bir siber SMB sunucusu (`impacket-smbserver`) kimlik bilgilerini toplamak için yeterlidir.
veya bir rogue SMB sunucusu (`impacket-smbserver`) kimlik bilgilerini toplamak için yeterlidir.
### Canon imageRUNNER / imageCLASS Tavsiye 20 Mayıs 2025
Canon, birçok Laser & MFP ürün serisinde bir **SMTP/LDAP geri dönüş** zayıflığını doğruladı. Yönetici erişimine sahip bir saldırgan, sunucu yapılandırmasını değiştirebilir ve LDAP **veya** SMTP için saklanan kimlik bilgilerini alabilir (birçok kuruluş, tarama için e-posta gönderimini sağlamak amacıyla ayrıcalıklı bir hesap kullanır).
Canon, birçok Laser ve MFP ürün serisinde bir **SMTP/LDAP pass-back** zayıflığını doğruladı. Yönetici erişimine sahip bir saldırgan, sunucu yapılandırmasını değiştirebilir ve LDAP **veya** SMTP için saklanan kimlik bilgilerini alabilir (birçok kuruluş, tarama için e-posta göndermeye izin vermek amacıyla ayrıcalıklı bir hesap kullanır).
Satıcı kılavuzu açıkça şunları önermektedir:
1. Mevcut olduğunda yamanmış firmware'e güncelleme yapın.
2. Güçlü, benzersiz yönetici şifreleri kullanın.
1. Mevcut olduğunda yamanmış firmware ile güncelleme yapın.
2. Güçlü, benzersiz yönetici parolaları kullanın.
3. Yazıcı entegrasyonu için ayrıcalıklı AD hesaplarından kaçının.
---
@ -79,9 +79,9 @@ Satıcı kılavuzu açıkça şunları önermektedir:
| Araç | Amaç | Örnek |
|------|---------|---------|
| **PRET** (Printer Exploitation Toolkit) | PostScript/PJL/PCL kötüye kullanımı, dosya sistemi erişimi, varsayılan kimlik bilgileri kontrolü, *SNMP keşfi* | `python pret.py 192.168.1.50 pjl` |
| **Praeda** | HTTP/HTTPS üzerinden yapılandırma (adres defterleri & LDAP kimlik bilgileri dahil) toplama | `perl praeda.pl -t 192.168.1.50` |
| **Responder / ntlmrelayx** | SMB/FTP geri dönüşünden NetNTLM hash'lerini yakalama & iletme | `responder -I eth0 -wrf` |
| **impacket-ldapd.py** | Düz metin bağlamalarını almak için hafif bir sahte LDAP hizmeti | `python ldapd.py -debug` |
| **Praeda** | HTTP/HTTPS üzerinden yapılandırma (adres defterleri ve LDAP kimlik bilgileri dahil) toplama | `perl praeda.pl -t 192.168.1.50` |
| **Responder / ntlmrelayx** | SMB/FTP pass-back'ten NetNTLM hash'lerini yakalama ve iletme | `responder -I eth0 -wrf` |
| **impacket-ldapd.py** | Düz metin bağlamalarını almak için hafif rogue LDAP servisi | `python ldapd.py -debug` |
---
## Güçlendirme & Tespit
@ -90,15 +90,15 @@ Satıcı kılavuzu açıkça şunları önermektedir:
2. **En Az Ayrıcalık Hizmet Hesapları** LDAP/SMB/SMTP için asla Domain Admin kullanmayın; *salt okunur* OU kapsamları ile sınırlayın.
3. **Yönetim Erişimini Kısıtlayın** yazıcı web/IPP/SNMP arayüzlerini bir yönetim VLAN'ında veya bir ACL/VPN arkasında yerleştirin.
4. **Kullanılmayan Protokolleri Devre Dışı Bırakın** FTP, Telnet, raw-9100, eski SSL şifreleri.
5. **Denetim Günlüğü Oluşturmayı Etkinleştirin** bazı cihazlar LDAP/SMTP hatalarını syslog yapabilir; beklenmedik bağlamaları ilişkilendirin.
5. **Denetim Günlüğü Oluşturmayı Etkinleştirin** bazı cihazlar LDAP/SMTP hatalarını syslog yapabilir; beklenmeyen bağlamaları ilişkilendirin.
6. **Alışılmadık Kaynaklarda Düz Metin LDAP bağlamalarını İzleyin** (yazıcılar normalde yalnızca DC'lerle iletişim kurmalıdır).
7. **SNMPv3 veya SNMP'yi devre dışı bırakın** topluluk `public` genellikle cihaz & LDAP yapılandırmasını sızdırır.
7. **SNMPv3 veya SNMP'yi devre dışı bırakın** topluluk `public` genellikle cihaz ve LDAP yapılandırmasını sızdırır.
---
## Referanslar
- [https://grimhacker.com/2018/03/09/just-a-printer/](https://grimhacker.com/2018/03/09/just-a-printer/)
- Rapid7. “Xerox VersaLink C7025 MFP Geri Dönüş Saldırı Zayıflıkları.” Şubat 2025.
- Canon PSIRT. “Laser Yazıcılar ve Küçük Ofis Çok Fonksiyonlu Yazıcılar için SMTP/LDAP Geri Dönüşüne Karşı Zayıflık Azaltma.” Mayıs 2025.
- Rapid7. “Xerox VersaLink C7025 MFP Pass-Back Attack Vulnerabilities.” Şubat 2025.
- Canon PSIRT. “Lazer Yazıcılar ve Küçük Ofis Çok Fonksiyonlu Yazıcılar için SMTP/LDAP Passback'e Karşı Zayıflık Azaltma.” Mayıs 2025.
{{#include ../../banners/hacktricks-training.md}}