Cara mengendus lalu lintas HTTPS dari perangkat iOS



Hai, nama saya Andrey Batutin, Saya Pengembang iOS Senior di DataArt, dan hari ini kami akan mengendus lalu lintas HTTPS di iPhone Anda.

FoodSniffer dan dengan apa dimakan


Ambil, misalnya, aplikasi iOS FoodSniffer yang sangat sederhana. Itu, tergantung pada waktu hari, menunjukkan kepada pengguna apa yang harus dimakan.



Aplikasi menerima dari server JSON dari formulir:

[ { "name" : "soup", "consumePeriod" : "morning" }, … ] 

Server dalam hal ini adalah Dropbox, dan JSON dapat dilihat di sini .

Masalah nomor 1


Sebuah bug muncul bahwa alih-alih dua item dalam daftar makanan diperbolehkan di pagi hari, aplikasi hanya menunjukkan satu.

Salah satu cara untuk memeriksa apa yang salah adalah dengan melihat JSON bahwa server kembali kepada Anda.

Bagaimana mengendus traffic?


Misalkan komputer MacOS Anda dan perangkat iOS berada di jaringan lokal yang sama, yang terlihat seperti ini:



Lalu lintas beralih dari perangkat iOS melalui router ke server, terlepas dari lalu lintas komputer.

Untuk membaca lalu lintas perangkat iOS, kita harus membuatnya melalui Mac kita. Sesuatu seperti ini:



Selain itu, kita akan memerlukan server proxy HTTP / S, yang dengannya kita akan menonton / memodifikasi lalu lintas yang lewat dari perangkat iOS.

Tugas lain yang sangat penting adalah untuk dapat mengendus lalu lintas HTTPS . Tangkapannya adalah protokol HTTPS dibuat sehingga, kecuali untuk klien dan server, tidak ada yang bisa membaca apa yang ditransmisikan dalam permintaan HTTPS. Oleh karena itu, proksi HTTPS juga harus memberikan sertifikat SSL , yang diperlukan untuk bekerja dengan lalu lintas HTTPS.

Dengan kata lain, kita perlu mengimplementasikan serangan M an-in-the-Middle pada jaringan kita sendiri.



Aplikasi Proxy Debugging Web Charles


Seperti yang Anda lihat, mengendus lalu lintas HTTPS adalah tugas multi-tahap, oleh karena itu, untuk menyederhanakan hidup saya sebanyak mungkin, saya menggunakan Charles Proxy .

Mari kita mulai dengan kontra:

  • Itu dibayar, tetapi satu-satunya batasan yang ada dalam versi uji coba adalah bahwa Charles bekerja tidak lebih dari 30 menit, maka harus dimulai kembali. Masih ada penundaan lima detik saat startup. Ini menjengkelkan, tetapi Anda bisa hidup.
  • Jika Anda memerlukan alat hacker asli untuk bekerja pada server jarak jauh 24/7, dan bahkan dengan CLI normal, Charles bukan untuk Anda.
  • Jika Anda bekerja pada Windows, Anda lebih baik mengambil Fiddler , yang juga gratis.
  • Jika Anda memerlukan server proxy untuk sejumlah besar perangkat (lebih dari dua atau tiga), Charles bukan untuk Anda.
  • Jika Anda perlu bekerja dengan paket TCP / IP dalam bentuk murni, ambil Wireshark .

Sekarang pro:

  • User-Friendly UI. Charles tidak memerlukan pengetahuan khusus untuk menginstal, mengkonfigurasi, atau menggunakan. Aplikasi jendela MacO normal.
  • HTTPS untuk iOS - Charles memiliki seperangkat alat yang membuat HTTPS mengendus dari perangkat iOS Anda sesederhana mungkin.
  • Fungsi - Charles dapat mengendus, memodifikasi lalu lintas yang melewatinya, mensimulasikan Internet yang lambat, mengumpulkan statistik, lalu lintas impor / ekspor dalam berbagai format.
  • Tersedia untuk Windows dan Linux.

Bagi saya, ini adalah solusi terbaik untuk rasio fungsionalitas dan kemudahan penggunaan saat bekerja dengan perangkat iOS.

Pengaturan perangkat Charles dan iOS


Berikut ini akan menjelaskan prosedur pengaturan awal untuk perangkat iOS untuk bekerja dengan Charles Proxy.

1. Luncurkan Charles di komputer:



2. Pasang Sertifikat Charles Root di perangkat iOS Anda:

Dari menu, pilih Bantuan -> Proxing SSL -> Instal Sertifikat Charles Root di Perangkat Seluler atau Peramban Jarak Jauh.



Jendela berikut akan muncul:



3. Dalam pengaturan jaringan perangkat iOS, tentukan IP dan porta Proxy Charles:



Bergantung pada arsitektur jaringan Anda, alamat IP yang dijalankan Charles dapat beragam.

4. Buka browser pada perangkat iOS dan ikuti tautan - http://chls.pro/ssl .



5. Instal Charles SSL-sertifikat pada perangkat:



6. Kami menunjukkan dalam pengaturan perangkat bahwa kami sepenuhnya mempercayai sertifikat ini:



Tahap keenam diperlukan untuk perangkat dengan iOS 10 dan lebih tinggi.

Pada tahap 5–6, kami memasang sertifikat SSL pada perangkat Charles dan mengindikasikan bahwa kami mempercayainya. Artinya, sekarang semua lalu lintas HTTPS yang ditandatangani dengan sertifikat ini tidak akan diblokir oleh ATS .

Cara menonton lalu lintas perangkat iOS


Buka aplikasi FoodSniffer . Jika pengaturan proxy dilakukan dengan benar, maka Anda akan melihat layar seperti ini:



Di Charles Proxy, buka Alat -> Tanpa Caching.

Dan sepenuhnya mematikan caching di server proxy.



Aplikasi mengimplementasikan Pull-to-refresh, setelah memperbarui daftar produk yang harus Anda lihat https://www.dropbox.com dalam daftar di sisi kiri dalam Charles. Klik kanan padanya dan pilih Enable SSL Proxing .



Setelah itu, perbarui daftar produk dalam aplikasi lagi. Sekarang Anda akan melihat sesuatu seperti ini:



Sekarang kita dapat dengan bebas membaca lalu lintas HTTPS yang berasal dari aplikasi di Dropbox untuk JSON kita.

Tapi itu belum semuanya!

Dropbox tidak memberikan JSON dari host dropbox.com secara langsung. Alih-alih, ia mengembalikan 302 respons dan mengalihkan ke host lain tempat data diunduh.

Anda dapat menemukannya dengan melihat Respons Mentah pertanyaan berikut:



Dalam hal ini, itu adalah -
uc9c29db95802af8490afc3afda9.dl.dropboxusercontent.com .

Anda kemungkinan besar akan memiliki host yang sedikit berbeda.

Kemudian aktifkan SSL Proxing: Diaktifkan untuk itu.

Kami memperbarui FoodSniffer lagi.

Dan sekarang kita akhirnya bisa melihat JSON yang sebenarnya, yang ditunjukkan oleh aplikasi!



Kami melihat bahwa kami hanya memiliki satu jenis makanan di malam hari - wiski, tulis tentang hal itu kepada pemimpin tim kami dan pergi minum kopi, masalahnya bukan di pihak kami.

* Proyek ini menggunakan JSON yang sudah diperbaiki, dengan dua jenis makanan untuk malam itu: bir dan wiski.
* Jika Anda tidak melihat host http://uc9c29db95802af8490afc3afda9.dl.dropboxusercontent.com atau serupa dalam daftar di sisi kiri jendela, coba perbarui daftar produk dalam aplikasi beberapa kali.

Masalah No. 2, atau Bagaimana mengubah lalu lintas HTTPS dari perangkat iOS


Tim backend memperbaiki menu untuk malam itu, dan sekarang JSON terbentuk dengan benar. Tetapi bagaimana jika ini pagi, dan saya tidak ingin menunggu sampai malam untuk memeriksa perbaikannya?

Salah satu opsi adalah menggunakan Charles untuk mengubah JSON yang datang kepada Anda dari Dropbox.

Dalam hal ini, kita perlu mengubah periode konsumsi dari sore hingga pagi .

Untuk melakukan ini, pilih Alat -> Tulis ulang dari menu.

Di jendela Pengaturan Menulis Ulang yang muncul, tambahkan kategori baru untuk menimpa - dropbox .



Tambahkan host dengan menentukan port https di menu Edit Lokasi :



Setelah itu kami menambahkan aturan penulisan ulang di menu Aturan Menulis Ulang sebagai berikut:



Artinya, sekarang di setiap Tubuh respons dari server kami, kata evening akan digantikan oleh kata morning .

Jika perlu, kami dapat mengubah bagian apa pun dari permintaan / respons HTTP, plus menggunakan ekspresi regex untuk mengganti teks.

Sekarang, setelah memperbarui daftar, kita akan melihat empat jenis produk:



Kesimpulan


Charles cukup sederhana, shareware, memiliki fungsi proxy HTTPS yang kaya. Dari sudut pandang saya, ini bekerja paling baik ketika bekerja dengan perangkat MacOS dan iOS.

Ini jauh dari satu-satunya cara untuk mengendus lalu lintas. Untuk lalu lintas HTTP / S, Fiddler juga banyak digunakan. Jika Anda perlu masuk lebih dalam ke tumpukan TCP / IP, ada Wireshark .

Selain itu, ada masalah penyematan sertifikat . Jika diterapkan di aplikasi Anda, Anda harus menambahkan Charles SSL-sertifikat ke daftar sertifikat yang diizinkan, atau menggunakan alat-alat seperti Frida untuk menonaktifkan menyematkan sertifikat sudah di tingkat aplikasi itu sendiri. Saya berharap dapat berbicara lebih banyak tentang ini di artikel selanjutnya.

Saya akan senang jika Anda membagikan pengalaman Anda dalam memonitor lalu lintas, termasuk HTTP / S, tips dan lifehacks.

Catatan Tolong, gunakan teknik ini hanya untuk aplikasi Anda. Jadilah peretas kelinci putih!

Catatan 2. Baru-baru ini, kisah tentang ini diterbitkan dalam bahasa Ukraina , tetapi dalam bahasa Rusia saya menerbitkannya untuk pertama kalinya.

Source: https://habr.com/ru/post/id419677/


All Articles