tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

React Native Uygulama Analizi

Uygulamanın React Native framework'ü üzerinde inşa edilip edilmediğini doğrulamak için şu adımları izleyin:

  1. APK dosyasının adını zip uzantısıyla değiştirin ve cp com.example.apk example-apk.zip ve unzip -qq example-apk.zip -d ReactNative komutunu kullanarak yeni bir klasöre çıkarın.

  2. Yeni oluşturulan ReactNative klasörüne gidin ve assets klasörünü bulun. Bu klasörün içinde, minify edilmiş formatta React JavaScript içeren index.android.bundle dosyasını bulmalısınız.

  3. JavaScript dosyasını aramak için find . -print | grep -i ".bundle$" komutunu kullanın.

Javascript Kodu

Eğer index.android.bundle dosyasının içeriğini kontrol ettiğinizde uygulamanın JavaScript kodunu (minify edilmiş olsa bile) bulursanız, hassas bilgileri ve güvenlik açıklarını bulmak için analiz edebilirsiniz.

Bundle, aslında uygulamanın tüm JS kodunu içerdiğinden, onu farklı dosyalara ayırmak mümkündür (tersine mühendisliğini kolaylaştırabilir) react-native-decompiler aracını kullanarak.

Webpack

JavaScript kodunu daha fazla analiz etmek için dosyayı https://spaceraccoon.github.io/webpack-exploder/ adresine yükleyebilir veya şu adımları izleyebilirsiniz:

  1. Aynı dizinde index.html adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:
html
<script src="./index.android.bundle"></script>
  1. index.html dosyasını Google Chrome'da açın.

  2. OS X için Command+Option+J veya Windows için Control+Shift+J tuşlarına basarak Geliştirici Araç Çubuğunu açın.

  3. Geliştirici Araç Çubuğunda "Sources" sekmesine tıklayın. Ana paketi oluşturan klasörler ve dosyalar halinde bölünmüş bir JavaScript dosyası görmelisiniz.

Eğer index.android.bundle.map adında bir dosya bulursanız, kaynak kodunu unminified formatında analiz edebilirsiniz. Harita dosyaları, minified tanımlayıcıları eşleştirmenizi sağlayan kaynak eşleştirmesi içerir.

Hassas kimlik bilgileri ve uç noktaları aramak için şu adımları izleyin:

  1. JavaScript kodunu analiz etmek için hassas anahtar kelimeleri belirleyin. React Native uygulamaları genellikle Firebase, AWS S3 hizmet uç noktaları, özel anahtarlar gibi üçüncü taraf hizmetler kullanır.

  2. Bu özel durumda, uygulamanın Dialogflow hizmetini kullandığı gözlemlendi. Yapılandırmasıyla ilgili bir desen arayın.

  3. Recon süreci sırasında JavaScript kodunda hassas hard-coded kimlik bilgileri bulunduğu için şanslıydınız.

JS kodunu değiştirin ve yeniden oluşturun

Bu durumda kodu değiştirmek kolaydır. Uygulamayı .zip uzantısıyla yeniden adlandırmanız ve çıkarmanız yeterlidir. Ardından, bu paketin içindeki JS kodunu değiştirip uygulamayı yeniden oluşturabilirsiniz. Bu, test amaçları için uygulamaya kod enjekte etmenizi sağlamak için yeterli olmalıdır.

Hermes bytecode

Eğer paket Hermes bytecode içeriyorsa, uygulamanın Javascript koduna erişemezsiniz (minified versiyonuna bile).

Paketin Hermes bytecode içerip içermediğini kontrol etmek için aşağıdaki komutu çalıştırabilirsiniz:

bash
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96

Ancak, hbctool, hermes-dec veya hermes_rs araçlarını kullanarak bytecode'u ayrıştırabilir ve ayrıca bunu bazı pseudo JS kodlarına decompile edebilirsiniz. Bunu yapmak için, örneğin bu komutlar:

bash
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js

Kod Değiştirme ve Yeniden Derleme

İdeal olarak, ayrıştırılmış kodu (bir karşılaştırmayı, bir değeri veya değiştirmeniz gereken her şeyi değiştirmek) değiştirebilmelisiniz ve ardından bytecode'u yeniden derlemeli ve uygulamayı yeniden inşa etmelisiniz.

Araç hbctool, paketi ayrıştırmayı ve değişiklikler yapıldıktan sonra geri inşa etmeyi destekler, ancak sadece eski sürümleri destekler. Hermes bytecode'un.

Araç hermes-dec bytecode'u yeniden derlemeyi desteklemez.

Araç hermes_rs bytecode'u yeniden derlemeyi destekler, ancak aslında bir kütüphanedir ve bir CLI aracı değildir.

Dinamik Analiz

Uygulamayı dinamik olarak analiz etmeye çalışmanın bir yolu, Frida'yı kullanarak React uygulamasının geliştirici modunu etkinleştirmek ve react-native-debugger ile ona bağlanmaktır. Ancak, bunun için uygulamanın kaynak koduna ihtiyacınız var gibi görünüyor. Bununla ilgili daha fazla bilgi bulabilirsiniz https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/.

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin